/[MITgcm]/MITgcm/pkg/aim_v23/aim_diagnostics.F
ViewVC logotype

Contents of /MITgcm/pkg/aim_v23/aim_diagnostics.F

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


Revision 1.10 - (show annotations) (download)
Mon Dec 20 19:09:20 2004 UTC (19 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint57b_post, checkpoint57d_post, checkpoint57c_post, checkpoint57c_pre, checkpoint57e_post, eckpoint57e_pre, checkpoint57f_pre
Changes since 1.9: +12 -12 lines
change options in diagnostics_fill arguments.

1 C $Header: /u/gcmpack/MITgcm/pkg/aim_v23/aim_diagnostics.F,v 1.9 2004/12/14 04:37:29 jmc Exp $
2 C $Name: $
3
4 #include "AIM_OPTIONS.h"
5
6 CStartOfInterFace
7 SUBROUTINE AIM_DIAGNOSTICS( bi,bj, myTime, myIter, myThid )
8 C *==========================================================*
9 C | SUBROUTINE AIM_DIAGNOSTICS
10 C | o Calculate AIM diagnostics
11 C *==========================================================*
12 IMPLICIT NONE
13
14 C === Global variables ===
15 C-- size for MITgcm & Physics package :
16 #include "AIM_SIZE.h"
17
18 #include "EEPARAMS.h"
19 #include "PARAMS.h"
20
21 #include "AIM_PARAMS.h"
22 #include "AIM2DYN.h"
23 #include "AIM_DIAGS.h"
24 #include "com_physvar.h"
25 #include "com_forcing.h"
26
27 LOGICAL DIFFERENT_MULTIPLE
28 EXTERNAL DIFFERENT_MULTIPLE
29
30 C == Routine arguments ==
31 C bi,bj - Tile index
32 C myTime - Current time of simulation ( s )
33 C myIter - Current iteration number in simulation
34 C myThid - Number of this instance of the routine
35 INTEGER bi, bj, myIter, myThid
36 _RL myTime
37 CEndOfInterface
38
39 #ifdef ALLOW_AIM
40
41 C == Local variables ==
42 INTEGER I,J,K, I2,Katm
43 _RL DDTT
44 CHARACTER*(MAX_LEN_MBUF) suff
45 #ifdef ALLOW_DIAGNOSTICS
46 LOGICAL DIAGNOSTICS_IS_ON
47 EXTERNAL DIAGNOSTICS_IS_ON
48 _RL tmpVar(NGP)
49 #endif
50
51 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
52
53 C-- mean surf. temp. change:
54 DO J=1,NGP
55 dTsurf(J,1,myThid) = fMask1(J,1,myThid)*dTsurf(J,1,myThid)
56 & + fMask1(J,2,myThid)*dTsurf(J,2,myThid)
57 & + fMask1(J,3,myThid)*dTsurf(J,3,myThid)
58 dTsurf(J,1,myThid) = ABS(dTsurf(J,1,myThid))
59 ENDDO
60
61 IF (
62 & DIFFERENT_MULTIPLE(aim_tendFreq,myTime+deltaTClock,myTime)
63 & ) THEN
64 WRITE(suff,'(I10.10)') myIter+1
65
66 C-- Write Tendencies to files :
67 CALL AIM_WRITE_LOCAL('aim_dT_RSW.',suff,Nr,TT_RSW(1,1,myThid),
68 & bi,bj,1,myIter,myThid)
69 CALL AIM_WRITE_LOCAL('aim_dT_RLW.',suff,Nr,TT_RLW(1,1,myThid),
70 & bi,bj,1,myIter,myThid)
71 CALL AIM_WRITE_LOCAL('aim_dT_CNV.',suff,Nr,TT_CNV(1,1,myThid),
72 & bi,bj,1,myIter,myThid)
73 CALL AIM_WRITE_LOCAL('aim_dT_PBL.',suff,Nr,TT_PBL(1,1,myThid),
74 & bi,bj,1,myIter,myThid)
75 CALL AIM_WRITE_LOCAL('aim_dT_LSC.',suff,Nr,TT_LSC(1,1,myThid),
76 & bi,bj,1,myIter,myThid)
77 CALL AIM_WRITE_LOCAL('aim_dQ_CNV.',suff,Nr,QT_CNV(1,1,myThid),
78 & bi,bj,1,myIter,myThid)
79 CALL AIM_WRITE_LOCAL('aim_dQ_PBL.',suff,Nr,QT_PBL(1,1,myThid),
80 & bi,bj,1,myIter,myThid)
81 CALL AIM_WRITE_LOCAL('aim_dQ_LSC.',suff,Nr,QT_LSC(1,1,myThid),
82 & bi,bj,1,myIter,myThid)
83 #ifdef ALLOW_CLR_SKY_DIAG
84 C-- write clear-sky tendencies to files :
85 IF ( aim_clrSkyDiag ) THEN
86 CALL AIM_WRITE_LOCAL('aim_dT_clskySW.',suff,Nr,
87 & TT_SWclr(1,1,myThid),bi,bj,1,myIter,myThid)
88 CALL AIM_WRITE_LOCAL('aim_dT_clskyLW.',suff,Nr,
89 & TT_LWclr(1,1,myThid),bi,bj,1,myIter,myThid)
90 ENDIF
91 #endif /* ALLOW_CLR_SKY_DIAG */
92 ENDIF
93
94 IF (
95 & DIFFERENT_MULTIPLE(aim_diagFreq,myTime+deltaTClock,myTime)
96 & ) THEN
97 WRITE(suff,'(I10.10)') myIter+1
98
99 C-- Write Relative Humidity :
100 CALL AIM_WRITE_LOCAL('aim_RelHum.',suff,Nr,RH(1,1,myThid),
101 & bi,bj,1,myIter,myThid)
102
103 C-- Write AIM Physics diagnostics (2D, all in 1 file) :
104 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,DRAG(1,0,myThid),
105 & bi,bj, 1,myIter,myThid)
106 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,SPEED0(1,myThid),
107 & bi,bj, 2,myIter,myThid)
108 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,TSR(1,myThid),
109 & bi,bj, 3,myIter,myThid)
110 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,OLR(1,myThid),
111 & bi,bj, 4,myIter,myThid)
112 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,SSR(1,0,myThid),
113 & bi,bj, 5,myIter,myThid)
114 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,SLR(1,0,myThid),
115 & bi,bj, 6,myIter,myThid)
116 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,SHF(1,0,myThid),
117 & bi,bj, 7,myIter,myThid)
118 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,EVAP(1,0,myThid),
119 & bi,bj, 8,myIter,myThid)
120 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,PRECNV(1,myThid),
121 & bi,bj, 9,myIter,myThid)
122 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,PRECLS(1,myThid),
123 & bi,bj,10,myIter,myThid)
124 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,CLOUDC(1,myThid),
125 & bi,bj,11,myIter,myThid)
126 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,CLTOP(1,myThid),
127 & bi,bj,12,myIter,myThid)
128 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,CBMF(1,myThid),
129 & bi,bj,13,myIter,myThid)
130 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,T0(1,myThid),
131 & bi,bj,14,myIter,myThid)
132 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,Q0(1,myThid),
133 & bi,bj,15,myIter,myThid)
134 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,EnPrec(1,myThid),
135 & bi,bj,16,myIter,myThid)
136 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,alb1(1,0,myThid),
137 & bi,bj,17,myIter,myThid)
138 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,dTsurf(1,1,myThid),
139 & bi,bj,18,myIter,myThid)
140 #ifdef ALLOW_CLR_SKY_DIAG
141 C-- write clear-sky radiative fluxes to files :
142 IF ( aim_clrSkyDiag ) THEN
143 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,TSWclr(1,myThid),
144 & bi,bj, 19,myIter,myThid)
145 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,OLWclr(1,myThid),
146 & bi,bj, 20,myIter,myThid)
147 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,SSWclr(1,myThid),
148 & bi,bj, 21,myIter,myThid)
149 CALL AIM_WRITE_LOCAL('aimPhyDiag.',suff,1,SLWclr(1,myThid),
150 & bi,bj, 22,myIter,myThid)
151 ENDIF
152 #endif /* ALLOW_CLR_SKY_DIAG */
153 C--
154 ENDIF
155
156 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
157
158 C-- cloud-top pressure: multiplied by cloud fraction before averaging:
159 DO J=1,NGP
160 CLTOP(J,myThid)=CLTOP(J,mythid)*CLOUDC(J,myThid)
161 ENDDO
162
163 #ifdef ALLOW_AIM_TAVE
164
165 IF (aim_taveFreq.GT.0.) THEN
166
167 DDTT = deltaTclock
168
169 DO J=1,sNy
170 DO I=1,sNx
171 I2 = I+(J-1)*sNx
172 TSRtave(i,j,bi,bj) = TSRtave(i,j,bi,bj)
173 & + TSR(I2,myThid)*DDTT
174 OLRtave(i,j,bi,bj) = OLRtave(i,j,bi,bj)
175 & + OLR(I2,myThid)*DDTT
176 SSRtave(i,j,bi,bj) = SSRtave(i,j,bi,bj)
177 & + SSR(I2,0,myThid)*DDTT
178 SLRtave(i,j,bi,bj) = SLRtave(i,j,bi,bj)
179 & + SLR(I2,0,myThid)*DDTT
180 SHFtave(i,j,bi,bj) = SHFtave(i,j,bi,bj)
181 & + SHF(I2,0,myThid)*DDTT
182 EVAPtave(i,j,bi,bj) = EVAPtave(i,j,bi,bj)
183 & + EVAP(I2,0,myThid)*DDTT
184 PRECNVtave(i,j,bi,bj) = PRECNVtave(i,j,bi,bj)
185 & + PRECNV(I2,myThid)*DDTT
186 PRECLStave(i,j,bi,bj) = PRECLStave(i,j,bi,bj)
187 & + PRECLS(I2,myThid)*DDTT
188 CLOUDCtave(i,j,bi,bj) = CLOUDCtave(i,j,bi,bj)
189 & + CLOUDC(I2,myThid)*DDTT
190 CLTOPtave(i,j,bi,bj) = CLTOPtave(i,j,bi,bj)
191 & + CLTOP(I2,myThid)*DDTT
192 CBMFtave(i,j,bi,bj) = CBMFtave(i,j,bi,bj)
193 & + CBMF(I2,myThid)*DDTT
194 DRAGtave(i,j,bi,bj) = DRAGtave(i,j,bi,bj)
195 & + DRAG(I2,0,myThid)*DDTT
196 aimV0tave(i,j,bi,bj) = aimV0tave(i,j,bi,bj)
197 & + SPEED0(I2,myThid)*DDTT
198 aimT0tave(i,j,bi,bj) = aimT0tave(i,j,bi,bj)
199 & + T0(I2,myThid)*DDTT
200 aimQ0tave(i,j,bi,bj) = aimQ0tave(i,j,bi,bj)
201 & + Q0(I2,myThid)*DDTT
202 EnFxPrtave(i,j,bi,bj) = EnFxPrtave(i,j,bi,bj)
203 & + EnPrec(I2,myThid)
204 & *(PRECNV(I2,myThid)+
205 & PRECLS(I2,myThid))*DDTT
206 albedotave(i,j,bi,bj) = albedotave(i,j,bi,bj)
207 & + alb1(I2,0,myThid)*DDTT
208 dTsurftave(i,j,bi,bj) = dTsurftave(i,j,bi,bj)
209 & + dTsurf(I2,1,myThid)*DDTT
210 ENDDO
211 ENDDO
212
213 C- Relative Humidity :
214 DO k=1,Nr
215 Katm = _KD2KA( k )
216 DO j=1,sNy
217 DO i=1,sNx
218 I2 = i+(j-1)*sNx
219 aimRHtave(i,j,k,bi,bj) = aimRHtave(i,j,k,bi,bj)
220 & + RH(I2,Katm,myThid)*DDTT
221 ENDDO
222 ENDDO
223 ENDDO
224
225 C- Keep record of how much time has been integrated over
226 DO K=1,Nr
227 aim_timeAve(k,bi,bj)=aim_timeAve(k,bi,bj)+DDTT
228 ENDDO
229
230 ENDIF
231
232 #endif /* ALLOW_AIM_TAVE */
233
234 #ifdef ALLOW_DIAGNOSTICS
235 IF (usediagnostics) THEN
236 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
237 CALL DIAGNOSTICS_FILL( aim_dTdt,
238 & 'DIABT ', 0, Nr, 1,bi,bj, myThid )
239 CALL DIAGNOSTICS_FILL( aim_dSdt,
240 & 'DIABQ ', 0, Nr, 1,bi,bj, myThid )
241 CALL DIAGNOSTICS_FILL( TT_RSW(1,1,myThid),
242 & 'RADSW ',-1, Nr, 3,bi,bj, myThid )
243 CALL DIAGNOSTICS_FILL( TT_RLW(1,1,myThid),
244 & 'RADLW ',-1, Nr, 3,bi,bj, myThid )
245 CALL DIAGNOSTICS_FILL( TT_CNV(1,1,myThid),
246 & 'DTCONV ',-1, Nr, 3,bi,bj, myThid )
247 CALL DIAGNOSTICS_FILL( TT_PBL(1,1,myThid),
248 & 'TURBT ',-1, Nr, 3,bi,bj, myThid )
249 CALL DIAGNOSTICS_FILL( TT_LSC(1,1,myThid),
250 & 'DTLS ',-1, Nr, 3,bi,bj, myThid )
251 CALL DIAGNOSTICS_FILL( QT_CNV(1,1,myThid),
252 & 'DQCONV ',-1, Nr, 3,bi,bj, myThid )
253 CALL DIAGNOSTICS_FILL( QT_PBL(1,1,myThid),
254 & 'TURBQ ',-1, Nr, 3,bi,bj, myThid )
255 CALL DIAGNOSTICS_FILL( QT_LSC(1,1,myThid),
256 & 'DQLS ',-1, Nr, 3,bi,bj, myThid )
257 CALL DIAGNOSTICS_FILL( RH(1,1,myThid),
258 & 'RELHUM ',-1, Nr, 3,bi,bj, myThid )
259 CALL DIAGNOSTICS_FILL( TSR(1,myThid),
260 & 'OSR ', 1, 1 , 3,bi,bj, myThid )
261 CALL DIAGNOSTICS_FILL( OLR(1,myThid),
262 & 'OLR ', 1, 1 , 3,bi,bj, myThid )
263 CALL DIAGNOSTICS_FILL( SSR(1,0,myThid),
264 & 'RADSWG ', 1, 1 , 3,bi,bj, myThid )
265 CALL DIAGNOSTICS_FILL( SLR(1,0,myThid),
266 & 'RADLWG ', 1, 1 , 3,bi,bj, myThid )
267 CALL DIAGNOSTICS_FILL( SHF(1,0,myThid),
268 & 'HFLUX ', 1, 1 , 3,bi,bj, myThid )
269 CALL DIAGNOSTICS_FILL( EVAP(1,0,myThid),
270 & 'EVAP ', 1, 1 , 3,bi,bj, myThid )
271 CALL DIAGNOSTICS_FILL( PRECNV(1,myThid),
272 & 'PRECON ', 1, 1 , 3,bi,bj, myThid )
273 CALL DIAGNOSTICS_FILL( PRECLS(1,myThid),
274 & 'PRECLS ', 1, 1 , 3,bi,bj, myThid )
275 CALL DIAGNOSTICS_FILL( CLOUDC(1,myThid),
276 & 'CLDFRC ', 1, 1 , 3,bi,bj, myThid )
277 CALL DIAGNOSTICS_FILL( CLTOP(1,myThid),
278 & 'CLDPRS ', 1, 1 , 3,bi,bj, myThid )
279 CALL DIAGNOSTICS_FILL( CLOUDC(1,myThid),
280 & 'CTPCNT ', 1, 1 , 3,bi,bj, myThid )
281 CALL DIAGNOSTICS_FILL( CBMF(1,myThid),
282 & 'CLDMAS ', 1, 1 , 3,bi,bj, myThid )
283 CALL DIAGNOSTICS_FILL( DRAG(1,0,myThid),
284 & 'KM ', 1, 1 , 3,bi,bj, myThid )
285 CALL DIAGNOSTICS_FILL( SPEED0(1,myThid),
286 & 'WINDS ', 1, 1 , 3,bi,bj, myThid )
287 CALL DIAGNOSTICS_FILL( T0(1,myThid),
288 & 'TS ', 1, 1 , 3,bi,bj, myThid )
289 CALL DIAGNOSTICS_FILL( Q0(1,myThid),
290 & 'QS ', 1, 1 , 3,bi,bj, myThid )
291 IF ( DIAGNOSTICS_IS_ON('ENPREC ',myThid) ) THEN
292 DO J=1,NGP
293 tmpVar(J) = EnPrec(J,myThid)
294 & *(PRECNV(J,myThid)+PRECLS(J,myThid))
295 ENDDO
296 CALL DIAGNOSTICS_FILL( tmpVar,
297 & 'ENPREC ', 1, 1 , 3,bi,bj, myThid )
298 ENDIF
299 CALL DIAGNOSTICS_FILL( alb1(1,0,myThid),
300 & 'ALBVISDF', 1, 1 , 3,bi,bj, myThid )
301 CALL DIAGNOSTICS_FILL( dTsurf(1,1,myThid),
302 & 'SDIAG1 ', 1, 1 , 3,bi,bj, myThid )
303 #ifdef ALLOW_CLR_SKY_DIAG
304 IF ( aim_clrSkyDiag ) THEN
305 CALL DIAGNOSTICS_FILL( TT_SWclr(1,1,myThid),
306 & 'SWCLR ',-1, Nr, 3,bi,bj, myThid )
307 CALL DIAGNOSTICS_FILL( TT_LWclr(1,1,myThid),
308 & 'LWCLR ',-1, Nr, 3,bi,bj, myThid )
309 CALL DIAGNOSTICS_FILL( TSWclr(1,myThid),
310 & 'OSRCLR ', 1, 1 , 3,bi,bj, myThid )
311 CALL DIAGNOSTICS_FILL( OLWclr(1,myThid),
312 & 'OLRCLR ', 1, 1 , 3,bi,bj, myThid )
313 CALL DIAGNOSTICS_FILL( SSWclr(1,myThid),
314 & 'SWGCLR ', 1, 1 , 3,bi,bj, myThid )
315 CALL DIAGNOSTICS_FILL( SLWclr(1,myThid),
316 & 'LWGCLR ', 1, 1 , 3,bi,bj, myThid )
317 ENDIF
318 #endif /* ALLOW_CLR_SKY_DIAG */
319
320 ENDIF
321 #endif /* ALLOW_DIAGNOSTICS */
322
323 #endif /* ALLOW_AIM */
324
325 RETURN
326 END

  ViewVC Help
Powered by ViewVC 1.1.22