Changeset 2277 for trunk/MESOSCALE/LMD_MM_MARS/SRC
- Timestamp:
- Apr 6, 2020, 11:50:23 AM (5 years ago)
- Location:
- trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_prescribed_void_lmd_new/callphysiq_mod.F
r1751 r2277 13 13 14 14 SUBROUTINE call_physiq(planet_type, klon,llm,nqtot, & 15 debut_split,lafin_split, & 16 jD_cur,jH_cur_split,zdt_split, & 17 zplev_omp,zplay_omp, & 18 zpk_omp,zphi_omp,zphis_omp, & 19 presnivs_omp, & 20 zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp, & 21 flxwfi_omp, & 22 zdufi_omp,zdvfi_omp,zdtfi_omp,zdqfi_omp,zdpsrf_omp) 15 debut_split,lafin_split) 16 17 USE variables_mod 23 18 24 19 IMPLICIT NONE … … 30 25 LOGICAL,INTENT(IN) :: debut_split ! .true. if very first call to physics 31 26 LOGICAL,INTENT(IN) :: lafin_split ! .true. if last call to physics 32 REAL,INTENT(IN) :: JD_cur ! Julian day33 REAL,INTENT(IN) :: JH_cur_split ! Julian hour (fraction of day)34 REAL,INTENT(IN) :: zdt_split ! time step over which the physics are evaluated35 REAL,INTENT(IN) :: zplev_omp(klon,llm+1) ! interlayer pressure (Pa)36 REAL,INTENT(IN) :: zplay_omp(klon,llm) ! mid-layer pressure (Pa)37 REAL,INTENT(INOUT) :: zpk_omp(klon,llm)38 REAL,INTENT(IN) :: zphi_omp(klon,llm) ! geopotential at midlayer39 REAL,INTENT(INOUT) :: zphis_omp(klon) ! surface geopotential40 REAL,INTENT(INOUT) :: presnivs_omp(llm) ! approximate pressure of atm. layers41 REAL,INTENT(IN) :: zufi_omp(klon,llm) ! zonal wind (m/s)42 REAL,INTENT(IN) :: zvfi_omp(klon,llm) ! meridional wind (m/s)43 REAL,INTENT(INOUT) :: zrfi_omp(klon,llm) ! relative wind vorticity, in s-144 REAL,INTENT(IN) :: ztfi_omp(klon,llm) ! temperature (K)45 REAL,INTENT(IN) :: zqfi_omp(klon,llm,nqtot) ! tracers (*/kg of air)46 REAL,INTENT(IN) :: flxwfi_omp(klon,llm) ! Vertical mass flux on lower mesh interfaces (kg/s)47 ! tendencies (in */s) from the physics:48 REAL,INTENT(OUT) :: zdufi_omp(klon,llm) ! tendency on zonal winds49 REAL,INTENT(OUT) :: zdvfi_omp(klon,llm) ! tendency on meridional winds50 REAL,INTENT(OUT) :: zdtfi_omp(klon,llm) ! tendency on temperature51 REAL,INTENT(OUT) :: zdqfi_omp(klon,llm,nqtot) ! tendency on tracers52 REAL,INTENT(OUT) :: zdpsrf_omp(klon) ! tendency on surface pressure53 27 ! data file 54 28 INTEGER :: i,k -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_prescribed_void_lmd_new/iniphysiq_mod.F
r1603 r2277 3 3 CONTAINS 4 4 5 subroutine iniphysiq(ngrid,nlayer,nq,p hour_ini,piphysiq,&6 punjours, pdayref, ptimestep,&5 subroutine iniphysiq(ngrid,nlayer,nq,piphysiq,& 6 punjours, pdayref, & 7 7 prad,pg,pr,pcpp,iflag_phys) 8 8 … … 15 15 real,intent(in) :: punjours ! length (in s) of a standard day [daysec] 16 16 integer,intent(in) :: pdayref ! reference day of for the simulation [day_ini] 17 real,intent(in) :: ptimestep !physics time step (s) [dtphys]18 17 integer,intent(in) :: iflag_phys ! type of physics to be called 19 18 … … 21 20 integer,intent(in) :: nlayer ! number of atmospheric layers 22 21 integer,intent(in) :: nq ! number of tracers 23 real,intent(in) :: phour_ini ! start time (fraction of day) of the run 0=<phour_ini<124 22 real,intent(in) :: piphysiq ! call physics every piphysiq dynamical timesteps 25 23 -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_prescribed_void_lmd_new/update_inputs_physiq_mod.F
r1634 r2277 19 19 elaps,& 20 20 lct_input,lon_input,ls_input,& 21 ptime,pday,MY)21 MY) 22 22 23 23 INTEGER, INTENT(IN) :: JULDAY, JULYR 24 24 REAL, INTENT(IN) :: GMT,elaps,lon_input,ls_input,lct_input 25 REAL,INTENT(OUT) :: pday,ptime,MY25 REAL,INTENT(OUT) :: MY 26 26 27 27 END SUBROUTINE update_inputs_physiq_time -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_prescribed_void_lmd_new/update_outputs_physiq_mod.F
r2018 r2277 87 87 HR_SW,HR_LW,RDUST,VMR_ICE,RICE,CLOUDFRAC,HR_DYN,DT,DTRAD,RAIN,SNOW,& 88 88 LSCEZ,H2OICE_REFF 89 REAL, DIMENSION(kms:kme) :: phr_sw,phr_lw,phr_dyn 89 90 INTEGER :: i,j,subs 90 91 -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_prescribed_void_lmd_new/variables_mod.F
r1845 r2277 2 2 3 3 IMPLICIT NONE 4 5 REAL*8 :: JD_cur !pday !JD_cur ! Julian day 6 REAL*8 :: JH_cur_split !ptime !JH_cur_split ! Julian hour (fraction of day) 7 REAL*8 :: zdt_split !ptimestep !zdt_split ! time step over which the physics are evaluated 8 REAL*8 :: phour_ini ! start time (fraction of day) of the run 0=<phour_ini<1 9 REAL*8 :: counter 10 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zplev_omp !pplev !zplev_omp(klon,llm+1) ! interlayer pressure (Pa) 11 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zplay_omp !pplay !zplay_omp(klon,llm) ! mid-layer pressure (Pa) 12 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zpk_omp!(klon,llm) 13 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zphi_omp !pphi !zphi_omp(klon,llm) ! geopotential at midlayer 14 REAL*8,DIMENSION(:),ALLOCATABLE :: zphis_omp!(klon) ! surface geopotential 15 REAL*8,DIMENSION(:),ALLOCATABLE :: presnivs_omp!(llm) ! approximate pressure of atm. layers 16 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zufi_omp !pu !zufi_omp(klon,llm) ! zonal wind (m/s) 17 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zvfi_omp !pv !zvfi_omp(klon,llm) ! meridional wind (m/s) 18 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zrfi_omp!(klon,llm) ! relative wind vorticity, in s-1 19 REAL*8,DIMENSION(:,:),ALLOCATABLE :: ztfi_omp !pt !ztfi_omp(klon,llm) ! temperature (K) 20 REAL*8,DIMENSION(:,:,:),ALLOCATABLE :: zqfi_omp !pq !zqfi_omp(klon,llm,nqtot) ! tracers (*/kg of air) 21 REAL*8,DIMENSION(:,:),ALLOCATABLE :: flxwfi_omp !flxw !flxwfi_omp(klon,llm) ! Vertical mass flux on lower mesh interfaces (kg/s) ! tendencies (in */s) from the physics: 22 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zdufi_omp !pdu !zdufi_omp(klon,llm) ! tendency on zonal winds 23 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zdvfi_omp !pdv !zdvfi_omp(klon,llm) ! tendency on meridional winds 24 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zdtfi_omp !pdt !zdtfi_omp(klon,llm) ! tendency on temperature 25 REAL*8,DIMENSION(:,:,:),ALLOCATABLE :: zdqfi_omp !pdq !zdqfi_omp(klon,llm,nqtot) ! tendency on tracers 26 REAL*8,DIMENSION(:),ALLOCATABLE :: zdpsrf_omp !pdpsrf !zdpsrf_omp(klon) !tendency on surface pressure 27 REAL*8,DIMENSION(:,:),ALLOCATABLE :: hrlw,hrsw 4 28 5 29 CONTAINS … … 8 32 9 33 IMPLICIT NONE 10 34 11 35 INTEGER,INTENT(IN) :: klon ! (local) number of atmospheric columns 12 36 INTEGER,INTENT(IN) :: llm ! number of atmospheric layers 13 37 INTEGER,INTENT(IN) :: nqtot ! number of tracers 14 38 39 IF (.NOT.ALLOCATED(zplev_omp)) ALLOCATE(zplev_omp(klon,llm+1)) 40 IF (.NOT.ALLOCATED(zplay_omp)) ALLOCATE(zplay_omp(klon,llm)) 41 IF (.NOT.ALLOCATED(zpk_omp)) ALLOCATE(zpk_omp(klon,llm)) 42 IF (.NOT.ALLOCATED(zphi_omp)) ALLOCATE(zphi_omp(klon,llm)) 43 IF (.NOT.ALLOCATED(zphis_omp)) ALLOCATE(zphis_omp(klon)) 44 IF (.NOT.ALLOCATED(presnivs_omp)) ALLOCATE(presnivs_omp(llm)) 45 IF (.NOT.ALLOCATED(zufi_omp)) ALLOCATE(zufi_omp(klon,llm)) 46 IF (.NOT.ALLOCATED(zvfi_omp)) ALLOCATE(zvfi_omp(klon,llm)) 47 IF (.NOT.ALLOCATED(zrfi_omp)) ALLOCATE(zrfi_omp(klon,llm)) 48 IF (.NOT.ALLOCATED(ztfi_omp)) ALLOCATE(ztfi_omp(klon,llm)) 49 IF (.NOT.ALLOCATED(zqfi_omp)) ALLOCATE(zqfi_omp(klon,llm,nqtot)) 50 IF (.NOT.ALLOCATED(flxwfi_omp)) ALLOCATE(flxwfi_omp(klon,llm)) 51 IF (.NOT.ALLOCATED(zdufi_omp)) ALLOCATE(zdufi_omp(klon,llm)) 52 IF (.NOT.ALLOCATED(zdvfi_omp)) ALLOCATE(zdvfi_omp(klon,llm)) 53 IF (.NOT.ALLOCATED(zdtfi_omp)) ALLOCATE(zdtfi_omp(klon,llm)) 54 IF (.NOT.ALLOCATED(zdqfi_omp)) ALLOCATE(zdqfi_omp(klon,llm,nqtot)) 55 IF (.NOT.ALLOCATED(zdpsrf_omp)) ALLOCATE(zdpsrf_omp(klon)) 56 IF (.NOT.ALLOCATED(hrlw)) ALLOCATE(hrlw(klon,llm)) 57 IF (.NOT.ALLOCATED(hrsw)) ALLOCATE(hrsw(klon,llm)) 58 15 59 END SUBROUTINE allocate_interface 16 60 17 61 SUBROUTINE deallocate_interface 18 62 63 DEALLOCATE(zplev_omp) 64 DEALLOCATE(zplay_omp) 65 DEALLOCATE(zpk_omp) 66 DEALLOCATE(zphi_omp) 67 DEALLOCATE(zphis_omp) 68 DEALLOCATE(presnivs_omp) 69 DEALLOCATE(zufi_omp) 70 DEALLOCATE(zvfi_omp) 71 DEALLOCATE(zrfi_omp) 72 DEALLOCATE(ztfi_omp) 73 DEALLOCATE(zqfi_omp) 74 DEALLOCATE(flxwfi_omp) 75 DEALLOCATE(zdufi_omp) 76 DEALLOCATE(zdvfi_omp) 77 DEALLOCATE(zdtfi_omp) 78 DEALLOCATE(zdqfi_omp) 79 DEALLOCATE(zdpsrf_omp) 80 DEALLOCATE(hrlw) 81 DEALLOCATE(hrsw) 82 19 83 END SUBROUTINE deallocate_interface 20 84 -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_venus_lmd_new/callphysiq_mod.F
r1755 r2277 18 18 USE physiq_mod, ONLY: physiq 19 19 USE module_model_constants, only : p0,rcp,cp 20 use moyzon_mod, only: tmoy21 20 IMPLICIT NONE 22 21 … … 81 80 zqfi_omp, & 82 81 flxwfi_omp, & 83 zplevmoy, &84 ztmoy, &85 82 zdufi_omp, & 86 83 zdvfi_omp, & … … 88 85 zdqfi_omp, & 89 86 zdpsrf_omp) 90 deallocate(tmoy)91 87 END SUBROUTINE call_physiq 92 88 -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_venus_lmd_new/iniphysiq_mod.F
r1755 r2277 62 62 call init_dimphy(ngrid,nlayer) 63 63 64 Call phys_state_var_init 64 Call phys_state_var_init(nq) 65 65 ! allocate "surfdat_h" arrays 66 66 !call ini_surfdat_h(ngrid,nq) … … 79 79 80 80 ! Initialize some physical constants 81 call suphec 81 call suphec(pcpp) 82 82 83 83 cpp=pcpp -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_venus_lmd_new/update_inputs_physiq_mod.F
r2021 r2277 60 60 JH_cur_split = JH_cur_split / 2808. 61 61 print*,'JH_cur_split',JH_cur_split 62 JD_cur = INT((3700*(lct_input - lon_input / 15.) +elaps)/88800) 62 63 JD_cur = MODULO(int(JD_cur),669) 63 64 MY = 2024 … … 70 71 SUBROUTINE update_inputs_physiq_tracers(nq,MARS_MODE) 71 72 72 use infotrac , only: nqtot,tname73 use infotrac_phy, only: nqtot,tname 73 74 use logic_mod, only: iflag_trac 74 75 implicit none -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_void_lmd_new/callphysiq_mod.F
r1634 r2277 13 13 14 14 SUBROUTINE call_physiq(planet_type, klon,llm,nqtot, & 15 debut_split,lafin_split, & 16 jD_cur,jH_cur_split,zdt_split, & 17 zplev_omp,zplay_omp, & 18 zpk_omp,zphi_omp,zphis_omp, & 19 presnivs_omp, & 20 zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp, & 21 flxwfi_omp, & 22 zdufi_omp,zdvfi_omp,zdtfi_omp,zdqfi_omp,zdpsrf_omp) 15 debut_split,lafin_split) 16 17 USE variables_mod 23 18 24 19 IMPLICIT NONE 25 20 26 21 character(len=10),INTENT(IN) :: planet_type ! planet type ('earth','mars',...) 27 28 22 INTEGER,INTENT(IN) :: klon ! (local) number of atmospheric columns 29 23 INTEGER,INTENT(IN) :: llm ! number of atmospheric layers … … 31 25 LOGICAL,INTENT(IN) :: debut_split ! .true. if very first call to physics 32 26 LOGICAL,INTENT(IN) :: lafin_split ! .true. if last call to physics 33 REAL,INTENT(IN) :: JD_cur ! Julian day34 REAL,INTENT(IN) :: JH_cur_split ! Julian hour (fraction of day)35 REAL,INTENT(IN) :: zdt_split ! time step over which the physics are evaluated36 REAL,INTENT(IN) :: zplev_omp(klon,llm+1) ! interlayer pressure (Pa)37 REAL,INTENT(IN) :: zplay_omp(klon,llm) ! mid-layer pressure (Pa)38 REAL,INTENT(INOUT) :: zpk_omp(klon,llm)39 REAL,INTENT(IN) :: zphi_omp(klon,llm) ! geopotential at midlayer40 REAL,INTENT(INOUT) :: zphis_omp(klon) ! surface geopotential41 REAL,INTENT(INOUT) :: presnivs_omp(llm) ! approximate pressure of atm. layers42 REAL,INTENT(IN) :: zufi_omp(klon,llm) ! zonal wind (m/s)43 REAL,INTENT(IN) :: zvfi_omp(klon,llm) ! meridional wind (m/s)44 REAL,INTENT(INOUT) :: zrfi_omp(klon,llm) ! relative wind vorticity, in s-145 REAL,INTENT(IN) :: ztfi_omp(klon,llm) ! temperature (K)46 REAL,INTENT(IN) :: zqfi_omp(klon,llm,nqtot) ! tracers (*/kg of air)47 REAL,INTENT(IN) :: flxwfi_omp(klon,llm) ! Vertical mass flux on lower mesh interfaces (kg/s)48 ! tendencies (in */s) from the physics:49 REAL,INTENT(OUT) :: zdufi_omp(klon,llm) ! tendency on zonal winds50 REAL,INTENT(OUT) :: zdvfi_omp(klon,llm) ! tendency on meridional winds51 REAL,INTENT(OUT) :: zdtfi_omp(klon,llm) ! tendency on temperature52 REAL,INTENT(OUT) :: zdqfi_omp(klon,llm,nqtot) ! tendency on tracers53 REAL,INTENT(OUT) :: zdpsrf_omp(klon) ! tendency on surface pressure54 27 55 28 END SUBROUTINE call_physiq -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_void_lmd_new/iniphysiq_mod.F
r1590 r2277 3 3 CONTAINS 4 4 5 subroutine iniphysiq(ngrid,nlayer,nq,p hour_ini,piphysiq,&6 punjours, pdayref, ptimestep,&5 subroutine iniphysiq(ngrid,nlayer,nq,piphysiq,& 6 punjours, pdayref, & 7 7 prad,pg,pr,pcpp,iflag_phys) 8 8 … … 15 15 real,intent(in) :: punjours ! length (in s) of a standard day [daysec] 16 16 integer,intent(in) :: pdayref ! reference day of for the simulation [day_ini] 17 real,intent(in) :: ptimestep !physics time step (s) [dtphys]18 17 integer,intent(in) :: iflag_phys ! type of physics to be called 19 18 … … 21 20 integer,intent(in) :: nlayer ! number of atmospheric layers 22 21 integer,intent(in) :: nq ! number of tracers 23 real,intent(in) :: phour_ini ! start time (fraction of day) of the run 0=<phour_ini<124 22 real,intent(in) :: piphysiq ! call physics every piphysiq dynamical timesteps 25 23 -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_void_lmd_new/update_inputs_physiq_mod.F
r1634 r2277 19 19 elaps,& 20 20 lct_input,lon_input,ls_input,& 21 ptime,pday,MY)21 MY) 22 22 23 23 INTEGER, INTENT(IN) :: JULDAY, JULYR 24 24 REAL, INTENT(IN) :: GMT,elaps,lon_input,ls_input,lct_input 25 REAL,INTENT(OUT) :: pday,ptime,MY25 REAL,INTENT(OUT) :: MY 26 26 27 27 END SUBROUTINE update_inputs_physiq_time -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_void_lmd_new/update_outputs_physiq_mod.F
r1738 r2277 71 71 SWDOWNZ,TAU_DUST,QSURFDUST,& 72 72 MTOT,ICETOT,TAU_ICE,& 73 HR_SW,HR_LW,HR_DYN,DT,DTRAD,DTVDF,DTAJS,& 74 RDUST,VMR_ICE,RICE) 73 HR_SW,HR_LW,HR_DYN,DT,DTRAD,& 74 RDUST,VMR_ICE,RICE,& 75 CLOUDFRAC,TOTCLOUDFRAC,& 76 RAIN,SNOW,REEVAP,SURFRAIN,ALBEQ,FLUXTOP_DN,FLUXABS_SW,FLUXTOP_LW,FLUXSURF_SW,& 77 FLUXSURF_LW,FLXGRD,LSCEZ,H2OICE_REFF,LATENT_HF) 75 78 76 79 INTEGER, INTENT(IN) :: ims,ime,jms,jme,kms,kme … … 78 81 REAL, DIMENSION( ims:ime, jms:jme ), INTENT(INOUT) :: & 79 82 SWDOWNZ,TAU_DUST,QSURFDUST,& 80 MTOT,ICETOT,TAU_ICE 83 MTOT,ICETOT,TAU_ICE,& 84 TOTCLOUDFRAC,ALBEQ,FLUXTOP_DN,FLUXABS_SW,FLUXTOP_LW,FLUXSURF_SW,& 85 FLUXSURF_LW,FLXGRD,LATENT_HF,REEVAP,SURFRAIN 81 86 REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), INTENT(INOUT ) :: & 82 HR_SW,HR_LW,HR_DYN,RDUST,VMR_ICE,RICE,DT,DTRAD,DTVDF,DTAJS 87 HR_SW,HR_LW,RDUST,VMR_ICE,RICE,CLOUDFRAC,HR_DYN,DT,DTRAD,RAIN,SNOW,& 88 LSCEZ,H2OICE_REFF 83 89 INTEGER :: i,j,subs 84 90 85 91 END SUBROUTINE update_outputs_physiq_diag 86 87 92 88 93 END MODULE update_outputs_physiq_mod -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/dynphy_wrf_void_lmd_new/variables_mod.F
r1845 r2277 2 2 3 3 IMPLICIT NONE 4 5 REAL*8 :: JD_cur !pday !JD_cur ! Julian day 6 REAL*8 :: JH_cur_split !ptime !JH_cur_split ! Julian hour (fraction of day) 7 REAL*8 :: zdt_split !ptimestep !zdt_split ! time step over which the physics are evaluated 8 REAL*8 :: phour_ini ! start time (fraction of day) of the run 0=<phour_ini<1 9 REAL*8 :: counter 10 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zplev_omp !pplev !zplev_omp(klon,llm+1) ! interlayer pressure (Pa) 11 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zplay_omp !pplay !zplay_omp(klon,llm) ! mid-layer pressure (Pa) 12 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zpk_omp!(klon,llm) 13 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zphi_omp !pphi !zphi_omp(klon,llm) ! geopotential at midlayer 14 REAL*8,DIMENSION(:),ALLOCATABLE :: zphis_omp!(klon) ! surface geopotential 15 REAL*8,DIMENSION(:),ALLOCATABLE :: presnivs_omp!(llm) ! approximate pressure of atm. layers 16 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zufi_omp !pu !zufi_omp(klon,llm) ! zonal wind (m/s) 17 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zvfi_omp !pv !zvfi_omp(klon,llm) ! meridional wind (m/s) 18 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zrfi_omp!(klon,llm) ! relative wind vorticity, in s-1 19 REAL*8,DIMENSION(:,:),ALLOCATABLE :: ztfi_omp !pt !ztfi_omp(klon,llm) ! temperature (K) 20 REAL*8,DIMENSION(:,:,:),ALLOCATABLE :: zqfi_omp !pq !zqfi_omp(klon,llm,nqtot) ! tracers (*/kg of air) 21 REAL*8,DIMENSION(:,:),ALLOCATABLE :: flxwfi_omp !flxw !flxwfi_omp(klon,llm) ! Vertical mass flux on lower mesh interfaces (kg/s) ! tendencies (in */s) from the physics: 22 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zdufi_omp !pdu !zdufi_omp(klon,llm) ! tendency on zonal winds 23 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zdvfi_omp !pdv !zdvfi_omp(klon,llm) ! tendency on meridional winds 24 REAL*8,DIMENSION(:,:),ALLOCATABLE :: zdtfi_omp !pdt !zdtfi_omp(klon,llm) ! tendency on temperature 25 REAL*8,DIMENSION(:,:,:),ALLOCATABLE :: zdqfi_omp !pdq !zdqfi_omp(klon,llm,nqtot) ! tendency on tracers 26 REAL*8,DIMENSION(:),ALLOCATABLE :: zdpsrf_omp !pdpsrf !zdpsrf_omp(klon) !tendency on surface pressure 27 REAL*8,DIMENSION(:,:),ALLOCATABLE :: hrlw,hrsw 4 28 5 29 CONTAINS … … 8 32 9 33 IMPLICIT NONE 10 34 11 35 INTEGER,INTENT(IN) :: klon ! (local) number of atmospheric columns 12 36 INTEGER,INTENT(IN) :: llm ! number of atmospheric layers 13 37 INTEGER,INTENT(IN) :: nqtot ! number of tracers 14 38 39 IF (.NOT.ALLOCATED(zplev_omp)) ALLOCATE(zplev_omp(klon,llm+1)) 40 IF (.NOT.ALLOCATED(zplay_omp)) ALLOCATE(zplay_omp(klon,llm)) 41 IF (.NOT.ALLOCATED(zpk_omp)) ALLOCATE(zpk_omp(klon,llm)) 42 IF (.NOT.ALLOCATED(zphi_omp)) ALLOCATE(zphi_omp(klon,llm)) 43 IF (.NOT.ALLOCATED(zphis_omp)) ALLOCATE(zphis_omp(klon)) 44 IF (.NOT.ALLOCATED(presnivs_omp)) ALLOCATE(presnivs_omp(llm)) 45 IF (.NOT.ALLOCATED(zufi_omp)) ALLOCATE(zufi_omp(klon,llm)) 46 IF (.NOT.ALLOCATED(zvfi_omp)) ALLOCATE(zvfi_omp(klon,llm)) 47 IF (.NOT.ALLOCATED(zrfi_omp)) ALLOCATE(zrfi_omp(klon,llm)) 48 IF (.NOT.ALLOCATED(ztfi_omp)) ALLOCATE(ztfi_omp(klon,llm)) 49 IF (.NOT.ALLOCATED(zqfi_omp)) ALLOCATE(zqfi_omp(klon,llm,nqtot)) 50 IF (.NOT.ALLOCATED(flxwfi_omp)) ALLOCATE(flxwfi_omp(klon,llm)) 51 IF (.NOT.ALLOCATED(zdufi_omp)) ALLOCATE(zdufi_omp(klon,llm)) 52 IF (.NOT.ALLOCATED(zdvfi_omp)) ALLOCATE(zdvfi_omp(klon,llm)) 53 IF (.NOT.ALLOCATED(zdtfi_omp)) ALLOCATE(zdtfi_omp(klon,llm)) 54 IF (.NOT.ALLOCATED(zdqfi_omp)) ALLOCATE(zdqfi_omp(klon,llm,nqtot)) 55 IF (.NOT.ALLOCATED(zdpsrf_omp)) ALLOCATE(zdpsrf_omp(klon)) 56 IF (.NOT.ALLOCATED(hrlw)) ALLOCATE(hrlw(klon,llm)) 57 IF (.NOT.ALLOCATED(hrsw)) ALLOCATE(hrsw(klon,llm)) 58 15 59 END SUBROUTINE allocate_interface 16 60 17 61 SUBROUTINE deallocate_interface 18 62 63 DEALLOCATE(zplev_omp) 64 DEALLOCATE(zplay_omp) 65 DEALLOCATE(zpk_omp) 66 DEALLOCATE(zphi_omp) 67 DEALLOCATE(zphis_omp) 68 DEALLOCATE(presnivs_omp) 69 DEALLOCATE(zufi_omp) 70 DEALLOCATE(zvfi_omp) 71 DEALLOCATE(zrfi_omp) 72 DEALLOCATE(ztfi_omp) 73 DEALLOCATE(zqfi_omp) 74 DEALLOCATE(flxwfi_omp) 75 DEALLOCATE(zdufi_omp) 76 DEALLOCATE(zdvfi_omp) 77 DEALLOCATE(zdtfi_omp) 78 DEALLOCATE(zdqfi_omp) 79 DEALLOCATE(zdpsrf_omp) 80 DEALLOCATE(hrlw) 81 DEALLOCATE(hrsw) 82 19 83 END SUBROUTINE deallocate_interface 20 84
Note: See TracChangeset
for help on using the changeset viewer.