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