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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10 - (hide 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 guez 3 !
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 guez 10
18 guez 3 cFleur Introduction des traceurs dans convect3 le 6 juin 200
19 guez 10
20 guez 3 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