Changeset 5997
- Timestamp:
- Jan 5, 2026, 5:38:05 PM (7 days ago)
- File:
-
- 1 edited
-
LMDZ6/trunk/libf/phylmd/lmdz_lscp_tools.f90 (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/lmdz_lscp_tools.f90
r5996 r5997 7 7 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 8 SUBROUTINE FALLICE_VELOCITY(klon,iwc,temp,rho,pres,ptconv,velo) 9 10 ! Ref: 11 ! Stubenrauch, C. J., Bonazzola, M., 12 ! Protopapadaki, S. E., & Musat, I. (2019). 13 ! New cloud system metrics to assess bulk 14 ! ice cloud schemes in a GCM. Journal of 15 ! Advances in Modeling Earth Systems, 11, 16 ! 3212–3234. https://doi.org/10.1029/2019MS001642 9 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 10 ! routine that calculates the ice crystals fall velocity 11 ! References: 12 ! - Heymsfield 1977, doi: 10.1175/1520-0469(1977)034<0367:PDISIC>2.0.CO;2 13 ! - Heymsfield and Donner 1990, doi: 10.1175/1520-0469(1990)047<1865:ASFPIC>2.0.CO;2 14 ! - Stubenrauch et al. 2019, doi: 10.1029/2019MS001642 15 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 17 16 18 17 use lmdz_lscp_ini, only: iflag_vice, ffallv_con, ffallv_lsc … … 22 21 23 22 INTEGER, INTENT(IN) :: klon 24 REAL, INTENT(IN), DIMENSION(klon) :: iwc !specific ice water content [kg/m3]25 REAL, INTENT(IN), DIMENSION(klon) :: temp !temperature [K]26 REAL, INTENT(IN), DIMENSION(klon) :: rho !dry air density [kg/m3]27 REAL, INTENT(IN), DIMENSION(klon) :: pres !air pressure [Pa]28 LOGICAL, INTENT(IN), DIMENSION(klon) :: ptconv ! convective point [-]29 30 REAL, INTENT(OUT), DIMENSION(klon) :: velo !fallspeed velocity of crystals [m/s]23 REAL, INTENT(IN), DIMENSION(klon) :: iwc !-- specific ice water content [kg/m3] 24 REAL, INTENT(IN), DIMENSION(klon) :: temp !-- temperature [K] 25 REAL, INTENT(IN), DIMENSION(klon) :: rho !-- dry air density [kg/m3] 26 REAL, INTENT(IN), DIMENSION(klon) :: pres !-- air pressure [Pa] 27 LOGICAL, INTENT(IN), DIMENSION(klon) :: ptconv !-- convective point [-] 28 29 REAL, INTENT(OUT), DIMENSION(klon) :: velo !-- fallspeed velocity of crystals [m/s] 31 30 32 31 … … 44 43 fallv_tun=ffallv_lsc 45 44 ENDIF 46 45 47 46 tempc=temp(i)-273.15 ! celcius temp 48 47 iwcg=MAX(iwc(i)*1000.,1E-3) ! iwc in g/m3. We set a minimum value to prevent from division by 0 … … 114 113 include "FCTTRE.h" 115 114 116 INTEGER, INTENT(IN) :: klon !number of horizontal grid points117 REAL, INTENT(IN), DIMENSION(klon) :: temp ! temperature in K118 REAL, INTENT(IN), DIMENSION(klon) :: qtot ! total specific water in kg/kg119 REAL, INTENT(IN), DIMENSION(klon) :: pressure ! pressure in Pa120 REAL, INTENT(IN) :: tref ! reference temperature in K115 INTEGER, INTENT(IN) :: klon !-- number of horizontal grid points 116 REAL, INTENT(IN), DIMENSION(klon) :: temp !-- temperature [K] 117 REAL, INTENT(IN), DIMENSION(klon) :: qtot !-- total specific water [kg/kg] 118 REAL, INTENT(IN), DIMENSION(klon) :: pressure !-- pressure [Pa] 119 REAL, INTENT(IN) :: tref ! reference temperature [K] 121 120 LOGICAL, INTENT(IN) :: flagth ! flag for qsat calculation for thermals 122 121 INTEGER, INTENT(IN) :: phase … … 126 125 127 126 REAL, INTENT(OUT), DIMENSION(klon) :: qs ! saturation specific humidity [kg/kg] 128 REAL, INTENT(OUT), DIMENSION(klon) :: dqs ! d erivation of saturation specific humidity wrt T127 REAL, INTENT(OUT), DIMENSION(klon) :: dqs ! dqs/dT [kg/kg/K] 129 128 130 129 REAL delta, cor, cvm5 … … 164 163 165 164 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 166 ! programme that calculates the gammasat parameter that determines the165 ! routine that calculates the gammasat parameter that determines the 167 166 ! homogeneous condensation thresholds for cold (<0oC) clouds 168 167 ! condensation at q>gammasat*qsat 169 ! Etienne Vignon, March 2021170 168 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 171 169 … … 176 174 177 175 178 INTEGER, INTENT(IN) :: klon ! number of horizontal grid points179 REAL, INTENT(IN), DIMENSION(klon) :: temp ! temperature in K180 REAL, INTENT(IN), DIMENSION(klon) :: qtot ! total specific water in kg/kg181 182 REAL, INTENT(IN), DIMENSION(klon) :: pressure ! pressure in Pa183 184 REAL, INTENT(OUT), DIMENSION(klon) :: gammasat ! coefficient to multiply qsat with to calculate saturation185 REAL, INTENT(OUT), DIMENSION(klon) :: dgammasatdt ! derivative of gammasat wrt temperature176 INTEGER, INTENT(IN) :: klon !-- number of horizontal grid points 177 REAL, INTENT(IN), DIMENSION(klon) :: temp !-- temperature [K] 178 REAL, INTENT(IN), DIMENSION(klon) :: qtot !-- total specific water [kg/kg] 179 180 REAL, INTENT(IN), DIMENSION(klon) :: pressure !-- pressure [Pa] 181 182 REAL, INTENT(OUT), DIMENSION(klon) :: gammasat !-- coefficient to multiply qsat with to calculate saturation 183 REAL, INTENT(OUT), DIMENSION(klon) :: dgammasatdt !-- derivative of gammasat wrt temperature [K-1] 186 184 187 185 REAL, DIMENSION(klon) :: qsi,qsl,dqsl,dqsi … … 278 276 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 279 277 SUBROUTINE DISTANCE_TO_CLOUD_TOP(klon,klev,k,temp,pplay,paprs,rneb,distcltop1D,temp_cltop) 280 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 278 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 279 ! routine that calculates the distance to cloud top for cloud phase 280 ! determination (when cloud phase is assumed to depend on both 281 ! temperature and distance to cloud top, see Lea Raillard's PhD 282 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 281 283 282 284 USE lmdz_lscp_ini, ONLY : rd,rg,tresh_cl … … 284 286 IMPLICIT NONE 285 287 286 INTEGER, INTENT(IN) :: klon,klev ! number of horizontal and vertical grid points287 INTEGER, INTENT(IN) :: k ! vertical index288 REAL, INTENT(IN), DIMENSION(klon,klev) :: temp ! temperature in K289 REAL, INTENT(IN), DIMENSION(klon,klev) :: pplay ! pressure middle layer in Pa290 REAL, INTENT(IN), DIMENSION(klon,klev+1) :: paprs ! pressure interfaces in Pa291 REAL, INTENT(IN), DIMENSION(klon,klev) :: rneb ! cloud fraction292 293 REAL, INTENT(OUT), DIMENSION(klon) :: distcltop1D ! distance from cloud top294 REAL, INTENT(OUT), DIMENSION(klon) :: temp_cltop ! temperature of cloud top288 INTEGER, INTENT(IN) :: klon,klev !-- number of horizontal and vertical grid points 289 INTEGER, INTENT(IN) :: k !-- vertical index 290 REAL, INTENT(IN), DIMENSION(klon,klev) :: temp !-- temperature [K] 291 REAL, INTENT(IN), DIMENSION(klon,klev) :: pplay !-- pressure middle layer [Pa] 292 REAL, INTENT(IN), DIMENSION(klon,klev+1) :: paprs !-- pressure interfaces [Pa] 293 REAL, INTENT(IN), DIMENSION(klon,klev) :: rneb !-- cloud fraction [-] 294 295 REAL, INTENT(OUT), DIMENSION(klon) :: distcltop1D !-- distance from cloud top [m] 296 REAL, INTENT(OUT), DIMENSION(klon) :: temp_cltop !-- temperature of cloud top [K] 295 297 296 298 REAL dzlay(klon,klev)
Note: See TracChangeset
for help on using the changeset viewer.
