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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10 - (show annotations)
Fri Apr 18 14:45:53 2008 UTC (16 years, 1 month ago) by guez
File size: 45880 byte(s)
Added NetCDF directory "/home/guez/include" in "g95.mk" and
"nag_tools.mk".

Added some "intent" attributes in "PVtheta", "advtrac", "caladvtrac",
"calfis", "diagedyn", "dissip", "vlspltqs", "aeropt", "ajsec",
"calltherm", "clmain", "cltrac", "cltracrn", "concvl", "conema3",
"conflx", "fisrtilp", "newmicro", "nuage", "diagcld1", "diagcld2",
"drag_noro", "lift_noro", "SUGWD", "physiq", "phytrac", "radlwsw", "thermcell".

Removed the case "ierr == 0" in "abort_gcm"; moved call to "histclo"
and messages for end of run from "abort_gcm" to "gcm"; replaced call
to "abort_gcm" in "leapfrog" by exit from outer loop.

In "calfis": removed argument "pp" and variable "unskap"; changed
"pksurcp" from scalar to rank 2; use "pressure_var"; rewrote
computation of "zplev", "zplay", "ztfi", "pcvgt" using "dyn_phy";
added computation of "pls".

Removed unused variable in "dynredem0".

In "exner_hyb": changed "dellta" from scalar to rank 1; replaced call
to "ssum" by call to "sum"; removed variables "xpn" and "xps";
replaced some loops by array expressions.

In "leapfrog": use "pressure_var"; deleted variables "p", "longcles".

Converted common blocks "YOECUMF", "YOEGWD" to modules.

Removed argument "pplay" in "cvltr", "diagetpq", "nflxtr".

Created module "raddimlw" from include file "raddimlw.h".

Corrected call to "new_unit" in "test_disvert".

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
18 cFleur Introduction des traceurs dans convect3 le 6 juin 200
19
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
612 CAPE=AMAX1(0.0,CAPE)
613 C
614 SIGOLD=SIG(I)
615 DTMIN=100.0
616 DO 97 J=ICB,I-1
617 Cjyg
618 CCC DTMIN=AMIN1(DTMIN,(TVP(J)-TV(J)))
619 DTMIN=AMIN1(DTMIN,BUOY(J))
620 97 CONTINUE
621 c sb3d print *, 'DTMIN, BETA, ALPHA, SIG = ',DTMIN,BETA,ALPHA,SIG(I)
622 SIG(I)=BETA*SIG(I)+ALPHA*DTMIN*ABS(DTMIN)
623 SIG(I)=AMAX1(SIG(I),0.0)
624 SIG(I)=AMIN1(SIG(I),0.01)
625 FAC=AMIN1(((DTCRIT-DTMIN)/DTCRIT),1.0)
626 Cjyg
627 CC Essais de reduction de la vitesse
628 CC FAC = FAC*.5
629 C
630 W=(1.-BETA)*FAC*SQRT(CAPE)+BETA*W0(I)
631 AMU=0.5*(SIG(I)+SIGOLD)*W
632 M(I)=AMU*0.007*P(I)*(PH(I)-PH(I+1))/TV(I)
633
634 W0(I)=W
635 98 CONTINUE
636 W0(ICB)=0.5*W0(ICB+1)
637 M(ICB)=0.5*M(ICB+1)*(PH(ICB)-PH(ICB+1))/(PH(ICB+1)-PH(ICB+2))
638 SIG(ICB)=SIG(ICB+1)
639 SIG(ICB-1)=SIG(ICB)
640 cjyg1
641 c sb3d print *, 'Cloud base, c. top, CAPE',ICB,INB,cape
642 c sb3d print *, 'SIG ',(sig(i),i=1,inb)
643 c sb3d print *, 'W ',(w0(i),i=1,inb)
644 c sb3d print *, 'M ',(m(i), i=1,inb)
645 c sb3d print *, 'Dt1 ',(tvp(i)-tv(i),i=1,inb)
646 c sb3d print *, 'Dt_vrai ',(buoy(i),i=1,inb)
647 Cjyg2
648 C
649 C *** CALCULATE ENTRAINED AIR MASS FLUX (MENT), TOTAL WATER MIXING ***
650 C *** RATIO (QENT), TOTAL CONDENSED WATER (ELIJ), AND MIXING ***
651 C *** FRACTION (SIJ) ***
652 C
653
654
655 DO 170 I=ICB,INB
656 RTI=RR(1)-EP(I)*CLW(I)
657 DO 160 J=ICB-1,INB
658 BF2=1.+LV(J)*LV(J)*RS(J)/(RV*T(J)*T(J)*CPD)
659 ANUM=H(J)-HP(I)+(CPV-CPD)*T(J)*(RTI-RR(J))
660 DENOM=H(I)-HP(I)+(CPD-CPV)*(RR(I)-RTI)*T(J)
661 DEI=DENOM
662 IF(ABS(DEI).LT.0.01)DEI=0.01
663 SIJ(I,J)=ANUM/DEI
664 SIJ(I,I)=1.0
665 ALTEM=SIJ(I,J)*RR(I)+(1.-SIJ(I,J))*RTI-RS(J)
666 ALTEM=ALTEM/BF2
667 CWAT=CLW(J)*(1.-EP(J))
668 STEMP=SIJ(I,J)
669 IF((STEMP.LT.0.0.OR.STEMP.GT.1.0.OR.
670 1 ALTEM.GT.CWAT).AND.J.GT.I)THEN
671 ANUM=ANUM-LV(J)*(RTI-RS(J)-CWAT*BF2)
672 DENOM=DENOM+LV(J)*(RR(I)-RTI)
673 IF(ABS(DENOM).LT.0.01)DENOM=0.01
674 SIJ(I,J)=ANUM/DENOM
675 ALTEM=SIJ(I,J)*RR(I)+(1.-SIJ(I,J))*RTI-RS(J)
676 ALTEM=ALTEM-(BF2-1.)*CWAT
677 END IF
678
679
680 IF(SIJ(I,J).GT.0.0.AND.SIJ(I,J).LT.0.95)THEN
681 QENT(I,J)=SIJ(I,J)*RR(I)+(1.-SIJ(I,J))*RTI
682 UENT(I,J)=SIJ(I,J)*U(I)+(1.-SIJ(I,J))*U(NK)
683 VENT(I,J)=SIJ(I,J)*V(I)+(1.-SIJ(I,J))*V(NK)
684 DO K=1,NTRA
685 TRAENT(I,J,K)=SIJ(I,J)*TRA(I,K)+(1.-SIJ(I,J))*
686 1 TRA(NK,K)
687 END DO
688 ELIJ(I,J)=ALTEM
689 ELIJ(I,J)=AMAX1(0.0,ELIJ(I,J))
690 MENT(I,J)=M(I)/(1.-SIJ(I,J))
691 NENT(I)=NENT(I)+1
692 END IF
693 SIJ(I,J)=AMAX1(0.0,SIJ(I,J))
694 SIJ(I,J)=AMIN1(1.0,SIJ(I,J))
695 160 CONTINUE
696 C
697 C *** IF NO AIR CAN ENTRAIN AT LEVEL I ASSUME THAT UPDRAFT DETRAINS ***
698 C *** AT THAT LEVEL AND CALCULATE DETRAINED AIR FLUX AND PROPERTIES ***
699 C
700 IF(NENT(I).EQ.0)THEN
701 MENT(I,I)=M(I)
702 QENT(I,I)=RR(NK)-EP(I)*CLW(I)
703 UENT(I,I)=U(NK)
704 VENT(I,I)=V(NK)
705 DO J=1,NTRA
706 TRAENT(I,I,J)=TRA(NK,J)
707 END DO
708 ELIJ(I,I)=CLW(I)
709 SIJ(I,I)=1.0
710 END IF
711 C
712 DO J = ICB-1,INB
713 SIGIJ(I,J) = SIJ(I,J)
714 ENDDO
715 C
716 170 CONTINUE
717 C
718 C *** NORMALIZE ENTRAINED AIR MASS FLUXES TO REPRESENT EQUAL ***
719 C *** PROBABILITIES OF MIXING ***
720 C
721
722 DO 200 I=ICB,INB
723 IF(NENT(I).NE.0)THEN
724 QP=RR(1)-EP(I)*CLW(I)
725 ANUM=H(I)-HP(I)-LV(I)*(QP-RS(I))+(CPV-CPD)*T(I)*
726 1 (QP-RR(I))
727 DENOM=H(I)-HP(I)+LV(I)*(RR(I)-QP)+
728 1 (CPD-CPV)*T(I)*(RR(I)-QP)
729 IF(ABS(DENOM).LT.0.01)DENOM=0.01
730 SCRIT=ANUM/DENOM
731 ALT=QP-RS(I)+SCRIT*(RR(I)-QP)
732 IF(SCRIT.LE.0.0.OR.ALT.LE.0.0)SCRIT=1.0
733 SMAX=0.0
734 ASIJ=0.0
735 DO 175 J=INB,ICB-1,-1
736 IF(SIJ(I,J).GT.1.0E-16.AND.SIJ(I,J).LT.0.95)THEN
737 WGH=1.0
738 IF(J.GT.I)THEN
739 SJMAX=AMAX1(SIJ(I,J+1),SMAX)
740 SJMAX=AMIN1(SJMAX,SCRIT)
741 SMAX=AMAX1(SIJ(I,J),SMAX)
742 SJMIN=AMAX1(SIJ(I,J-1),SMAX)
743 SJMIN=AMIN1(SJMIN,SCRIT)
744 IF(SIJ(I,J).LT.(SMAX-1.0E-16))WGH=0.0
745 SMID=AMIN1(SIJ(I,J),SCRIT)
746 ELSE
747 SJMAX=AMAX1(SIJ(I,J+1),SCRIT)
748 SMID=AMAX1(SIJ(I,J),SCRIT)
749 SJMIN=0.0
750 IF(J.GT.1)SJMIN=SIJ(I,J-1)
751 SJMIN=AMAX1(SJMIN,SCRIT)
752 END IF
753 DELP=ABS(SJMAX-SMID)
754 DELM=ABS(SJMIN-SMID)
755 ASIJ=ASIJ+WGH*(DELP+DELM)
756 MENT(I,J)=MENT(I,J)*(DELP+DELM)*WGH
757 END IF
758 175 CONTINUE
759 ASIJ=AMAX1(1.0E-16,ASIJ)
760 ASIJ=1.0/ASIJ
761 DO 180 J=ICB-1,INB
762 MENT(I,J)=MENT(I,J)*ASIJ
763 180 CONTINUE
764 ASUM=0.0
765 BSUM=0.0
766 DO 190 J=ICB-1,INB
767 ASUM=ASUM+MENT(I,J)
768 MENT(I,J)=MENT(I,J)*SIG(J)
769 BSUM=BSUM+MENT(I,J)
770 190 CONTINUE
771 BSUM=AMAX1(BSUM,1.0E-16)
772 BSUM=1.0/BSUM
773 DO 195 J=ICB-1,INB
774 MENT(I,J)=MENT(I,J)*ASUM*BSUM
775 195 CONTINUE
776 CSUM=0.0
777 DO 197 J=ICB-1,INB
778 CSUM=CSUM+MENT(I,J)
779 197 CONTINUE
780
781 IF(CSUM.LT.M(I))THEN
782 NENT(I)=0
783 MENT(I,I)=M(I)
784 QENT(I,I)=RR(1)-EP(I)*CLW(I)
785 UENT(I,I)=U(NK)
786 VENT(I,I)=V(NK)
787 DO J=1,NTRA
788 TRAENT(I,I,J)=TRA(NK,J)
789 END DO
790 ELIJ(I,I)=CLW(I)
791 SIJ(I,I)=1.0
792 END IF
793 END IF
794 200 CONTINUE
795
796
797
798 ***************************************************************
799 ** CALCUL DES MENTS(I,J) ET DES QENTS(I,J)
800 **************************************************************
801
802 DO im=1,nd
803 do jm=1,nd
804
805 QENTS(im,jm)=QENT(im,jm)
806 MENTS(im,jm)=MENT(im,jm)
807 enddo
808 enddo
809
810 ***********************************************************
811 c--- test sb:
812 c@ write(*,*) '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'
813 c@ write(*,*) 'inb,m(inb),ment(inb,inb),sigij(inb,inb):'
814 c@ write(*,*) inb,m(inb),ment(inb,inb),sigij(inb,inb)
815 c@ write(*,*) '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'
816 c---
817
818
819
820
821 C
822 C *** CHECK WHETHER EP(INB)=0, IF SO, SKIP PRECIPITATING ***
823 C *** DOWNDRAFT CALCULATION ***
824 C
825 IF(EP(INB).LT.0.0001)GOTO 405
826 C
827 C *** INTEGRATE LIQUID WATER EQUATION TO FIND CONDENSED WATER ***
828 C *** AND CONDENSED WATER FLUX ***
829 C
830 WFLUX=0.0
831 TINV=1./3.
832 C
833 C *** BEGIN DOWNDRAFT LOOP ***
834 C
835 DO 400 I=INB,1,-1
836 C
837 C *** CALCULATE DETRAINED PRECIPITATION ***
838 C
839
840
841 WDTRAIN=10.0*EP(I)*M(I)*CLW(I)
842 IF(I.GT.1)THEN
843 DO 320 J=1,I-1
844 AWAT=ELIJ(J,I)-(1.-EP(I))*CLW(I)
845 AWAT=AMAX1(AWAT,0.0)
846 320 WDTRAIN=WDTRAIN+10.0*AWAT*MENT(J,I)
847 END IF
848 C
849 C *** FIND RAIN WATER AND EVAPORATION USING PROVISIONAL ***
850 C *** ESTIMATES OF RP(I)AND RP(I-1) ***
851 C
852
853
854 WT(I)=45.0
855 IF(I.LT.INB)THEN
856 RP(I)=RP(I+1)+(CPD*(T(I+1)-T(I))+GZ(I+1)-GZ(I))/LV(I)
857 RP(I)=0.5*(RP(I)+RR(I))
858 END IF
859 RP(I)=AMAX1(RP(I),0.0)
860 RP(I)=AMIN1(RP(I),RS(I))
861 RP(INB)=RR(INB)
862 IF(I.EQ.1)THEN
863 AFAC=P(1)*(RS(1)-RP(1))/(1.0E4+2000.0*P(1)*RS(1))
864 ELSE
865 RP(I-1)=RP(I)+(CPD*(T(I)-T(I-1))+GZ(I)-GZ(I-1))/LV(I)
866 RP(I-1)=0.5*(RP(I-1)+RR(I-1))
867 RP(I-1)=AMIN1(RP(I-1),RS(I-1))
868 RP(I-1)=AMAX1(RP(I-1),0.0)
869 AFAC1=P(I)*(RS(I)-RP(I))/(1.0E4+2000.0*P(I)*RS(I))
870 AFAC2=P(I-1)*(RS(I-1)-RP(I-1))/(1.0E4+
871 1 2000.0*P(I-1)*RS(I-1))
872 AFAC=0.5*(AFAC1+AFAC2)
873 END IF
874 IF(I.EQ.INB)AFAC=0.0
875 AFAC=AMAX1(AFAC,0.0)
876 BFAC=1./(SIGD*WT(I))
877 C
878 Cjyg1
879 CCC SIGT=1.0
880 CCC IF(I.GE.ICB)SIGT=SIGP(I)
881 C Prise en compte de la variation progressive de SIGT dans
882 C les couches ICB et ICB-1:
883 C Pour PLCL<PH(I+1), PR1=0 & PR2=1
884 C Pour PLCL>PH(I), PR1=1 & PR2=0
885 C Pour PH(I+1)<PLCL<PH(I), PR1 est la proportion a cheval
886 C sur le nuage, et PR2 est la proportion sous la base du
887 C nuage.
888 PR1 =(PLCL-PH(I+1))/(PH(I)-PH(I+1))
889 PR1 = MAX(0.,MIN(1.,PR1))
890 PR2 = (PH(I)-PLCL)/(PH(I)-PH(I+1))
891 PR2 = MAX(0.,MIN(1.,PR2))
892 SIGT = SIGP(I)*PR1 + PR2
893 c sb3d print *,'i,sigt,pr1,pr2', i,sigt,pr1,pr2
894 Cjyg2
895 C
896 B6=BFAC*50.*SIGD*(PH(I)-PH(I+1))*SIGT*AFAC
897 C6=WATER(I+1)+BFAC*WDTRAIN-50.*SIGD*BFAC*
898 1 (PH(I)-PH(I+1))*EVAP(I+1)
899 IF(C6.GT.0.0)THEN
900 REVAP=0.5*(-B6+SQRT(B6*B6+4.*C6))
901 EVAP(I)=SIGT*AFAC*REVAP
902 WATER(I)=REVAP*REVAP
903 ELSE
904 EVAP(I)=-EVAP(I+1)+0.02*(WDTRAIN+SIGD*WT(I)*
905 1 WATER(I+1))/(SIGD*(PH(I)-PH(I+1)))
906 END IF
907
908
909 C
910 C *** CALCULATE PRECIPITATING DOWNDRAFT MASS FLUX UNDER ***
911 C *** HYDROSTATIC APPROXIMATION ***
912 C
913 IF(I.EQ.1)GOTO 360
914 TEVAP=AMAX1(0.0,EVAP(I))
915 DELTH=AMAX1(0.001,(TH(I)-TH(I-1)))
916 MP(I)=10.*LVCP(I)*SIGD*TEVAP*(P(I-1)-P(I))/DELTH
917 C
918 C *** IF HYDROSTATIC ASSUMPTION FAILS, ***
919 C *** SOLVE CUBIC DIFFERENCE EQUATION FOR DOWNDRAFT THETA ***
920 C *** AND MASS FLUX FROM TWO SIMULTANEOUS DIFFERENTIAL EQNS ***
921 C
922 AMFAC=SIGD*SIGD*70.0*PH(I)*(P(I-1)-P(I))*
923 1 (TH(I)-TH(I-1))/(TV(I)*TH(I))
924 AMP2=ABS(MP(I+1)*MP(I+1)-MP(I)*MP(I))
925 IF(AMP2.GT.(0.1*AMFAC))THEN
926 XF=100.0*SIGD*SIGD*SIGD*(PH(I)-PH(I+1))
927 TF=B(I)-5.0*(TH(I)-TH(I-1))*T(I)/(LVCP(I)*SIGD*TH(I))
928 AF=XF*TF+MP(I+1)*MP(I+1)*TINV
929 BF=2.*(TINV*MP(I+1))**3+TINV*MP(I+1)*XF*TF+50.*
930 1 (P(I-1)-P(I))*XF*TEVAP
931 FAC2=1.0
932 IF(BF.LT.0.0)FAC2=-1.0
933 BF=ABS(BF)
934 UR=0.25*BF*BF-AF*AF*AF*TINV*TINV*TINV
935 IF(UR.GE.0.0)THEN
936 SRU=SQRT(UR)
937 FAC=1.0
938 IF((0.5*BF-SRU).LT.0.0)FAC=-1.0
939 MP(I)=MP(I+1)*TINV+(0.5*BF+SRU)**TINV+
940 1 FAC*(ABS(0.5*BF-SRU))**TINV
941 ELSE
942 D=ATAN(2.*SQRT(-UR)/(BF+1.0E-28))
943 IF(FAC2.LT.0.0)D=3.14159-D
944 MP(I)=MP(I+1)*TINV+2.*SQRT(AF*TINV)*COS(D*TINV)
945 END IF
946 MP(I)=AMAX1(0.0,MP(I))
947 B(I-1)=B(I)+100.0*(P(I-1)-P(I))*TEVAP/(MP(I)+SIGD*0.1)-
948 1 10.0*(TH(I)-TH(I-1))*T(I)/(LVCP(I)*SIGD*TH(I))
949 B(I-1)=AMAX1(B(I-1),0.0)
950 END IF
951
952
953 C
954 C *** LIMIT MAGNITUDE OF MP(I) TO MEET CFL CONDITION ***
955 C
956 AMPMAX=2.0*(PH(I)-PH(I+1))*DELTI
957 AMP2=2.0*(PH(I-1)-PH(I))*DELTI
958 AMPMAX=AMIN1(AMPMAX,AMP2)
959 MP(I)=AMIN1(MP(I),AMPMAX)
960 C
961 C *** FORCE MP TO DECREASE LINEARLY TO ZERO ***
962 C *** BETWEEN CLOUD BASE AND THE SURFACE ***
963 C
964 IF(P(I).GT.P(ICB))THEN
965 MP(I)=MP(ICB)*(P(1)-P(I))/(P(1)-P(ICB))
966 END IF
967 360 CONTINUE
968 C
969 C *** FIND MIXING RATIO OF PRECIPITATING DOWNDRAFT ***
970 C
971 IF(I.EQ.INB)GOTO 400
972 RP(I)=RR(I)
973 IF(MP(I).GT.MP(I+1))THEN
974 RP(I)=RP(I+1)*MP(I+1)+RR(I)*(MP(I)-MP(I+1))+
975 1 5.*SIGD*(PH(I)-PH(I+1))*(EVAP(I+1)+EVAP(I))
976 RP(I)=RP(I)/MP(I)
977 UP(I)=UP(I+1)*MP(I+1)+U(I)*(MP(I)-MP(I+1))
978 UP(I)=UP(I)/MP(I)
979 VP(I)=VP(I+1)*MP(I+1)+V(I)*(MP(I)-MP(I+1))
980 VP(I)=VP(I)/MP(I)
981 DO J=1,NTRA
982 TRAP(I,J)=TRAP(I+1,J)*MP(I+1)+
983 s TRAP(I,J)*(MP(I)-MP(I+1))
984 TRAP(I,J)=TRAP(I,J)/MP(I)
985 END DO
986 ELSE
987 IF(MP(I+1).GT.1.0E-16)THEN
988 RP(I)=RP(I+1)+5.0*SIGD*(PH(I)-PH(I+1))*(EVAP(I+1)+
989 1 EVAP(I))/MP(I+1)
990 UP(I)=UP(I+1)
991 VP(I)=VP(I+1)
992 DO J=1,NTRA
993 TRAP(I,J)=TRAP(I+1,J)
994 END DO
995 END IF
996 END IF
997 RP(I)=AMIN1(RP(I),RS(I))
998 RP(I)=AMAX1(RP(I),0.0)
999 400 CONTINUE
1000 C
1001 C *** CALCULATE SURFACE PRECIPITATION IN MM/DAY ***
1002 C
1003 PRECIP=WT(1)*SIGD*WATER(1)*8640.0
1004
1005 c sb *** Calculate downdraft velocity scale and surface temperature and ***
1006 c sb *** water vapor fluctuations ***
1007 c sb (inspire de convect 4.3)
1008
1009 c BETAD=10.0
1010 BETAD=5.0
1011 WD=BETAD*ABS(MP(ICB))*0.01*RD*T(ICB)/(SIGD*P(ICB))
1012
1013 405 CONTINUE
1014 C
1015 C *** CALCULATE TENDENCIES OF LOWEST LEVEL POTENTIAL TEMPERATURE ***
1016 C *** AND MIXING RATIO ***
1017 C
1018 DPINV=1.0/(PH(1)-PH(2))
1019 AM=0.0
1020 DO 410 K=2,INB
1021 410 AM=AM+M(K)
1022 IF((0.1*DPINV*AM).GE.DELTI)IFLAG=4
1023 FT(1)=0.1*DPINV*AM*(T(2)-T(1)+(GZ(2)-GZ(1))/CPN(1))
1024 FT(1)=FT(1)-0.5*LVCP(1)*SIGD*(EVAP(1)+EVAP(2))
1025 FT(1)=FT(1)-0.09*SIGD*MP(2)*T(1)*B(1)*DPINV
1026 FT(1)=FT(1)+0.01*SIGD*WT(1)*(CL-CPD)*WATER(2)*(T(2)-
1027 1 T(1))*DPINV/CPN(1)
1028 FR(1)=0.1*MP(2)*(RP(2)-RR(1))*
1029 Ccorrection bug conservation eau
1030 C 1 DPINV+SIGD*0.5*(EVAP(1)+EVAP(2))
1031 1 DPINV+SIGD*0.5*(EVAP(1)+EVAP(2))
1032 cIM cf. SBL
1033 C 1 DPINV+SIGD*EVAP(1)
1034 FR(1)=FR(1)+0.1*AM*(RR(2)-RR(1))*DPINV
1035 FU(1)=FU(1)+0.1*DPINV*(MP(2)*(UP(2)-U(1))+AM*(U(2)-U(1)))
1036 FV(1)=FV(1)+0.1*DPINV*(MP(2)*(VP(2)-V(1))+AM*(V(2)-V(1)))
1037 DO J=1,NTRA
1038 FTRA(1,J)=FTRA(1,J)+0.1*DPINV*(MP(2)*(TRAP(2,J)-TRA(1,J))+
1039 1 AM*(TRA(2,J)-TRA(1,J)))
1040 END DO
1041 AMDE=0.0
1042 DO 415 J=2,INB
1043 FR(1)=FR(1)+0.1*DPINV*MENT(J,1)*(QENT(J,1)-RR(1))
1044 FU(1)=FU(1)+0.1*DPINV*MENT(J,1)*(UENT(J,1)-U(1))
1045 FV(1)=FV(1)+0.1*DPINV*MENT(J,1)*(VENT(J,1)-V(1))
1046 DO K=1,NTRA
1047 FTRA(1,K)=FTRA(1,K)+0.1*DPINV*MENT(J,1)*(TRAENT(J,1,K)-
1048 1 TRA(1,K))
1049 END DO
1050 415 CONTINUE
1051 C
1052 C *** CALCULATE TENDENCIES OF POTENTIAL TEMPERATURE AND MIXING RATIO ***
1053 C *** AT LEVELS ABOVE THE LOWEST LEVEL ***
1054 C
1055 C *** FIRST FIND THE NET SATURATED UPDRAFT AND DOWNDRAFT MASS FLUXES ***
1056 C *** THROUGH EACH LEVEL ***
1057 C
1058
1059
1060 DO 500 I=2,INB
1061 DPINV=1.0/(PH(I)-PH(I+1))
1062 CPINV=1.0/CPN(I)
1063 AMP1=0.0
1064 DO 440 K=I+1,INB+1
1065 440 AMP1=AMP1+M(K)
1066 DO 450 K=1,I
1067 DO 450 J=I+1,INB+1
1068 AMP1=AMP1+MENT(K,J)
1069 450 CONTINUE
1070 IF((0.1*DPINV*AMP1).GE.DELTI)IFLAG=4
1071 AD=0.0
1072 DO 470 K=1,I-1
1073 DO 470 J=I,INB
1074 470 AD=AD+MENT(J,K)
1075 FT(I)=0.1*DPINV*(AMP1*(T(I+1)-T(I)+(GZ(I+1)-GZ(I))*
1076 1 CPINV)-AD*(T(I)-T(I-1)+(GZ(I)-GZ(I-1))*CPINV))
1077 2 -0.5*SIGD*LVCP(I)*(EVAP(I)+EVAP(I+1))
1078 RAT=CPN(I-1)*CPINV
1079 FT(I)=FT(I)-0.09*SIGD*(MP(I+1)*T(I)*
1080 1 B(I)-MP(I)*T(I-1)*RAT*B(I-1))*DPINV
1081 FT(I)=FT(I)+0.1*DPINV*MENT(I,I)*(HP(I)-H(I)+
1082 1 T(I)*(CPV-CPD)*(RR(I)-QENT(I,I)))*CPINV
1083 FT(I)=FT(I)+0.01*SIGD*WT(I)*(CL-CPD)*WATER(I+1)*
1084 1 (T(I+1)-T(I))*DPINV*CPINV
1085 FR(I)=0.1*DPINV*(AMP1*(RR(I+1)-RR(I))-
1086 1 AD*(RR(I)-RR(I-1)))
1087 FU(I)=FU(I)+0.1*DPINV*(AMP1*(U(I+1)-U(I))-
1088 1 AD*(U(I)-U(I-1)))
1089 FV(I)=FV(I)+0.1*DPINV*(AMP1*(V(I+1)-V(I))-
1090 1 AD*(V(I)-V(I-1)))
1091 DO K=1,NTRA
1092 FTRA(I,K)=FTRA(I,K)+0.1*DPINV*(AMP1*(TRA(I+1,K)-
1093 1 TRA(I,K))-AD*(TRA(I,K)-TRA(I-1,K)))
1094 END DO
1095 DO 480 K=1,I-1
1096 AWAT=ELIJ(K,I)-(1.-EP(I))*CLW(I)
1097 AWAT=AMAX1(AWAT,0.0)
1098 FR(I)=FR(I)+0.1*DPINV*MENT(K,I)*(QENT(K,I)-AWAT
1099 1 -RR(I))
1100 FU(I)=FU(I)+0.1*DPINV*MENT(K,I)*(UENT(K,I)-U(I))
1101 FV(I)=FV(I)+0.1*DPINV*MENT(K,I)*(VENT(K,I)-V(I))
1102 C (saturated updrafts resulting from mixing) ! cld
1103 QCOND(I)=QCOND(I)+(ELIJ(K,I)-AWAT) ! cld
1104 NQCOND(I)=NQCOND(I)+1. ! cld
1105 DO J=1,NTRA
1106 FTRA(I,J)=FTRA(I,J)+0.1*DPINV*MENT(K,I)*(TRAENT(K,I,J)-
1107 1 TRA(I,J))
1108 END DO
1109 480 CONTINUE
1110 DO 490 K=I,INB
1111 FR(I)=FR(I)+0.1*DPINV*MENT(K,I)*(QENT(K,I)-RR(I))
1112 FU(I)=FU(I)+0.1*DPINV*MENT(K,I)*(UENT(K,I)-U(I))
1113 FV(I)=FV(I)+0.1*DPINV*MENT(K,I)*(VENT(K,I)-V(I))
1114 DO J=1,NTRA
1115 FTRA(I,J)=FTRA(I,J)+0.1*DPINV*MENT(K,I)*(TRAENT(K,I,J)-
1116 1 TRA(I,J))
1117 END DO
1118 490 CONTINUE
1119 FR(I)=FR(I)+0.5*SIGD*(EVAP(I)+EVAP(I+1))+0.1*(MP(I+1)*
1120 1 (RP(I+1)-RR(I))-MP(I)*(RP(I)-RR(I-1)))*DPINV
1121 FU(I)=FU(I)+0.1*(MP(I+1)*(UP(I+1)-U(I))-MP(I)*
1122 1 (UP(I)-U(I-1)))*DPINV
1123 FV(I)=FV(I)+0.1*(MP(I+1)*(VP(I+1)-V(I))-MP(I)*
1124 1 (VP(I)-V(I-1)))*DPINV
1125 DO J=1,NTRA
1126 FTRA(I,J)=FTRA(I,J)+0.1*DPINV*(MP(I+1)*(TRAP(I+1,J)-TRA(I,J))-
1127 1 MP(I)*(TRAP(I,J)-TRAP(I-1,J)))
1128 END DO
1129 C (saturated downdrafts resulting from mixing) ! cld
1130 DO K=I+1,INB ! cld
1131 QCOND(I)=QCOND(I)+ELIJ(K,I) ! cld
1132 NQCOND(I)=NQCOND(I)+1. ! cld
1133 ENDDO ! cld
1134 C (particular case: no detraining level is found) ! cld
1135 IF (NENT(I).EQ.0) THEN ! cld
1136 QCOND(I)=QCOND(I)+(1-EP(I))*CLW(I) ! cld
1137 NQCOND(I)=NQCOND(I)+1. ! cld
1138 ENDIF ! cld
1139 IF (NQCOND(I).NE.0.) THEN ! cld
1140 QCOND(I)=QCOND(I)/NQCOND(I) ! cld
1141 ENDIF ! cld
1142 500 CONTINUE
1143
1144
1145
1146 C
1147 C *** MOVE THE DETRAINMENT AT LEVEL INB DOWN TO LEVEL INB-1 ***
1148 C *** IN SUCH A WAY AS TO PRESERVE THE VERTICALLY ***
1149 C *** INTEGRATED ENTHALPY AND WATER TENDENCIES ***
1150 C
1151 c test sb:
1152 c@ write(*,*) '--------------------------------------------'
1153 c@ write(*,*) 'inb,ft,hp,h,t,rr,qent,ment,water,waterp,wt,mp,b'
1154 c@ write(*,*) inb,ft(inb),hp(inb),h(inb)
1155 c@ : ,t(inb),rr(inb),qent(inb,inb)
1156 c@ : ,ment(inb,inb),water(inb)
1157 c@ : ,water(inb+1),wt(inb),mp(inb),b(inb)
1158 c@ write(*,*) '--------------------------------------------'
1159 c fin test sb:
1160
1161 AX=0.1*MENT(INB,INB)*(HP(INB)-H(INB)+T(INB)*
1162 1 (CPV-CPD)*(RR(INB)-QENT(INB,INB)))/(CPN(INB)*
1163 2 (PH(INB)-PH(INB+1)))
1164 FT(INB)=FT(INB)-AX
1165 FT(INB-1)=FT(INB-1)+AX*CPN(INB)*(PH(INB)-PH(INB+1))/
1166 1 (CPN(INB-1)*(PH(INB-1)-PH(INB)))
1167 BX=0.1*MENT(INB,INB)*(QENT(INB,INB)-RR(INB))/
1168 1 (PH(INB)-PH(INB+1))
1169 FR(INB)=FR(INB)-BX
1170 FR(INB-1)=FR(INB-1)+BX*(PH(INB)-PH(INB+1))/
1171 1 (PH(INB-1)-PH(INB))
1172 CX=0.1*MENT(INB,INB)*(UENT(INB,INB)-U(INB))/
1173 1 (PH(INB)-PH(INB+1))
1174 FU(INB)=FU(INB)-CX
1175 FU(INB-1)=FU(INB-1)+CX*(PH(INB)-PH(INB+1))/
1176 1 (PH(INB-1)-PH(INB))
1177 DX=0.1*MENT(INB,INB)*(VENT(INB,INB)-V(INB))/
1178 1 (PH(INB)-PH(INB+1))
1179 FV(INB)=FV(INB)-DX
1180 FV(INB-1)=FV(INB-1)+DX*(PH(INB)-PH(INB+1))/
1181 1 (PH(INB-1)-PH(INB))
1182 DO J=1,NTRA
1183 EX=0.1*MENT(INB,INB)*(TRAENT(INB,INB,J)
1184 1 -TRA(INB,J))/(PH(INB)-PH(INB+1))
1185 FTRA(INB,J)=FTRA(INB,J)-EX
1186 FTRA(INB-1,J)=FTRA(INB-1,J)+EX*
1187 1 (PH(INB)-PH(INB+1))/(PH(INB-1)-PH(INB))
1188 ENDDO
1189 C
1190 C *** HOMOGINIZE TENDENCIES BELOW CLOUD BASE ***
1191 C
1192 ASUM=0.0
1193 BSUM=0.0
1194 CSUM=0.0
1195 DSUM=0.0
1196 DO 650 I=1,ICB-1
1197 ASUM=ASUM+FT(I)*(PH(I)-PH(I+1))
1198 BSUM=BSUM+FR(I)*(LV(I)+(CL-CPD)*(T(I)-T(1)))*
1199 1 (PH(I)-PH(I+1))
1200 CSUM=CSUM+(LV(I)+(CL-CPD)*(T(I)-T(1)))*(PH(I)-PH(I+1))
1201 DSUM=DSUM+T(I)*(PH(I)-PH(I+1))/TH(I)
1202 650 CONTINUE
1203 DO 700 I=1,ICB-1
1204 FT(I)=ASUM*T(I)/(TH(I)*DSUM)
1205 FR(I)=BSUM/CSUM
1206 700 CONTINUE
1207 C
1208 C *** RESET COUNTER AND RETURN ***
1209 C
1210 SIG(ND)=2.0
1211 c
1212 c
1213 do i = 1, nd
1214 upwd(i) = 0.0
1215 dnwd(i) = 0.0
1216 c sb dnwd0(i) = - mp(i)
1217 enddo
1218 c
1219 do i = 1, nl
1220 dnwd0(i) = - mp(i)
1221 enddo
1222 do i = nl+1, nd
1223 dnwd0(i) = 0.
1224 enddo
1225 c
1226 do i = icb, inb
1227 upwd(i) = 0.0
1228 dnwd(i) = 0.0
1229
1230 do k =i, inb
1231 up1=0.0
1232 dn1=0.0
1233 do n = 1, i-1
1234 up1 = up1 + ment(n,k)
1235 dn1 = dn1 - ment(k,n)
1236 enddo
1237 upwd(i) = upwd(i)+ m(k) + up1
1238 dnwd(i) = dnwd(i) + dn1
1239 enddo
1240 enddo
1241
1242 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
1243 c DETERMINATION DE LA VARIATION DE FLUX ASCENDANT ENTRE
1244 C DEUX NIVEAU NON DILUE Mike
1245 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
1246
1247
1248 c sb do i=1,ND
1249 c sb Mike(i)=M(i)
1250 c sb enddo
1251
1252 do i = 1, NL
1253 Mike(i) = M(i)
1254 enddo
1255 do i = NL+1, ND
1256 Mike(i) = 0.
1257 enddo
1258
1259 do i=1,nd
1260 Ma(i)=0
1261 enddo
1262
1263 c sb do i=1,nd
1264 c sb do j=i,nd
1265 c sb Ma(i)=Ma(i)+M(j)
1266 c sb enddo
1267 c sb enddo
1268
1269 do i = 1, NL
1270 do j = i, NL
1271 Ma(i) = Ma(i) + M(j)
1272 enddo
1273 enddo
1274 c
1275 do i = NL+1, ND
1276 Ma(i) = 0.
1277 enddo
1278 c
1279 do i=1,ICB-1
1280 Ma(i)=0
1281 enddo
1282
1283
1284
1285 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
1286 C ICB REPRESENTE DE NIVEAU OU SE TROUVE LA
1287 c BASE DU NUAGE , ET INB LE TOP DU NUAGE
1288 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
1289
1290
1291 do i=1,ND
1292 Mke(i)=upwd(i)+dnwd(i)
1293 enddo
1294
1295 C
1296 C *** Diagnose the in-cloud mixing ratio *** ! cld
1297 C *** of condensed water *** ! cld
1298 C ! cld
1299 DO I=1,ND ! cld
1300 MAA(I)=0.0 ! cld
1301 WA(I)=0.0 ! cld
1302 SIGA(I)=0.0 ! cld
1303 ENDDO ! cld
1304 DO I=NK,INB ! cld
1305 DO K=I+1,INB+1 ! cld
1306 MAA(I)=MAA(I)+M(K) ! cld
1307 ENDDO ! cld
1308 ENDDO ! cld
1309 DO I=ICB,INB-1 ! cld
1310 AXC(I)=0. ! cld
1311 DO J=ICB,I ! cld
1312 AXC(I)=AXC(I)+RD*(TVP(J)-TV(J))*(PH(J)-PH(J+1))/P(J) ! cld
1313 ENDDO ! cld
1314 IF (AXC(I).GT.0.0) THEN ! cld
1315 WA(I)=SQRT(2.*AXC(I)) ! cld
1316 ENDIF ! cld
1317 ENDDO ! cld
1318 DO I=1,NL ! cld
1319 IF (WA(I).GT.0.0) ! cld
1320 1 SIGA(I)=MAA(I)/WA(I)*RD*TVP(I)/P(I)/100./DELTAC ! cld
1321 SIGA(I) = MIN(SIGA(I),1.0) ! cld
1322 QCONDC(I)=SIGA(I)*CLW(I)*(1.-EP(I)) ! cld
1323 1 + (1.-SIGA(I))*QCOND(I) ! cld
1324 ENDDO ! cld
1325
1326
1327 c$$$cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
1328 c$$$ call writeg1d(1,klev,ma,'ma ','ma ')
1329 c$$$ call writeg1d(1,klev,upwd,'upwd ','upwd ')
1330 c$$$ call writeg1d(1,klev,dnwd,'dnwd ','dnwd ')
1331 c$$$ call writeg1d(1,klev,dnwd0,'dnwd0 ','dnwd0 ')
1332 c$$$ call writeg1d(1,klev,tvp,'tvp ','tvp ')
1333 c$$$ call writeg1d(1,klev,tra(1:klev,3),'tra3 ','tra3 ')
1334 c$$$ call writeg1d(1,klev,tra(1:klev,4),'tra4 ','tra4 ')
1335 c$$$ call writeg1d(1,klev,tra(1:klev,5),'tra5 ','tra5 ')
1336 c$$$ call writeg1d(1,klev,tra(1:klev,6),'tra6 ','tra6 ')
1337 c$$$ call writeg1d(1,klev,tra(1:klev,7),'tra7 ','tra7 ')
1338 c$$$ call writeg1d(1,klev,tra(1:klev,8),'tra8 ','tra8 ')
1339 c$$$ call writeg1d(1,klev,tra(1:klev,9),'tra9 ','tra9 ')
1340 c$$$ call writeg1d(1,klev,tra(1:klev,10),'tra10','tra10')
1341 c$$$ call writeg1d(1,klev,tra(1:klev,11),'tra11','tra11')
1342 c$$$ call writeg1d(1,klev,tra(1:klev,12),'tra12','tra12')
1343 c$$$ call writeg1d(1,klev,tra(1:klev,13),'tra13','tra13')
1344 c$$$ call writeg1d(1,klev,tra(1:klev,14),'tra14','tra14')
1345 c$$$ call writeg1d(1,klev,tra(1:klev,15),'tra15','tra15')
1346 c$$$ call writeg1d(1,klev,tra(1:klev,16),'tra16','tra16')
1347 c$$$ call writeg1d(1,klev,tra(1:klev,17),'tra17','tra17')
1348 c$$$ call writeg1d(1,klev,tra(1:klev,18),'tra18','tra18')
1349 c$$$ call writeg1d(1,klev,tra(1:klev,19),'tra19','tra19')
1350 c$$$ call writeg1d(1,klev,tra(1:klev,20),'tra20','tra20 ')
1351 c$$$ call writeg1d(1,klev,trap(1:klev,1),'trp1','trp1')
1352 c$$$ call writeg1d(1,klev,trap(1:klev,2),'trp2','trp2')
1353 c$$$ call writeg1d(1,klev,trap(1:klev,3),'trp3','trp3')
1354 c$$$ call writeg1d(1,klev,trap(1:klev,4),'trp4','trp4')
1355 c$$$ call writeg1d(1,klev,trap(1:klev,5),'trp5','trp5')
1356 c$$$ call writeg1d(1,klev,trap(1:klev,10),'trp10','trp10')
1357 c$$$ call writeg1d(1,klev,trap(1:klev,12),'trp12','trp12')
1358 c$$$ call writeg1d(1,klev,trap(1:klev,15),'trp15','trp15')
1359 c$$$ call writeg1d(1,klev,trap(1:klev,20),'trp20','trp20')
1360 c$$$ call writeg1d(1,klev,ftra(1:klev,1),'ftr1 ','ftr1 ')
1361 c$$$ call writeg1d(1,klev,ftra(1:klev,2),'ftr2 ','ftr2 ')
1362 c$$$ call writeg1d(1,klev,ftra(1:klev,3),'ftr3 ','ftr3 ')
1363 c$$$ call writeg1d(1,klev,ftra(1:klev,4),'ftr4 ','ftr4 ')
1364 c$$$ call writeg1d(1,klev,ftra(1:klev,5),'ftr5 ','ftr5 ')
1365 c$$$ call writeg1d(1,klev,ftra(1:klev,6),'ftr6 ','ftr6 ')
1366 c$$$ call writeg1d(1,klev,ftra(1:klev,7),'ftr7 ','ftr7 ')
1367 c$$$ call writeg1d(1,klev,ftra(1:klev,8),'ftr8 ','ftr8 ')
1368 c$$$ call writeg1d(1,klev,ftra(1:klev,9),'ftr9 ','ftr9 ')
1369 c$$$ call writeg1d(1,klev,ftra(1:klev,10),'ftr10','ftr10')
1370 c$$$ call writeg1d(1,klev,ftra(1:klev,11),'ftr11','ftr11')
1371 c$$$ call writeg1d(1,klev,ftra(1:klev,12),'ftr12','ftr12')
1372 c$$$ call writeg1d(1,klev,ftra(1:klev,13),'ftr13','ftr13')
1373 c$$$ call writeg1d(1,klev,ftra(1:klev,14),'ftr14','ftr14')
1374 c$$$ call writeg1d(1,klev,ftra(1:klev,15),'ftr15','ftr15')
1375 c$$$ call writeg1d(1,klev,ftra(1:klev,16),'ftr16','ftr16')
1376 c$$$ call writeg1d(1,klev,ftra(1:klev,17),'ftr17','ftr17')
1377 c$$$ call writeg1d(1,klev,ftra(1:klev,18),'ftr18','ftr18')
1378 c$$$ call writeg1d(1,klev,ftra(1:klev,19),'ftr19','ftr19')
1379 c$$$ call writeg1d(1,klev,ftra(1:klev,20),'ftr20','ftr20 ')
1380 c$$$ call writeg1d(1,klev,mp,'mp ','mp ')
1381 c$$$ call writeg1d(1,klev,Mke,'Mke ','Mke ')
1382
1383
1384
1385 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
1386 c
1387 c
1388 RETURN
1389 END
1390 C ---------------------------------------------------------------------------

  ViewVC Help
Powered by ViewVC 1.1.21