/[MITgcm]/MITgcm/pkg/diagnostics/diagnostics_fill_state.F
ViewVC logotype

Contents of /MITgcm/pkg/diagnostics/diagnostics_fill_state.F

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


Revision 1.13 - (show annotations) (download)
Mon Dec 13 21:55:48 2004 UTC (19 years, 4 months ago) by jmc
Branch: MAIN
Changes since 1.12: +328 -286 lines
new S/R diagnostics_fill (replace fill_diagnostics):
 * look through the short list of active diag. (instead of through the long
   list of all available diagnostics) ;
 * create function DIAGNOSTICS_IS_ON to tell if a diagnostics is active

1 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_fill_state.F,v 1.12 2004/09/08 01:49:26 jmc Exp $
2 C $Name: $
3
4 #include "DIAG_OPTIONS.h"
5
6 SUBROUTINE DIAGNOSTICS_FILL_STATE( myThid )
7
8 IMPLICIT NONE
9 #include "SIZE.h"
10 #include "EEPARAMS.h"
11 #include "GRID.h"
12 #include "DYNVARS.h"
13 #include "SURFACE.h"
14
15 INTEGER myThid
16
17 #ifdef ALLOW_DIAGNOSTICS
18 LOGICAL DIAGNOSTICS_IS_ON
19 EXTERNAL DIAGNOSTICS_IS_ON
20 _RL tmpMk(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
21 _RL tmp1k(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
22 INTEGER i,j,K,bi,bj
23 INTEGER km1
24
25 CALL DIAGNOSTICS_FILL(etaN,'ETAN ',0,1,0,1,1,myThid)
26
27 IF ( DIAGNOSTICS_IS_ON('ETANSQ ',myThid) ) THEN
28 DO bj = myByLo(myThid), myByHi(myThid)
29 DO bi = myBxLo(myThid), myBxHi(myThid)
30 DO j = 1,sNy
31 DO i = 1,sNx
32 tmp1k(i,j,bi,bj) = etaN(i,j,bi,bj)*etaN(i,j,bi,bj)
33 ENDDO
34 ENDDO
35 ENDDO
36 ENDDO
37 CALL DIAGNOSTICS_FILL(tmp1k,'ETANSQ ',0,1,0,1,1,myThid)
38 ENDIF
39
40 #ifdef EXACT_CONSERV
41 IF ( DIAGNOSTICS_IS_ON('DETADT2 ',myThid) ) THEN
42 DO bj = myByLo(myThid), myByHi(myThid)
43 DO bi = myBxLo(myThid), myBxHi(myThid)
44 DO j = 1,sNy
45 DO i = 1,sNx
46 tmp1k(i,j,bi,bj) = dEtaHdt(i,j,bi,bj)*dEtaHdt(i,j,bi,bj)
47 ENDDO
48 ENDDO
49 ENDDO
50 ENDDO
51 CALL DIAGNOSTICS_FILL(tmp1k,'DETADT2 ',0,1,0,1,1,myThid)
52 ENDIF
53 #endif
54
55 CALL DIAGNOSTICS_FILL(uVel, 'UVEL ',0,Nr,0,1,1,myThid)
56 CALL DIAGNOSTICS_FILL(vVel, 'VVEL ',0,Nr,0,1,1,myThid)
57 CALL DIAGNOSTICS_FILL(wVel, 'WVEL ',0,Nr,0,1,1,myThid)
58 CALL DIAGNOSTICS_FILL(theta,'THETA ',0,Nr,0,1,1,myThid)
59 CALL DIAGNOSTICS_FILL(salt, 'SALT ',0,Nr,0,1,1,myThid)
60
61 IF ( DIAGNOSTICS_IS_ON('UVELSQ ',myThid) ) THEN
62 DO bj = myByLo(myThid), myByHi(myThid)
63 DO bi = myBxLo(myThid), myBxHi(myThid)
64 DO K=1,Nr
65 DO j = 1,sNy
66 DO i = 1,sNx
67 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*uVel(i,j,K,bi,bj)
68 ENDDO
69 ENDDO
70 ENDDO
71 ENDDO
72 ENDDO
73 CALL DIAGNOSTICS_FILL(tmpMk,'UVELSQ ',0,Nr,0,1,1,myThid)
74 ENDIF
75
76 IF ( DIAGNOSTICS_IS_ON('VVELSQ ',myThid) ) THEN
77 DO bj = myByLo(myThid), myByHi(myThid)
78 DO bi = myBxLo(myThid), myBxHi(myThid)
79 DO K=1,Nr
80 DO j = 1,sNy
81 DO i = 1,sNx
82 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*vVel(i,j,K,bi,bj)
83 ENDDO
84 ENDDO
85 ENDDO
86 ENDDO
87 ENDDO
88 CALL DIAGNOSTICS_FILL(tmpMk,'VVELSQ ',0,Nr,0,1,1,myThid)
89 ENDIF
90
91 IF ( DIAGNOSTICS_IS_ON('WVELSQ ',myThid) ) THEN
92 DO bj = myByLo(myThid), myByHi(myThid)
93 DO bi = myBxLo(myThid), myBxHi(myThid)
94 DO K=1,Nr
95 DO j = 1,sNy
96 DO i = 1,sNx
97 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*wVel(i,j,K,bi,bj)
98 ENDDO
99 ENDDO
100 ENDDO
101 ENDDO
102 ENDDO
103 CALL DIAGNOSTICS_FILL(tmpMk,'WVELSQ ',0,Nr,0,1,1,myThid)
104 ENDIF
105
106 IF ( DIAGNOSTICS_IS_ON('THETASQ ',myThid) ) THEN
107 DO bj = myByLo(myThid), myByHi(myThid)
108 DO bi = myBxLo(myThid), myBxHi(myThid)
109 DO K=1,Nr
110 DO j = 1,sNy
111 DO i = 1,sNx
112 tmpMk(i,j,K,bi,bj)
113 & = theta(i,j,K,bi,bj)*theta(i,j,K,bi,bj)
114 ENDDO
115 ENDDO
116 ENDDO
117 ENDDO
118 ENDDO
119 CALL DIAGNOSTICS_FILL(tmpMk,'THETASQ ',0,Nr,0,1,1,myThid)
120 ENDIF
121
122 IF ( DIAGNOSTICS_IS_ON('SALTSQ ',myThid) ) THEN
123 DO bj = myByLo(myThid), myByHi(myThid)
124 DO bi = myBxLo(myThid), myBxHi(myThid)
125 DO K=1,Nr
126 DO j = 1,sNy
127 DO i = 1,sNx
128 tmpMk(i,j,K,bi,bj) = salt(i,j,K,bi,bj)*salt(i,j,K,bi,bj)
129 ENDDO
130 ENDDO
131 ENDDO
132 ENDDO
133 ENDDO
134 CALL DIAGNOSTICS_FILL(tmpMk,'SALTSQ ',0,Nr,0,1,1,myThid)
135 ENDIF
136
137 IF ( DIAGNOSTICS_IS_ON('UVELVVEL',myThid) ) THEN
138 DO bj = myByLo(myThid), myByHi(myThid)
139 DO bi = myBxLo(myThid), myBxHi(myThid)
140 DO K=1,Nr
141 DO j = 1,sNy
142 DO i = 1,sNx
143 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*vVel(i,j,K,bi,bj)
144 ENDDO
145 ENDDO
146 ENDDO
147 ENDDO
148 ENDDO
149 CALL DIAGNOSTICS_FILL(tmpMk,'UVELVVEL',0,Nr,0,1,1,myThid)
150 ENDIF
151
152 IF ( DIAGNOSTICS_IS_ON('UVELTH ',myThid) ) THEN
153 DO bj = myByLo(myThid), myByHi(myThid)
154 DO bi = myBxLo(myThid), myBxHi(myThid)
155 DO K=1,Nr
156 DO j = 1,sNy
157 DO i = 1,sNx
158 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
159 & *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))
160 ENDDO
161 ENDDO
162 ENDDO
163 ENDDO
164 ENDDO
165 CALL DIAGNOSTICS_FILL(tmpMk,'UVELTH ',0,Nr,0,1,1,myThid)
166 ENDIF
167
168 IF ( DIAGNOSTICS_IS_ON('VVELTH ',myThid) ) THEN
169 DO bj = myByLo(myThid), myByHi(myThid)
170 DO bi = myBxLo(myThid), myBxHi(myThid)
171 DO K=1,Nr
172 DO j = 1,sNy
173 DO i = 1,sNx
174 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
175 & *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))
176 ENDDO
177 ENDDO
178 ENDDO
179 ENDDO
180 ENDDO
181 CALL DIAGNOSTICS_FILL(tmpMk,'VVELTH ',0,Nr,0,1,1,myThid)
182 ENDIF
183
184 IF ( DIAGNOSTICS_IS_ON('WVELTH ',myThid) ) THEN
185 DO bj = myByLo(myThid), myByHi(myThid)
186 DO bi = myBxLo(myThid), myBxHi(myThid)
187 DO K=1,Nr
188 km1 = MAX(k-1,1)
189 DO j = 1,sNy
190 DO i = 1,sNx
191 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
192 & *(theta(i,j,K,bi,bj)+theta(i,j,km1,bi,bj))
193 ENDDO
194 ENDDO
195 ENDDO
196 ENDDO
197 ENDDO
198 CALL DIAGNOSTICS_FILL(tmpMk,'WVELTH ',0,Nr,0,1,1,myThid)
199 ENDIF
200
201 IF ( DIAGNOSTICS_IS_ON('UVELSLT ',myThid) ) THEN
202 DO bj = myByLo(myThid), myByHi(myThid)
203 DO bi = myBxLo(myThid), myBxHi(myThid)
204 DO K=1,Nr
205 DO j = 1,sNy
206 DO i = 1,sNx
207 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
208 & *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))
209 ENDDO
210 ENDDO
211 ENDDO
212 ENDDO
213 ENDDO
214 CALL DIAGNOSTICS_FILL(tmpMk,'UVELSLT ',0,Nr,0,1,1,myThid)
215 ENDIF
216
217 IF ( DIAGNOSTICS_IS_ON('VVELSLT ',myThid) ) THEN
218 DO bj = myByLo(myThid), myByHi(myThid)
219 DO bi = myBxLo(myThid), myBxHi(myThid)
220 DO K=1,Nr
221 DO j = 1,sNy
222 DO i = 1,sNx
223 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
224 & *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))
225 ENDDO
226 ENDDO
227 ENDDO
228 ENDDO
229 ENDDO
230 CALL DIAGNOSTICS_FILL(tmpMk,'VVELSLT ',0,Nr,0,1,1,myThid)
231 ENDIF
232
233 IF ( DIAGNOSTICS_IS_ON('WVELSLT ',myThid) ) THEN
234 DO bj = myByLo(myThid), myByHi(myThid)
235 DO bi = myBxLo(myThid), myBxHi(myThid)
236 DO K=1,Nr
237 km1 = MAX(k-1,1)
238 DO j = 1,sNy
239 DO i = 1,sNx
240 tmpMk(i,j,K,bi,bj) = wVel(i,j,K,bi,bj)*0.5 _d 0
241 & *(salt(i,j,K,bi,bj)+salt(i,j,km1,bi,bj))
242 ENDDO
243 ENDDO
244 ENDDO
245 ENDDO
246 ENDDO
247 CALL DIAGNOSTICS_FILL(tmpMk,'WVELSLT ',0,Nr,0,1,1,myThid)
248 ENDIF
249
250 IF ( DIAGNOSTICS_IS_ON('UVELMASS',myThid) ) THEN
251 DO bj = myByLo(myThid), myByHi(myThid)
252 DO bi = myBxLo(myThid), myBxHi(myThid)
253 DO K=1,Nr
254 DO j = 1,sNy
255 DO i = 1,sNx
256 tmpMk(i,j,K,bi,bj)
257 & = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj)
258 ENDDO
259 ENDDO
260 ENDDO
261 ENDDO
262 ENDDO
263 CALL DIAGNOSTICS_FILL(tmpMk,'UVELMASS',0,Nr,0,1,1,myThid)
264 ENDIF
265
266 IF ( DIAGNOSTICS_IS_ON('VVELMASS',myThid) ) THEN
267 DO bj = myByLo(myThid), myByHi(myThid)
268 DO bi = myBxLo(myThid), myBxHi(myThid)
269 DO K=1,Nr
270 DO j = 1,sNy
271 DO i = 1,sNx
272 tmpMk(i,j,K,bi,bj)
273 & = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj)
274 ENDDO
275 ENDDO
276 ENDDO
277 ENDDO
278 ENDDO
279 CALL DIAGNOSTICS_FILL(tmpMk,'VVELMASS',0,Nr,0,1,1,myThid)
280 ENDIF
281
282 IF ( DIAGNOSTICS_IS_ON('UTHMASS ',myThid) ) THEN
283 DO bj = myByLo(myThid), myByHi(myThid)
284 DO bi = myBxLo(myThid), myBxHi(myThid)
285 DO K=1,Nr
286 DO j = 1,sNy
287 DO i = 1,sNx
288 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
289 & *(theta(i,j,K,bi,bj)+theta(i-1,j,K,bi,bj))
290 & * hFacW(i,j,K,bi,bj)
291 ENDDO
292 ENDDO
293 ENDDO
294 ENDDO
295 ENDDO
296 CALL DIAGNOSTICS_FILL(tmpMk,'UTHMASS ',0,Nr,0,1,1,myThid)
297 ENDIF
298
299 IF ( DIAGNOSTICS_IS_ON('VTHMASS ',myThid) ) THEN
300 DO bj = myByLo(myThid), myByHi(myThid)
301 DO bi = myBxLo(myThid), myBxHi(myThid)
302 DO K=1,Nr
303 DO j = 1,sNy
304 DO i = 1,sNx
305 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
306 & *(theta(i,j,K,bi,bj)+theta(i,j-1,K,bi,bj))
307 & * hFacS(i,j,K,bi,bj)
308 ENDDO
309 ENDDO
310 ENDDO
311 ENDDO
312 ENDDO
313 CALL DIAGNOSTICS_FILL(tmpMk,'VTHMASS ',0,Nr,0,1,1,myThid)
314 ENDIF
315
316 IF ( DIAGNOSTICS_IS_ON('USLTMASS',myThid) ) THEN
317 DO bj = myByLo(myThid), myByHi(myThid)
318 DO bi = myBxLo(myThid), myBxHi(myThid)
319 DO K=1,Nr
320 DO j = 1,sNy
321 DO i = 1,sNx
322 tmpMk(i,j,K,bi,bj) = uVel(i,j,K,bi,bj)*0.5 _d 0
323 & *(salt(i,j,K,bi,bj)+salt(i-1,j,K,bi,bj))
324 & * hFacW(i,j,K,bi,bj)
325 ENDDO
326 ENDDO
327 ENDDO
328 ENDDO
329 ENDDO
330 CALL DIAGNOSTICS_FILL(tmpMk,'USLTMASS',0,Nr,0,1,1,myThid)
331 ENDIF
332
333 IF ( DIAGNOSTICS_IS_ON('VSLTMASS',myThid) ) THEN
334 DO bj = myByLo(myThid), myByHi(myThid)
335 DO bi = myBxLo(myThid), myBxHi(myThid)
336 DO K=1,Nr
337 DO j = 1,sNy
338 DO i = 1,sNx
339 tmpMk(i,j,K,bi,bj) = vVel(i,j,K,bi,bj)*0.5 _d 0
340 & *(salt(i,j,K,bi,bj)+salt(i,j-1,K,bi,bj))
341 & * hFacS(i,j,K,bi,bj)
342 ENDDO
343 ENDDO
344 ENDDO
345 ENDDO
346 ENDDO
347 CALL DIAGNOSTICS_FILL(tmpMk,'VSLTMASS',0,Nr,0,1,1,myThid)
348 ENDIF
349
350
351 #endif /* ALLOW_DIAGNOSTICS */
352
353 RETURN
354 END

  ViewVC Help
Powered by ViewVC 1.1.22