1 |
C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_init_early.F,v 1.16 2010/01/15 00:24:37 jmc Exp $ |
2 |
C $Name: $ |
3 |
|
4 |
#include "DIAG_OPTIONS.h" |
5 |
|
6 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
7 |
CBOP 0 |
8 |
C !ROUTINE: DIAGNOSTICS_INIT_EARLY |
9 |
|
10 |
C !INTERFACE: |
11 |
SUBROUTINE DIAGNOSTICS_INIT_EARLY( myThid ) |
12 |
|
13 |
C !DESCRIPTION: |
14 |
C Initialize available diagnostics list: set the following attributes: |
15 |
C name (=cdiag), parsing code (=gdiag), units (=udiag), and title (=tdiag) |
16 |
C Note: 1) diagnostics defined here are not presently filled. To use |
17 |
C one of them, one just needs to add a call to S/R DIAGNOSTICS_FILL |
18 |
C with the diagnostic name 'SDIAG...' or 'UDIAG...' |
19 |
C 2) GDIAG is defined as character*16 and can be to character*1 |
20 |
C parse(16) with the following codes currently defined: |
21 |
|
22 |
C \begin{center} |
23 |
C \begin{tabular}[h]{|c|c|}\hline |
24 |
C \textbf{Positions} & \textbf{Characters} |
25 |
C & \textbf{Meanings} \\\hline |
26 |
C parse(1) & S & scalar \\ |
27 |
C & U & vector component in X direction \\ |
28 |
C & V & vector component in Y direction \\ |
29 |
C & W & vector component in vertical direction \\ |
30 |
C parse(2) & U & C-grid U-Point \\ |
31 |
C & V & C-grid V-Point \\ |
32 |
C & M & C-grid Mass Point \\ |
33 |
C & Z & C-grid Corner Point \\ |
34 |
C parse(3) & & Used for Level Integrated output: cumulate levels \\ |
35 |
C & r & same but cumulate product by model level thickness \\ |
36 |
C & R & same but cumulate product by hFac & level thickness \\ |
37 |
C parse(4) & P & positive definite \\ |
38 |
C parse(5 ) & C & with counter array \\ |
39 |
C & P & post-processed (not filled up) from other diags \\ |
40 |
C & D & disable an array for output \\ |
41 |
C parse(6--8) & '123' & retired, formerly: 3-digit mate number \\ |
42 |
C parse(9) & U & model-level plus 1/2 \\ |
43 |
C & M & model-level middle \\ |
44 |
C & L & model-level minus 1/2 \\ |
45 |
C parse(10) & 0 & levels = 0 \\ |
46 |
C & 1 & levels = 1 \\ |
47 |
C & R & levels = Nr \\ |
48 |
C & L & levels = MAX(Nr,NrPhys) \\ |
49 |
C & M & levels = MAX(Nr,NrPhys) - 1 \\ |
50 |
C & G & levels = Ground_level Number \\ |
51 |
C & I & levels = sea-Ice_level Number \\ |
52 |
C & X & free levels option (need to be set explicitly) \\ |
53 |
C \end{tabular} |
54 |
C \end{center} |
55 |
|
56 |
C !USES: |
57 |
IMPLICIT NONE |
58 |
#include "SIZE.h" |
59 |
#include "EEPARAMS.h" |
60 |
#include "PARAMS.h" |
61 |
#include "DIAGNOSTICS_SIZE.h" |
62 |
#include "DIAGNOSTICS.h" |
63 |
|
64 |
C !INPUT PARAMETERS: |
65 |
INTEGER myThid |
66 |
CEOP |
67 |
|
68 |
C !LOCAL VARIABLES: |
69 |
INTEGER n |
70 |
|
71 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
72 |
|
73 |
_BEGIN_MASTER( myThid ) |
74 |
|
75 |
DO n=1,ndiagMax |
76 |
kdiag(n) = 0 |
77 |
hdiag(n) = 0 |
78 |
cdiag(n) = ' ' |
79 |
gdiag(n) = ' ' |
80 |
udiag(n) = ' ' |
81 |
tdiag(n) = ' ' |
82 |
ENDDO |
83 |
|
84 |
C-- Diagnostics definition/setting starts here (can now add diags to list) |
85 |
settingDiags = .TRUE. |
86 |
|
87 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
88 |
C For each output variable, |
89 |
C specify Name (cdiag, 8c), Descriptions (tdiag, *c), Units (udiag, 16c) |
90 |
C and parsing code (location on C grid, 2D/3D, ...) (gdiag, 16c) |
91 |
C---------------------------------------------------------------------- |
92 |
cdiag( 1) = 'SDIAG1 ' |
93 |
tdiag( 1) = 'User-Defined Surface Diagnostic #1 ' |
94 |
udiag( 1) = 'user-defined ' |
95 |
gdiag( 1) = 'SM L1 ' |
96 |
|
97 |
cdiag( 2) = 'SDIAG2 ' |
98 |
tdiag( 2) = 'User-Defined Surface Diagnostic #2 ' |
99 |
udiag( 2) = 'user-defined ' |
100 |
gdiag( 2) = 'SM L1 ' |
101 |
|
102 |
cdiag( 3) = 'SDIAG3 ' |
103 |
tdiag( 3) = 'User-Defined Surface Diagnostic #3 ' |
104 |
udiag( 3) = 'user-defined ' |
105 |
gdiag( 3) = 'SM L1 ' |
106 |
|
107 |
cdiag( 4) = 'SDIAG4 ' |
108 |
tdiag( 4) = 'User-Defined Surface Diagnostic #4 ' |
109 |
udiag( 4) = 'user-defined ' |
110 |
gdiag( 4) = 'SM L1 ' |
111 |
|
112 |
cdiag( 5) = 'SDIAG5 ' |
113 |
tdiag( 5) = 'User-Defined Surface Diagnostic #5 ' |
114 |
udiag( 5) = 'user-defined ' |
115 |
gdiag( 5) = 'SM L1 ' |
116 |
|
117 |
cdiag( 6) = 'SDIAG6 ' |
118 |
tdiag( 6) = 'User-Defined Surface Diagnostic #6 ' |
119 |
udiag( 6) = 'user-defined ' |
120 |
gdiag( 6) = 'SM L1 ' |
121 |
|
122 |
cdiag( 7) = 'SDIAG7 ' |
123 |
tdiag( 7) = 'User-Defined U.pt Surface Diagnostic #7 ' |
124 |
udiag( 7) = 'user-defined ' |
125 |
gdiag( 7) = 'SU L1 ' |
126 |
|
127 |
cdiag( 8) = 'SDIAG8 ' |
128 |
tdiag( 8) = 'User-Defined V.pt Surface Diagnostic #8 ' |
129 |
udiag( 8) = 'user-defined ' |
130 |
gdiag( 8) = 'SV L1 ' |
131 |
|
132 |
cdiag( 9) = 'SDIAG9 ' |
133 |
tdiag( 9) = 'User-Defined U.vector Surface Diag. #9 ' |
134 |
udiag( 9) = 'user-defined ' |
135 |
gdiag( 9) = 'UU L1 ' |
136 |
hdiag( 9) = 10 |
137 |
|
138 |
cdiag(10) = 'SDIAG10 ' |
139 |
tdiag(10) = 'User-Defined V.vector Surface Diag. #10 ' |
140 |
udiag(10) = 'user-defined ' |
141 |
gdiag(10) = 'VV L1 ' |
142 |
hdiag(10) = 9 |
143 |
|
144 |
cdiag(11) = 'UDIAG1 ' |
145 |
tdiag(11) = 'User-Defined Model-Level Diagnostic #1 ' |
146 |
udiag(11) = 'user-defined ' |
147 |
gdiag(11) = 'SM MR ' |
148 |
|
149 |
cdiag(12) = 'UDIAG2 ' |
150 |
tdiag(12) = 'User-Defined Model-Level Diagnostic #2 ' |
151 |
udiag(12) = 'user-defined ' |
152 |
gdiag(12) = 'SM MR ' |
153 |
|
154 |
cdiag(13) = 'UDIAG3 ' |
155 |
tdiag(13) = 'User-Defined Model-Level Diagnostic #3 ' |
156 |
udiag(13) = 'user-defined ' |
157 |
gdiag(13) = 'SMR MR ' |
158 |
|
159 |
cdiag(14) = 'UDIAG4 ' |
160 |
tdiag(14) = 'User-Defined Model-Level Diagnostic #4 ' |
161 |
udiag(14) = 'user-defined ' |
162 |
gdiag(14) = 'SMR MR ' |
163 |
|
164 |
cdiag(15) = 'UDIAG5 ' |
165 |
tdiag(15) = 'User-Defined U.pt Model-Level Diag. #5 ' |
166 |
udiag(15) = 'user-defined ' |
167 |
gdiag(15) = 'SU MR ' |
168 |
|
169 |
cdiag(16) = 'UDIAG6 ' |
170 |
tdiag(16) = 'User-Defined V.pt Model-Level Diag. #6 ' |
171 |
udiag(16) = 'user-defined ' |
172 |
gdiag(16) = 'SV MR ' |
173 |
|
174 |
cdiag(17) = 'UDIAG7 ' |
175 |
tdiag(17) = 'User-Defined U.vector Model-Lev Diag.#7 ' |
176 |
udiag(17) = 'user-defined ' |
177 |
gdiag(17) = 'UUR MR ' |
178 |
hdiag(17) = 18 |
179 |
|
180 |
cdiag(18) = 'UDIAG8 ' |
181 |
tdiag(18) = 'User-Defined V.vector Model-Lev Diag.#8 ' |
182 |
udiag(18) = 'user-defined ' |
183 |
gdiag(18) = 'VVR MR ' |
184 |
hdiag(18) = 17 |
185 |
|
186 |
cdiag(19) = 'UDIAG9 ' |
187 |
tdiag(19) = 'User-Defined Phys-Level Diagnostic #9 ' |
188 |
udiag(19) = 'user-defined ' |
189 |
gdiag(19) = 'SM ML ' |
190 |
|
191 |
cdiag(20) = 'UDIAG10 ' |
192 |
tdiag(20) = 'User-Defined Phys-Level Diagnostic #10 ' |
193 |
udiag(20) = 'user-defined ' |
194 |
gdiag(20) = 'SM ML ' |
195 |
|
196 |
cdiag(21) = 'SDIAGC ' |
197 |
tdiag(21) = 'User-Defined Counted Surface Diagnostic ' |
198 |
udiag(21) = 'user-defined ' |
199 |
gdiag(21) = 'SM C L1 ' |
200 |
hdiag(21) = 22 |
201 |
|
202 |
cdiag(22) = 'SDIAGCC ' |
203 |
tdiag(22) = 'User-Defined Surface Diagnostic Counter ' |
204 |
udiag(22) = 'count ' |
205 |
gdiag(22) = 'SM L1 ' |
206 |
|
207 |
C- set the total number of available diagnostics |
208 |
ndiagt = 22 |
209 |
|
210 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
211 |
|
212 |
_END_MASTER( myThid ) |
213 |
_BARRIER |
214 |
|
215 |
RETURN |
216 |
END |