/[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.4 - (show annotations) (download)
Sat Nov 10 22:09:32 2007 UTC (16 years, 7 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint59m, checkpoint59l, checkpoint59k
Changes since 1.3: +7 -7 lines
use a 2 characters string ioLabel to identify tracers (if more than 99 tracers)

1 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_diagnostics_init.F,v 1.3 2007/11/05 18:48:04 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 C !DESCRIPTION:
11 C Routine to initialize pTracers diagnostics
12
13 C !USES:
14 IMPLICIT NONE
15 C === Global variables ===
16 #include "SIZE.h"
17 #include "PTRACERS_SIZE.h"
18 #include "EEPARAMS.h"
19 #include "PARAMS.h"
20 #include "PTRACERS_PARAMS.h"
21 #include "GAD.h"
22
23 C !INPUT/OUTPUT PARAMETERS:
24 C === Routine arguments ===
25 C myThid - Number of this instance of PTRACERS_DIAGNOSTICS_INIT
26 INTEGER myThid
27 CEOP
28
29 #ifdef ALLOW_DIAGNOSTICS
30 C !LOCAL VARIABLES:
31 C === Local variables ===
32 C msgBuf - Informational/error meesage buffer
33 c CHARACTER*(MAX_LEN_MBUF) msgBuf
34
35 INTEGER diagNum
36 CHARACTER*8 diagName
37 CHARACTER*16 diagCode
38 CHARACTER*16 diagUnits
39 CHARACTER*(80) diagTitle
40
41 INTEGER iTrc, ilnb, tracerId
42 CHARACTER*7 trcUnits
43 CHARACTER*9 flxUnits, wUnits
44 CHARACTER*30 locName
45 CHARACTER*4 diagSufx
46 C Functions ::
47 INTEGER ILNBLNK
48 EXTERNAL ILNBLNK
49 CHARACTER*4 GAD_DIAG_SUFX
50 EXTERNAL GAD_DIAG_SUFX
51
52 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
53
54 C-- Add diagnostics to the (long) list
55
56 IF ( usingPCoords ) THEN
57 flxUnits = '.Pa.m^2/s'
58 wUnits = '.Pa/s '
59 ELSE
60 flxUnits = '.m^3/s '
61 wUnits = '.m/s '
62 ENDIF
63
64 DO iTrc=1,PTRACERS_num
65 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
66 C-- Set default name & tracer Units:
67 WRITE(locName,'(A,I4,A)') 'Tracer ',iTrc
68 trcUnits = '(kg/kg)'
69 C- use name & units from data.ptracers :
70 ilnb = ILNBLNK(PTRACERS_units(iTrc))
71 IF ( ilnb.GE.1 ) THEN
72 ilnb = LEN(trcUnits)
73 trcUnits = PTRACERS_units(iTrc)(1:ilnb)
74 ENDIF
75 ilnb = ILNBLNK(PTRACERS_long_names(iTrc))
76 IF ( ilnb.GE.1 ) THEN
77 ilnb = MIN(LEN(locName),ilnb)
78 WRITE(locName,'(A)') PTRACERS_long_names(iTrc)(1:ilnb)
79 ELSE
80 ilnb = ILNBLNK(PTRACERS_names(iTrc))
81 IF ( ilnb.GE.1 ) THEN
82 ilnb = MIN(LEN(locName),ilnb)
83 WRITE(locName,'(A)') PTRACERS_names(iTrc)(1:ilnb)
84 ENDIF
85 ENDIF
86 ilnb = MAX(ILNBLNK(locName),1)
87
88 C-- Add diagnostics of Tracer concentration & u,v,w Transport
89 WRITE(diagName,'(A4,A2,A2)') 'TRAC',PTRACERS_ioLabel(iTrc),' '
90 WRITE(diagTitle,'(2A)') 'Mass-Weighted ', locName(1:ilnb)
91 diagUnits = trcUnits//' '
92 diagCode = 'SM P MR '
93 CALL DIAGNOSTICS_ADD2LIST( diagNum,
94 I diagName, diagCode, diagUnits, diagTitle, myThid )
95
96 WRITE(diagName,'(A5,A2,A1)') 'UTRAC',PTRACERS_ioLabel(iTrc),' '
97 WRITE(diagTitle,'(2A)') 'Zonal Mass-Weighted Transp of ',
98 & locName(1:ilnb)
99 diagUnits = trcUnits//'.m/s '
100 WRITE(diagCode,'(A,I3.3,A)') 'UU ',diagNum+2,'MR '
101 CALL DIAGNOSTICS_ADD2LIST( diagNum,
102 I diagName, diagCode, diagUnits, diagTitle, myThid )
103
104 WRITE(diagName,'(A5,A2,A1)') 'VTRAC',PTRACERS_ioLabel(iTrc),' '
105 WRITE(diagTitle,'(2A)') 'Merid Mass-Weighted Transp of ',
106 & locName(1:ilnb)
107 diagUnits = trcUnits//'.m/s '
108 WRITE(diagCode,'(A,I3.3,A)') 'VV ',diagNum,'MR '
109 CALL DIAGNOSTICS_ADD2LIST( diagNum,
110 I diagName, diagCode, diagUnits, diagTitle, myThid )
111
112 WRITE(diagName,'(A5,A2,A1)') 'WTRAC',PTRACERS_ioLabel(iTrc),' '
113 WRITE(diagTitle,'(2A)') 'Vert Mass-Weighted Transp of ',
114 & locName(1:ilnb)
115 diagUnits = trcUnits//wUnits
116 diagCode = 'WM MR '
117 CALL DIAGNOSTICS_ADD2LIST( diagNum,
118 I diagName, diagCode, diagUnits, diagTitle, myThid )
119
120 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
121 C-- add diagnostics of advective & diffusive flux:
122 diagUnits = trcUnits//flxUnits
123 tracerId = iTrc + GAD_TR1 - 1
124 diagSufx = GAD_DIAG_SUFX( tracerId, myThid )
125
126 C- Advective flux:
127 diagName = 'ADVr'//diagSufx
128 WRITE(diagTitle,'(2A)') 'Vertical Advective Flux of ',
129 & locName(1:ilnb)
130 diagCode = 'WM LR '
131 CALL DIAGNOSTICS_ADD2LIST( diagNum,
132 I diagName, diagCode, diagUnits, diagTitle, myThid )
133 diagName = 'ADVx'//diagSufx
134 WRITE(diagTitle,'(2A)') 'Zonal Advective Flux of ',
135 & locName(1:ilnb)
136 WRITE(diagCode,'(A,I3.3,A)') 'UU ',diagNum+2,'MR '
137 CALL DIAGNOSTICS_ADD2LIST( diagNum,
138 I diagName, diagCode, diagUnits, diagTitle, myThid )
139 diagName = 'ADVy'//diagSufx
140 WRITE(diagTitle,'(2A)') 'Meridional Advective Flux of ',
141 & locName(1:ilnb)
142 WRITE(diagCode,'(A,I3.3,A)') 'VV ',diagNum,'MR '
143 CALL DIAGNOSTICS_ADD2LIST( diagNum,
144 I diagName, diagCode, diagUnits, diagTitle, myThid )
145 C- Diffusive flux:
146 diagName = 'DFrE'//diagSufx
147 WRITE(diagTitle,'(2A)') 'Vertical Diffusive Flux of ',
148 & locName(1:ilnb)//' (Explicit part)'
149 diagCode = 'WM LR '
150 CALL DIAGNOSTICS_ADD2LIST( diagNum,
151 I diagName, diagCode, diagUnits, diagTitle, myThid )
152 diagName = 'DFxE'//diagSufx
153 WRITE(diagTitle,'(2A)') 'Zonal Diffusive Flux of ',
154 & locName(1:ilnb)
155 WRITE(diagCode,'(A,I3.3,A)') 'UU ',diagNum+2,'MR '
156 CALL DIAGNOSTICS_ADD2LIST( diagNum,
157 I diagName, diagCode, diagUnits, diagTitle, myThid )
158 diagName = 'DFyE'//diagSufx
159 WRITE(diagTitle,'(2A)') 'Meridional Diffusive Flux of ',
160 & locName(1:ilnb)
161 WRITE(diagCode,'(A,I3.3,A)') 'VV ',diagNum,'MR '
162 CALL DIAGNOSTICS_ADD2LIST( diagNum,
163 I diagName, diagCode, diagUnits, diagTitle, myThid )
164
165 diagName = 'DFrI'//diagSufx
166 WRITE(diagTitle,'(2A)') 'Vertical Diffusive Flux of ',
167 & locName(1:ilnb)//' (Implicit part)'
168 diagCode = 'WM LR '
169 CALL DIAGNOSTICS_ADD2LIST( diagNum,
170 I diagName, diagCode, diagUnits, diagTitle, myThid )
171
172 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
173 ENDDO
174
175 #endif /* ALLOW_DIAGNOSTICS */
176
177 RETURN
178 END

  ViewVC Help
Powered by ViewVC 1.1.22