8 |
. co2,cfc11,cfc12,cfc22,methane,n2o,emissivity, |
. co2,cfc11,cfc12,cfc22,methane,n2o,emissivity, |
9 |
. tgz,radlwg,st4,dst4, |
. tgz,radlwg,st4,dst4, |
10 |
. dtradlw,dlwdtg,dtradlwc,lwgclr, |
. dtradlw,dlwdtg,dtradlwc,lwgclr, |
11 |
. ptop,nlwcld,cldlw,clwmo,nlwlz,lwlz, |
. nlwcld,cldlw,clwmo,nlwlz,lwlz, |
12 |
. lpnt,imstturb,qliqave,fccave,landtype) |
. lpnt,imstturb,qliqave,fccave,landtype) |
13 |
|
|
14 |
implicit none |
implicit none |
15 |
#ifdef ALLOW_DIAGNOSTICS |
#ifdef ALLOW_DIAGNOSTICS |
16 |
#include "SIZE.h" |
#include "SIZE.h" |
17 |
#include "diagnostics_SIZE.h" |
#include "DIAGNOSTICS_SIZE.h" |
18 |
#include "diagnostics.h" |
#include "DIAGNOSTICS.h" |
19 |
#endif |
#endif |
20 |
|
|
21 |
c Input Variables |
c Input Variables |
23 |
integer nymd,nhms,istrip,npcs,bi,bj |
integer nymd,nhms,istrip,npcs,bi,bj |
24 |
integer mid_level,low_level |
integer mid_level,low_level |
25 |
integer im,jm,lm |
integer im,jm,lm |
|
_RL ptop |
|
26 |
_RL pz(im,jm),plz(im,jm,lm),plze(im,jm,lm+1) |
_RL pz(im,jm),plz(im,jm,lm),plze(im,jm,lm+1) |
27 |
_RL dpres(im,jm,lm),pkht(im,jm,lm+1),pkz(im,jm,lm) |
_RL dpres(im,jm,lm),pkht(im,jm,lm+1),pkz(im,jm,lm) |
28 |
_RL tz(im,jm,lm),qz(im,jm,lm),oz(im,jm,lm) |
_RL tz(im,jm,lm),qz(im,jm,lm),oz(im,jm,lm) |
70 |
_RL SGMT4(ISTRIP),TSURF(ISTRIP),dsgmt4(ISTRIP) |
_RL SGMT4(ISTRIP),TSURF(ISTRIP),dsgmt4(ISTRIP) |
71 |
integer lwi(istrip) |
integer lwi(istrip) |
72 |
|
|
73 |
|
_RL tmpstrip(istrip,lm) |
74 |
|
_RL tmpimjm(im,jm,lm) |
75 |
|
_RL tempor(im,jm) |
76 |
|
|
77 |
_RL getcon,secday,convrt |
_RL getcon,secday,convrt |
78 |
|
|
79 |
logical high, trace, cldwater |
logical high, trace, cldwater |
80 |
data high /.true./ |
c data high /.true./ |
81 |
data trace /.true./ |
c data trace /.true./ |
82 |
|
data high /.false./ |
83 |
|
data trace /.false./ |
84 |
data cldwater /.false./ |
data cldwater /.false./ |
85 |
|
|
86 |
C ********************************************************************** |
C ********************************************************************** |
139 |
|
|
140 |
call stripitint (landtype,lwi,im*jm,im*jm,istrip,1,nn) |
call stripitint (landtype,lwi,im*jm,im*jm,istrip,1,nn) |
141 |
|
|
142 |
DO I = 1,ISTRIP*lm |
DO L = 1,lm |
143 |
ADELPL(I,1) = convrt / ( ple(I,2)-ple(I,1) ) |
DO I = 1,ISTRIP |
144 |
|
ADELPL(I,L) = convrt / ( ple(I,L+1)-ple(I,L) ) |
145 |
|
ENDDO |
146 |
ENDDO |
ENDDO |
147 |
|
|
148 |
C Compute Clouds |
C Compute Clouds |
156 |
ENDDO |
ENDDO |
157 |
ENDIF |
ENDIF |
158 |
|
|
159 |
|
C Convert to Temperature from Fizhi Theta |
160 |
|
C --------------------------------------- |
161 |
DO L = 1,lm |
DO L = 1,lm |
162 |
DO I = 1,ISTRIP |
DO I = 1,ISTRIP |
163 |
TZL(I,L) = TZL(I,L)*pk(I,L) |
TZL(I,L) = TZL(I,L)*pk(I,L) |
221 |
do L = 1,lm |
do L = 1,lm |
222 |
do i = 1,istrip |
do i = 1,istrip |
223 |
dtrad(i,L) = ( flx(i,L)- flx(i,L+1))*adelpl(i,L) |
dtrad(i,L) = ( flx(i,L)- flx(i,L+1))*adelpl(i,L) |
224 |
|
tmpstrip(i,L) = flx(i,L) |
225 |
dtdtg(i,L) = ( dfdts(i,L)- dfdts(i,L+1))*adelpl(i,L) |
dtdtg(i,L) = ( dfdts(i,L)- dfdts(i,L+1))*adelpl(i,L) |
226 |
dtradc(i,L) = (flxclr(i,L)-flxclr(i,L+1))*adelpl(i,L) |
dtradc(i,L) = (flxclr(i,L)-flxclr(i,L+1))*adelpl(i,L) |
227 |
enddo |
enddo |
250 |
C **** PASTE AND BUMP SOME DIAGNOSTICS **** |
C **** PASTE AND BUMP SOME DIAGNOSTICS **** |
251 |
C ********************************************************************** |
C ********************************************************************** |
252 |
|
|
253 |
IF(IOLR.GT.0)CALL PSTBMP(flx(1,1),QDIAG(1,1,IOLR,bi,bj),ISTRIP, |
CALL PASTE(flx(1,1),tempor,ISTRIP,im*jm,1,NN) |
254 |
. im*jm, 1,NN) |
|
255 |
IF(IOLRCLR.GT.0)CALL PSTBMP(flxclr(1,1),QDIAG(1,1,IOLRCLR,bi,bj), |
c IF(IOLR.GT.0)CALL PSTBMP(flx(1,1),QDIAG(1,1,IOLR,bi,bj),ISTRIP, |
256 |
. ISTRIP,im*jm,1,NN) |
c . im*jm, 1,NN) |
257 |
IF(IOZLW.GT.0)CALL PSTBMP(OZL(1,1),QDIAG(1,1,IOZLW,bi,bj),ISTRIP, |
c IF(IOLRCLR.GT.0)CALL PSTBMP(flxclr(1,1),QDIAG(1,1,IOLRCLR,bi,bj), |
258 |
. im*jm,lm,NN) |
c . ISTRIP,im*jm,1,NN) |
259 |
|
c IF(IOZLW.GT.0)CALL PSTBMP(OZL(1,1),QDIAG(1,1,IOZLW,bi,bj),ISTRIP, |
260 |
|
c . im*jm,lm,NN) |
261 |
|
|
262 |
C ********************************************************************** |
C ********************************************************************** |
263 |
C **** TENDENCY UPDATES **** |
C **** TENDENCY UPDATES **** |
265 |
|
|
266 |
DO L = 1,lm |
DO L = 1,lm |
267 |
DO I = 1,ISTRIP |
DO I = 1,ISTRIP |
268 |
DTRAD (I,L) = ( ple(i,lm+1)-PTOP ) * DTRAD (I,L)/pk(I,L) |
DTRAD (I,L) = ple(i,lm+1) * DTRAD (I,L)/pk(I,L) |
269 |
DTRADC(I,L) = ( ple(i,lm+1)-PTOP ) * DTRADC(I,L)/pk(I,L) |
DTRADC(I,L) = ple(i,lm+1) * DTRADC(I,L)/pk(I,L) |
270 |
dtdtg(I,L) = ( ple(i,lm+1)-PTOP ) * dtdtg (I,L)/pk(I,L) |
dtdtg(I,L) = ple(i,lm+1) * dtdtg (I,L)/pk(I,L) |
271 |
ENDDO |
ENDDO |
272 |
ENDDO |
ENDDO |
273 |
|
CALL PASTE ( tmpstrip ,tmpimjm ,ISTRIP,im*jm,lm,NN ) |
274 |
CALL PASTE ( DTRAD ,DTRADLW ,ISTRIP,im*jm,lm,NN ) |
CALL PASTE ( DTRAD ,DTRADLW ,ISTRIP,im*jm,lm,NN ) |
275 |
CALL PASTE ( DTRADC,DTRADLWC,ISTRIP,im*jm,lm,NN ) |
CALL PASTE ( DTRADC,DTRADLWC,ISTRIP,im*jm,lm,NN ) |
276 |
CALL PASTE ( dtdtg ,dlwdtg ,ISTRIP,im*jm,lm,NN ) |
CALL PASTE ( dtdtg ,dlwdtg ,ISTRIP,im*jm,lm,NN ) |
311 |
enddo |
enddo |
312 |
endif |
endif |
313 |
|
|
314 |
|
if (iudiag4.ne.0) then |
315 |
|
do L = 1,lm |
316 |
|
do j = 1,jm |
317 |
|
do i = 1,im |
318 |
|
qdiag(i,j,iudiag4+L-1,bi,bj) = qdiag(i,j,iudiag4+L-1,bi,bj) + |
319 |
|
. tmpimjm(i,j,L) |
320 |
|
enddo |
321 |
|
enddo |
322 |
|
enddo |
323 |
|
endif |
324 |
|
|
325 |
|
if (iolr.ne.0) then |
326 |
|
do j = 1,jm |
327 |
|
do i = 1,im |
328 |
|
qdiag(i,j,iolr,bi,bj) = qdiag(i,j,iolr,bi,bj) + tempor(i,j) |
329 |
|
enddo |
330 |
|
enddo |
331 |
|
endif |
332 |
|
|
333 |
C ********************************************************************** |
C ********************************************************************** |
334 |
C **** Increment Diagnostics Counters and Zero-Out Cloud Info **** |
C **** Increment Diagnostics Counters and Zero-Out Cloud Info **** |
335 |
C ********************************************************************** |
C ********************************************************************** |
336 |
|
|
337 |
|
#ifdef ALLOW_DIAGNOSTICS |
338 |
|
if ( (bi.eq.1) .and. (bj.eq.1) ) then |
339 |
ntlw = ntlw + 1 |
ntlw = ntlw + 1 |
340 |
nshrad = nshrad + 1 |
nshrad = nshrad + 1 |
341 |
nozlw = nozlw + 1 |
nozlw = nozlw + 1 |
343 |
nolr = nolr + 1 |
nolr = nolr + 1 |
344 |
nolrclr = nolrclr + 1 |
nolrclr = nolrclr + 1 |
345 |
|
|
346 |
|
nudiag4 = nudiag4 + 1 |
347 |
|
endif |
348 |
|
#endif |
349 |
|
|
350 |
nlwlz = 0 |
nlwlz = 0 |
351 |
nlwcld = 0 |
nlwcld = 0 |
352 |
imstturb = 0 |
imstturb = 0 |
812 |
#include "co2-tran3.h" |
#include "co2-tran3.h" |
813 |
#include "o3-tran3.h" |
#include "o3-tran3.h" |
814 |
|
|
815 |
save c1,c2,c3,o1,o2,o3 |
c save c1,c2,c3,o1,o2,o3 |
816 |
save h11,h12,h13,h21,h22,h23,h81,h82,h83 |
c save h11,h12,h13,h21,h22,h23,h81,h82,h83 |
817 |
|
|
818 |
c if (first) then |
if (first) then |
819 |
|
|
820 |
c-----tables co2 and h2o are only used with 'high' option |
c-----tables co2 and h2o are only used with 'high' option |
821 |
|
|
883 |
enddo |
enddo |
884 |
enddo |
enddo |
885 |
|
|
886 |
c first=.false. |
first=.false. |
887 |
|
|
888 |
c endif |
endif |
889 |
|
|
890 |
c-----set the pressure at the top of the model atmosphere |
c-----set the pressure at the top of the model atmosphere |
891 |
c to 1.0e-4 if it is zero |
c to 1.0e-4 if it is zero |
1493 |
dpe=0.2 |
dpe=0.2 |
1494 |
call tablup(k1,k2,m,n,np,nx,no,nt,sco3,scopre,scotem, |
call tablup(k1,k2,m,n,np,nx,no,nt,sco3,scopre,scotem, |
1495 |
* w1,p1,dwe,dpe,o1,o2,o3,trant) |
* w1,p1,dwe,dpe,o1,o2,o3,trant) |
1496 |
|
|
1497 |
endif |
endif |
1498 |
|
|
1499 |
c***** for trace gases ***** |
c***** for trace gases ***** |