/[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.3 - (hide annotations) (download)
Mon Apr 23 21:20:17 2007 UTC (18 years, 3 months ago) by jscott
Branch: MAIN
CVS Tags: HEAD
Changes since 1.2: +9 -7 lines
bring igsm atmos code up to date

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

  ViewVC Help
Powered by ViewVC 1.1.22