Changeset 4562 for LMDZ6/trunk/libf
- Timestamp:
- Jun 7, 2023, 3:33:57 PM (18 months ago)
- Location:
- LMDZ6/trunk/libf
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/lscp_ini_mod.F90
r4559 r4562 116 116 PARAMETER (dice_velo=0.16) 117 117 118 REAL, SAVE :: dist_liq=300. ! typical deph of cloud-top liquid layer in mpcs 119 !$OMP THREADPRIVATE(dist_liq) 120 121 REAL, SAVE :: tresh_cl=0.0 ! cloud fraction threshold for cloud top search 122 !$OMP THREADPRIVATE(tresh_cl) 118 123 119 124 CONTAINS … … 178 183 CALL getin_p('coef_eva_i',coef_eva_i) 179 184 CALL getin_p('iflag_autoconversion',iflag_autoconversion) 185 CALL getin_p('dist_liq',dist_liq) 186 CALL getin_p('tresh_cl',tresh_cl) 180 187 181 188 … … 211 218 WRITE(lunout,*) 'lscp, coef_eva_i', coef_eva_i 212 219 WRITE(lunout,*) 'lscp, iflag_autoconversion', iflag_autoconversion 220 WRITE(lunout,*) 'lscp, dist_liq', dist_liq 221 WRITE(lunout,*) 'lscp, tresh_cl', tresh_cl 213 222 214 223 -
LMDZ6/trunk/libf/phylmd/lscp_mod.F90
r4559 r4562 15 15 ztv, zpspsk, ztla, zthl, iflag_cld_th, & 16 16 iflag_ice_thermo, ok_ice_sursat, qsatl, qsats, & 17 distcltop, & 17 18 qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss, & 18 19 Tcontr, qcontr, qcontr2, fcontrN, fcontrP) … … 90 91 USE print_control_mod, ONLY: prt_level, lunout 91 92 USE cloudth_mod, ONLY : cloudth, cloudth_v3, cloudth_v6, cloudth_mpc 92 USE lscp_tools_mod, ONLY : calc_qsat_ecmwf, icefrac_lscp, calc_gammasat, fallice_velocity 93 USE lscp_tools_mod, ONLY : calc_qsat_ecmwf, icefrac_lscp, calc_gammasat 94 USE lscp_tools_mod, ONLY : fallice_velocity, distance_to_cloud_top 93 95 USE ice_sursat_mod, ONLY : ice_sursat 94 96 … … 125 127 LOGICAL, DIMENSION(klon,klev), INTENT(IN) :: ptconv ! grid points where deep convection scheme is active 126 128 127 128 129 !Inputs associated with thermal plumes 129 130 … … 133 134 REAL, DIMENSION(klon,klev), INTENT(IN) :: zpspsk ! exner potential (p/100000)**(R/cp) 134 135 REAL, DIMENSION(klon,klev), INTENT(IN) :: ztla ! liquid temperature within thermals [K] 135 REAL, DIMENSION(klon,klev), INTENT(INOUT) :: zthl ! liquid potential temperature [K]136 136 137 137 ! INPUT/OUTPUT variables 138 138 !------------------------ 139 139 140 REAL, DIMENSION(klon,klev), INTENT(INOUT) :: zthl ! liquid potential temperature [K] 140 141 REAL, DIMENSION(klon,klev), INTENT(INOUT):: ratqs ! function of pressure that sets the large-scale 141 142 REAL, DIMENSION(klon,klev), INTENT(INOUT):: beta ! conversion rate of condensed water … … 165 166 REAL, DIMENSION(klon,klev+1), INTENT(OUT) :: prfl ! large-scale rainfall flux in the column [kg/s/m2] 166 167 REAL, DIMENSION(klon,klev+1), INTENT(OUT) :: psfl ! large-scale snowfall flux in the column [kg/s/m2] 168 REAL, DIMENSION(klon,klev), INTENT(OUT) :: distcltop ! distance to cloud top [m] 167 169 168 170 ! fraction of aerosol scavenging through impaction and nucleation (for on-line) … … 237 239 REAL radocondi(klon,klev), radocondl(klon,klev) 238 240 REAL effective_zneb 241 REAL distcltop1D(klon) 242 239 243 240 244 INTEGER i, k, n, kk … … 258 262 259 263 ! Few initial checks 260 261 IF (iflag_t_glace.EQ.0) THEN262 abort_message = 'lscp cannot be used if iflag_t_glace=0'263 CALL abort_physic(modname,abort_message,1)264 ENDIF265 266 IF (.NOT.((iflag_ice_thermo .EQ. 1).OR.(iflag_ice_thermo .GE. 3))) THEN267 abort_message = 'lscp cannot be used without ice thermodynamics'268 CALL abort_physic(modname,abort_message,1)269 ENDIF270 264 271 265 IF (iflag_fisrtilp_qsat .LT. 0) THEN … … 325 319 d_tot_zneb(:) = 0.0 326 320 qzero(:) = 0.0 321 distcltop1D(:)=0.0 327 322 328 323 !--ice supersaturation … … 726 721 ! saturation may occur at a humidity different from qsat (gamma qsat), so gamma correction for dqs 727 722 zdqs(:) = gammasat(:)*zdqs(:)+zqs(:)*dgammasatdt(:) 728 CALL icefrac_lscp(klon, zt(:), iflag_ice_thermo, pplay(:,k)/paprs(:,1),zfice(:),dzfice(:)) 723 ! cloud phase determination 724 IF (iflag_t_glace.GE.4) THEN 725 ! For iflag_t_glace GE 4 the phase partition function dependends on temperature AND distance to cloud top 726 CALL distance_to_cloud_top(klon,klev,k,t,pplay,paprs,rneb,distcltop1D) 727 ENDIF 728 CALL icefrac_lscp(klon, zt(:), iflag_ice_thermo, distcltop1D(:),zfice(:),dzfice(:)) 729 729 730 730 DO i=1,klon !todoan : check if loop in i is needed … … 814 814 ! zcond: mean condensed water in the mesh 815 815 ! zqn : mean water vapor in the mesh 816 ! zfice: ice fraction in clouds 816 817 ! zt : temperature 817 818 ! rhcl : clear-sky relative humidity 818 819 ! ---------------------------------------------------------------- 819 820 821 822 ! For iflag_t_glace GE 4 the phase partition function dependends on temperature AND distance to cloud top 823 IF (iflag_t_glace.GE.4) THEN 824 CALL distance_to_cloud_top(klon,klev,k,t,pplay,paprs,rneb,distcltop1D) 825 distcltop(:,k)=distcltop1D(:) 826 ENDIF 827 828 ! Partition function in stratiform clouds (will be overwritten in boundary-layer MPCs) 829 CALL icefrac_lscp(klon,zt(:),iflag_ice_thermo,distcltop1D(:),zfice(:), dzfice(:)) 830 831 820 832 ! Water vapor update, Phase determination and subsequent latent heat exchange 821 822 ! Partition function in stratiform clouds (will be overwritten in boundary-layer MPCs)823 CALL icefrac_lscp(klon,zt(:),iflag_ice_thermo,pplay(:,k)/paprs(:,1),zfice(:), dzfice(:))824 825 833 DO i=1, klon 826 827 834 828 835 IF (mpc_bl_points(i,k) .GT. 0) THEN -
LMDZ6/trunk/libf/phylmd/lscp_tools_mod.F90
r4559 r4562 102 102 103 103 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 104 SUBROUTINE ICEFRAC_LSCP(klon, temp, iflag_ice_thermo, sig, icefrac, dicefracdT)104 SUBROUTINE ICEFRAC_LSCP(klon, temp, iflag_ice_thermo, distcltop, icefrac, dicefracdT) 105 105 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 106 106 … … 114 114 USE print_control_mod, ONLY: lunout, prt_level 115 115 USE lscp_ini_mod, ONLY: t_glace_min, t_glace_max, exposant_glace, iflag_t_glace 116 USE lscp_ini_mod, ONLY : RTT 116 USE lscp_ini_mod, ONLY : RTT, dist_liq 117 117 118 118 IMPLICIT NONE … … 121 121 INTEGER, INTENT(IN) :: klon ! number of horizontal grid points 122 122 REAL, INTENT(IN), DIMENSION(klon) :: temp ! temperature 123 REAL, INTENT(IN), DIMENSION(klon) :: sig123 REAL, INTENT(IN), DIMENSION(klon) :: distcltop ! distance to cloud top 124 124 INTEGER, INTENT(IN) :: iflag_ice_thermo 125 125 REAL, INTENT(OUT), DIMENSION(klon) :: icefrac … … 128 128 129 129 INTEGER i 130 REAL sig0,www,tmin_tmp,liqfrac_tmp130 REAL liqfrac_tmp, dicefrac_tmp 131 131 REAL Dv, denomdep,beta,qsi,dqsidt 132 INTEGER exposant_glace_old133 REAL t_glace_min_old134 132 LOGICAL ice_thermo 135 133 136 sig0=0.8 137 t_glace_min_old = RTT - 15.0 138 ice_thermo = (iflag_ice_thermo .EQ. 1).OR.(iflag_ice_thermo .GE. 3) 139 IF (ice_thermo) THEN 140 exposant_glace_old = 2 141 ELSE 142 exposant_glace_old = 6 134 CHARACTER (len = 20) :: modname = 'lscp_tools' 135 CHARACTER (len = 80) :: abort_message 136 137 IF ((iflag_t_glace.LT.2) .OR. (iflag_t_glace.GT.6)) THEN 138 abort_message = 'lscp cannot be used if iflag_t_glace<2 or >6' 139 CALL abort_physic(modname,abort_message,1) 143 140 ENDIF 144 141 145 146 ! calculation of icefrac and dicefrac/dT 142 IF (.NOT.((iflag_ice_thermo .EQ. 1).OR.(iflag_ice_thermo .GE. 3))) THEN 143 abort_message = 'lscp cannot be used without ice thermodynamics' 144 CALL abort_physic(modname,abort_message,1) 145 ENDIF 146 147 147 148 148 DO i=1,klon 149 150 IF (iflag_t_glace.EQ.1) THEN 151 ! Transition to ice close to surface for T<Tmax 152 ! w=1 at the surface and 0 for sig < sig0 153 www=(max(sig(i)-sig0,0.))/(1.-sig0) 154 ELSEIF (iflag_t_glace.GE.2) THEN 155 ! No convertion to ice close to surface 156 www = 0. 157 ENDIF 158 159 tmin_tmp=www*t_glace_max+(1.-www)*t_glace_min 160 liqfrac_tmp= (temp(i)-tmin_tmp) / (t_glace_max-tmin_tmp) 161 liqfrac_tmp = MIN(MAX(liqfrac_tmp,0.0),1.0) 162 163 IF (iflag_t_glace.GE.3) THEN 164 icefrac(i) = 1.0-liqfrac_tmp**exposant_glace 165 IF ((icefrac(i) .GT.0.) .AND. (liqfrac_tmp .GT. 0)) THEN 166 dicefracdT(i)= exposant_glace * ((liqfrac_tmp)**(exposant_glace-1.)) & 167 / (t_glace_min - t_glace_max) 168 ELSE 169 170 dicefracdT(i)=0. 171 ENDIF 172 173 ELSE 149 150 ! old function with sole dependence upon temperature 151 IF (iflag_t_glace .EQ. 2) THEN 152 liqfrac_tmp = (temp(i)-t_glace_min) / (t_glace_max-t_glace_min) 153 liqfrac_tmp = MIN(MAX(liqfrac_tmp,0.0),1.0) 174 154 icefrac(i) = (1.0-liqfrac_tmp)**exposant_glace 175 155 IF (icefrac(i) .GT.0.) THEN … … 182 162 ENDIF 183 163 184 ENDIF 185 186 ENDDO 187 188 189 RETURN 190 164 ENDIF 165 166 ! function of temperature used in CMIP6 physics 167 IF (iflag_t_glace .EQ. 3) THEN 168 liqfrac_tmp = (temp(i)-t_glace_min) / (t_glace_max-t_glace_min) 169 liqfrac_tmp = MIN(MAX(liqfrac_tmp,0.0),1.0) 170 icefrac(i) = 1.0-liqfrac_tmp**exposant_glace 171 IF ((icefrac(i) .GT.0.) .AND. (liqfrac_tmp .GT. 0.)) THEN 172 dicefracdT(i)= exposant_glace * ((liqfrac_tmp)**(exposant_glace-1.)) & 173 / (t_glace_min - t_glace_max) 174 ELSE 175 dicefracdT(i)=0. 176 ENDIF 177 ENDIF 178 179 ! for iflag_t_glace .GE. 4, the liquid fraction depends upon temperature at cloud top 180 ! and then decreases with decreasing height 181 182 !with linear function of temperature at cloud top 183 IF (iflag_t_glace .EQ. 4) THEN 184 liqfrac_tmp = (temp(i)-t_glace_min) / (t_glace_max-t_glace_min) 185 liqfrac_tmp = MIN(MAX(liqfrac_tmp,0.0),1.0) 186 icefrac(i) = MAX(MIN(1.,1.0 - liqfrac_tmp*exp(-distcltop(i)/dist_liq)),0.) 187 dicefrac_tmp = - temp(i)/(t_glace_max-t_glace_min) 188 dicefracdT(i) = dicefrac_tmp*exp(-distcltop(i)/dist_liq) 189 IF ((liqfrac_tmp .LE.0) .OR. (liqfrac_tmp .GE. 1)) THEN 190 dicefracdT(i) = 0. 191 ENDIF 192 ENDIF 193 194 ! with CMIP6 function of temperature at cloud top 195 IF (iflag_t_glace .EQ. 5) THEN 196 liqfrac_tmp = (temp(i)-t_glace_min) / (t_glace_max-t_glace_min) 197 liqfrac_tmp = MIN(MAX(liqfrac_tmp,0.0),1.0) 198 liqfrac_tmp = liqfrac_tmp**exposant_glace 199 icefrac(i) = MAX(MIN(1.,1.0 - liqfrac_tmp*exp(-distcltop(i)/dist_liq)),0.) 200 IF ((liqfrac_tmp .LE.0) .OR. (liqfrac_tmp .GE. 1)) THEN 201 dicefracdT(i) = 0. 202 ELSE 203 dicefracdT(i) = exposant_glace*((liqfrac_tmp)**(exposant_glace-1.))/(t_glace_min- t_glace_max) & 204 *exp(-distcltop(i)/dist_liq) 205 ENDIF 206 ENDIF 207 208 ! with modified function of temperature at cloud top 209 ! to get largere values around 260 K, works well with t_glace_min = 241K 210 IF (iflag_t_glace .EQ. 6) THEN 211 IF (temp(i) .GT. t_glace_max) THEN 212 liqfrac_tmp = 1. 213 ELSE 214 liqfrac_tmp = -((temp(i)-t_glace_max) / (t_glace_max-t_glace_min))**2+1. 215 ENDIF 216 liqfrac_tmp = MIN(MAX(liqfrac_tmp,0.0),1.0) 217 icefrac(i) = MAX(MIN(1.,1.0 - liqfrac_tmp*exp(-distcltop(i)/dist_liq)),0.) 218 IF ((liqfrac_tmp .LE.0) .OR. (liqfrac_tmp .GE. 1)) THEN 219 dicefracdT(i) = 0. 220 ELSE 221 dicefracdT(i) = 2*((temp(i)-t_glace_max) / (t_glace_max-t_glace_min))/(t_glace_max-t_glace_min) & 222 *exp(-distcltop(i)/dist_liq) 223 ENDIF 224 ENDIF 225 226 227 228 ENDDO ! klon 229 230 RETURN 231 191 232 END SUBROUTINE ICEFRAC_LSCP 192 233 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ … … 331 372 332 373 END SUBROUTINE CALC_GAMMASAT 333 334 374 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 375 376 377 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 378 SUBROUTINE DISTANCE_TO_CLOUD_TOP(klon,klev,k,temp,pplay,paprs,rneb,distcltop1D) 379 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 380 381 USE lscp_ini_mod, ONLY : rd,rg,tresh_cl 382 383 IMPLICIT NONE 384 385 INTEGER, INTENT(IN) :: klon,klev !number of horizontal and vertical grid points 386 INTEGER, INTENT(IN) :: k ! vertical index 387 REAL, INTENT(IN), DIMENSION(klon,klev) :: temp ! temperature in K 388 REAL, INTENT(IN), DIMENSION(klon,klev) :: pplay ! pressure middle layer in Pa 389 REAL, INTENT(IN), DIMENSION(klon,klev+1) :: paprs ! pressure interfaces in Pa 390 REAL, INTENT(IN), DIMENSION(klon,klev) :: rneb ! cloud fraction 391 392 REAL, INTENT(OUT), DIMENSION(klon) :: distcltop1D ! distance from cloud top 393 394 REAL dzlay(klon,klev) 395 REAL zlay(klon,klev) 396 REAL dzinterf 397 INTEGER i,k_top, kvert 398 LOGICAL bool_cl 399 400 401 DO i=1,klon 402 ! Initialization height middle of first layer 403 dzlay(i,1) = Rd * temp(i,1) / rg * log(paprs(i,1)/paprs(i,2)) 404 zlay(i,1) = dzlay(i,1)/2 405 406 DO kvert=2,klev 407 IF (kvert.EQ.klev) THEN 408 dzlay(i,kvert) = 2*(rd * temp(i,kvert) / rg * log(paprs(i,kvert)/pplay(i,kvert))) 409 ELSE 410 dzlay(i,kvert) = rd * temp(i,kvert) / rg * log(paprs(i,kvert)/paprs(i,kvert+1)) 411 ENDIF 412 dzinterf = rd * temp(i,kvert) / rg * log(pplay(i,kvert-1)/pplay(i,kvert)) 413 zlay(i,kvert) = zlay(i,kvert-1) + dzinterf 414 ENDDO 415 ENDDO 416 417 k_top = k 418 DO i=1,klon 419 IF (rneb(i,k) .LE. tresh_cl) THEN 420 bool_cl = .FALSE. 421 ELSE 422 bool_cl = .TRUE. 423 ENDIF 424 425 DO WHILE ((bool_cl) .AND. (k_top .LE. klev)) 426 ! find cloud top 427 IF (rneb(i,k_top) .GT. tresh_cl) THEN 428 k_top = k_top + 1 429 ELSE 430 bool_cl = .FALSE. 431 k_top = k_top - 1 432 ENDIF 433 ENDDO 434 k_top=min(k_top,klev) 435 436 !dist to top is dist between current layer and layer of cloud top (from middle to middle) + dist middle to 437 !interf for layer of cloud top 438 distcltop1D(i) = zlay(i,k_top) - zlay(i,k) + dzlay(i,k_top)/2 439 ENDDO ! klon 440 441 END SUBROUTINE DISTANCE_TO_CLOUD_TOP 335 442 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 336 443 -
LMDZ6/trunk/libf/phylmd/newmicro.F90
r4535 r4562 3 3 SUBROUTINE newmicro(flag_aerosol, ok_cdnc, bl95_b0, bl95_b1, paprs, pplay, t, pqlwp, picefra, pclc, & 4 4 pcltau, pclemi, pch, pcl, pcm, pct, pctlwp, xflwp, xfiwp, xflwc, xfiwc, & 5 mass_solu_aero, mass_solu_aero_pi, pcldtaupi, latitude_deg, re, fl, reliq, reice, &5 mass_solu_aero, mass_solu_aero_pi, pcldtaupi, latitude_deg,distcltop, re, fl, reliq, reice, & 6 6 reliq_pi, reice_pi) 7 7 … … 42 42 ! bl95_b1-input-R-a PARAMETER, may be varied for tests ( -"- ) 43 43 ! latitude_deg-input latitude in degrees 44 ! distcltop ---input- distance from cloud top 44 45 45 46 ! re------output-R-Cloud droplet effective radius multiplied by fl [um] … … 98 99 REAL pctlwp(klon) 99 100 101 REAL distcltop(klon,klev) 100 102 LOGICAL lo 101 103 … … 242 244 243 245 IF (ok_new_lscp) THEN 244 CALL icefrac_lscp(klon,t(:,k),iflag_ice_thermo, pplay(:,k)/paprs(:,1),zfice(:,k),dzfice(:,k))246 CALL icefrac_lscp(klon,t(:,k),iflag_ice_thermo,distcltop(:,k),zfice(:,k),dzfice(:,k)) 245 247 ELSE 246 248 CALL icefrac_lsc(klon,t(:,k),pplay(:,k)/paprs(:,1),zfice(:,k)) -
LMDZ6/trunk/libf/phylmd/nuage.F90
r4535 r4562 2 2 3 3 SUBROUTINE nuage(paprs, pplay, t, pqlwp,picefra, pclc, pcltau, pclemi, pch, pcl, pcm, & 4 pct, pctlwp, ok_aie, mass_solu_aero, mass_solu_aero_pi, bl95_b0, bl95_b1, &4 pct, pctlwp, ok_aie, mass_solu_aero, mass_solu_aero_pi, bl95_b0, bl95_b1, distcltop, & 5 5 cldtaupi, re, fl) 6 6 USE dimphy … … 50 50 51 51 REAL pct(klon), pctlwp(klon), pch(klon), pcl(klon), pcm(klon) 52 52 REAL distcltop(klon,klev) 53 53 LOGICAL lo 54 54 … … 113 113 ! t_glace_max, exposant_glace) 114 114 IF (ok_new_lscp) THEN 115 CALL icefrac_lscp(klon,t(:,k),iflag_ice_thermo, pplay(:,k)/paprs(:,1),zfice(:),dzfice(:))115 CALL icefrac_lscp(klon,t(:,k),iflag_ice_thermo,distcltop(:,k),zfice(:),dzfice(:)) 116 116 ELSE 117 117 CALL icefrac_lsc(klon,t(:,k),pplay(:,k)/paprs(:,1),zfice(:)) -
LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90
r4530 r4562 531 531 REAL, SAVE, ALLOCATABLE :: fcontrP(:,:) 532 532 !$OMP THREADPRIVATE(fcontrP) 533 REAL, SAVE, ALLOCATABLE :: distcltop(:,:) 534 !$OMP THREADPRIVATE(disctcltop) 535 533 536 534 537 #ifdef CPP_StratAer … … 888 891 ALLOCATE(pfraclr(klon,klev),pfracld(klon,klev)) 889 892 pfraclr(:,:)=0. ; pfracld(:,:)=0. ! because not always defined 893 ALLOCATE(distcltop(klon,klev)) 890 894 891 895 … … 1197 1201 DEALLOCATE(pfraclr,pfracld) 1198 1202 DEALLOCATE (zxsnow,snowhgt,qsnow,to_ice,sissnow,runoff,albsol3_lic) 1199 1203 DEALLOCATE(distcltop) 1200 1204 DEALLOCATE (p_tropopause) 1201 1205 DEALLOCATE (z_tropopause) -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r4547 r4562 295 295 rneblsvol, & 296 296 pfraclr,pfracld, & 297 distcltop, & 297 298 zqsatl, zqsats, & 298 299 qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss, & … … 3723 3724 prfl, psfl, rhcl, & 3724 3725 zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cld_th, & 3725 iflag_ice_thermo, ok_ice_sursat, zqsatl, zqsats, &3726 iflag_ice_thermo, ok_ice_sursat, zqsatl, zqsats, distcltop, & 3726 3727 qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss, & 3727 3728 Tcontr, qcontr, qcontr2, fcontrN, fcontrP ) … … 4296 4297 flwp, fiwp, flwc, fiwc, & 4297 4298 mass_solu_aero, mass_solu_aero_pi, & 4298 cldtaupi, latitude_deg, re, fl, ref_liq, ref_ice, &4299 cldtaupi, latitude_deg, distcltop, re, fl, ref_liq, ref_ice, & 4299 4300 ref_liq_pi, ref_ice_pi) 4300 4301 ELSE … … 4304 4305 ok_aie, & 4305 4306 mass_solu_aero, mass_solu_aero_pi, & 4306 bl95_b0, bl95_b1, &4307 bl95_b0, bl95_b1, distcltop, & 4307 4308 cldtaupi, re, fl) 4308 4309 ENDIF -
LMDZ6/trunk/libf/phylmdiso/phys_local_var_mod.F90
r4530 r4562 593 593 REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: pfraclr,pfracld 594 594 !$OMP THREADPRIVATE(pfraclr,pfracld) 595 REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: distcltop 596 !$OMP THREADPRIVATE(distcltop) 595 597 596 598 ! variables de sorties MM … … 1080 1082 ALLOCATE(pfraclr(klon,klev),pfracld(klon,klev)) 1081 1083 pfraclr(:,:)=0. ; pfracld(:,:)=0. ! because not always defined 1082 1084 ALLOCATE(distcltop(klon,klev)) 1083 1085 1084 1086 ALLOCATE (zxsnow(klon),snowhgt(klon),qsnow(klon),to_ice(klon)) … … 1452 1454 DEALLOCATE(rneb) 1453 1455 DEALLOCATE(pfraclr,pfracld) 1456 DEALLOCATE(distcltop) 1454 1457 DEALLOCATE (zxsnow,snowhgt,qsnow,to_ice,sissnow,runoff,albsol3_lic) 1455 1458 #ifdef ISO -
LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
r4541 r4562 332 332 rneblsvol, & 333 333 pfraclr,pfracld, & 334 distcltop, & 334 335 zqsatl, zqsats, & 335 336 qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss, & … … 4794 4795 prfl, psfl, rhcl, & 4795 4796 zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cld_th, & 4796 iflag_ice_thermo, ok_ice_sursat, zqsatl, zqsats, &4797 iflag_ice_thermo, ok_ice_sursat, zqsatl, zqsats, distcltop, & 4797 4798 qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss, & 4798 4799 Tcontr, qcontr, qcontr2, fcontrN, fcontrP ) … … 5562 5563 flwp, fiwp, flwc, fiwc, & 5563 5564 mass_solu_aero, mass_solu_aero_pi, & 5564 cldtaupi, latitude_deg, re, fl, ref_liq, ref_ice, &5565 cldtaupi, latitude_deg, distcltop, re, fl, ref_liq, ref_ice, & 5565 5566 ref_liq_pi, ref_ice_pi) 5566 5567 ELSE … … 5570 5571 ok_aie, & 5571 5572 mass_solu_aero, mass_solu_aero_pi, & 5572 bl95_b0, bl95_b1, &5573 bl95_b0, bl95_b1, distcltop, & 5573 5574 cldtaupi, re, fl) 5574 5575 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.