Changeset 772 for trunk/MESOSCALE/LMD_MM_MARS/SRC
- Timestamp:
- Sep 5, 2012, 5:12:50 PM (12 years ago)
- Location:
- trunk/MESOSCALE/LMD_MM_MARS/SRC
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MESOSCALE/LMD_MM_MARS/SRC/LES/modif_mars/Registry.EM
r766 r772 114 114 state real QH2O ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "QH2O" "Water vapor mixing ratio" "kg kg-1" 115 115 state real QH2O_ICE ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "QH2O_ICE" "Water ice mixing ratio" "kg kg-1" 116 state real QDUST ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "QDUST" "Dust mixing ratio" "kg kg-1" 116 state real qdust ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "qdust" "Dust mixing ratio" "kg kg-1" 117 state real qndust ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "qndust" "Dust number density" " m-3 " 117 118 state real qtrac1 ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "qtrac1" "Decaying tracer 1" "kg kg-1" 118 119 state real upward ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "upward" "Decaying tracer surf" "kg kg-1" … … 232 233 state real mars_dsoil ilj misc 1 - i012rd "MARS_DSOIL" "soil depths" "m" 233 234 state real mars_gw ilj misc 1 - i012rd "MARS_GW" "gwparam" " " 235 state real mars_qdust ikj misc 1 - i012rd "MARS_QDUST" "dust mass mixing ratio" "kg/kg" 236 state real mars_qndust ikj misc 1 - i012rd "MARS_QNDUST" "dust number density" " " 234 237 #### 235 238 #### … … 1496 1499 package water mars==1 - moist:qv;scalar:qh2o,qh2o_ice 1497 1500 package dust mars==2 - moist:qv;scalar:qdust 1501 package dust2eq mars==3 - scalar:qdust,qndust 1498 1502 package radioac mars==20 - scalar:qtrac1 1499 1503 package radioac2 mars==21 - scalar:upward,downward -
trunk/MESOSCALE/LMD_MM_MARS/SRC/LES/modif_mars/module_first_rk_step_part1.F
r678 r772 631 631 & ,MARS_Z0=grid%mars_z0 & 632 632 & ,CST_Z0=config_flags%init_Z0 & 633 & ,MARS_QDUST=grid%mars_qdust & 634 & ,MARS_QNDUST=grid%mars_qndust & 633 635 #endif 634 636 & ,MARS_GW=grid%mars_gw & -
trunk/MESOSCALE/LMD_MM_MARS/SRC/LES/modif_mars/module_initialize_les.F
r674 r772 114 114 !!MARS 115 115 REAL :: lon_input, lat_input, alt_input, tsurf_input 116 ! for mode 3 117 LOGICAL :: MARS_MODE_INIT 118 REAL, DIMENSION(nl_max) :: qdust,qndust,dust_p_level 116 119 !!MARS 117 120 … … 346 349 grid%mars_tsurf(i,j)=0. 347 350 !! << 351 !! >> Used for mode 3: 352 grid%mars_qdust(i,:,j)=0. 353 grid%mars_qndust(i,:,j)=0. 354 !! << 348 355 grid%slpx(i,j) = 0. 349 356 grid%slpy(i,j) = 0. … … 690 697 print *, 'constant meridional wind ', config_flags%init_V 691 698 ENDIF 699 692 700 !!!MARS MARS 693 701 … … 754 762 ENDDO 755 763 ENDDO 764 765 !!!!! MARS INITIALIZE MODE 3 FOR LES 766 767 !! RESTART=config_flags%restart -> this routine is not used in restart 768 769 MARS_MODE_INIT=config_flags%mars 770 771 IF (MARS_MODE_INIT .EQ. 3) THEN 772 write (*,*) 'MARS MODE 3 INITIALIZATION, READING INPUT_DUST (module_initialize_les.F)' 773 ! load a profile of dust (same for all points) 774 call read_dust(qdust,qndust,dust_p_level,nl_in) 775 p_level = grid%znu(1)*(pd_surf - grid%p_top) + grid%p_top 776 IF (dust_p_level(1) .lt. p_level) then !input profile needs rescaling to avoid a plateau. This happens when you use different sources to initialize the pressure of the LES and the input_dust. Typicaly: you use the MCD for input_therm and different runs for input_dust, that dont have the same surface pressure ! This trick is ok because we dont want to initialize with a very precise profile of dust, just a realistic one. 777 dust_p_level = dust_p_level * p_level/dust_p_level(1) 778 ENDIF 779 DO k=1,kte-1 780 p_level = grid%znu(k)*(pd_surf - grid%p_top) + grid%p_top 781 grid%mars_qdust(its:ite,k,jts:jte)=interp_0( qdust, dust_p_level, p_level, nl_in ) 782 grid%mars_qndust(its:ite,k,jts:jte)=interp_0( qndust, dust_p_level, p_level, nl_in ) 783 ENDDO 784 ENDIF 785 786 !!!!! MARS 787 756 788 757 789 END SUBROUTINE init_domain_rk … … 1008 1040 end subroutine read_therm 1009 1041 1042 !!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 1043 subroutine read_dust(qdust,qndust,dust_p_level,n) 1044 implicit none 1045 integer n 1046 real qdust(n),qndust(n),dust_p_level(n) 1047 logical end_of_file 1048 1049 integer k 1050 1051 ! first element is the surface 1052 1053 open(unit=11,file='input_dust',form='formatted',status='old') 1054 rewind(11) 1055 end_of_file = .false. 1056 k = 0 1057 do while (.not. end_of_file) 1058 1059 read(11,*,end=102) qdust(k+1), qndust(k+1), dust_p_level(k+1) 1060 write(*,*) k, qdust(k+1), qndust(k+1), dust_p_level(k+1) 1061 k = k+1 1062 go to 113 1063 102 end_of_file = .true. 1064 113 continue 1065 enddo 1066 1067 close(unit=11,status = 'keep') 1068 1069 end subroutine read_dust 1070 !!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 1071 1072 1010 1073 END MODULE module_initialize_ideal -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/mars_lmd_new/makegcm_mpifort
r684 r772 374 374 else if $LINUX then 375 375 ## for ifort 376 set optim=" -DMESOSCALE -g -no-ftz -traceback -ftrapuv -fp-stack-check "377 set optim90=" -DMESOSCALE -g -no-ftz -traceback -ftrapuv -fp-stack-check "378 set optimtru90=" -DMESOSCALE -g -no-ftz -traceback -ftrapuv -fp-stack-check "376 set optim=" -DMESOSCALE -g -no-ftz -traceback -ftrapuv -fp-stack-check -mcmodel=large -shared-intel" 377 set optim90=" -DMESOSCALE -g -no-ftz -traceback -ftrapuv -fp-stack-check -mcmodel=large -shared-intel" 378 set optimtru90=" -DMESOSCALE -g -no-ftz -traceback -ftrapuv -fp-stack-check -mcmodel=large -shared-intel" 379 379 else 380 380 echo "pas d option debug predefinie pour cette machine" -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/module_lmd_driver.F
r766 r772 41 41 MARS_Z0, & 42 42 CST_Z0, & 43 MARS_QDUST, & 44 MARS_QNDUST, & 43 45 #endif 44 46 MARS_GW, & … … 69 71 USE module_model_constants 70 72 USE module_wrf_error 71 USE module_init_utilities72 73 ! add new modules here, if needed ... 73 74 … … 145 146 REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT ) :: & 146 147 MARS_FLUXRAD,MARS_WSTAR 148 REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(IN ) :: & 149 MARS_QDUST, MARS_QNDUST 147 150 #endif 148 151 REAL, DIMENSION( ims:ime, 5, jms:jme ), INTENT(IN ) :: & … … 189 192 INTEGER :: lctindex,ziindex 190 193 LOGICAL :: end_of_file 191 ! *** ----------------------- ***192 193 ! *** for Mars Mode 3 ***194 INTEGER nm3195 PARAMETER(nm3=1000)196 REAL, DIMENSION(nm3) :: qdust,qndust,dust_p_level197 194 ! *** ----------------------- *** 198 195 … … 871 868 !--------------------------------! 872 869 #ifdef NEWPHYS 870 !!! Initialize SCALAR for MODE 3. 871 IF ((MARS_MODE .EQ. 3) .and. (firstcall .EQV. .true.) .and. (.not. restart)) THEN 872 SCALAR(i,kps:kpe,j,2)=MARS_QDUST(i,kps:kpe,j) 873 SCALAR(i,kps:kpe,j,3)=MARS_QNDUST(i,kps:kpe,j) 874 ENDIF 873 875 IF (MARS_MODE .EQ. 0) THEN 874 876 q_prof(:,1)=0.95 … … 884 886 q_prof(:,:) = 0.95 885 887 ENDIF 886 ENDIF887 !!! DUST AND DUSTN888 IF (MARS_MODE .EQ. 3 .and. firstcall .EQV. .true. .and. (.not. restart)) THEN889 call read_dust(qdust,qndust,dust_p_level,nm3)890 if (dust_p_level(1) .lt. p_prof(1)) then !input profile needs rescaling to avoid a plateau. This happens when you use different sources to initialize the pressure of the LES and the input_dust. Typicaly: you use the MCD for input_therm and different runs for input_dust, that dont have the same surface pressure ! This trick is ok because we dont want to initialize with a very precise profile of dust, just a realistic one.891 dust_p_level = dust_p_level * p_prof(1)/dust_p_level(1)892 endif893 DO k=1, nlayer894 q_prof(k,1) = interp_0(qdust, dust_p_level, p_prof(k), nm3)895 q_prof(k,2) = interp_0(qndust, dust_p_level, p_prof(k), nm3)896 ENDDO897 SCALAR(i,kps:kpe,j,2:3)=q_prof(:,:) ! because we need to initialize the value of scalar!898 888 ENDIF 899 889 #else … … 1717 1707 !!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 1718 1708 1719 1720 !!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc1721 subroutine read_dust(qdust,qndust,dust_p_level,n)1722 implicit none1723 integer n1724 real qdust(n),qndust(n),dust_p_level(n)1725 logical end_of_file1726 1727 integer k1728 1729 ! first element is the surface1730 1731 open(unit=11,file='input_dust',form='formatted',status='old')1732 rewind(11)1733 end_of_file = .false.1734 k = 01735 do while (.not. end_of_file)1736 1737 read(11,*,end=102) qdust(k+1), qndust(k+1), dust_p_level(k+1)1738 write(*,*) k, qdust(k+1), qndust(k+1), dust_p_level(k+1)1739 k = k+11740 go to 1131741 102 end_of_file = .true.1742 113 continue1743 enddo1744 1745 close(unit=11,status = 'keep')1746 1747 end subroutine read_dust1748 !!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc1749 1750 1709 END MODULE module_lmd_driver
Note: See TracChangeset
for help on using the changeset viewer.