Changeset 1634 for trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys
- Timestamp:
- Nov 27, 2016, 1:28:38 PM (8 years ago)
- Location:
- trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_mars_lmd_new/callphysiq_mod.F
r1582 r1634 12 12 CONTAINS 13 13 14 SUBROUTINE call_physiq(planet_type, klon,llm,nqtot, tname,&14 SUBROUTINE call_physiq(planet_type, klon,llm,nqtot, & 15 15 debut_split,lafin_split, & 16 16 jD_cur,jH_cur_split,zdt_split, & … … 30 30 INTEGER,INTENT(IN) :: llm ! number of atmospheric layers 31 31 INTEGER,INTENT(IN) :: nqtot ! number of tracers 32 CHARACTER(len=*),INTENT(IN) :: tname(nqtot) ! tracer names33 32 LOGICAL,INTENT(IN) :: debut_split ! .true. if very first call to physics 34 33 LOGICAL,INTENT(IN) :: lafin_split ! .true. if last call to physics … … 77 76 78 77 ! Set dummy variables for Mars to zero (additional and prob useless security) 79 ! NB: tname already filled with tracers' names (though not used here)80 78 zpk_omp(:,:)=0. 81 79 zphis_omp(:)=0. -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_mars_lmd_new/iniphysiq_mod.F
r1582 r1634 10 10 use time_phylmdz_mod, only: iphysiq, day_step, ecritstart,ecritphy,& 11 11 dtphys,daysec,day_ini,hour_ini 12 use update_inputs_physiq_mod, only: traceurs 12 13 13 14 implicit none … … 36 37 37 38 !! initialize physical constants and arrays 38 call phys_state_var_init(ngrid,nlayer,nq, &39 call phys_state_var_init(ngrid,nlayer,nq, traceurs, & 39 40 pdayref,phour_ini,punjours,ptimestep, & 40 41 prad,pg,pr,pcpp) -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_mars_lmd_new/update_inputs_physiq_mod.F
r1595 r1634 1 1 MODULE update_inputs_physiq_mod 2 3 IMPLICIT NONE 4 5 CHARACTER(len=20),save,allocatable,dimension(:) :: traceurs ! tracer names 2 6 3 7 CONTAINS … … 101 105 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 102 106 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 103 SUBROUTINE update_inputs_physiq_tracers(nq,MARS_MODE,tname) 104 105 use tracer_mod, only: noms 107 SUBROUTINE update_inputs_physiq_tracers(nq,MARS_MODE) 106 108 107 109 INTEGER, INTENT(IN) :: nq,MARS_MODE 108 CHARACTER(len=*), INTENT(INOUT) :: tname(nq) ! tracer names 109 110 !! TRACERS 111 ALLOCATE(noms(nq)) !! est fait dans initracer normalement 112 !! tableau dans tracer_mod.F90 110 111 ALLOCATE(traceurs(nq)) 113 112 114 113 !!! name of tracers to mimic entries in tracer.def … … 117 116 SELECT CASE (MARS_MODE) 118 117 CASE(0,10) 119 noms(nq) = 'co2'118 traceurs(nq) = 'co2' 120 119 CASE(1) ! scalar:qh2o,qh2o_ice 121 noms(1) = 'h2o_vap'122 noms(2) = 'h2o_ice'120 traceurs(1) = 'h2o_vap' 121 traceurs(2) = 'h2o_ice' 123 122 CASE(2) ! scalar:qdust 124 noms(1) = 'dust01'123 traceurs(1) = 'dust01' 125 124 CASE(3) ! scalar:qdust,qdustn 126 noms(1) = 'dust_mass'127 noms(2) = 'dust_number'125 traceurs(1) = 'dust_mass' 126 traceurs(2) = 'dust_number' 128 127 CASE(11) ! scalar:qh2o,qh2o_ice,qdust,qdustn 129 noms(1) = 'h2o_vap'130 noms(2) = 'h2o_ice'131 noms(3) = 'dust_mass'132 noms(4) = 'dust_number'128 traceurs(1) = 'h2o_vap' 129 traceurs(2) = 'h2o_ice' 130 traceurs(3) = 'dust_mass' 131 traceurs(4) = 'dust_number' 133 132 CASE(12) 134 noms(1) = 'h2o_vap'135 noms(2) = 'h2o_ice'136 noms(3) = 'dust_mass'137 noms(4) = 'dust_number'138 noms(5) = 'ccn_mass'139 noms(6) = 'ccn_number'133 traceurs(1) = 'h2o_vap' 134 traceurs(2) = 'h2o_ice' 135 traceurs(3) = 'dust_mass' 136 traceurs(4) = 'dust_number' 137 traceurs(5) = 'ccn_mass' 138 traceurs(6) = 'ccn_number' 140 139 CASE(20) 141 noms(1) = 'qtrac1'140 traceurs(1) = 'qtrac1' 142 141 CASE(42) 143 noms(1) = 'co2'144 noms(2) = 'co'145 noms(3) = 'o'146 noms(4) = 'o1d'147 noms(5) = 'o2'148 noms(6) = 'o3'149 noms(7) = 'h'150 noms(8) = 'h2'151 noms(9) = 'oh'152 noms(10) = 'ho2'153 noms(11) = 'h2o2'154 noms(12) = 'ch4'155 noms(13) = 'n2'156 noms(14) = 'ar'157 noms(15) = 'h2o_ice'158 noms(16) = 'h2o_vap'159 noms(17) = 'dust_mass'160 noms(18) = 'dust_number'142 traceurs(1) = 'co2' 143 traceurs(2) = 'co' 144 traceurs(3) = 'o' 145 traceurs(4) = 'o1d' 146 traceurs(5) = 'o2' 147 traceurs(6) = 'o3' 148 traceurs(7) = 'h' 149 traceurs(8) = 'h2' 150 traceurs(9) = 'oh' 151 traceurs(10) = 'ho2' 152 traceurs(11) = 'h2o2' 153 traceurs(12) = 'ch4' 154 traceurs(13) = 'n2' 155 traceurs(14) = 'ar' 156 traceurs(15) = 'h2o_ice' 157 traceurs(16) = 'h2o_vap' 158 traceurs(17) = 'dust_mass' 159 traceurs(18) = 'dust_number' 161 160 END SELECT 162 161 … … 164 163 !! OUTPUT FOR CHECKING !! 165 164 !!---------------------!! 166 print*,"check: noms",noms 167 tname = noms 168 print*,"check: tname",tname 165 print*,"check: traceurs",traceurs 169 166 170 167 END SUBROUTINE update_inputs_physiq_tracers … … 315 312 M_ALBEDO,CST_AL,& 316 313 M_TSURF,M_EMISS,M_CO2ICE,& 317 M_GW,M_Z0, &314 M_GW,M_Z0,CST_Z0,& 318 315 M_H2OICE,& 319 316 phisfi_val) … … 326 323 INTEGER, INTENT(IN) :: ips,ipe,jps,jpe,JULYR,MARS_MODE 327 324 INTEGER :: i,j,subs,nlast 328 REAL, INTENT(IN ) :: CST_AL, phisfi_val 325 REAL, INTENT(IN ) :: CST_AL, phisfi_val, CST_Z0 329 326 REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: & 330 327 M_ALBEDO,M_TSURF,M_EMISS,M_CO2ICE,M_H2OICE,M_Z0 … … 470 467 INTEGER, INTENT(IN) :: ims,ime,jms,jme 471 468 INTEGER, INTENT(IN) :: ips,ipe,jps,jpe,JULYR,nsoil 472 INTEGER :: i,j,subs,nlast 469 INTEGER :: i,j,subs,nlast,k 473 470 REAL, INTENT(IN ) :: CST_TI 474 471 REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: & -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_prescribed_void_lmd_new/callphysiq_mod.F
r1603 r1634 12 12 CONTAINS 13 13 14 SUBROUTINE call_physiq(planet_type, klon,llm,nqtot, tname,&14 SUBROUTINE call_physiq(planet_type, klon,llm,nqtot, & 15 15 debut_split,lafin_split, & 16 16 jD_cur,jH_cur_split,zdt_split, & … … 28 28 INTEGER,INTENT(IN) :: llm ! number of atmospheric layers 29 29 INTEGER,INTENT(IN) :: nqtot ! number of tracers 30 CHARACTER(len=*),INTENT(IN) :: tname(nqtot) ! tracer names31 30 LOGICAL,INTENT(IN) :: debut_split ! .true. if very first call to physics 32 31 LOGICAL,INTENT(IN) :: lafin_split ! .true. if last call to physics -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_prescribed_void_lmd_new/update_inputs_physiq_mod.F
r1603 r1634 29 29 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 30 30 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 31 SUBROUTINE update_inputs_physiq_tracers(nq,MARS_MODE ,tname)31 SUBROUTINE update_inputs_physiq_tracers(nq,MARS_MODE) 32 32 33 33 INTEGER, INTENT(IN) :: nq,MARS_MODE 34 CHARACTER(len=*), INTENT(INOUT) :: tname(nq) ! tracer names35 34 36 35 END SUBROUTINE update_inputs_physiq_tracers … … 44 43 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 45 44 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 46 SUBROUTINE update_inputs_physiq_geom( nlayer,&45 SUBROUTINE update_inputs_physiq_geom( & 47 46 ims,ime,jms,jme,& 48 47 ips,ipe,jps,jpe,& 49 JULYR,ngrid, &48 JULYR,ngrid,nlayer,& 50 49 DX,DY,MSFT,& 51 50 lat_input, lon_input,& … … 53 52 54 53 INTEGER, INTENT(IN) :: ims,ime,jms,jme 55 INTEGER, INTENT(IN) :: ips,ipe,jps,jpe,JULYR,ngrid 54 INTEGER, INTENT(IN) :: ips,ipe,jps,jpe,JULYR,ngrid,nlayer 56 55 REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: & 57 56 MSFT,XLAT,XLONG … … 69 68 M_ALBEDO,CST_AL,& 70 69 M_TSURF,M_EMISS,M_CO2ICE,& 71 M_GW,M_Z0, &70 M_GW,M_Z0,CST_Z0,& 72 71 M_H2OICE,& 73 72 phisfi_val) … … 76 75 INTEGER, INTENT(IN) :: ips,ipe,jps,jpe,JULYR,MARS_MODE 77 76 INTEGER :: i,j,subs,nlast 78 REAL, INTENT(IN ) :: CST_AL, phisfi_val 77 REAL, INTENT(IN ) :: CST_AL, phisfi_val, CST_Z0 79 78 REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: & 80 79 M_ALBEDO,M_TSURF,M_EMISS,M_CO2ICE,M_H2OICE,M_Z0 … … 95 94 INTEGER, INTENT(IN) :: ims,ime,jms,jme 96 95 INTEGER, INTENT(IN) :: ips,ipe,jps,jpe,JULYR,nsoil 97 INTEGER :: i,j,subs,nlast 96 INTEGER :: i,j,subs,nlast,k 98 97 REAL, INTENT(IN ) :: CST_TI 99 98 REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: & -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_venus_lmd_new/callphysiq_mod.F
r1596 r1634 31 31 INTEGER,INTENT(IN) :: llm ! number of atmospheric layers 32 32 INTEGER,INTENT(IN) :: nqtot ! number of tracers 33 !CHARACTER(len=*),INTENT(IN) :: tname(nqtot) ! tracer names34 33 LOGICAL,INTENT(IN) :: debut_split ! .true. if very first call to physics 35 34 LOGICAL,INTENT(IN) :: lafin_split ! .true. if last call to physics … … 78 77 79 78 ! Set dummy variables for Mars to zero (additional and prob useless security) 80 ! NB: tname already filled with tracers' names (though not used here)81 79 zpk_omp=(zplay_omp/p0)**rcp 82 80 zphis_omp(:)=zphi_omp(1,1) -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_venus_lmd_new/update_inputs_physiq_mod.F
r1596 r1634 1 1 MODULE update_inputs_physiq_mod 2 3 IMPLICIT NONE 4 5 CHARACTER(len=20),save,allocatable,dimension(:) :: traceurs ! tracer names 2 6 3 7 CONTAINS … … 13 17 !SUBROUTINE update_inputs_physiq_slope 14 18 15 !cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc16 17 18 !c Returns solar longitude, Ls (in deg.), from day number (in sol),19 !c where sol=0=Ls=0 at the northern hemisphere spring equinox20 21 22 !!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc23 19 24 20 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 52 48 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 53 49 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 54 SUBROUTINE update_inputs_physiq_tracers(nq,MARS_MODE ,tname)50 SUBROUTINE update_inputs_physiq_tracers(nq,MARS_MODE) 55 51 56 52 !use infotrac … … 58 54 implicit none 59 55 INTEGER, INTENT(IN) :: nq,MARS_MODE 60 CHARACTER(len=*), INTENT(INOUT) :: tname(nq) ! tracer names 61 62 t name(:)='zolbxs'56 57 ALLOCATE(traceurs(nq)) 58 traceurs(:)='zolbxs' 63 59 !call infotrac_init ! Need traceur.def 64 60 … … 188 184 M_ALBEDO,CST_AL,& 189 185 M_TSURF,M_EMISS,M_CO2ICE,& 190 M_GW,M_Z0, &186 M_GW,M_Z0,CST_Z0,& 191 187 M_H2OICE,& 192 188 phisfi_val) … … 199 195 INTEGER, INTENT(IN) :: ips,ipe,jps,jpe,JULYR,MARS_MODE 200 196 INTEGER :: i,j,subs,nlast 201 REAL, INTENT(IN ) :: CST_AL, phisfi_val 197 REAL, INTENT(IN ) :: CST_AL, phisfi_val, CST_Z0 202 198 REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: & 203 199 M_ALBEDO,M_TSURF,M_EMISS,M_CO2ICE,M_H2OICE,M_Z0 -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_void_lmd_new/callphysiq_mod.F
r1590 r1634 12 12 CONTAINS 13 13 14 SUBROUTINE call_physiq(planet_type, klon,llm,nqtot, tname,&14 SUBROUTINE call_physiq(planet_type, klon,llm,nqtot, & 15 15 debut_split,lafin_split, & 16 16 jD_cur,jH_cur_split,zdt_split, & … … 29 29 INTEGER,INTENT(IN) :: llm ! number of atmospheric layers 30 30 INTEGER,INTENT(IN) :: nqtot ! number of tracers 31 CHARACTER(len=*),INTENT(IN) :: tname(nqtot) ! tracer names32 31 LOGICAL,INTENT(IN) :: debut_split ! .true. if very first call to physics 33 32 LOGICAL,INTENT(IN) :: lafin_split ! .true. if last call to physics -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_void_lmd_new/update_inputs_physiq_mod.F
r1595 r1634 29 29 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 30 30 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 31 SUBROUTINE update_inputs_physiq_tracers(nq,MARS_MODE ,tname)31 SUBROUTINE update_inputs_physiq_tracers(nq,MARS_MODE) 32 32 33 33 INTEGER, INTENT(IN) :: nq,MARS_MODE 34 CHARACTER(len=*), INTENT(INOUT) :: tname(nq) ! tracer names35 34 36 35 END SUBROUTINE update_inputs_physiq_tracers … … 69 68 M_ALBEDO,CST_AL,& 70 69 M_TSURF,M_EMISS,M_CO2ICE,& 71 M_GW,M_Z0, &70 M_GW,M_Z0,CST_Z0,& 72 71 M_H2OICE,& 73 72 phisfi_val) … … 76 75 INTEGER, INTENT(IN) :: ips,ipe,jps,jpe,JULYR,MARS_MODE 77 76 INTEGER :: i,j,subs,nlast 78 REAL, INTENT(IN ) :: CST_AL, phisfi_val 77 REAL, INTENT(IN ) :: CST_AL, phisfi_val, CST_Z0 79 78 REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: & 80 79 M_ALBEDO,M_TSURF,M_EMISS,M_CO2ICE,M_H2OICE,M_Z0 … … 95 94 INTEGER, INTENT(IN) :: ims,ime,jms,jme 96 95 INTEGER, INTENT(IN) :: ips,ipe,jps,jpe,JULYR,nsoil 97 INTEGER :: i,j,subs,nlast 96 INTEGER :: i,j,subs,nlast,k 98 97 REAL, INTENT(IN ) :: CST_TI 99 98 REAL, DIMENSION( ims:ime, jms:jme ), INTENT(IN) :: & -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/module_lmd_driver.F.new
r1595 r1634 191 191 192 192 !! arguments to physiq 193 CHARACTER(len=20),ALLOCATABLE :: tname(:) ! tracer names194 193 REAL,ALLOCATABLE :: zpk_omp(:,:) 195 194 REAL,ALLOCATABLE :: zphis_omp(:) ! surface geopotential … … 370 369 ! ALLOCATE ! 371 370 !----------! 372 IF (.not.ALLOCATED(tname)) ALLOCATE(tname(nq))373 371 !-------------------------------------------------------------------------------! 374 372 ! outputs: ! … … 444 442 !! tracers' name 445 443 PRINT *,'** ',planet_type,'** TRACERS NAMES' 446 CALL update_inputs_physiq_tracers(nq,MARS_MODE ,tname)444 CALL update_inputs_physiq_tracers(nq,MARS_MODE) 447 445 !! PHYSICS VARIABLES (cf. iniphysiq in LMD GCM) 448 446 !! parameters are defined in the module_model_constants.F WRF routine … … 615 613 M_ALBEDO,CST_AL,& 616 614 M_TSURF,M_EMISS,M_CO2ICE,& 617 M_GW,M_Z0, &615 M_GW,M_Z0,CST_Z0,& 618 616 M_H2OICE,& 619 617 phisfi_val) … … 656 654 ptime,pday,MY) 657 655 !!! 658 CALL call_physiq(planet_type,ngrid,nlayer,nq, tname,&656 CALL call_physiq(planet_type,ngrid,nlayer,nq, & 659 657 firstcall,lastcall, & 660 658 pday,ptime,ptimestep, &
Note: See TracChangeset
for help on using the changeset viewer.