/[MITgcm]/MITgcm_contrib/jscott/igsm/src/condse.F
ViewVC logotype

Annotation of /MITgcm_contrib/jscott/igsm/src/condse.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (hide annotations) (download)
Tue Aug 22 20:25:52 2006 UTC (18 years, 11 months ago) by jscott
Branch: MAIN
Changes since 1.1: +1 -1 lines
changed AGRID.COM -> AGRID.h

1 jscott 1.1
2     #include "ctrparam.h"
3    
4     ! ==========================================================
5     !
6     ! CONDSE.F: THIS SUBROUTINE ADDS THE CONTRIBUTIONS TO
7     ! TEMPERATURE AND HUMIDITY CAUSED BY CONDENSATION.
8     !
9     ! ----------------------------------------------------------
10     !
11     ! Author of Chemistry Modules: Chien Wang
12     !
13     ! ----------------------------------------------------------
14     !
15     ! Revision History:
16     !
17     ! When Who What
18     ! ---- ---------- -------
19     ! 073100 Chien Wang repack based on CliChem3 and add cpp
20     ! 091901 Chien Wang make argument of dlog be in r8 format
21     ! 092001 Chien Wang add bc and oc
22     ! 100201 Chien Wang Eice =0.35
23     ! 062404 Chien Wang combine bc, oc code with Andrei's
24     ! ==========================================================
25    
26     SUBROUTINE CONDSE(mndriver) 3001.
27     C**** 3002.
28     C**** THIS SUBROUTINE ADDS THE CONTRIBUTIONS TO TEMPERATURE AND 3003.
29     C**** HUMIDITY CAUSED BY CONDENSATION. 3004.
30     C**** 3005.
31    
32     #include "BD2G04.COM" 3006.
33     C
34     #if ( defined OCEAN_3D || defined ML_2D)
35 jscott 1.2 #include "AGRID.h"
36 jscott 1.1 C#include "HRD4OCN.COM"
37     #endif
38    
39     #if ( defined CLM )
40     #include "CLM.COM"
41     #endif
42     c
43     #if ( defined CPL_CHEM )
44     !
45     #include "chem_para"
46     #include "chem_com"
47    
48     dimension xcfc11 (n3d)
49     dimension xcfc12 (n3d)
50     dimension xxn2o (n3d)
51     dimension xo3 (n3d)
52     dimension xco (n3d)
53     dimension xzco2 (n3d)
54     dimension xxno (n3d)
55     dimension xxno2 (n3d)
56     dimension xxn2o5 (n3d)
57     dimension xhno3 (n3d)
58     dimension xch4 (n3d)
59     dimension xch2o (n3d)
60     dimension xso2 (n3d)
61     dimension xh2so4 (n3d)
62     dimension xh2o2 (n3d)
63    
64     dimension xhfc134a (n3d)
65     dimension xpfc (n3d)
66     dimension xsf6 (n3d)
67    
68     dimension xbc (n3d)
69     dimension xoc (n3d)
70    
71     dimension prec_cnv (nlev)
72     dimension prec_str (nlev)
73     !
74     #endif
75    
76     COMMON/SPEC2/KM,KINC,COEK,C3LAND(IO0,JM0),C3OICE(IO0,JM0) 3006.1
77     * ,C3LICE(IO0,JM0),WMGE(IO0,JM0) 3006.2
78     COMMON U,V,T,P,Q 3007.
79     COMMON/WORK1/CONV(IM0,JM0,LM0),PK(IM0,JM0,LM0),PREC(IM0,JM0)
80     & ,TPREC(IM0,JM0), 3008.
81     * UC(IM0,JM0,LM0),VC(IM0,JM0,LM0) 3009.
82     COMMON/WORK2/CLDSS(IM0,JM0,LM0),CLDMC(IM0,JM0,LM0),UCLD(72,9)
83     &,VCLD(72,9), 3010.
84     * ID(8),PL(36),PLE(37),PLK(36),TH(36),TL(36),QL(180), 3011.
85     * UL(8,36),UPL(72,36),VPL(72,36),UPUP(72),VPUP(72), 3012.
86     * UUP(8),RA(8),FMXA(36),DSE(36),TCLA(36),TCUP(36), 3013.
87     * X(72),SIGMA1(36),AJ8(36),AJ13(36),AJ50(36) ,CXCD(36) 3014.
88     * ,DFMX(36),FCD(36),AETA(36),XCD(36),TO(36),QO(36) 3015.
89     COMMON/EPARA/VTH(JM0,LM0),WTH(JM0,LM0),VU(JM0,LM0),VV(JM0,LM0),
90     & DQSDT(JM0,LM0) 3015.5
91     * ,DWV(JM0),PHIT(JM0,LM0),TPRIM2(JM0,LM0),WU(JM0,LM0),CKS,CKN 3015.51
92     * ,WQ(JM0,LM0),VQ(JM0,LM0) 3015.52
93     common/fixcld/cldssm(JM0,LM0,0:13),cldmcm(JM0,LM0,0:13),
94     & CLDSST(JM0,LM0),
95     & CLDMCT(JM0,LM0)
96     DIMENSION XA(1,JM0),XB(1,JM0),CSDATA(JM0,LM0),CMDATA(JM0,LM0) 3015.53
97     DIMENSION SHL(180),SHSAT(36),TSAV(36),SIGMA2(36),TX(1,JM0,LM0) 3015.54
98     *,QSAV(LM0)
99     EQUIVALENCE (SHL(1),QL(1)) 3015.55
100     c DATA CSDATA/ 3015.56
101     c * 24.2,20.9,49.2,41.5,42.2,52.3,54.4,52.3,44.6,30.7,26.6,24.6, 3015.57
102     c * 24.4,26.4,26.0,29.4,35.2,46.3,45.7,36.3,25.4,32.6,38.3,22.3, 3015.58
103     c * 10.2,11.1,32.8,11.2,14.6,24.0,12.1,.1,4*0., 3015.59
104     c * 5*0.,11.9,37.0,34.2,23.3,19.7,21.2,16.5, 3015.6
105     c * 9.5,10.0,25.3,.1,8*0., 3015.61
106     c * 9*0.,.2,13.7,14.7, 3015.62
107     c * 9.2,9.5,31.5,.7,8*0., 3015.63
108     c * 7*0.,.2,.6,.1,19.6,12.3, 3015.64
109     c * 22.8,39.0,53.0,4.9,7.8,29.4,16.8,5*0., 3015.65
110     c * 5*0.,4.3,36.4,37.6,17.3,17.1,46.7,29.4, 3015.66
111     c * 13.4,18.7,20.7,15.8,25.4,27.9,25.9,3.1,2.1,2.5,1.7,.4, 3015.67
112     c * .8,3.1,3.2,3.6,3.6,11.8,29.5,29.7,25.0,18.3,15.7,16.2, 3015.68
113     c * 9.9,15.3,20.2,20.3,20.8,19.8,12.7,8.3,12.4,22.8,23.8,19.1, 3015.69
114     c * 22.2,26.9,26.5,20.7,15.3,17.2,18.9,19.7,21.4,19.7,12.5,10.2, 3015.7
115     c * 3.5,5.4,9.7,10.8,9.9,7.2,3.5,2.1,1.1,1.1,3.2,6.8, 3015.71
116     c * 8.3,7.2,5.2,5.7,7.4,8.6,8.2,9.9,11.5,9.2,4.6,4.4,24*0. 3015.72
117     c & /
118     c & ,242*0.
119     c * ,48*0./
120     c DATA CMDATA/ 3015.73
121     c * 12*0., 3015.74
122     c * 12*0., 3015.75
123     c * 3.0,2.6,2.5,4.2,13.7,11.2,6.7,4.3,6.5,8.8,6.4,5.1, 3015.76
124     c * 4.5,4.8,7.2,6.3,6.4,6.0,12.1,12.7,13.5,5.6,3.0,3.3, 3015.77
125     c * 2.8,1.9,2.5,2.4,5.5,3.9,7.0,4.1,5.3,8.0,6.1,5.0, 3015.78
126     c * 4.5,4.8,7.1,5.5,4.9,4.7,3.6,5.0,15.3,3.9,1.4,2.1, 3015.79
127     c * 4.5,3.2,5.1,14.0,20.8,12.6,9.8,3.6,4.0,7.1,5.9,4.7, 3015.8
128     c * 4.3,4.8,7.0,4.4,3.6,6.7,13.0,14.6,27.1,10.2,2.0,3.4, 3015.81
129     c * 4.7,4.3,8.7,20.1,23.2,24.4,16.4,3.6,4.0,7.1,5.9,4.7, 3015.82
130     c * 4.3,4.8,7.0,4.4,3.6,9.3,29.5,19.7,39.4,17.6,3.4,4.8, 3015.83
131     c * 0.,0.,0.,6.9,18.5,23.8,15.7,3.9,4.0,7.2,5.9,4.7, 3015.84
132     c * 4.3,4.8,7.0,4.4,3.5,11.2,24.7,19.0,18.5,0.,0.,0., 3015.85
133     c * 7*0.,.1,1.1,6.3,5.5,4.3, 3015.86
134     c * 4.0,4.9,7.1,2.2,.5,7*0.,48*0. 3015.87
135     c & /
136     c & ,242*0.,48*0./
137     c * ,48*0./
138     common/COMCLD/READGHG,PCLOUD
139     integer PCLOUD
140     DIMENSION DSG0(36) 3016.
141     LOGICAL POLE,SKIPDI,SKIPIF,HPRNT,CONDL 3017.
142     & ,INIRINST,BARINST,PRNT
143     common/conprn/HPRNT,JPR,LPR
144     DATA QUP,DSIGUP,CLH/3*0./ 3018.
145     DATA RVAP/461.5/ 3019.
146     DATA TF/273.16/,TI/233.16/,IFIRST/1/ 3020.
147     dimension RHKP(LM0,jm0),RHNEW(JM0)
148     QSAT(TM,PR)=.622*EXP(AXCONS+ELHX*BXCONS*(BYTF-1./TM))/PR 3021.
149     QSA1(TM,PR)=.622*EXP(AXQSAT-BXQSAT/TM)/PR 3021.5
150     ERFCPI(XX)=.5-XX*(.548-XX*XX*(.139-.0171*XX*XX)) 3022.
151    
152     #if ( defined CPL_CHEM )
153     !
154     ! --- Formula for calculating the Henry's Law Constant
155     !
156     ehenry (AAA,BBB,TM) = AAA*exp(BBB*(1./TM - 0.0033557))
157    
158     !
159     ! --- Formula for calculating ratio of aqueous to gaseous
160     ! R = Ha*R*T*L
161    
162     ! 020196
163    
164     raq2gas(ehenryx, TM, qqq) = max(0.0,
165     & 8.2e-5*ehenryx*TM*qqq)
166     !
167     #endif
168    
169     C**** 3023.
170     C**** FDATA 2 LAND COVERAGE (1) 3024.
171     C**** 3025.
172     C**** ODATA 2 RATIO OF LAND ICE COVERAGE TO LAND COVERAGE (1) 3026.
173     C**** 3027.
174     C**** GDATA 11 AGE OF SNOW (DAYS) 3028.
175     C**** 3029.
176     C**** COMPUTE GLOBAL PARAMETERS 3030.
177     IDACC(1)=IDACC(1)+1 3031.
178     IF (IFIRST.NE.1) GO TO 50 3032.
179     SKIPDI=.TRUE. 3031.1
180     c SKIPDI=.FALSE.
181     SKIPIF=.TRUE. 3031.2
182     c SKIPIF=.FALSE.
183     INIRINST=.false.
184     INIRINST=.true.
185     BARINST=.false.
186     BARINST=.true.
187     JDIFTS=1
188     JDIFTN=JM
189     LMDIFT=3
190     c LMDIFT=LM
191     EDLET=1.
192     EDLEQ=1.
193     TWOPI=6.283185
194     c HPRNT=.FALSE.
195     print *,' convection before condensation'
196     print *,' PCLOUD=',PCLOUD
197     print *,' RHNEW is a function of latitude'
198     if(SKIPDI)then
199     print *,' without vert. diff. for T and Q '
200     else
201     print *,' vert. diff. for T and Q in',LMDIFT,' layers '
202     print *,' from ',LAT(JDIFTS)*360./TWOPI,' to ',
203     * LAT(JDIFTN)*360./TWOPI
204     print *,' EDLET=',EDLET,' EDLEQ=',EDLEQ
205     endif
206     if(SKIPIF)then
207     print *,' without vert. diff. for U and V'
208     else
209     print *,' vert. diff. for U and V in 3 layers '
210     endif
211     if(INIRINST)then
212     print *,' with correction for SYMMETRIC INSTABILITY'
213     else
214     print *,' without correction for SYMMETRIC INSTABILITY'
215     end if
216     if(BARINST)then
217     print *,' with correction for BAROTROPIC INSTABILITY'
218     else
219     print *,' without correction for BAROTROPIC INSTABILITY'
220     end if
221     IFIRST=0 3033.
222     NTRACE=0 3033.1
223     JDAY00=JDAY-1
224     DTCNDS=NCNDS*DT 3034.
225     RH0OLD=.80 3034.1
226     c RH0OLD=.65
227     RH0=0.9
228     RH45=0.8
229     RH0=0.925 ! 2359
230     RH45=0.875 ! 2359
231     print *,' RH0=',RH0,' RH45=',RH45
232     RHAV=0.5*(RH0+RH45)
233     DRH=0.5*(RH0-RH45)
234     do j = 1,jm0
235    
236     rhrad = 3.14159*(-90.+4.*(j-1))/180.
237     RHNEW(j) = RHAV+DRH*cos(4.*rhrad)
238    
239     do l=1,3 ! Low clouds
240     RHKP(l,j)=0.8*RHNEW(j) ! 2352
241     RHKP(l,j)=0.825*RHNEW(j) ! 2353
242     RHKP(l,j)=0.85*RHNEW(j) ! 2354
243     RHKP(l,j)=0.875*RHNEW(j) ! 2357
244     RHKP(l,j)=0.9*RHNEW(j) ! 2358
245     RHKP(l,j)=0.925*RHNEW(j) ! 2367
246     #if ( !defined CLM )
247     RHKP(l,j)=0.95*RHNEW(j) ! 2905.06
248     RHKP(l,j)=0.9375*RHNEW(j) ! 2906.06
249     #endif
250     enddo
251     do l=4,6 ! Middle clouds
252     ! do l=4,5 ! Middle clouds 2355
253     RHKP(l,j)=0.9*RHNEW(j) ! 2352
254     RHKP(l,j)=0.875*RHNEW(j) ! 2358
255     RHKP(l,j)=0.925*RHNEW(j) ! 2366
256     RHKP(l,j)=0.95*RHNEW(j) ! 2367
257     enddo
258     do l=7,9 ! High clouds
259     ! do l=6,9 ! High clouds 2355
260     RHKP(l,j)=0.9*RHNEW(j) ! 2352
261     RHKP(l,j)=0.925*RHNEW(j) ! 2353
262     RHKP(l,j)=0.95*RHNEW(j) ! 2354
263     RHKP(l,j)=0.975*RHNEW(j) ! 2357
264     RHKP(l,j)=0.985*RHNEW(j) ! 2358
265     #if ( !defined CLM )
266     RHKP(l,j)=0.99*RHNEW(j) ! 2905.06
267     RHKP(l,j)=0.995*RHNEW(j) ! 2906.06
268     #endif
269     enddo
270     do l=10,LM
271     RHKP(l,j)=1.1
272     enddo
273     enddo
274     print *, ' RHNEW=',RHNEW
275     print *, ' RHNEW for j=23,34,46'
276     print '3x,3f10.4',RHNEW(23),RHNEW(34),RHNEW(46)
277     print *, ' RHKP/RHNEW '
278     do l=lm,1,-1
279     print 'i3,2f10.4',l,SIG(L)*P(1,23)+PTOP,RHKP(l,23)/RHNEW(23)
280     enddo
281     CSCALE=.6 3034.3
282     IQ1=IM/4+1 3035.
283     IQ2=IM/2+1 3036.
284     SHA=RGAS/KAPA 3037.
285     BXCONS=.622/RGAS 3038.
286     AXCONS=DLOG(6.1071) 3039.
287     CLHE=LHE/SHA 3040.
288     BYTF=1./TF 3041.
289     DTPERD=DTCNDS/SDAY 3042.
290     AGESNX=1.-DTPERD/50. 3043.
291     C**** PARAMETERS USED FOR CONVECTION 3044.
292     print *,' RHMAX=',RHMAX
293     RVX=0. 3045.
294     BX=RHMAX/DTCNDS 3046.
295     IMBY2=1 3047.
296     NMAX=MIN(IMBY2,17) 3048.
297     NMIN=MIN(IQ1,7) 3049.
298     BYDELN=1./(NMAX+1-NMIN) 3050.
299     SL1=0. 3051.
300     SL4=0. 3052.
301     DO 10 N=NMIN,NMAX 3053.
302     ! ALOGN=DLOG(FLOAT(N)) 3054.
303     ALOGN=LOG(dble(N))
304     SL1=SL1+ALOGN 3055.
305     10 SL4=SL4+ALOGN*ALOGN 3056.
306     SL4=SL4-SL1*SL1*BYDELN 3057.
307     SL1=SL1*BYDELN 3058.
308     LMCMM1=LMCM-1 3059.
309     DSG0(1)=DSIG(1) 3060.
310     DO 40 L=1,LMM1 3061.
311     WT=1./(L+1) 3062.
312     40 DSG0(L+1)=(1.-WT)*DSG0(L)+WT*DSIG(L+1) 3063.
313     50 IF(DOPK.NE.1.) GO TO 58 3064.
314     C**** CALCULATE PK = P**KAPA 3065.
315     DO 55 J=1,JM 3066.
316     DO 55 I=1,IM 3067.
317     SP=P(I,J) 3068.
318     DO 55 L=1,LM 3069.
319     PK(I,J,L)=EXPBYK(SIG(L)*SP+PTOP) 3070.
320     55 TX(I,J,L)=T(I,J,L)*PK(I,J,L) 3070.1
321     DOPK=0. 3071.
322     58 CONTINUE 3072.
323     if(HPRNT)then
324     print *,' condse 1'
325     print *,' T(J,L)=',T(1,JPR,LPR),' Q(J,L)=',Q(1,JPR,LPR)
326     print *,' V(J,L)=',V(1,JPR,LPR),' V(J+1,L)=',V(1,JPR+1,LPR)
327     print *,' U(J,L)=',U(1,JPR,LPR),' U(J+1,L)=',U(1,JPR+1,LPR)
328     endif
329     C 3072.1
330     C DO INTERNAL FRICTION FIRST 3072.11
331     C 3072.12
332     IF (SKIPIF) GO TO 66 3072.13
333     FMU=2. 3072.14
334     FCOEF=GRAV*GRAV*FMU*DTCNDS/RGAS 3072.15
335     c DO 65 J=JDIF,JM-JDIF+2 3072.16
336     do 65 J=2,JM
337     I=IM 3072.17
338     DO 65 IPINC=1,IM 3072.18
339     SP=.25*(P(I,J)+P(IPINC,J)+P(I,J-1)+P(IPINC,J-1)) 3072.19
340     FCOEF1=FCOEF/(SP*SP) 3072.2
341     UDN=U(I,J,1) 3072.21
342     VDN=V(I,J,1) 3072.22
343     TDN=.25*(TX(I,J,1)+TX(IPINC,J,1)+TX(I,J-1,1)+TX(IPINC,J-1,1)) 3072.23
344     c DO 60 L=2,LM 3072.24
345     DO 60 L=2,3
346     LM1=L-1 3072.25
347     UTP=U(I,J,L) 3072.26
348     VUP=V(I,J,L) 3072.27
349     TUP=.25*(TX(I,J,L)+TX(IPINC,J,L)+TX(I,J-1,L)+TX(IPINC,J-1,L)) 3072.28
350     PEUV=SIGE(L)*SP+PTOP 3072.29
351     RHO=PEUV/(RGAS*.5*(TUP+TDN)) 3072.3
352     TEMP=FCOEF1*(UTP-UDN)*RHO*RHO*RGAS/DSIGO(LM1) 3072.31
353     U(I,J,L)=U(I,J,L)-TEMP/DSIG(L) 3072.32
354     U(I,J,LM1)=U(I,J,LM1)+TEMP/DSIG(LM1) 3072.33
355     TEMP=FCOEF1*(VUP-VDN)*RHO*RHO*RGAS/DSIGO(LM1) 3072.34
356     V(I,J,L)=V(I,J,L)-TEMP/DSIG(L) 3072.35
357     V(I,J,LM1)=V(I,J,LM1)+TEMP/DSIG(LM1) 3072.36
358     UDN=UTP 3072.37
359     VDN=VUP 3072.38
360     60 TDN=TUP 3072.39
361     65 I=IPINC 3072.4
362     66 CONTINUE 3072.41
363     if(HPRNT)then
364     print *,' condse 2'
365     print *,' J=',JPR,' L=',LPR
366     print *,' T(J,L)=',T(1,JPR,LPR),' Q(J,L)=',Q(1,JPR,LPR)
367     print *,' V(J,L)=',V(1,JPR,LPR),' V(J+1,L)=',V(1,JPR+1,LPR)
368     print *,' U(J,L)=',U(1,JPR,LPR),' U(J+1,L)=',U(1,JPR+1,LPR)
369     endif
370     C 3072.5
371     C PARA. SYMMETRIC INSTABILITY AND BAROTROPIC INSTABILITY 3072.51
372     C 3072.52
373     c JHALF=JM/2 3072.53
374     c JHAM1=JHALF-1 3072.54
375     c JHAP3=JHALF+3 3072.55
376     c JHAP2=JHALF+2 3072.56
377     JVHALF=JM/2+1
378     JBAND=4
379     if(JM.eq.46)JBAND=8
380     JIB=JVHALF-JBAND
381     JIE=JVHALF+JBAND-1
382     JBB=JIB
383     JBE=JIE+1
384     DO 168 NITER=1,3 3072.57
385     if(HPRNT)then
386     print *,' condse 2.1 NITER=',NITER
387     print *,' U(J,L)=',U(1,JPR,LPR),' U(J+1,L)=',U(1,JPR+1,LPR)
388     endif
389     if(INIRINST) then
390     c DO 69 J=JHAM1,JHAP2 3072.58
391     DO 69 J=JIB,JIE
392     FTEM=F(J)/DXYP(J) 3072.59
393     DO 69 L=1,LM 3072.6
394     DUDY=(U(1,J+1,L)*COSV(J+1)-U(1,J,L)*COSV(J))/DYP(J)/COSP(J) 3072.61
395     CRI=FTEM*(FTEM-DUDY) 3072.62
396     IF(CRI.GE.0.) GO TO 69 3072.63
397     if(HPRNT.and.(J.eq.JPR.or.J.eq.JPR-1))then
398     print *,' TAU=',TAU,' J=',J,' L=',L,' NITER=',NITER,' f=',FTEM
399     print *,' COSV(J)=',COSV(J),' COSV(J+1)=',COSV(J+1)
400     print *,' DYP(J)=',DYP(J),' COSP(J)=',COSP(J)
401     print *,' f-dudy=',FTEM-DUDY,' (f-dudy)/f',(FTEM-DUDY)/FTEM
402     print *,' U(J,L)=',U(1,J,L),' U(J+1,L)=',U(1,J+1,L)
403     endif
404     USUM=U(1,J+1,L)*COSV(J+1)+U(1,J,L)*COSV(J) 3072.64
405     U(1,J+1,L)=.5*(FTEM*COSP(J)*DYP(J)+USUM)/COSV(J+1) 3072.65
406     U(1,J,L)=(USUM-U(1,J+1,L)*COSV(J+1))/COSV(J) 3072.66
407     if(HPRNT.and.(J.eq.JPR.or.J.eq.JPR-1))then
408     print *,' USUM=',USUM
409     print *,' U(J,L)=',U(1,J,L),' U(J+1,L)=',U(1,J+1,L)
410     print *,' USUMN=',U(1,J+1,L)*COSV(J+1)+U(1,J,L)*COSV(J)
411     endif
412     69 CONTINUE 3072.67
413     end if ! INIRINST
414     if(BARINST) then
415     C BAROTROPIC INSTABILITY 3072.68
416     c DO 68 J=JHAM1,JHAP3 3072.69
417     DO 68 J=JBB,JBE
418     BETA=(F(J)/DXYP(J)-F(J-1)/DXYP(J-1))/DYV(J) 3072.7
419     DO 68 L=1,LM 3072.73
420     PSI=BETA-(U(1,J+1,L)*COSV(J+1)-U(1,J,L)*COSV(J))/ 3072.74
421     * (DYP(J)*DYP(J)*COSP(J))+(U(1,J,L)*COSV(J)- 3072.75
422     * U(1,J-1,L)*COSV(J-1))/(DYP(J-1)*DYP(J-1)*COSP(J-1)) 3072.76
423     IF(PSI.GE.0.) GO TO 68 3072.77
424     if(HPRNT.and.(J.eq.JPR.or.J.eq.JPR-1.or.J.eq.JPR+1))then
425     print *,' TAU=',TAU,' J=',J,' L=',L,'NITER=',NITER
426     print *,' BETA=',BETA,' PSI=',PSI,' PSI/BETA=',PSI/BETA
427     print *,' BETAP1=',BETAP1,' BETAM1=',BETAM1
428     print *,' U(J-1,L)=',U(1,J-1,L)
429     print *,' U(J,L)=',U(1,J,L),' U(J+1,L)=',U(1,J+1,L)
430     endif
431     USUM=U(1,J,L)*COSV(J)+U(1,J+1,L)*COSV(J+1)+U(1,J-1,L)*COSV(J-1) 3072.86
432     IF ( J.NE.JM/2+1)THEN
433     BJJ=1./COSP(J)/DYV(J)
434     BJM1=1./COSP(J-1)/DYV(J)
435     DJP1=COSV(J)*(BJJ+2.*BJM1)/(COSV(J+1)*(BJJ-BJM1))
436     CJP1=(BETA*DYV(J)-USUM*BJM1)/(COSV(J+1)*(BJJ-BJM1))
437     DJM1=COSV(J)*(BJM1+2.*BJJ)/(COSV(J-1)*(BJM1-BJJ))
438     CJM1=(BETA*DYV(J)-USUM*BJJ)/(COSV(J-1)*(BJM1-BJJ))
439     U(1,J,L)=(COSV(J+1)*DJP1*(U(1,J+1,L)-CJP1)+COSV(J)*U(1,J,L)+
440     * COSV(J-1)*DJM1*(U(1,J-1,L)-CJM1))/
441     * (COSV(J+1)*DJP1**2+COSV(J)+COSV(J-1)*DJM1**2)
442     U(1,J+1,L)=DJP1*U(1,J,L)+CJP1
443     U(1,J-1,L)=DJM1*U(1,J,L)+CJM1
444     ELSE
445     U(1,J,L)=(USUM-BETA*COSP(J)*DYV(J)**2)/(3.*COSV(J))
446     U(1,J+1,L)=1./COSV(J-1)*(USUM-COSV(J)*U(1,J,L)-
447     * COSV(J-1)*(U(1,J-1,L)-U(1,J+1,L)))/
448     * (1.+COSV(J+1)/COSV(J-1))
449     U(1,J-1,L)=(USUM-COSV(J)*U(1,J,L)-COSV(J+1)*U(1,J+1,L))/
450     * COSV(J-1)
451     ENDIF
452     if(HPRNT.and.(J.eq.JPR.or.J.eq.JPR-1.or.J.eq.JPR+1))then
453     print *,' TAU=',TAU,' J=',J,' L=',L,'NITER=',NITER
454     print *,' USUM=',USUM
455     print *,' COSV(J-1)=',COSV(J-1),' FUNM=',FUNM
456     print *,' COSP(J)=',COSP(J),' COSP(J-1)=',COSP(J-1)
457     print *,' DYV(J)=',DYV(J)
458     print *,' U(J-1,L)=',U(1,J-1,L)
459     print *,' U(J,L)=',U(1,J,L),' U(J+1,L)=',U(1,J+1,L)
460     print *,' USUMN=',U(1,J,L)*COSV(J)+U(1,J+1,L)*COSV(J+1)+
461     * U(1,J-1,L)*COSV(J-1)
462     endif
463     68 CONTINUE 3072.96
464     if(HPRNT)then
465     print *,' condse 2.2 NITER=',NITER
466     print *,' U(J,L)=',U(1,JPR,LPR),' U(J+1,L)=',U(1,JPR+1,LPR)
467     endif
468     end if ! BARINST
469     168 continue
470     if(HPRNT)then
471     print *,' condse 3'
472     print *,' T(J,L)=',T(1,JPR,LPR),' Q(J,L)=',Q(1,JPR,LPR)
473     print *,' V(J,L)=',V(1,JPR,LPR),' V(J+1,L)=',V(1,JPR+1,LPR)
474     print *,' U(J,L)=',U(1,JPR,LPR),' U(J+1,L)=',U(1,JPR+1,LPR)
475     endif
476     C**** SAVE UC AND VC, AND ZERO OUT CLDSS AND CLDMC 3073.
477     70 DO 75 L=1,LM 3074.
478     DO 75 J=1,JM 3075.
479     DO 75 I=1,IM 3076.
480     UC(I,J,L)=U(I,J,L) 3077.
481     VC(I,J,L)=V(I,J,L) 3078.
482     CLDSS(I,J,L)=0. 3079.
483     75 CLDMC(I,J,L)=0. 3080.
484     IHOUR=1.5+TOFDAY 3081.
485     C**** 3082.
486     C**** MAIN J LOOP 3083.
487     C**** 3084.
488     DO 810 J=1,JM 3085.
489     JHALF=JM/2 3085.5
490     COEKD=CKS 3085.6
491     IF(J.GT.JHALF) COEKD=CKN 3085.7
492     IF ((J-1)*(JM-J).NE.0) GO TO 90 3086.
493     C**** CONDITIONS AT THE POLES 3087.
494     POLE=.TRUE. 3088.
495     IMAX=1 3089.
496     IF(J.EQ.JM) GO TO 80 3090.
497     JP=2 3091.
498     JVPO=2 3092.
499     RAPO=2.*RAPVN(1) 3093.
500     RA(1)=RAPO
501     GO TO 160 3094.
502     80 JP=JMM1 3095.
503     JVPO=JM 3096.
504     RAPO=2.*RAPVS(JM) 3097.
505     RA(1)=RAPO
506     GO TO 160 3098.
507     C**** CONDITIONS AT NON-POLAR POINTS 3099.
508     90 POLE=.FALSE. 3100.
509     JP=J 3101.
510     IMAX=IM 3102.
511     DO 100 K=1,2 3103.
512     RA(K)=RAPVS(J) 3104.
513     100 RA(K+2)=RAPVN(J) 3105.
514     C**** STANDARD DEVIATION FOR TEMPERATURE 3106.
515     160 DO 150 L=1,LM 3107.
516     TVAR=0. 3108.
517     SUMT=0. 3109.
518     PKJ=0. 3110.
519     DO 110 I=1,IM 3111.
520     PKJ=PKJ+PK(I,JP,L) 3112.
521     110 SUMT=SUMT+T(I,JP,L) 3113.
522     IF(KM.EQ.1) GO TO 149 3113.5
523     DO 120 I=1,IM 3114.
524     TDEV=T(I,JP,L)-SUMT/FIM 3115.
525     X(I)=TDEV 3116.
526     120 TVAR=TVAR+TDEV*TDEV 3117.
527     TVAR=TVAR/FIM 3118.
528     c CALL FRTR(X) 3119.
529     SL2=0. 3120.
530     SL3=0. 3121.
531     DO 130 N=NMIN,NMAX 3122.
532     c ALOGA=DLOG(X(N)+1.E-20) 3123.
533     ALOGA=LOG(X(N)+1.E-20)
534     SL2=SL2+ALOGA 3124.
535     FN=N
536     130 SL3=SL3+ALOGA*LOG(FN)
537     c 130 SL3=SL3+ALOGA*DLOG(FLOAT(N)) 3125.
538     SLOPE=(SL1*SL2-SL3)/SL4 3126.
539     IF (SLOPE.LT.1.67) SLOPE=1.67 3127.
540     IF (SLOPE.GT.3.) SLOPE=3. 3128.
541     SUMXN=0. 3129.
542     DO 140 N=1,IMBY2 3130.
543     140 SUMXN=SUMXN+X(N) 3131.
544     SUMAMK=0. 3132.
545     DO 145 N=NMIN,NMAX 3133.
546     145 SUMAMK=SUMAMK+X(N)*(N**SLOPE) 3134.
547     SLOPM1=SLOPE-1. 3135.
548     XEPE=2.*SUMAMK*BYDELN/((SUMXN+1.E-20)*SLOPM1*(IQ2**SLOPM1)) 3136.
549     149 SIGMA1(L)=1.4142*SQRT(TPRIM2(JP,L))*PKJ/FIM 3137.
550     SIGMA2(L)=SIGMA1(L) 3137.1
551     ! SIGMA2(L)=2.*PKJ/FIM
552     150 CONTINUE 3138.
553     C**** 3139.
554     C**** MAIN I LOOP 3140.
555     C**** 3141.
556     IM1=IM 3142.
557     DO 700 I=1,IMAX 3143.
558     JR=J
559     C**** 3145.
560     C**** SET UP VERTICAL ARRAYS, OMITTING THE J AND I SUBSCRIPTS 3146.
561     C**** 3147.
562     PLAND=FDATA(I,J,2) 3148.
563     PWATER=1.-PLAND
564     POICE=ODATA(I,J,2)*(1.-PLAND) 3149.
565     POCEAN=(1.-PLAND)-POICE 3150.
566     if(POCEAN.LE.1.E-5)then
567     POCEAN=0.
568     POICE=PWATER
569     endif
570     ! 07/22/2005
571     if (pland.lt.1.0)then
572     PRLAND=prlnd2total(j,mndriver)
573     PROCEAN=(1.-pland*prlnd2total(j,mndriver))
574     & /(1.-pland)
575     else
576     PRLAND=1.0
577     PROCEAN=0.0
578     endif
579     !
580     C**** PRESSURES, AND PRESSURE TO THE KAPA 3151.
581     SP=P(I,J) 3152.
582     DO 170 L=1,LM 3153.
583     PL(L)=SIG(L)*SP+PTOP 3154.
584     PLK(L)=PK(I,J,L) 3155.
585     C**** TEMPERATURES 3156.
586     TH(L)=T(I,J,L) 3157.
587     TL(L)=TH(L)*PLK(L) 3158.
588     QL(L)=Q(I,J,L) 3158.1
589     TSAV(L)=TL(L)
590     QSAV(L)=QL(L)
591    
592     #if ( defined CPL_CHEM )
593     !
594     xcfc11(l)=cfc11(i,j,l)
595     xcfc12(l)=cfc12(i,j,l)
596     xxn2o (l)=xn2o (i,j,l)
597     xo3 (l)=o3 (i,j,l)
598     xco (l)=co (i,j,l)
599     xzco2 (l)=zco2 (i,j,l)
600     xxno (l)=xno (i,j,l)
601     xxno2 (l)=xno2 (i,j,l)
602     xxn2o5(l)=xn2o5(i,j,l)
603     xhno3 (l)=hno3 (i,j,l)
604     xch4 (l)=ch4 (i,j,l)
605     xch2o (l)=ch2o (i,j,l)
606     xso2 (l)=so2 (i,j,l)
607     xh2so4(l)=h2so4(i,j,l)
608     c 062295
609     xh2o2 (l)=h2o2 (i,j,l)
610    
611     ! === if hfc, pfc, and sf6 are included:
612     #ifdef INC_3GASES
613     ! === 032698
614     xhfc134a(l) = hfc134a(i,j,l)
615     xpfc (l) = pfc(i,j,l)
616     xsf6 (l) = sf6(i,j,l)
617     ! ===
618     #endif
619    
620     xbc (l) = bcarbon(i,j,l)
621     xoc (l) = ocarbon(i,j,l)
622     !
623     #endif
624    
625     170 CONTINUE
626     if(HPRNT)then
627     print *,' condse after 170 J=',J
628     print *,' SP=',SP
629     print *,(TH(L),L=1,LM)
630     print *,(QL(L),L=1,LM)
631     endif
632     C 3158.11
633     C DO VERTICAL HEAT AND MOISTURE DIFFUSION FIRST 3158.12
634     C 3158.13
635     IF (SKIPDI) GO TO 195 3158.14
636     IF(J.LT.JDIFTS.OR.J.GT.JDIFTN) GO TO 195
637     DO 190 LM1=2,LMDIFT 3158.15
638     L=LM1-1 3158.16
639     DTETA=(TH(LM1)-TH(L))*(PLK(LM1)+PLK(L))*.5 3158.17
640     DZUP=SP*DSIG(LM1)*RGAS*TL(LM1)/(PL(LM1)*GRAV) 3158.18
641     DZDN=SP*DSIG(L)*RGAS*TL(L)/(PL(L)*GRAV) 3158.19
642     c EDLE=2. 3158.2
643     TEMP=DTCNDS*(DSIG(LM1)+DSIG(L))/(DZUP+DZDN)**2. 3158.21
644     FLE=-2.*EDLET*DTETA*TEMP 3158.22
645     TL(LM1)=TL(LM1)+FLE/DSIG(LM1) 3158.23
646     TL(L)=TL(L)-FLE/DSIG(L) 3158.24
647     TH(LM1)=TL(LM1)/PLK(LM1) 3158.25
648     TH(L)=TL(L)/PLK(L) 3158.26
649     DSH=QL(LM1)-QL(L) 3158.27
650     ELE=-2.*EDLEQ*DSH*TEMP 3158.28
651     QL(LM1)=QL(LM1)+ELE/DSIG(LM1) 3158.29
652     QL(L)=QL(L)-ELE/DSIG(L) 3158.3
653    
654     #if ( defined CPL_CHEM )
655     !
656     xxx = -2.0*temp
657     xxm1= xxx/dsig(LM1)
658     xxL = xxx/dsig(L)
659    
660     ele = (xcfc11(lm1)-xcfc11(l))
661     xcfc11(lm1)=xcfc11(lm1)+ele*xxm1
662     xcfc11(l) =xcfc11(l) -ele*xxL
663    
664     ele = (xcfc12(lm1)-xcfc12(l))
665     xcfc12(lm1)=xcfc12(lm1)+ele*xxm1
666     xcfc12(l) =xcfc12(l) -ele*xxL
667    
668     ele = (xxn2o (lm1)-xxn2o (l))
669     xxn2o (lm1)=xxn2o (lm1)+ele*xxm1
670     xxn2o (l) =xxn2o (l) -ele*xxL
671    
672     ele = (xo3 (lm1)-xo3 (l))
673     xo3 (lm1)=xo3 (lm1)+ele*xxm1
674     xo3 (l) =xo3 (l) -ele*xxL
675    
676     ele = (xco (lm1)-xco (l))
677     xco (lm1)=xco (lm1)+ele*xxm1
678     xco (l) =xco (l) -ele*xxL
679    
680     ele = (xzco2 (lm1)-xzco2 (l))
681     xzco2 (lm1)=xzco2 (lm1)+ele*xxm1
682     xzco2 (l) =xzco2 (l) -ele*xxL
683    
684     ele = (xxno (lm1)-xxno (l))
685     xxno (lm1)=xxno (lm1)+ele*xxm1
686     xxno (l) =xxno (l) -ele*xxL
687    
688     ele = (xxno2 (lm1)-xxno2 (l))
689     xxno2 (lm1)=xxno2 (lm1)+ele*xxm1
690     xxno2 (l) =xxno2 (l) -ele*xxL
691    
692     ele = (xxn2o5(lm1)-xxn2o5(l))
693     xxn2o5(lm1)=xxn2o5(lm1)+ele*xxm1
694     xxn2o5(l) =xxn2o5(l) -ele*xxL
695    
696     ele = (xhno3 (lm1)-xhno3 (l))
697     xhno3 (lm1)=xhno3 (lm1)+ele*xxm1
698     xhno3 (l) =xhno3 (l) -ele*xxL
699    
700     ele = (xch4 (lm1)-xch4 (l))
701     xch4 (lm1)=xch4 (lm1)+ele*xxm1
702     xch4 (l) =xch4 (l) -ele*xxL
703    
704     ele = (xch2o (lm1)-xch2o (l))
705     xch2o (lm1)=xch2o (lm1)+ele*xxm1
706     xch2o (l) =xch2o (l) -ele*xxL
707    
708     ele = (xso2 (lm1)-xso2 (l))
709     xso2 (lm1)=xso2 (lm1)+ele*xxm1
710     xso2 (l) =xso2 (l) -ele*xxL
711    
712     ele = (xh2so4(lm1)-xh2so4(l))
713     xh2so4(lm1)=xh2so4(lm1)+ele*xxm1
714     xh2so4(l) =xh2so4(l) -ele*xxL
715    
716     ! === if hfc, pfc, and sf6 are included:
717     #ifdef INC_3GASES
718     ! === 032698
719     ele = (xhfc134a(lm1)-xhfc134a(l))
720     xhfc134a(lm1)=xhfc134a(lm1)+ele*xxm1
721     xhfc134a(l) =xhfc134a(l) -ele*xxL
722    
723     ele = (xpfc(lm1)-xpfc(l))
724     xpfc(lm1)=xpfc(lm1)+ele*xxm1
725     xpfc(l) =xpfc(l) -ele*xxL
726    
727     ele = (xsf6(lm1)-xsf6(l))
728     xsf6(lm1)=xsf6(lm1)+ele*xxm1
729     xsf6(l) =xsf6(l) -ele*xxL
730     ! ===
731     #endif
732    
733     ele = (xbc(lm1)-xbc(l))
734     xbc(lm1)=xbc(lm1)+ele*xxm1
735     xbc(l) =xbc(l) -ele*xxL
736    
737     ele = (xoc(lm1)-xoc(l))
738     xoc(lm1)=xoc(lm1)+ele*xxm1
739     xoc(l) =xoc(l) -ele*xxL
740    
741     c 062295
742     c ele = (xh2o2(lm1)-xh2o2(l))
743     c xh2o2(lm1)=xh2o2(lm1)+ele*xxm1
744     c xh2o2(l) =xh2o2(l) -ele*xxL
745    
746     !
747     #endif
748    
749     190 CONTINUE
750     c DO 181 L=1,LM
751     c AJL(J,L,55)=AJL(J,L,55)+(TL(L)-TSAV(L))*SP
752     c AJL(J,L,56)=AJL(J,L,56)+(QL(L)-QSAV(L))*SP
753     c 181 CONTINUE
754     195 CONTINUE 3158.31
755     c CONDL=.true.
756     c 824 if(CONDL) go to 871
757     DO 180 L=1,LM 3158.32
758     TSAV(L) =TL(L) 3158.5
759     QSAV(L)=QL(L)
760     AJ13(L)=0. 3159.
761     AJ50(L)=0. 3160.
762     C**** MOISTURE (SPECIFIC HUMIDITY) 3161.
763     QL(L)=QL(L) 3162.
764     XCD(L)=0. 3163.
765     DFMX(L)=0. 3164.
766     TO(L)=TL(L) 3165.
767     QO(L)=QL(L) 3166.
768     CXCD(L)=0. 3167.
769     180 CONTINUE 3168.
770     C**** INDICES FOR WINDS 3169.
771     ID(1)=I+(J-1)*IM 3172.
772     ID(2)=ID(1)+IM*JM*LM 3173.
773     ID(3)=I+J*IM 3176.
774     ID(4)=ID(3)+IM*JM*LM 3177.
775     C**** DETERMINE LATENT HEAT OF EVAPORATION OR SUBLIMATION 3178.
776     TPREC(I,J)=TL(1)-TF 3179.
777     ELHX=LHE 3179.5
778     IF (TPREC(I,J ).LT.0.) ELHX=LHS 3179.51
779     CLH=ELHX/SHA 3179.52
780     BXQSAT=ELHX*BXCONS 3179.53
781     AXQSAT=AXCONS+BXQSAT/TF 3179.54
782     GAMFAC=CLH*BXQSAT 3179.55
783     C**** 3180.
784     C**** CONVECTION AND CLOUDS 3181.
785     C**** 3182.
786     HCNDNS=0. 3183.
787     CMC=0. 3184.
788     DEPTH=0. 3185.
789     C**** INITIALIZE CONVECTION PARAMETERS 3186.
790     QSURF=BLDATA(I,J,3) 3187.
791     DO 225 L=1,LSSM 3188.
792     AJ8(L)=0. 3189.
793     SHSAT(L)=QSA1(TL(L),PL(L)) 3189.5
794     FMXA(L)=0. 3190.
795     IF(POLE) GO TO 222 3191.
796     DO 220 K=1,4 3192.
797     220 UL(K,L)=UC(ID(K),1,L) 3193.
798     GO TO 225 3194.
799     222 DO 223 IPO=1,IM 3195.
800     UPL(IPO,L)=UC(IPO,JVPO,L) 3196.
801     223 VPL(IPO,L)=VC(IPO,JVPO,L) 3197.
802     225 CONTINUE 3198.
803     232 PRCPMC=0. 3199.
804     DO 235 L=1,LMCMM1 3201.
805     LCOND=L 3202.
806     IF (SHSAT(LCOND).LT.QSURF) GO TO 238 3203.
807     235 CONTINUE 3204.
808     238 CONTINUE
809     prnt=j.eq.35
810     prnt=.false.
811     DO 370 LB=LCOND,LMCMM1 3205.
812     DTCRIT=1.8
813     SUMTT=0. 3207.
814     SUMQT=0. 3208.
815     SUMFMX=0. 3209.
816     EXPTUP=0. 3210.
817     QTCOND=0. 3211.
818     FCL=0. 3212.
819    
820     #if ( defined CPL_CHEM )
821     !
822     sumcfc11=0.0
823     sumcfc12=0.0
824     sumxn2o =0.0
825     sumo3 =0.0
826     sumco =0.0
827     sumzco2 =0.0
828     sumxno =0.0
829     sumxno2 =0.0
830     sumxn2o5=0.0
831     sumhno3 =0.0
832     sumch4 =0.0
833     sumch2o =0.0
834     sumso2 =0.0
835     sumh2so4=0.0
836    
837     #ifdef INC_3GASES
838     ! === 032698
839     sumhfc134a = 0.0
840     sumpfc = 0.0
841     sumsf6 = 0.0
842     #endif
843    
844     sumbc = 0.0
845     sumoc = 0.0
846    
847     ! 062295
848     ! sumh2o2 =0.0
849     !
850     #endif
851    
852     C**** DIFFERENCES IN STATIC ENERGY AND PRELIMINARY CLOUD TEMPERATURES 3213.
853     DSE(LB)=0. 3214.
854     DRYSTE=0. 3215.
855     PDNK=PLK(LB) 3216.
856     SIGT=SIGMA2(LB) 3217.
857     TCLA(LB)=0. 3218.
858     BYSIGT=1./(SIGT+1.E-10) 3219.
859     if(prnt)then
860     print *,' TAU=',TAU
861     print *,' LB=',LB,SIGT,BYSIGT
862     endif
863     DO 240 L=LB,LMCMM1 3220.
864     DPHI=(PHIT(J,L)-PHIT(J,LB))/GRAV 3221.
865     BYTEM=BYSIGT 3222.
866     C IF(DPHI.LT..5*(DWV(J)+DWV(J+1))*COEKD) BYTEM=1.E10 3223.
867     PUPK=PLK(L+1) 3224.
868     THEDGE=THBAR(TH(L+1),TH(L)) 3225.
869     DRYSTE=DRYSTE+(TH(L+1)-THEDGE)*PUPK+(THEDGE-TH(L))*PDNK 3226.
870     DSE(L+1)=(DRYSTE+CLH*(SHSAT(L+1)-SHL(LB)))*BYTEM 3227.
871     IF (DSE(L+1).LT.DSE(L)) DSE(L+1)=DSE(L) 3228.
872     ! if(prnt)then
873     ! print 'i4,3f10.4',l,TH(L+1),THEDGE,TH(L)
874     ! print 'i4,2f10.4',l,DSE(L+1),DRYSTE*BYTEM
875     ! endif
876     TCLA(L+1)=TCLA(L)-TH(L+1)*(PDNK-PUPK) 3229.
877     240 PDNK=PUPK 3230.
878     if(prnt)then
879     do l=LB,LMCM
880     print 'i4,3f10.4',l,SIG(l),TH(l)*PLK(L),DSE(L)
881     enddo
882     endif
883     L=LMCMM1+2 3231.
884     245 L=L-1 3232.
885     C**** COMPARE STATIC ENERGIES TO FIND CRITICAL TEMPERATURE DEVIATION 3233.
886     C**** AND RISING MASS (FMX) 3234.
887     TLOLD=TL(L) 3235.
888     SHLOLD=SHL(L) 3236.
889    
890     #if ( defined CPL_CHEM )
891     !
892     cfc11old=xcfc11(l)
893     cfc11cld=xcfc11(lb)
894    
895     cfc12old=xcfc12(l)
896     cfc12cld=xcfc12(lb)
897    
898     xn2oold =xxn2o (l)
899     xn2ocld =xxn2o (lb)
900    
901     o3old =xo3 (l)
902     o3cld =xo3 (lb)
903    
904     coold =xco (l)
905     cocld =xco (lb)
906    
907     zco2old =xzco2 (l)
908     zco2cld =xzco2 (lb)
909    
910     xnoold =xxno (l)
911     xnocld =xxno (lb)
912    
913     xno2old =xxno2 (l)
914     xno2cld =xxno2 (lb)
915    
916     xn2o5old=xxn2o5(l)
917     xn2o5cld=xxn2o5(lb)
918    
919     hno3old =xhno3 (l)
920     hno3cld =xhno3 (lb)
921    
922     ch4old =xch4 (l)
923     ch4cld =xch4 (lb)
924    
925     ch2oold =xch2o (l)
926     ch2ocld =xch2o (lb)
927    
928     so2old =xso2 (l)
929     so2cld =xso2 (lb)
930    
931     h2so4old=xh2so4(l)
932     h2so4cld=xh2so4(lb)
933    
934     ! === if hfc, pfc, and sf6 are included:
935     #ifdef INC_3GASES
936     ! === 032698
937     hfc134aold=xhfc134a(l)
938     hfc134acld=xhfc134a(lb)
939    
940     pfcold=xpfc(l)
941     pfccld=xpfc(lb)
942    
943     sf6old=xsf6(l)
944     sf6cld=xsf6(lb)
945     ! ===
946     #endif
947    
948     bcold =xbc(l)
949     bccld =xbc(lb)
950    
951     ocold =xoc(l)
952     occld =xoc(lb)
953    
954     c 062295
955     c h2o2old =xh2o2(l)
956     c h2o2cld =xh2o2(lb)
957    
958     !
959     #endif
960    
961     DIFFSE=DSE(L) 3237.
962     FMX=0. 3238.
963     QCOND=0. 3239.
964     DSIGDN=DSIG(L) 3240.
965     RM=DSIG(LB)/DSIGDN 3241.
966     BYRM=1./RM 3242.
967     CUTOFF=0. 3243.
968     IF (RM.GT.1.01) CUTOFF=1.5+BYRM*(1.096*BYRM-2.596) 3244.
969     C**** CUTOFF RESTRICTS MASS EXCHANGE TO 50% OF THE THINNER LAYER 3245.
970     IF (DIFFSE.LT.CUTOFF) DIFFSE=CUTOFF 3246.
971     if(prnt)then
972     print *,'L=',L,DSE(l),DTCRIT
973     endif
974     IF (DTCRIT.LE.DIFFSE+.005) GO TO 269 3247.
975     C FMX =.5-.5*ERF(DIFFSE)-SUMFMX 3248.
976     FMX=ERFCPI(DIFFSE)-SUMFMX 3249.
977     DTCRIT=DIFFSE 3250.
978     if(prnt)then
979     print *,'L=',l,' FMX=',FMX
980     endif
981     C**** DETERMINE CLOUD TEMPERATURE BEFORE CONDENSATION 3251.
982     EXPTDN=EXP(-DTCRIT*DTCRIT) 3252.
983     DSTEN=.2881*SIGT/FMX*(EXPTDN-EXPTUP) 3253.
984     QWT=0. 3254.
985     TWT=1.-QWT 3255.
986     DTCL=(TL(LB)-TLOLD)+ TCLA(L) + DSTEN*TWT 3256.
987     SUMTT=SUMTT+FMX*(TL(LB)+DSTEN*TWT) 3257.
988     EXPTUP=EXPTDN 3258.
989    
990     #if ( defined CPL_CHEM )
991     !
992     ! --- Accumulated total amount of Tracers:
993     !
994     sumcfc11=sumcfc11+fmx*cfc11cld
995     sumcfc12=sumcfc12+fmx*cfc12cld
996     sumxn2o =sumxn2o +fmx*xn2ocld
997     sumo3 =sumo3 +fmx*o3cld
998     sumco =sumco +fmx*cocld
999     sumzco2 =sumzco2 +fmx*zco2cld
1000     sumxno =sumxno +fmx*xnocld
1001     sumxno2 =sumxno2 +fmx*xno2cld
1002     sumxn2o5=sumxn2o5+fmx*xn2o5cld
1003     sumhno3 =sumhno3 +fmx*hno3cld
1004     sumch4 =sumch4 +fmx*ch4cld
1005     sumch2o =sumch2o +fmx*ch2ocld
1006     sumso2 =sumso2 +fmx*so2cld
1007     sumh2so4=sumh2so4+fmx*h2so4cld
1008    
1009     ! === if hfc, pfc, and sf6 are included:
1010     #ifdef INC_3GASES
1011     ! === 032698
1012     sumhfc134a = sumhfc134a + fmx*hfc134acld
1013     sumpfc = sumpfc + fmx*pfccld
1014     sumsf6 = sumsf6 + fmx*sf6cld
1015     ! ===
1016     #endif
1017    
1018     sumbc =sumbc + fmx*bccld
1019     sumoc =sumoc + fmx*occld
1020    
1021     c 062295
1022     c sumh2o2 =sumh2o2+fmx*h2o2cld
1023     c
1024     !
1025     #endif
1026    
1027     C**** FIND CONDENSATION AND CLOUD TEMPERATURE 3259.
1028     QCLOUD=SHL(LB)+QWT*DSTEN/CLH 3260.
1029     SUMQT=SUMQT+FMX*QCLOUD 3261.
1030     TCL=TLOLD+DTCL 3262.
1031     IF (QCLOUD.LE.QSA1(TCL,PL(L))) GO TO 266 3263.
1032    
1033     #if ( defined CPL_CHEM )
1034     !
1035     dqtotal = 0.0
1036     !
1037     #endif
1038    
1039     DO 265 N=1,3 3264.
1040     QSATCL=QSA1(TCL,PL(L)) 3265.
1041     GAMA=GAMFAC*QSATCL/(TCL*TCL) 3266.
1042     DQCOND=(QCLOUD-QSATCL)/(1.+GAMA) 3267.
1043     TCL=TCL+CLH*DQCOND 3268.
1044    
1045     #if ( defined CPL_CHEM )
1046     !
1047     ! --- 062195
1048     !
1049     dqtotal = dqtotal + dqcond
1050     !
1051     #endif
1052    
1053     QCOND =QCOND +DQCOND 3269.
1054     265 QCLOUD=QCLOUD-DQCOND 3270.
1055    
1056     #if ( defined CPL_CHEM )
1057    
1058     ! === convective precipitation
1059     prec_cnv(l) = dqtotal
1060    
1061     !
1062     ! --- 062195:
1063     ! Calculate scavenging of gases by convection
1064     ! -- assume pH is around 5.0
1065     !
1066     ! let n(v) & s(VI) disolved almost completely
1067     ! by using a large Henry's Law constant:
1068     !
1069     ! 020196:
1070    
1071     h2so4cld= h2so4cld
1072     & /(1.0 + raq2gas(1.e10, tl(l), dqtotal) )
1073    
1074     hno3cld = hno3cld
1075     & /(1.0 + raq2gas(1.e10, tl(l), dqtotal) )
1076    
1077    
1078     ehenryx = ehenry (6.3e3,6412.34,tl(l))
1079     ch2ocld = ch2ocld
1080     & /(1.0 + raq2gas(ehenryx, tl(l), dqtotal) )
1081    
1082     ehenryx = ehenry (1.23e3,3120.00,tl(l))
1083     so2cld = so2cld
1084     & /(1.0 + raq2gas(ehenryx, tl(l), dqtotal) )
1085    
1086     !
1087     ! === Note: This calculation is not counted!
1088     ! Calculate H2O2 also:
1089    
1090     ehenryx = ehenry (7.45,6620.00,tl(l))
1091     xh2o2(l)= xh2o2(l)
1092     & /(1.0 + raq2gas(ehenryx, tl(l), dqtotal) )
1093    
1094     !
1095     ! === For radicals apply direct reduction to gaseous phase
1096     ! since convective transport is not involved
1097     ! Calculate HO, 062895:
1098    
1099     ehenryx = ehenry (25.0,5280.00,tl(l))
1100     ho(i,j,l)= ho(i,j,l)
1101     & /(1.0 + raq2gas(ehenryx, tl(l), dqtotal) )
1102    
1103     ! Calculate HO2, 062895:
1104    
1105     ehenryx = ehenry (1.0e4,6640.00,tl(l)) !2nd reaction = 4.0
1106     ho2(i,j,l)= ho2(i,j,l)
1107     & /(1.0 + raq2gas(ehenryx, tl(l), dqtotal) )
1108    
1109     !
1110     #endif
1111    
1112     DTCL=DTCL+CLH*QCOND 3271.
1113     FCL=FCL+FMX 3272.
1114     266 CONTINUE 3273.
1115     269 SNWFMX=SUMFMX+FMX 3274.
1116     AJ8(L-1)=AJ8(L-1)+SNWFMX*DSIG(LB) 3275.
1117     C**** REEVAPORATE WATER CONDENSED IN HIGHER LAYERS 3276.
1118     270 IF (SNWFMX.EQ.0.) GO TO 303 3277.
1119     QCONDR=0. 3278.
1120     IF (SUMFMX.EQ.0.) GO TO 280 3279.
1121     QREEV=QTCOND/SUMFMX 3280.
1122     TFALL=THUP*PLK(L) 3281.
1123     TDN=TLOLD-CLH*QREEV 3282.
1124     SHDN=SHLOLD+QREEV 3283.
1125     IF (SHDN.LE.QSA1(TDN,PL(L)))GO TO 280 3284.
1126     QCX=SHLOLD 3285.
1127     TCX=TLOLD 3286.
1128     QCONDR=QREEV 3287.
1129     QREEV=0. 3288.
1130     DO 275 N=1,3 3289.
1131     QSATCL=QSA1(TCX,PL(L)) 3290.
1132     GAMA=GAMFAC*QSATCL/(TCX*TCX) 3291.
1133     DQREEV=(QSATCL-QCX)/(GAMA+1.) 3292.
1134     TCX=TCX-CLH*DQREEV 3293.
1135     QREEV=QREEV+DQREEV 3294.
1136     QCX=QCX+DQREEV 3295.
1137     275 CONTINUE 3296.
1138     QCONDR=QCONDR-QREEV 3297.
1139     280 QTCOND=QCOND*FMX+QCONDR*SUMFMX 3298.
1140     C**** MIX T,Q,U,TC IN LAYER L 3299.
1141     SHDN=SHLOLD 3300.
1142     DSH=RM*(FMX*(QCLOUD-SHDN)+SUMFMX*(SHUP+QREEV -SHDN)) 3301.
1143     SHL(L)=SHDN+DSH 3302.
1144    
1145     #if ( defined CPL_CHEM )
1146     !
1147     xrm1 = rm*fmx
1148     xrm2 = rm*sumfmx
1149    
1150     xcfc11(l)=
1151     & xrm1*(cfc11cld-cfc11old)
1152     & +xrm2*(cfc11up -cfc11old)
1153     & +cfc11old
1154    
1155     xcfc12(l)=
1156     & xrm1*(cfc12cld-cfc12old)
1157     & +xrm2*(cfc12up -cfc12old)
1158     & +cfc12old
1159    
1160     xxn2o(l)=
1161     & xrm1*(xn2ocld-xn2oold)
1162     & +xrm2*(xn2oup -xn2oold)
1163     & +xn2oold
1164    
1165     xo3(l)=
1166     & xrm1*(o3cld-o3old)
1167     & +xrm2*(o3up -o3old)
1168     & +o3old
1169    
1170     xco(l)=
1171     & xrm1*(cocld-coold)
1172     & +xrm2*(coup -coold)
1173     & +coold
1174    
1175     xzco2(l)=
1176     & xrm1*(zco2cld-zco2old)
1177     & +xrm2*(zco2up -zco2old)
1178     & +zco2old
1179    
1180     xxno(l)=
1181     & xrm1*(xnocld-xnoold)
1182     & +xrm2*(xnoup -xnoold)
1183     & +xnoold
1184    
1185     xxno2(l)=
1186     & xrm1*(xno2cld-xno2old)
1187     & +xrm2*(xno2up -xno2old)
1188     & +xno2old
1189    
1190     xxn2o5(l)=
1191     & xrm1*(xn2o5cld-xn2o5old)
1192     & +xrm2*(xn2o5up -xn2o5old)
1193     & +xn2o5old
1194    
1195     xhno3(l)=
1196     & xrm1*(hno3cld-hno3old)
1197     & +xrm2*(hno3up -hno3old)
1198     & +hno3old
1199    
1200     xch4(l)=
1201     & xrm1*(ch4cld-ch4old)
1202     & +xrm2*(ch4up -ch4old)
1203     & +ch4old
1204    
1205     xch2o(l)=
1206     & xrm1*(ch2ocld-ch2oold)
1207     & +xrm2*(ch2oup -ch2oold)
1208     & +ch2oold
1209    
1210     xso2(l)=
1211     & xrm1*(so2cld-so2old)
1212     & +xrm2*(so2up -so2old)
1213     & +so2old
1214    
1215     xh2so4(l)=
1216     & xrm1*(h2so4cld-h2so4old)
1217     & +xrm2*(h2so4up -h2so4old)
1218     & +h2so4old
1219    
1220     ! === if hfc, pfc, and sf6 are included:
1221     #ifdef INC_3GASES
1222     ! === 032698:
1223     xhfc134a(l)=
1224     & xrm1*(hfc134acld-hfc134aold)
1225     & +xrm2*(hfc134aup -hfc134aold)
1226     & +hfc134aold
1227    
1228     xpfc(l)=
1229     & xrm1*(pfccld-pfcold)
1230     & +xrm2*(pfcup -pfcold)
1231     & +pfcold
1232    
1233     xsf6(l)=
1234     & xrm1*(sf6cld-sf6old)
1235     & +xrm2*(sf6up -sf6old)
1236     & +sf6old
1237     ! ===
1238     #endif
1239    
1240     xbc(l)=
1241     & xrm1*(bccld-bcold)
1242     & +xrm2*(bcup -bcold)
1243     & +bcold
1244    
1245     xoc(l)=
1246     & xrm1*(occld-ocold)
1247     & +xrm2*(ocup -ocold)
1248     & +ocold
1249    
1250     c 062295
1251     c xh2o2(l)=
1252     c & xrm1*(h2o2cld-h2o2old)
1253     c & +xrm2*(h2o2up -h2o2old)
1254     c & +h2o2old
1255    
1256     !
1257     #endif
1258    
1259     THDN=TH(L) 3303.
1260     DTL=RM*(FMX*DTCL+SUMFMX*(TFALL-TLOLD-CLH*QREEV)) 3304.
1261     TL(L)=TLOLD+DTL 3305.
1262     TH(L)=TL(L)/PLK(L) 3306.
1263     SHSAT(L)=QSA1(TL(L),PL(L)) 3307.
1264     IF(POLE) GO TO 287 3308.
1265     DO 285 K=1,4 3309.
1266     UDN =UL(K,L) 3310.
1267     UL(K,L)=UL(K,L)+RM*RA(K)*(FMX*(UL(K,LB)-UDN)+SUMFMX*(UUP(K)-UDN)) 3311.
1268     285 UUP(K)=UDN 3312.
1269     GO TO 290 3313.
1270     287 CONTINUE
1271     DO 288 IPOLE=1,IM 3314.
1272     UPDN=UPL(IPOLE,L) 3315.
1273     VPDN=VPL(IPOLE,L) 3316.
1274     UPL(IPOLE,L)=UPL(IPOLE,L)+RM*RA(1)*(FMX*(UPL(IPOLE,LB)-UPDN)+ 3317.
1275     * SUMFMX*(UPUP(IPOLE)-UPDN)) 3318.
1276     VPL(IPOLE,L)=VPL(IPOLE,L)+RM*RA(1)*(FMX*(VPL(IPOLE,LB)-VPDN)+ 3319.
1277     * SUMFMX*(VPUP(IPOLE)-VPDN)) 3320.
1278     UPUP(IPOLE)=UPDN 3321.
1279     288 VPUP(IPOLE)=VPDN 3322.
1280     290 IF(NTRACE.EQ.0) GO TO 295 3323.
1281     DO 293 K=1,NTRACE 3324.
1282     TCDN=SHL(L+K*39) 3325.
1283     SHL(L+K*39)=TCDN+RM*(FMX*(SHL(LB+K*39)-TCDN)+SUMFMX* 3326.
1284     * (TCUP(K)-TCDN)) 3327.
1285     293 TCUP(K)=TCDN 3328.
1286     295 CONTINUE 3329.
1287     SUMFMX=SNWFMX 3330.
1288     FMXA(L)=FMXA(L)+FCL*DSIG(LB) 3331.
1289     CLDMC(I,J,L)=FMXA(L)*BX 3332.
1290     IF (CLDMC(I,J,L).LT.0.) CLDMC(I,J,L)=0.
1291     c IF (CLDMC(I,J,L).LT.0.005) CLDMC(I,J,L)=0.005
1292     IF (CLDMC(I,J,L).GT.1.) CLDMC(I,J,L)=1. 3333.
1293     #if ( defined HR_DATA )
1294     if(L.le.4)then
1295     cmcyzhr(L,J)=CLDMC(I,J,L)
1296     endif
1297     #endif
1298     THUP=THDN 3334.
1299     SHUP=SHDN 3335.
1300     DSIGUP=DSIGDN 3336.
1301    
1302     #if ( defined CPL_CHEM )
1303     !
1304     cfc11up = cfc11old
1305     cfc12up = cfc12old
1306     xn2oup = xn2oold
1307     o3up = o3old
1308     coup = coold
1309     zco2up = zco2old
1310     xnoup = xnoold
1311     xno2up = xno2old
1312     xn2o5up = xn2o5old
1313     hno3up = hno3old
1314     ch4up = ch4old
1315     ch2oup = ch2oold
1316     so2up = so2old
1317     h2so4up = h2so4old
1318    
1319     ! === if hfc, pfc, and sf6 are included:
1320     #ifdef INC_3GASES
1321     ! === 032698
1322     hfc134aup = hfc134aold
1323     pfcup = pfcold
1324     sf6up = sf6old
1325     ! ===
1326     #endif
1327    
1328     bcup =bcold
1329     ocup =ocold
1330    
1331     ! 062295
1332     ! h2o2up =h2o2old
1333     !
1334     #endif
1335    
1336     303 IF (L.GT.LB+1) GO TO 245 3337.
1337     IF (L.EQ.LB) GO TO 355 3338.
1338     L=LB 3339.
1339     RM=1. 3340.
1340     FMX=0. 3341.
1341     FCL=0. 3342.
1342     DSIGDN=DSIG(LB) 3343.
1343     TLOLD = (TL(LB)-SUMTT)/(1.-SUMFMX) 3344.
1344     SHLOLD=(SHL(LB)-SUMQT)/(1.-SUMFMX) 3345.
1345    
1346     #if ( defined CPL_CHEM )
1347     !
1348     xhaha = 1./(1.-sumfmx)
1349     cfc11old=(xcfc11(lb)-sumcfc11)*xhaha
1350     cfc12old=(xcfc12(lb)-sumcfc12)*xhaha
1351     xn2oold =(xxn2o(lb)-sumxn2o) *xhaha
1352     o3old =(xo3(lb)-sumo3) *xhaha
1353     coold =(xco(lb)-sumco) *xhaha
1354     zco2old =(xzco2(lb)-sumzco2) *xhaha
1355     xnoold =(xxno(lb)-sumxno) *xhaha
1356     xno2old =(xxno2(lb)-sumxno2) *xhaha
1357     xn2o5old=(xxn2o5(lb)-sumxn2o5)*xhaha
1358     hno3old =(xhno3(lb)-sumhno3) *xhaha
1359     ch4old =(xch4(lb)-sumch4) *xhaha
1360     ch2oold =(xch2o(lb)-sumch2o) *xhaha
1361     so2old =(xso2(lb)-sumso2) *xhaha
1362     h2so4old=(xh2so4(lb)-sumh2so4)*xhaha
1363    
1364     ! === if hfc, pfc, and sf6 are included:
1365     #ifdef INC_3GASES
1366     ! === 032698
1367     hfc134aold = (xhfc134a(lb)-sumhfc134a)
1368     & *xhaha
1369     pfcold = (xpfc(lb)-sumpfc)
1370     & *xhaha
1371     sf6old = (xsf6(lb)-sumsf6)
1372     & *xhaha
1373     ! ===
1374     #endif
1375    
1376     bcold =(xbc(lb)-sumbc) *xhaha
1377     ocold =(xoc(lb)-sumoc) *xhaha
1378    
1379     c 062295
1380     c h2o2old =(xh2o2(lb)-sumh2o2) *xhaha
1381     c
1382     !
1383     #endif
1384    
1385     GO TO 270 3346.
1386     355 CONTINUE 3347.
1387     PRCPMC=PRCPMC+QTCOND*DSIGDN*SP 3348.
1388     370 CONTINUE 3349.
1389     216 DO 215 L=1,LTM 3409.
1390     DTL=TL(L)-TSAV(L) 3410.
1391     HCNDNS=HCNDNS+DTL*DSIG(L) 3411.
1392     AJL(J,L,13)=AJL(J,L,13)+DTL*SP 3412.
1393     AJL(J,L,57)=AJL(J,L,57)+(QL(L)-QSAV(L))*SP
1394     IF(J.GE.11.AND.J.LE.13) AIL(I,L,6)=AIL(I,L,6)+DTL*SP*DXYP(J) 3414.
1395     AJL(J,L,8)=AJL(J,L,8)+AJ8(L)*SP 3415.
1396     IF (POLE) GO TO 205 3416.
1397     DO 200 K=1,4 3417.
1398     200 U(ID(K),1,L)=U(ID(K),1,L)+(UL(K,L)-UC(ID(K),1,L)) 3418.
1399     GO TO 215 3419.
1400     205 DO 210 IPO=1,IM 3420.
1401     U(IPO,JVPO,L)=U(IPO,JVPO,L)+(UPL(IPO,L)-UC(IPO,JVPO,L)) 3421.
1402     210 V(IPO,JVPO,L)=V(IPO,JVPO,L)+(VPL(IPO,L)-VC(IPO,JVPO,L)) 3422.
1403     215 CONTINUE 3423.
1404     if(HPRNT)then
1405     print *,' condse 4'
1406     print *,' T(J,L)=',T(1,JPR,LPR),' Q(J,L)=',Q(1,JPR,LPR)
1407     print *,' V(J,L)=',V(1,JPR,LPR),' V(J+1,L)=',V(1,JPR+1,LPR)
1408     print *,' U(J,L)=',U(1,JPR,LPR),' U(J+1,L)=',U(1,JPR+1,LPR)
1409     endif
1410     do 873 L=1,LM
1411     if(PCLOUD.eq.1)then
1412     CLDMC(I,J,L)=CMDATA(J,L)*.01 3471.2
1413     elseif(PCLOUD.eq.6)then
1414     CLDMC(I,J,L)=CLDMCT(J,L)
1415     endif
1416     873 continue
1417     c go to 872
1418     871 CONTINUE
1419     C**** 3424.
1420     C**** LARGE SCALE PRECIPITATION 3425.
1421     C**** 3426.
1422     PRCPSS=0. 3427.
1423     CSS=0. 3429.
1424     DQUP=0. 3430.
1425     ELHXUP=LHE 3431.
1426     DO 304 LX=1,LM 3432.
1427     L=LM+1-LX 3433.
1428     TOLD=TL(L) 3434.
1429     QOLD=QL(L) 3435.
1430     ELHX= LHE 3436.
1431     IF(TOLD.LT.TI) ELHX= LHS 3437.
1432     IF (ELHXUP.EQ.LHS.AND.TOLD.LT.TF) ELHX=LHS 3438.
1433     EX=DQUP*DSIGUP/DSIG(L) 3439.
1434     TNEW=TOLD-CLH*EX 3440.
1435     QNEW=QOLD+EX 3441.
1436     DQUP=0. 3442.
1437     QSATL=QSAT(TNEW,PL(L)) 3443.
1438     ELHXUP=LHE 3444.
1439     C**** DETERMINE THE CLOUD COVER 3445.
1440     CC** IF (QNEW.LE.1.E-10) GO TO 300 3446.
1441     RHLL=QNEW/QSATL 3446.1
1442     AJL(J,L,58)=AJL(J,L,58)+RHLL*SP
1443     c AJL(J,L,59)=AJL(J,L,59)+(RHLL*SP)**2
1444     IF (QNEW.LE.1.E-10) GO TO 300
1445     RH0=RHKP(L,j)
1446     if(HPRNT)then
1447     if(L.eq.2)then
1448     print *,' condse CLDSS TAU=',TAU
1449     print *,TNEW,PL(L),QSATL
1450     print *,' RHLL=',RHLL,' RH0=',RH0
1451     endif
1452     endif
1453     if(RHLL.gt.RH0)then
1454     CLDSS(I,J,L)=(RHLL-RH0)/(1.-RH0) ! 2353.05
1455     ! CLDSS(I,J,L)=((RHLL-RH0)/(1.-RH0) )**2
1456     else
1457     CLDSS(I,J,L)=0.
1458     endif
1459     if(PCLOUD.eq.5)then
1460     RH0=RH0OLD
1461     CLDSS(I,J,L)=CSCALE*(RHLL-RH0)/(1.-RH0) 3446.2
1462     IF(PL(L).LT.400.) CLDSS(I,J,L)=.4166667*CLDSS(I,J,L) 3446.21
1463     endif
1464     if(PCLOUD.eq.1)then
1465     CLDSS(I,J,L)=CSDATA(J,L)*.01 3471.1
1466     elseif(PCLOUD.eq.6)then
1467     CLDSS(I,J,L)=CLDSST(J,L)
1468     endif
1469     #if ( defined HR_DATA )
1470     if(L.le.4)then
1471     pyzhr(L,J)=PL(L)
1472     tyzhr(L,J)=TL(L)
1473     rhyzhr(L,J)=RHLL
1474     cssyzhr(L,J)=CLDSS(I,J,L)
1475     endif
1476     #endif
1477     IF(CLDSS(I,J,L).GT.1.) CLDSS(I,J,L)=1. 3446.3
1478     IF(CLDSS(I,J,L).LT.0.0) CLDSS(I,J,L)=0.0 3446.4
1479     c IF(CLDSS(I,J,L).LT.0.005) CLDSS(I,J,L)=0.005
1480     300 IF (QNEW.LT.RHNEW(j)*QSATL) GO TO 302 3455.
1481     ELHX=LHE 3456.
1482     IF (TOLD.LT.TF) ELHX=LHS 3457.
1483     C RHNEW=1. 3458.
1484     CLH=ELHX/SHA 3459.
1485     GAMFAC=CLH*BXCONS*ELHX 3460.
1486    
1487     #if ( defined CPL_CHEM )
1488     !
1489     dqtotal = 0.0
1490     !
1491     #endif
1492    
1493     DO 301 N=1,3 3461.
1494     GAMA=GAMFAC*QSATL/(TNEW*TNEW) 3462.
1495     DQ1=(QNEW-QSATL*RHNEW(j))/(1.+GAMA*RHNEW(j)) 3463.
1496    
1497     #if ( defined CPL_CHEM )
1498     !
1499     dqtotal = dqtotal + dq1
1500     !
1501     #endif
1502    
1503     DQUP=DQUP+DQ1 3464.
1504     TNEW=TNEW+CLH*DQ1 3465.
1505     QNEW=QNEW-DQ1 3466.
1506     QSATL=QSAT(TNEW,PL(L)) 3467.
1507     301 CONTINUE
1508    
1509     #if ( defined CPL_CHEM )
1510    
1511     ! === stratform precipitation:
1512     prec_str(l) = dqtotal
1513    
1514     !
1515     ! --- 062195:
1516     ! Calculate scavenging of gases by large-scale
1517     ! precipitation
1518     ! -- assume pH is around 5.0
1519     !
1520     ! let n(v) & s(VI) disolved almost completely
1521     ! by using a large Henry's Law constant:
1522     !
1523     ! 020196:
1524    
1525     xh2so4(l)= xh2so4(l)
1526     & /(1.0 + raq2gas(1.e10, tl(l), dqtotal) )
1527    
1528     xhno3(l) = xhno3(l)
1529     & /(1.0 + raq2gas(1.e10, tl(l), dqtotal) )
1530    
1531     ehenryx = ehenry (6.3e3,6412.34,tl(l))
1532     xch2o(l) = xch2o(l)
1533     & /(1.0 + raq2gas(ehenryx, tl(l), dqtotal) )
1534    
1535     ehenryx = ehenry (1.23e3,3120.00,tl(l))
1536     xso2(l) = xso2(l)
1537     & /(1.0 + raq2gas(ehenryx, tl(l), dqtotal) )
1538    
1539     ! Calculate H2O2 also:
1540    
1541     ehenryx = ehenry (7.45,6620.00,tl(l))
1542     xh2o2(l) = xh2o2(l)
1543     & /(1.0 + raq2gas(ehenryx, tl(l), dqtotal) )
1544    
1545     ! Calculate HO, 062895:
1546    
1547     ehenryx = ehenry (25.0,5280.00,tl(l))
1548     ho(i,j,l)= ho(i,j,l)
1549     & /(1.0 + raq2gas(ehenryx, tl(l), dqtotal) )
1550    
1551     ! Calculate HO2, 062895:
1552    
1553     ehenryx = ehenry (1.0e4,6640.00,tl(l)) !2nd reaction = 4.0
1554     ho2(i,j,l)= ho2(i,j,l)
1555     & /(1.0 + raq2gas(ehenryx, tl(l), dqtotal) )
1556    
1557     !
1558     #endif
1559    
1560     DSIGUP=DSIG(L) 3468.
1561     ELHXUP=ELHX 3469.
1562     302 TL(L)=TNEW 3470.
1563     QL(L)=QNEW 3471.
1564     C**** ACCUMULATE SOME DIAGNOSTICS 3472.
1565     HCNDNS=HCNDNS+(TNEW-TOLD)*DSIG(L) 3473.
1566     304 AJL(J,L,11)=AJL(J,L,11)+(TNEW-TOLD)*SP 3474.
1567     PRCPSS=DQUP*DSIG(1)*SP 3475.
1568     c CONDL=.FALSE.
1569     c GO TO 824
1570     c 872 CONTINUE
1571     ! 07/22/2005 different precipitation over land and ocean
1572     ! PRLAND and PROCEAN are ratios of precip
1573     ! over land and ocean to total precipitation
1574     !
1575     AJ(J,61)=AJ(J,61)+PRCPSS*POCEAN*PROCEAN 3476.
1576     BJ(J,61)=BJ(J,61)+PRCPSS*PLAND*PRLAND 3477.
1577     CJ(J,61)=CJ(J,61)+PRCPSS*POICE*PROCEAN 3478.
1578     DJ(JR,61)=DJ(JR,61)+PRCPSS*DXYP(J) 3479.
1579     305 AJ(J,62)=AJ(J,62)+PRCPMC*POCEAN*PROCEAN 3480.
1580     BJ(J,62)=BJ(J,62)+PRCPMC*PLAND*PRLAND 3481.
1581     CJ(J,62)=CJ(J,62)+PRCPMC*POICE*PROCEAN 3482.
1582     DJ(JR,62)=DJ(JR,62)+PRCPMC*DXYP(J) 3483.
1583     DO 390 KR=1,4 3484.
1584     IF(I.EQ.IJD6(1,KR).AND.J.EQ.IJD6(2,KR)) GO TO 392 3485.
1585     390 CONTINUE 3486.
1586     GO TO 400 3487.
1587     392 ADAILY(IHOUR,5,KR)=ADAILY(IHOUR,5,KR)+HCNDNS*SP 3488.
1588     ADAILY(IHOUR,49,KR)=ADAILY(IHOUR,49,KR)+PRCPMC+PRCPSS 3489.
1589     400 PRCP=(PRCPMC+PRCPSS)*100./GRAV 3490.
1590     PREC(I,J)=PRCP 3491.
1591     IF(TPREC(I,J).GE.0.) PRCP=0. 3492.
1592     GDATA(I,J,11)=(DTPERD+GDATA(I,J,11)*AGESNX)*EXP(-PRCP) 3493.
1593     C**** TOTAL HEATING AND MOISTURE ADJUSTMENT 3494.
1594     500 DO 530 L=1,LM 3495.
1595     T(I,J,L)=TL(L)/PLK(L) 3496.
1596    
1597     #if ( defined CPL_CHEM )
1598     !
1599     cfc11(i,j,l)= xcfc11(l)
1600     cfc12(i,j,l)= xcfc12(l)
1601     xn2o (i,j,l)= xxn2o (l)
1602     o3 (i,j,l)= xo3 (l)
1603     co (i,j,l)= xco (l)
1604     zco2 (i,j,l)= xzco2 (l)
1605     xno (i,j,l)= xxno (l)
1606     xno2 (i,j,l)= xxno2 (l)
1607     xn2o5(i,j,l)= xxn2o5(l)
1608     hno3 (i,j,l)= xhno3 (l)
1609     ch4 (i,j,l)= xch4 (l)
1610     ch2o (i,j,l)= xch2o (l)
1611     so2 (i,j,l)= xso2 (l)
1612     h2so4(i,j,l)= xh2so4(l)
1613    
1614     ! === if hfc, pfc, and sf6 are included:
1615     #ifdef INC_3GASES
1616     ! === 032698
1617     hfc134a(i,j,l) = xhfc134a(l)
1618     pfc(i,j,l) = xpfc(l)
1619     sf6(i,j,l) = xsf6(l)
1620     ! ===
1621     #endif
1622    
1623     bcarbon (i,j,l)= xbc (l)
1624     ocarbon (i,j,l)= xoc (l)
1625    
1626     ! 062295
1627     h2o2 (i,j,l)= xh2o2 (l)
1628     !
1629     #endif
1630    
1631     530 Q(I,J,L)=QL(L) 3497.
1632    
1633     !070804
1634     #if ( defined CPL_CHEM )
1635     !
1636     beta = 3600.0*0.15 ! dt*correction
1637     !beta = 1.0
1638     t_cnv = max(0.0, prec_cnv(nlev))
1639     t_str = max(0.0, prec_str(nlev))
1640     do k=nlev-1,1,-1
1641    
1642     ! === accumulate precipitation
1643     !t_cnv = t_cnv + prec_cnv(k)
1644     !t_str = t_str + prec_str(k)
1645    
1646     if ( TX(i,j,k) .le. 273.15 ) then ! Eice =0.35
1647     t_cnv = prec_cnv(k)*0.5
1648     t_str = prec_str(k)*0.5
1649     else
1650     t_cnv = prec_cnv(k)
1651     t_str = prec_str(k)
1652     end if
1653    
1654     ! === Wet scavenging by convective precipiation:
1655     bcarbon(i,j,k) = bcarbon(i,j,k)
1656     & *(1.0 - 4.4913e-2*t_cnv*beta)
1657     if ( bcarbon(i,j,k) .lt. 0.0 ) bcarbon(i,j,k) = 0.0
1658     ocarbon(i,j,k) = ocarbon(i,j,k)
1659     & *(1.0 - 4.4913e-2*t_cnv*beta)
1660     if ( ocarbon(i,j,k) .lt. 0.0 ) ocarbon(i,j,k) = 0.0
1661    
1662     ! === Wet scavenging by large scale precipitation:
1663     bcarbon(i,j,k) = bcarbon(i,j,k)
1664     & *(1.0 - 5.3946e-2*t_str*beta)
1665     if ( bcarbon(i,j,k) .lt. 0.0 ) bcarbon(i,j,k) = 0.0
1666     ocarbon(i,j,k) = ocarbon(i,j,k)
1667     & *(1.0 - 5.3946e-2*t_str*beta)
1668     if ( ocarbon(i,j,k) .lt. 0.0 ) ocarbon(i,j,k) = 0.0
1669     end do
1670    
1671     !070804
1672     #endif
1673    
1674     700 IM1=I 3498.
1675     #if ( defined CLM )
1676    
1677     pred4tem(j)=pred4tem(j)+PREC(1,J)
1678     ewvd4tem(j)=ewvd4tem(j)+QL(1)*P(1,j)*SIG(1)*RVAP/RGAS
1679     npred4tem(j)=npred4tem(j)+1
1680    
1681     c prhr(j)=PREC(1,J)
1682     c PRCP=(PRCPMC+PRCPSS)*100./GRAV 3490.
1683     pcpl4clm(j)=PRCPSS*100./GRAV
1684     pcpc4clm(j)=PRCPMC*100./GRAV
1685     tpr4clm(j)=TPREC(1,J)
1686     #endif
1687     C
1688     #if ( defined OCEAN_3D || defined ML_2D )
1689     tempr(j)=tempr(j)+TPREC(1,J)
1690     precip(j)=precip(j)+PREC(1,J)
1691     if(j.eq.-42)then
1692     print *,'FROM CONDSE'
1693     print *,'TPREC=',TPREC(1,J),' PREC=',PREC(1,J)
1694     endif
1695     ps4ocean(j)=ps4ocean(j)+(SP+PTOP)
1696     do l=1,lm
1697     qyz4ocean(j,l)=qyz4ocean(j,l)+QL(l)
1698     tyz4ocean(j,l)=tyz4ocean(j,l)+TL(l)
1699     enddo
1700     #endif
1701     c
1702    
1703     C**** END OF MAIN LOOP FOR I INDEX 3499.
1704     810 CONTINUE 3500.
1705     C**** 3501.
1706     C**** END OF MAIN LOOP FOR J INDEX 3502.
1707     C**** 3503.
1708     C**** ADD IN CHANGE OF ANG. MOMENTUM BY MOIST CONVECTION FOR DIAGNOSTIC 3504.
1709     DO 880 L=1,LTM 3505.
1710     DO 880 J=2,JM 3506.
1711     DO 880 I=1,IM 3507.
1712     880 AJL(J,L,39)=AJL(J,L,39)+(U(I,J,L)-UC(I,J,L))*P(I,J) 3508.
1713     JDAY00=JDAY
1714     if(HPRNT)then
1715     print *,' condse 6'
1716     print *,' T(J,L)=',T(1,JPR,LPR),' Q(J,L)=',Q(1,JPR,LPR)
1717     print *,' V(J,L)=',V(1,JPR,LPR),' V(J+1,L)=',V(1,JPR+1,LPR)
1718     print *,' U(J,L)=',U(1,JPR,LPR),' U(J+1,L)=',U(1,JPR+1,LPR)
1719     endif
1720     C
1721    
1722     #if ( defined CPL_CHEM )
1723     !
1724     ! --- Chemistry model patch 081795
1725     ! check negative values:
1726     !
1727     call chemcheck(cfc11)
1728     call chemcheck(cfc12)
1729     call chemcheck(xn2o )
1730     call chemcheck(o3 )
1731     call chemcheck(co )
1732     call chemcheck(zco2 )
1733     call chemcheck(xno )
1734     call chemcheck(xno2 )
1735     call chemcheck(xn2o5)
1736     call chemcheck(hno3 )
1737     call chemcheck(ch4 )
1738     call chemcheck(ch2o )
1739     call chemcheck(so2 )
1740     call chemcheck(h2so4)
1741     call chemcheck(h2o2 )
1742     call chemcheck(bcarbon)
1743     call chemcheck(ocarbon)
1744    
1745     ! === if hfc, pfc, and sf6 are included:
1746     #ifdef INC_3GASES
1747     ! === 032698
1748     call chemcheck(hfc134a)
1749     call chemcheck(pfc)
1750     call chemcheck(sf6)
1751     ! ===
1752     #endif
1753     !
1754     #endif
1755    
1756     RETURN 3509.
1757     END 3510.

  ViewVC Help
Powered by ViewVC 1.1.22