/[lmdze]/trunk/libf/phylmd/convect3.f
ViewVC logotype

Contents of /trunk/libf/phylmd/convect3.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (show annotations)
Wed Feb 27 13:16:39 2008 UTC (16 years, 2 months ago) by guez
File size: 46679 byte(s)
Initial import
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 ---------------------------------------------------------------------------

  ViewVC Help
Powered by ViewVC 1.1.21