[524] | 1 | ! $Header$ |
---|
[766] | 2 | |
---|
[1992] | 3 | SUBROUTINE convect3(dtime, epmax, ok_adj, t1, r1, rs, u, v, tra, p, ph, nd, & |
---|
[5144] | 4 | ndp1, nl, ntra, delt, iflag, ft, fr, fu, fv, ftra, precip, icb, inb, & |
---|
| 5 | upwd, dnwd, dnwd0, sig, w0, mike, mke, ma, ments, qents, tps, tls, sigij, & |
---|
| 6 | cape, tvp, pbase, buoybase, & ! ccc * |
---|
| 7 | ! DTVPDT1,DTVPDQ1,DPLCLDT,DPLCLDR) |
---|
| 8 | dtvpdt1, dtvpdq1, dplcldt, dplcldr, & ! sbl |
---|
| 9 | ft2, fr2, fu2, fv2, wd, qcond, qcondc) ! sbl |
---|
[524] | 10 | |
---|
[1992] | 11 | ! *** THE PARAMETER NA SHOULD IN GENERAL EQUAL ND *** |
---|
[524] | 12 | |
---|
[1992] | 13 | ! ################################################################# |
---|
| 14 | ! Fleur Introduction des traceurs dans convect3 le 6 juin 200 |
---|
| 15 | ! ################################################################# |
---|
| 16 | USE dimphy |
---|
[2320] | 17 | USE infotrac_phy, ONLY: nbtr |
---|
[5144] | 18 | USE lmdz_yomcst |
---|
| 19 | |
---|
[2197] | 20 | IMPLICIT NONE |
---|
[1992] | 21 | INTEGER na |
---|
[5144] | 22 | PARAMETER (na = 60) |
---|
[524] | 23 | |
---|
[1992] | 24 | REAL deltac ! cld |
---|
[5144] | 25 | PARAMETER (deltac = 0.01) ! cld |
---|
[524] | 26 | |
---|
[1992] | 27 | INTEGER nent(na) |
---|
| 28 | INTEGER nd, ndp1, nl, ntra, iflag, icb, inb |
---|
| 29 | REAL dtime, epmax, delt, precip, cape |
---|
| 30 | REAL dplcldt, dplcldr |
---|
| 31 | REAL t1(nd), r1(nd), rs(nd), u(nd), v(nd), tra(nd, ntra) |
---|
| 32 | REAL p(nd), ph(ndp1) |
---|
| 33 | REAL ft(nd), fr(nd), fu(nd), fv(nd), ftra(nd, ntra) |
---|
| 34 | REAL sig(nd), w0(nd) |
---|
| 35 | REAL uent(na, na), vent(na, na), traent(na, na, nbtr), tratm(na) |
---|
| 36 | REAL up(na), vp(na), trap(na, nbtr) |
---|
| 37 | REAL m(na), mp(na), ment(na, na), qent(na, na), elij(na, na) |
---|
| 38 | REAL sij(na, na), tvp(na), tv(na), water(na) |
---|
| 39 | REAL rp(na), ep(na), th(na), wt(na), evap(na), clw(na) |
---|
| 40 | REAL sigp(na), b(na), tp(na), cpn(na) |
---|
| 41 | REAL lv(na), lvcp(na), h(na), hp(na), gz(na) |
---|
| 42 | REAL t(na), rr(na) |
---|
[524] | 43 | |
---|
[1992] | 44 | REAL ft2(nd), fr2(nd), fu2(nd), fv2(nd) ! added sbl |
---|
| 45 | REAL u1(nd), v1(nd) ! added sbl |
---|
[524] | 46 | |
---|
[1992] | 47 | REAL buoy(na) ! Lifted parcel buoyancy |
---|
| 48 | REAL dtvpdt1(nd), dtvpdq1(nd) ! Derivatives of parcel virtual |
---|
| 49 | ! temperature wrt T1 and Q1 |
---|
| 50 | REAL clw_new(na), qi(na) |
---|
[524] | 51 | |
---|
[1992] | 52 | REAL wd, betad ! for gust factor (sb) |
---|
| 53 | REAL qcondc(nd) ! interface cld param (sb) |
---|
| 54 | REAL qcond(nd), nqcond(na), wa(na), maa(na), siga(na), axc(na) ! cld |
---|
[524] | 55 | |
---|
[1992] | 56 | LOGICAL ice_conv, ok_adj |
---|
[5144] | 57 | PARAMETER (ice_conv = .TRUE.) |
---|
[524] | 58 | |
---|
[1992] | 59 | ! ccccccccccccccccccccccccccccccccccccccccccccc |
---|
| 60 | ! declaration des variables a sortir |
---|
| 61 | ! cccccccccccccccccccccccccccccccccccccccccccc |
---|
| 62 | REAL mke(nd) |
---|
| 63 | REAL mike(nd) |
---|
| 64 | REAL ma(nd) |
---|
| 65 | REAL tps(nd) !temperature dans les ascendances non diluees |
---|
| 66 | REAL tls(nd) !temperature potentielle |
---|
| 67 | REAL ments(nd, nd) |
---|
| 68 | REAL qents(nd, nd) |
---|
| 69 | REAL sigij(klev, klev) |
---|
| 70 | REAL pbase ! pressure at the cloud base level |
---|
| 71 | REAL buoybase ! buoyancy at the cloud base level |
---|
| 72 | ! ccccccccccccccccccccccccccccccccccccccccccccc |
---|
[524] | 73 | |
---|
[5144] | 74 | REAL :: cpv, cl, cpvmcl, eps, alv0, rdcp, pbcrit, ptcrit, sigd, spfac |
---|
| 75 | REAL :: tau, beta, alpha, dtcrit, dtovsh, ahm, rm, um, vm, dphinv |
---|
| 76 | REAL :: a2, x, tvx, tvy, plcl, pden, dpbase, tvpbase, tvbase, tdif |
---|
| 77 | REAL :: ath1, ath, delti, deltap, dcape, dlnp, sigold, dtmin, fac, w |
---|
| 78 | REAL :: amu, rti, cpd, bf2, anum, denom, dei, altem, cwat, stemp, qp |
---|
| 79 | REAL :: scrit, alt, smax, asij, wgh, sjmax, sjmin, smid, delp, delm |
---|
| 80 | REAL :: asum, bsum, csum, wflux, tinv, wdtrain, awat, afac, afac1, afac2 |
---|
| 81 | REAL :: bfac, pr1, pr2, sigt, b6, c6, revap, tevap, delth, amfac, amp2 |
---|
| 82 | REAL :: xf, tf, af, bf, fac2, ur, sru, d, ampmax, dpinv, am, amde, cpinv |
---|
| 83 | REAL :: amp1, ad, rat, ax, bx, cx, dx, ex, dsum |
---|
| 84 | INTEGER :: nk, i, j, nopt, jn, k, im, jm, n |
---|
[1992] | 85 | |
---|
| 86 | REAL dnwd0(nd) ! precipitation driven unsaturated downdraft flux |
---|
| 87 | REAL dnwd(nd), dn1 ! in-cloud saturated downdraft mass flux |
---|
| 88 | REAL upwd(nd), up1 ! in-cloud saturated updraft mass flux |
---|
| 89 | |
---|
| 90 | ! *** ASSIGN VALUES OF THERMODYNAMIC CONSTANTS *** |
---|
| 91 | ! *** THESE SHOULD BE CONSISTENT WITH *** |
---|
| 92 | ! *** THOSE USED IN CALLING PROGRAM *** |
---|
| 93 | ! *** NOTE: THESE ARE ALSO SPECIFIED IN SUBROUTINE TLIFT *** |
---|
| 94 | |
---|
| 95 | ! sb CPD=1005.7 |
---|
| 96 | ! sb CPV=1870.0 |
---|
| 97 | ! sb CL=4190.0 |
---|
| 98 | ! sb CPVMCL=CL-CPV |
---|
| 99 | ! sb RV=461.5 |
---|
| 100 | ! sb RD=287.04 |
---|
| 101 | ! sb EPS=RD/RV |
---|
| 102 | ! sb ALV0=2.501E6 |
---|
| 103 | ! cccccccccccccccccccccc |
---|
| 104 | ! constantes coherentes avec le modele du Centre Europeen |
---|
| 105 | ! sb RD = 1000.0 * 1.380658E-23 * 6.0221367E+23 / 28.9644 |
---|
| 106 | ! sb RV = 1000.0 * 1.380658E-23 * 6.0221367E+23 / 18.0153 |
---|
| 107 | ! sb CPD = 3.5 * RD |
---|
| 108 | ! sb CPV = 4.0 * RV |
---|
| 109 | ! sb CL = 4218.0 |
---|
| 110 | ! sb CPVMCL=CL-CPV |
---|
| 111 | ! sb EPS=RD/RV |
---|
| 112 | ! sb ALV0=2.5008E+06 |
---|
| 113 | ! ccccccccccccccccccccc |
---|
| 114 | ! on utilise les constantes thermo du Centre Europeen: (SB) |
---|
| 115 | |
---|
| 116 | cpd = rcpd |
---|
| 117 | cpv = rcpv |
---|
| 118 | cl = rcw |
---|
| 119 | cpvmcl = cl - cpv |
---|
[5144] | 120 | eps = rd / rv |
---|
[1992] | 121 | alv0 = rlvtt |
---|
| 122 | |
---|
| 123 | nk = 1 ! origin level of the lifted parcel |
---|
| 124 | |
---|
| 125 | ! ccccccccccccccccccccc |
---|
| 126 | |
---|
| 127 | ! *** INITIALIZE OUTPUT ARRAYS AND PARAMETERS *** |
---|
| 128 | |
---|
| 129 | DO i = 1, nd |
---|
| 130 | ft(i) = 0.0 |
---|
| 131 | fr(i) = 0.0 |
---|
| 132 | fu(i) = 0.0 |
---|
| 133 | fv(i) = 0.0 |
---|
| 134 | |
---|
| 135 | ft2(i) = 0.0 |
---|
| 136 | fr2(i) = 0.0 |
---|
| 137 | fu2(i) = 0.0 |
---|
| 138 | fv2(i) = 0.0 |
---|
| 139 | |
---|
| 140 | DO j = 1, ntra |
---|
| 141 | ftra(i, j) = 0.0 |
---|
| 142 | END DO |
---|
| 143 | |
---|
| 144 | qcondc(i) = 0.0 ! cld |
---|
| 145 | qcond(i) = 0.0 ! cld |
---|
| 146 | nqcond(i) = 0.0 ! cld |
---|
| 147 | |
---|
| 148 | t(i) = t1(i) |
---|
| 149 | rr(i) = r1(i) |
---|
| 150 | u1(i) = u(i) ! added sbl |
---|
| 151 | v1(i) = v(i) ! added sbl |
---|
| 152 | END DO |
---|
| 153 | DO i = 1, nl |
---|
[5144] | 154 | rdcp = (rd * (1. - rr(i)) + rr(i) * rv) / (cpd * (1. - rr(i)) + rr(i) * cpv) |
---|
| 155 | th(i) = t(i) * (1000.0 / p(i))**rdcp |
---|
[1992] | 156 | END DO |
---|
| 157 | |
---|
| 158 | ! ************************************************************ |
---|
| 159 | ! * CALCUL DES TEMPERATURES POTENTIELLES A SORTIR |
---|
| 160 | ! ************************************************************ |
---|
| 161 | DO i = 1, nd |
---|
[5144] | 162 | rdcp = (rd * (1. - rr(i)) + rr(i) * rv) / (cpd * (1. - rr(i)) + rr(i) * cpv) |
---|
[1992] | 163 | |
---|
[5144] | 164 | tls(i) = t(i) * (1000.0 / p(i))**rdcp |
---|
[1992] | 165 | END DO |
---|
| 166 | |
---|
| 167 | |
---|
| 168 | |
---|
| 169 | |
---|
| 170 | ! *********************************************************** |
---|
| 171 | |
---|
| 172 | precip = 0.0 |
---|
| 173 | wd = 0.0 ! sb |
---|
| 174 | iflag = 1 |
---|
| 175 | |
---|
| 176 | ! *** SPECIFY PARAMETERS *** |
---|
| 177 | ! *** PBCRIT IS THE CRITICAL CLOUD DEPTH (MB) BENEATH WHICH THE *** |
---|
| 178 | ! *** PRECIPITATION EFFICIENCY IS ASSUMED TO BE ZERO *** |
---|
| 179 | ! *** PTCRIT IS THE CLOUD DEPTH (MB) ABOVE WHICH THE PRECIP. *** |
---|
| 180 | ! *** EFFICIENCY IS ASSUMED TO BE UNITY *** |
---|
| 181 | ! *** SIGD IS THE FRACTIONAL AREA COVERED BY UNSATURATED DNDRAFT *** |
---|
| 182 | ! *** SPFAC IS THE FRACTION OF PRECIPITATION FALLING OUTSIDE *** |
---|
| 183 | ! *** OF CLOUD *** |
---|
| 184 | ! *** ALPHA AND BETA ARE PARAMETERS THAT CONTROL THE RATE OF *** |
---|
| 185 | ! *** APPROACH TO QUASI-EQUILIBRIUM *** |
---|
| 186 | ! *** (THEIR STANDARD VALUES ARE 1.0 AND 0.96, RESPECTIVELY) *** |
---|
| 187 | ! *** (BETA MUST BE LESS THAN OR EQUAL TO 1) *** |
---|
| 188 | ! *** DTCRIT IS THE CRITICAL BUOYANCY (K) USED TO ADJUST THE *** |
---|
| 189 | ! *** APPROACH TO QUASI-EQUILIBRIUM *** |
---|
| 190 | ! *** IT MUST BE LESS THAN 0 *** |
---|
| 191 | |
---|
| 192 | pbcrit = 150.0 |
---|
| 193 | ptcrit = 500.0 |
---|
| 194 | sigd = 0.01 |
---|
| 195 | spfac = 0.15 |
---|
| 196 | ! sb: |
---|
| 197 | ! EPMAX=0.993 ! precip efficiency less than unity |
---|
| 198 | ! EPMAX=1. ! precip efficiency less than unity |
---|
| 199 | |
---|
| 200 | ! jyg |
---|
| 201 | ! CC BETA=0.96 |
---|
| 202 | ! Beta is now expressed as a function of the characteristic time |
---|
| 203 | ! of the convective process. |
---|
| 204 | ! CC Old value : TAU = 15000. !(for dtime = 600.s) |
---|
| 205 | ! CC Other value (inducing little change) :TAU = 8000. |
---|
| 206 | tau = 8000. |
---|
[5144] | 207 | beta = 1. - dtime / tau |
---|
[1992] | 208 | ! jyg |
---|
| 209 | ! CC ALPHA=1.0 |
---|
[5144] | 210 | alpha = 1.5E-3 * dtime / tau |
---|
[1992] | 211 | ! Increase alpha in order to compensate W decrease |
---|
[5144] | 212 | alpha = alpha * 1.5 |
---|
[1992] | 213 | |
---|
| 214 | ! jyg (voir CONVECT 3) |
---|
| 215 | ! CC DTCRIT=-0.2 |
---|
| 216 | dtcrit = -2. |
---|
| 217 | ! gf&jyg |
---|
| 218 | ! CC DT pour l'overshoot. |
---|
| 219 | dtovsh = -0.2 |
---|
| 220 | |
---|
| 221 | |
---|
| 222 | ! *** INCREMENT THE COUNTER *** |
---|
| 223 | |
---|
| 224 | sig(nd) = sig(nd) + 1.0 |
---|
| 225 | sig(nd) = amin1(sig(nd), 12.1) |
---|
| 226 | |
---|
| 227 | ! *** IF NOPT IS AN INTEGER OTHER THAN 0, CONVECT *** |
---|
| 228 | ! *** RETURNS ARRAYS T AND R THAT MAY HAVE BEEN *** |
---|
| 229 | ! *** ALTERED BY DRY ADIABATIC ADJUSTMENT; OTHERWISE *** |
---|
| 230 | ! *** THE RETURNED ARRAYS ARE UNALTERED. *** |
---|
| 231 | |
---|
| 232 | nopt = 0 |
---|
[5113] | 233 | ! NOPT=1 ! sbl |
---|
[1992] | 234 | |
---|
| 235 | ! *** PERFORM DRY ADIABATIC ADJUSTMENT *** |
---|
| 236 | |
---|
| 237 | ! *** DO NOT BYPASS THIS EVEN IF THE CALLING PROGRAM HAS A *** |
---|
| 238 | ! *** BOUNDARY LAYER SCHEME !!! *** |
---|
| 239 | |
---|
| 240 | IF (ok_adj) THEN ! added sbl |
---|
| 241 | |
---|
| 242 | DO i = nl - 1, 1, -1 |
---|
| 243 | jn = 0 |
---|
| 244 | DO j = i + 1, nl |
---|
| 245 | IF (th(j)<th(i)) jn = j |
---|
| 246 | END DO |
---|
| 247 | IF (jn==0) GO TO 30 |
---|
| 248 | ahm = 0.0 |
---|
| 249 | rm = 0.0 |
---|
| 250 | um = 0.0 |
---|
| 251 | vm = 0.0 |
---|
| 252 | DO k = 1, ntra |
---|
| 253 | tratm(k) = 0.0 |
---|
| 254 | END DO |
---|
| 255 | DO j = i, jn |
---|
[5144] | 256 | ahm = ahm + (cpd * (1. - rr(j)) + rr(j) * cpv) * t(j) * (ph(j) - ph(j + 1)) |
---|
| 257 | rm = rm + rr(j) * (ph(j) - ph(j + 1)) |
---|
| 258 | um = um + u(j) * (ph(j) - ph(j + 1)) |
---|
| 259 | vm = vm + v(j) * (ph(j) - ph(j + 1)) |
---|
[1992] | 260 | DO k = 1, ntra |
---|
[5144] | 261 | tratm(k) = tratm(k) + tra(j, k) * (ph(j) - ph(j + 1)) |
---|
[1992] | 262 | END DO |
---|
| 263 | END DO |
---|
[5144] | 264 | dphinv = 1. / (ph(i) - ph(jn + 1)) |
---|
| 265 | rm = rm * dphinv |
---|
| 266 | um = um * dphinv |
---|
| 267 | vm = vm * dphinv |
---|
[1992] | 268 | DO k = 1, ntra |
---|
[5144] | 269 | tratm(k) = tratm(k) * dphinv |
---|
[1992] | 270 | END DO |
---|
| 271 | a2 = 0.0 |
---|
| 272 | DO j = i, jn |
---|
| 273 | rr(j) = rm |
---|
| 274 | u(j) = um |
---|
| 275 | v(j) = vm |
---|
| 276 | DO k = 1, ntra |
---|
| 277 | tra(j, k) = tratm(k) |
---|
| 278 | END DO |
---|
[5144] | 279 | rdcp = (rd * (1. - rr(j)) + rr(j) * rv) / (cpd * (1. - rr(j)) + rr(j) * cpv) |
---|
| 280 | x = (0.001 * p(j))**rdcp |
---|
[1992] | 281 | t(j) = x |
---|
[5144] | 282 | a2 = a2 + (cpd * (1. - rr(j)) + rr(j) * cpv) * x * (ph(j) - ph(j + 1)) |
---|
[1992] | 283 | END DO |
---|
| 284 | DO j = i, jn |
---|
[5144] | 285 | th(j) = ahm / a2 |
---|
| 286 | t(j) = t(j) * th(j) |
---|
[1992] | 287 | END DO |
---|
[5144] | 288 | 30 END DO |
---|
[1992] | 289 | |
---|
| 290 | END IF ! added sbl |
---|
| 291 | |
---|
| 292 | ! *** RESET INPUT ARRAYS IF ok_adj 0 *** |
---|
| 293 | |
---|
| 294 | IF (ok_adj) THEN |
---|
| 295 | DO i = 1, nd |
---|
| 296 | |
---|
[5144] | 297 | ft2(i) = (t(i) - t1(i)) / delt ! sbl |
---|
| 298 | fr2(i) = (rr(i) - r1(i)) / delt ! sbl |
---|
| 299 | fu2(i) = (u(i) - u1(i)) / delt ! sbl |
---|
| 300 | fv2(i) = (v(i) - v1(i)) / delt ! sbl |
---|
[1992] | 301 | |
---|
[5113] | 302 | ! T1(I)=T(I) ! commente sbl |
---|
| 303 | ! R1(I)=RR(I) ! commente sbl |
---|
[1992] | 304 | END DO |
---|
| 305 | END IF |
---|
| 306 | |
---|
| 307 | ! *** CALCULATE ARRAYS OF GEOPOTENTIAL, HEAT CAPACITY AND STATIC ENERGY |
---|
| 308 | |
---|
| 309 | gz(1) = 0.0 |
---|
[5144] | 310 | cpn(1) = cpd * (1. - rr(1)) + rr(1) * cpv |
---|
| 311 | h(1) = t(1) * cpn(1) |
---|
[1992] | 312 | DO i = 2, nl |
---|
[5144] | 313 | tvx = t(i) * (1. + rr(i) / eps - rr(i)) |
---|
| 314 | tvy = t(i - 1) * (1. + rr(i - 1) / eps - rr(i - 1)) |
---|
| 315 | gz(i) = gz(i - 1) + 0.5 * rd * (tvx + tvy) * (p(i - 1) - p(i)) / ph(i) |
---|
| 316 | cpn(i) = cpd * (1. - rr(i)) + cpv * rr(i) |
---|
| 317 | h(i) = t(i) * cpn(i) + gz(i) |
---|
[1992] | 318 | END DO |
---|
| 319 | |
---|
| 320 | ! *** CALCULATE LIFTED CONDENSATION LEVEL OF AIR AT LOWEST MODEL LEVEL *** |
---|
| 321 | ! *** (WITHIN 0.2% OF FORMULA OF BOLTON, MON. WEA. REV.,1980) *** |
---|
| 322 | |
---|
| 323 | IF (t(1)<250.0 .OR. rr(1)<=0.0) THEN |
---|
| 324 | iflag = 0 |
---|
[5103] | 325 | ! sb3d PRINT*,'je suis passe par 366' |
---|
[1992] | 326 | RETURN |
---|
| 327 | END IF |
---|
| 328 | |
---|
[5103] | 329 | ! jyg1 Utilisation de la SUBROUTINE CLIFT |
---|
[1992] | 330 | ! C RH=RR(1)/RS(1) |
---|
| 331 | ! C CHI=T(1)/(1669.0-122.0*RH-T(1)) |
---|
| 332 | ! C PLCL=P(1)*(RH**CHI) |
---|
| 333 | CALL clift(p(1), t(1), rr(1), rs(1), plcl, dplcldt, dplcldr) |
---|
| 334 | ! jyg2 |
---|
| 335 | ! sb3d PRINT *,' em_plcl,p1,t1,r1,rs1,rh ' |
---|
| 336 | ! sb3d $ ,PLCL,P(1),T(1),RR(1),RS(1),RH |
---|
| 337 | |
---|
| 338 | IF (plcl<200.0 .OR. plcl>=2000.0) THEN |
---|
| 339 | iflag = 2 |
---|
| 340 | RETURN |
---|
| 341 | END IF |
---|
| 342 | ! jyg1 |
---|
| 343 | ! Essais de modification de ICB |
---|
| 344 | |
---|
| 345 | ! *** CALCULATE FIRST LEVEL ABOVE LCL (=ICB) *** |
---|
| 346 | |
---|
| 347 | ! C ICB=NL-1 |
---|
| 348 | ! C DO 50 I=2,NL-1 |
---|
| 349 | ! C IF(P(I).LT.PLCL)THEN |
---|
| 350 | ! C ICB=MIN(ICB,I) ! ICB sup ou egal a 2 |
---|
| 351 | ! C END IF |
---|
| 352 | ! C 50 CONTINUE |
---|
| 353 | ! C IF(ICB.EQ.(NL-1))THEN |
---|
| 354 | ! C IFLAG=3 |
---|
| 355 | ! C RETURN |
---|
| 356 | ! C END IF |
---|
| 357 | |
---|
| 358 | ! *** CALCULATE LAYER CONTAINING LCL (=ICB) *** |
---|
| 359 | |
---|
| 360 | icb = nl - 1 |
---|
| 361 | ! sb DO 50 I=2,NL-1 |
---|
| 362 | DO i = 3, nl - 1 ! modif sb pour que ICB soit sup/egal a 2 |
---|
| 363 | ! la modification consiste a comparer PLCL a PH et non a P: |
---|
| 364 | ! ICB est defini par : PH(ICB)<PLCL<PH(ICB-!) |
---|
| 365 | IF (ph(i)<plcl) THEN |
---|
| 366 | icb = min(icb, i) |
---|
| 367 | END IF |
---|
| 368 | END DO |
---|
[5144] | 369 | IF (icb==(nl - 1)) THEN |
---|
[1992] | 370 | iflag = 3 |
---|
| 371 | RETURN |
---|
| 372 | END IF |
---|
| 373 | icb = icb - 1 ! ICB sup ou egal a 2 |
---|
| 374 | ! jyg2 |
---|
| 375 | |
---|
| 376 | |
---|
| 377 | |
---|
| 378 | ! *** SUBROUTINE TLIFT CALCULATES PART OF THE LIFTED PARCEL VIRTUAL |
---|
| 379 | ! *** |
---|
| 380 | ! *** TEMPERATURE, THE ACTUAL TEMPERATURE AND THE ADIABATIC |
---|
| 381 | ! *** |
---|
| 382 | ! *** LIQUID WATER CONTENT |
---|
| 383 | ! *** |
---|
| 384 | |
---|
| 385 | |
---|
| 386 | ! jyg1 |
---|
| 387 | ! make sure that "Cloud base" seen by TLIFT is actually the |
---|
| 388 | ! fisrt level where adiabatic ascent is saturated |
---|
| 389 | IF (plcl>p(icb)) THEN |
---|
| 390 | ! sb CALL TLIFT(P,T,RR,RS,GZ,PLCL,ICB,TVP,TP,CLW,ND,NL) |
---|
| 391 | CALL tlift(p, t, rr, rs, gz, plcl, icb, nk, tvp, tp, clw, nd, nl, & |
---|
[5144] | 392 | dtvpdt1, dtvpdq1) |
---|
[1992] | 393 | ELSE |
---|
| 394 | ! sb CALL TLIFT(P,T,RR,RS,GZ,PLCL,ICB+1,TVP,TP,CLW,ND,NL) |
---|
[5144] | 395 | CALL tlift(p, t, rr, rs, gz, plcl, icb + 1, nk, tvp, tp, clw, nd, nl, & |
---|
| 396 | dtvpdt1, dtvpdq1) |
---|
[1992] | 397 | END IF |
---|
| 398 | ! jyg2 |
---|
| 399 | |
---|
| 400 | ! ***************************************************************************** |
---|
| 401 | ! *** SORTIE DE LA TEMPERATURE DE L ASCENDANCE NON DILUE |
---|
| 402 | ! ***************************************************************************** |
---|
| 403 | DO i = 1, nd |
---|
| 404 | tps(i) = tp(i) |
---|
| 405 | END DO |
---|
| 406 | |
---|
| 407 | |
---|
| 408 | ! ***************************************************************************** |
---|
| 409 | |
---|
| 410 | |
---|
| 411 | ! *** SET THE PRECIPITATION EFFICIENCIES AND THE FRACTION OF *** |
---|
| 412 | ! *** PRECIPITATION FALLING OUTSIDE OF CLOUD *** |
---|
| 413 | ! *** THESE MAY BE FUNCTIONS OF TP(I), P(I) AND CLW(I) *** |
---|
| 414 | |
---|
| 415 | DO i = 1, nl |
---|
| 416 | pden = ptcrit - pbcrit |
---|
| 417 | |
---|
| 418 | ! jyg |
---|
| 419 | ! cc EP(I)=(P(ICB)-P(I)-PBCRIT)/PDEN |
---|
| 420 | ! sb EP(I)=(PLCL-P(I)-PBCRIT)/PDEN |
---|
[5144] | 421 | ep(i) = (plcl - p(i) - pbcrit) / pden * epmax ! sb |
---|
[1992] | 422 | |
---|
| 423 | ep(i) = amax1(ep(i), 0.0) |
---|
| 424 | ! sb EP(I)=AMIN1(EP(I),1.0) |
---|
| 425 | ep(i) = amin1(ep(i), epmax) ! sb |
---|
| 426 | sigp(i) = spfac |
---|
| 427 | |
---|
| 428 | ! *** CALCULATE VIRTUAL TEMPERATURE AND LIFTED PARCEL *** |
---|
| 429 | ! *** VIRTUAL TEMPERATURE *** |
---|
| 430 | |
---|
[5144] | 431 | tv(i) = t(i) * (1. + rr(i) / eps - rr(i)) |
---|
[1992] | 432 | ! cd1 |
---|
| 433 | ! . Keep all liquid water in lifted parcel (-> adiabatic CAPE) |
---|
| 434 | |
---|
| 435 | ! cc TVP(I)=TVP(I)-TP(I)*(RR(1)-EP(I)*CLW(I)) |
---|
| 436 | ! !!! sb TVP(I)=TVP(I)-TP(I)*RR(1) ! calcule dans tlift |
---|
| 437 | ! cd2 |
---|
| 438 | |
---|
| 439 | ! *** Calculate first estimate of buoyancy |
---|
| 440 | |
---|
| 441 | buoy(i) = tvp(i) - tv(i) |
---|
| 442 | END DO |
---|
| 443 | |
---|
| 444 | ! *** Set Cloud Base Buoyancy at (Plcl+DPbase) level buoyancy |
---|
| 445 | |
---|
| 446 | dpbase = -40. !That is 400m above LCL |
---|
| 447 | pbase = plcl + dpbase |
---|
[5144] | 448 | tvpbase = tvp(icb) * (pbase - p(icb + 1)) / (p(icb) - p(icb + 1)) + & |
---|
| 449 | tvp(icb + 1) * (p(icb) - pbase) / (p(icb) - p(icb + 1)) |
---|
| 450 | tvbase = tv(icb) * (pbase - p(icb + 1)) / (p(icb) - p(icb + 1)) + & |
---|
| 451 | tv(icb + 1) * (p(icb) - pbase) / (p(icb) - p(icb + 1)) |
---|
[1992] | 452 | |
---|
| 453 | ! test sb: |
---|
[5116] | 454 | ! @ WRITE(*,*) '++++++++++++++++++++++++++++++++++++++++' |
---|
| 455 | ! @ WRITE(*,*) 'plcl,dpbas,tvpbas,tvbas,tvp(icb),tvp(icb1) |
---|
[1992] | 456 | ! @ : ,tv(icb),tv(icb1)' |
---|
[5116] | 457 | ! @ WRITE(*,*) plcl,dpbase,tvpbase,tvbase,tvp(icb) |
---|
[1992] | 458 | ! @ L ,tvp(icb+1),tv(icb),tv(icb+1) |
---|
[5116] | 459 | ! @ WRITE(*,*) '++++++++++++++++++++++++++++++++++++++++' |
---|
[1992] | 460 | ! fin test sb |
---|
| 461 | buoybase = tvpbase - tvbase |
---|
| 462 | |
---|
| 463 | ! C Set buoyancy = BUOYBASE for all levels below BASE. |
---|
| 464 | ! C For safety, set : BUOY(ICB) = BUOYBASE |
---|
| 465 | DO i = icb, nl |
---|
| 466 | IF (p(i)>=pbase) THEN |
---|
| 467 | buoy(i) = buoybase |
---|
| 468 | END IF |
---|
| 469 | END DO |
---|
| 470 | buoy(icb) = buoybase |
---|
| 471 | |
---|
[5160] | 472 | ! sb3d PRINT *,'buoybase,tvp_tv,tvpbase,tvbase,pbase,plcl' |
---|
[1992] | 473 | ! sb3d $, buoybase,tvp(icb)-tv(icb),tvpbase,tvbase,pbase,plcl |
---|
[5160] | 474 | ! sb3d PRINT *,'TVP ',(tvp(i),i=1,nl) |
---|
| 475 | ! sb3d PRINT *,'TV ',(tv(i),i=1,nl) |
---|
| 476 | ! sb3d PRINT *, 'P ',(p(i),i=1,nl) |
---|
| 477 | ! sb3d PRINT *,'ICB ',icb |
---|
[1992] | 478 | ! test sb: |
---|
[5116] | 479 | ! @ WRITE(*,*) '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@' |
---|
| 480 | ! @ WRITE(*,*) 'icb,icbs,inb,buoybase:' |
---|
| 481 | ! @ WRITE(*,*) icb,icb+1,inb,buoybase |
---|
| 482 | ! @ WRITE(*,*) 'k,tvp,tv,tp,buoy,ep: ' |
---|
[1992] | 483 | ! @ do k=1,nl |
---|
[5116] | 484 | ! @ WRITE(*,*) k,tvp(k),tv(k),tp(k),buoy(k),ep(k) |
---|
[1992] | 485 | ! @ enddo |
---|
[5116] | 486 | ! @ WRITE(*,*) '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@' |
---|
[1992] | 487 | ! fin test sb |
---|
| 488 | |
---|
| 489 | |
---|
| 490 | |
---|
| 491 | ! *** MAKE SURE THAT COLUMN IS DRY ADIABATIC BETWEEN THE SURFACE *** |
---|
| 492 | ! *** AND CLOUD BASE, AND THAT LIFTED AIR IS POSITIVELY BUOYANT *** |
---|
| 493 | ! *** AT CLOUD BASE *** |
---|
| 494 | ! *** IF NOT, RETURN TO CALLING PROGRAM AFTER RESETTING *** |
---|
| 495 | ! *** SIG(I) AND W0(I) *** |
---|
| 496 | |
---|
| 497 | ! jyg |
---|
| 498 | ! CC TDIF=TVP(ICB)-TV(ICB) |
---|
| 499 | tdif = buoy(icb) |
---|
| 500 | ath1 = th(1) |
---|
| 501 | ! jyg |
---|
| 502 | ! CC ATH=TH(ICB-1)-1.0 |
---|
[5144] | 503 | ath = th(icb - 1) - 5.0 |
---|
[1992] | 504 | ! ATH=0. ! ajout sb |
---|
| 505 | ! IF (ICB.GT.1) ATH=TH(ICB-1)-5.0 ! modif sb |
---|
| 506 | IF (tdif<dtcrit .OR. ath>ath1) THEN |
---|
| 507 | DO i = 1, nl |
---|
[5144] | 508 | sig(i) = beta * sig(i) - 2. * alpha * tdif * tdif |
---|
[1992] | 509 | sig(i) = amax1(sig(i), 0.0) |
---|
[5144] | 510 | w0(i) = beta * w0(i) |
---|
[1992] | 511 | END DO |
---|
| 512 | iflag = 0 |
---|
| 513 | RETURN |
---|
| 514 | END IF |
---|
| 515 | |
---|
| 516 | |
---|
| 517 | |
---|
| 518 | ! *** IF THIS POINT IS REACHED, MOIST CONVECTIVE ADJUSTMENT IS NECESSARY |
---|
| 519 | ! *** |
---|
| 520 | ! *** NOW INITIALIZE VARIOUS ARRAYS USED IN THE COMPUTATIONS |
---|
| 521 | ! *** |
---|
| 522 | |
---|
| 523 | DO i = 1, nl |
---|
| 524 | hp(i) = h(i) |
---|
| 525 | wt(i) = 0.001 |
---|
| 526 | rp(i) = rr(i) |
---|
| 527 | up(i) = u(i) |
---|
| 528 | vp(i) = v(i) |
---|
| 529 | DO j = 1, ntra |
---|
| 530 | trap(i, j) = tra(i, j) |
---|
| 531 | END DO |
---|
| 532 | nent(i) = 0 |
---|
| 533 | water(i) = 0.0 |
---|
| 534 | evap(i) = 0.0 |
---|
| 535 | b(i) = 0.0 |
---|
| 536 | mp(i) = 0.0 |
---|
| 537 | m(i) = 0.0 |
---|
[5144] | 538 | lv(i) = alv0 - cpvmcl * (t(i) - 273.15) |
---|
| 539 | lvcp(i) = lv(i) / cpn(i) |
---|
[1992] | 540 | DO j = 1, nl |
---|
| 541 | qent(i, j) = rr(j) |
---|
| 542 | elij(i, j) = 0.0 |
---|
| 543 | ment(i, j) = 0.0 |
---|
| 544 | sij(i, j) = 0.0 |
---|
| 545 | uent(i, j) = u(j) |
---|
| 546 | vent(i, j) = v(j) |
---|
| 547 | DO k = 1, ntra |
---|
| 548 | traent(i, j, k) = tra(j, k) |
---|
| 549 | END DO |
---|
| 550 | END DO |
---|
| 551 | END DO |
---|
| 552 | |
---|
[5144] | 553 | delti = 1.0 / delt |
---|
[1992] | 554 | |
---|
| 555 | ! *** FIND THE FIRST MODEL LEVEL (INB) ABOVE THE PARCEL'S *** |
---|
| 556 | ! *** LEVEL OF NEUTRAL BUOYANCY *** |
---|
| 557 | |
---|
| 558 | inb = nl - 1 |
---|
| 559 | DO i = icb, nl - 1 |
---|
| 560 | ! jyg |
---|
| 561 | ! CC IF((TVP(I)-TV(I)).LT.DTCRIT)THEN |
---|
| 562 | IF (buoy(i)<dtovsh) THEN |
---|
| 563 | inb = min(inb, i) |
---|
| 564 | END IF |
---|
| 565 | END DO |
---|
| 566 | |
---|
| 567 | |
---|
| 568 | |
---|
| 569 | |
---|
| 570 | |
---|
| 571 | ! *** RESET SIG(I) AND W0(I) FOR I>INB AND I<ICB *** |
---|
| 572 | |
---|
[5144] | 573 | IF (inb<(nl - 1)) THEN |
---|
[1992] | 574 | DO i = inb + 1, nl - 1 |
---|
| 575 | ! jyg |
---|
| 576 | ! CC SIG(I)=BETA*SIG(I)-2.0E-4*ALPHA*(TV(INB)-TVP(INB))* |
---|
| 577 | ! CC 1 ABS(TV(INB)-TVP(INB)) |
---|
[5144] | 578 | sig(i) = beta * sig(i) + 2. * alpha * buoy(inb) * abs(buoy(inb)) |
---|
[1992] | 579 | sig(i) = amax1(sig(i), 0.0) |
---|
[5144] | 580 | w0(i) = beta * w0(i) |
---|
[1992] | 581 | END DO |
---|
| 582 | END IF |
---|
| 583 | DO i = 1, icb |
---|
| 584 | ! jyg |
---|
| 585 | ! CC SIG(I)=BETA*SIG(I)-2.0E-4*ALPHA*(TV(ICB)-TVP(ICB))* |
---|
| 586 | ! CC 1 (TV(ICB)-TVP(ICB)) |
---|
[5144] | 587 | sig(i) = beta * sig(i) - 2. * alpha * buoy(icb) * buoy(icb) |
---|
[1992] | 588 | sig(i) = amax1(sig(i), 0.0) |
---|
[5144] | 589 | w0(i) = beta * w0(i) |
---|
[1992] | 590 | END DO |
---|
| 591 | |
---|
| 592 | ! *** RESET FRACTIONAL AREAS OF UPDRAFTS AND W0 AT INITIAL TIME *** |
---|
| 593 | ! *** AND AFTER 10 TIME STEPS OF NO CONVECTION *** |
---|
| 594 | |
---|
| 595 | IF (sig(nd)<1.5 .OR. sig(nd)>12.0) THEN |
---|
| 596 | DO i = 1, nl - 1 |
---|
| 597 | sig(i) = 0.0 |
---|
| 598 | w0(i) = 0.0 |
---|
| 599 | END DO |
---|
| 600 | END IF |
---|
| 601 | |
---|
| 602 | ! *** CALCULATE LIQUID WATER STATIC ENERGY OF LIFTED PARCEL *** |
---|
| 603 | |
---|
| 604 | DO i = icb, inb |
---|
[5144] | 605 | hp(i) = h(1) + (lv(i) + (cpd - cpv) * t(i)) * ep(i) * clw(i) |
---|
[1992] | 606 | END DO |
---|
| 607 | |
---|
| 608 | ! *** CALCULATE CONVECTIVE AVAILABLE POTENTIAL ENERGY (CAPE), *** |
---|
| 609 | ! *** VERTICAL VELOCITY (W), FRACTIONAL AREA COVERED BY *** |
---|
| 610 | ! *** UNDILUTE UPDRAFT (SIG), AND UPDRAFT MASS FLUX (M) *** |
---|
| 611 | |
---|
| 612 | cape = 0.0 |
---|
| 613 | |
---|
| 614 | DO i = icb + 1, inb |
---|
| 615 | ! jyg1 |
---|
| 616 | ! CC CAPE=CAPE+RD*(TVP(I-1)-TV(I-1))*(PH(I-1)-PH(I))/P(I-1) |
---|
| 617 | ! CC DCAPE=RD*BUOY(I-1)*(PH(I-1)-PH(I))/P(I-1) |
---|
| 618 | ! CC DLNP=(PH(I-1)-PH(I))/P(I-1) |
---|
| 619 | ! The interval on which CAPE is computed starts at PBASE : |
---|
[5144] | 620 | deltap = min(pbase, ph(i - 1)) - min(pbase, ph(i)) |
---|
| 621 | cape = cape + rd * buoy(i - 1) * deltap / p(i - 1) |
---|
| 622 | dcape = rd * buoy(i - 1) * deltap / p(i - 1) |
---|
| 623 | dlnp = deltap / p(i - 1) |
---|
[1992] | 624 | ! jyg2 |
---|
[5160] | 625 | ! sb3d PRINT *,'buoy,dlnp,dcape,cape',buoy(i-1),dlnp,dcape,cape |
---|
[1992] | 626 | ! test sb: |
---|
[5116] | 627 | ! @ WRITE(*,*) '############################################' |
---|
| 628 | ! @ WRITE(*,*) 'cape,rrd,buoy,deltap,p,pbase,ph:' |
---|
[1992] | 629 | ! @ : ,cape,rd,buoy(i-1),deltap,p(i-1),pbase,ph(i) |
---|
[5116] | 630 | ! @ WRITE(*,*) '############################################' |
---|
[1992] | 631 | |
---|
| 632 | ! fin test sb |
---|
| 633 | cape = amax1(0.0, cape) |
---|
| 634 | |
---|
| 635 | sigold = sig(i) |
---|
| 636 | dtmin = 100.0 |
---|
| 637 | DO j = icb, i - 1 |
---|
| 638 | ! jyg |
---|
| 639 | ! CC DTMIN=AMIN1(DTMIN,(TVP(J)-TV(J))) |
---|
| 640 | dtmin = amin1(dtmin, buoy(j)) |
---|
| 641 | END DO |
---|
[5160] | 642 | ! sb3d PRINT *, 'DTMIN, BETA, ALPHA, SIG = ',DTMIN,BETA,ALPHA,SIG(I) |
---|
[5144] | 643 | sig(i) = beta * sig(i) + alpha * dtmin * abs(dtmin) |
---|
[1992] | 644 | sig(i) = amax1(sig(i), 0.0) |
---|
| 645 | sig(i) = amin1(sig(i), 0.01) |
---|
[5144] | 646 | fac = amin1(((dtcrit - dtmin) / dtcrit), 1.0) |
---|
[1992] | 647 | ! jyg |
---|
| 648 | ! C Essais de reduction de la vitesse |
---|
| 649 | ! C FAC = FAC*.5 |
---|
| 650 | |
---|
[5144] | 651 | w = (1. - beta) * fac * sqrt(cape) + beta * w0(i) |
---|
| 652 | amu = 0.5 * (sig(i) + sigold) * w |
---|
| 653 | m(i) = amu * 0.007 * p(i) * (ph(i) - ph(i + 1)) / tv(i) |
---|
[1992] | 654 | |
---|
| 655 | ! --------- test sb: |
---|
[5116] | 656 | ! WRITE(*,*) '############################################' |
---|
| 657 | ! WRITE(*,*) 'k,amu,buoy(k-1),deltap,w,beta,fac,cape,w0(k)' |
---|
| 658 | ! WRITE(*,*) i,amu,buoy(i-1),deltap |
---|
[1992] | 659 | ! : ,w,beta,fac,cape,w0(i) |
---|
[5116] | 660 | ! WRITE(*,*) '############################################' |
---|
[1992] | 661 | ! --------- |
---|
| 662 | |
---|
| 663 | w0(i) = w |
---|
| 664 | END DO |
---|
[5144] | 665 | w0(icb) = 0.5 * w0(icb + 1) |
---|
| 666 | m(icb) = 0.5 * m(icb + 1) * (ph(icb) - ph(icb + 1)) / (ph(icb + 1) - ph(icb + 2)) |
---|
| 667 | sig(icb) = sig(icb + 1) |
---|
| 668 | sig(icb - 1) = sig(icb) |
---|
[1992] | 669 | ! jyg1 |
---|
[5160] | 670 | ! sb3d PRINT *, 'Cloud base, c. top, CAPE',ICB,INB,cape |
---|
| 671 | ! sb3d PRINT *, 'SIG ',(sig(i),i=1,inb) |
---|
| 672 | ! sb3d PRINT *, 'W ',(w0(i),i=1,inb) |
---|
| 673 | ! sb3d PRINT *, 'M ',(m(i), i=1,inb) |
---|
| 674 | ! sb3d PRINT *, 'Dt1 ',(tvp(i)-tv(i),i=1,inb) |
---|
| 675 | ! sb3d PRINT *, 'Dt_vrai ',(buoy(i),i=1,inb) |
---|
[1992] | 676 | ! jyg2 |
---|
| 677 | |
---|
| 678 | ! *** CALCULATE ENTRAINED AIR MASS FLUX (MENT), TOTAL WATER MIXING *** |
---|
| 679 | ! *** RATIO (QENT), TOTAL CONDENSED WATER (ELIJ), AND MIXING *** |
---|
| 680 | ! *** FRACTION (SIJ) *** |
---|
| 681 | |
---|
| 682 | DO i = icb, inb |
---|
[5144] | 683 | rti = rr(1) - ep(i) * clw(i) |
---|
[1992] | 684 | DO j = icb - 1, inb |
---|
[5144] | 685 | bf2 = 1. + lv(j) * lv(j) * rs(j) / (rv * t(j) * t(j) * cpd) |
---|
| 686 | anum = h(j) - hp(i) + (cpv - cpd) * t(j) * (rti - rr(j)) |
---|
| 687 | denom = h(i) - hp(i) + (cpd - cpv) * (rr(i) - rti) * t(j) |
---|
[1992] | 688 | dei = denom |
---|
| 689 | IF (abs(dei)<0.01) dei = 0.01 |
---|
[5144] | 690 | sij(i, j) = anum / dei |
---|
[1992] | 691 | sij(i, i) = 1.0 |
---|
[5144] | 692 | altem = sij(i, j) * rr(i) + (1. - sij(i, j)) * rti - rs(j) |
---|
| 693 | altem = altem / bf2 |
---|
| 694 | cwat = clw(j) * (1. - ep(j)) |
---|
[1992] | 695 | stemp = sij(i, j) |
---|
| 696 | IF ((stemp<0.0 .OR. stemp>1.0 .OR. altem>cwat) .AND. j>i) THEN |
---|
[5144] | 697 | anum = anum - lv(j) * (rti - rs(j) - cwat * bf2) |
---|
| 698 | denom = denom + lv(j) * (rr(i) - rti) |
---|
[1992] | 699 | IF (abs(denom)<0.01) denom = 0.01 |
---|
[5144] | 700 | sij(i, j) = anum / denom |
---|
| 701 | altem = sij(i, j) * rr(i) + (1. - sij(i, j)) * rti - rs(j) |
---|
| 702 | altem = altem - (bf2 - 1.) * cwat |
---|
[524] | 703 | END IF |
---|
| 704 | |
---|
[5144] | 705 | IF (sij(i, j)>0.0 .AND. sij(i, j)<0.95) THEN |
---|
| 706 | qent(i, j) = sij(i, j) * rr(i) + (1. - sij(i, j)) * rti |
---|
| 707 | uent(i, j) = sij(i, j) * u(i) + (1. - sij(i, j)) * u(nk) |
---|
| 708 | vent(i, j) = sij(i, j) * v(i) + (1. - sij(i, j)) * v(nk) |
---|
[1992] | 709 | DO k = 1, ntra |
---|
[5144] | 710 | traent(i, j, k) = sij(i, j) * tra(i, k) + (1. - sij(i, j)) * tra(nk, k) |
---|
[1992] | 711 | END DO |
---|
| 712 | elij(i, j) = altem |
---|
[5144] | 713 | elij(i, j) = amax1(0.0, elij(i, j)) |
---|
| 714 | ment(i, j) = m(i) / (1. - sij(i, j)) |
---|
[1992] | 715 | nent(i) = nent(i) + 1 |
---|
[524] | 716 | END IF |
---|
[5144] | 717 | sij(i, j) = amax1(0.0, sij(i, j)) |
---|
| 718 | sij(i, j) = amin1(1.0, sij(i, j)) |
---|
[1992] | 719 | END DO |
---|
[524] | 720 | |
---|
[1992] | 721 | ! *** IF NO AIR CAN ENTRAIN AT LEVEL I ASSUME THAT UPDRAFT DETRAINS |
---|
| 722 | ! *** |
---|
| 723 | ! *** AT THAT LEVEL AND CALCULATE DETRAINED AIR FLUX AND PROPERTIES |
---|
| 724 | ! *** |
---|
[524] | 725 | |
---|
[1992] | 726 | IF (nent(i)==0) THEN |
---|
| 727 | ment(i, i) = m(i) |
---|
[5144] | 728 | qent(i, i) = rr(nk) - ep(i) * clw(i) |
---|
[1992] | 729 | uent(i, i) = u(nk) |
---|
| 730 | vent(i, i) = v(nk) |
---|
| 731 | DO j = 1, ntra |
---|
| 732 | traent(i, i, j) = tra(nk, j) |
---|
| 733 | END DO |
---|
| 734 | elij(i, i) = clw(i) |
---|
| 735 | sij(i, i) = 1.0 |
---|
| 736 | END IF |
---|
[524] | 737 | |
---|
[1992] | 738 | DO j = icb - 1, inb |
---|
| 739 | sigij(i, j) = sij(i, j) |
---|
| 740 | END DO |
---|
| 741 | |
---|
| 742 | END DO |
---|
| 743 | |
---|
| 744 | ! *** NORMALIZE ENTRAINED AIR MASS FLUXES TO REPRESENT EQUAL *** |
---|
| 745 | ! *** PROBABILITIES OF MIXING *** |
---|
| 746 | |
---|
| 747 | DO i = icb, inb |
---|
| 748 | IF (nent(i)/=0) THEN |
---|
[5144] | 749 | qp = rr(1) - ep(i) * clw(i) |
---|
| 750 | anum = h(i) - hp(i) - lv(i) * (qp - rs(i)) + (cpv - cpd) * t(i) * (qp - rr(i)) |
---|
| 751 | denom = h(i) - hp(i) + lv(i) * (rr(i) - qp) + (cpd - cpv) * t(i) * (rr(i) - qp) |
---|
[1992] | 752 | IF (abs(denom)<0.01) denom = 0.01 |
---|
[5144] | 753 | scrit = anum / denom |
---|
| 754 | alt = qp - rs(i) + scrit * (rr(i) - qp) |
---|
[1992] | 755 | IF (scrit<=0.0 .OR. alt<=0.0) scrit = 1.0 |
---|
| 756 | smax = 0.0 |
---|
| 757 | asij = 0.0 |
---|
| 758 | DO j = inb, icb - 1, -1 |
---|
[5144] | 759 | IF (sij(i, j)>1.0E-16 .AND. sij(i, j)<0.95) THEN |
---|
[1992] | 760 | wgh = 1.0 |
---|
| 761 | IF (j>i) THEN |
---|
[5144] | 762 | sjmax = amax1(sij(i, j + 1), smax) |
---|
[1992] | 763 | sjmax = amin1(sjmax, scrit) |
---|
[5144] | 764 | smax = amax1(sij(i, j), smax) |
---|
| 765 | sjmin = amax1(sij(i, j - 1), smax) |
---|
[1992] | 766 | sjmin = amin1(sjmin, scrit) |
---|
[5144] | 767 | IF (sij(i, j)<(smax - 1.0E-16)) wgh = 0.0 |
---|
| 768 | smid = amin1(sij(i, j), scrit) |
---|
[1992] | 769 | ELSE |
---|
[5144] | 770 | sjmax = amax1(sij(i, j + 1), scrit) |
---|
| 771 | smid = amax1(sij(i, j), scrit) |
---|
[1992] | 772 | sjmin = 0.0 |
---|
[5144] | 773 | IF (j>1) sjmin = sij(i, j - 1) |
---|
[1992] | 774 | sjmin = amax1(sjmin, scrit) |
---|
| 775 | END IF |
---|
[5144] | 776 | delp = abs(sjmax - smid) |
---|
| 777 | delm = abs(sjmin - smid) |
---|
| 778 | asij = asij + wgh * (delp + delm) |
---|
| 779 | ment(i, j) = ment(i, j) * (delp + delm) * wgh |
---|
[524] | 780 | END IF |
---|
[1992] | 781 | END DO |
---|
| 782 | asij = amax1(1.0E-16, asij) |
---|
[5144] | 783 | asij = 1.0 / asij |
---|
[1992] | 784 | DO j = icb - 1, inb |
---|
[5144] | 785 | ment(i, j) = ment(i, j) * asij |
---|
[1992] | 786 | END DO |
---|
| 787 | asum = 0.0 |
---|
| 788 | bsum = 0.0 |
---|
| 789 | DO j = icb - 1, inb |
---|
| 790 | asum = asum + ment(i, j) |
---|
[5144] | 791 | ment(i, j) = ment(i, j) * sig(j) |
---|
[1992] | 792 | bsum = bsum + ment(i, j) |
---|
| 793 | END DO |
---|
| 794 | bsum = amax1(bsum, 1.0E-16) |
---|
[5144] | 795 | bsum = 1.0 / bsum |
---|
[1992] | 796 | DO j = icb - 1, inb |
---|
[5144] | 797 | ment(i, j) = ment(i, j) * asum * bsum |
---|
[1992] | 798 | END DO |
---|
| 799 | csum = 0.0 |
---|
| 800 | DO j = icb - 1, inb |
---|
| 801 | csum = csum + ment(i, j) |
---|
| 802 | END DO |
---|
| 803 | |
---|
| 804 | IF (csum<m(i)) THEN |
---|
| 805 | nent(i) = 0 |
---|
| 806 | ment(i, i) = m(i) |
---|
[5144] | 807 | qent(i, i) = rr(1) - ep(i) * clw(i) |
---|
[1992] | 808 | uent(i, i) = u(nk) |
---|
| 809 | vent(i, i) = v(nk) |
---|
| 810 | DO j = 1, ntra |
---|
| 811 | traent(i, i, j) = tra(nk, j) |
---|
| 812 | END DO |
---|
| 813 | elij(i, i) = clw(i) |
---|
| 814 | sij(i, i) = 1.0 |
---|
[524] | 815 | END IF |
---|
[1992] | 816 | END IF |
---|
| 817 | END DO |
---|
[524] | 818 | |
---|
[1992] | 819 | |
---|
| 820 | |
---|
| 821 | ! ************************************************************** |
---|
| 822 | ! * CALCUL DES MENTS(I,J) ET DES QENTS(I,J) |
---|
| 823 | ! ************************************************************* |
---|
| 824 | |
---|
| 825 | DO im = 1, nd |
---|
| 826 | DO jm = 1, nd |
---|
| 827 | |
---|
| 828 | qents(im, jm) = qent(im, jm) |
---|
| 829 | ments(im, jm) = ment(im, jm) |
---|
| 830 | END DO |
---|
| 831 | END DO |
---|
| 832 | |
---|
| 833 | ! ********************************************************** |
---|
| 834 | ! --- test sb: |
---|
[5116] | 835 | ! @ WRITE(*,*) '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' |
---|
| 836 | ! @ WRITE(*,*) 'inb,m(inb),ment(inb,inb),sigij(inb,inb):' |
---|
| 837 | ! @ WRITE(*,*) inb,m(inb),ment(inb,inb),sigij(inb,inb) |
---|
| 838 | ! @ WRITE(*,*) '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^' |
---|
[1992] | 839 | ! --- |
---|
| 840 | |
---|
| 841 | |
---|
| 842 | |
---|
| 843 | |
---|
| 844 | |
---|
| 845 | ! *** CHECK WHETHER EP(INB)=0, IF SO, SKIP PRECIPITATING *** |
---|
| 846 | ! *** DOWNDRAFT CALCULATION *** |
---|
| 847 | |
---|
| 848 | IF (ep(inb)<0.0001) GO TO 405 |
---|
| 849 | |
---|
| 850 | ! *** INTEGRATE LIQUID WATER EQUATION TO FIND CONDENSED WATER *** |
---|
| 851 | ! *** AND CONDENSED WATER FLUX *** |
---|
| 852 | |
---|
| 853 | wflux = 0.0 |
---|
[5144] | 854 | tinv = 1. / 3. |
---|
[1992] | 855 | |
---|
| 856 | ! *** BEGIN DOWNDRAFT LOOP *** |
---|
| 857 | |
---|
| 858 | DO i = inb, 1, -1 |
---|
| 859 | |
---|
| 860 | ! *** CALCULATE DETRAINED PRECIPITATION *** |
---|
| 861 | |
---|
[5144] | 862 | wdtrain = 10.0 * ep(i) * m(i) * clw(i) |
---|
[1992] | 863 | IF (i>1) THEN |
---|
| 864 | DO j = 1, i - 1 |
---|
[5144] | 865 | awat = elij(j, i) - (1. - ep(i)) * clw(i) |
---|
[1992] | 866 | awat = amax1(awat, 0.0) |
---|
[5144] | 867 | wdtrain = wdtrain + 10.0 * awat * ment(j, i) |
---|
[1992] | 868 | END DO |
---|
| 869 | END IF |
---|
| 870 | |
---|
| 871 | ! *** FIND RAIN WATER AND EVAPORATION USING PROVISIONAL *** |
---|
| 872 | ! *** ESTIMATES OF RP(I)AND RP(I-1) *** |
---|
| 873 | |
---|
| 874 | wt(i) = 45.0 |
---|
| 875 | IF (i<inb) THEN |
---|
[5144] | 876 | rp(i) = rp(i + 1) + (cpd * (t(i + 1) - t(i)) + gz(i + 1) - gz(i)) / lv(i) |
---|
| 877 | rp(i) = 0.5 * (rp(i) + rr(i)) |
---|
[1992] | 878 | END IF |
---|
| 879 | rp(i) = amax1(rp(i), 0.0) |
---|
| 880 | rp(i) = amin1(rp(i), rs(i)) |
---|
| 881 | rp(inb) = rr(inb) |
---|
| 882 | IF (i==1) THEN |
---|
[5144] | 883 | afac = p(1) * (rs(1) - rp(1)) / (1.0E4 + 2000.0 * p(1) * rs(1)) |
---|
[1992] | 884 | ELSE |
---|
[5144] | 885 | rp(i - 1) = rp(i) + (cpd * (t(i) - t(i - 1)) + gz(i) - gz(i - 1)) / lv(i) |
---|
| 886 | rp(i - 1) = 0.5 * (rp(i - 1) + rr(i - 1)) |
---|
| 887 | rp(i - 1) = amin1(rp(i - 1), rs(i - 1)) |
---|
| 888 | rp(i - 1) = amax1(rp(i - 1), 0.0) |
---|
| 889 | afac1 = p(i) * (rs(i) - rp(i)) / (1.0E4 + 2000.0 * p(i) * rs(i)) |
---|
| 890 | afac2 = p(i - 1) * (rs(i - 1) - rp(i - 1)) / (1.0E4 + 2000.0 * p(i - 1) * rs(i - 1)) |
---|
| 891 | afac = 0.5 * (afac1 + afac2) |
---|
[1992] | 892 | END IF |
---|
| 893 | IF (i==inb) afac = 0.0 |
---|
| 894 | afac = amax1(afac, 0.0) |
---|
[5144] | 895 | bfac = 1. / (sigd * wt(i)) |
---|
[1992] | 896 | |
---|
| 897 | ! jyg1 |
---|
| 898 | ! CC SIGT=1.0 |
---|
| 899 | ! CC IF(I.GE.ICB)SIGT=SIGP(I) |
---|
| 900 | ! Prise en compte de la variation progressive de SIGT dans |
---|
| 901 | ! les couches ICB et ICB-1: |
---|
| 902 | ! Pour PLCL<PH(I+1), PR1=0 & PR2=1 |
---|
| 903 | ! Pour PLCL>PH(I), PR1=1 & PR2=0 |
---|
| 904 | ! Pour PH(I+1)<PLCL<PH(I), PR1 est la proportion a cheval |
---|
| 905 | ! sur le nuage, et PR2 est la proportion sous la base du |
---|
| 906 | ! nuage. |
---|
[5144] | 907 | pr1 = (plcl - ph(i + 1)) / (ph(i) - ph(i + 1)) |
---|
| 908 | pr1 = max(0., min(1., pr1)) |
---|
| 909 | pr2 = (ph(i) - plcl) / (ph(i) - ph(i + 1)) |
---|
| 910 | pr2 = max(0., min(1., pr2)) |
---|
| 911 | sigt = sigp(i) * pr1 + pr2 |
---|
[5160] | 912 | ! sb3d PRINT *,'i,sigt,pr1,pr2', i,sigt,pr1,pr2 |
---|
[1992] | 913 | ! jyg2 |
---|
| 914 | |
---|
[5144] | 915 | b6 = bfac * 50. * sigd * (ph(i) - ph(i + 1)) * sigt * afac |
---|
| 916 | c6 = water(i + 1) + bfac * wdtrain - 50. * sigd * bfac * (ph(i) - ph(i + 1)) * evap(i + 1) |
---|
[1992] | 917 | IF (c6>0.0) THEN |
---|
[5144] | 918 | revap = 0.5 * (-b6 + sqrt(b6 * b6 + 4. * c6)) |
---|
| 919 | evap(i) = sigt * afac * revap |
---|
| 920 | water(i) = revap * revap |
---|
[1992] | 921 | ELSE |
---|
[5144] | 922 | evap(i) = -evap(i + 1) + 0.02 * (wdtrain + sigd * wt(i) * water(i + 1)) / (sigd * (ph(i & |
---|
| 923 | ) - ph(i + 1))) |
---|
[1992] | 924 | END IF |
---|
| 925 | |
---|
| 926 | |
---|
| 927 | |
---|
| 928 | ! *** CALCULATE PRECIPITATING DOWNDRAFT MASS FLUX UNDER *** |
---|
| 929 | ! *** HYDROSTATIC APPROXIMATION *** |
---|
| 930 | |
---|
| 931 | IF (i==1) GO TO 360 |
---|
| 932 | tevap = amax1(0.0, evap(i)) |
---|
[5144] | 933 | delth = amax1(0.001, (th(i) - th(i - 1))) |
---|
| 934 | mp(i) = 10. * lvcp(i) * sigd * tevap * (p(i - 1) - p(i)) / delth |
---|
[1992] | 935 | |
---|
| 936 | ! *** IF HYDROSTATIC ASSUMPTION FAILS, *** |
---|
| 937 | ! *** SOLVE CUBIC DIFFERENCE EQUATION FOR DOWNDRAFT THETA *** |
---|
| 938 | ! *** AND MASS FLUX FROM TWO SIMULTANEOUS DIFFERENTIAL EQNS *** |
---|
| 939 | |
---|
[5144] | 940 | amfac = sigd * sigd * 70.0 * ph(i) * (p(i - 1) - p(i)) * (th(i) - th(i - 1)) / (tv(i) * th(i)) |
---|
| 941 | amp2 = abs(mp(i + 1) * mp(i + 1) - mp(i) * mp(i)) |
---|
| 942 | IF (amp2>(0.1 * amfac)) THEN |
---|
| 943 | xf = 100.0 * sigd * sigd * sigd * (ph(i) - ph(i + 1)) |
---|
| 944 | tf = b(i) - 5.0 * (th(i) - th(i - 1)) * t(i) / (lvcp(i) * sigd * th(i)) |
---|
| 945 | af = xf * tf + mp(i + 1) * mp(i + 1) * tinv |
---|
| 946 | bf = 2. * (tinv * mp(i + 1))**3 + tinv * mp(i + 1) * xf * tf + & |
---|
| 947 | 50. * (p(i - 1) - p(i)) * xf * tevap |
---|
[1992] | 948 | fac2 = 1.0 |
---|
| 949 | IF (bf<0.0) fac2 = -1.0 |
---|
| 950 | bf = abs(bf) |
---|
[5144] | 951 | ur = 0.25 * bf * bf - af * af * af * tinv * tinv * tinv |
---|
[1992] | 952 | IF (ur>=0.0) THEN |
---|
| 953 | sru = sqrt(ur) |
---|
| 954 | fac = 1.0 |
---|
[5144] | 955 | IF ((0.5 * bf - sru)<0.0) fac = -1.0 |
---|
| 956 | mp(i) = mp(i + 1) * tinv + (0.5 * bf + sru)**tinv + & |
---|
| 957 | fac * (abs(0.5 * bf - sru))**tinv |
---|
[524] | 958 | ELSE |
---|
[5144] | 959 | d = atan(2. * sqrt(-ur) / (bf + 1.0E-28)) |
---|
[1992] | 960 | IF (fac2<0.0) d = 3.14159 - d |
---|
[5144] | 961 | mp(i) = mp(i + 1) * tinv + 2. * sqrt(af * tinv) * cos(d * tinv) |
---|
[524] | 962 | END IF |
---|
[1992] | 963 | mp(i) = amax1(0.0, mp(i)) |
---|
[5144] | 964 | b(i - 1) = b(i) + 100.0 * (p(i - 1) - p(i)) * tevap / (mp(i) + sigd * 0.1) - & |
---|
| 965 | 10.0 * (th(i) - th(i - 1)) * t(i) / (lvcp(i) * sigd * th(i)) |
---|
| 966 | b(i - 1) = amax1(b(i - 1), 0.0) |
---|
[1992] | 967 | END IF |
---|
[524] | 968 | |
---|
| 969 | |
---|
| 970 | |
---|
[1992] | 971 | ! *** LIMIT MAGNITUDE OF MP(I) TO MEET CFL CONDITION *** |
---|
| 972 | |
---|
[5144] | 973 | ampmax = 2.0 * (ph(i) - ph(i + 1)) * delti |
---|
| 974 | amp2 = 2.0 * (ph(i - 1) - ph(i)) * delti |
---|
[1992] | 975 | ampmax = amin1(ampmax, amp2) |
---|
| 976 | mp(i) = amin1(mp(i), ampmax) |
---|
| 977 | |
---|
| 978 | ! *** FORCE MP TO DECREASE LINEARLY TO ZERO *** |
---|
| 979 | ! *** BETWEEN CLOUD BASE AND THE SURFACE *** |
---|
| 980 | |
---|
| 981 | IF (p(i)>p(icb)) THEN |
---|
[5144] | 982 | mp(i) = mp(icb) * (p(1) - p(i)) / (p(1) - p(icb)) |
---|
[1992] | 983 | END IF |
---|
[5144] | 984 | 360 CONTINUE |
---|
[1992] | 985 | |
---|
| 986 | ! *** FIND MIXING RATIO OF PRECIPITATING DOWNDRAFT *** |
---|
| 987 | |
---|
| 988 | IF (i==inb) GO TO 400 |
---|
| 989 | rp(i) = rr(i) |
---|
[5144] | 990 | IF (mp(i)>mp(i + 1)) THEN |
---|
| 991 | rp(i) = rp(i + 1) * mp(i + 1) + rr(i) * (mp(i) - mp(i + 1)) + & |
---|
| 992 | 5. * sigd * (ph(i) - ph(i + 1)) * (evap(i + 1) + evap(i)) |
---|
| 993 | rp(i) = rp(i) / mp(i) |
---|
| 994 | up(i) = up(i + 1) * mp(i + 1) + u(i) * (mp(i) - mp(i + 1)) |
---|
| 995 | up(i) = up(i) / mp(i) |
---|
| 996 | vp(i) = vp(i + 1) * mp(i + 1) + v(i) * (mp(i) - mp(i + 1)) |
---|
| 997 | vp(i) = vp(i) / mp(i) |
---|
[1992] | 998 | DO j = 1, ntra |
---|
[5144] | 999 | trap(i, j) = trap(i + 1, j) * mp(i + 1) + trap(i, j) * (mp(i) - mp(i + 1)) |
---|
| 1000 | trap(i, j) = trap(i, j) / mp(i) |
---|
[1992] | 1001 | END DO |
---|
| 1002 | ELSE |
---|
[5144] | 1003 | IF (mp(i + 1)>1.0E-16) THEN |
---|
| 1004 | rp(i) = rp(i + 1) + 5.0 * sigd * (ph(i) - ph(i + 1)) * (evap(i + 1) + evap(i)) / mp(i + 1 & |
---|
| 1005 | ) |
---|
| 1006 | up(i) = up(i + 1) |
---|
| 1007 | vp(i) = vp(i + 1) |
---|
[1992] | 1008 | DO j = 1, ntra |
---|
[5144] | 1009 | trap(i, j) = trap(i + 1, j) |
---|
[524] | 1010 | END DO |
---|
[1992] | 1011 | END IF |
---|
| 1012 | END IF |
---|
| 1013 | rp(i) = amin1(rp(i), rs(i)) |
---|
| 1014 | rp(i) = amax1(rp(i), 0.0) |
---|
[5144] | 1015 | 400 END DO |
---|
[524] | 1016 | |
---|
[1992] | 1017 | ! *** CALCULATE SURFACE PRECIPITATION IN MM/DAY *** |
---|
[524] | 1018 | |
---|
[5144] | 1019 | precip = wt(1) * sigd * water(1) * 8640.0 |
---|
[524] | 1020 | |
---|
[1992] | 1021 | ! sb *** Calculate downdraft velocity scale and surface temperature and |
---|
| 1022 | ! *** |
---|
| 1023 | ! sb *** water vapor fluctuations |
---|
| 1024 | ! *** |
---|
[5158] | 1025 | ! sb (inspire de convect 4.3) |
---|
[524] | 1026 | |
---|
[1992] | 1027 | ! BETAD=10.0 |
---|
| 1028 | betad = 5.0 |
---|
[5144] | 1029 | wd = betad * abs(mp(icb)) * 0.01 * rd * t(icb) / (sigd * p(icb)) |
---|
[524] | 1030 | |
---|
[5144] | 1031 | 405 CONTINUE |
---|
[524] | 1032 | |
---|
[1992] | 1033 | ! *** CALCULATE TENDENCIES OF LOWEST LEVEL POTENTIAL TEMPERATURE *** |
---|
| 1034 | ! *** AND MIXING RATIO *** |
---|
[524] | 1035 | |
---|
[5144] | 1036 | dpinv = 1.0 / (ph(1) - ph(2)) |
---|
[1992] | 1037 | am = 0.0 |
---|
| 1038 | DO k = 2, inb |
---|
| 1039 | am = am + m(k) |
---|
| 1040 | END DO |
---|
[5144] | 1041 | IF ((0.1 * dpinv * am)>=delti) iflag = 4 |
---|
| 1042 | ft(1) = 0.1 * dpinv * am * (t(2) - t(1) + (gz(2) - gz(1)) / cpn(1)) |
---|
| 1043 | ft(1) = ft(1) - 0.5 * lvcp(1) * sigd * (evap(1) + evap(2)) |
---|
| 1044 | ft(1) = ft(1) - 0.09 * sigd * mp(2) * t(1) * b(1) * dpinv |
---|
| 1045 | ft(1) = ft(1) + 0.01 * sigd * wt(1) * (cl - cpd) * water(2) * (t(2) - t(1)) * dpinv / cpn(1) |
---|
| 1046 | fr(1) = 0.1 * mp(2) * (rp(2) - rr(1)) * & ! correction bug conservation eau |
---|
| 1047 | ! 1 DPINV+SIGD*0.5*(EVAP(1)+EVAP(2)) |
---|
| 1048 | dpinv + sigd * 0.5 * (evap(1) + evap(2)) |
---|
[1992] | 1049 | ! IM cf. SBL |
---|
| 1050 | ! 1 DPINV+SIGD*EVAP(1) |
---|
[5144] | 1051 | fr(1) = fr(1) + 0.1 * am * (rr(2) - rr(1)) * dpinv |
---|
| 1052 | fu(1) = fu(1) + 0.1 * dpinv * (mp(2) * (up(2) - u(1)) + am * (u(2) - u(1))) |
---|
| 1053 | fv(1) = fv(1) + 0.1 * dpinv * (mp(2) * (vp(2) - v(1)) + am * (v(2) - v(1))) |
---|
[1992] | 1054 | DO j = 1, ntra |
---|
[5144] | 1055 | ftra(1, j) = ftra(1, j) + 0.1 * dpinv * (mp(2) * (trap(2, j) - tra(1, & |
---|
| 1056 | j)) + am * (tra(2, j) - tra(1, j))) |
---|
[1992] | 1057 | END DO |
---|
| 1058 | amde = 0.0 |
---|
| 1059 | DO j = 2, inb |
---|
[5144] | 1060 | fr(1) = fr(1) + 0.1 * dpinv * ment(j, 1) * (qent(j, 1) - rr(1)) |
---|
| 1061 | fu(1) = fu(1) + 0.1 * dpinv * ment(j, 1) * (uent(j, 1) - u(1)) |
---|
| 1062 | fv(1) = fv(1) + 0.1 * dpinv * ment(j, 1) * (vent(j, 1) - v(1)) |
---|
[1992] | 1063 | DO k = 1, ntra |
---|
[5144] | 1064 | ftra(1, k) = ftra(1, k) + 0.1 * dpinv * ment(j, 1) * (traent(j, 1, k) - tra(1, k)) |
---|
[1992] | 1065 | END DO |
---|
| 1066 | END DO |
---|
| 1067 | |
---|
| 1068 | ! *** CALCULATE TENDENCIES OF POTENTIAL TEMPERATURE AND MIXING RATIO *** |
---|
| 1069 | ! *** AT LEVELS ABOVE THE LOWEST LEVEL *** |
---|
| 1070 | |
---|
| 1071 | ! *** FIRST FIND THE NET SATURATED UPDRAFT AND DOWNDRAFT MASS FLUXES *** |
---|
| 1072 | ! *** THROUGH EACH LEVEL *** |
---|
| 1073 | |
---|
| 1074 | DO i = 2, inb |
---|
[5144] | 1075 | dpinv = 1.0 / (ph(i) - ph(i + 1)) |
---|
| 1076 | cpinv = 1.0 / cpn(i) |
---|
[1992] | 1077 | amp1 = 0.0 |
---|
| 1078 | DO k = i + 1, inb + 1 |
---|
| 1079 | amp1 = amp1 + m(k) |
---|
| 1080 | END DO |
---|
| 1081 | DO k = 1, i |
---|
| 1082 | DO j = i + 1, inb + 1 |
---|
| 1083 | amp1 = amp1 + ment(k, j) |
---|
| 1084 | END DO |
---|
| 1085 | END DO |
---|
[5144] | 1086 | IF ((0.1 * dpinv * amp1)>=delti) iflag = 4 |
---|
[1992] | 1087 | ad = 0.0 |
---|
| 1088 | DO k = 1, i - 1 |
---|
| 1089 | DO j = i, inb |
---|
| 1090 | ad = ad + ment(j, k) |
---|
| 1091 | END DO |
---|
| 1092 | END DO |
---|
[5144] | 1093 | ft(i) = 0.1 * dpinv * (amp1 * (t(i + 1) - t(i) + (gz(i + 1) - gz(i)) * cpinv) - ad * (t(i) - t(i - & |
---|
| 1094 | 1) + (gz(i) - gz(i - 1)) * cpinv)) - 0.5 * sigd * lvcp(i) * (evap(i) + evap(i + 1)) |
---|
| 1095 | rat = cpn(i - 1) * cpinv |
---|
| 1096 | ft(i) = ft(i) - 0.09 * sigd * (mp(i + 1) * t(i) * b(i) - mp(i) * t(i - 1) * rat * b(i - 1)) * & |
---|
| 1097 | dpinv |
---|
| 1098 | ft(i) = ft(i) + 0.1 * dpinv * ment(i, i) * (hp(i) - h(i) + t(i) * (cpv - cpd) * (rr(i) - & |
---|
| 1099 | qent(i, i))) * cpinv |
---|
| 1100 | ft(i) = ft(i) + 0.01 * sigd * wt(i) * (cl - cpd) * water(i + 1) * (t(i + 1) - t(i)) * dpinv * & |
---|
| 1101 | cpinv |
---|
| 1102 | fr(i) = 0.1 * dpinv * (amp1 * (rr(i + 1) - rr(i)) - ad * (rr(i) - rr(i - 1))) |
---|
| 1103 | fu(i) = fu(i) + 0.1 * dpinv * (amp1 * (u(i + 1) - u(i)) - ad * (u(i) - u(i - 1))) |
---|
| 1104 | fv(i) = fv(i) + 0.1 * dpinv * (amp1 * (v(i + 1) - v(i)) - ad * (v(i) - v(i - 1))) |
---|
[1992] | 1105 | DO k = 1, ntra |
---|
[5144] | 1106 | ftra(i, k) = ftra(i, k) + 0.1 * dpinv * (amp1 * (tra(i + 1, k) - tra(i, & |
---|
| 1107 | k)) - ad * (tra(i, k) - tra(i - 1, k))) |
---|
[1992] | 1108 | END DO |
---|
| 1109 | DO k = 1, i - 1 |
---|
[5144] | 1110 | awat = elij(k, i) - (1. - ep(i)) * clw(i) |
---|
[1992] | 1111 | awat = amax1(awat, 0.0) |
---|
[5144] | 1112 | fr(i) = fr(i) + 0.1 * dpinv * ment(k, i) * (qent(k, i) - awat - rr(i)) |
---|
| 1113 | fu(i) = fu(i) + 0.1 * dpinv * ment(k, i) * (uent(k, i) - u(i)) |
---|
| 1114 | fv(i) = fv(i) + 0.1 * dpinv * ment(k, i) * (vent(k, i) - v(i)) |
---|
[1992] | 1115 | ! (saturated updrafts resulting from mixing) ! cld |
---|
[5144] | 1116 | qcond(i) = qcond(i) + (elij(k, i) - awat) ! cld |
---|
[1992] | 1117 | nqcond(i) = nqcond(i) + 1. ! cld |
---|
| 1118 | DO j = 1, ntra |
---|
[5144] | 1119 | ftra(i, j) = ftra(i, j) + 0.1 * dpinv * ment(k, i) * (traent(k, i, j) - tra(i, j & |
---|
| 1120 | )) |
---|
[1992] | 1121 | END DO |
---|
| 1122 | END DO |
---|
| 1123 | DO k = i, inb |
---|
[5144] | 1124 | fr(i) = fr(i) + 0.1 * dpinv * ment(k, i) * (qent(k, i) - rr(i)) |
---|
| 1125 | fu(i) = fu(i) + 0.1 * dpinv * ment(k, i) * (uent(k, i) - u(i)) |
---|
| 1126 | fv(i) = fv(i) + 0.1 * dpinv * ment(k, i) * (vent(k, i) - v(i)) |
---|
[1992] | 1127 | DO j = 1, ntra |
---|
[5144] | 1128 | ftra(i, j) = ftra(i, j) + 0.1 * dpinv * ment(k, i) * (traent(k, i, j) - tra(i, j & |
---|
| 1129 | )) |
---|
[1992] | 1130 | END DO |
---|
| 1131 | END DO |
---|
[5144] | 1132 | fr(i) = fr(i) + 0.5 * sigd * (evap(i) + evap(i + 1)) + 0.1 * (mp(i + 1) * (rp(i + & |
---|
| 1133 | 1) - rr(i)) - mp(i) * (rp(i) - rr(i - 1))) * dpinv |
---|
| 1134 | fu(i) = fu(i) + 0.1 * (mp(i + 1) * (up(i + 1) - u(i)) - mp(i) * (up(i) - u(i - 1))) * dpinv |
---|
| 1135 | fv(i) = fv(i) + 0.1 * (mp(i + 1) * (vp(i + 1) - v(i)) - mp(i) * (vp(i) - v(i - 1))) * dpinv |
---|
[1992] | 1136 | DO j = 1, ntra |
---|
[5144] | 1137 | ftra(i, j) = ftra(i, j) + 0.1 * dpinv * (mp(i + 1) * (trap(i + 1, j) - tra(i, & |
---|
| 1138 | j)) - mp(i) * (trap(i, j) - trap(i - 1, j))) |
---|
[1992] | 1139 | END DO |
---|
| 1140 | ! (saturated downdrafts resulting from mixing) ! cld |
---|
| 1141 | DO k = i + 1, inb ! cld |
---|
| 1142 | qcond(i) = qcond(i) + elij(k, i) ! cld |
---|
| 1143 | nqcond(i) = nqcond(i) + 1. ! cld |
---|
| 1144 | END DO ! cld |
---|
| 1145 | ! (particular case: no detraining level is found) ! cld |
---|
| 1146 | IF (nent(i)==0) THEN ! cld |
---|
[5144] | 1147 | qcond(i) = qcond(i) + (1 - ep(i)) * clw(i) ! cld |
---|
[1992] | 1148 | nqcond(i) = nqcond(i) + 1. ! cld |
---|
| 1149 | END IF ! cld |
---|
| 1150 | IF (nqcond(i)/=0.) THEN ! cld |
---|
[5144] | 1151 | qcond(i) = qcond(i) / nqcond(i) ! cld |
---|
[1992] | 1152 | END IF ! cld |
---|
| 1153 | END DO |
---|
| 1154 | |
---|
| 1155 | |
---|
| 1156 | |
---|
| 1157 | |
---|
| 1158 | ! *** MOVE THE DETRAINMENT AT LEVEL INB DOWN TO LEVEL INB-1 *** |
---|
| 1159 | ! *** IN SUCH A WAY AS TO PRESERVE THE VERTICALLY *** |
---|
| 1160 | ! *** INTEGRATED ENTHALPY AND WATER TENDENCIES *** |
---|
| 1161 | |
---|
| 1162 | ! test sb: |
---|
[5116] | 1163 | ! @ WRITE(*,*) '--------------------------------------------' |
---|
| 1164 | ! @ WRITE(*,*) 'inb,ft,hp,h,t,rr,qent,ment,water,waterp,wt,mp,b' |
---|
| 1165 | ! @ WRITE(*,*) inb,ft(inb),hp(inb),h(inb) |
---|
[1992] | 1166 | ! @ : ,t(inb),rr(inb),qent(inb,inb) |
---|
| 1167 | ! @ : ,ment(inb,inb),water(inb) |
---|
| 1168 | ! @ : ,water(inb+1),wt(inb),mp(inb),b(inb) |
---|
[5116] | 1169 | ! @ WRITE(*,*) '--------------------------------------------' |
---|
[1992] | 1170 | ! fin test sb: |
---|
| 1171 | |
---|
[5144] | 1172 | ax = 0.1 * ment(inb, inb) * (hp(inb) - h(inb) + t(inb) * (cpv - cpd) * (rr(inb) - qent(inb, & |
---|
| 1173 | inb))) / (cpn(inb) * (ph(inb) - ph(inb + 1))) |
---|
[1992] | 1174 | ft(inb) = ft(inb) - ax |
---|
[5144] | 1175 | ft(inb - 1) = ft(inb - 1) + ax * cpn(inb) * (ph(inb) - ph(inb + 1)) / (cpn(inb - 1) * (ph(inb & |
---|
| 1176 | - 1) - ph(inb))) |
---|
| 1177 | bx = 0.1 * ment(inb, inb) * (qent(inb, inb) - rr(inb)) / (ph(inb) - ph(inb + 1)) |
---|
[1992] | 1178 | fr(inb) = fr(inb) - bx |
---|
[5144] | 1179 | fr(inb - 1) = fr(inb - 1) + bx * (ph(inb) - ph(inb + 1)) / (ph(inb - 1) - ph(inb)) |
---|
| 1180 | cx = 0.1 * ment(inb, inb) * (uent(inb, inb) - u(inb)) / (ph(inb) - ph(inb + 1)) |
---|
[1992] | 1181 | fu(inb) = fu(inb) - cx |
---|
[5144] | 1182 | fu(inb - 1) = fu(inb - 1) + cx * (ph(inb) - ph(inb + 1)) / (ph(inb - 1) - ph(inb)) |
---|
| 1183 | dx = 0.1 * ment(inb, inb) * (vent(inb, inb) - v(inb)) / (ph(inb) - ph(inb + 1)) |
---|
[1992] | 1184 | fv(inb) = fv(inb) - dx |
---|
[5144] | 1185 | fv(inb - 1) = fv(inb - 1) + dx * (ph(inb) - ph(inb + 1)) / (ph(inb - 1) - ph(inb)) |
---|
[1992] | 1186 | DO j = 1, ntra |
---|
[5144] | 1187 | ex = 0.1 * ment(inb, inb) * (traent(inb, inb, j) - tra(inb, j)) / & |
---|
| 1188 | (ph(inb) - ph(inb + 1)) |
---|
[1992] | 1189 | ftra(inb, j) = ftra(inb, j) - ex |
---|
[5144] | 1190 | ftra(inb - 1, j) = ftra(inb - 1, j) + ex * (ph(inb) - ph(inb + 1)) / (ph(inb - 1) - ph(& |
---|
| 1191 | inb)) |
---|
[1992] | 1192 | END DO |
---|
| 1193 | |
---|
| 1194 | ! *** HOMOGINIZE TENDENCIES BELOW CLOUD BASE *** |
---|
| 1195 | |
---|
| 1196 | asum = 0.0 |
---|
| 1197 | bsum = 0.0 |
---|
| 1198 | csum = 0.0 |
---|
| 1199 | dsum = 0.0 |
---|
| 1200 | DO i = 1, icb - 1 |
---|
[5144] | 1201 | asum = asum + ft(i) * (ph(i) - ph(i + 1)) |
---|
| 1202 | bsum = bsum + fr(i) * (lv(i) + (cl - cpd) * (t(i) - t(1))) * (ph(i) - ph(i + 1)) |
---|
| 1203 | csum = csum + (lv(i) + (cl - cpd) * (t(i) - t(1))) * (ph(i) - ph(i + 1)) |
---|
| 1204 | dsum = dsum + t(i) * (ph(i) - ph(i + 1)) / th(i) |
---|
[1992] | 1205 | END DO |
---|
| 1206 | DO i = 1, icb - 1 |
---|
[5144] | 1207 | ft(i) = asum * t(i) / (th(i) * dsum) |
---|
| 1208 | fr(i) = bsum / csum |
---|
[1992] | 1209 | END DO |
---|
| 1210 | |
---|
| 1211 | ! *** RESET COUNTER AND RETURN *** |
---|
| 1212 | |
---|
| 1213 | sig(nd) = 2.0 |
---|
| 1214 | |
---|
| 1215 | DO i = 1, nd |
---|
| 1216 | upwd(i) = 0.0 |
---|
| 1217 | dnwd(i) = 0.0 |
---|
| 1218 | ! sb dnwd0(i) = - mp(i) |
---|
| 1219 | END DO |
---|
| 1220 | |
---|
| 1221 | DO i = 1, nl |
---|
| 1222 | dnwd0(i) = -mp(i) |
---|
| 1223 | END DO |
---|
| 1224 | DO i = nl + 1, nd |
---|
| 1225 | dnwd0(i) = 0. |
---|
| 1226 | END DO |
---|
| 1227 | |
---|
| 1228 | DO i = icb, inb |
---|
| 1229 | upwd(i) = 0.0 |
---|
| 1230 | dnwd(i) = 0.0 |
---|
| 1231 | |
---|
| 1232 | DO k = i, inb |
---|
| 1233 | up1 = 0.0 |
---|
| 1234 | dn1 = 0.0 |
---|
| 1235 | DO n = 1, i - 1 |
---|
| 1236 | up1 = up1 + ment(n, k) |
---|
| 1237 | dn1 = dn1 - ment(k, n) |
---|
| 1238 | END DO |
---|
| 1239 | upwd(i) = upwd(i) + m(k) + up1 |
---|
| 1240 | dnwd(i) = dnwd(i) + dn1 |
---|
| 1241 | END DO |
---|
| 1242 | END DO |
---|
| 1243 | |
---|
| 1244 | ! ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
---|
| 1245 | ! DETERMINATION DE LA VARIATION DE FLUX ASCENDANT ENTRE |
---|
| 1246 | ! DEUX NIVEAU NON DILUE Mike |
---|
| 1247 | ! ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
---|
| 1248 | |
---|
| 1249 | |
---|
| 1250 | ! sb do i=1,ND |
---|
| 1251 | ! sb Mike(i)=M(i) |
---|
| 1252 | ! sb enddo |
---|
| 1253 | |
---|
| 1254 | DO i = 1, nl |
---|
| 1255 | mike(i) = m(i) |
---|
| 1256 | END DO |
---|
| 1257 | DO i = nl + 1, nd |
---|
| 1258 | mike(i) = 0. |
---|
| 1259 | END DO |
---|
| 1260 | |
---|
| 1261 | DO i = 1, nd |
---|
| 1262 | ma(i) = 0 |
---|
| 1263 | END DO |
---|
| 1264 | |
---|
| 1265 | ! sb do i=1,nd |
---|
| 1266 | ! sb do j=i,nd |
---|
| 1267 | ! sb Ma(i)=Ma(i)+M(j) |
---|
| 1268 | ! sb enddo |
---|
| 1269 | ! sb enddo |
---|
| 1270 | |
---|
| 1271 | DO i = 1, nl |
---|
| 1272 | DO j = i, nl |
---|
| 1273 | ma(i) = ma(i) + m(j) |
---|
| 1274 | END DO |
---|
| 1275 | END DO |
---|
| 1276 | |
---|
| 1277 | DO i = nl + 1, nd |
---|
| 1278 | ma(i) = 0. |
---|
| 1279 | END DO |
---|
| 1280 | |
---|
| 1281 | DO i = 1, icb - 1 |
---|
| 1282 | ma(i) = 0 |
---|
| 1283 | END DO |
---|
| 1284 | |
---|
| 1285 | |
---|
| 1286 | |
---|
| 1287 | ! cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
---|
| 1288 | ! ICB REPRESENTE DE NIVEAU OU SE TROUVE LA |
---|
| 1289 | ! BASE DU NUAGE , ET INB LE TOP DU NUAGE |
---|
| 1290 | ! ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
---|
| 1291 | |
---|
| 1292 | DO i = 1, nd |
---|
| 1293 | mke(i) = upwd(i) + dnwd(i) |
---|
| 1294 | END DO |
---|
| 1295 | |
---|
| 1296 | |
---|
| 1297 | ! *** Diagnose the in-cloud mixing ratio *** ! cld |
---|
| 1298 | ! *** of condensed water *** ! cld |
---|
[5113] | 1299 | ! cld |
---|
[1992] | 1300 | DO i = 1, nd ! cld |
---|
| 1301 | maa(i) = 0.0 ! cld |
---|
| 1302 | wa(i) = 0.0 ! cld |
---|
| 1303 | siga(i) = 0.0 ! cld |
---|
| 1304 | END DO ! cld |
---|
| 1305 | DO i = nk, inb ! cld |
---|
| 1306 | DO k = i + 1, inb + 1 ! cld |
---|
| 1307 | maa(i) = maa(i) + m(k) ! cld |
---|
| 1308 | END DO ! cld |
---|
| 1309 | END DO ! cld |
---|
| 1310 | DO i = icb, inb - 1 ! cld |
---|
| 1311 | axc(i) = 0. ! cld |
---|
| 1312 | DO j = icb, i ! cld |
---|
[5144] | 1313 | axc(i) = axc(i) + rd * (tvp(j) - tv(j)) * (ph(j) - ph(j + 1)) / p(j) ! cld |
---|
[1992] | 1314 | END DO ! cld |
---|
| 1315 | IF (axc(i)>0.0) THEN ! cld |
---|
[5144] | 1316 | wa(i) = sqrt(2. * axc(i)) ! cld |
---|
[1992] | 1317 | END IF ! cld |
---|
| 1318 | END DO ! cld |
---|
| 1319 | DO i = 1, nl ! cld |
---|
| 1320 | IF (wa(i)>0.0) & ! cld |
---|
[5144] | 1321 | siga(i) = maa(i) / wa(i) * rd * tvp(i) / p(i) / 100. / deltac ! cld |
---|
[1992] | 1322 | siga(i) = min(siga(i), 1.0) ! cld |
---|
[5144] | 1323 | qcondc(i) = siga(i) * clw(i) * (1. - ep(i)) & ! cld |
---|
| 1324 | + (1. - siga(i)) * qcond(i) ! cld |
---|
[1992] | 1325 | END DO ! cld |
---|
| 1326 | |
---|
| 1327 | |
---|
| 1328 | ! @$$cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
---|
[5101] | 1329 | ! @$$ CALL writeg1d(1,klev,ma,'ma ','ma ') |
---|
| 1330 | ! @$$ CALL writeg1d(1,klev,upwd,'upwd ','upwd ') |
---|
| 1331 | ! @$$ CALL writeg1d(1,klev,dnwd,'dnwd ','dnwd ') |
---|
| 1332 | ! @$$ CALL writeg1d(1,klev,dnwd0,'dnwd0 ','dnwd0 ') |
---|
| 1333 | ! @$$ CALL writeg1d(1,klev,tvp,'tvp ','tvp ') |
---|
| 1334 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,3),'tra3 ','tra3 ') |
---|
| 1335 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,4),'tra4 ','tra4 ') |
---|
| 1336 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,5),'tra5 ','tra5 ') |
---|
| 1337 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,6),'tra6 ','tra6 ') |
---|
| 1338 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,7),'tra7 ','tra7 ') |
---|
| 1339 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,8),'tra8 ','tra8 ') |
---|
| 1340 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,9),'tra9 ','tra9 ') |
---|
| 1341 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,10),'tra10','tra10') |
---|
| 1342 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,11),'tra11','tra11') |
---|
| 1343 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,12),'tra12','tra12') |
---|
| 1344 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,13),'tra13','tra13') |
---|
| 1345 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,14),'tra14','tra14') |
---|
| 1346 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,15),'tra15','tra15') |
---|
| 1347 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,16),'tra16','tra16') |
---|
| 1348 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,17),'tra17','tra17') |
---|
| 1349 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,18),'tra18','tra18') |
---|
| 1350 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,19),'tra19','tra19') |
---|
| 1351 | ! @$$ CALL writeg1d(1,klev,tra(1:klev,20),'tra20','tra20 ') |
---|
| 1352 | ! @$$ CALL writeg1d(1,klev,trap(1:klev,1),'trp1','trp1') |
---|
| 1353 | ! @$$ CALL writeg1d(1,klev,trap(1:klev,2),'trp2','trp2') |
---|
| 1354 | ! @$$ CALL writeg1d(1,klev,trap(1:klev,3),'trp3','trp3') |
---|
| 1355 | ! @$$ CALL writeg1d(1,klev,trap(1:klev,4),'trp4','trp4') |
---|
| 1356 | ! @$$ CALL writeg1d(1,klev,trap(1:klev,5),'trp5','trp5') |
---|
| 1357 | ! @$$ CALL writeg1d(1,klev,trap(1:klev,10),'trp10','trp10') |
---|
| 1358 | ! @$$ CALL writeg1d(1,klev,trap(1:klev,12),'trp12','trp12') |
---|
| 1359 | ! @$$ CALL writeg1d(1,klev,trap(1:klev,15),'trp15','trp15') |
---|
| 1360 | ! @$$ CALL writeg1d(1,klev,trap(1:klev,20),'trp20','trp20') |
---|
| 1361 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,1),'ftr1 ','ftr1 ') |
---|
| 1362 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,2),'ftr2 ','ftr2 ') |
---|
| 1363 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,3),'ftr3 ','ftr3 ') |
---|
| 1364 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,4),'ftr4 ','ftr4 ') |
---|
| 1365 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,5),'ftr5 ','ftr5 ') |
---|
| 1366 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,6),'ftr6 ','ftr6 ') |
---|
| 1367 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,7),'ftr7 ','ftr7 ') |
---|
| 1368 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,8),'ftr8 ','ftr8 ') |
---|
| 1369 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,9),'ftr9 ','ftr9 ') |
---|
| 1370 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,10),'ftr10','ftr10') |
---|
| 1371 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,11),'ftr11','ftr11') |
---|
| 1372 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,12),'ftr12','ftr12') |
---|
| 1373 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,13),'ftr13','ftr13') |
---|
| 1374 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,14),'ftr14','ftr14') |
---|
| 1375 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,15),'ftr15','ftr15') |
---|
| 1376 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,16),'ftr16','ftr16') |
---|
| 1377 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,17),'ftr17','ftr17') |
---|
| 1378 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,18),'ftr18','ftr18') |
---|
| 1379 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,19),'ftr19','ftr19') |
---|
| 1380 | ! @$$ CALL writeg1d(1,klev,ftra(1:klev,20),'ftr20','ftr20 ') |
---|
| 1381 | ! @$$ CALL writeg1d(1,klev,mp,'mp ','mp ') |
---|
| 1382 | ! @$$ CALL writeg1d(1,klev,Mke,'Mke ','Mke ') |
---|
[1992] | 1383 | |
---|
| 1384 | |
---|
| 1385 | |
---|
| 1386 | ! cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc |
---|
| 1387 | |
---|
| 1388 | END SUBROUTINE convect3 |
---|
| 1389 | ! --------------------------------------------------------------------------- |
---|