/[MITgcm]/MITgcm/pkg/generic_advdiff/gad_diagnostics_init.F
ViewVC logotype

Annotation of /MITgcm/pkg/generic_advdiff/gad_diagnostics_init.F

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


Revision 1.6 - (hide annotations) (download)
Sat Nov 10 22:10:19 2007 UTC (16 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint59m, checkpoint59l, checkpoint59n, checkpoint59k
Changes since 1.5: +14 -3 lines
use a 2 characters string ioLabel to identify tracers (if more than 99 tracers)

1 jmc 1.6 C $Header: /u/gcmpack/MITgcm/pkg/generic_advdiff/gad_diagnostics_init.F,v 1.5 2007/08/15 22:35:41 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "GAD_OPTIONS.h"
5    
6     CBOP
7 jmc 1.4 C !ROUTINE: GAD_DIAGNOSTICS_INIT
8 jmc 1.1 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 jmc 1.4 C myThid :: My Thread Id. number
24 jmc 1.1 INTEGER myThid
25     CEOP
26    
27     #ifdef ALLOW_DIAGNOSTICS
28     C !LOCAL VARIABLES:
29     C === Local variables ===
30 jmc 1.4 C msgBuf :: Informational/error meesage buffer
31 jmc 1.1 c CHARACTER*(MAX_LEN_MBUF) msgBuf
32    
33     INTEGER diagNum
34     CHARACTER*8 diagName
35     CHARACTER*16 diagCode
36     CHARACTER*16 diagUnits
37     CHARACTER*(80) diagTitle
38    
39     CHARACTER*10 flxUnits
40     CHARACTER*12 locName
41     CHARACTER*4 GAD_DIAG_SUFX, diagSufx
42     c EXTERNAL GAD_DIAG_SUFX
43    
44     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
45    
46     C-- Add diagnostics to the (long) list
47     IF ( usingPCoords ) THEN
48     flxUnits = '.Pa.m^2/s '
49     ELSE
50     flxUnits = '.m^3/s '
51     ENDIF
52    
53     C- add diagnostics of advective & diffusive flux of Temp :
54     IF ( fluidIsAir ) THEN
55     WRITE(diagUnits,'(2A)') 'K',flxUnits
56     ELSE
57     WRITE(diagUnits,'(2A)') 'degC',flxUnits
58     ENDIF
59     diagSufx = GAD_DIAG_SUFX( GAD_TEMPERATURE, myThid )
60    
61     C- Advective flux:
62     diagName = 'ADVr'//diagSufx
63     diagTitle = 'Vertical Advective Flux of Pot.Temperature'
64     diagCode = 'WM LR '
65     CALL DIAGNOSTICS_ADD2LIST( diagNum,
66 jmc 1.4 I diagName, diagCode, diagUnits, diagTitle, myThid )
67 jmc 1.1 diagName = 'ADVx'//diagSufx
68     diagTitle = 'Zonal Advective Flux of Pot.Temperature'
69     WRITE(diagCode,'(A,I3.3,A)') 'UU ',diagNum+2,'MR '
70     CALL DIAGNOSTICS_ADD2LIST( diagNum,
71 jmc 1.4 I diagName, diagCode, diagUnits, diagTitle, myThid )
72 jmc 1.1 diagName = 'ADVy'//diagSufx
73     diagTitle = 'Meridional Advective Flux of Pot.Temperature'
74     WRITE(diagCode,'(A,I3.3,A)') 'VV ',diagNum,'MR '
75     CALL DIAGNOSTICS_ADD2LIST( diagNum,
76 jmc 1.4 I diagName, diagCode, diagUnits, diagTitle, myThid )
77 jmc 1.1 C- Diffusive flux:
78     diagName = 'DFrE'//diagSufx
79     diagTitle = 'Vertical Diffusive Flux of Pot.Temperature'
80     & //' (Explicit part)'
81     diagCode = 'WM LR '
82     CALL DIAGNOSTICS_ADD2LIST( diagNum,
83 jmc 1.4 I diagName, diagCode, diagUnits, diagTitle, myThid )
84 jmc 1.3 diagName = 'DFxE'//diagSufx
85 jmc 1.1 diagTitle = 'Zonal Diffusive Flux of Pot.Temperature'
86     WRITE(diagCode,'(A,I3.3,A)') 'UU ',diagNum+2,'MR '
87     CALL DIAGNOSTICS_ADD2LIST( diagNum,
88 jmc 1.4 I diagName, diagCode, diagUnits, diagTitle, myThid )
89 jmc 1.3 diagName = 'DFyE'//diagSufx
90 jmc 1.1 diagTitle = 'Meridional Diffusive Flux of Pot.Temperature'
91     WRITE(diagCode,'(A,I3.3,A)') 'VV ',diagNum,'MR '
92     CALL DIAGNOSTICS_ADD2LIST( diagNum,
93 jmc 1.4 I diagName, diagCode, diagUnits, diagTitle, myThid )
94 jmc 1.1
95     diagName = 'DFrI'//diagSufx
96     diagTitle = 'Vertical Diffusive Flux of Pot.Temperature'
97     & //' (Implicit part)'
98     diagCode = 'WM LR '
99     CALL DIAGNOSTICS_ADD2LIST( diagNum,
100 jmc 1.4 I diagName, diagCode, diagUnits, diagTitle, myThid )
101 jmc 1.1
102     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
103    
104     C- add diagnostics of advective & diffusive flux of Salt :
105     IF ( fluidIsAir ) THEN
106     locName = ' Water-Vapor'
107     WRITE(diagUnits,'(2A)') 'g/kg',flxUnits
108 molod 1.2 #ifdef ALLOW_FIZHI
109     IF(useFIZHI)THEN
110     WRITE(diagUnits,'(2A)') 'kg/kg',flxUnits
111     ENDIF
112     #endif /* ALLOW_FIZHI */
113 jmc 1.1 ELSE
114     locName = ' Salinity '
115     WRITE(diagUnits,'(2A)') 'psu',flxUnits
116     ENDIF
117     diagSufx = GAD_DIAG_SUFX( GAD_SALINITY, myThid )
118    
119     C- Advective flux:
120     diagName = 'ADVr'//diagSufx
121     diagTitle = 'Vertical Advective Flux of'//locName
122     diagCode = 'WM LR '
123     CALL DIAGNOSTICS_ADD2LIST( diagNum,
124 jmc 1.4 I diagName, diagCode, diagUnits, diagTitle, myThid )
125 jmc 1.1 diagName = 'ADVx'//diagSufx
126     diagTitle = 'Zonal Advective Flux of'//locName
127     WRITE(diagCode,'(A,I3.3,A)') 'UU ',diagNum+2,'MR '
128     CALL DIAGNOSTICS_ADD2LIST( diagNum,
129 jmc 1.4 I diagName, diagCode, diagUnits, diagTitle, myThid )
130 jmc 1.1 diagName = 'ADVy'//diagSufx
131     diagTitle = 'Meridional Advective Flux of'//locName
132     WRITE(diagCode,'(A,I3.3,A)') 'VV ',diagNum,'MR '
133     CALL DIAGNOSTICS_ADD2LIST( diagNum,
134 jmc 1.4 I diagName, diagCode, diagUnits, diagTitle, myThid )
135 jmc 1.1 C- Diffusive flux:
136     diagName = 'DFrE'//diagSufx
137     diagTitle = 'Vertical Diffusive Flux of'//locName
138     & // ' (Explicit part)'
139     diagCode = 'WM LR '
140     CALL DIAGNOSTICS_ADD2LIST( diagNum,
141 jmc 1.4 I diagName, diagCode, diagUnits, diagTitle, myThid )
142 jmc 1.3 diagName = 'DFxE'//diagSufx
143 jmc 1.1 diagTitle = 'Zonal Diffusive Flux of'//locName
144     WRITE(diagCode,'(A,I3.3,A)') 'UU ',diagNum+2,'MR '
145     CALL DIAGNOSTICS_ADD2LIST( diagNum,
146 jmc 1.4 I diagName, diagCode, diagUnits, diagTitle, myThid )
147 jmc 1.3 diagName = 'DFyE'//diagSufx
148 jmc 1.1 diagTitle = 'Meridional Diffusive Flux of'//locName
149     WRITE(diagCode,'(A,I3.3,A)') 'VV ',diagNum,'MR '
150     CALL DIAGNOSTICS_ADD2LIST( diagNum,
151 jmc 1.4 I diagName, diagCode, diagUnits, diagTitle, myThid )
152 jmc 1.1
153     diagName = 'DFrI'//diagSufx
154     diagTitle = 'Vertical Diffusive Flux of'//locName
155     & //' (Implicit part)'
156     diagCode = 'WM LR '
157     CALL DIAGNOSTICS_ADD2LIST( diagNum,
158 jmc 1.4 I diagName, diagCode, diagUnits, diagTitle, myThid )
159 jmc 1.1
160 molod 1.2 diagName = 'SALTFILL'
161     diagTitle = 'Filling of Negative Values of'//locName
162     diagCode = 'SM MR '
163     CALL DIAGNOSTICS_ADD2LIST( diagNum,
164 jmc 1.4 I diagName, diagCode, diagUnits, diagTitle, myThid )
165 molod 1.2
166 jmc 1.1 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
167    
168     #endif /* ALLOW_DIAGNOSTICS */
169    
170     RETURN
171     END
172    
173     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
174    
175     CBOP 0
176     C !ROUTINE: GAD_DIAG_SUFX
177    
178     C !INTERFACE:
179     CHARACTER*4 FUNCTION GAD_DIAG_SUFX( tracerId, myThid )
180    
181     C !DESCRIPTION:
182     C *==========================================================*
183     C | FUNCTION GAD_DIAG_SUFX
184     C | o Return diagnostic suffix (4 character long) for the
185     C | "tracerId" tracer (used to build diagnostic names).
186     C *==========================================================*
187    
188     C !USES:
189     IMPLICIT NONE
190 jmc 1.5 #include "SIZE.h"
191 jmc 1.1 #include "EEPARAMS.h"
192     #include "GAD.h"
193 jmc 1.6 #ifdef ALLOW_PTRACERS
194     c#include "PARAMS.h"
195     # include "PTRACERS_SIZE.h"
196     # include "PTRACERS_PARAMS.h"
197     #endif /* ALLOW_PTRACERS */
198 jmc 1.1
199     C !INPUT PARAMETERS:
200     C tracerId :: tracer identifier
201     C myThid :: my thread Id number
202     INTEGER tracerId
203     INTEGER myThid
204     CEOP
205    
206     C !LOCAL VARIABLES:
207    
208     C-- Set diagnostic suffix (4 character long) for the "tracerId" tracer
209     IF ( tracerId.EQ.GAD_TEMPERATURE ) THEN
210     GAD_DIAG_SUFX = '_TH '
211     ELSEIF( tracerId.EQ.GAD_SALINITY ) THEN
212     GAD_DIAG_SUFX = '_SLT'
213 jmc 1.6 #ifdef ALLOW_PTRACERS
214     c ELSEIF( usePTRACERS
215     c .AND. tracerId.GE.GAD_TR1
216 jmc 1.1 ELSEIF( tracerId.GE.GAD_TR1
217 jmc 1.6 & .AND. tracerId.LT.GAD_TR1+PTRACERS_num ) THEN
218     c WRITE(GAD_DIAG_SUFX,'(A,A2)')
219     c & 'Tr', PTRACERS_ioLabel( tracerId+1-GAD_TR1 )
220     GAD_DIAG_SUFX = 'Tr'//PTRACERS_ioLabel( tracerId+1-GAD_TR1 )
221     #endif /* ALLOW_PTRACERS */
222 jmc 1.1 ELSE
223     GAD_DIAG_SUFX = 'aaaa'
224     ENDIF
225    
226     RETURN
227     END

  ViewVC Help
Powered by ViewVC 1.1.22