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

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

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


Revision 1.13 - (hide 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 jmc 1.13 C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_fill_state.F,v 1.12 2004/09/08 01:49:26 jmc Exp $
2 edhill 1.6 C $Name: $
3    
4 edhill 1.10 #include "DIAG_OPTIONS.h"
5 jmc 1.7
6 jmc 1.13 SUBROUTINE DIAGNOSTICS_FILL_STATE( myThid )
7 edhill 1.10
8 jmc 1.13 IMPLICIT NONE
9 molod 1.1 #include "SIZE.h"
10     #include "EEPARAMS.h"
11     #include "GRID.h"
12     #include "DYNVARS.h"
13 jmc 1.12 #include "SURFACE.h"
14 molod 1.1
15 jmc 1.13 INTEGER myThid
16 jmc 1.7
17     #ifdef ALLOW_DIAGNOSTICS
18 jmc 1.13 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 edhill 1.11
40 jmc 1.12 #ifdef EXACT_CONSERV
41 jmc 1.13 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 jmc 1.12 #endif
54    
55 jmc 1.13 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 edhill 1.11 & = theta(i,j,K,bi,bj)*theta(i,j,K,bi,bj)
114 jmc 1.13 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 edhill 1.11 km1 = MAX(k-1,1)
189 jmc 1.13 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 edhill 1.11 km1 = MAX(k-1,1)
238 jmc 1.13 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 edhill 1.11 & = uVel(i,j,K,bi,bj)*hFacW(i,j,K,bi,bj)
258 jmc 1.13 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 edhill 1.11 & = vVel(i,j,K,bi,bj)*hFacS(i,j,K,bi,bj)
274 jmc 1.13 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 edhill 1.11
350    
351 jmc 1.7 #endif /* ALLOW_DIAGNOSTICS */
352 edhill 1.11
353 jmc 1.13 RETURN
354     END

  ViewVC Help
Powered by ViewVC 1.1.22