Changeset 4380
- Timestamp:
- Jan 11, 2023, 10:45:36 AM (2 years ago)
- Location:
- LMDZ6/trunk/libf
- Files:
-
- 2 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/cloudth_mod.F90
r4260 r4380 1538 1538 1539 1539 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1540 SUBROUTINE cloudth_mpc(klon,klev,ind2, mpc_bl_points,&1540 SUBROUTINE cloudth_mpc(klon,klev,ind2,iflag_mpc_bl,mpc_bl_points, & 1541 1541 & temp,ztv,po,zqta,fraca,zpspsk,paprs,pplay,ztla,zthl, & 1542 1542 & ratqs,zqs,snowflux,qcloud,qincloud,icefrac,ctot,ctot_vol) … … 1586 1586 REAL, DIMENSION(klon), INTENT(IN) :: zqs ! Saturation specific humidity in the mesh [kg/kg] 1587 1587 REAL, DIMENSION(klon,klev+1), INTENT(IN) :: snowflux ! snow flux at the interface of the layer [kg/m2/s] 1588 INTEGER, INTENT(IN) :: iflag_mpc_bl ! option flag for mpc boundary layer clouds param. 1589 1588 1590 1589 1591 INTEGER, DIMENSION(klon,klev), INTENT(INOUT) :: mpc_bl_points ! grid points with convective (thermals) mixed phase clouds -
LMDZ6/trunk/libf/phylmd/conf_phys_m.F90
r4352 r4380 185 185 REAL,SAVE :: t_glace_min_omp, t_glace_max_omp 186 186 REAL,SAVE :: exposant_glace_omp 187 INTEGER,SAVE :: iflag_gammasat_omp , iflag_mpc_bl_omp187 INTEGER,SAVE :: iflag_gammasat_omp 188 188 REAL,SAVE :: rei_min_omp, rei_max_omp 189 189 INTEGER,SAVE :: iflag_sic_omp, iflag_inertie_omp … … 255 255 LOGICAL, SAVE :: ok_new_lscp_omp 256 256 LOGICAL, SAVE :: ok_icefra_lscp_omp 257 LOGICAL, SAVE :: ok_radliq_snow_omp258 257 259 258 … … 1429 1428 1430 1429 ! 1431 !Config Key = iflag_mpc_bl1432 !Config Desc =1433 !Config Def = 01434 !Config Help =1435 !1436 iflag_mpc_bl_omp=01437 CALL getin('iflag_mpc_bl',iflag_mpc_bl_omp)1438 1439 1440 1441 !1442 1430 !Config Key = iflag_t_glace 1443 1431 !Config Desc = … … 2352 2340 !Config Help = ... 2353 2341 2354 2355 ok_radliq_snow_omp = .FALSE.2356 CALL getin('ok_radliq_snow', ok_radliq_snow_omp)2357 !2358 !Config Key = ok_radliq_snow_omp2359 !Config Desc = take into account snowfall for radiation2360 !Config Def = .FALSE.2361 !Config Help = ...2362 2342 2363 2343 ecrit_LES_omp = 1./8. … … 2478 2458 exposant_glace = exposant_glace_omp 2479 2459 iflag_gammasat=iflag_gammasat_omp 2480 iflag_mpc_bl=iflag_mpc_bl_omp2481 2460 iflag_t_glace = iflag_t_glace_omp 2482 2461 iflag_cloudth_vert=iflag_cloudth_vert_omp … … 2688 2667 ok_new_lscp = ok_new_lscp_omp 2689 2668 ok_icefra_lscp=ok_icefra_lscp_omp 2690 ok_radliq_snow=ok_radliq_snow_omp2691 2669 read_fco2_ocean_cor = read_fco2_ocean_cor_omp 2692 2670 var_fco2_ocean_cor = var_fco2_ocean_cor_omp … … 2911 2889 WRITE(lunout,*) ' exposant_glace = ',exposant_glace 2912 2890 WRITE(lunout,*) ' iflag_gammasat = ',iflag_gammasat 2913 WRITE(lunout,*) ' iflag_mpc_bl = ',iflag_mpc_bl2914 2891 WRITE(lunout,*) ' iflag_t_glace = ',iflag_t_glace 2915 2892 WRITE(lunout,*) ' iflag_cloudth_vert = ',iflag_cloudth_vert … … 3030 3007 WRITE(lunout,*) ' ok_new_lscp = ', ok_new_lscp 3031 3008 WRITE(lunout,*) ' ok_icefra_lscp = ', ok_icefra_lscp 3032 WRITE(lunout,*) ' ok_radliq_snow = ', ok_radliq_snow3033 3009 WRITE(lunout,*) ' read_climoz = ', read_climoz 3034 3010 WRITE(lunout,*) ' carbon_cycle_tr = ', carbon_cycle_tr -
LMDZ6/trunk/libf/phylmd/fisrtilp.F90
r4260 r4380 89 89 ! Coeffients de fraction lessivee : pour OFF-LINE 90 90 ! 91 REAL, DIMENSION(klon,klev), INTENT( OUT) :: pfrac_nucl92 REAL, DIMENSION(klon,klev), INTENT( OUT) :: pfrac_1nucl93 REAL, DIMENSION(klon,klev), INTENT( OUT) :: pfrac_impa91 REAL, DIMENSION(klon,klev), INTENT(INOUT) :: pfrac_nucl 92 REAL, DIMENSION(klon,klev), INTENT(INOUT) :: pfrac_1nucl 93 REAL, DIMENSION(klon,klev), INTENT(INOUT) :: pfrac_impa 94 94 ! 95 95 ! Fraction d'aerosols lessivee par impaction et par nucleation -
LMDZ6/trunk/libf/phylmd/lscp_mod.F90
r4226 r4380 1 MODULE LSCP_mod1 MODULE lscp_mod 2 2 3 3 IMPLICIT NONE … … 6 6 7 7 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 8 SUBROUTINE LSCP(dtime,missing_val,&8 SUBROUTINE lscp(klon,klev,dtime,missing_val, & 9 9 paprs,pplay,t,q,ptconv,ratqs, & 10 d_t, d_q, d_ql, d_qi, rneb, rneb _seri,&10 d_t, d_q, d_ql, d_qi, rneb, rneblsvol, rneb_seri, & 11 11 radliq, radicefrac, rain, snow, & 12 pfrac_impa, pfrac_nucl, pfrac_1nucl, &13 12 frac_impa, frac_nucl, beta, & 14 13 prfl, psfl, rhcl, zqta, fraca, & 15 14 ztv, zpspsk, ztla, zthl, iflag_cld_th, & 16 iflag_ice_thermo, ok_ice_sursat) 15 iflag_ice_thermo, ok_ice_sursat, qsatl, qsats, & 16 qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss, & 17 Tcontr, qcontr, qcontr2, fcontrN, fcontrP) 17 18 18 19 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ … … 28 29 ! and 'ilp' (il pleut, L. Li) 29 30 ! 30 ! Compared to fisrtilp, LSCP31 ! Compared to the original fisrtilp code, lscp 31 32 ! -> assumes thermcep = .TRUE. all the time (fisrtilp inconsistent when .FALSE.) 32 33 ! -> consider always precipitation thermalisation (fl_cor_ebil>0) … … 76 77 ! cldliq(physiq)=radliq(fisrt)=lwcon(nc)+iwcon(nc) 77 78 ! 78 ! Physics/Dynamics:79 ! ql_seri(physiq)+qs_seri(physiq)=ocond(nc)80 !81 79 ! Notetheless, be aware of: 82 80 ! … … 87 85 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 88 86 ! 89 USE dimphy90 87 USE print_control_mod, ONLY: prt_level, lunout 91 USE cloudth_mod 92 USE ioipsl_getin_p_mod, ONLY : getin_p 93 USE phys_local_var_mod, ONLY: ql_seri,qs_seri 94 USE phys_local_var_mod, ONLY: rneblsvol 95 USE lscp_tools_mod, ONLY : CALC_QSAT_ECMWF, ICEFRAC_LSCP, CALC_GAMMASAT, FALLICE_VELOCITY 96 USE ice_sursat_mod 97 !--ice supersaturation 98 USE phys_local_var_mod, ONLY: zqsats, zqsatl 99 USE phys_local_var_mod, ONLY: qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss 100 USE phys_local_var_mod, ONLY: Tcontr, qcontr, qcontr2, fcontrN, fcontrP 88 USE cloudth_mod, ONLY : cloudth, cloudth_v3, cloudth_v6, cloudth_mpc 89 USE lscp_tools_mod, ONLY : calc_qsat_ecmwf, icefrac_lscp, calc_gammasat, fallice_velocity 90 USE ice_sursat_mod, ONLY : ice_sursat 91 92 USE lscp_ini_mod, ONLY : seuil_neb, ninter, iflag_evap_prec, t_coup, DDT0, ztfondue, rain_int_min 93 USE lscp_ini_mod, ONLY : iflag_mpc_bl, ok_radliq_snow, a_tr_sca 94 101 95 102 96 IMPLICIT NONE 103 97 104 98 !=============================================================================== 105 ! VARIABLE DECLARATION99 ! VARIABLES DECLARATION 106 100 !=============================================================================== 107 101 108 102 include "YOMCST.h" 109 103 include "YOETHF.h" 110 include "FCTTRE.h"111 104 include "fisrtilp.h" 112 105 include "nuage.h" … … 115 108 !----------------- 116 109 110 INTEGER, INTENT(IN) :: klon,klev ! number of horizontal grid points and vertical levels 117 111 REAL, INTENT(IN) :: dtime ! time step [s] 118 REAL, INTENT(IN):: missing_val ! missing value for output112 REAL, INTENT(IN) :: missing_val ! missing value for output 119 113 120 114 REAL, DIMENSION(klon,klev+1), INTENT(IN) :: paprs ! inter-layer pressure [Pa] 121 115 REAL, DIMENSION(klon,klev), INTENT(IN) :: pplay ! mid-layer pressure [Pa] 122 116 REAL, DIMENSION(klon,klev), INTENT(IN) :: t ! temperature (K) 123 REAL, DIMENSION(klon,klev), INTENT(IN) :: q ! specific humidity [kg/kg] 117 REAL, DIMENSION(klon,klev), INTENT(IN) :: q ! specific humidity [kg/kg] 124 118 INTEGER, INTENT(IN) :: iflag_cld_th ! flag that determines the distribution of convective clouds 125 119 INTEGER, INTENT(IN) :: iflag_ice_thermo! flag to activate the ice thermodynamics … … 143 137 144 138 REAL, DIMENSION(klon,klev), INTENT(INOUT):: ratqs ! function of pressure that sets the large-scale 139 REAL, DIMENSION(klon,klev), INTENT(INOUT):: beta ! conversion rate of condensed water 140 145 141 146 142 ! Input sursaturation en glace … … 155 151 REAL, DIMENSION(klon,klev), INTENT(OUT) :: d_qi ! cloud ice mass increment [kg/kg] 156 152 REAL, DIMENSION(klon,klev), INTENT(OUT) :: rneb ! cloud fraction [-] 153 REAL, DIMENSION(klon,klev), INTENT(OUT) :: rneblsvol ! cloud fraction per unit volume [-] 157 154 REAL, DIMENSION(klon,klev), INTENT(OUT) :: radliq ! condensed water used in the radiation scheme [kg/kg] 158 155 REAL, DIMENSION(klon,klev), INTENT(OUT) :: radicefrac ! ice fraction of condensed water for radiation scheme … … 160 157 REAL, DIMENSION(klon), INTENT(OUT) :: rain ! large-scale rainfall [kg/s/m2] 161 158 REAL, DIMENSION(klon), INTENT(OUT) :: snow ! large-scale snowfall [kg/s/m2] 159 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qsatl ! saturation specific humidity wrt liquid [kg/kg] 160 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qsats ! saturation specific humidity wrt ice [kg/kg] 162 161 REAL, DIMENSION(klon,klev+1), INTENT(OUT) :: prfl ! large-scale rainfall flux in the column [kg/s/m2] 163 162 REAL, DIMENSION(klon,klev+1), INTENT(OUT) :: psfl ! large-scale snowfall flux in the column [kg/s/m2] 164 163 165 ! cofficients of scavenging fraction (for off-line)166 167 REAL, DIMENSION(klon,klev), INTENT(OUT) :: pfrac_nucl ! scavenging fraction due tu nucleation [-]168 REAL, DIMENSION(klon,klev), INTENT(OUT) :: pfrac_1nucl ! scavenging fraction due tu nucleation with a -1 factor [-]169 REAL, DIMENSION(klon,klev), INTENT(OUT) :: pfrac_impa ! scavening fraction due to impaction [-]170 171 164 ! fraction of aerosol scavenging through impaction and nucleation (for on-line) 172 165 … … 174 167 REAL, DIMENSION(klon,klev), INTENT(OUT) :: frac_nucl ! scavenging fraction due tu nucleation [-] 175 168 176 ! PROGRAM PARAMETERS: 177 !-------------------- 169 ! for supersaturation and contrails parameterisation 178 170 179 REAL, SAVE :: seuil_neb=0.001 ! cloud fraction threshold: a cloud really exists when exceeded 180 !$OMP THREADPRIVATE(seuil_neb) 181 182 INTEGER, SAVE :: ninter=5 ! number of iterations to calculate autoconversion to precipitation 183 !$OMP THREADPRIVATE(ninter) 184 185 INTEGER,SAVE :: iflag_evap_prec=1 ! precipitation evaporation flag. 0: nothing, 1: "old way", 186 ! 2: Max cloud fraction above to calculate the max of reevaporation 187 ! 4: LTP'method i.e. evaporation in the clear-sky fraction of the mesh only 188 !$OMP THREADPRIVATE(iflag_evap_prec) 189 190 REAL t_coup ! temperature threshold which determines the phase 191 PARAMETER (t_coup=234.0) ! for which the saturation vapor pressure is calculated 192 193 REAL DDT0 ! iteration parameter 194 PARAMETER (DDT0=.01) 195 196 REAL ztfondue ! parameter to calculate melting fraction of precipitation 197 PARAMETER (ztfondue=278.15) 198 199 REAL, SAVE :: rain_int_min=0.001 ! Minimum local rain intensity [mm/s] before the decrease in associated precipitation fraction 200 !$OMP THREADPRIVATE(rain_int_min) 201 171 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qclr ! specific total water content in clear sky region [kg/kg] 172 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qcld ! specific total water content in cloudy region [kg/kg] 173 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qss ! specific total water content in supersat region [kg/kg] 174 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qvc ! specific vapor content in clouds [kg/kg] 175 REAL, DIMENSION(klon,klev), INTENT(OUT) :: rnebclr ! mesh fraction of clear sky [-] 176 REAL, DIMENSION(klon,klev), INTENT(OUT) :: rnebss ! mesh fraction of ISSR [-] 177 REAL, DIMENSION(klon,klev), INTENT(OUT) :: gamma_ss ! coefficient governing the ice nucleation RHi threshold [-] 178 REAL, DIMENSION(klon,klev), INTENT(OUT) :: Tcontr ! ? 179 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qcontr ! ? 180 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qcontr2 ! ? 181 REAL, DIMENSION(klon,klev), INTENT(OUT) :: fcontrN ! ? 182 REAL, DIMENSION(klon,klev), INTENT(OUT) :: fcontrP ! ? 183 202 184 203 185 ! LOCAL VARIABLES: 204 186 !---------------- 205 206 187 207 188 REAL qsl(klon), qsi(klon) … … 236 217 ! Variables precipitation energy conservation 237 218 REAL zmqc(klon) 238 ! Variables for tracers239 ! temporary: alpha parameter for scavenging240 ! 4 possible scavenging processes241 REAL,SAVE :: a_tr_sca(4)242 !$OMP THREADPRIVATE(a_tr_sca)243 219 REAL zalpha_tr 244 220 REAL zfrac_lessi 245 221 REAL zprec_cond(klon) 246 REAL beta(klon,klev) ! conversion rate of condensed water247 222 REAL zmair(klon), zcpair, zcpeau 248 223 REAL zlh_solid(klon), zm_solid ! for liquid -> solid conversion … … 262 237 INTEGER ncoreczq 263 238 INTEGER mpc_bl_points(klon,klev) 264 INTEGER,SAVE :: itap=0265 !$OMP THREADPRIVATE(itap)266 239 267 240 LOGICAL lognormale(klon) … … 291 264 ENDIF 292 265 293 IF (.NOT.thermcep) THEN294 abort_message = 'lscp cannot be used when thermcep=false'295 CALL abort_physic(modname,abort_message,1)296 ENDIF297 298 266 IF (iflag_fisrtilp_qsat .LT. 0) THEN 299 267 abort_message = 'lscp cannot be used with iflag_fisrtilp<0' … … 303 271 ! Few initialisations 304 272 305 itap=itap+1306 273 znebprecip(:)=0.0 307 274 ctot_vol(1:klon,1:klev)=0.0 … … 314 281 IF (prt_level>9) WRITE(lunout,*) 'NUAGES4 A. JAM' 315 282 316 IF (appel1er) THEN317 CALL getin_p('ninter',ninter)318 CALL getin_p('iflag_evap_prec',iflag_evap_prec)319 CALL getin_p('seuil_neb',seuil_neb)320 CALL getin_p('rain_int_min',rain_int_min)321 WRITE(lunout,*) 'lscp, ninter:', ninter322 WRITE(lunout,*) 'lscp, iflag_evap_prec:', iflag_evap_prec323 WRITE(lunout,*) 'lscp, seuil_neb:', seuil_neb324 WRITE(lunout,*) 'lscp, rain_int_min:', rain_int_min325 326 ! check for precipitation sub-time steps327 IF (ABS(dtime/REAL(ninter)-360.0).GT.0.001) THEN328 WRITE(lunout,*) 'lscp: it is not expected, see Z.X.Li', dtime329 WRITE(lunout,*) 'I would prefer a 6 min sub-timestep'330 ENDIF331 332 !AA Temporary initialisation333 a_tr_sca(1) = -0.5334 a_tr_sca(2) = -0.5335 a_tr_sca(3) = -0.5336 a_tr_sca(4) = -0.5337 338 !AA Set scavenged fractions to 1339 DO k = 1, klev340 DO i = 1, klon341 pfrac_nucl(i,k)=1.0342 pfrac_1nucl(i,k)=1.0343 pfrac_impa(i,k)=1.0344 beta(i,k)=0.0345 ENDDO346 ENDDO347 348 IF (ok_ice_sursat) CALL ice_sursat_init()349 350 appel1er = .FALSE.351 352 ENDIF !(appel1er)353 354 283 ! AA for 'safety' reasons 355 284 zalpha_tr = 0. 356 285 zfrac_lessi = 0. 357 358 ! Initialisation of output variables (JYG): 286 beta(:,:)= 0. 287 288 ! Initialisation of variables: 289 359 290 prfl(:,:) = 0.0 360 291 psfl(:,:) = 0.0 361 362 292 d_t(:,:) = 0.0 363 293 d_q(:,:) = 0.0 … … 369 299 frac_nucl(:,:) = 1.0 370 300 frac_impa(:,:) = 1.0 371 372 301 rain(:) = 0.0 373 302 snow(:) = 0.0 … … 390 319 qzero(:) = 0.0 391 320 392 !--ice su rsaturation321 !--ice supersaturation 393 322 gamma_ss(:,:) = 1.0 394 323 qss(:,:) = 0.0 … … 426 355 ! --------------------------------------------------------------------- 427 356 428 IF (k.LE.klev m1) THEN357 IF (k.LE.klev-1) THEN 429 358 430 359 DO i = 1, klon … … 465 394 ! Calculation of saturation specific humidity 466 395 ! depending on temperature: 467 CALL CALC_QSAT_ECMWF(klon,zt(:),qzero(:),pplay(:,k),RTT,0,.false.,zqs(:),zdqs(:))396 CALL calc_qsat_ecmwf(klon,zt(:),qzero(:),pplay(:,k),RTT,0,.false.,zqs(:),zdqs(:)) 468 397 ! wrt liquid water 469 CALL CALC_QSAT_ECMWF(klon,zt(:),qzero(:),pplay(:,k),RTT,1,.false.,qsl(:),dqsl(:))398 CALL calc_qsat_ecmwf(klon,zt(:),qzero(:),pplay(:,k),RTT,1,.false.,qsl(:),dqsl(:)) 470 399 ! wrt ice 471 CALL CALC_QSAT_ECMWF(klon,zt(:),qzero(:),pplay(:,k),RTT,2,.false.,qsi(:),dqsi(:))400 CALL calc_qsat_ecmwf(klon,zt(:),qzero(:),pplay(:,k),RTT,2,.false.,qsi(:),dqsi(:)) 472 401 473 402 DO i = 1, klon … … 626 555 627 556 qtot(:)=zq(:)+zmqc(:) 628 CALL CALC_QSAT_ECMWF(klon,zt(:),qtot(:),pplay(:,k),RTT,0,.false.,zqs(:),zdqs(:))557 CALL calc_qsat_ecmwf(klon,zt(:),qtot(:),pplay(:,k),RTT,0,.false.,zqs(:),zdqs(:)) 629 558 DO i = 1, klon 630 559 zdelta = MAX(0.,SIGN(1.,RTT-zt(i))) … … 691 620 ! + stationary mixed-phase cloud model 692 621 693 CALL cloudth_mpc(klon,klev,k, mpc_bl_points,&622 CALL cloudth_mpc(klon,klev,k,iflag_mpc_bl,mpc_bl_points, & 694 623 t,ztv,zq,zqta,fraca, zpspsk, & 695 624 paprs,pplay,ztla,zthl,ratqs,zqs,psfl, & … … 761 690 ENDDO 762 691 763 ! Calculation of saturation specific humidity and ce fraction692 ! Calculation of saturation specific humidity and ice fraction 764 693 CALL calc_qsat_ecmwf(klon,Tbef(:),qtot(:),pplay(:,k),RTT,0,.false.,zqs(:),zdqs(:)) 765 694 CALL calc_gammasat(klon,Tbef(:),qtot(:),pplay(:,k),gammasat(:),dgammasatdt(:)) … … 975 904 ENDDO 976 905 977 ! -------------------------------------------------------------------------------978 906 ! Autoconversion 979 907 ! ------------------------------------------------------------------------------- … … 1052 980 1053 981 DO i = 1, klon 1054 1055 ziflprev(i)=zifl(i) 982 983 IF (iflag_evap_prec.EQ.4) THEN 984 ziflprev(i)=ziflcld(i) 985 ELSE 986 ziflprev(i)=zifl(i)*zneb(i) 987 ENDIF 1056 988 1057 989 IF (rneb(i,k) .GT. 0.0) THEN … … 1200 1132 1201 1133 zfrac_lessi = 1. - EXP(zalpha_tr*zprec_cond(i)/zneb(i)) 1202 pfrac_nucl(i,k)=pfrac_nucl(i,k)*(1.-zneb(i)*zfrac_lessi)1203 1134 frac_nucl(i,k)= 1.-zneb(i)*zfrac_lessi 1204 1135 1205 1136 ! Nucleation with a factor of -1 instead of -0.5 1206 1137 zfrac_lessi = 1. - EXP(-zprec_cond(i)/zneb(i)) 1207 pfrac_1nucl(i,k)=pfrac_1nucl(i,k)*(1.-zneb(i)*zfrac_lessi)1208 1138 1209 1139 ENDIF … … 1226 1156 1227 1157 zfrac_lessi = 1. - EXP(zalpha_tr*zprec_cond(i)/zneb(i)) 1228 pfrac_impa(i,kk)=pfrac_impa(i,kk)*(1.-zneb(i)*zfrac_lessi)1229 1158 frac_impa(i,kk)= 1.-zneb(i)*zfrac_lessi 1230 1159 … … 1249 1178 ENDDO 1250 1179 !q_sat 1251 CALL calc_qsat_ecmwf(klon,Tbef(:),qzero(:),pplay(:,k),RTT,1,.false., zqsatl(:,k),zdqs(:))1252 CALL calc_qsat_ecmwf(klon,Tbef(:),qzero(:),pplay(:,k),RTT,2,.false., zqsats(:,k),zdqs(:))1180 CALL calc_qsat_ecmwf(klon,Tbef(:),qzero(:),pplay(:,k),RTT,1,.false.,qsatl(:,k),zdqs(:)) 1181 CALL calc_qsat_ecmwf(klon,Tbef(:),qzero(:),pplay(:,k),RTT,2,.false.,qsats(:,k),zdqs(:)) 1253 1182 1254 1183 ENDDO … … 1268 1197 ENDIF 1269 1198 1270 END SUBROUTINE LSCP1199 END SUBROUTINE lscp 1271 1200 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1272 1201 1273 END MODULE LSCP_MOD1202 END MODULE lscp_mod -
LMDZ6/trunk/libf/phylmd/nuage.h
r4114 r4380 12 12 INTEGER iflag_rain_incloud_vol 13 13 14 INTEGER iflag_ mpc_bl, iflag_gammasat, iflag_vice, iflag_rei15 LOGICAL ok_icefra_lscp , ok_radliq_snow14 INTEGER iflag_gammasat, iflag_vice, iflag_rei 15 LOGICAL ok_icefra_lscp 16 16 17 17 common /nuagecom/ rad_froid,rad_chau1, rad_chau2,t_glace_max, & … … 21 21 & iflag_t_glace,iflag_cloudth_vert,iflag_cld_cv, & 22 22 & iflag_rain_incloud_vol, & 23 & ok_icefra_lscp, ok_radliq_snow,&24 & iflag_ mpc_bl, iflag_gammasat, iflag_vice, &23 & ok_icefra_lscp, & 24 & iflag_gammasat, iflag_vice, & 25 25 & iflag_rei 26 26 !$OMP THREADPRIVATE(/nuagecom/) -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r4367 r4380 82 82 USE wake_ini_mod, ONLY : wake_ini 83 83 USE thermcell_ini_mod, ONLY : thermcell_ini 84 USE lscp_ini_mod, ONLY : lscp_ini 84 85 85 86 !USE cmp_seri_mod … … 285 286 sij, & 286 287 ! 288 rneblsvol, & 289 zqsatl, zqsats, & 290 qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss, & 291 Tcontr, qcontr, qcontr2, fcontrN, fcontrP, & 287 292 cldemi, & 288 293 cldfra, cldtau, fiwc, & … … 1742 1747 CALL thermcell_ini(iflag_thermals,prt_level,tau_thermals,lunout, & 1743 1748 & RG,RD,RCPD,RKAPPA,RLVTT,RETV) 1744 1749 IF (ok_new_lscp) then 1750 CALL lscp_ini(pdtphys,ok_ice_sursat) 1751 endif 1745 1752 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1746 1753 … … 3627 3634 ENDIF 3628 3635 3629 CALL lscp( phys_tstep,missing_val,paprs,pplay, &3636 CALL lscp(klon,klev,phys_tstep,missing_val,paprs,pplay, & 3630 3637 t_seri, q_seri,ptconv,ratqs, & 3631 d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneb _seri, &3638 d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneblsvol, rneb_seri, & 3632 3639 cldliq, picefra, rain_lsc, snow_lsc, & 3633 pfrac_impa, pfrac_nucl, pfrac_1nucl, &3634 3640 frac_impa, frac_nucl, beta_prec_fisrt, & 3635 3641 prfl, psfl, rhcl, & 3636 3642 zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cld_th, & 3637 iflag_ice_thermo, ok_ice_sursat) 3643 iflag_ice_thermo, ok_ice_sursat, zqsatl, zqsats, & 3644 qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss, & 3645 Tcontr, qcontr, qcontr2, fcontrN, fcontrP ) 3638 3646 3639 3647 ELSE -
LMDZ6/trunk/libf/phylmdiso/fisrtilp.F90
r4143 r4380 143 143 ! Coeffients de fraction lessivee : pour OFF-LINE 144 144 ! 145 REAL, DIMENSION(klon,klev), INTENT( OUT) :: pfrac_nucl146 REAL, DIMENSION(klon,klev), INTENT( OUT) :: pfrac_1nucl147 REAL, DIMENSION(klon,klev), INTENT( OUT) :: pfrac_impa145 REAL, DIMENSION(klon,klev), INTENT(INOUT) :: pfrac_nucl 146 REAL, DIMENSION(klon,klev), INTENT(INOUT) :: pfrac_1nucl 147 REAL, DIMENSION(klon,klev), INTENT(INOUT) :: pfrac_impa 148 148 ! 149 149 ! Fraction d'aerosols lessivee par impaction et par nucleation -
LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
r4367 r4380 79 79 USE wxios, ONLY: g_ctx, wxios_set_context 80 80 #endif 81 USE lscp_ini_mod, ONLY : lscp_ini 81 82 USE lscp_mod, ONLY : lscp 82 83 USE wake_ini_mod, ONLY : wake_ini … … 324 325 sij, & 325 326 ! 327 rneblsvol, & 328 zqsatl, zqsats, & 329 qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss, & 330 Tcontr, qcontr, qcontr2, fcontrN, fcontrP, & 326 331 cldemi, & 327 332 cldfra, cldtau, fiwc, & … … 1881 1886 CALL thermcell_ini(iflag_thermals,prt_level,tau_thermals,lunout, & 1882 1887 & RG,RD,RCPD,RKAPPA,RLVTT,RETV) 1888 IF (ok_new_lscp) then 1889 CALL lscp_ini(pdtphys,ok_ice_sursat) 1890 endif 1883 1891 1884 1892 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 4677 4685 ENDIF 4678 4686 4679 CALL lscp( phys_tstep,missing_val,paprs,pplay, &4687 CALL lscp(klon,klev,phys_tstep,missing_val,paprs,pplay, & 4680 4688 t_seri, q_seri,ptconv,ratqs, & 4681 d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneb _seri, &4689 d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneblsvol, rneb_seri, & 4682 4690 cldliq, picefra, rain_lsc, snow_lsc, & 4683 pfrac_impa, pfrac_nucl, pfrac_1nucl, &4684 4691 frac_impa, frac_nucl, beta_prec_fisrt, & 4685 4692 prfl, psfl, rhcl, & 4686 4693 zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cld_th, & 4687 iflag_ice_thermo, ok_ice_sursat) 4694 iflag_ice_thermo, ok_ice_sursat, zqsatl, zqsats, & 4695 qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss, & 4696 Tcontr, qcontr, qcontr2, fcontrN, fcontrP ) 4688 4697 4689 4698 ELSE
Note: See TracChangeset
for help on using the changeset viewer.