Changeset 4168
- Timestamp:
- Apr 2, 2026, 3:46:30 PM (9 days ago)
- Location:
- trunk/LMDZ.GENERIC
- Files:
-
- 11 edited
-
changelog.txt (modified) (2 diffs)
-
libf/phygeneric/physiq_mod.F90 (modified) (2 diffs)
-
libf/phygeneric/thermcell_closure.F90 (modified) (2 diffs)
-
libf/phygeneric/thermcell_dq.F90 (modified) (2 diffs)
-
libf/phygeneric/thermcell_dv2.F90 (modified) (2 diffs)
-
libf/phygeneric/thermcell_env.F90 (modified) (2 diffs)
-
libf/phygeneric/thermcell_flux.F90 (modified) (2 diffs)
-
libf/phygeneric/thermcell_height.F90 (modified) (2 diffs)
-
libf/phygeneric/thermcell_main.F90 (modified) (3 diffs)
-
libf/phygeneric/thermcell_mod.F90 (modified) (5 diffs)
-
libf/phygeneric/thermcell_plume.F90 (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/changelog.txt
r4164 r4168 2252 2252 Some fixes will be added as the model is tested in various configurations. 2253 2253 2254 == 02/04/2026 == 2254 == 02/04/2026 == EM 2255 2255 Some changes following the "thermodynamics update": 2256 2256 - bug fix on the size of pplev … … 2260 2260 - some optimizations in "thermodynamics_update" : in the 'thermo_uni_ideal' 2261 2261 case seting r(),cpp() and rcp() can be done at first call only. 2262 2263 == 02/04/2026 == EM 2264 Clean up module thermcell_mod.F90 : make module variables private and remove 2265 unused module variables. 2266 While at it, put all thermcell_*.F90 routines in modules. -
trunk/LMDZ.GENERIC/libf/phygeneric/physiq_mod.F90
r4164 r4168 21 21 use generic_cloud_common_h, only : epsi_generic, Psat_generic 22 22 use thermcell_mod, only: init_thermcell_mod 23 use thermcell_main_mod, only: thermcell_main 23 24 use gases_h, only: gnom, gfrac, ngasmx 24 25 use radcommon_h, only: sigma, glat, grav, BWNV, WNOI, DWNI, DWNV, WNOV … … 796 797 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 797 798 if (calltherm) then 798 CALL init_thermcell_mod(g, rcp_ref, rd_ref, pi , T_h2o_ice_liq, RW)799 CALL init_thermcell_mod(g, rcp_ref, rd_ref, pi) 799 800 endif 800 801 -
trunk/LMDZ.GENERIC/libf/phygeneric/thermcell_closure.F90
r2177 r4168 1 ! 2 ! 3 ! 1 MODULE thermcell_closure_mod 2 3 IMPLICIT NONE 4 5 CONTAINS 6 4 7 SUBROUTINE thermcell_closure(ngrid,nlay,ptimestep,rho,zlev, & 5 8 lmax,alim_star,zmin,zmax,wmax,f) … … 107 110 108 111 109 RETURN 110 END 112 END SUBROUTINE thermcell_closure 113 114 END MODULE thermcell_closure_mod -
trunk/LMDZ.GENERIC/libf/phygeneric/thermcell_dq.F90
r3893 r4168 1 ! 2 ! 3 ! 1 MODULE thermcell_dq_mod 2 3 IMPLICIT NONE 4 5 CONTAINS 6 4 7 SUBROUTINE thermcell_dq(ngrid,nlay,ptimestep,fm,entr,detr,masse, & 5 8 q,dq,qa) … … 159 162 160 163 161 RETURN 162 END 164 END SUBROUTINE thermcell_dq 165 166 END MODULE thermcell_dq_mod -
trunk/LMDZ.GENERIC/libf/phygeneric/thermcell_dv2.F90
r2231 r4168 1 ! 2 ! 3 ! 1 MODULE thermcell_dv2_mod 2 3 IMPLICIT NONE 4 5 CONTAINS 6 4 7 SUBROUTINE thermcell_dv2(ngrid,nlay,ptimestep,fm,entr,detr,masse,fraca, & 5 8 zmax,zmin,u,v,du,dv,ua,va) … … 192 195 193 196 194 RETURN 195 END 197 END SUBROUTINE thermcell_dv2 198 199 END MODULE thermcell_dv2_mod -
trunk/LMDZ.GENERIC/libf/phygeneric/thermcell_env.F90
r4146 r4168 1 ! 2 ! 1 MODULE thermcell_env_mod 2 3 IMPLICIT NONE 4 5 CONTAINS 3 6 ! 4 7 SUBROUTINE thermcell_env(ngrid,nlay,nq,pq,pt,pu,pv,pplay,pplev, & … … 153 156 154 157 155 RETURN 156 END 158 END SUBROUTINE thermcell_env 159 160 END MODULE thermcell_env_mod -
trunk/LMDZ.GENERIC/libf/phygeneric/thermcell_flux.F90
r3893 r4168 1 ! 2 ! 3 ! 1 MODULE thermcell_flux_mod 2 3 IMPLICIT NONE 4 5 CONTAINS 6 4 7 SUBROUTINE thermcell_flux(ngrid,nlay,ptimestep,masse, & 5 8 lmin,lmax,entr_star,detr_star, & … … 400 403 401 404 402 RETURN 403 END 405 END SUBROUTINE thermcell_flux 406 407 END MODULE thermcell_flux_mod -
trunk/LMDZ.GENERIC/libf/phygeneric/thermcell_height.F90
r3893 r4168 1 ! 2 ! 3 ! 1 MODULE thermcell_height_mod 2 3 IMPLICIT NONE 4 5 CONTAINS 6 4 7 SUBROUTINE thermcell_height(ngrid,nlay,lmin,lmix,lmax, & 5 8 zlev,zmin,zmix,zmax,zw2,wmax,f_star) … … 195 198 196 199 197 RETURN 198 END 200 END SUBROUTINE thermcell_height 201 202 END MODULE thermcell_height_mod -
trunk/LMDZ.GENERIC/libf/phygeneric/thermcell_main.F90
r3893 r4168 1 ! 2 ! 1 MODULE thermcell_main_mod 2 3 IMPLICIT NONE 4 5 CONTAINS 3 6 ! 4 7 SUBROUTINE thermcell_main(ngrid,nlay,nq,ptimestep,firstcall, & … … 45 48 !=============================================================================== 46 49 47 USE thermcell_mod 50 USE thermcell_mod, ONLY: RD, RG, dvimpl, linf 48 51 USE print_control_mod, ONLY: prt_level 52 USE thermcell_env_mod, ONLY: thermcell_env 53 USE thermcell_plume_mod, ONLY: thermcell_plume 54 USE thermcell_height_mod, ONLY: thermcell_height 55 USE thermcell_closure_mod, ONLY: thermcell_closure 56 USE thermcell_flux_mod, ONLY: thermcell_flux 57 USE thermcell_dq_mod, ONLY: thermcell_dq 58 USE thermcell_dv2_mod, ONLY: thermcell_dv2 49 59 50 60 IMPLICIT NONE … … 421 431 422 432 423 RETURN 424 END 433 END SUBROUTINE thermcell_main 434 435 END MODULE thermcell_main_mod -
trunk/LMDZ.GENERIC/libf/phygeneric/thermcell_mod.F90
r3655 r4168 6 6 ! Flags for computations 7 7 ! default 8 LOGICAL,SAVE :: dqimpl ! .true. Flag for thermcell_dq version (True : implicit scheme || False : explicit scheme) 9 LOGICAL,SAVE :: dvimpl ! .false. Flag for specific u, v mixing (True : thermcell_dv2 || False : thermcell_dq) 10 8 LOGICAL,SAVE,PROTECTED :: dqimpl ! .true. Flag for thermcell_dq version (True : implicit scheme || False : explicit scheme) 9 LOGICAL,SAVE,PROTECTED :: dvimpl ! .false. Flag for specific u, v mixing (True : thermcell_dv2 || False : thermcell_dq) 10 !$OMP THREADPRIVATE(dqimpl,dvimpl) 11 11 12 ! Physical parameters 12 13 13 REAL,SAVE :: r_aspect_thermals ! 1.0 Aspect ratio of the thermals (width / height) 14 REAL,SAVE :: tau_thermals ! 0. Relaxation time 15 REAL,SAVE :: betalpha ! 0.9 - between 0 (e=d=0) and 1 (rho*fraca=cst) 16 REAL,SAVE :: afact ! 2./3. - buoyancy acceleration efficiency, between 0 and 1 17 REAL,SAVE :: fact_epsilon ! 2.e-3 - turbulence and friction deceleration 18 REAL,SAVE :: nu ! 0. Geometrical contributions to entrainment and detrainment 19 REAL,SAVE :: alpha_max ! 0.7 Maximal permitted updraft fraction 20 REAL,SAVE :: fomass_max ! 0.5 Maximal permitted outgoing layer mass fraction 21 REAL,SAVE :: pres_limit ! 1.e5 - 14 REAL,SAVE,PROTECTED :: r_aspect_thermals ! 1.0 Aspect ratio of the thermals (width / height) 15 REAL,SAVE,PROTECTED :: tau_thermals ! 0. Relaxation time 16 REAL,SAVE,PROTECTED :: betalpha ! 0.9 - between 0 (e=d=0) and 1 (rho*fraca=cst) 17 !$OMP THREADPRIVATE(r_aspect_thermals,tau_thermals,betalpha) 18 REAL,SAVE,PROTECTED :: afact ! 2./3. - buoyancy acceleration efficiency, between 0 and 1 19 REAL,SAVE,PROTECTED :: fact_epsilon ! 2.e-3 - turbulence and friction deceleration 20 REAL,SAVE,PROTECTED :: nu ! 0. Geometrical contributions to entrainment and detrainment 21 !$OMP THREADPRIVATE(afact,fact_epsilon,nu) 22 REAL,SAVE,PROTECTED :: alpha_max ! 0.7 Maximal permitted updraft fraction 23 REAL,SAVE,PROTECTED :: fomass_max ! 0.5 Maximal permitted outgoing layer mass fraction 24 REAL,SAVE,PROTECTED :: pres_limit ! 1.e5 - 25 !$OMP THREADPRIVATE(alpha_max,fomass_max,pres_limit) 22 26 23 27 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 30 34 ! ngrid. 31 35 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 32 INTEGER,SAVE :: linf ! 1 36 INTEGER,SAVE,PROTECTED :: linf ! 1 37 !$OMP THREADPRIVATE(linf) 33 38 34 39 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 37 42 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 38 43 REAL,SAVE :: d_temp ! 0. 39 44 !$OMP THREADPRIVATE(d_temp) 45 40 46 ! Physical constants 41 47 42 REAL,SAVE :: RTT 43 REAL,SAVE :: RG 44 REAL,SAVE :: RKAPPA 45 REAL,SAVE :: RPI 46 REAL,SAVE :: RD 48 REAL,SAVE,PROTECTED :: RG 49 REAL,SAVE,PROTECTED :: RKAPPA 50 REAL,SAVE,PROTECTED :: RPI 51 REAL,SAVE,PROTECTED :: RD 47 52 48 !$OMP THREADPRIVATE(R TT, RG, RKAPPA, RPI, RD)53 !$OMP THREADPRIVATE(RG, RKAPPA, RPI, RD) 49 54 50 55 51 56 CONTAINS 52 57 53 SUBROUTINE init_thermcell_mod(g, rcp, r, pi , T_h2o_ice_liq, RW)58 SUBROUTINE init_thermcell_mod(g, rcp, r, pi) 54 59 55 60 USE ioipsl_getin_p_mod, ONLY: getin_p … … 57 62 IMPLICIT NONE 58 63 59 REAL g 60 REAL rcp 61 REAL r 62 REAL pi 63 REAL T_h2o_ice_liq 64 REAL RW 64 REAL,INTENT(IN) :: g 65 REAL,INTENT(IN) :: rcp 66 REAL,INTENT(IN) :: r 67 REAL,INTENT(IN) :: pi 65 68 66 RTT = T_h2o_ice_liq67 69 RG = g 68 70 RKAPPA = rcp … … 135 137 print *, 'd_temp = ', d_temp 136 138 137 RETURN138 139 END SUBROUTINE init_thermcell_mod 139 140 -
trunk/LMDZ.GENERIC/libf/phygeneric/thermcell_plume.F90
r4146 r4168 1 ! 2 ! 3 ! 1 MODULE thermcell_plume_mod 2 3 IMPLICIT NONE 4 5 CONTAINS 6 4 7 SUBROUTINE thermcell_plume(ngrid,nlay,nq,ptimestep, & 5 8 ztv,zhl,zqt,zql,zlev,pplev,zpopsk, & … … 315 318 316 319 317 RETURN 318 END 320 321 END SUBROUTINE thermcell_plume 322 323 END MODULE thermcell_plume_mod
Note: See TracChangeset
for help on using the changeset viewer.
