Changeset 5383 for LMDZ6/trunk/libf
- Timestamp:
- Dec 5, 2024, 11:09:43 AM (2 months ago)
- Location:
- LMDZ6/trunk/libf
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/lmdz_lscp.f90
r5268 r5383 7 7 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 8 SUBROUTINE lscp(klon,klev,dtime,missing_val, & 9 paprs,pplay, temp,qt,qice_save,ptconv,ratqs,sigma_qtherm, &9 paprs,pplay,omega,temp,qt,ptconv,ratqs,sigma_qtherm, & 10 10 d_t, d_q, d_ql, d_qi, rneb, rneblsvol, & 11 11 pfraclr, pfracld, & … … 106 106 USE lmdz_lscp_tools, ONLY : icefrac_lscp, icefrac_lscp_turb 107 107 USE lmdz_lscp_tools, ONLY : fallice_velocity, distance_to_cloud_top 108 !USE lmdz_lscp_condensation, ONLY : condensation_lognormal_test, condensation_ice_supersat109 108 USE lmdz_lscp_condensation, ONLY : condensation_lognormal, condensation_ice_supersat 110 109 USE lmdz_lscp_poprecip, ONLY : poprecip_precld, poprecip_postcld … … 138 137 REAL, DIMENSION(klon,klev), INTENT(IN) :: pplay ! mid-layer pressure [Pa] 139 138 REAL, DIMENSION(klon,klev), INTENT(IN) :: temp ! temperature (K) 139 REAL, DIMENSION(klon,klev), INTENT(IN) :: omega ! vertical velocity [Pa/s] 140 140 REAL, DIMENSION(klon,klev), INTENT(IN) :: qt ! total specific humidity (in vapor phase in input) [kg/kg] 141 REAL, DIMENSION(klon,klev), INTENT(IN) :: qice_save ! ice specific from previous time step [kg/kg]142 141 INTEGER, INTENT(IN) :: iflag_cld_th ! flag that determines the distribution of convective clouds 143 142 INTEGER, INTENT(IN) :: iflag_ice_thermo! flag to activate the ice thermodynamics … … 267 266 !---------------- 268 267 REAL,DIMENSION(klon) :: qsl, qsi ! saturation threshold at current vertical level 268 REAL,DIMENSION(klon) :: qice_ini 269 269 REAL :: zct, zcl,zexpo 270 270 REAL, DIMENSION(klon,klev) :: ctot … … 569 569 ENDIF 570 570 571 qice_ini = zq(:)*ratio_qi_qtot(:,k) 571 572 ! -------------------------------------------------------------------- 572 573 ! P2> Precipitation evaporation/sublimation/melting … … 579 580 ! Calculation of saturation specific humidity 580 581 ! depending on temperature: 581 CALL calc_qsat_ecmwf(klon,zt (:),qzero(:),pplay(:,k),RTT,0,.false.,zqs(:),zdqs(:))582 CALL calc_qsat_ecmwf(klon,zt,qzero,pplay(:,k),RTT,0,.false.,zqs,zdqs) 582 583 ! wrt liquid water 583 CALL calc_qsat_ecmwf(klon,zt (:),qzero(:),pplay(:,k),RTT,1,.false.,qsl(:),dqsl(:))584 CALL calc_qsat_ecmwf(klon,zt,qzero,pplay(:,k),RTT,1,.false.,qsl,dqsl) 584 585 ! wrt ice 585 CALL calc_qsat_ecmwf(klon,zt (:),qzero(:),pplay(:,k),RTT,2,.false.,qsi(:),dqsi(:))586 CALL calc_qsat_ecmwf(klon,zt,qzero,pplay(:,k),RTT,2,.false.,qsi,dqsi) 586 587 587 588 DO i = 1, klon … … 763 764 764 765 qtot(:)=zq(:)+zmqc(:) 765 CALL calc_qsat_ecmwf(klon,zt (:),qtot(:),pplay(:,k),RTT,0,.false.,zqs(:),zdqs(:))766 CALL calc_qsat_ecmwf(klon,zt,qtot,pplay(:,k),RTT,0,.false.,zqs,zdqs) 766 767 DO i = 1, klon 767 768 zdelta = MAX(0.,SIGN(1.,RTT-zt(i))) … … 874 875 875 876 ! Treatment of non-boundary layer clouds (lognormale) 876 ! condensation with qsat(T) variation (adaptation) 877 ! Iterative resolution to converge towards qsat 878 ! with update of temperature, ice fraction and qsat at 879 ! each iteration 880 881 ! todoan -> sensitivity to iflag_fisrtilp_qsat 877 ! We iterate here to take into account the change in qsat(T) and ice fraction 878 ! during the condensation process 879 ! the increment in temperature is calculated using the first principle of 880 ! thermodynamics (enthalpy conservation equation in a mesh composed of a cloud fraction 881 ! and a clear sky fraction) 882 ! note that we assume that the vapor in the cloud is at saturation for this calculation 883 882 884 DO iter=1,iflag_fisrtilp_qsat+1 883 885 … … 913 915 914 916 ! Calculation of saturation specific humidity and ice fraction 915 CALL calc_qsat_ecmwf(klon,Tbef (:),qtot(:),pplay(:,k),RTT,0,.false.,zqs(:),zdqs(:))916 CALL calc_gammasat(klon,Tbef (:),qtot(:),pplay(:,k),gammasat(:),dgammasatdt(:))917 CALL calc_qsat_ecmwf(klon,Tbef,qtot,pplay(:,k),RTT,0,.false.,zqs,zdqs) 918 CALL calc_gammasat(klon,Tbef,qtot,pplay(:,k),gammasat,dgammasatdt) 917 919 ! saturation may occur at a humidity different from qsat (gamma qsat), so gamma correction for dqs 918 920 zdqs(:) = gammasat(:)*zdqs(:)+zqs(:)*dgammasatdt(:) … … 923 925 ENDIF 924 926 925 CALL icefrac_lscp(klon, zt (:), iflag_ice_thermo, zdistcltop(:),ztemp_cltop(:),zfice(:),dzfice(:))927 CALL icefrac_lscp(klon, zt, iflag_ice_thermo, zdistcltop,ztemp_cltop,zfice,dzfice) 926 928 927 929 !--AB Activates a condensation scheme that allows for … … 975 977 klon, Tbef, zq, zqs, gammasat, ratqs(:,k), & 976 978 keepgoing, rneb(:,k), zqn, qvc) 977 ! CALL condensation_lognormal_test( &978 ! klon, klev, k, keepgoing, ratqs, gammasat, zq, zqs, &979 ! zqn, qvc, rneb)980 979 981 980 … … 1057 1056 ! Partition function depending on tke for non shallow-convective clouds 1058 1057 IF (iflag_icefrac .GE. 1) THEN 1059 1060 CALL icefrac_lscp_turb(klon, dtime, Tbef, pplay(:,k), paprs(:,k), paprs(:,k+1), qice_save(:,k), ziflcld, zqn, & 1058 CALL icefrac_lscp_turb(klon, dtime, Tbef, pplay(:,k), paprs(:,k), paprs(:,k+1), omega(:,k), qice_ini, ziflcld, zqn, & 1061 1059 rneb(:,k), tke(:,k), tke_dissip(:,k), zqliq, zqvapcl, zqice, zfice_turb, dzfice_turb, cldfraliq(:,k),sigma2_icefracturb(:,k), mean_icefracturb(:,k)) 1062 1063 1060 ENDIF 1064 1061 -
LMDZ6/trunk/libf/phylmd/lmdz_lscp_condensation.f90
r5268 r5383 8 8 9 9 CONTAINS 10 11 !*********************************************************************************12 SUBROUTINE condensation_lognormal_test(klon,klev,k,keepgoing,ratqs, gammasat,zq, zqs, zqn, qvc, rneb)13 14 15 IMPLICIT NONE16 17 INTEGER, INTENT(IN) :: klon,klev,k18 LOGICAL, INTENT(IN) , DIMENSION(klon) :: keepgoing ! .TRUE. if a new condensation loop should be computed19 REAL, INTENT(IN), DIMENSION(klon,klev) :: ratqs20 REAL, INTENT(IN), DIMENSION(klon) :: zq, zqs,gammasat21 REAL, INTENT(INOUT), DIMENSION(klon) :: zqn, qvc22 REAL, INTENT(INOUT), DIMENSION(klon,klev) :: rneb23 24 REAL, DIMENSION(klon) :: zpdf_sig,zpdf_k,zpdf_delta ! lognormal parameters25 REAL, DIMENSION(klon) :: Zpdf_a,zpdf_b,zpdf_e1,zpdf_e2 ! lognormal intermediate variables26 INTEGER :: i27 28 29 DO i=1,klon !todoan : check if loop in i is needed30 31 IF (keepgoing(i)) THEN32 33 zpdf_sig(i)=ratqs(i,k)*zq(i)34 zpdf_k(i)=-sqrt(log(1.+(zpdf_sig(i)/zq(i))**2))35 zpdf_delta(i)=log(zq(i)/(gammasat(i)*zqs(i)))36 zpdf_a(i)=zpdf_delta(i)/(zpdf_k(i)*sqrt(2.))37 zpdf_b(i)=zpdf_k(i)/(2.*sqrt(2.))38 zpdf_e1(i)=zpdf_a(i)-zpdf_b(i)39 zpdf_e1(i)=sign(min(ABS(zpdf_e1(i)),5.),zpdf_e1(i))40 zpdf_e1(i)=1.-erf(zpdf_e1(i))41 zpdf_e2(i)=zpdf_a(i)+zpdf_b(i)42 zpdf_e2(i)=sign(min(ABS(zpdf_e2(i)),5.),zpdf_e2(i))43 zpdf_e2(i)=1.-erf(zpdf_e2(i))44 45 IF (zpdf_e1(i).LT.1.e-10) THEN46 rneb(i,k)=0.47 zqn(i)=zqs(i)48 !--AB grid-mean vapor in the cloud - we assume saturation adjustment49 qvc(i) = 0.50 ELSE51 rneb(i,k)=0.5*zpdf_e1(i)52 zqn(i)=zq(i)*zpdf_e2(i)/zpdf_e1(i)53 !--AB grid-mean vapor in the cloud - we assume saturation adjustment54 qvc(i) = rneb(i,k) * zqs(i)55 ENDIF56 57 ENDIF ! keepgoing58 ENDDO ! loop on klon59 60 61 END SUBROUTINE condensation_lognormal_test62 10 63 11 -
LMDZ6/trunk/libf/phylmd/lmdz_lscp_ini.f90
r5268 r5383 222 222 !$OMP THREADPRIVATE(rain_int_min) 223 223 224 REAL, SAVE, PROTECTED :: thresh_precip_frac=1.E-6 ! precipitation fraction threshold TODO[-]224 REAL, SAVE, PROTECTED :: thresh_precip_frac=1.E-6 ! precipitation fraction threshold [-] 225 225 !$OMP THREADPRIVATE(thresh_precip_frac) 226 226 227 REAL, SAVE, PROTECTED :: tau_mixenv=100000 ! Homogeneization time of mixed phase clouds [s] 228 !$OMP THREADPRIVATE(tau_mixenv) 229 230 REAL, SAVE, PROTECTED :: capa_crystal=1. ! Sursaturation of ice part in mixed phase clouds [-] 227 REAL, SAVE, PROTECTED :: capa_crystal=1. ! Crystal capacitance (shape factor) for lscp_icefrac_turb [-] 231 228 !$OMP THREADPRIVATE(capa_crystal) 232 233 REAL, SAVE, PROTECTED :: lmix_mpc=1000 ! Length of turbulent zones in Mixed Phase Clouds [m]234 !$OMP THREADPRIVATE(lmix_mpc)235 229 236 230 REAL, SAVE, PROTECTED :: naero5=0.5 ! Number concentration of aerosol larger than 0.5 microns [scm-3] 237 231 !$OMP THREADPRIVATE(naero5) 238 232 239 REAL, SAVE, PROTECTED :: gamma_snwretro = 0. ! Proportion of snow taken into account in ice retroaction in icefrac_turb [-]233 REAL, SAVE, PROTECTED :: gamma_snwretro = 0. ! Proportion of snow taken into account in ice retroaction in lscp_icefrac_turb [-] 240 234 !$OMP THREADPRIVATE(gamma_snwretro) 241 235 242 REAL, SAVE, PROTECTED :: gamma_taud = 1. ! Tuning coeff for tau_dissipturb [-]236 REAL, SAVE, PROTECTED :: gamma_taud = 1. ! Tuning coeff for Lagrangian decorrelation timescale in lscp_icefrac_turb [-] 243 237 !$OMP THREADPRIVATE(gamma_taud) 244 238 245 REAL, SAVE, PROTECTED :: gamma_col=1. ! A COMMENTER TODO[-]239 REAL, SAVE, PROTECTED :: gamma_col=1. ! Tuning coefficient for rain collection efficiency (poprecip) [-] 246 240 !$OMP THREADPRIVATE(gamma_col) 247 241 248 REAL, SAVE, PROTECTED :: gamma_agg=1. ! A COMMENTER TODO[-]242 REAL, SAVE, PROTECTED :: gamma_agg=1. ! Tuning coefficient for snow aggregation efficiency (poprecip) [-] 249 243 !$OMP THREADPRIVATE(gamma_agg) 250 244 251 REAL, SAVE, PROTECTED :: gamma_rim=1. ! A COMMENTER TODO[-]245 REAL, SAVE, PROTECTED :: gamma_rim=1. ! Tuning coefficient for riming efficiency (poprecip) [-] 252 246 !$OMP THREADPRIVATE(gamma_rim) 247 248 REAL, SAVE, PROTECTED :: gamma_melt=1. ! Tuning coefficient for snow melting efficiency (poprecip) [-] 249 !$OMP THREADPRIVATE(gamma_melt) 250 251 REAL, SAVE, PROTECTED :: gamma_freez=1. ! Tuning coefficient for rain collision freezing efficiency (poprecip) [-] 252 !$OMP THREADPRIVATE(gamma_freez) 253 253 254 254 REAL, SAVE, PROTECTED :: rho_rain=1000. ! Rain density [kg/m3] … … 258 258 !$OMP THREADPRIVATE(rho_ice) 259 259 260 REAL, SAVE, PROTECTED :: r_rain=500.E-6 ! Rain droplets radius for POPRECIP[m]260 REAL, SAVE, PROTECTED :: r_rain=500.E-6 ! Rain droplets radius (poprecip) [m] 261 261 !$OMP THREADPRIVATE(r_rain) 262 262 263 REAL, SAVE, PROTECTED :: r_snow=1.E-3 ! Ice crystals radius for POPRECIP[m]263 REAL, SAVE, PROTECTED :: r_snow=1.E-3 ! Ice crystals radius (poprecip) [m] 264 264 !$OMP THREADPRIVATE(r_snow) 265 265 266 REAL, SAVE, PROTECTED :: tau_auto_snow_min=100. ! A COMMENTER TODO[s]266 REAL, SAVE, PROTECTED :: tau_auto_snow_min=100. ! Snow autoconversion minimal timescale (when liquid) [s] 267 267 !$OMP THREADPRIVATE(tau_auto_snow_min) 268 268 269 REAL, SAVE, PROTECTED :: tau_auto_snow_max=1000. ! A COMMENTER TODO[s]269 REAL, SAVE, PROTECTED :: tau_auto_snow_max=1000. ! Snow autoconversion minimal timescale (when only ice) [s] 270 270 !$OMP THREADPRIVATE(tau_auto_snow_max) 271 271 272 REAL, SAVE, PROTECTED :: eps=1.E-10 ! A COMMENTER TODO[-]272 REAL, SAVE, PROTECTED :: eps=1.E-10 ! Treshold 0 [-] 273 273 !$OMP THREADPRIVATE(eps) 274 274 275 REAL, SAVE, PROTECTED :: gamma_melt=1. ! A COMMENTER TODO [-] 276 !$OMP THREADPRIVATE(gamma_melt) 277 278 REAL, SAVE, PROTECTED :: alpha_freez=4. ! A COMMENTER TODO [-] 275 REAL, SAVE, PROTECTED :: alpha_freez=4. ! Slope of exponential for immersion freezing timescale [-] 279 276 !$OMP THREADPRIVATE(alpha_freez) 280 277 281 REAL, SAVE, PROTECTED :: beta_freez=0.1 ! A COMMENTER TODO [m-3.s-1]278 REAL, SAVE, PROTECTED :: beta_freez=0.1 ! Inv.time immersion freezing [s-1] 282 279 !$OMP THREADPRIVATE(beta_freez) 283 280 284 REAL, SAVE, PROTECTED :: gamma_freez=1. ! A COMMENTER TODO [-] 285 !$OMP THREADPRIVATE(gamma_freez) 286 287 REAL, SAVE, PROTECTED :: rain_fallspeed=4. ! A COMMENTER TODO [m/s] 281 REAL, SAVE, PROTECTED :: rain_fallspeed=4. ! Rain fall velocity [m/s] 288 282 !$OMP THREADPRIVATE(rain_fallspeed) 289 283 290 REAL, SAVE, PROTECTED :: rain_fallspeed_clr ! A COMMENTER TODO[m/s]284 REAL, SAVE, PROTECTED :: rain_fallspeed_clr ! Rain fall velocity in clear sky [m/s] 291 285 !$OMP THREADPRIVATE(rain_fallspeed_clr) 292 286 293 REAL, SAVE, PROTECTED :: rain_fallspeed_cld ! A COMMENTER TODO[m/s]287 REAL, SAVE, PROTECTED :: rain_fallspeed_cld ! Rain fall velocity in cloudy sky [m/s] 294 288 !$OMP THREADPRIVATE(rain_fallspeed_cld) 295 289 296 REAL, SAVE, PROTECTED :: snow_fallspeed=1. ! A COMMENTER TODO[m/s]290 REAL, SAVE, PROTECTED :: snow_fallspeed=1. ! Snow fall velocity [m/s] 297 291 !$OMP THREADPRIVATE(snow_fallspeed) 298 292 299 REAL, SAVE, PROTECTED :: snow_fallspeed_clr ! A COMMENTER TODO[m/s]293 REAL, SAVE, PROTECTED :: snow_fallspeed_clr ! Snow fall velocity in clear sky [m/s] 300 294 !$OMP THREADPRIVATE(snow_fallspeed_clr) 301 295 302 REAL, SAVE, PROTECTED :: snow_fallspeed_cld ! A COMMENTER TODO[m/s]296 REAL, SAVE, PROTECTED :: snow_fallspeed_cld ! Snow fall velocity in cloudy sky [m/s] 303 297 !$OMP THREADPRIVATE(snow_fallspeed_cld) 304 298 !--End of the parameters for poprecip … … 386 380 CALL getin_p('dist_liq',dist_liq) 387 381 CALL getin_p('tresh_cl',tresh_cl) 388 CALL getin_p('tau_mixenv',tau_mixenv)389 382 CALL getin_p('capa_crystal',capa_crystal) 390 CALL getin_p('lmix_mpc',lmix_mpc)391 383 CALL getin_p('naero5',naero5) 392 384 CALL getin_p('gamma_snwretro',gamma_snwretro) … … 403 395 CALL getin_p('gamma_freez',gamma_freez) 404 396 CALL getin_p('gamma_melt',gamma_melt) 397 CALL getin_p('tau_auto_snow_max',tau_auto_snow_max) 398 CALL getin_p('tau_auto_snow_min',tau_auto_snow_min) 405 399 CALL getin_p('r_snow',r_snow) 406 400 CALL getin_p('rain_fallspeed',rain_fallspeed) … … 471 465 WRITE(lunout,*) 'lscp_ini, dist_liq', dist_liq 472 466 WRITE(lunout,*) 'lscp_ini, tresh_cl', tresh_cl 473 WRITE(lunout,*) 'lscp_ini, tau_mixenv', tau_mixenv474 467 WRITE(lunout,*) 'lscp_ini, capa_crystal', capa_crystal 475 WRITE(lunout,*) 'lscp_ini, lmix_mpc', lmix_mpc476 468 WRITE(lunout,*) 'lscp_ini, naero5', naero5 477 469 WRITE(lunout,*) 'lscp_ini, gamma_snwretro', gamma_snwretro … … 489 481 WRITE(lunout,*) 'lscp_ini, gamma_freez:', gamma_freez 490 482 WRITE(lunout,*) 'lscp_ini, gamma_melt:', gamma_melt 483 WRITE(lunout,*) 'lscp_ini, tau_auto_snow_max:',tau_auto_snow_max 484 WRITE(lunout,*) 'lscp_ini, tau_auto_snow_min:',tau_auto_snow_min 491 485 WRITE(lunout,*) 'lscp_ini, r_snow:', r_snow 492 486 WRITE(lunout,*) 'lscp_ini, rain_fallspeed_clr:', rain_fallspeed_clr -
LMDZ6/trunk/libf/phylmd/lmdz_lscp_tools.f90
r5285 r5383 240 240 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 241 241 242 SUBROUTINE ICEFRAC_LSCP_TURB(klon, dtime, temp, pplay, paprsdn, paprsup, qice_ini, snowcld, qtot_incl, cldfra, tke, tke_dissip, qliq, qvap_cld, qice, icefrac, dicefracdT, cldfraliq, sigma2_icefracturb, mean_icefracturb) 242 243 SUBROUTINE ICEFRAC_LSCP_TURB(klon, dtime, temp, pplay, paprsdn, paprsup, omega, qice_ini, snowcld, qtot_incl, cldfra, tke, & 244 tke_dissip, qliq, qvap_cld, qice, icefrac, dicefracdT, cldfraliq, sigma2_icefracturb, mean_icefracturb) 243 245 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 244 246 ! Compute the liquid, ice and vapour content (+ice fraction) based 245 247 ! on turbulence (see Fields 2014, Furtado 2016, Raillard 2025) 246 ! L.Raillard ( 30/08/24)248 ! L.Raillard (23/09/24) 247 249 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 248 250 … … 251 253 USE lmdz_lscp_ini, ONLY : RCPD, RLSTT, RLVTT, RLMLT, RVTMP2, RTT, RD, RG, RV, RPI 252 254 USE lmdz_lscp_ini, ONLY : seuil_neb, temp_nowater 253 USE lmdz_lscp_ini, ONLY : tau_mixenv, lmix_mpc,naero5, gamma_snwretro, gamma_taud, capa_crystal255 USE lmdz_lscp_ini, ONLY : naero5, gamma_snwretro, gamma_taud, capa_crystal 254 256 USE lmdz_lscp_ini, ONLY : eps 255 257 256 258 IMPLICIT NONE 257 259 258 INTEGER, INTENT(IN) :: klon !--number of horizontal grid points 259 REAL, INTENT(IN) :: dtime !--time step [s] 260 261 REAL, INTENT(IN), DIMENSION(klon) :: temp !--temperature 262 REAL, INTENT(IN), DIMENSION(klon) :: pplay !--pressure in the middle of the layer [Pa] 263 REAL, INTENT(IN), DIMENSION(klon) :: paprsdn !--pressure at the bottom interface of the layer [Pa] 264 REAL, INTENT(IN), DIMENSION(klon) :: paprsup !--pressure at the top interface of the layer [Pa] 265 REAL, INTENT(IN), DIMENSION(klon) :: qtot_incl !--specific total cloud water content, in-cloud content [kg/kg] 266 REAL, INTENT(IN), DIMENSION(klon) :: cldfra !--cloud fraction in gridbox [-] 267 REAL, INTENT(IN), DIMENSION(klon) :: tke !--turbulent kinetic energy [m2/s2] 268 REAL, INTENT(IN), DIMENSION(klon) :: tke_dissip !--TKE dissipation [m2/s3] 269 270 REAL, INTENT(IN), DIMENSION(klon) :: qice_ini !--initial specific ice content gridbox-mean [kg/kg] 260 INTEGER, INTENT(IN) :: klon !--number of horizontal grid points 261 REAL, INTENT(IN) :: dtime !--time step [s] 262 263 REAL, INTENT(IN), DIMENSION(klon) :: temp !--temperature 264 REAL, INTENT(IN), DIMENSION(klon) :: pplay !--pressure in the middle of the layer [Pa] 265 REAL, INTENT(IN), DIMENSION(klon) :: paprsdn !--pressure at the bottom interface of the layer [Pa] 266 REAL, INTENT(IN), DIMENSION(klon) :: paprsup !--pressure at the top interface of the layer [Pa] 267 REAL, INTENT(IN), DIMENSION(klon) :: omega !--resolved vertical velocity [Pa/s] 268 REAL, INTENT(IN), DIMENSION(klon) :: qtot_incl !--specific total cloud water in-cloud content [kg/kg] 269 REAL, INTENT(IN), DIMENSION(klon) :: cldfra !--cloud fraction in gridbox [-] 270 REAL, INTENT(IN), DIMENSION(klon) :: tke !--turbulent kinetic energy [m2/s2] 271 REAL, INTENT(IN), DIMENSION(klon) :: tke_dissip !--TKE dissipation [m2/s3] 272 273 REAL, INTENT(IN), DIMENSION(klon) :: qice_ini !--initial specific ice content gridbox-mean [kg/kg] 271 274 REAL, INTENT(IN), DIMENSION(klon) :: snowcld 272 REAL, INTENT(OUT), DIMENSION(klon) :: qliq !--specific liquid content gridbox-mean[kg/kg]273 REAL, INTENT(OUT), DIMENSION(klon) :: qvap_cld !--specific cloud vapor content, gridbox-mean[kg/kg]274 REAL, INTENT(OUT), DIMENSION(klon) :: qice !--specific ice content gridbox-mean[kg/kg]275 REAL, INTENT(OUT), DIMENSION(klon) :: icefrac !--fraction of ice in condensed water[-]275 REAL, INTENT(OUT), DIMENSION(klon) :: qliq !--specific liquid content gridbox-mean [kg/kg] 276 REAL, INTENT(OUT), DIMENSION(klon) :: qvap_cld !--specific cloud vapor content, gridbox-mean [kg/kg] 277 REAL, INTENT(OUT), DIMENSION(klon) :: qice !--specific ice content gridbox-mean [kg/kg] 278 REAL, INTENT(OUT), DIMENSION(klon) :: icefrac !--fraction of ice in condensed water [-] 276 279 REAL, INTENT(OUT), DIMENSION(klon) :: dicefracdT 277 280 278 REAL, INTENT(OUT), DIMENSION(klon) :: cldfraliq !--fraction of cldfra which is liquid only279 REAL, INTENT(OUT), DIMENSION(klon) :: sigma2_icefracturb !--Temporary280 REAL, INTENT(OUT), DIMENSION(klon) :: mean_icefracturb !--Temporary281 282 REAL, DIMENSION(klon) :: qzero, qsatl, dqsatl, qsati, dqsati !--specific humidity saturation values281 REAL, INTENT(OUT), DIMENSION(klon) :: cldfraliq !--fraction of cldfra where liquid [-] 282 REAL, INTENT(OUT), DIMENSION(klon) :: sigma2_icefracturb !--Sigma2 of the ice supersaturation PDF [-] 283 REAL, INTENT(OUT), DIMENSION(klon) :: mean_icefracturb !--Mean of the ice supersaturation PDF [-] 284 285 REAL, DIMENSION(klon) :: qzero, qsatl, dqsatl, qsati, dqsati !--specific humidity saturation values 283 286 INTEGER :: i 284 287 285 REAL :: qvap_incl, qice_incl, qliq_incl, qiceini_incl !--In-cloud specific quantities [kg/kg] 286 REAL :: qsnowcld_incl 287 !REAL :: capa_crystal !--Capacitance of ice crystals [-] 288 REAL :: water_vapor_diff !--Water-vapour diffusion coefficient in air [m2/s] (function of T&P) 289 REAL :: air_thermal_conduct !--Thermal conductivity of air [J/m/K/s] (function of T) 290 REAL :: C0 !--Lagrangian structure function [-] 291 REAL :: tau_mixingenv 288 REAL :: qvap_incl, qice_incl, qliq_incl, qiceini_incl !--In-cloud specific quantities [kg/kg] 289 REAL :: water_vapor_diff !--Water-vapour diffusion coeff in air (f(T,P)) [m2/s] 290 REAL :: air_thermal_conduct !--Thermal conductivity of air (f(T)) [J/m/K/s] 291 REAL :: C0 !--Lagrangian structure function [-] 292 292 REAL :: tau_dissipturb 293 REAL :: invtau_phaserelax293 REAL :: tau_phaserelax 294 294 REAL :: sigma2_pdf, mean_pdf 295 295 REAL :: ai, bi, B0 296 296 REAL :: sursat_iceliq 297 REAL :: sursat_e nv297 REAL :: sursat_equ 298 298 REAL :: liqfra_max 299 299 REAL :: sursat_iceext 300 REAL :: nb_crystals !--number concentration of ice crystals[#/m3]301 REAL :: moment1_PSD !--1st moment of ice PSD302 REAL :: N0_PSD, lambda_PSD !--parameters of the exponential PSD303 304 REAL :: rho_ice !--ice density[kg/m3]300 REAL :: nb_crystals !--number concentration of ice crystals [#/m3] 301 REAL :: moment1_PSD !--1st moment of ice PSD 302 REAL :: N0_PSD, lambda_PSD !--parameters of the exponential PSD 303 304 REAL :: rho_ice !--ice density [kg/m3] 305 305 REAL :: cldfra1D 306 REAL :: deltaz,rho_air307 REAL :: psati !--saturation vapor pressure wrt i[Pa]306 REAL :: rho_air 307 REAL :: psati !--saturation vapor pressure wrt ice [Pa] 308 308 309 C0 = 10. !--value assumed in Field2014 309 REAL :: vitw !--vertical velocity [m/s] 310 311 C0 = 10. !--value assumed in Field2014 310 312 rho_ice = 950. 311 313 sursat_iceext = -0.1 312 !capa_crystal = 1. !r_ice313 314 qzero(:) = 0. 314 315 cldfraliq(:) = 0. … … 317 318 318 319 sigma2_icefracturb(:) = 0. 319 mean_icefracturb(:) = 0.320 321 !--wrt liquid water320 mean_icefracturb(:) = 0. 321 322 !--wrt liquid 322 323 CALL calc_qsat_ecmwf(klon,temp(:),qzero(:),pplay(:),RTT,1,.false.,qsatl(:),dqsatl(:)) 323 324 !--wrt ice … … 327 328 DO i=1,klon 328 329 329 330 330 rho_air = pplay(i) / temp(i) / RD 331 !deltaz = ( paprsdn(i) - paprsup(i) ) / RG / rho_air(i) 331 332 332 ! because cldfra is intent in, but can be locally modified due to test 333 333 cldfra1D = cldfra(i) … … 364 364 dicefracdT(i) = 0. 365 365 366 ! MPC temperature 366 !--------------------------------------------------------- 367 !-- MIXED PHASE TEMPERATURE REGIME 368 !--------------------------------------------------------- 369 !--In the mixed phase regime (-38°C< T <0°C) we distinguish 370 !--3 possible subcases. 371 !--1. No pre-existing ice 372 !--2A. Pre-existing ice and no turbulence 373 !--2B. Pre-existing ice and turbulence 367 374 ELSE 368 ! Not enough TKE 369 IF ( tke_dissip(i) .LE. eps ) THEN 370 qvap_cld(i) = qsati(i) * cldfra1D 371 qliq(i) = 0. 372 qice(i) = MAX(0.,qtot_incl(i)-qsati(i)) * cldfra1D 373 cldfraliq(i) = 0. 374 icefrac(i) = 1. 375 dicefracdT(i) = 0. 375 376 vitw = -omega(i) / RG / rho_air 377 qiceini_incl = qice_ini(i) / cldfra1D + snowcld(i) * RG * dtime / ( paprsdn(i) - paprsup(i) ) / cldfra1D 378 379 !--1. No preexisting ice : if vertical motion, fully liquid 380 !--cloud else fully iced cloud 381 IF ( qiceini_incl .LT. eps ) THEN 382 IF ( (vitw .GT. eps) .OR. (tke(i) .GT. eps) ) THEN 383 qvap_cld(i) = qsatl(i) * cldfra1D 384 qliq(i) = MAX(0.,qtot_incl(i)-qsatl(i)) * cldfra1D 385 qice(i) = 0. 386 cldfraliq(i) = 1. 387 icefrac(i) = 0. 388 dicefracdT(i) = 0. 389 ELSE 390 qvap_cld(i) = qsati(i) * cldfra1D 391 qliq(i) = 0. 392 qice(i) = MAX(0.,qtot_incl(i)-qsati(i)) * cldfra1D 393 cldfraliq(i) = 0. 394 icefrac(i) = 1. 395 dicefracdT(i) = 0. 396 ENDIF 376 397 377 ! Enough TKE 378 ELSE 379 print*,"MOUCHOIRACTIVE" 380 !--------------------------------------------------------- 381 !-- ICE SUPERSATURATION PDF 382 !--------------------------------------------------------- 383 !--If -38°C< T <0°C and there is enough turbulence, 384 !--we compute the cloud liquid properties with a Gaussian PDF 385 !--of ice supersaturation F(Si) (Field2014, Furtado2016). 386 !--Parameters of the PDF are function of turbulence and 387 !--microphysics/existing ice. 398 399 !--2. Pre-existing ice :computation of ice properties for 400 !--feedback 401 ELSE 402 ai = RG / RD / temp(i) * ( RD * RLSTT / RCPD / RV / temp(i) - 1. ) 403 404 sursat_equ = ai * vitw * tau_phaserelax 388 405 389 406 sursat_iceliq = qsatl(i)/qsati(i) - 1. 390 407 psati = qsati(i) * pplay(i) / (RD/RV) 391 392 !-------------- MICROPHYSICAL TERMS -------------- 408 393 409 !--We assume an exponential ice PSD whose parameters 394 410 !--are computed following Morrison&Gettelman 2008 … … 399 415 !--tau_phase_relax is the typical time of vapor deposition 400 416 !--onto ice crystals 401 402 qiceini_incl = qice_ini(i) / cldfra1D 403 qsnowcld_incl = snowcld(i) * RG * dtime / ( paprsdn(i) - paprsup(i) ) / cldfra1D 404 sursat_env = max(0., (qtot_incl(i) - qiceini_incl)/qsati(i) - 1.) 405 IF ( qiceini_incl .GT. eps ) THEN 406 nb_crystals = 1.e3 * 5.94e-5 * ( RTT - temp(i) )**3.33 * naero5**(0.0264*(RTT-temp(i))+0.0033) 407 lambda_PSD = ( (RPI*rho_ice*nb_crystals) / (rho_air*(qiceini_incl + gamma_snwretro * qsnowcld_incl)) ) ** (1./3.) 408 N0_PSD = nb_crystals * lambda_PSD 409 moment1_PSD = N0_PSD/lambda_PSD**2 410 ELSE 411 moment1_PSD = 0. 412 ENDIF 417 418 nb_crystals = 1.e3 * 5.94e-5 * ( RTT - temp(i) )**3.33 * naero5**(0.0264*(RTT-temp(i))+0.0033) 419 lambda_PSD = ( (RPI*rho_ice*nb_crystals) / (rho_air * qiceini_incl ) ) ** (1./3.) 420 N0_PSD = nb_crystals * lambda_PSD 421 moment1_PSD = N0_PSD/lambda_PSD**2 413 422 414 423 !--Formulae for air thermal conductivity and water vapor diffusivity … … 422 431 B0 = 4. * RPI * capa_crystal * 1. / ( RLSTT**2 / air_thermal_conduct / RV / temp(i)**2 & 423 432 + RV * temp(i) / psati / water_vapor_diff ) 424 425 invtau_phaserelax = (bi * B0 * moment1_PSD ) 426 427 ! Old way of estimating moment1 : spherical crystals + monodisperse PSD 428 ! nb_crystals = rho_air * qiceini_incl / ( 4. / 3. * RPI * r_ice**3. * rho_ice ) 429 ! moment1_PSD = nb_crystals * r_ice 430 431 !----------------- TURBULENT SOURCE/SINK TERMS ----------------- 432 !--Tau_mixingenv is the time needed to homogeneize the parcel 433 !--with its environment by turbulent diffusion over the parcel 434 !--length scale 435 !--if lmix_mpc <0, tau_mixigenv value is prescribed 436 !--else tau_mixigenv value is derived from tke_dissip and lmix_mpc 437 !--Tau_dissipturb is the time needed turbulence to decay due to 438 !--viscosity 439 433 tau_phaserelax = 1. / (bi * B0 * moment1_PSD ) 434 440 435 ai = RG / RD / temp(i) * ( RD * RLSTT / RCPD / RV / temp(i) - 1. ) 441 IF ( lmix_mpc .GT. 0 ) THEN 442 tau_mixingenv = ( lmix_mpc**2. / tke_dissip(i) )**(1./3.) 443 ELSE 444 tau_mixingenv = tau_mixenv 445 ENDIF 446 447 tau_dissipturb = gamma_taud * 2. * 2./3. * tke(i) / tke_dissip(i) / C0 448 449 !--------------------- PDF COMPUTATIONS --------------------- 450 !--Formulae for sigma2_pdf (variance), mean of PDF in Furtado2016 451 !--cloud liquid fraction and in-cloud liquid content are given 452 !--by integrating resp. F(Si) and Si*F(Si) 453 !--Liquid is limited by the available water vapor trough a 454 !--maximal liquid fraction 455 456 liqfra_max = MAX(0., (MIN (1.,( qtot_incl(i) - qiceini_incl - qsati(i) * (1 + sursat_iceext ) ) / ( qsatl(i) - qsati(i) ) ) ) ) 457 sigma2_pdf = 1./2. * ( ai**2 ) * 2./3. * tke(i) * tau_dissipturb / ( invtau_phaserelax + 1./tau_mixingenv ) 458 mean_pdf = sursat_env * 1./tau_mixingenv / ( invtau_phaserelax + 1./tau_mixingenv ) 459 cldfraliq(i) = 0.5 * (1. - erf( ( sursat_iceliq - mean_pdf) / (SQRT(2.* sigma2_pdf) ) ) ) 460 IF (cldfraliq(i) .GT. liqfra_max) THEN 461 cldfraliq(i) = liqfra_max 462 ENDIF 463 464 qliq_incl = qsati(i) * SQRT(sigma2_pdf) / SQRT(2.*RPI) * EXP( -1.*(sursat_iceliq - mean_pdf)**2. / (2.*sigma2_pdf) ) & 465 - qsati(i) * cldfraliq(i) * (sursat_iceliq - mean_pdf ) 466 467 sigma2_icefracturb(i)= sigma2_pdf 468 mean_icefracturb(i) = mean_pdf 436 437 !--2A. No TKE : stationnary binary solution depending on omega 438 ! If Sequ > Siw liquid cloud, else ice cloud 439 IF ( tke_dissip(i) .LE. eps ) THEN 440 IF (sursat_equ .GT. sursat_iceliq) THEN 441 qvap_cld(i) = qsatl(i) * cldfra1D 442 qliq(i) = MAX(0.,qtot_incl(i)-qsatl(i)) * cldfra1D 443 qice(i) = 0. 444 cldfraliq(i) = 1. 445 icefrac(i) = 0. 446 dicefracdT(i) = 0. 447 ELSE 448 qvap_cld(i) = qsati(i) * cldfra1D 449 qliq(i) = 0. 450 qice(i) = MAX(0.,qtot_incl(i)-qsati(i)) * cldfra1D 451 cldfraliq(i) = 0. 452 icefrac(i) = 1. 453 dicefracdT(i) = 0. 454 ENDIF 455 456 !--2B. TKE and ice : ice supersaturation PDF 457 !--we compute the cloud liquid properties with a Gaussian PDF 458 !--of ice supersaturation F(Si) (Field2014, Furtado2016). 459 !--Parameters of the PDF are function of turbulence and 460 !--microphysics/existing ice. 461 ELSE 462 463 !--Tau_dissipturb is the time needed for turbulence to decay 464 !--due to viscosity 465 tau_dissipturb = gamma_taud * 2. * 2./3. * tke(i) / tke_dissip(i) / C0 466 467 !--------------------- PDF COMPUTATIONS --------------------- 468 !--Formulae for sigma2_pdf (variance), mean of PDF in Raillard2025 469 !--cloud liquid fraction and in-cloud liquid content are given 470 !--by integrating resp. F(Si) and Si*F(Si) 471 !--Liquid is limited by the available water vapor trough a 472 !--maximal liquid fraction 473 !--qice_ini(i) / cldfra1D = qiceincld without precip 474 475 liqfra_max = MAX(0., (MIN (1.,( qtot_incl(i) - (qice_ini(i) / cldfra1D) - qsati(i) * (1 + sursat_iceext ) ) / ( qsatl(i) - qsati(i) ) ) ) ) 476 sigma2_pdf = 1./2. * ( ai**2 ) * 2./3. * tke(i) * tau_dissipturb * tau_phaserelax 477 478 mean_pdf = ai * vitw * tau_phaserelax 479 480 cldfraliq(i) = 0.5 * (1. - erf( ( sursat_iceliq - mean_pdf) / (SQRT(2.* sigma2_pdf) ) ) ) 481 IF (cldfraliq(i) .GT. liqfra_max) THEN 482 cldfraliq(i) = liqfra_max 483 ENDIF 484 485 qliq_incl = qsati(i) * SQRT(sigma2_pdf) / SQRT(2.*RPI) * EXP( -1.*(sursat_iceliq - mean_pdf)**2. / (2.*sigma2_pdf) ) & 486 - qsati(i) * cldfraliq(i) * (sursat_iceliq - mean_pdf ) 487 488 sigma2_icefracturb(i)= sigma2_pdf 489 mean_icefracturb(i) = mean_pdf 469 490 470 !------------ SPECIFIC VAPOR CONTENT AND WATER CONSERVATION ------------471 472 IF ( (qliq_incl .LE. eps) .OR. (cldfraliq(i) .LE. eps) ) THEN473 qliq_incl = 0.474 cldfraliq(i) = 0.475 END IF476 477 !--Specific humidity is the max between qsati and the weighted mean between478 !--qv in MPC patches and qv in ice-only parts. We assume that MPC parts are479 !--always at qsatl and ice-only parts slightly subsaturated (qsati*sursat_iceext+1)480 !--The whole cloud can therefore be supersaturated but never subsaturated.481 482 qvap_incl = MAX(qsati(i), ( 1. - cldfraliq(i) ) * (sursat_iceext + 1.) * qsati(i) + cldfraliq(i) * qsatl(i) )483 484 485 IF ( qvap_incl .GE. qtot_incl(i) ) THEN486 qvap_incl = qsati(i)487 qliq_incl = qtot_incl(i) - qvap_incl488 qice_incl = 0. 489 490 ELSEIF ( (qvap_incl + qliq_incl) .GE. qtot_incl(i) ) THEN491 qliq_incl = MAX(0.0,qtot_incl(i) - qvap_incl)492 qice_incl = 0.493 ELSE494 qice_incl = qtot_incl(i) - qvap_incl - qliq_incl495 END IF 496 497 qvap_cld(i) = qvap_incl * cldfra1D498 qliq(i) = qliq_incl * cldfra1D499 qice(i) = qice_incl * cldfra1D500 icefrac(i) = qice(i) / ( qice(i) + qliq(i) )501 dicefracdT(i) = 0. 502 !print*,'MPC turb'503 504 END IF ! En ough TKE491 !------------ SPECIFIC VAPOR CONTENT AND WATER CONSERVATION ------------ 492 493 IF ( (qliq_incl .LE. eps) .OR. (cldfraliq(i) .LE. eps) ) THEN 494 qliq_incl = 0. 495 cldfraliq(i) = 0. 496 END IF 497 498 !--Specific humidity is the max between qsati and the weighted mean between 499 !--qv in MPC patches and qv in ice-only parts. We assume that MPC parts are 500 !--always at qsatl and ice-only parts slightly subsaturated (qsati*sursat_iceext+1) 501 !--The whole cloud can therefore be supersaturated but never subsaturated. 502 503 qvap_incl = MAX(qsati(i), ( 1. - cldfraliq(i) ) * (sursat_iceext + 1.) * qsati(i) + cldfraliq(i) * qsatl(i) ) 504 505 IF ( qvap_incl .GE. qtot_incl(i) ) THEN 506 qvap_incl = qsati(i) 507 qliq_incl = qtot_incl(i) - qvap_incl 508 qice_incl = 0. 509 510 ELSEIF ( (qvap_incl + qliq_incl) .GE. qtot_incl(i) ) THEN 511 qliq_incl = MAX(0.0,qtot_incl(i) - qvap_incl) 512 qice_incl = 0. 513 ELSE 514 qice_incl = qtot_incl(i) - qvap_incl - qliq_incl 515 END IF 516 517 qvap_cld(i) = qvap_incl * cldfra1D 518 qliq(i) = qliq_incl * cldfra1D 519 qice(i) = qice_incl * cldfra1D 520 icefrac(i) = qice(i) / ( qice(i) + qliq(i) ) 521 dicefracdT(i) = 0. 522 523 END IF ! Enough TKE 524 525 END IF ! End qini 505 526 506 527 END IF ! ! MPC temperature … … 510 531 ENDDO ! klon 511 532 END SUBROUTINE ICEFRAC_LSCP_TURB 533 ! 512 534 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 513 535 -
LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90
r5253 r5383 1540 1540 TYPE(ctrl_out), SAVE :: o_ocond = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11, 11/), & 1541 1541 'ocond', 'Condensed water', 'kg/kg', (/ ('', i=1, 10) /)) 1542 TYPE(ctrl_out), SAVE :: o_oice = ctrl_out((/ 2, 3, 4, 10, 10, 10, 11, 11, 11, 11/), & 1543 'oice', 'Ice water', 'kg/kg', (/ ('', i=1, 10) /)) 1542 1544 TYPE(ctrl_out), SAVE :: o_qbs = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11, 11/), & 1543 1545 'qbs', 'Specific content of blowing snow', 'kg/kg', (/ ('', i=1, 10) /)) -
LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90
r5363 r5383 138 138 o_cldicemxrat, o_cldwatmxrat, o_reffclwtop, o_ec550aer, & 139 139 o_lwcon, o_iwcon, o_temp, o_theta, & 140 o_ovapinit, o_ovap, o_oliq, o_ocond, o_ geop,o_qbs, &140 o_ovapinit, o_ovap, o_oliq, o_ocond, o_oice, o_geop,o_qbs, & 141 141 o_vitu, o_vitv, o_vitw, o_pres, o_paprs, & 142 142 o_zfull, o_zhalf, o_rneb, o_rnebjn, o_rnebcon, & … … 1997 1997 IF (vars_defined) zx_tmp_fi3d = ql_seri+qs_seri 1998 1998 CALL histwrite_phy(o_ocond, zx_tmp_fi3d) 1999 2000 IF (vars_defined) zx_tmp_fi3d = qs_seri 2001 CALL histwrite_phy(o_oice, zx_tmp_fi3d) 1999 2002 2000 2003 CALL histwrite_phy(o_geop, zphi) -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r5345 r5383 1243 1243 !albedo SB <<< 1244 1244 1245 !--Lea Raillard qs_ini1246 REAL, dimension(klon,klev) :: qs_ini1247 1248 1245 !--OB variables for mass fixer (hard coded for now) 1249 1246 REAL qql1(klon),qql2(klon),corrqql … … 2434 2431 ENDDO 2435 2432 ENDDO 2436 ! Lea Raillard qs_ini for cloud phase param.2437 qs_ini(:,:)=qs_seri(:,:)2438 2433 ! 2439 2434 !--OB water mass fixer … … 2654 2649 ratio_qi_qtot(i,k) = 0. 2655 2650 rvc_seri(i,k) = 0. 2651 ENDIF 2652 ENDDO 2653 ENDDO 2654 ELSE 2655 DO k = 1, klev 2656 DO i = 1, klon 2657 IF ( ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) ) .GT. 0. ) THEN 2658 ratio_qi_qtot(i,k) = qs_seri(i,k) / ( q_seri(i,k) + ql_seri(i,k) + qs_seri(i,k) ) 2659 ELSE 2660 ratio_qi_qtot(i,k) = 0. 2656 2661 ENDIF 2657 2662 ENDDO … … 3832 3837 !ENDIF 3833 3838 3834 CALL lscp(klon,klev,phys_tstep,missing_val,paprs,pplay, &3835 t_seri, q_seri, qs_ini,ptconv,ratqs,sigma_qtherm, &3839 CALL lscp(klon,klev,phys_tstep,missing_val,paprs,pplay,omega, & 3840 t_seri, q_seri, ptconv, ratqs, sigma_qtherm, & 3836 3841 d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneblsvol, & 3837 3842 pfraclr, pfracld, cldfraliq, sigma2_icefracturb, mean_icefracturb, & -
LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
r5326 r5383 5065 5065 !ENDIF 5066 5066 5067 CALL lscp(klon,klev,phys_tstep,missing_val,paprs,pplay, &5068 t_seri, q_seri, qs_ini,ptconv,ratqs,sigma_qtherm, &5069 d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneblsvol, & 5067 CALL lscp(klon,klev,phys_tstep,missing_val,paprs,pplay,omega, & 5068 t_seri, q_seri, ptconv, ratqs, sigma_qtherm, & 5069 d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneblsvol, & 5070 5070 pfraclr, pfracld, cldfraliq, sigma2_icefracturb, mean_icefracturb, & 5071 5071 radocond, picefra, rain_lsc, snow_lsc, & … … 5073 5073 prfl, psfl, rhcl, & 5074 5074 zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cld_th, & 5075 iflag_ice_thermo, distcltop, temp_cltop, &5075 iflag_ice_thermo, distcltop, temp_cltop, & 5076 5076 pbl_tke(:,:,is_ave), pbl_eps(:,:,is_ave), & 5077 5077 cell_area, &
Note: See TracChangeset
for help on using the changeset viewer.