/[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.8 - (show annotations) (download)
Fri May 9 21:43:16 2008 UTC (15 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64a, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint64, checkpoint60, checkpoint61, checkpoint62, checkpoint63, checkpoint59r, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint62z, checkpoint62y, checkpoint62x, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y
Changes since 1.7: +5 -5 lines
change option: GAD_ALLOW_SOM_ADVECT to GAD_ALLOW_TS_SOM_ADV which only
applies to files where Temperature & salinity 2nd Order moments are used

1 C $Header: /u/gcmpack/MITgcm/pkg/generic_advdiff/gad_diagnostics_init.F,v 1.7 2008/02/12 20:26:02 jmc 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 c 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 trUnits = 'g/kg'
186 #ifdef ALLOW_FIZHI
187 IF ( useFIZHI ) trUnits = 'kg/kg'
188 #endif /* ALLOW_FIZHI */
189 ELSE
190 locName = 'Salinity '
191 trUnits = 'psu'
192 ENDIF
193 diagUnits = DIAGS_MK_UNITS( trUnits//flxUnits, myThid )
194 diagSufx = GAD_DIAG_SUFX( GAD_SALINITY, myThid )
195
196 C- Advective flux:
197 diagName = 'ADVr'//diagSufx
198 diagTitle = 'Vertical Advective Flux of '//locName
199 diagCode = 'WM LR '
200 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
201 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
202 diagName = 'ADVx'//diagSufx
203 diagTitle = 'Zonal Advective Flux of '//locName
204 diagCode = 'UU MR '
205 diagMate = diagNum + 2
206 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
207 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
208 diagName = 'ADVy'//diagSufx
209 diagTitle = 'Meridional Advective Flux of '//locName
210 diagCode = 'VV MR '
211 diagMate = diagNum
212 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
213 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
214 C- Diffusive flux:
215 diagName = 'DFrE'//diagSufx
216 diagTitle = 'Vertical Diffusive Flux of '//locName
217 & // '(Explicit part)'
218 diagCode = 'WM LR '
219 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
220 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
221 diagName = 'DFxE'//diagSufx
222 diagTitle = 'Zonal Diffusive Flux of '//locName
223 diagCode = 'UU MR '
224 diagMate = diagNum + 2
225 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
226 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
227 diagName = 'DFyE'//diagSufx
228 diagTitle = 'Meridional Diffusive Flux of '//locName
229 diagCode = 'VV MR '
230 diagMate = diagNum
231 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
232 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
233
234 diagName = 'DFrI'//diagSufx
235 diagTitle = 'Vertical Diffusive Flux of '//locName
236 & //'(Implicit part)'
237 diagCode = 'WM LR '
238 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
239 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
240
241 diagName = 'SALTFILL'
242 diagTitle = 'Filling of Negative Values of '//locName
243 diagCode = 'SM MR '
244 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
245 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
246
247 #ifdef GAD_ALLOW_TS_SOM_ADV
248
249 diagUnits = DIAGS_MK_UNITS( trUnits, myThid )
250
251 diagName = 'SM_x'//diagSufx
252 diagTitle = locName//'1rst Order Moment Sx'
253 diagCode = 'UM MR '
254 diagMate = diagNum + 2
255 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
256 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
257 diagName = 'SM_y'//diagSufx
258 diagTitle = locName//'1rst Order Moment Sy'
259 diagCode = 'VM MR '
260 diagMate = diagNum
261 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
262 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
263 diagName = 'SM_z'//diagSufx
264 diagTitle = locName//'1rst Order Moment Sz'
265 diagCode = 'SM MR '
266 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
267 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
268
269 diagName = 'SMxx'//diagSufx
270 diagTitle = locName//'2nd Order Moment Sxx'
271 diagCode = 'UM MR '
272 diagMate = diagNum + 2
273 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
274 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
275 diagName = 'SMyy'//diagSufx
276 diagTitle = locName//'2nd Order Moment Syy'
277 diagCode = 'VM MR '
278 diagMate = diagNum
279 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
280 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
281 diagName = 'SMzz'//diagSufx
282 diagTitle = locName//'2nd Order Moment Szz'
283 diagCode = 'SM MR '
284 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
285 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
286
287 diagName = 'SMxy'//diagSufx
288 diagTitle = locName//'2nd Order Moment Sxy'
289 diagCode = 'SM MR '
290 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
291 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
292 diagName = 'SMxz'//diagSufx
293 diagTitle = locName//'2nd Order Moment Sxz'
294 diagCode = 'UM MR '
295 diagMate = diagNum + 2
296 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
297 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
298 diagName = 'SMyz'//diagSufx
299 diagTitle = locName//'2nd Order Moment Syz'
300 diagCode = 'VM MR '
301 diagMate = diagNum
302 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
303 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
304
305 diagUnits = DIAGS_MK_UNITS( '('//trUnits//')^2', myThid )
306 diagName = 'SM_v'//diagSufx
307 diagTitle = locName//'sub-grid variance'
308 diagCode = 'SM P MR '
309 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
310 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
311 #endif /* GAD_ALLOW_TS_SOM_ADV */
312
313 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
314
315 #endif /* ALLOW_DIAGNOSTICS */
316
317 RETURN
318 END
319
320 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
321
322 CBOP 0
323 C !ROUTINE: GAD_DIAG_SUFX
324
325 C !INTERFACE:
326 CHARACTER*4 FUNCTION GAD_DIAG_SUFX( tracerId, myThid )
327
328 C !DESCRIPTION:
329 C *==========================================================*
330 C | FUNCTION GAD_DIAG_SUFX
331 C | o Return diagnostic suffix (4 character long) for the
332 C | "tracerId" tracer (used to build diagnostic names).
333 C *==========================================================*
334
335 C !USES:
336 IMPLICIT NONE
337 #include "SIZE.h"
338 #include "EEPARAMS.h"
339 #include "GAD.h"
340 #ifdef ALLOW_PTRACERS
341 c#include "PARAMS.h"
342 # include "PTRACERS_SIZE.h"
343 # include "PTRACERS_PARAMS.h"
344 #endif /* ALLOW_PTRACERS */
345
346 C !INPUT PARAMETERS:
347 C tracerId :: tracer identifier
348 C myThid :: my thread Id number
349 INTEGER tracerId
350 INTEGER myThid
351 CEOP
352
353 C !LOCAL VARIABLES:
354
355 C-- Set diagnostic suffix (4 character long) for the "tracerId" tracer
356 IF ( tracerId.EQ.GAD_TEMPERATURE ) THEN
357 GAD_DIAG_SUFX = '_TH '
358 ELSEIF( tracerId.EQ.GAD_SALINITY ) THEN
359 GAD_DIAG_SUFX = '_SLT'
360 #ifdef ALLOW_PTRACERS
361 c ELSEIF( usePTRACERS
362 c .AND. tracerId.GE.GAD_TR1
363 ELSEIF( tracerId.GE.GAD_TR1
364 & .AND. tracerId.LT.GAD_TR1+PTRACERS_num ) THEN
365 c WRITE(GAD_DIAG_SUFX,'(A,A2)')
366 c & 'Tr', PTRACERS_ioLabel( tracerId+1-GAD_TR1 )
367 GAD_DIAG_SUFX = 'Tr'//PTRACERS_ioLabel( tracerId+1-GAD_TR1 )
368 #endif /* ALLOW_PTRACERS */
369 ELSE
370 GAD_DIAG_SUFX = 'aaaa'
371 ENDIF
372
373 RETURN
374 END

  ViewVC Help
Powered by ViewVC 1.1.22