1 |
C $Header: /u/gcmpack/models/MITgcmUV/pkg/mitphys/mitphys_calc_diags.F,v 1.3.2.1 2001/05/02 14:58:41 sb Exp $ |
2 |
C $Name: $ |
3 |
|
4 |
#include "CPP_OPTIONS.h" |
5 |
|
6 |
CStartOfInterFace |
7 |
SUBROUTINE MITPHYS_CALC_DIAGS( bi, bj, myTime, myThid ) |
8 |
C /==========================================================\ |
9 |
C | SUBROUTINE MITPHYS_CALC_DIAGS | |
10 |
C | o Calculate MITPHYS diagnostics | |
11 |
C \==========================================================/ |
12 |
|
13 |
C === Global variables === |
14 |
#include "SIZE.h" |
15 |
#include "EEPARAMS.h" |
16 |
#include "PARAMS.h" |
17 |
#include "MITPHYS_DIAGS.h" |
18 |
|
19 |
#ifdef ALLOW_MITPHYS |
20 |
#include "atparam0.h" |
21 |
#include "atparam1.h" |
22 |
INTEGER NGP |
23 |
INTEGER NLON |
24 |
INTEGER NLAT |
25 |
INTEGER NLEV |
26 |
PARAMETER ( NLON=IX, NLAT=IL, NLEV=KX, NGP=NLON*NLAT ) |
27 |
#include "com_mitphysvar.h" |
28 |
#include "com_forcing1.h" |
29 |
#endif /* ALLOW_MITPHYS */ |
30 |
|
31 |
LOGICAL DIFFERENT_MULTIPLE |
32 |
EXTERNAL DIFFERENT_MULTIPLE |
33 |
|
34 |
C == Routine arguments == |
35 |
C myTime - Current time of simulation ( s ) |
36 |
C myThid - Number of this instance of the routine |
37 |
C bi,bj - Tile index |
38 |
_RL myTime |
39 |
INTEGER myThid |
40 |
INTEGER bi, bj |
41 |
CEndOfInterface |
42 |
|
43 |
#ifdef ALLOW_MITPHYS |
44 |
|
45 |
C == Local variables == |
46 |
INTEGER I,J,I2 |
47 |
INTEGER K |
48 |
_RL DDTT |
49 |
|
50 |
#ifdef ALLOW_TIMEAVE |
51 |
|
52 |
DDTT = deltaTclock |
53 |
|
54 |
DO J=1,sNy |
55 |
DO I=1,sNx |
56 |
I2 = sNx*(J-1)+I |
57 |
TSWtave(i,j,bi,bj) = TSWtave(i,j,bi,bj) + TSW(I2)*DDTT |
58 |
TLWtave(i,j,bi,bj) = TLWtave(i,j,bi,bj) + TLW(I2)*DDTT |
59 |
SSWtave(i,j,bi,bj) = SSWtave(i,j,bi,bj) + SSW(I2)*DDTT |
60 |
SLWtave(i,j,bi,bj) = SLWtave(i,j,bi,bj) + SLW(I2)*DDTT |
61 |
SINStave(i,j,bi,bj)= SINStave(i,j,bi,bj)+ SINS(I2)*DDTT |
62 |
BKTtave(i,j,bi,bj) = BKTtave(i,j,bi,bj) + BUCKET(I2)*DDTT |
63 |
SHFtave(i,j,bi,bj) = SHFtave(i,j,bi,bj) + SHF(I2)*DDTT |
64 |
LHFtave(i,j,bi,bj) = LHFtave(i,j,bi,bj) + LHF(I2)*DDTT |
65 |
USTRtave(i,j,bi,bj) = USTRtave(i,j,bi,bj) + USTR(I2)*DDTT |
66 |
VSTRtave(i,j,bi,bj) = VSTRtave(i,j,bi,bj) + VSTR(I2)*DDTT |
67 |
PRECNVtave(i,j,bi,bj) = PRECNVtave(i,j,bi,bj) |
68 |
: + PRECNV(I2)*DDTT |
69 |
PRECLStave(i,j,bi,bj) = PRECLStave(i,j,bi,bj) |
70 |
: + PRECLS(I2)*DDTT |
71 |
CLOUDCtave(i,j,bi,bj) = CLOUDCtave(i,j,bi,bj) |
72 |
: + CLDT1(I2)*DDTT |
73 |
SSTtave(i,j,bi,bj) = SSTtave(i,j,bi,bj) |
74 |
: + TS1(I2)*DDTT |
75 |
QFLUXtave(i,j,bi,bj) = QFLUXtave(i,j,bi,bj) |
76 |
: + QFLUX(I2)*DDTT |
77 |
PRWtave(i,j,bi,bj) = PRWtave(i,j,bi,bj) |
78 |
: + PRW1(I2)*DDTT |
79 |
TSW0tave(i,j,bi,bj) = TSW0tave(i,j,bi,bj) + TSW0(I2)*DDTT |
80 |
TLW0tave(i,j,bi,bj) = TLW0tave(i,j,bi,bj) + TLW0(I2)*DDTT |
81 |
CBMFtave(i,j,bi,bj) = CBMFtave(i,j,bi,bj) + CBMFG1(I2)*DDTT |
82 |
PLCLtave(i,j,bi,bj) = PLCLtave(i,j,bi,bj) + PLCLG1(I2)*DDTT |
83 |
|
84 |
DO K=1,Nr |
85 |
RHtave(i,j,K,bi,bj) = RHtave(i,j,K,bi,bj) + RH1(I2,K)*DDTT |
86 |
CLDFtave(i,j,K,bi,bj) = CLDFtave(i,j,K,bi,bj) + CLDF1(I2,K)*DDTT |
87 |
CLDQtave(i,j,K,bi,bj) = CLDQtave(i,j,K,bi,bj) + CLDQ1(I2,K)*DDTT |
88 |
CLDQCtave(i,j,K,bi,bj)= CLDQCtave(i,j,K,bi,bj)+ CLDQC1(I2,K)*DDTT |
89 |
RCtave(i,j,K,bi,bj) = RCtave(i,j,K,bi,bj) + RC1(I2,K)*DDTT |
90 |
CRLWtave(i,j,K,bi,bj) = CRLWtave(i,j,K,bi,bj) + CRLW1(I2,K)*DDTT |
91 |
CRSWtave(i,j,K,bi,bj) = CRSWtave(i,j,K,bi,bj) + CRSW1(I2,K)*DDTT |
92 |
MUPtave(i,j,K,bi,bj) = MUPtave(i,j,K,bi,bj) + MUP1(I2,K)*DDTT |
93 |
MDNtave(i,j,K,bi,bj) = MDNtave(i,j,K,bi,bj) + MDOWN1(I2,K)*DDTT |
94 |
MDN0tave(i,j,K,bi,bj) = MDN0tave(i,j,K,bi,bj) + MP1(I2,K)*DDTT |
95 |
ENTtave(i,j,K,bi,bj) = ENTtave(i,j,K,bi,bj) + ENT1(I2,K)*DDTT |
96 |
DETtave(i,j,K,bi,bj) = DETtave(i,j,K,bi,bj) + DET1(I2,K)*DDTT |
97 |
Utave(i,j,K,bi,bj) = Utave(i,j,K,bi,bj) + UGW(I2,K)*DDTT |
98 |
Vtave(i,j,K,bi,bj) = Vtave(i,j,K,bi,bj) + VGS(I2,K)*DDTT |
99 |
Wtave(i,j,K,bi,bj) = Wtave(i,j,K,bi,bj) + WG1(I2,K)*DDTT |
100 |
Ttave(i,j,K,bi,bj) = Ttave(i,j,K,bi,bj) + TG1(I2,K)*DDTT |
101 |
Qtave(i,j,K,bi,bj) = Qtave(i,j,K,bi,bj) + QG1(I2,K)*DDTT |
102 |
CC(acz) PHItave(i,j,K,bi,bj) = PHItave(i,j,K,bi,bj) + PHIG1(I2,K)*DDTT |
103 |
sxtave(i,j,K,bi,bj) = sxtave(i,j,K,bi,bj) + SXG1(I2,K)*DDTT |
104 |
hxtave(i,j,K,bi,bj) = hxtave(i,j,K,bi,bj) + HXG1(I2,K)*DDTT |
105 |
DTCNVtave(i,j,K,bi,bj)= DTCNVtave(i,j,K,bi,bj) |
106 |
: + TT_CNV(I2,K)*DDTT*86400. |
107 |
DQCNVtave(i,j,K,bi,bj)= DQCNVtave(i,j,K,bi,bj) |
108 |
: + QT_CNV(I2,K)*DDTT*86400. |
109 |
DTLSCtave(i,j,K,bi,bj)= DTLSCtave(i,j,K,bi,bj) |
110 |
: + TT_LSC(I2,K)*DDTT*86400. |
111 |
DTPBLtave(i,j,K,bi,bj)= DTPBLtave(i,j,K,bi,bj) |
112 |
: + TT_PBL(I2,K)*DDTT*86400. |
113 |
UT_PBLtave(i,j,K,bi,bj)= UT_PBLtave(i,j,K,bi,bj) |
114 |
: + UT_PBL_W(I2,K)*DDTT*86400. |
115 |
C UT_PBLtave(i+1,j,K,bi,bj)= UT_PBLtave(i,j,K,bi,bj) |
116 |
: + UT_PBL_E(I2,K)*DDTT*86400. |
117 |
VT_PBLtave(i,j,K,bi,bj)= VT_PBLtave(i,j,K,bi,bj) |
118 |
: + VT_PBL_S(I2,K)*DDTT*86400. |
119 |
C VT_PBLtave(i,j+1,K,bi,bj)= VT_PBLtave(i,j,K,bi,bj) |
120 |
: + VT_PBL_N(I2,K)*DDTT*86400. |
121 |
UT_CNVtave(i,j,K,bi,bj)= UT_CNVtave(i,j,K,bi,bj) |
122 |
: + UT_CNV(I2,K)*DDTT*86400. |
123 |
VT_CNVtave(i,j,K,bi,bj)= VT_CNVtave(i,j,K,bi,bj) |
124 |
: + VT_CNV(I2,K)*DDTT*86400. |
125 |
UT_ADJtave(i,j,K,bi,bj)= UT_ADJtave(i,j,K,bi,bj) |
126 |
: + UT_ADJ(I2,K)*DDTT*86400. |
127 |
VT_ADJtave(i,j,K,bi,bj)= VT_ADJtave(i,j,K,bi,bj) |
128 |
: + VT_ADJ(I2,K)*DDTT*86400. |
129 |
TT_ADJtave(i,j,K,bi,bj)= TT_ADJtave(i,j,K,bi,bj) |
130 |
: + TT_ADJ(I2,K)*DDTT*86400. |
131 |
QT_ADJtave(i,j,K,bi,bj)= QT_ADJtave(i,j,K,bi,bj) |
132 |
: + QT_ADJ(I2,K)*DDTT*86400. |
133 |
|
134 |
ENDDO |
135 |
|
136 |
ENDDO |
137 |
ENDDO |
138 |
|
139 |
|
140 |
C omp: 12-28-01 |
141 |
C Zonal averages |
142 |
|
143 |
|
144 |
|
145 |
do i = 1,sNx |
146 |
do j = 1,sNy |
147 |
I2 = sNx*(J-1)+I |
148 |
do k = 1,Nr |
149 |
Uzav(j,K,bi,bj) = Uzav(j,K,bi,bj) + UGW(I2,K)*DDTT |
150 |
Vzav(j,K,bi,bj) = Vzav(j,K,bi,bj) + VGS(I2,K)*DDTT |
151 |
Wzav(j,K,bi,bj) = Wzav(j,K,bi,bj) + WG1(I2,K)*DDTT |
152 |
Tzav(j,K,bi,bj) = Tzav(j,K,bi,bj) + TG1(I2,K)*DDTT |
153 |
Qzav(j,K,bi,bj) = Qzav(j,K,bi,bj) + QG1(I2,K)*DDTT |
154 |
RHzav(j,K,bi,bj) = RHzav(j,K,bi,bj)+ RH1(I2,K)*DDTT |
155 |
|
156 |
UVzav(j,K,bi,bj) = UVzav(j,K,bi,bj) + 0.25*DDTT * |
157 |
& (UGW(I2,K) + UGE(I2,K)) * (VGN(I2,K)+VGS(I2,K)) |
158 |
VTzav(j,K,bi,bj) = VTzav(j,K,bi,bj) + 0.5*DDTT * |
159 |
& (TG1(I2,K) * (VGN(I2,K)+VGS(I2,K))) |
160 |
VQzav(j,K,bi,bj) = VQzav(j,K,bi,bj) + 0.5*DDTT * |
161 |
& (QG1(I2,K) * (VGN(I2,K)+VGS(I2,K))) |
162 |
|
163 |
CLDFzav(j,K,bi,bj) = CLDFzav(j,K,bi,bj) + CLDF1(I2,K)*DDTT |
164 |
CLDQzav(j,K,bi,bj) = CLDQzav(j,K,bi,bj) + CLDQ1(I2,K)*DDTT |
165 |
CLDQCzav(j,K,bi,bj)= CLDQCzav(j,K,bi,bj)+ CLDQC1(I2,K)*DDTT |
166 |
RCzav(j,K,bi,bj) = RCzav(j,K,bi,bj) + RC1(I2,K)*DDTT |
167 |
|
168 |
DTCNVzav(j,K,bi,bj)= DTCNVzav(j,K,bi,bj) |
169 |
: + TT_CNV(I2,K)*DDTT*86400. |
170 |
DQCNVzav(j,K,bi,bj)= DQCNVzav(j,K,bi,bj) |
171 |
: + QT_CNV(I2,K)*DDTT*86400. |
172 |
DTLSCzav(j,K,bi,bj)= DTLSCzav(j,K,bi,bj) |
173 |
: + TT_LSC(I2,K)*DDTT*86400. |
174 |
DTPBLzav(j,K,bi,bj)= DTPBLzav(j,K,bi,bj) |
175 |
: + TT_PBL(I2,K)*DDTT*86400. |
176 |
UT_PBLzav(j,K,bi,bj)= UT_PBLzav(j,K,bi,bj) |
177 |
: + UT_PBL_W(I2,K)*DDTT*86400. |
178 |
C UT_PBLzav(i+1,j,K,bi,bj)= UT_PBLzav(j,K,bi,bj) |
179 |
: + UT_PBL_E(I2,K)*DDTT*86400. |
180 |
VT_PBLzav(j,K,bi,bj)= VT_PBLzav(j,K,bi,bj) |
181 |
: + VT_PBL_S(I2,K)*DDTT*86400. |
182 |
C VT_PBLzav(j+1,K,bi,bj)= VT_PBLzav(j,K,bi,bj) |
183 |
: + VT_PBL_N(I2,K)*DDTT*86400. |
184 |
UT_CNVzav(j,K,bi,bj)= UT_CNVzav(j,K,bi,bj) |
185 |
: + UT_CNV(I2,K)*DDTT*86400. |
186 |
VT_CNVzav(j,K,bi,bj)= VT_CNVzav(j,K,bi,bj) |
187 |
: + VT_CNV(I2,K)*DDTT*86400. |
188 |
UT_ADJzav(j,K,bi,bj)= UT_ADJzav(j,K,bi,bj) |
189 |
: + UT_ADJ(I2,K)*DDTT*86400. |
190 |
VT_ADJzav(j,K,bi,bj)= VT_ADJzav(j,K,bi,bj) |
191 |
: + VT_ADJ(I2,K)*DDTT*86400. |
192 |
TT_ADJzav(j,K,bi,bj)= TT_ADJzav(j,K,bi,bj) |
193 |
: + TT_ADJ(I2,K)*DDTT*86400. |
194 |
QT_ADJzav(j,K,bi,bj)= QT_ADJzav(j,K,bi,bj) |
195 |
: + QT_ADJ(I2,K)*DDTT*86400. |
196 |
CC (acz) PHIzav(j,K,bi,bj) = PHIzav(j,K,bi,bj) + PHIG1(I2,K)*DDTT |
197 |
|
198 |
end do |
199 |
UWzav(j,1,bi,bj) = 0; |
200 |
WTzav(j,1,bi,bj) = 0; |
201 |
WQzav(j,1,bi,bj) = 0; |
202 |
DO K = 2,NR |
203 |
UWzav(j,K,bi,bj) = UWzav(j,K,bi,bj) + 0.25*DDTT * |
204 |
& (UGW(I2,K) + UGE(I2,K) + UGW(I2,K-1) + UGE(I2,K-1)) |
205 |
& * (WG1(I2,K)) |
206 |
WTzav(j,K,bi,bj) = WTzav(j,K,bi,bj) + DDTT * 0.5 * |
207 |
& ( (TG1(I2,K)+ TG1(I2,K-1)) * WG1(I2,K)) |
208 |
WQzav(j,K,bi,bj) = WQzav(j,K,bi,bj) + DDTT * 0.5 * |
209 |
& ( (QG1(I2,K)+ QG1(I2,K-1)) * WG1(I2,K)) |
210 |
END DO |
211 |
|
212 |
end do |
213 |
end do |
214 |
|
215 |
|
216 |
C- Keep record of how much time has been integrated over |
217 |
DO K=1,Nr |
218 |
MITPHYS_TimeAve(k,bi,bj)=MITPHYS_TimeAve(k,bi,bj)+DDTT |
219 |
ENDDO |
220 |
|
221 |
|
222 |
#endif /* ALLOW_TIMEAVE */ |
223 |
|
224 |
#endif /* ALLOW_MITPHYS */ |
225 |
|
226 |
RETURN |
227 |
END |
228 |
|