/[MITgcm]/MITgcm/pkg/generic_advdiff/gad_diagnostics_init.F
ViewVC logotype

Contents of /MITgcm/pkg/generic_advdiff/gad_diagnostics_init.F

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


Revision 1.10 - (show annotations) (download)
Wed Feb 6 23:01:24 2013 UTC (11 years, 2 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint65, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, HEAD
Changes since 1.9: +6 -5 lines
adjust SALT units

1 C $Header: /u/gcmpack/MITgcm/pkg/generic_advdiff/gad_diagnostics_init.F,v 1.9 2012/12/23 02:13:06 heimbach Exp $
2 C $Name: $
3
4 #include "GAD_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: GAD_DIAGNOSTICS_INIT
8 C !INTERFACE:
9 SUBROUTINE GAD_DIAGNOSTICS_INIT( myThid )
10 C !DESCRIPTION:
11 C Routine to initialize Generic Advection/Diffusion diagnostics
12
13 C !USES:
14 IMPLICIT NONE
15 C === Global variables ===
16 #include "SIZE.h"
17 #include "EEPARAMS.h"
18 #include "PARAMS.h"
19 #include "GAD.h"
20
21 C !INPUT/OUTPUT PARAMETERS:
22 C === Routine arguments ===
23 C myThid :: My Thread Id. number
24 INTEGER myThid
25 CEOP
26
27 #ifdef ALLOW_DIAGNOSTICS
28 C ! FUNCTIONS:
29 CHARACTER*4 GAD_DIAG_SUFX
30 CHARACTER*16 DIAGS_MK_UNITS
31 CHARACTER*80 DIAGS_MK_TITLE
32 EXTERNAL GAD_DIAG_SUFX
33 EXTERNAL DIAGS_MK_UNITS
34 EXTERNAL DIAGS_MK_TITLE
35
36 C !LOCAL VARIABLES:
37 C === Local variables ===
38 C msgBuf :: Informational/error meesage buffer
39 c CHARACTER*(MAX_LEN_MBUF) msgBuf
40
41 INTEGER diagNum
42 INTEGER diagMate
43 CHARACTER*8 diagName
44 CHARACTER*16 diagCode
45 CHARACTER*16 diagUnits
46 CHARACTER*(80) diagTitle
47
48 CHARACTER*10 flxUnits, trUnits
49 CHARACTER*12 locName
50 CHARACTER*4 diagSufx
51
52 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
53
54 C-- Add diagnostics to the (long) list
55 IF ( usingPCoords ) THEN
56 flxUnits = '.Pa.m^2/s '
57 ELSE
58 flxUnits = '.m^3/s '
59 ENDIF
60
61 C- add diagnostics of advective & diffusive flux of Temp :
62 IF ( fluidIsAir ) THEN
63 trUnits = 'K'
64 ELSE
65 trUnits = 'degC'
66 ENDIF
67 diagUnits = DIAGS_MK_UNITS( trUnits//flxUnits, myThid )
68 diagSufx = GAD_DIAG_SUFX( GAD_TEMPERATURE, myThid )
69
70 C- Advective flux:
71 diagName = 'ADVr'//diagSufx
72 diagTitle = 'Vertical Advective Flux of Pot.Temperature'
73 diagCode = 'WM LR '
74 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
75 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
76 diagName = 'ADVx'//diagSufx
77 diagTitle = 'Zonal Advective Flux of Pot.Temperature'
78 diagCode = 'UU MR '
79 diagMate = diagNum + 2
80 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
81 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
82 diagName = 'ADVy'//diagSufx
83 diagTitle = 'Meridional Advective Flux of Pot.Temperature'
84 diagCode = 'VV MR '
85 diagMate = diagNum
86 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
87 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
88 C- Diffusive flux:
89 diagName = 'DFrE'//diagSufx
90 diagTitle = 'Vertical Diffusive Flux of Pot.Temperature'
91 & //' (Explicit part)'
92 diagCode = 'WM LR '
93 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
94 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
95 diagName = 'DFxE'//diagSufx
96 diagTitle = 'Zonal Diffusive Flux of Pot.Temperature'
97 diagCode = 'UU MR '
98 diagMate = diagNum + 2
99 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
100 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
101 diagName = 'DFyE'//diagSufx
102 diagTitle = 'Meridional Diffusive Flux of Pot.Temperature'
103 diagCode = 'VV MR '
104 diagMate = diagNum
105 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
106 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
107
108 diagName = 'DFrI'//diagSufx
109 diagTitle = 'Vertical Diffusive Flux of Pot.Temperature'
110 & //' (Implicit part)'
111 diagCode = 'WM LR '
112 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
113 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
114
115 #ifdef GAD_ALLOW_TS_SOM_ADV
116 diagUnits = DIAGS_MK_UNITS( trUnits, myThid )
117
118 diagName = 'SM_x'//diagSufx
119 diagTitle = 'Pot.Temp. 1rst Order Moment Sx'
120 diagCode = 'UM MR '
121 diagMate = diagNum + 2
122 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
123 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
124 diagName = 'SM_y'//diagSufx
125 diagTitle = 'Pot.Temp. 1rst Order Moment Sy'
126 diagCode = 'VM MR '
127 diagMate = diagNum
128 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
129 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
130 diagName = 'SM_z'//diagSufx
131 diagTitle = 'Pot.Temp. 1rst Order Moment Sz'
132 diagCode = 'SM MR '
133 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
134 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
135
136 diagName = 'SMxx'//diagSufx
137 diagTitle = 'Pot.Temp. 2nd Order Moment Sxx'
138 diagCode = 'UM MR '
139 diagMate = diagNum + 2
140 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
141 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
142 diagName = 'SMyy'//diagSufx
143 diagTitle = 'Pot.Temp. 2nd Order Moment Syy'
144 diagCode = 'VM MR '
145 diagMate = diagNum
146 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
147 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
148 diagName = 'SMzz'//diagSufx
149 diagTitle = 'Pot.Temp. 2nd Order Moment Szz'
150 diagCode = 'SM MR '
151 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
152 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
153
154 diagName = 'SMxy'//diagSufx
155 diagTitle = 'Pot.Temp. 2nd Order Moment Sxy'
156 diagCode = 'SM MR '
157 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
158 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
159 diagName = 'SMxz'//diagSufx
160 diagTitle = 'Pot.Temp. 2nd Order Moment Sxz'
161 diagCode = 'UM MR '
162 diagMate = diagNum + 2
163 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
164 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
165 diagName = 'SMyz'//diagSufx
166 diagTitle = 'Pot.Temp. 2nd Order Moment Syz'
167 diagCode = 'VM MR '
168 diagMate = diagNum
169 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
170 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
171
172 diagUnits = DIAGS_MK_UNITS( '('//trUnits//')^2', myThid )
173 diagName = 'SM_v'//diagSufx
174 diagTitle = 'Pot.Temp. sub-grid variance'
175 diagCode = 'SM P MR '
176 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
177 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
178 #endif /* GAD_ALLOW_TS_SOM_ADV */
179
180 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
181
182 C- add diagnostics of advective & diffusive flux of Salt :
183 IF ( fluidIsAir ) THEN
184 locName = 'Water-Vapor '
185 IF ( useAIM ) THEN
186 trUnits = 'g/kg'
187 ELSE
188 trUnits = 'kg/kg'
189 ENDIF
190 ELSE
191 locName = 'Salinity '
192 trUnits = 'psu'
193 ENDIF
194 diagUnits = DIAGS_MK_UNITS( trUnits//flxUnits, myThid )
195 diagSufx = GAD_DIAG_SUFX( GAD_SALINITY, myThid )
196
197 C- Advective flux:
198 diagName = 'ADVr'//diagSufx
199 diagTitle = 'Vertical Advective Flux of '//locName
200 diagCode = 'WM LR '
201 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
202 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
203 diagName = 'ADVx'//diagSufx
204 diagTitle = 'Zonal Advective Flux of '//locName
205 diagCode = 'UU MR '
206 diagMate = diagNum + 2
207 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
208 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
209 diagName = 'ADVy'//diagSufx
210 diagTitle = 'Meridional Advective Flux of '//locName
211 diagCode = 'VV MR '
212 diagMate = diagNum
213 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
214 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
215 C- Diffusive flux:
216 diagName = 'DFrE'//diagSufx
217 diagTitle = 'Vertical Diffusive Flux of '//locName
218 & // '(Explicit part)'
219 diagCode = 'WM LR '
220 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
221 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
222 diagName = 'DFxE'//diagSufx
223 diagTitle = 'Zonal Diffusive Flux of '//locName
224 diagCode = 'UU MR '
225 diagMate = diagNum + 2
226 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
227 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
228 diagName = 'DFyE'//diagSufx
229 diagTitle = 'Meridional Diffusive Flux of '//locName
230 diagCode = 'VV MR '
231 diagMate = diagNum
232 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
233 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
234
235 diagName = 'DFrI'//diagSufx
236 diagTitle = 'Vertical Diffusive Flux of '//locName
237 & //'(Implicit part)'
238 diagCode = 'WM LR '
239 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
240 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
241
242 diagName = 'SALTFILL'
243 diagTitle = 'Filling of Negative Values of '//locName
244 diagCode = 'SM MR '
245 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
246 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
247
248 #ifdef GAD_ALLOW_TS_SOM_ADV
249
250 diagUnits = DIAGS_MK_UNITS( trUnits, myThid )
251
252 diagName = 'SM_x'//diagSufx
253 diagTitle = locName//'1rst Order Moment Sx'
254 diagCode = 'UM MR '
255 diagMate = diagNum + 2
256 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
257 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
258 diagName = 'SM_y'//diagSufx
259 diagTitle = locName//'1rst Order Moment Sy'
260 diagCode = 'VM MR '
261 diagMate = diagNum
262 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
263 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
264 diagName = 'SM_z'//diagSufx
265 diagTitle = locName//'1rst Order Moment Sz'
266 diagCode = 'SM MR '
267 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
268 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
269
270 diagName = 'SMxx'//diagSufx
271 diagTitle = locName//'2nd Order Moment Sxx'
272 diagCode = 'UM MR '
273 diagMate = diagNum + 2
274 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
275 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
276 diagName = 'SMyy'//diagSufx
277 diagTitle = locName//'2nd Order Moment Syy'
278 diagCode = 'VM MR '
279 diagMate = diagNum
280 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
281 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
282 diagName = 'SMzz'//diagSufx
283 diagTitle = locName//'2nd Order Moment Szz'
284 diagCode = 'SM MR '
285 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
286 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
287
288 diagName = 'SMxy'//diagSufx
289 diagTitle = locName//'2nd Order Moment Sxy'
290 diagCode = 'SM MR '
291 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
292 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
293 diagName = 'SMxz'//diagSufx
294 diagTitle = locName//'2nd Order Moment Sxz'
295 diagCode = 'UM MR '
296 diagMate = diagNum + 2
297 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
298 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
299 diagName = 'SMyz'//diagSufx
300 diagTitle = locName//'2nd Order Moment Syz'
301 diagCode = 'VM MR '
302 diagMate = diagNum
303 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
304 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
305
306 diagUnits = DIAGS_MK_UNITS( '('//trUnits//')^2', myThid )
307 diagName = 'SM_v'//diagSufx
308 diagTitle = locName//'sub-grid variance'
309 diagCode = 'SM P MR '
310 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
311 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
312 #endif /* GAD_ALLOW_TS_SOM_ADV */
313
314 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
315
316 #endif /* ALLOW_DIAGNOSTICS */
317
318 RETURN
319 END
320
321 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
322
323 CBOP 0
324 C !ROUTINE: GAD_DIAG_SUFX
325
326 C !INTERFACE:
327 CHARACTER*4 FUNCTION GAD_DIAG_SUFX( tracerId, myThid )
328
329 C !DESCRIPTION:
330 C *==========================================================*
331 C | FUNCTION GAD_DIAG_SUFX
332 C | o Return diagnostic suffix (4 character long) for the
333 C | "tracerId" tracer (used to build diagnostic names).
334 C *==========================================================*
335
336 C !USES:
337 IMPLICIT NONE
338 #include "SIZE.h"
339 #include "EEPARAMS.h"
340 #include "GAD.h"
341 #ifdef ALLOW_PTRACERS
342 c#include "PARAMS.h"
343 # include "PTRACERS_SIZE.h"
344 # include "PTRACERS_PARAMS.h"
345 #endif /* ALLOW_PTRACERS */
346
347 C !INPUT PARAMETERS:
348 C tracerId :: tracer identifier
349 C myThid :: my thread Id number
350 INTEGER tracerId
351 INTEGER myThid
352 CEOP
353
354 C !LOCAL VARIABLES:
355
356 C-- Set diagnostic suffix (4 character long) for the "tracerId" tracer
357 IF ( tracerId.EQ.GAD_TEMPERATURE ) THEN
358 GAD_DIAG_SUFX = '_TH '
359 ELSEIF( tracerId.EQ.GAD_SALINITY ) THEN
360 GAD_DIAG_SUFX = '_SLT'
361 #ifdef ALLOW_PTRACERS
362 c ELSEIF( usePTRACERS
363 c .AND. tracerId.GE.GAD_TR1
364 ELSEIF( tracerId.GE.GAD_TR1
365 & .AND. tracerId.LT.GAD_TR1+PTRACERS_num ) THEN
366 c WRITE(GAD_DIAG_SUFX,'(A,A2)')
367 c & 'Tr', PTRACERS_ioLabel( tracerId+1-GAD_TR1 )
368 GAD_DIAG_SUFX = 'Tr'//PTRACERS_ioLabel( tracerId+1-GAD_TR1 )
369 #endif /* ALLOW_PTRACERS */
370 ELSE
371 GAD_DIAG_SUFX = 'aaaa'
372 ENDIF
373
374 RETURN
375 END

  ViewVC Help
Powered by ViewVC 1.1.22