/[MITgcm]/MITgcm/pkg/ptracers/ptracers_diagnostics_init.F
ViewVC logotype

Contents of /MITgcm/pkg/ptracers/ptracers_diagnostics_init.F

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


Revision 1.11 - (show annotations) (download)
Fri Jul 18 22:17:28 2014 UTC (9 years, 11 months ago) by jmc
Branch: MAIN
CVS Tags: 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.10: +53 -39 lines
- In ptracer diagnostics title, put ptracers short name (PTRACERS_names)
  instead of long name (which can get strangely truncated), except for
  the tracer itself.
- use function DIAGS_MK_UNITS to make the diagnostics units.

1 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_diagnostics_init.F,v 1.10 2011/11/07 20:22:33 jmc Exp $
2 C $Name: $
3
4 #include "PTRACERS_OPTIONS.h"
5
6 CBOP
7 C !ROUTINE: PTRACERS_DIAGNOSTICS_INIT
8 C !INTERFACE:
9 SUBROUTINE PTRACERS_DIAGNOSTICS_INIT( myThid )
10
11 C !DESCRIPTION:
12 C Routine to initialize pTracers diagnostics
13
14 C !USES:
15 IMPLICIT NONE
16 C === Global variables ===
17 #include "SIZE.h"
18 #include "PTRACERS_SIZE.h"
19 #include "EEPARAMS.h"
20 #include "PARAMS.h"
21 #include "PTRACERS_PARAMS.h"
22 #include "GAD.h"
23
24 C !INPUT/OUTPUT PARAMETERS:
25 C === Routine arguments ===
26 C myThid :: my Thread Id. number
27 INTEGER myThid
28 CEOP
29
30 #ifdef ALLOW_DIAGNOSTICS
31 C !FUNCTIONS:
32 INTEGER ILNBLNK
33 EXTERNAL ILNBLNK
34 CHARACTER*4 GAD_DIAG_SUFX
35 EXTERNAL GAD_DIAG_SUFX
36 CHARACTER*16 DIAGS_MK_UNITS
37 EXTERNAL DIAGS_MK_UNITS
38
39 C !LOCAL VARIABLES:
40 C === Local variables ===
41 C msgBuf :: Informational/error message buffer
42 c CHARACTER*(MAX_LEN_MBUF) msgBuf
43 INTEGER diagNum
44 INTEGER diagMate
45 CHARACTER*8 diagName
46 CHARACTER*16 diagCode
47 CHARACTER*16 diagUnits
48 CHARACTER*(80) diagTitle
49
50 INTEGER iTrc, ilnb, ilng, tracerId
51 CHARACTER*7 trcUnits
52 CHARACTER*9 flxUnits, wUnits
53 CHARACTER*30 locName
54 CHARACTER*60 longName
55 CHARACTER*4 diagSufx
56
57 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
58
59 C-- Add diagnostics to the (long) list
60
61 IF ( usingPCoords ) THEN
62 flxUnits = '.Pa.m^2/s'
63 wUnits = '.Pa/s '
64 ELSE
65 flxUnits = '.m^3/s '
66 wUnits = '.m/s '
67 ENDIF
68
69 DO iTrc=1,PTRACERS_num
70 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
71
72 C-- Set default name & tracer Units:
73 WRITE(locName,'(A,I4.4,A)') 'Tracer ',iTrc
74 trcUnits = 'kg/kg '
75 C- use units & names from data.ptracers :
76 ilnb = ILNBLNK(PTRACERS_units(iTrc))
77 IF ( ilnb.GE.1 ) THEN
78 ilnb = LEN(trcUnits)
79 trcUnits = PTRACERS_units(iTrc)(1:ilnb)
80 ENDIF
81 ilnb = ILNBLNK(PTRACERS_names(iTrc))
82 IF ( ilnb.GE.1 ) THEN
83 ilnb = MIN(LEN(locName),ilnb)
84 WRITE(locName,'(A)') PTRACERS_names(iTrc)(1:ilnb)
85 ENDIF
86 ilnb = MAX(ILNBLNK(locName),1)
87 C- long name:
88 WRITE(longName,'(A)') locName
89 ilng = ILNBLNK(PTRACERS_long_names(iTrc))
90 IF ( ilng.GE.1 ) THEN
91 ilng = MIN(LEN(longName),ilng)
92 WRITE(longName,'(A)') PTRACERS_long_names(iTrc)(1:ilng)
93 ENDIF
94 ilng = MAX(ILNBLNK(longName),1)
95
96 C-- Add diagnostics of Tracer concentration & u,v,w Transport
97 WRITE(diagName,'(A4,A2,A2)') 'TRAC',PTRACERS_ioLabel(iTrc),' '
98 WRITE(diagTitle,'(2A)') longName(1:ilng), ' concentration'
99 WRITE(diagUnits,'(A)') trcUnits
100 diagCode = 'SMR MR '
101 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
102 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
103
104 diagUnits = DIAGS_MK_UNITS( trcUnits//'.m/s', myThid )
105 WRITE(diagName,'(A5,A2,A1)') 'UTRAC',PTRACERS_ioLabel(iTrc),' '
106 WRITE(diagTitle,'(2A)') 'Zonal Mass-Weighted Transp of ',
107 & locName(1:ilnb)
108 diagCode = 'UUr MR '
109 diagMate = diagNum + 2
110 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
111 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
112
113 WRITE(diagName,'(A5,A2,A1)') 'VTRAC',PTRACERS_ioLabel(iTrc),' '
114 WRITE(diagTitle,'(2A)') 'Merid Mass-Weighted Transp of ',
115 & locName(1:ilnb)
116 diagCode = 'VVr MR '
117 diagMate = diagNum
118 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
119 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
120
121 diagUnits = DIAGS_MK_UNITS( trcUnits//wUnits, myThid )
122 WRITE(diagName,'(A5,A2,A1)') 'WTRAC',PTRACERS_ioLabel(iTrc),' '
123 WRITE(diagTitle,'(2A)') 'Vert Mass-Weighted Transp of ',
124 & locName(1:ilnb)
125 diagCode = 'WM MR '
126 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
127 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
128
129 C-- add diagnostics for Forcing and Adams-Bashforth tendency increment
130 tracerId = iTrc + GAD_TR1 - 1
131 diagSufx = GAD_DIAG_SUFX( tracerId, myThid )
132 diagUnits = DIAGS_MK_UNITS( trcUnits//'/s', myThid )
133 diagName = 'Forc'//diagSufx
134 WRITE(diagTitle,'(2A)') locName(1:ilnb),
135 & ' forcing tendency'
136 diagCode = 'SMR MR '
137 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
138 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
139
140 diagName = 'AB_g'//diagSufx
141 WRITE(diagTitle,'(2A)') locName(1:ilnb),
142 & ' tendency from Adams-Bashforth'
143 diagCode = 'SMR MR '
144 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
145 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
146
147 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
148
149 C-- Add diagnostics of advective & diffusive flux:
150 diagUnits = DIAGS_MK_UNITS( trcUnits//flxUnits, myThid )
151
152 C- Advective flux:
153 diagName = 'ADVr'//diagSufx
154 WRITE(diagTitle,'(2A)') 'Vertical Advective Flux of ',
155 & locName(1:ilnb)
156 diagCode = 'WM LR '
157 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
158 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
159 diagName = 'ADVx'//diagSufx
160 WRITE(diagTitle,'(2A)') 'Zonal Advective Flux of ',
161 & locName(1:ilnb)
162 diagCode = 'UU MR '
163 diagMate = diagNum + 2
164 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
165 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
166 diagName = 'ADVy'//diagSufx
167 WRITE(diagTitle,'(2A)') 'Meridional Advective Flux of ',
168 & locName(1:ilnb)
169 diagCode = 'VV MR '
170 diagMate = diagNum
171 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
172 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
173
174 C- Diffusive flux:
175 diagName = 'DFrE'//diagSufx
176 WRITE(diagTitle,'(2A)') 'Vertical Diffusive Flux of ',
177 & locName(1:ilnb)//' (Explicit part)'
178 diagCode = 'WM LR '
179 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
180 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
181 diagName = 'DFxE'//diagSufx
182 WRITE(diagTitle,'(2A)') 'Zonal Diffusive Flux of ',
183 & locName(1:ilnb)
184 diagCode = 'UU MR '
185 diagMate = diagNum + 2
186 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
187 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
188 diagName = 'DFyE'//diagSufx
189 WRITE(diagTitle,'(2A)') 'Meridional Diffusive Flux of ',
190 & locName(1:ilnb)
191 diagCode = 'VV MR '
192 diagMate = diagNum
193 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
194 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
195
196 diagName = 'DFrI'//diagSufx
197 WRITE(diagTitle,'(2A)') 'Vertical Diffusive Flux of ',
198 & locName(1:ilnb)//' (Implicit part)'
199 diagCode = 'WM LR '
200 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
201 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
202
203 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
204
205 C-- Add diagnostics for other pkg contribution to ptracer solution
206 IF ( useKPP ) THEN
207 diagName = 'KPPg'//diagSufx
208 WRITE(diagTitle,'(2A)') 'KPP non-local Flux of ',
209 & locName(1:ilnb)
210 diagCode = 'WM LR '
211 diagUnits = DIAGS_MK_UNITS( trcUnits//flxUnits, myThid )
212 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
213 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
214 ENDIF
215
216 IF ( useDOWN_SLOPE ) THEN
217 diagName = 'DSLP'//diagSufx
218 WRITE(diagTitle,'(2A)') locName(1:ilnb),
219 & ' tendency from Down-Slope package'
220 diagCode = 'SMR MR '
221 diagUnits = DIAGS_MK_UNITS( trcUnits//'/s', myThid )
222 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
223 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
224 ENDIF
225
226 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
227 ENDDO
228
229 diagName = 'Add2EmP '
230 diagTitle = 'additional EmP from salt relaxation'
231 diagUnits = 'kg/m^2/s '
232 diagCode = 'SM U1 '
233 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
234 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
235
236 #endif /* ALLOW_DIAGNOSTICS */
237
238 RETURN
239 END

  ViewVC Help
Powered by ViewVC 1.1.22