Changeset 2056 for LMDZ5/branches/testing/libf/phylmd/concvl.F90
- Timestamp:
- Jun 11, 2014, 3:46:46 PM (10 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 1998,2000-2023,2025-2029,2032,2034,2036-2049,2051-2055
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/phylmd/concvl.F90
r1999 r2056 1 SUBROUTINE concvl(iflag_clos, dtime, paprs, pplay, t, q, t_wake, q_wake, & 2 s_wake, u, v, tra, ntra, ale, alp, sig1, w01, d_t, d_q, d_u, d_v, d_tra, & 3 rain, snow, kbas, ktop, sigd, cbmf, plcl, plfc, wbeff, upwd, dnwd, & 4 dnwdbis, ma, mip, vprecip, cape, cin, tvp, tconv, iflag, pbase, bbase, & 5 dtvpdt1, dtvpdq1, dplcldt, dplcldr, qcondc, wd, pmflxr, pmflxs, & ! RomP 6 ! >>> 7 ! ! . da,phi,mp,dd_t,dd_q,lalim_conv,wght_th) 8 da, phi, mp, phi2, d1a, dam, sij, clw, elij, & ! RomP 9 dd_t, dd_q, lalim_conv, wght_th, & ! RomP 10 evap, ep, epmlmmm, eplamm, & ! RomP 11 wdtraina, wdtrainm) ! RomP 12 ! RomP <<< 13 ! ************************************************************** 14 ! * 15 ! CONCVL * 16 ! * 17 ! * 18 ! written by : Sandrine Bony-Lena, 17/05/2003, 11.16.04 * 19 ! modified by : * 20 ! ************************************************************** 1 SUBROUTINE concvl(iflag_clos, & 2 dtime, paprs, pplay, & 3 t, q, t_wake, q_wake, s_wake, u, v, tra, ntra, & 4 Ale, Alp, sig1, w01, & 5 d_t, d_q, d_u, d_v, d_tra, & 6 rain, snow, kbas, ktop, sigd, & 7 cbmf, plcl, plfc, wbeff, upwd, dnwd, dnwdbis, & 8 Ma, mip, Vprecip, & 9 cape, cin, tvp, Tconv, iflag, & 10 pbase, bbase, dtvpdt1, dtvpdq1, dplcldt, dplcldr, & 11 qcondc, wd, pmflxr, pmflxs, & 12 !RomP >>> 13 !! . da,phi,mp,dd_t,dd_q,lalim_conv,wght_th) 14 da, phi, mp, phi2, d1a, dam, sij, clw, elij, & ! RomP 15 dd_t, dd_q, lalim_conv, wght_th, & ! RomP 16 evap, ep, epmlmMm, eplaMm, & ! RomP 17 wdtrainA, wdtrainM, wght) ! RomP+RL 18 !RomP <<< 19 ! ************************************************************** 20 ! * 21 ! CONCVL * 22 ! * 23 ! * 24 ! written by : Sandrine Bony-Lena, 17/05/2003, 11.16.04 * 25 ! modified by : * 26 ! ************************************************************** 21 27 22 28 … … 24 30 USE infotrac, ONLY: nbtr 25 31 IMPLICIT NONE 26 ! ====================================================================== 27 ! Auteur(s): S. Bony-Lena (LMD/CNRS) date: ??? 28 ! Objet: schema de convection de Emanuel (1991) interface 29 ! ====================================================================== 30 ! Arguments: 31 ! dtime--input-R-pas d'integration (s) 32 ! s-------input-R-la valeur "s" pour chaque couche 33 ! sigs----input-R-la valeur "sigma" de chaque couche 34 ! sig-----input-R-la valeur de "sigma" pour chaque niveau 35 ! psolpa--input-R-la pression au sol (en Pa) 36 ! pskapa--input-R-exponentiel kappa de psolpa 37 ! h-------input-R-enthalpie potentielle (Cp*T/P**kappa) 38 ! q-------input-R-vapeur d'eau (en kg/kg) 39 40 ! work*: input et output: deux variables de travail, 41 ! on peut les mettre a 0 au debut 42 ! ALE-----input-R-energie disponible pour soulevement 43 ! ALP-----input-R-puissance disponible pour soulevement 44 45 ! d_h-----output-R-increment de l'enthalpie potentielle (h) 46 ! d_q-----output-R-increment de la vapeur d'eau 47 ! rain----output-R-la pluie (mm/s) 48 ! snow----output-R-la neige (mm/s) 49 ! upwd----output-R-saturated updraft mass flux (kg/m**2/s) 50 ! dnwd----output-R-saturated downdraft mass flux (kg/m**2/s) 51 ! dnwd0---output-R-unsaturated downdraft mass flux (kg/m**2/s) 52 ! Ma------output-R-adiabatic ascent mass flux (kg/m2/s) 53 ! mip-----output-R-mass flux shed by adiabatic ascent (kg/m2/s) 54 ! Vprecip-output-R-vertical profile of precipitations (kg/m2/s) 55 ! Tconv---output-R-environment temperature seen by convective scheme (K) 56 ! Cape----output-R-CAPE (J/kg) 57 ! Cin ----output-R-CIN (J/kg) 58 ! Tvp-----output-R-Temperature virtuelle d'une parcelle soulevee 59 ! adiabatiquement a partir du niveau 1 (K) 60 ! deltapb-output-R-distance entre LCL et base de la colonne (<0 ; Pa) 61 ! Ice_flag-input-L-TRUE->prise en compte de la thermodynamique de la glace 62 ! dd_t-----output-R-increment de la temperature du aux descentes 63 ! precipitantes 64 ! dd_q-----output-R-increment de la vapeur d'eau du aux desc precip 65 ! ====================================================================== 32 ! ====================================================================== 33 ! Auteur(s): S. Bony-Lena (LMD/CNRS) date: ??? 34 ! Objet: schema de convection de Emanuel (1991) interface 35 ! ====================================================================== 36 ! Arguments: 37 ! dtime--input-R-pas d'integration (s) 38 ! s-------input-R-la vAleur "s" pour chaque couche 39 ! sigs----input-R-la vAleur "sigma" de chaque couche 40 ! sig-----input-R-la vAleur de "sigma" pour chaque niveau 41 ! psolpa--input-R-la pression au sol (en Pa) 42 ! pskapa--input-R-exponentiel kappa de psolpa 43 ! h-------input-R-enthAlpie potentielle (Cp*T/P**kappa) 44 ! q-------input-R-vapeur d'eau (en kg/kg) 45 46 ! work*: input et output: deux variables de travail, 47 ! on peut les mettre a 0 au debut 48 ! ALE--------input-R-energie disponible pour soulevement 49 ! ALP--------input-R-puissance disponible pour soulevement 50 51 ! d_h--------output-R-increment de l'enthAlpie potentielle (h) 52 ! d_q--------output-R-increment de la vapeur d'eau 53 ! rain-------output-R-la pluie (mm/s) 54 ! snow-------output-R-la neige (mm/s) 55 ! upwd-------output-R-saturated updraft mass flux (kg/m**2/s) 56 ! dnwd-------output-R-saturated downdraft mass flux (kg/m**2/s) 57 ! dnwd0------output-R-unsaturated downdraft mass flux (kg/m**2/s) 58 ! Ma---------output-R-adiabatic ascent mass flux (kg/m2/s) 59 ! mip--------output-R-mass flux shed by adiabatic ascent (kg/m2/s) 60 ! Vprecip----output-R-vertical profile of precipitations (kg/m2/s) 61 ! Tconv------output-R-environment temperature seen by convective scheme (K) 62 ! Cape-------output-R-CAPE (J/kg) 63 ! Cin -------output-R-CIN (J/kg) 64 ! Tvp--------output-R-Temperature virtuelle d'une parcelle soulevee 65 ! adiabatiquement a partir du niveau 1 (K) 66 ! deltapb----output-R-distance entre LCL et base de la colonne (<0 ; Pa) 67 ! Ice_flag---input-L-TRUE->prise en compte de la thermodynamique de la glace 68 ! dd_t-------output-R-increment de la temperature du aux descentes precipitantes 69 ! dd_q-------output-R-increment de la vapeur d'eau du aux desc precip 70 ! lalim_conv- 71 ! wght_th---- 72 ! evap-------output-R 73 ! ep---------output-R 74 ! epmlmMm----output-R 75 ! eplaMm-----output-R 76 ! wdtrainA---output-R 77 ! wdtrainM---output-R 78 ! wght-------output-R 79 ! ====================================================================== 66 80 67 81 … … 79 93 REAL sig1(klon, klev), w01(klon, klev), ptop2(klon) 80 94 REAL pmflxr(klon, klev+1), pmflxs(klon, klev+1) 81 REAL ale(klon), alp(klon)95 REAL Ale(klon), Alp(klon) 82 96 83 97 REAL d_t(klon, klev), d_q(klon, klev), d_u(klon, klev), d_v(klon, klev) … … 90 104 REAL upwd(klon, klev), dnwd(klon, klev), dnwdbis(klon, klev) 91 105 92 ! ! REAL Ma(klon,klev), mip(klon,klev),Vprecip(klon,klev) !jyg 93 REAL ma(klon, klev), mip(klon, klev), vprecip(klon, klev+1) !jyg 106 !! REAL Ma(klon,klev), mip(klon,klev),Vprecip(klon,klev) !jyg 107 REAL Ma(klon, klev), mip(klon, klev), Vprecip(klon, klev+1) !jyg 108 REAL wght(klon, klev) !RL 94 109 95 110 REAL da(klon, klev), phi(klon, klev, klev), mp(klon, klev) 96 111 ! RomP >>> 97 112 REAL phi2(klon, klev, klev) 98 113 REAL d1a(klon, klev), dam(klon, klev) 99 114 REAL sij(klon, klev, klev), clw(klon, klev), elij(klon, klev, klev) 100 REAL wdtrain a(klon, klev), wdtrainm(klon, klev)115 REAL wdtrainA(klon, klev), wdtrainM(klon, klev) 101 116 REAL evap(klon, klev), ep(klon, klev) 102 REAL epmlm mm(klon, klev, klev), eplamm(klon, klev)103 117 REAL epmlmMm(klon, klev, klev), eplaMm(klon, klev) 118 ! RomP <<< 104 119 REAL cape(klon), cin(klon), tvp(klon, klev) 105 REAL tconv(klon, klev)106 107 !CR:test: on passe lentr et alim_star des thermiques120 REAL Tconv(klon, klev) 121 122 !CR:test: on passe lentr et alim_star des thermiques 108 123 INTEGER lalim_conv(klon) 109 124 REAL wght_th(klon, klev) … … 111 126 REAL em_sig2feed ! sigma at upper bound of feeding layer 112 127 REAL em_wght(klev) ! weight density determining the feeding mixture 113 !on enleve le save114 128 !on enleve le save 129 ! SAVE em_sig1feed,em_sig2feed,em_wght 115 130 116 131 INTEGER iflag(klon) … … 127 142 REAL zx_t, zdelta, zx_qs, zcor 128 143 129 !INTEGER iflag_mix130 !SAVE iflag_mix144 ! INTEGER iflag_mix 145 ! SAVE iflag_mix 131 146 INTEGER noff, minorig 132 147 INTEGER i, k, itra 133 148 REAL qs(klon, klev), qs_wake(klon, klev) 134 149 REAL cbmf(klon), plcl(klon), plfc(klon), wbeff(klon) 135 ! LFSAVE cbmf136 !IM/JYG REAL, SAVE, ALLOCATABLE :: cbmf(:)137 ! cc$OMP THREADPRIVATE(cbmf)!150 !LF SAVE cbmf 151 !IM/JYG REAL, SAVE, ALLOCATABLE :: cbmf(:) 152 !!!$OMP THREADPRIVATE(cbmf)! 138 153 REAL cbmflast(klon) 139 154 INTEGER ifrst 140 155 SAVE ifrst 141 156 DATA ifrst/0/ 142 143 144 145 146 147 !LF Real ql(klon,klev)148 149 !LF Save ql150 !LF Real t1(klon,klev),q1(klon,klev)151 !LF Save t1,q1152 157 !$OMP THREADPRIVATE(ifrst) 158 159 160 ! Variables supplementaires liees au bilan d'energie 161 ! Real paire(klon) 162 !LF Real ql(klon,klev) 163 ! Save paire 164 !LF Save ql 165 !LF Real t1(klon,klev),q1(klon,klev) 166 !LF Save t1,q1 167 ! Data paire /1./ 153 168 REAL, SAVE, ALLOCATABLE :: ql(:, :), q1(:, :), t1(:, :) 154 155 156 ! Variables liees au bilan d'energie et d'enthalpi169 !$OMP THREADPRIVATE(ql, q1, t1) 170 171 ! Variables liees au bilan d'energie et d'enthAlpi 157 172 REAL ztsol(klon) 158 REAL h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot, h_qs_tot, qw_tot,ql_tot, &159 qs_tot, ec_tot160 SAVE h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot, h_qs_tot, qw_tot,ql_tot, &161 qs_tot, ec_tot162 163 164 REAL d_h_vcol, d_h_dair, d_qt, d_qw, d_ql, d_qs, d_ec165 REAL d_h_vcol_phy166 REAL fs_bound, fq_bound167 SAVE d_h_vcol_phy168 169 REAL zero_v(klon)173 REAL h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot, & 174 h_qs_tot, qw_tot, ql_tot, qs_tot, ec_tot 175 SAVE h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot, & 176 h_qs_tot, qw_tot, ql_tot, qs_tot, ec_tot 177 !$OMP THREADPRIVATE(h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot) 178 !$OMP THREADPRIVATE(h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot) 179 REAL d_h_vcol, d_h_dair, d_qt, d_qw, d_ql, d_qs, d_ec 180 REAL d_h_vcol_phy 181 REAL fs_bound, fq_bound 182 SAVE d_h_vcol_phy 183 !$OMP THREADPRIVATE(d_h_vcol_phy) 184 REAL zero_v(klon) 170 185 CHARACTER *15 ztit 171 INTEGER ip_ebil ! PRINT level for energy conserv. diag.172 SAVE ip_ebil173 DATA ip_ebil/2/174 175 INTEGER if_ebil ! level for energy conserv. dignostics176 SAVE if_ebil177 DATA if_ebil/2/178 179 !+jld ec_conser186 INTEGER ip_ebil ! PRINT level for energy conserv. diag. 187 SAVE ip_ebil 188 DATA ip_ebil/2/ 189 !$OMP THREADPRIVATE(ip_ebil) 190 INTEGER if_ebil ! level for energy conserv. dignostics 191 SAVE if_ebil 192 DATA if_ebil/2/ 193 !$OMP THREADPRIVATE(if_ebil) 194 !+jld ec_conser 180 195 REAL d_t_ec(klon, klev) ! tendance du a la conersion Ec -> E thermique 181 196 REAL zrcpd 182 !-jld ec_conser183 !LF197 !-jld ec_conser 198 !LF 184 199 INTEGER nloc 185 LOGICAL, SAVE :: first = .TRUE.186 187 INTEGER, SAVE :: itap, igout188 200 LOGICAL, SAVE :: first = .TRUE. 201 !$OMP THREADPRIVATE(first) 202 INTEGER, SAVE :: itap, igout 203 !$OMP THREADPRIVATE(itap, igout) 189 204 190 205 include "YOMCST.h" … … 195 210 196 211 IF (first) THEN 197 198 199 !IM/JYG allocate(cbmf(klon))212 ! Allocate some variables LF 04/2008 213 214 !IM/JYG allocate(cbmf(klon)) 200 215 ALLOCATE (ql(klon,klev)) 201 216 ALLOCATE (t1(klon,klev)) … … 204 219 igout = klon/2 + 1/klon 205 220 END IF 206 221 ! Incrementer le compteur de la physique 207 222 itap = itap + 1 208 223 209 224 ! Copy T into Tconv 210 225 DO k = 1, klev 211 226 DO i = 1, klon 212 tconv(i, k) = t(i, k)227 Tconv(i, k) = t(i, k) 213 228 END DO 214 229 END DO … … 224 239 END IF 225 240 226 241 ! ym 227 242 snow(:) = 0 228 243 229 230 244 ! IF (ifrst .EQ. 0) THEN 245 ! ifrst = 1 231 246 IF (first) THEN 232 247 first = .FALSE. 233 248 234 235 236 249 ! =========================================================================== 250 ! READ IN PARAMETERS FOR THE CLOSURE AND THE MIXING DISTRIBUTION 251 ! =========================================================================== 237 252 238 253 IF (iflag_con==3) THEN 239 !CALL cv3_inicp()254 ! CALL cv3_inicp() 240 255 CALL cv3_inip() 241 256 END IF 242 257 243 ! =========================================================================== 244 ! READ IN PARAMETERS FOR CONVECTIVE INHIBITION BY TROPOS. DRYNESS 245 ! =========================================================================== 246 247 ! c$$$ open (56,file='supcrit.data') 248 ! c$$$ read (56,*) Supcrit1, Supcrit2 249 ! c$$$ close (56) 250 251 IF (prt_level>=10) WRITE (lunout, *) 'supcrit1, supcrit2', supcrit1, & 252 supcrit2 253 254 ! =========================================================================== 255 ! Initialisation pour les bilans d'eau et d'energie 256 ! =========================================================================== 258 ! =========================================================================== 259 ! READ IN PARAMETERS FOR CONVECTIVE INHIBITION BY TROPOS. DRYNESS 260 ! =========================================================================== 261 262 ! c$$$ open (56,file='supcrit.data') 263 ! c$$$ read (56,*) Supcrit1, Supcrit2 264 ! c$$$ close (56) 265 266 IF (prt_level>=10) WRITE (lunout, *) 'supcrit1, supcrit2', supcrit1, supcrit2 267 268 ! =========================================================================== 269 ! Initialisation pour les bilans d'eau et d'energie 270 ! =========================================================================== 257 271 IF (if_ebil>=1) d_h_vcol_phy = 0. 258 272 259 273 DO i = 1, klon 260 274 cbmf(i) = 0. 261 !! plcl(i) = 0.275 !! plcl(i) = 0. 262 276 sigd(i) = 0. 263 277 END DO 264 278 END IF !(ifrst .EQ. 0) 265 279 266 280 ! Initialisation a chaque pas de temps 267 281 plfc(:) = 0. 268 282 wbeff(:) = 100. … … 284 298 285 299 286 300 ! Feeding layer 287 301 288 302 em_sig1feed = 1. 289 303 em_sig2feed = 0.97 290 291 304 ! em_sig2feed = 0.8 305 ! Relative Weight densities 292 306 DO k = 1, klev 293 307 em_wght(k) = 1. 294 308 END DO 295 !CRtest: couche alim des tehrmiques ponderee par a*296 297 298 299 300 301 309 !CRtest: couche alim des tehrmiques ponderee par a* 310 ! DO i = 1, klon 311 ! do k=1,lalim_conv(i) 312 ! em_wght(k)=wght_th(i,k) 313 ! print*,'em_wght=',em_wght(k),wght_th(i,k) 314 ! end do 315 ! END DO 302 316 303 317 IF (iflag_con==4) THEN … … 318 332 END DO 319 333 END DO 320 ELSE ! iflag_con=3 (modif de puristes qui fait la diffce pour la 321 ! convergence numerique) 334 ELSE ! iflag_con=3 (modif de puristes qui fait la diffce pour la convergence numerique) 322 335 DO k = 1, klev 323 336 DO i = 1, klon … … 342 355 END IF ! iflag_con 343 356 344 345 346 347 !iflag_con=3 -> nvlle version de KE (JYG)348 ! iflag_con = 30 -> equivalent to convect3349 ! iflag_con = 4 -> equivalent to convect1/2357 ! ------------------------------------------------------------------ 358 359 ! Main driver for convection: 360 ! iflag_con=3 -> nvlle version de KE (JYG) 361 ! iflag_con = 30 -> equivAlent to convect3 362 ! iflag_con = 4 -> equivAlent to convect1/2 350 363 351 364 352 365 IF (iflag_con==30) THEN 353 366 354 ! print *, '-> cv_driver' !jyg 355 CALL cv_driver(klon, klev, klevp1, ntra, iflag_con, t, q, qs, u, v, tra, & 356 em_p, em_ph, iflag, d_t, d_q, d_u, d_v, d_tra, rain, vprecip, cbmf, & 357 sig1, w01, & !jyg 358 kbas, ktop, dtime, ma, upwd, dnwd, dnwdbis, qcondc, wd, cape, da, phi, & 359 mp, phi2, d1a, dam, sij, clw, elij, & !RomP 360 evap, ep, epmlmmm, eplamm, & !RomP 361 wdtraina, wdtrainm) !RomP 362 ! print *, 'cv_driver ->' !jyg 363 364 DO i = 1, klon 365 cbmf(i) = ma(i, kbas(i)) 366 END DO 367 ! print *, '-> cv_driver' !jyg 368 CALL cv_driver(klon, klev, klevp1, ntra, iflag_con, & 369 t, q, qs, u, v, tra, & 370 em_p, em_ph, iflag, & 371 d_t, d_q, d_u, d_v, d_tra, rain, & 372 Vprecip, cbmf, sig1, w01, & !jyg 373 kbas, ktop, & 374 dtime, Ma, upwd, dnwd, dnwdbis, qcondc, wd, cape, & 375 da, phi, mp, phi2, d1a, dam, sij, clw, elij, & !RomP 376 evap, ep, epmlmMm, eplaMm, & !RomP 377 wdtrainA, wdtrainM) !RomP 378 ! print *, 'cv_driver ->' !jyg 379 380 DO i = 1, klon 381 cbmf(i) = Ma(i, kbas(i)) 382 END DO 383 384 !RL 385 wght(:, :) = 0. 386 DO i = 1, klon 387 wght(i, 1) = 1. 388 END DO 389 !RL 367 390 368 391 ELSE 369 392 370 !LF necessary for gathered fields393 !LF necessary for gathered fields 371 394 nloc = klon 372 CALL cva_driver(klon, klev, klev+1, ntra, nloc, iflag_con, iflag_mix, & 373 iflag_ice_thermo, iflag_clos, dtime, t, q, qs, t_wake, q_wake, qs_wake, & 374 s_wake, u, v, tra, em_p, em_ph, ale, alp, em_sig1feed, em_sig2feed, & 375 em_wght, iflag, d_t, d_q, d_u, d_v, d_tra, rain, kbas, ktop, cbmf, & 376 plcl, plfc, wbeff, sig1, w01, ptop2, sigd, ma, mip, vprecip, upwd, & 377 dnwd, dnwdbis, qcondc, wd, cape, cin, tvp, dd_t, dd_q, plim1, plim2, & 378 asupmax, supmax0, asupmaxmin, lalim_conv, & ! AC!+!RomP+jyg 379 da, phi, mp, phi2, d1a, dam, sij, clw, elij, & ! RomP 380 evap, ep, epmlmmm, eplamm, & ! RomP 381 wdtraina, wdtrainm) ! RomP 382 ! AC!+!RomP+jyg 395 CALL cva_driver(klon, klev, klev+1, ntra, nloc, & 396 iflag_con, iflag_mix, iflag_ice_thermo, & 397 iflag_clos, ok_conserv_q, dtime, & 398 t, q, qs, t_wake, q_wake, qs_wake, s_wake, u, v, tra, & 399 em_p, em_ph, & 400 Ale, Alp, & 401 em_sig1feed, em_sig2feed, em_wght, & 402 iflag, d_t, d_q, d_u, d_v, d_tra, rain, kbas, ktop, & 403 cbmf, plcl, plfc, wbeff, sig1, w01, ptop2, sigd, & 404 Ma, mip, Vprecip, upwd, dnwd, dnwdbis, qcondc, wd, & 405 cape, cin, tvp, & 406 dd_t, dd_q, plim1, plim2, asupmax, supmax0, & 407 asupmaxmin, lalim_conv, & 408 !AC!+!RomP+jyg 409 !! da,phi,mp,phi2,d1a,dam,sij,clw,elij, & ! RomP 410 !! evap,ep,epmlmMm,eplaMm, ! RomP 411 da, phi, mp, phi2, d1a, dam, sij, wght, & ! RomP+RL 412 clw, elij, evap, ep, epmlmMm, eplaMm, & ! RomP+RL 413 wdtrainA, wdtrainM) ! RomP 414 !AC!+!RomP+jyg 383 415 END IF 384 385 IF (prt_level>=10) WRITE (lunout, *) ' cva_driver -> cbmf,plcl,plfc,wbeff ' &386 ,cbmf(1), plcl(1), plfc(1), wbeff(1)416 ! ------------------------------------------------------------------ 417 IF (prt_level>=10) WRITE (lunout, *) ' cva_driver -> cbmf,plcl,plfc,wbeff ', & 418 cbmf(1), plcl(1), plfc(1), wbeff(1) 387 419 388 420 DO i = 1, klon … … 404 436 DO k = 1, klev 405 437 DO i = 1, klon 406 d_tra(i, k, itra) = dtime*d_tra(i, k, itra) 438 !RL! d_tra(i,k,itra) =dtime*d_tra(i,k,itra) 439 d_tra(i, k, itra) = 0. 407 440 END DO 408 441 END DO … … 410 443 END IF 411 444 412 !!AC!445 !!AC! 413 446 IF (iflag_con==3) THEN 414 447 DO itra = 1, ntra 415 448 DO k = 1, klev 416 449 DO i = 1, klon 417 d_tra(i, k, itra) = dtime*d_tra(i, k, itra) 450 !RL! d_tra(i,k,itra) =dtime*d_tra(i,k,itra) 451 d_tra(i, k, itra) = 0. 418 452 END DO 419 453 END DO 420 454 END DO 421 455 END IF 422 !!AC!456 !!AC! 423 457 424 458 DO k = 1, klev … … 428 462 END DO 429 463 END DO 430 !!jyg431 432 DO k = 1, klev !jyg433 DO i = 1, klon !jyg434 IF (t1(i,k)<rtt) THEN !jyg435 pmflxs(i, k) = vprecip(i, k)!jyg436 ELSE !jyg437 pmflxr(i, k) = vprecip(i, k)!jyg438 END IF !jyg439 END DO !jyg440 END DO !jyg441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 464 ! !jyg 465 ! --Separation neige/pluie (pour diagnostics) !jyg 466 DO k = 1, klev !jyg 467 DO i = 1, klon !jyg 468 IF (t1(i,k)<rtt) THEN !jyg 469 pmflxs(i, k) = Vprecip(i, k) !jyg 470 ELSE !jyg 471 pmflxr(i, k) = Vprecip(i, k) !jyg 472 END IF !jyg 473 END DO !jyg 474 END DO !jyg 475 476 ! c IF (if_ebil.ge.2) THEN 477 ! c ztit='after convect' 478 ! c CALL diagetpq(paire,ztit,ip_ebil,2,2,dtime 479 ! c e , t1,q1,ql,qs,u,v,paprs,pplay 480 ! c s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 481 ! c call diagphy(paire,ztit,ip_ebil 482 ! c e , zero_v, zero_v, zero_v, zero_v, zero_v 483 ! c e , zero_v, rain, zero_v, ztsol 484 ! c e , d_h_vcol, d_qt, d_ec 485 ! c s , fs_bound, fq_bound ) 486 ! c END IF 487 488 489 ! les traceurs ne sont pas mis dans cette version de convect4: 456 490 IF (iflag_con==4) THEN 457 491 DO itra = 1, ntra … … 463 497 END DO 464 498 END IF 465 499 ! print*, 'concvl->: dd_t,dd_q ',dd_t(1,1),dd_q(1,1) 466 500 467 501 DO k = 1, klev … … 478 512 IF (prt_level>=20) THEN 479 513 DO k = 1, klev 480 ! print*,'physiq apres_add_con i k it d_u d_v d_t d_q qdl0',igout 481 ! .,k,itap,d_u_con(igout,k) ,d_v_con(igout,k), d_t_con(igout,k), 482 ! .d_q_con(igout,k),dql0(igout,k)483 ! print*,'phys apres_add_con itap Ma cin ALE ALP wak t q undi t q' 484 ! .,itap,Ma(igout,k),cin(igout),ALE(igout), ALP(igout), 485 ! .t_wake(igout,k),q_wake(igout,k),t_undi(igout,k),q_undi(igout,k)486 ! print*,'phy apres_add_con itap CON rain snow EMA wk1 wk2 Vpp mip' 487 ! .,itap,rain_con(igout),snow_con(igout),ema_work1(igout,k), 488 ! .ema_work2(igout,k),Vprecip(igout,k), mip(igout,k)489 ! print*,'phy apres_add_con itap upwd dnwd dnwd0 cape tvp Tconv ' 490 ! .,itap,upwd(igout,k),dnwd(igout,k),dnwd0(igout,k),cape(igout), 491 ! .tvp(igout,k),Tconv(igout,k)492 ! print*,'phy apres_add_con itap dtvpdt dtvdq dplcl dplcldr qcondc' 493 ! .,itap,dtvpdt1(igout,k),dtvpdq1(igout,k),dplcldt(igout), 494 ! .dplcldr(igout),qcondc(igout,k)495 ! print*,'phy apres_add_con itap wd pmflxr Kpmflxr Kp1 Kpmflxs Kp1' 496 ! .,itap,wd(igout),pmflxr(igout,k),pmflxr(igout,k+1),pmflxs(igout,k) 497 ! .,pmflxs(igout,k+1)498 ! print*,'phy apres_add_con itap da phi mp ftd fqd lalim wgth', 499 ! .itap,da(igout,k),phi(igout,k,k),mp(igout,k),ftd(igout,k), 500 ! .fqd(igout,k),lalim_conv(igout),wght_th(igout,k)514 ! print*,'physiq apres_add_con i k it d_u d_v d_t d_q qdl0',igout, & 515 ! k,itap,d_u_con(igout,k) ,d_v_con(igout,k), d_t_con(igout,k), & 516 ! d_q_con(igout,k),dql0(igout,k) 517 ! print*,'phys apres_add_con itap Ma cin ALE ALP wak t q undi t q', & 518 ! itap,Ma(igout,k),cin(igout),ALE(igout), ALP(igout), & 519 ! t_wake(igout,k),q_wake(igout,k),t_undi(igout,k),q_undi(igout,k) 520 ! print*,'phy apres_add_con itap CON rain snow EMA wk1 wk2 Vpp mip', & 521 ! itap,rain_con(igout),snow_con(igout),ema_work1(igout,k), & 522 ! ema_work2(igout,k),Vprecip(igout,k), mip(igout,k) 523 ! print*,'phy apres_add_con itap upwd dnwd dnwd0 cape tvp Tconv ', & 524 ! itap,upwd(igout,k),dnwd(igout,k),dnwd0(igout,k),cape(igout), & 525 ! tvp(igout,k),Tconv(igout,k) 526 ! print*,'phy apres_add_con itap dtvpdt dtvdq dplcl dplcldr qcondc', & 527 ! itap,dtvpdt1(igout,k),dtvpdq1(igout,k),dplcldt(igout), & 528 ! dplcldr(igout),qcondc(igout,k) 529 ! print*,'phy apres_add_con itap wd pmflxr Kpmflxr Kp1 Kpmflxs Kp1', & 530 ! itap,wd(igout),pmflxr(igout,k),pmflxr(igout,k+1),pmflxs(igout,k), & 531 ! pmflxs(igout,k+1) 532 ! print*,'phy apres_add_con itap da phi mp ftd fqd lalim wgth', & 533 ! itap,da(igout,k),phi(igout,k,k),mp(igout,k),ftd(igout,k), & 534 ! fqd(igout,k),lalim_conv(igout),wght_th(igout,k) 501 535 END DO 502 536 END IF !(prt_level.EQ.20) THEN
Note: See TracChangeset
for help on using the changeset viewer.