1 |
dimitri |
1.1 |
C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_diagnostics_init.F,v 1.33 2012/02/16 01:22:02 gforget Exp $ |
2 |
|
|
C $Name: $ |
3 |
|
|
|
4 |
|
|
#include "SEAICE_OPTIONS.h" |
5 |
|
|
|
6 |
|
|
C-- File seaice_diagnostics_init.F: Routines initialize SEAICE diagnostics |
7 |
|
|
C-- Contents |
8 |
|
|
C-- o SEAICE_DIAGNOSTICS_INIT |
9 |
|
|
C-- o SEAICE_DIAG_SUFX |
10 |
|
|
|
11 |
|
|
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
12 |
|
|
CBOP |
13 |
|
|
C !ROUTINE: SEAICE_DIAGNOSTICS_INIT |
14 |
|
|
C !INTERFACE: |
15 |
|
|
SUBROUTINE SEAICE_DIAGNOSTICS_INIT( myThid ) |
16 |
|
|
|
17 |
|
|
C !DESCRIPTION: \bv |
18 |
|
|
C *==========================================================* |
19 |
|
|
C | SUBROUTINE SEAICE_DIAGNOSTICS_INIT |
20 |
|
|
C | o Routine to initialize list of all available diagnostics |
21 |
|
|
C | for SEAICE package |
22 |
|
|
C *==========================================================* |
23 |
|
|
C \ev |
24 |
|
|
C !USES: |
25 |
|
|
IMPLICIT NONE |
26 |
|
|
|
27 |
|
|
C === Global variables === |
28 |
|
|
#include "EEPARAMS.h" |
29 |
|
|
#include "SIZE.h" |
30 |
|
|
#include "SEAICE_SIZE.h" |
31 |
|
|
#include "SEAICE_PARAMS.h" |
32 |
|
|
#include "SEAICE_TRACER.h" |
33 |
|
|
|
34 |
|
|
C !INPUT/OUTPUT PARAMETERS: |
35 |
|
|
C === Routine arguments === |
36 |
|
|
C myThid :: my Thread Id number |
37 |
|
|
INTEGER myThid |
38 |
|
|
CEOP |
39 |
|
|
|
40 |
|
|
#ifdef ALLOW_DIAGNOSTICS |
41 |
|
|
C !LOCAL VARIABLES: |
42 |
|
|
C === Local variables === |
43 |
|
|
C diagNum :: diagnostics number in the (long) list of available diag. |
44 |
|
|
C diagMate :: diag. mate number in the (long) list of available diag. |
45 |
|
|
C diagName :: local short name (8c) of a diagnostics |
46 |
|
|
C diagCode :: local parser field with characteristics of the diagnostics |
47 |
|
|
C cf head of S/R DIAGNOSTICS_INIT_EARLY or DIAGNOSTICS_MAIN_INIT |
48 |
|
|
C diagUnits :: local string (16c): physical units of a diagnostic field |
49 |
|
|
C diagTitle :: local string (80c): description of field in diagnostic |
50 |
|
|
INTEGER diagNum |
51 |
|
|
INTEGER diagMate |
52 |
|
|
CHARACTER*8 diagName |
53 |
|
|
CHARACTER*16 diagCode |
54 |
|
|
CHARACTER*16 diagUnits |
55 |
|
|
CHARACTER*(80) diagTitle |
56 |
|
|
|
57 |
|
|
#ifdef ALLOW_SITRACER |
58 |
|
|
INTEGER iTr, ilnb, numMateTr, numMateTrPreTh |
59 |
|
|
CHARACTER*8 locUnitTr |
60 |
|
|
CHARACTER*30 locNameTr |
61 |
|
|
#endif |
62 |
|
|
INTEGER numArea,numAreaPreTh,numHeff,numHeffPreTh |
63 |
|
|
CHARACTER*9 flxUnits |
64 |
|
|
CHARACTER*15 locName |
65 |
|
|
CHARACTER*4 SEAICE_DIAG_SUFX, diagSufx |
66 |
|
|
c EXTERNAL SEAICE_DIAG_SUFX |
67 |
|
|
C Functions :: |
68 |
|
|
INTEGER ILNBLNK |
69 |
|
|
EXTERNAL ILNBLNK |
70 |
|
|
|
71 |
|
|
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
72 |
|
|
|
73 |
|
|
|
74 |
|
|
C=============== state variables ============ |
75 |
|
|
|
76 |
|
|
diagName = 'SIarea ' |
77 |
|
|
diagTitle = 'SEAICE fractional ice-covered area [0 to 1]' |
78 |
|
|
diagUnits = 'm^2/m^2 ' |
79 |
|
|
diagCode = 'SM M1 ' |
80 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
81 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
82 |
|
|
numArea = diagNum |
83 |
|
|
|
84 |
|
|
diagName = 'SIareaPR' |
85 |
|
|
diagTitle = 'SIarea preceeding ridging process' |
86 |
|
|
diagUnits = 'm^2/m^2 ' |
87 |
|
|
diagCode = 'SM M1 ' |
88 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
89 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
90 |
|
|
|
91 |
|
|
diagName = 'SIareaPT' |
92 |
|
|
diagTitle = 'SIarea preceeding thermodynamic growth/melt' |
93 |
|
|
diagUnits = 'm^2/m^2 ' |
94 |
|
|
diagCode = 'SM M1 ' |
95 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
96 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
97 |
|
|
numAreaPreTh = diagNum |
98 |
|
|
|
99 |
|
|
diagName = 'SIheff ' |
100 |
|
|
diagTitle = 'SEAICE effective ice thickness' |
101 |
|
|
diagUnits = 'm ' |
102 |
|
|
diagCode = 'SM M1 ' |
103 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
104 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
105 |
|
|
numHeff = diagNum |
106 |
|
|
|
107 |
|
|
diagName = 'SIheffPT' |
108 |
|
|
diagTitle = 'SIheff preceeeding thermodynamic growth/melt' |
109 |
|
|
diagUnits = 'm ' |
110 |
|
|
diagCode = 'SM M1 ' |
111 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
112 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
113 |
|
|
numHeffPreTh = diagNum |
114 |
|
|
|
115 |
|
|
diagName = 'SIhsnow ' |
116 |
|
|
diagTitle = 'SEAICE effective snow thickness' |
117 |
|
|
diagUnits = 'm ' |
118 |
|
|
diagCode = 'SM M1 ' |
119 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
120 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
121 |
|
|
|
122 |
|
|
diagName = 'SIhsnoPT' |
123 |
|
|
diagTitle = 'SIhsnow preceeeding thermodynamic growth/melt' |
124 |
|
|
diagUnits = 'm ' |
125 |
|
|
diagCode = 'SM M1 ' |
126 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
127 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
128 |
|
|
|
129 |
|
|
diagName = 'SIhsalt ' |
130 |
|
|
diagTitle = 'SEAICE effective salinity' |
131 |
|
|
diagUnits = 'g/m^2 ' |
132 |
|
|
diagCode = 'SM M1 ' |
133 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
134 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
135 |
|
|
|
136 |
|
|
#ifdef ALLOW_SITRACER |
137 |
|
|
DO iTr = 1, SItrNumInUse |
138 |
|
|
|
139 |
|
|
C-- Set default name & tracer Units: |
140 |
|
|
WRITE(locNameTr,'(A,I4.4,A)') 'sea ice tracer no. ',iTr |
141 |
|
|
if (SItrMate(iTr).EQ.'HEFF') then |
142 |
|
|
locUnitTr = '(kg/kg) ' |
143 |
|
|
numMateTr = numHeff |
144 |
|
|
numMateTrPreTh = numHeffPreTh |
145 |
|
|
else |
146 |
|
|
locUnitTr = '(kg/m^2)' |
147 |
|
|
numMateTr = numArea |
148 |
|
|
numMateTrPreTh = numAreaPreTh |
149 |
|
|
endif |
150 |
|
|
C- use name & units from data.seaice : |
151 |
|
|
ilnb = ILNBLNK(SItrUnit(iTr)) |
152 |
|
|
IF ( ilnb.GE.1 ) THEN |
153 |
|
|
ilnb = LEN(locUnitTr) |
154 |
|
|
locUnitTr = SItrUnit(iTr)(1:ilnb) |
155 |
|
|
ENDIF |
156 |
|
|
ilnb = ILNBLNK(SItrNameLong(iTr)) |
157 |
|
|
IF ( ilnb.GE.1 ) THEN |
158 |
|
|
ilnb = MIN(LEN(locNameTr),ilnb) |
159 |
|
|
WRITE(locNameTr,'(A)') SItrNameLong(iTr)(1:ilnb) |
160 |
|
|
ELSE |
161 |
|
|
ilnb = ILNBLNK(SItrName(iTr)) |
162 |
|
|
IF ( ilnb.GE.1 ) THEN |
163 |
|
|
ilnb = MIN(LEN(locNameTr),ilnb) |
164 |
|
|
WRITE(locNameTr,'(2A)') SItrName(iTr)(1:ilnb),' tracer' |
165 |
|
|
ENDIF |
166 |
|
|
ENDIF |
167 |
|
|
ilnb = MAX(ILNBLNK(locNameTr),1) |
168 |
|
|
|
169 |
|
|
WRITE(diagName,'(A4,I2.2,A2)') 'SItr',iTr,' ' |
170 |
|
|
WRITE(diagTitle,'(4A)') locNameTr(1:ilnb), |
171 |
|
|
& ' (associated with ',SItrMate(iTr),')' |
172 |
|
|
diagUnits = locUnitTr//' ' |
173 |
|
|
diagCode = 'SM C M1 ' |
174 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, diagName, |
175 |
|
|
I diagCode, diagUnits, diagTitle, numMateTr, myThid ) |
176 |
|
|
|
177 |
|
|
WRITE(diagName,'(A4,I2.2,A2)') 'SItr',iTr,'PT' |
178 |
|
|
WRITE(diagTitle,'(A4,I2.2,2A)') 'SItr',iTr, |
179 |
|
|
& ' preceeeding thermodynamic growth/melt' |
180 |
|
|
diagUnits = locUnitTr//' ' |
181 |
|
|
diagCode = 'SM C M1 ' |
182 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, diagName, |
183 |
|
|
I diagCode, diagUnits, diagTitle, numMateTrPreTh, myThid ) |
184 |
|
|
|
185 |
|
|
ENDDO |
186 |
|
|
#endif |
187 |
|
|
|
188 |
|
|
diagName = 'SItices ' |
189 |
|
|
diagTitle = 'Surface Temperature over Sea-Ice (area weighted)' |
190 |
|
|
diagUnits = 'K ' |
191 |
|
|
diagCode = 'SM C M1 ' |
192 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
193 |
|
|
I diagName, diagCode, diagUnits, diagTitle, numArea, myThid ) |
194 |
|
|
|
195 |
|
|
diagName = 'SIuice ' |
196 |
|
|
diagTitle = 'SEAICE zonal ice velocity, >0 from West to East' |
197 |
|
|
diagUnits = 'm/s ' |
198 |
|
|
#ifdef SEAICE_CGRID |
199 |
|
|
diagCode = 'UU M1 ' |
200 |
|
|
#else |
201 |
|
|
diagCode = 'UZ M1 ' |
202 |
|
|
#endif |
203 |
|
|
diagMate = diagNum + 2 |
204 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
205 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
206 |
|
|
|
207 |
|
|
diagName = 'SIvice ' |
208 |
|
|
diagTitle = 'SEAICE merid. ice velocity, >0 from South to North' |
209 |
|
|
diagUnits = 'm/s ' |
210 |
|
|
#ifdef SEAICE_CGRID |
211 |
|
|
diagCode = 'VV M1 ' |
212 |
|
|
#else |
213 |
|
|
diagCode = 'VZ M1 ' |
214 |
|
|
#endif |
215 |
|
|
diagMate = diagNum |
216 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
217 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
218 |
|
|
|
219 |
|
|
|
220 |
|
|
C=============== momentum, heat and fresh water forcing ============ |
221 |
|
|
|
222 |
|
|
C pkg/diagnostics SIfu and oceTAUX, dumpfreq FU, and tavefreq FUtave |
223 |
|
|
C are identical but they differ from pkg/diagnostics EXFtaux, which |
224 |
|
|
C is stress before impact of ice. Also when using exf bulk |
225 |
|
|
C formulae, EXFtaux is defined on tracer rather than uvel points. |
226 |
|
|
diagName = 'SIfu ' |
227 |
|
|
diagTitle = 'SEAICE zonal surface wind stress, >0 increases uVel ' |
228 |
|
|
diagUnits = 'N/m^2 ' |
229 |
|
|
diagCode = 'UU U1 ' |
230 |
|
|
diagMate = diagNum + 2 |
231 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
232 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
233 |
|
|
|
234 |
|
|
C pkg/diagnostics SIfv and oceTAUY, dumpfreq FV, and tavefreq FVtave |
235 |
|
|
C are identical but they differ from pkg/diagnostics EXFtauy, which |
236 |
|
|
C is stress before impact of ice. Also when using exf bulk |
237 |
|
|
C formulae, EXFtauy is defined on tracer rather than vvel points. |
238 |
|
|
diagName = 'SIfv ' |
239 |
|
|
diagTitle = 'SEAICE merid. surface wind stress, >0 increases vVel' |
240 |
|
|
diagUnits = 'N/m^2 ' |
241 |
|
|
diagCode = 'VV U1 ' |
242 |
|
|
diagMate = diagNum |
243 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
244 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
245 |
|
|
|
246 |
|
|
diagName = 'SIuwind ' |
247 |
|
|
diagTitle = 'SEAICE zonal 10-m wind speed, >0 increases uVel' |
248 |
|
|
diagUnits = 'm/s ' |
249 |
|
|
diagCode = 'UM U1 ' |
250 |
|
|
diagMate = diagNum + 2 |
251 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
252 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
253 |
|
|
|
254 |
|
|
diagName = 'SIvwind ' |
255 |
|
|
diagTitle = 'SEAICE meridional 10-m wind speed, >0 increases uVel' |
256 |
|
|
diagUnits = 'm/s ' |
257 |
|
|
diagCode = 'VM U1 ' |
258 |
|
|
diagMate = diagNum |
259 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
260 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
261 |
|
|
|
262 |
|
|
C SIqnet, Qnet, and QNETtave are identical. |
263 |
|
|
C With #undef NONLIN_FRSURF SIqnet is identical to -(TFLUX-TRELAX). |
264 |
|
|
C Except over land and under sea ice, SIqnet is also identical to |
265 |
|
|
C EXFlwnet+EXFswnet-EXFhl-EXFhs. |
266 |
|
|
diagName = 'SIqnet ' |
267 |
|
|
diagTitle = 'Ocean surface heatflux, turb+rad, >0 decreases theta' |
268 |
|
|
diagUnits = 'W/m^2 ' |
269 |
|
|
diagCode = 'SM U1 ' |
270 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
271 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
272 |
|
|
|
273 |
|
|
C SIqsw, Qsw, and QSWtave are identical. |
274 |
|
|
C Except under sea ice, SIqsw is also identical to EXFswnet. |
275 |
|
|
diagName = 'SIqsw ' |
276 |
|
|
diagTitle = 'Ocean surface shortwave radiat., >0 decreases theta' |
277 |
|
|
diagUnits = 'W/m^2 ' |
278 |
|
|
diagCode = 'SM U1 ' |
279 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
280 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
281 |
|
|
|
282 |
|
|
diagName = 'SIatmQnt' |
283 |
|
|
diagTitle = 'Net atmospheric heat flux, >0 decreases theta' |
284 |
|
|
diagUnits = 'W/m^2 ' |
285 |
|
|
diagCode = 'SM U1 ' |
286 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
287 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
288 |
|
|
|
289 |
|
|
diagName = 'SItflux ' |
290 |
|
|
diagTitle = 'Same as TFLUX but incl seaice (>0 incr T decr H)' |
291 |
|
|
diagUnits = 'W/m^2 ' |
292 |
|
|
diagCode = 'SM U1 ' |
293 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
294 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
295 |
|
|
|
296 |
|
|
#ifndef SEAICE_DISABLE_HEATCONSFIX |
297 |
|
|
diagName = 'SIaaflux' |
298 |
|
|
diagTitle = 'conservative ocn<->seaice adv. heat flux adjust.' |
299 |
|
|
diagUnits = 'W/m^2 ' |
300 |
|
|
diagCode = 'SM U1 ' |
301 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
302 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
303 |
|
|
#endif |
304 |
|
|
|
305 |
|
|
diagName = 'SIhl ' |
306 |
|
|
diagTitle = 'Latent heat flux into ocean, >0 increases theta' |
307 |
|
|
diagUnits = 'W/m^2 ' |
308 |
|
|
diagCode = 'SM U1 ' |
309 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
310 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
311 |
|
|
|
312 |
|
|
diagName = 'SIqneto ' |
313 |
|
|
diagTitle = 'Open Ocean Part of SIqnet, turb+rad, >0 decr theta' |
314 |
|
|
diagUnits = 'W/m^2 ' |
315 |
|
|
diagCode = 'SM U1 ' |
316 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
317 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
318 |
|
|
|
319 |
|
|
diagName = 'SIqneti ' |
320 |
|
|
diagTitle = 'Ice Covered Part of SIqnet, turb+rad, >0 decr theta' |
321 |
|
|
diagUnits = 'W/m^2 ' |
322 |
|
|
diagCode = 'SM U1 ' |
323 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
324 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
325 |
|
|
|
326 |
|
|
C pkg/diagnostics SIempmr, dumpfreq EmPmR, and tavefreq EmPmRtave |
327 |
|
|
C are identical but they differ from pkg/diagnostics EXFempmr, which |
328 |
|
|
C is EmPmR before impact of ice. |
329 |
|
|
diagName = 'SIempmr ' |
330 |
|
|
diagTitle = 'Ocean surface freshwater flux, > 0 increases salt' |
331 |
|
|
diagUnits = 'kg/m^2/s ' |
332 |
|
|
diagCode = 'SM U1 ' |
333 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
334 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
335 |
|
|
|
336 |
|
|
diagName = 'SIatmFW ' |
337 |
|
|
diagTitle = 'Net freshwater flux from atmosphere & land (+=down)' |
338 |
|
|
diagUnits = 'kg/m^2/s ' |
339 |
|
|
diagCode = 'SM U1 ' |
340 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
341 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
342 |
|
|
|
343 |
|
|
diagName = 'SIsnPrcp' |
344 |
|
|
diagTitle = 'Snow precip. (+=dw) over Sea-Ice (area weighted)' |
345 |
|
|
diagUnits = 'kg/m^2/s ' |
346 |
|
|
diagCode = 'SM U1 ' |
347 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
348 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
349 |
|
|
|
350 |
|
|
diagName = 'SIfwSubl' |
351 |
|
|
diagTitle ='Potential sublimation freshwater flux, >0 decr. ice' |
352 |
|
|
diagUnits = 'kg/m^2/s ' |
353 |
|
|
diagCode = 'SM U1 ' |
354 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
355 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
356 |
|
|
|
357 |
|
|
diagName = 'SIacSubl' |
358 |
|
|
diagTitle = 'Actual sublimation freshwater flux, >0 decr. ice' |
359 |
|
|
diagUnits = 'kg/m^2/s ' |
360 |
|
|
diagCode = 'SM U1 ' |
361 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
362 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
363 |
|
|
|
364 |
|
|
diagName = 'SIrsSubl' |
365 |
|
|
diagTitle = 'Residual subl. freshwater flux, >0 taken from ocn' |
366 |
|
|
diagUnits = 'kg/m^2/s ' |
367 |
|
|
diagCode = 'SM U1 ' |
368 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
369 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
370 |
|
|
|
371 |
|
|
diagName = 'SIactLHF' |
372 |
|
|
diagTitle = 'Actual latent heat flux over ice' |
373 |
|
|
diagUnits = 'W/m^2 ' |
374 |
|
|
diagCode = 'SM U1 ' |
375 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
376 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
377 |
|
|
|
378 |
|
|
diagName = 'SImaxLHF' |
379 |
|
|
diagTitle = 'Maximum latent heat flux over ice' |
380 |
|
|
diagUnits = 'W/m^2 ' |
381 |
|
|
diagCode = 'SM U1 ' |
382 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
383 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
384 |
|
|
|
385 |
|
|
#ifdef ALLOW_SITRACER |
386 |
|
|
DO iTr = 1, SItrNumInUse |
387 |
|
|
IF (SItrMate(iTr).EQ.'HEFF') then |
388 |
|
|
C-- Set default name & tracer Units: |
389 |
|
|
WRITE(diagUnits,'(A)') 'kg/m^2/s' |
390 |
|
|
C-- use units from data.seaice : |
391 |
|
|
ilnb = ILNBLNK(SItrUnit(iTr)) |
392 |
|
|
IF ( ilnb.GE.1 ) THEN |
393 |
|
|
WRITE(diagUnits,'(2A)') SItrUnit(iTr)(1:ilnb),'.kg/m^2/s' |
394 |
|
|
ENDIF |
395 |
|
|
C-- |
396 |
|
|
WRITE(diagName,'(A4,I2.2,A2)') 'SItr',iTr,'Fx' |
397 |
|
|
WRITE(diagTitle,'(A4,I2.2,A)') 'SItr',iTr, |
398 |
|
|
I ' flux out of ice pack (that may enter ocean)' |
399 |
|
|
diagCode = 'SM M1 ' |
400 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, diagName, |
401 |
|
|
I diagCode, diagUnits, diagTitle, 0, myThid ) |
402 |
|
|
|
403 |
|
|
ENDIF |
404 |
|
|
ENDDO |
405 |
|
|
#endif |
406 |
|
|
|
407 |
|
|
C============== ice growth/melt ============== |
408 |
|
|
|
409 |
|
|
diagName = 'SIaQbOCN' |
410 |
|
|
diagTitle = 'Potential HEFF rate of change by ocean ice flux' |
411 |
|
|
diagUnits = 'm/s ' |
412 |
|
|
diagCode = 'SM M1 ' |
413 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
414 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
415 |
|
|
|
416 |
|
|
diagName = 'SIaQbATC' |
417 |
|
|
diagTitle = 'Potential HEFF rate of change by atm flux over ice' |
418 |
|
|
diagUnits = 'm/s ' |
419 |
|
|
diagCode = 'SM M1 ' |
420 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
421 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
422 |
|
|
|
423 |
|
|
diagName = 'SIaQbATO' |
424 |
|
|
diagTitle = 'Potential HEFF rate of change by open ocn atm flux' |
425 |
|
|
diagUnits = 'm/s ' |
426 |
|
|
diagCode = 'SM M1 ' |
427 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
428 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
429 |
|
|
|
430 |
|
|
diagName = 'SIdHbOCN' |
431 |
|
|
diagTitle = 'HEFF rate of change by ocean ice flux' |
432 |
|
|
diagUnits = 'm/s ' |
433 |
|
|
diagCode = 'SM M1 ' |
434 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
435 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
436 |
|
|
|
437 |
|
|
diagName = 'SIdSbATC' |
438 |
|
|
diagTitle = 'HSNOW rate of change by atm flux over sea ice' |
439 |
|
|
diagUnits = 'm/s ' |
440 |
|
|
diagCode = 'SM M1 ' |
441 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
442 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
443 |
|
|
|
444 |
|
|
diagName = 'SIdSbOCN' |
445 |
|
|
diagTitle = 'HSNOW rate of change by ocean ice flux' |
446 |
|
|
diagUnits = 'm/s ' |
447 |
|
|
diagCode = 'SM M1 ' |
448 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
449 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
450 |
|
|
|
451 |
|
|
diagName = 'SIdHbATC' |
452 |
|
|
diagTitle = 'HEFF rate of change by atm flux over sea ice' |
453 |
|
|
diagUnits = 'm/s ' |
454 |
|
|
diagCode = 'SM M1 ' |
455 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
456 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
457 |
|
|
|
458 |
|
|
diagName = 'SIdHbATO' |
459 |
|
|
diagTitle = 'HEFF rate of change by open ocn atm flux' |
460 |
|
|
diagUnits = 'm/s ' |
461 |
|
|
diagCode = 'SM M1 ' |
462 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
463 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
464 |
|
|
|
465 |
|
|
diagName = 'SIdHbFLO' |
466 |
|
|
diagTitle = 'HEFF rate of change by flooding snow' |
467 |
|
|
diagUnits = 'm/s ' |
468 |
|
|
diagCode = 'SM M1 ' |
469 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
470 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
471 |
|
|
|
472 |
|
|
C=============== expansion/contraction ============ |
473 |
|
|
|
474 |
|
|
diagName = 'SIdAbATO' |
475 |
|
|
diagTitle = 'Potential AREA rate of change by open ocn atm flux' |
476 |
|
|
diagUnits = 'm^2/m^2/s ' |
477 |
|
|
diagCode = 'SM M1 ' |
478 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
479 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
480 |
|
|
|
481 |
|
|
diagName = 'SIdAbATC' |
482 |
|
|
diagTitle = 'Potential AREA rate of change by atm flux over ice' |
483 |
|
|
diagUnits = 'm^2/m^2/s ' |
484 |
|
|
diagCode = 'SM M1 ' |
485 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
486 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
487 |
|
|
|
488 |
|
|
diagName = 'SIdAbOCN' |
489 |
|
|
diagTitle = 'Potential AREA rate of change by ocean ice flux' |
490 |
|
|
diagUnits = 'm^2/m^2/s ' |
491 |
|
|
diagCode = 'SM M1 ' |
492 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
493 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
494 |
|
|
|
495 |
|
|
diagName = 'SIdA' |
496 |
|
|
diagTitle = 'AREA rate of change (net)' |
497 |
|
|
diagUnits = 'm^2/m^2/s ' |
498 |
|
|
diagCode = 'SM M1 ' |
499 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
500 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
501 |
|
|
|
502 |
|
|
C============== advection/diffusion ============ |
503 |
|
|
|
504 |
|
|
C effective thickness |
505 |
|
|
flxUnits = '.m^2/s ' |
506 |
|
|
locName = 'eff ice thickn ' |
507 |
|
|
WRITE(diagUnits,'(2A)') 'm',flxUnits |
508 |
|
|
diagSufx = SEAICE_DIAG_SUFX( GAD_HEFF, myThid ) |
509 |
|
|
|
510 |
|
|
C-- advective flux |
511 |
|
|
diagName = 'ADVx'//diagSufx |
512 |
|
|
diagTitle = 'Zonal Advective Flux of '//locName |
513 |
|
|
diagCode = 'UU M1 ' |
514 |
|
|
diagMate = diagNum + 2 |
515 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
516 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
517 |
|
|
|
518 |
|
|
diagName = 'ADVy'//diagSufx |
519 |
|
|
diagTitle = 'Meridional Advective Flux of '//locName |
520 |
|
|
diagCode = 'VV M1 ' |
521 |
|
|
diagMate = diagNum |
522 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
523 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
524 |
|
|
|
525 |
|
|
diagName = 'SIuheff ' |
526 |
|
|
diagTitle = 'Zonal Transport of eff ice thickn (centered)' |
527 |
|
|
diagUnits = 'm^2/s ' |
528 |
|
|
diagCode = 'UU M1 ' |
529 |
|
|
diagMate = diagNum + 2 |
530 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
531 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
532 |
|
|
|
533 |
|
|
diagName = 'SIvheff ' |
534 |
|
|
diagTitle = 'Meridional Transport of eff ice thickn (centered)' |
535 |
|
|
diagUnits = 'm^2/s ' |
536 |
|
|
diagCode = 'VV M1 ' |
537 |
|
|
diagMate = diagNum |
538 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
539 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
540 |
|
|
|
541 |
|
|
C-- Diffusive flux: |
542 |
|
|
diagName = 'DFxE'//diagSufx |
543 |
|
|
diagTitle = 'Zonal Diffusive Flux of '//locName |
544 |
|
|
diagCode = 'UU M1 ' |
545 |
|
|
diagMate = diagNum + 2 |
546 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
547 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
548 |
|
|
|
549 |
|
|
diagName = 'DFyE'//diagSufx |
550 |
|
|
diagTitle = 'Meridional Diffusive Flux of '//locName |
551 |
|
|
diagCode = 'VV M1 ' |
552 |
|
|
diagMate = diagNum |
553 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
554 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
555 |
|
|
|
556 |
|
|
C fractional ice covered area (ice concentration) |
557 |
|
|
locName = 'fract area ' |
558 |
|
|
WRITE(diagUnits,'(2A)') 'm^2/m^2',flxUnits |
559 |
|
|
diagSufx = SEAICE_DIAG_SUFX( GAD_AREA, myThid ) |
560 |
|
|
|
561 |
|
|
C-- advective flux |
562 |
|
|
diagName = 'ADVx'//diagSufx |
563 |
|
|
diagTitle = 'Zonal Advective Flux of '//locName |
564 |
|
|
diagCode = 'UU M1 ' |
565 |
|
|
diagMate = diagNum + 2 |
566 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
567 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
568 |
|
|
|
569 |
|
|
diagName = 'ADVy'//diagSufx |
570 |
|
|
diagTitle = 'Meridional Advective Flux of '//locName |
571 |
|
|
diagCode = 'VV M1 ' |
572 |
|
|
diagMate = diagNum |
573 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
574 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
575 |
|
|
|
576 |
|
|
C-- Diffusive flux: |
577 |
|
|
diagName = 'DFxE'//diagSufx |
578 |
|
|
diagTitle = 'Zonal Diffusive Flux of '//locName |
579 |
|
|
diagCode = 'UU M1 ' |
580 |
|
|
diagMate = diagNum + 2 |
581 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
582 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
583 |
|
|
|
584 |
|
|
diagName = 'DFyE'//diagSufx |
585 |
|
|
diagTitle = 'Meridional Diffusive Flux of '//locName |
586 |
|
|
diagCode = 'VV M1 ' |
587 |
|
|
diagMate = diagNum |
588 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
589 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
590 |
|
|
|
591 |
|
|
C effective snow thickness |
592 |
|
|
locName = 'eff snow thickn' |
593 |
|
|
WRITE(diagUnits,'(2A)') 'm',flxUnits |
594 |
|
|
diagSufx = SEAICE_DIAG_SUFX( GAD_SNOW, myThid ) |
595 |
|
|
|
596 |
|
|
C-- advective flux |
597 |
|
|
diagName = 'ADVx'//diagSufx |
598 |
|
|
diagTitle = 'Zonal Advective Flux of '//locName |
599 |
|
|
diagCode = 'UU M1 ' |
600 |
|
|
diagMate = diagNum + 2 |
601 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
602 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
603 |
|
|
|
604 |
|
|
diagName = 'ADVy'//diagSufx |
605 |
|
|
diagTitle = 'Meridional Advective Flux of '//locName |
606 |
|
|
diagCode = 'VV M1 ' |
607 |
|
|
diagMate = diagNum |
608 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
609 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
610 |
|
|
|
611 |
|
|
C-- Diffusive flux: |
612 |
|
|
diagName = 'DFxE'//diagSufx |
613 |
|
|
diagTitle = 'Zonal Diffusive Flux of '//locName |
614 |
|
|
diagCode = 'UU M1 ' |
615 |
|
|
diagMate = diagNum + 2 |
616 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
617 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
618 |
|
|
|
619 |
|
|
diagName = 'DFyE'//diagSufx |
620 |
|
|
diagTitle = 'Meridional Diffusive Flux of '//locName |
621 |
|
|
diagCode = 'VV M1 ' |
622 |
|
|
diagMate = diagNum |
623 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
624 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
625 |
|
|
|
626 |
|
|
C sea ice salinity |
627 |
|
|
locName = 'seaice salinity' |
628 |
|
|
WRITE(diagUnits,'(2A)') 'psu',flxUnits |
629 |
|
|
diagSufx = SEAICE_DIAG_SUFX( GAD_SALT, myThid ) |
630 |
|
|
|
631 |
|
|
C-- advective flux |
632 |
|
|
diagName = 'ADVx'//diagSufx |
633 |
|
|
diagTitle = 'Zonal Advective Flux of '//locName |
634 |
|
|
diagCode = 'UU M1 ' |
635 |
|
|
diagMate = diagNum + 2 |
636 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
637 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
638 |
|
|
|
639 |
|
|
diagName = 'ADVy'//diagSufx |
640 |
|
|
diagTitle = 'Meridional Advective Flux of '//locName |
641 |
|
|
diagCode = 'VV M1 ' |
642 |
|
|
diagMate = diagNum |
643 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
644 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
645 |
|
|
|
646 |
|
|
C-- Diffusive flux: |
647 |
|
|
diagName = 'DFxE'//diagSufx |
648 |
|
|
diagTitle = 'Zonal Diffusive Flux of '//locName |
649 |
|
|
diagCode = 'UU M1 ' |
650 |
|
|
diagMate = diagNum + 2 |
651 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
652 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
653 |
|
|
|
654 |
|
|
diagName = 'DFyE'//diagSufx |
655 |
|
|
diagTitle = 'Meridional Diffusive Flux of '//locName |
656 |
|
|
diagCode = 'VV M1 ' |
657 |
|
|
diagMate = diagNum |
658 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
659 |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
660 |
|
|
|
661 |
|
|
C=============== dynamics ============ |
662 |
|
|
|
663 |
|
|
diagName = 'SIpress ' |
664 |
|
|
diagTitle = 'SEAICE strength (with upper and lower limit)' |
665 |
|
|
diagUnits = 'm^2/s^2 ' |
666 |
|
|
diagCode = 'SM M1 ' |
667 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
668 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
669 |
|
|
|
670 |
|
|
diagName = 'SIzeta ' |
671 |
|
|
diagTitle = 'SEAICE nonlinear bulk viscosity' |
672 |
|
|
diagUnits = 'm^2/s ' |
673 |
|
|
diagCode = 'SM M1 ' |
674 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
675 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
676 |
|
|
|
677 |
|
|
diagName = 'SIeta ' |
678 |
|
|
diagTitle = 'SEAICE nonlinear shear viscosity' |
679 |
|
|
diagUnits = 'm^2/s ' |
680 |
|
|
diagCode = 'SM M1 ' |
681 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
682 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
683 |
|
|
|
684 |
|
|
diagName = 'SIsigI ' |
685 |
|
|
diagTitle = 'SEAICE normalized principle stress, component one' |
686 |
|
|
diagUnits = 'no units ' |
687 |
|
|
diagCode = 'SM M1 ' |
688 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
689 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
690 |
|
|
|
691 |
|
|
diagName = 'SIsigII ' |
692 |
|
|
diagTitle = 'SEAICE normalized principle stress, component two' |
693 |
|
|
diagUnits = 'no units ' |
694 |
|
|
diagCode = 'SM M1 ' |
695 |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
696 |
|
|
I diagName, diagCode, diagUnits, diagTitle, 0, myThid ) |
697 |
|
|
|
698 |
|
|
|
699 |
|
|
#endif /* ALLOW_DIAGNOSTICS */ |
700 |
|
|
|
701 |
|
|
RETURN |
702 |
|
|
END |
703 |
|
|
|
704 |
|
|
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
705 |
|
|
CBOP 0 |
706 |
|
|
C !ROUTINE: SEAICE_DIAG_SUFX |
707 |
|
|
|
708 |
|
|
C !INTERFACE: |
709 |
|
|
CHARACTER*4 FUNCTION SEAICE_DIAG_SUFX( tracerId, myThid ) |
710 |
|
|
|
711 |
|
|
C !DESCRIPTION: |
712 |
|
|
C *==========================================================* |
713 |
|
|
C | FUNCTION SEAICE_DIAG_SUFX |
714 |
|
|
C | o Return diagnostic suffix (4 character long) for the |
715 |
|
|
C | "tracerId" tracer (used to build diagnostic names). |
716 |
|
|
C *==========================================================* |
717 |
|
|
|
718 |
|
|
C !USES: |
719 |
|
|
IMPLICIT NONE |
720 |
|
|
#include "EEPARAMS.h" |
721 |
|
|
#include "SEAICE_PARAMS.h" |
722 |
|
|
|
723 |
|
|
C !INPUT PARAMETERS: |
724 |
|
|
C tracerId :: tracer identifier |
725 |
|
|
C myThid :: my thread Id number |
726 |
|
|
INTEGER tracerId |
727 |
|
|
INTEGER myThid |
728 |
|
|
CEOP |
729 |
|
|
|
730 |
|
|
C !LOCAL VARIABLES: |
731 |
|
|
|
732 |
|
|
C-- Set diagnostic suffix (4 character long) for the "tracerId" tracer |
733 |
|
|
IF ( tracerId.EQ.GAD_HEFF ) THEN |
734 |
|
|
SEAICE_DIAG_SUFX = 'HEFF' |
735 |
|
|
ELSEIF( tracerId.EQ.GAD_AREA ) THEN |
736 |
|
|
SEAICE_DIAG_SUFX = 'AREA' |
737 |
|
|
ELSEIF( tracerId.EQ.GAD_SNOW ) THEN |
738 |
|
|
SEAICE_DIAG_SUFX = 'SNOW' |
739 |
|
|
ELSEIF( tracerId.EQ.GAD_SALT ) THEN |
740 |
|
|
SEAICE_DIAG_SUFX = 'SSLT' |
741 |
|
|
ELSE |
742 |
|
|
SEAICE_DIAG_SUFX = 'aaaa' |
743 |
|
|
ENDIF |
744 |
|
|
|
745 |
|
|
RETURN |
746 |
|
|
END |