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