Changeset 2853 for LMDZ5/trunk
- Timestamp:
- Apr 14, 2017, 1:25:26 PM (8 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/concvl.F90
r2824 r2853 13 13 !RomP >>> 14 14 !! . da,phi,mp,dd_t,dd_q,lalim_conv,wght_th) 15 da, phi, mp, phi 2, d1a, dam, sij, clw, elij, & ! RomP15 da, phi, mp, phii, d1a, dam, sij, clw, elij, & ! RomP 16 16 dd_t, dd_q, lalim_conv, wght_th, & ! RomP 17 17 evap, ep, epmlmMm, eplaMm, & ! RomP … … 87 87 include "clesphys.h" 88 88 89 INTEGER iflag_clos 90 91 REAL dtime, paprs(klon, klev+1), pplay(klon, klev) 92 INTEGER k_upper_cv 93 REAL t(klon, klev), q(klon, klev), u(klon, klev), v(klon, klev) 94 REAL t_wake(klon, klev), q_wake(klon, klev) 95 REAL s_wake(klon) 96 REAL tra(klon, klev, nbtr) 97 INTEGER ntra 98 REAL sig1(klon, klev), w01(klon, klev), ptop2(klon) 99 REAL pmflxr(klon, klev+1), pmflxs(klon, klev+1) 100 REAL Ale(klon), Alp(klon) 101 102 REAL d_t(klon, klev), d_q(klon, klev), d_u(klon, klev), d_v(klon, klev) 103 REAL dd_t(klon, klev), dd_q(klon, klev) 104 REAL d_tra(klon, klev, nbtr) 105 REAL rain(klon), snow(klon) 106 107 INTEGER kbas(klon), ktop(klon) 108 REAL em_ph(klon, klev+1), em_p(klon, klev) 109 REAL upwd(klon, klev), dnwd(klon, klev), dnwdbis(klon, klev) 110 111 !! REAL Ma(klon,klev), mip(klon,klev),Vprecip(klon,klev) !jyg 112 REAL Ma(klon, klev), mip(klon, klev), Vprecip(klon, klev+1) !jyg 113 REAL Vprecipi(klon, klev+1) !jyg 114 REAL wght(klon, klev) !RL 115 116 REAL da(klon, klev), phi(klon, klev, klev), mp(klon, klev) 89 INTEGER, INTENT(IN) :: iflag_clos 90 REAL, INTENT(IN) :: dtime 91 REAL, DIMENSION(klon,klev), INTENT(IN) :: pplay 92 REAL, DIMENSION(klon,klev+1), INTENT(IN) :: paprs 93 INTEGER, INTENT(IN) :: k_upper_cv 94 REAL, DIMENSION(klon,klev), INTENT(IN) :: t, q, u, v 95 REAL, DIMENSION(klon,klev), INTENT(IN) :: t_wake, q_wake 96 REAL, DIMENSION(klon), INTENT(IN) :: s_wake 97 REAL, DIMENSION(klon,klev, nbtr),INTENT(IN) :: tra 98 INTEGER, INTENT(IN) :: ntra 99 REAL, DIMENSION(klon), INTENT(IN) :: Ale, Alp 100 !CR:test: on passe lentr et alim_star des thermiques 101 INTEGER, DIMENSION(klon), INTENT(IN) :: lalim_conv 102 REAL, DIMENSION(klon,klev), INTENT(IN) :: wght_th 103 104 REAL, DIMENSION(klon,klev), INTENT(INOUT) :: sig1, w01 105 106 REAL, DIMENSION(klon,klev), INTENT(OUT) :: d_t, d_q, d_u, d_v 107 REAL, DIMENSION(klon,klev, nbtr),INTENT(OUT) :: d_tra 108 REAL, DIMENSION(klon), INTENT(OUT) :: rain, snow 109 110 INTEGER, DIMENSION(klon), INTENT(OUT) :: kbas, ktop 111 REAL, DIMENSION(klon), INTENT(OUT) :: sigd 112 REAL, DIMENSION(klon), INTENT(OUT) :: cbmf, plcl, plfc, wbeff 113 REAL, DIMENSION(klon), INTENT(OUT) :: convoccur 114 REAL, DIMENSION(klon,klev), INTENT(OUT) :: upwd, dnwd, dnwdbis 115 116 !! REAL Ma(klon,klev), mip(klon,klev),Vprecip(klon,klev) !jyg 117 REAL, DIMENSION(klon,klev), INTENT(OUT) :: Ma, mip 118 REAL, DIMENSION(klon,klev+1), INTENT(OUT) :: Vprecip !jyg 119 REAL, DIMENSION(klon), INTENT(OUT) :: cape, cin 120 REAL, DIMENSION(klon,klev), INTENT(OUT) :: tvp 121 REAL, DIMENSION(klon,klev), INTENT(OUT) :: Tconv 122 INTEGER, DIMENSION(klon), INTENT(OUT) :: iflag 123 REAL, DIMENSION(klon), INTENT(OUT) :: pbase, bbase 124 REAL, DIMENSION(klon,klev), INTENT(OUT) :: dtvpdt1, dtvpdq1 125 REAL, DIMENSION(klon), INTENT(OUT) :: dplcldt, dplcldr 126 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qcondc 127 REAL, DIMENSION(klon), INTENT(OUT) :: wd 128 REAL, DIMENSION(klon,klev+1), INTENT(OUT) :: pmflxr, pmflxs 129 130 REAL, DIMENSION(klon,klev), INTENT(OUT) :: da, mp 131 REAL, DIMENSION(klon,klev,klev),INTENT(OUT) :: phi 117 132 ! RomP >>> 118 REAL phi2(klon, klev, klev) 119 REAL d1a(klon, klev), dam(klon, klev) 120 REAL sij(klon, klev, klev), clw(klon, klev), elij(klon, klev, klev) 121 REAL wdtrainA(klon, klev), wdtrainM(klon, klev) 122 REAL evap(klon, klev), ep(klon, klev) 123 REAL epmlmMm(klon, klev, klev), eplaMm(klon, klev) 133 REAL, DIMENSION(klon,klev,klev),INTENT(OUT) :: phii 134 REAL, DIMENSION(klon,klev), INTENT(OUT) :: d1a, dam 135 REAL, DIMENSION(klon,klev,klev),INTENT(OUT) :: sij, elij 136 REAL, DIMENSION(klon,klev), INTENT(OUT) :: clw 137 REAL, DIMENSION(klon,klev), INTENT(OUT) :: dd_t, dd_q 138 REAL, DIMENSION(klon,klev), INTENT(OUT) :: evap, ep 139 REAL, DIMENSION(klon,klev), INTENT(OUT) :: eplaMm 140 REAL, DIMENSION(klon,klev,klev), INTENT(OUT) :: epmlmMm 141 REAL, DIMENSION(klon,klev), INTENT(OUT) :: wdtrainA, wdtrainM 124 142 ! RomP <<< 125 REAL cape(klon), cin(klon), tvp(klon, klev) 126 REAL Tconv(klon, klev) 127 128 !CR:test: on passe lentr et alim_star des thermiques 129 INTEGER lalim_conv(klon) 130 REAL wght_th(klon, klev) 131 REAL em_sig1feed ! sigma at lower bound of feeding layer 132 REAL em_sig2feed ! sigma at upper bound of feeding layer 133 REAL em_wght(klev) ! weight density determining the feeding mixture 143 REAL, DIMENSION(klon,klev), INTENT(OUT) :: wght !RL 144 REAL, DIMENSION(klon,klev), INTENT(OUT) :: qtc 145 REAL, DIMENSION(klon,klev), INTENT(OUT) :: sigt 146 REAL, INTENT(OUT) :: tau_cld_cv, coefw_cld_cv 147 REAL, DIMENSION(klon), INTENT(OUT) :: epmax_diag ! epmax_cape 148 149 ! 150 ! Local 151 ! ---- 152 REAL, DIMENSION(klon,klev) :: em_p 153 REAL, DIMENSION(klon,klev+1) :: em_ph 154 REAL :: em_sig1feed ! sigma at lower bound of feeding layer 155 REAL :: em_sig2feed ! sigma at upper bound of feeding layer 156 REAL, DIMENSION(klev) :: em_wght ! weight density determining the feeding mixture 157 REAL, DIMENSION(klon,klev+1) :: Vprecipi !jyg 134 158 !on enleve le save 135 159 ! SAVE em_sig1feed,em_sig2feed,em_wght 136 160 137 INTEGER iflag(klon) 138 REAL rflag(klon) 139 REAL pbase(klon), bbase(klon) 140 REAL dtvpdt1(klon, klev), dtvpdq1(klon, klev) 141 REAL dplcldt(klon), dplcldr(klon) 142 REAL qcondc(klon, klev) 143 REAL qtc(klon, klev) 144 REAL sigt(klon, klev) 145 REAL wd(klon) 146 REAL plim1(klon), plim2(klon), asupmax(klon, klev) 147 REAL supmax0(klon), asupmaxmin(klon) 148 149 REAL sigd(klon) 150 REAL zx_t, zdelta, zx_qs, zcor 151 REAL tau_cld_cv, coefw_cld_cv 152 REAL epmax_diag(klon) ! epmax_cape 153 161 REAL, DIMENSION(klon) :: rflag 162 REAL, DIMENSION(klon) :: plim1, plim2 163 REAL, DIMENSION(klon) :: ptop2 164 REAL, DIMENSION(klon,klev) :: asupmax 165 REAL, DIMENSION(klon) :: supmax0, asupmaxmin 166 REAL :: zx_t, zdelta, zx_qs, zcor 167 ! 154 168 ! INTEGER iflag_mix 155 169 ! SAVE iflag_mix 156 INTEGER noff, minorig 157 INTEGER i, k, itra 158 REAL qs(klon, klev), qs_wake(klon, klev) 159 REAL cbmf(klon), plcl(klon), plfc(klon), wbeff(klon) 160 REAL convoccur(klon) 170 INTEGER :: noff, minorig 171 INTEGER :: i,j, k, itra 172 REAL, DIMENSION(klon,klev) :: qs, qs_wake 161 173 !LF SAVE cbmf 162 174 !IM/JYG REAL, SAVE, ALLOCATABLE :: cbmf(:) 163 175 !!!$OMP THREADPRIVATE(cbmf)! 164 REAL cbmflast(klon) 165 INTEGER ifrst 166 SAVE ifrst 167 DATA ifrst/0/ 168 !$OMP THREADPRIVATE(ifrst) 176 REAL, DIMENSION(klon) :: cbmflast 169 177 170 178 … … 259 267 snow(:) = 0 260 268 261 ! IF (ifrst .EQ. 0) THEN262 ! ifrst = 1263 269 IF (first) THEN 264 270 first = .FALSE. … … 293 299 sigd(i) = 0. 294 300 END DO 295 END IF !( ifrst .EQ. 0)301 END IF !(first) 296 302 297 303 ! Initialisation a chaque pas de temps … … 393 399 kbas, ktop, & 394 400 dtime, Ma, upwd, dnwd, dnwdbis, qcondc, wd, cape, & 395 da, phi, mp, phi 2, d1a, dam, sij, clw, elij, & !RomP401 da, phi, mp, phii, d1a, dam, sij, clw, elij, & !RomP 396 402 evap, ep, epmlmMm, eplaMm, & !RomP 397 403 wdtrainA, wdtrainM, & !RomP … … 428 434 asupmaxmin, lalim_conv, & 429 435 !AC!+!RomP+jyg 430 !! da,phi,mp,phi 2,d1a,dam,sij,clw,elij, & ! RomP436 !! da,phi,mp,phii,d1a,dam,sij,clw,elij, & ! RomP 431 437 !! evap,ep,epmlmMm,eplaMm, ! RomP 432 da, phi, mp, phi 2, d1a, dam, sij, wght, & ! RomP+RL438 da, phi, mp, phii, d1a, dam, sij, wght, & ! RomP+RL 433 439 clw, elij, evap, ep, epmlmMm, eplaMm, & ! RomP+RL 434 440 wdtrainA, wdtrainM, qtc, sigt, & -
LMDZ5/trunk/libf/phylmd/cva_driver.F90
r2761 r2853 39 39 ! ************************************************************** 40 40 41 USE dimphy42 41 USE print_control_mod, ONLY: prt_level, lunout 43 42 IMPLICIT NONE … … 168 167 INTEGER, INTENT (IN) :: ndp1 169 168 INTEGER, INTENT (IN) :: ntra 170 INTEGER, INTENT(IN) :: nloc ! (nloc= klon) pour l'instant169 INTEGER, INTENT(IN) :: nloc ! (nloc=len) pour l'instant 171 170 INTEGER, INTENT (IN) :: k_upper 172 171 INTEGER, INTENT (IN) :: iflag_con … … 219 218 REAL, DIMENSION (len), INTENT (OUT) :: ptop21 220 219 REAL, DIMENSION (len), INTENT (OUT) :: sigd1 221 REAL, DIMENSION (len, nd), INTENT (OUT) :: ma1 222 REAL, DIMENSION (len, nd), INTENT (OUT) :: mip1 220 REAL, DIMENSION (len, nd), INTENT (OUT) :: ma1 ! adiab. asc. mass flux (staggered grid) 221 REAL, DIMENSION (len, nd), INTENT (OUT) :: mip1 ! mass flux shed from adiab. ascent (extensive) 223 222 ! real Vprecip1(len,nd) 224 REAL, DIMENSION (len, ndp1), INTENT (OUT) :: vprecip1 225 REAL, DIMENSION (len, ndp1), INTENT (OUT) :: vprecipi1 226 REAL, DIMENSION (len, nd), INTENT (OUT) :: upwd1 227 REAL, DIMENSION (len, nd), INTENT (OUT) :: dnwd1 228 REAL, DIMENSION (len, nd), INTENT (OUT) :: dnwd01 229 REAL, DIMENSION (len, nd), INTENT (OUT) :: qcondc1 223 REAL, DIMENSION (len, ndp1), INTENT (OUT) :: vprecip1 ! tot precipitation flux (staggered grid) 224 REAL, DIMENSION (len, ndp1), INTENT (OUT) :: vprecipi1 ! ice precipitation flux (staggered grid) 225 REAL, DIMENSION (len, nd), INTENT (OUT) :: upwd1 ! upwd sat. mass flux (staggered grid) 226 REAL, DIMENSION (len, nd), INTENT (OUT) :: dnwd1 ! dnwd sat. mass flux (staggered grid) 227 REAL, DIMENSION (len, nd), INTENT (OUT) :: dnwd01 ! unsat. mass flux (staggered grid) 228 REAL, DIMENSION (len, nd), INTENT (OUT) :: qcondc1 ! max cloud condensate (intensive) ! cld 230 229 REAL, DIMENSION (len), INTENT (OUT) :: wd1 ! gust 231 230 REAL, DIMENSION (len), INTENT (OUT) :: cape1 232 231 REAL, DIMENSION (len), INTENT (OUT) :: cin1 233 REAL, DIMENSION (len, nd), INTENT (OUT) :: tvp1 232 REAL, DIMENSION (len, nd), INTENT (OUT) :: tvp1 ! Virt. temp. in the adiab. ascent 234 233 235 234 !AC! … … 237 236 !! real da(len,nd),phi(len,nd,nd) 238 237 !AC! 239 REAL, DIMENSION (len, nd), INTENT (OUT) :: ftd1 240 REAL, DIMENSION (len, nd), INTENT (OUT) :: fqd1 238 REAL, DIMENSION (len, nd), INTENT (OUT) :: ftd1 ! Temp. tendency due to the sole unsat. drafts 239 REAL, DIMENSION (len, nd), INTENT (OUT) :: fqd1 ! Moist. tendency due to the sole unsat. drafts 241 240 REAL, DIMENSION (len), INTENT (OUT) :: Plim11 242 241 REAL, DIMENSION (len), INTENT (OUT) :: Plim21 243 REAL, DIMENSION (len, nd), INTENT (OUT) :: asupmax1 242 REAL, DIMENSION (len, nd), INTENT (OUT) :: asupmax1 ! Highest mixing fraction of mixed updraughts 244 243 REAL, DIMENSION (len), INTENT (OUT) :: supmax01 245 244 REAL, DIMENSION (len), INTENT (OUT) :: asupmaxmin1 246 REAL, DIMENSION (len, nd), INTENT (OUT) :: qtc1 247 REAL, DIMENSION (len, nd), INTENT (OUT) :: sigt1 ! cld245 REAL, DIMENSION (len, nd), INTENT (OUT) :: qtc1 ! in cloud water content (intensive) ! cld 246 REAL, DIMENSION (len, nd), INTENT (OUT) :: sigt1 ! fract. cloud area (intensive) ! cld 248 247 249 248 ! RomP >>> 250 REAL, DIMENSION (len, nd), INTENT (OUT) :: wdtrainA1, wdtrainM1 251 REAL, DIMENSION (len, nd), INTENT (OUT) :: da1, mp1 252 REAL, DIMENSION (len, nd, nd), INTENT (OUT) :: phi1 253 REAL, DIMENSION (len, nd, nd), INTENT (OUT) :: epmlmMm1 254 REAL, DIMENSION (len, nd), INTENT (OUT) :: eplaMm1 255 REAL, DIMENSION (len, nd), INTENT (OUT) :: evap1, ep1 256 REAL, DIMENSION (len, nd, nd), INTENT (OUT) :: sigij1, elij1 257 REAL, DIMENSION (len, nd), INTENT (OUT) :: clw1 249 REAL, DIMENSION (len, nd), INTENT (OUT) :: wdtrainA1, wdtrainM1 ! precipitation sources (extensive) 250 REAL, DIMENSION (len, nd), INTENT (OUT) :: mp1 ! unsat. mass flux (staggered grid) 251 REAL, DIMENSION (len, nd), INTENT (OUT) :: da1 ! detrained mass flux of adiab. asc. air (extensive) 252 REAL, DIMENSION (len, nd, nd), INTENT (OUT) :: phi1 ! mass flux of envt. air in mixed draughts (extensive) 253 REAL, DIMENSION (len, nd, nd), INTENT (OUT) :: epmlmMm1 ! (extensive) 254 REAL, DIMENSION (len, nd), INTENT (OUT) :: eplaMm1 ! (extensive) 255 REAL, DIMENSION (len, nd), INTENT (OUT) :: evap1 ! evaporation rate in precip. downdraft. (intensive) 256 REAL, DIMENSION (len, nd), INTENT (OUT) :: ep1 257 REAL, DIMENSION (len, nd, nd), INTENT (OUT) :: sigij1 ! mass fraction of env. air in mixed draughts (intensive) 258 REAL, DIMENSION (len, nd, nd), INTENT (OUT) :: elij1! cond. water per unit mass of mixed draughts (intensive) 259 REAL, DIMENSION (len, nd), INTENT (OUT) :: clw1 ! cond. water per unit mass of the adiab. asc. (intensive) 258 260 !JYG,RL 259 REAL, DIMENSION (len, nd), INTENT (OUT) :: wghti1 ! final weight of the feeding layers261 REAL, DIMENSION (len, nd), INTENT (OUT) :: wghti1 ! final weight of the feeding layers (extensive) 260 262 !JYG,RL 261 REAL, DIMENSION (len, nd, nd), INTENT (OUT) :: phi21 262 REAL, DIMENSION (len, nd), INTENT (OUT) :: d1a1, dam1 263 REAL, DIMENSION (len, nd, nd), INTENT (OUT) :: phi21 ! (extensive) 264 REAL, DIMENSION (len, nd), INTENT (OUT) :: d1a1 ! (extensive) 265 REAL, DIMENSION (len, nd), INTENT (OUT) :: dam1 ! (extensive) 263 266 ! RomP <<< 264 267 REAL, DIMENSION (len ), INTENT (OUT) :: epmax_diag1 … … 395 398 396 399 397 INTEGER i, k, n, il, j400 INTEGER i, k, il 398 401 INTEGER nword1, nword2, nword3, nword4 399 402 INTEGER icbmax 400 INTEGER nk1( klon)401 INTEGER icb1( klon)402 INTEGER icbs1( klon)403 INTEGER nk1(len) 404 INTEGER icb1(len) 405 INTEGER icbs1(len) 403 406 404 407 LOGICAL ok_inhib ! True => possible inhibition of convection by dryness … … 407 410 408 411 REAL coef_convective(len) ! = 1 for convective points, = 0 otherwise 409 REAL tnk1(klon) 410 REAL thnk1(klon) 411 REAL qnk1(klon) 412 REAL gznk1(klon) 413 REAL pnk1(klon) 414 REAL qsnk1(klon) 415 REAL unk1(klon) 416 REAL vnk1(klon) 417 REAL cpnk1(klon) 418 REAL hnk1(klon) 419 REAL pbase1(klon) 420 REAL buoybase1(klon) 421 422 REAL lf1(klon, klev), lf1_wake(klon, klev) 423 REAL lv1(klon, klev), lv1_wake(klon, klev) 424 REAL cpn1(klon, klev), cpn1_wake(klon, klev) 425 REAL tv1(klon, klev), tv1_wake(klon, klev) 426 REAL gz1(klon, klev), gz1_wake(klon, klev) 427 REAL hm1(klon, klev), hm1_wake(klon, klev) 428 REAL h1(klon, klev), h1_wake(klon, klev) 429 REAL tp1(klon, klev) 430 REAL th1(klon, klev), th1_wake(klon, klev) 431 432 REAL bid(klon, klev) ! dummy array 412 REAL tnk1(len) 413 REAL thnk1(len) 414 REAL qnk1(len) 415 REAL gznk1(len) 416 REAL qsnk1(len) 417 REAL unk1(len) 418 REAL vnk1(len) 419 REAL cpnk1(len) 420 REAL hnk1(len) 421 REAL pbase1(len) 422 REAL buoybase1(len) 423 424 REAL lf1(len, nd), lf1_wake(len, nd) 425 REAL lv1(len, nd), lv1_wake(len, nd) 426 REAL cpn1(len, nd), cpn1_wake(len, nd) 427 REAL tv1(len, nd), tv1_wake(len, nd) 428 REAL gz1(len, nd), gz1_wake(len, nd) 429 REAL hm1(len, nd) 430 REAL h1(len, nd), h1_wake(len, nd) 431 REAL tp1(len, nd) 432 REAL th1(len, nd), th1_wake(len, nd) 433 434 REAL bid(len, nd) ! dummy array 433 435 434 436 INTEGER ncum 435 437 436 INTEGER j1feed(klon)437 INTEGER j2feed(klon)438 438 REAL p1feed1(len) ! pressure at lower bound of feeding layer 439 439 REAL p2feed1(len) ! pressure at upper bound of feeding layer … … 450 450 !>jyg 451 451 INTEGER iflag(nloc), nk(nloc), icb(nloc) 452 INTEGER nent(nloc, klev)452 INTEGER nent(nloc, nd) 453 453 INTEGER icbs(nloc) 454 454 INTEGER inb(nloc), inbis(nloc) 455 455 456 456 REAL cbmf(nloc), plcl(nloc), plfc(nloc), wbeff(nloc) 457 REAL t(nloc, klev), q(nloc, klev), qs(nloc, klev)458 REAL t_wake(nloc, klev), q_wake(nloc, klev), qs_wake(nloc, klev)457 REAL t(nloc, nd), q(nloc, nd), qs(nloc, nd) 458 REAL t_wake(nloc, nd), q_wake(nloc, nd), qs_wake(nloc, nd) 459 459 REAL s_wake(nloc) 460 REAL u(nloc, klev), v(nloc, klev)461 REAL gz(nloc, klev), h(nloc, klev), hm(nloc, klev)462 REAL h_wake(nloc, klev), hm_wake(nloc, klev)463 REAL lv(nloc, klev), lf(nloc, klev), cpn(nloc, klev)464 REAL lv_wake(nloc, klev), lf_wake(nloc, klev), cpn_wake(nloc, klev)465 REAL p(nloc, klev), ph(nloc, klev+1), tv(nloc, klev), tp(nloc, klev)466 REAL tv_wake(nloc, klev)467 REAL clw(nloc, klev)468 REAL dph(nloc, klev)469 REAL pbase(nloc), buoybase(nloc), th(nloc, klev)470 REAL th_wake(nloc, klev)471 REAL tvp(nloc, klev)472 REAL sig(nloc, klev), w0(nloc, klev), ptop2(nloc)473 REAL hp(nloc, klev), ep(nloc, klev), sigp(nloc, klev)474 REAL buoy(nloc, klev)460 REAL u(nloc, nd), v(nloc, nd) 461 REAL gz(nloc, nd), h(nloc, nd) 462 REAL h_wake(nloc, nd) 463 REAL lv(nloc, nd), lf(nloc, nd), cpn(nloc, nd) 464 REAL lv_wake(nloc, nd), lf_wake(nloc, nd), cpn_wake(nloc, nd) 465 REAL p(nloc, nd), ph(nloc, nd+1), tv(nloc, nd), tp(nloc, nd) 466 REAL tv_wake(nloc, nd) 467 REAL clw(nloc, nd) 468 REAL dph(nloc, nd) 469 REAL pbase(nloc), buoybase(nloc), th(nloc, nd) 470 REAL th_wake(nloc, nd) 471 REAL tvp(nloc, nd) 472 REAL sig(nloc, nd), w0(nloc, nd), ptop2(nloc) 473 REAL hp(nloc, nd), ep(nloc, nd), sigp(nloc, nd) 474 REAL buoy(nloc, nd) 475 475 REAL cape(nloc) 476 476 REAL cin(nloc) 477 REAL m(nloc, klev)478 REAL ment(nloc, klev, klev), sigij(nloc, klev, klev)479 REAL qent(nloc, klev, klev)480 REAL hent(nloc, klev, klev)481 REAL uent(nloc, klev, klev), vent(nloc, klev, klev)482 REAL ments(nloc, klev, klev), qents(nloc, klev, klev)483 REAL elij(nloc, klev, klev)484 REAL supmax(nloc, klev)477 REAL m(nloc, nd) 478 REAL ment(nloc, nd, nd), sigij(nloc, nd, nd) 479 REAL qent(nloc, nd, nd) 480 REAL hent(nloc, nd, nd) 481 REAL uent(nloc, nd, nd), vent(nloc, nd, nd) 482 REAL ments(nloc, nd, nd), qents(nloc, nd, nd) 483 REAL elij(nloc, nd, nd) 484 REAL supmax(nloc, nd) 485 485 REAL Ale(nloc), Alp(nloc), coef_clos(nloc) 486 REAL omega(nloc, klev)486 REAL omega(nloc,nd) 487 487 REAL sigd(nloc) 488 ! real mp(nloc, klev), qp(nloc,klev), up(nloc,klev), vp(nloc,klev)489 ! real wt(nloc, klev), water(nloc,klev), evap(nloc,klev), ice(nloc,klev)490 ! real b(nloc, klev), sigd(nloc)488 ! real mp(nloc,nd), qp(nloc,nd), up(nloc,nd), vp(nloc,nd) 489 ! real wt(nloc,nd), water(nloc,nd), evap(nloc,nd), ice(nloc,nd) 490 ! real b(nloc,nd), sigd(nloc) 491 491 ! save mp,qp,up,vp,wt,water,evap,b 492 REAL, SAVE, ALLOCATABLE :: mp(:, :), qp(:, :), up(:, :), vp(:, :) 493 REAL, SAVE, ALLOCATABLE :: wt(:, :), water(:, :), evap(:, :) 494 REAL, SAVE, ALLOCATABLE :: ice(:, :), fondue(:, :), b(:, :) 495 REAL, SAVE, ALLOCATABLE :: frac(:, :), faci(:, :) 496 !$OMP THREADPRIVATE(mp,qp,up,vp,wt,water,evap,ice,fondue,b,frac,faci) 497 REAL ft(nloc, klev), fq(nloc, klev) 498 REAL ftd(nloc, klev), fqd(nloc, klev) 499 REAL fu(nloc, klev), fv(nloc, klev) 500 REAL upwd(nloc, klev), dnwd(nloc, klev), dnwd0(nloc, klev) 501 REAL ma(nloc, klev), mip(nloc, klev) 502 !! REAL tls(nloc, klev), tps(nloc, klev) ! unused . jyg 492 REAL, DIMENSION(len,nd) :: mp, qp, up, vp 493 REAL, DIMENSION(len,nd) :: wt, water, evap 494 REAL, DIMENSION(len,nd) :: ice, fondue, b 495 REAL, DIMENSION(len,nd) :: frac, faci 496 REAL ft(nloc, nd), fq(nloc, nd) 497 REAL ftd(nloc, nd), fqd(nloc, nd) 498 REAL fu(nloc, nd), fv(nloc, nd) 499 REAL upwd(nloc, nd), dnwd(nloc, nd), dnwd0(nloc, nd) 500 REAL ma(nloc, nd), mip(nloc, nd) 501 !! REAL tls(nloc, nd), tps(nloc, nd) ! unused . jyg 503 502 REAL qprime(nloc), tprime(nloc) 504 503 REAL precip(nloc) 505 ! real Vprecip(nloc, klev)506 REAL vprecip(nloc, klev+1)507 REAL vprecipi(nloc, klev+1)508 REAL tra(nloc, klev, ntra), trap(nloc, klev, ntra)509 REAL ftra(nloc, klev, ntra), traent(nloc, klev, klev, ntra)510 REAL qcondc(nloc, klev) ! cld504 ! real Vprecip(nloc,nd) 505 REAL vprecip(nloc, nd+1) 506 REAL vprecipi(nloc, nd+1) 507 REAL tra(nloc, nd, ntra), trap(nloc, nd, ntra) 508 REAL ftra(nloc, nd, ntra), traent(nloc, nd, nd, ntra) 509 REAL qcondc(nloc, nd) ! cld 511 510 REAL wd(nloc) ! gust 512 511 REAL Plim1(nloc), plim2(nloc) 513 REAL asupmax(nloc, klev)512 REAL asupmax(nloc, nd) 514 513 REAL supmax0(nloc) 515 514 REAL asupmaxmin(nloc) … … 519 518 REAL hnk(nloc), unk(nloc), vnk(nloc) 520 519 521 REAL qtc(nloc, klev) ! cld522 REAL sigt(nloc, klev) ! cld520 REAL qtc(nloc, nd) ! cld 521 REAL sigt(nloc, nd) ! cld 523 522 524 523 ! RomP >>> 525 REAL wdtrainA(nloc, klev), wdtrainM(nloc, klev)524 REAL wdtrainA(nloc, nd), wdtrainM(nloc, nd) 526 525 REAL da(len, nd), phi(len, nd, nd) 527 REAL epmlmMm(nloc, klev, klev), eplaMm(nloc, klev)526 REAL epmlmMm(nloc, nd, nd), eplaMm(nloc, nd) 528 527 REAL phi2(len, nd, nd) 529 528 REAL d1a(len, nd), dam(len, nd) … … 531 530 REAL epmax_diag(nloc) ! epmax_cape 532 531 533 LOGICAL, SAVE :: first = .TRUE.534 !$OMP THREADPRIVATE(first)535 532 CHARACTER (LEN=20) :: modname = 'cva_driver' 536 533 CHARACTER (LEN=80) :: abort_message … … 540 537 541 538 542 ! print *, 't1, t1_wake ',(k,t1(1,k),t1_wake(1,k),k=1, klev)543 ! print *, 'q1, q1_wake ',(k,q1(1,k),q1_wake(1,k),k=1, klev)539 ! print *, 't1, t1_wake ',(k,t1(1,k),t1_wake(1,k),k=1,nd) 540 ! print *, 'q1, q1_wake ',(k,q1(1,k),q1_wake(1,k),k=1,nd) 544 541 545 542 ! ------------------------------------------------------------------- … … 547 544 ! ------------------------------------------------------------------- 548 545 549 IF (first) THEN550 ALLOCATE (mp(nloc,klev), qp(nloc,klev), up(nloc,klev))551 ALLOCATE (vp(nloc,klev), wt(nloc,klev), water(nloc,klev))552 ALLOCATE (ice(nloc,klev), fondue(nloc,klev))553 ALLOCATE (evap(nloc,klev), b(nloc,klev))554 ALLOCATE (frac(nloc,klev), faci(nloc,klev))555 first = .FALSE.556 END IF557 546 ! -- set simulation flags: 558 547 ! (common cvflag) … … 736 725 ! print*, 'IFLAG1 avant cv3_feed' 737 726 ! print*,'len,nd',len,nd 738 ! write(*,'(64i1)') iflag1(2: klon-1)727 ! write(*,'(64i1)') iflag1(2:len-1) 739 728 740 729 if (prt_level >= 9) & … … 749 738 ! print*, 'IFLAG1 apres cv3_feed' 750 739 ! print*,'len,nd',len,nd 751 ! write(*,'(64i1)') iflag1(2: klon-1)740 ! write(*,'(64i1)') iflag1(2:len-1) 752 741 753 742 IF (iflag_con==4) THEN … … 799 788 ! print*, 'IFLAG1 apres cv3_triger' 800 789 ! print*,'len,nd',len,nd 801 ! write(*,'(64i1)') iflag1(2: klon-1)790 ! write(*,'(64i1)') iflag1(2:len-1) 802 791 803 792 ! call dump2d(iim,jjm-1,sig1(2) … … 828 817 END DO 829 818 830 ! print*,' klon, ncum = ',len,ncum819 ! print*,'len, ncum = ',len,ncum 831 820 832 821 IF (ncum>0) THEN … … 944 933 ! END IF 945 934 IF (iflag_mix>=1) THEN 946 CALL zilch(supmax, nloc* klev)935 CALL zilch(supmax, nloc*nd) 947 936 if (prt_level >= 9) & 948 937 PRINT *, 'cva_driver -> cv3p_mixing' … … 955 944 956 945 ELSE 957 CALL zilch(supmax, nloc* klev)946 CALL zilch(supmax, nloc*nd) 958 947 END IF 959 948 END IF … … 1031 1020 unk, vnk, hp, tv, tvp, ep, clw, m, sig, & 1032 1021 ment, qent, uent, vent, nent, sigij, elij, ments, qents, traent) 1033 CALL zilch(hent, nloc* klev*klev)1022 CALL zilch(hent, nloc*nd*nd) 1034 1023 ELSE 1035 1024 CALL cv3_mixscale(nloc, ncum, nd, ment, m)
Note: See TracChangeset
for help on using the changeset viewer.