File indexing completed on 2021-04-08 05:11:54 UTC
view on githubraw file Latest commit ba0b0470 on 2021-04-08 01:06:32 UTC
81c8d7b9aa Jean*0001 #include "GAD_OPTIONS.h"
0002
0003
e888dc319e Jean*0004
81c8d7b9aa Jean*0005
0006 SUBROUTINE GAD_DIAGNOSTICS_INIT( myThid )
0007
0008
0009
0010
0011 IMPLICIT NONE
0012
0013 #include "SIZE.h"
0014 #include "EEPARAMS.h"
0015 #include "PARAMS.h"
0016 #include "GAD.h"
0017
0018
0019
e888dc319e Jean*0020
81c8d7b9aa Jean*0021 INTEGER myThid
0022
0023
0024 #ifdef ALLOW_DIAGNOSTICS
65d3db6a48 Jean*0025
0026 CHARACTER*4 GAD_DIAG_SUFX
0027 CHARACTER*16 DIAGS_MK_UNITS
0028 CHARACTER*80 DIAGS_MK_TITLE
238ffd2f6f Patr*0029 EXTERNAL GAD_DIAG_SUFX
65d3db6a48 Jean*0030 EXTERNAL DIAGS_MK_UNITS
0031 EXTERNAL DIAGS_MK_TITLE
0032
81c8d7b9aa Jean*0033
0034
e888dc319e Jean*0035
81c8d7b9aa Jean*0036
0037
65d3db6a48 Jean*0038 INTEGER diagNum
0039 INTEGER diagMate
0040 CHARACTER*8 diagName
0041 CHARACTER*16 diagCode
0042 CHARACTER*16 diagUnits
81c8d7b9aa Jean*0043 CHARACTER*(80) diagTitle
0044
65d3db6a48 Jean*0045 CHARACTER*10 flxUnits, trUnits
81c8d7b9aa Jean*0046 CHARACTER*12 locName
65d3db6a48 Jean*0047 CHARACTER*4 diagSufx
81c8d7b9aa Jean*0048
0049
0050
0051
0052 IF ( usingPCoords ) THEN
0053 flxUnits = '.Pa.m^2/s '
0054 ELSE
0055 flxUnits = '.m^3/s '
0056 ENDIF
0057
0058
0059 IF ( fluidIsAir ) THEN
65d3db6a48 Jean*0060 trUnits = 'K'
81c8d7b9aa Jean*0061 ELSE
65d3db6a48 Jean*0062 trUnits = 'degC'
81c8d7b9aa Jean*0063 ENDIF
65d3db6a48 Jean*0064 diagUnits = DIAGS_MK_UNITS( trUnits//flxUnits, myThid )
81c8d7b9aa Jean*0065 diagSufx = GAD_DIAG_SUFX( GAD_TEMPERATURE, myThid )
0066
0067
0068 diagName = 'ADVr'//diagSufx
0069 diagTitle = 'Vertical Advective Flux of Pot.Temperature'
0070 diagCode = 'WM LR '
65d3db6a48 Jean*0071 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0072 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
81c8d7b9aa Jean*0073 diagName = 'ADVx'//diagSufx
0074 diagTitle = 'Zonal Advective Flux of Pot.Temperature'
65d3db6a48 Jean*0075 diagCode = 'UU MR '
0076 diagMate = diagNum + 2
0077 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0078 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
81c8d7b9aa Jean*0079 diagName = 'ADVy'//diagSufx
0080 diagTitle = 'Meridional Advective Flux of Pot.Temperature'
65d3db6a48 Jean*0081 diagCode = 'VV MR '
0082 diagMate = diagNum
0083 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0084 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
81c8d7b9aa Jean*0085
0086 diagName = 'DFrE'//diagSufx
0087 diagTitle = 'Vertical Diffusive Flux of Pot.Temperature'
0088 & //' (Explicit part)'
0089 diagCode = 'WM LR '
65d3db6a48 Jean*0090 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0091 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
f68e77b60d Jean*0092 diagName = 'DFxE'//diagSufx
81c8d7b9aa Jean*0093 diagTitle = 'Zonal Diffusive Flux of Pot.Temperature'
65d3db6a48 Jean*0094 diagCode = 'UU MR '
0095 diagMate = diagNum + 2
0096 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0097 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
f68e77b60d Jean*0098 diagName = 'DFyE'//diagSufx
81c8d7b9aa Jean*0099 diagTitle = 'Meridional Diffusive Flux of Pot.Temperature'
65d3db6a48 Jean*0100 diagCode = 'VV MR '
0101 diagMate = diagNum
0102 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0103 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
81c8d7b9aa Jean*0104
0105 diagName = 'DFrI'//diagSufx
0106 diagTitle = 'Vertical Diffusive Flux of Pot.Temperature'
0107 & //' (Implicit part)'
0108 diagCode = 'WM LR '
65d3db6a48 Jean*0109 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0110 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
0111
6e23417f74 Jean*0112 #ifdef GAD_ALLOW_TS_SOM_ADV
65d3db6a48 Jean*0113 diagUnits = DIAGS_MK_UNITS( trUnits, myThid )
0114
0115 diagName = 'SM_x'//diagSufx
0116 diagTitle = 'Pot.Temp. 1rst Order Moment Sx'
0117 diagCode = 'UM MR '
0118 diagMate = diagNum + 2
0119 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0120 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
0121 diagName = 'SM_y'//diagSufx
0122 diagTitle = 'Pot.Temp. 1rst Order Moment Sy'
0123 diagCode = 'VM MR '
0124 diagMate = diagNum
0125 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0126 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
0127 diagName = 'SM_z'//diagSufx
0128 diagTitle = 'Pot.Temp. 1rst Order Moment Sz'
0129 diagCode = 'SM MR '
0130 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0131 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
0132
0133 diagName = 'SMxx'//diagSufx
0134 diagTitle = 'Pot.Temp. 2nd Order Moment Sxx'
0135 diagCode = 'UM MR '
0136 diagMate = diagNum + 2
0137 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0138 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
0139 diagName = 'SMyy'//diagSufx
0140 diagTitle = 'Pot.Temp. 2nd Order Moment Syy'
0141 diagCode = 'VM MR '
0142 diagMate = diagNum
0143 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0144 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
0145 diagName = 'SMzz'//diagSufx
0146 diagTitle = 'Pot.Temp. 2nd Order Moment Szz'
0147 diagCode = 'SM MR '
0148 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0149 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
0150
0151 diagName = 'SMxy'//diagSufx
0152 diagTitle = 'Pot.Temp. 2nd Order Moment Sxy'
0153 diagCode = 'SM MR '
0154 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0155 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
0156 diagName = 'SMxz'//diagSufx
0157 diagTitle = 'Pot.Temp. 2nd Order Moment Sxz'
0158 diagCode = 'UM MR '
0159 diagMate = diagNum + 2
0160 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0161 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
0162 diagName = 'SMyz'//diagSufx
0163 diagTitle = 'Pot.Temp. 2nd Order Moment Syz'
0164 diagCode = 'VM MR '
0165 diagMate = diagNum
0166 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0167 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
0168
0169 diagUnits = DIAGS_MK_UNITS( '('//trUnits//')^2', myThid )
0170 diagName = 'SM_v'//diagSufx
0171 diagTitle = 'Pot.Temp. sub-grid variance'
0172 diagCode = 'SM P MR '
0173 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0174 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
6e23417f74 Jean*0175 #endif /* GAD_ALLOW_TS_SOM_ADV */
81c8d7b9aa Jean*0176
0177
0178
0179
0180 IF ( fluidIsAir ) THEN
65d3db6a48 Jean*0181 locName = 'Water-Vapor '
74fbbed394 Jean*0182 IF ( useAIM ) THEN
0183 trUnits = 'g/kg'
0184 ELSE
0185 trUnits = 'kg/kg'
0186 ENDIF
81c8d7b9aa Jean*0187 ELSE
65d3db6a48 Jean*0188 locName = 'Salinity '
ba0b047096 Mart*0189 trUnits = 'g/kg'
81c8d7b9aa Jean*0190 ENDIF
65d3db6a48 Jean*0191 diagUnits = DIAGS_MK_UNITS( trUnits//flxUnits, myThid )
81c8d7b9aa Jean*0192 diagSufx = GAD_DIAG_SUFX( GAD_SALINITY, myThid )
0193
0194
0195 diagName = 'ADVr'//diagSufx
65d3db6a48 Jean*0196 diagTitle = 'Vertical Advective Flux of '//locName
81c8d7b9aa Jean*0197 diagCode = 'WM LR '
65d3db6a48 Jean*0198 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0199 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
81c8d7b9aa Jean*0200 diagName = 'ADVx'//diagSufx
65d3db6a48 Jean*0201 diagTitle = 'Zonal Advective Flux of '//locName
0202 diagCode = 'UU MR '
0203 diagMate = diagNum + 2
0204 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0205 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
81c8d7b9aa Jean*0206 diagName = 'ADVy'//diagSufx
65d3db6a48 Jean*0207 diagTitle = 'Meridional Advective Flux of '//locName
0208 diagCode = 'VV MR '
0209 diagMate = diagNum
0210 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0211 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
81c8d7b9aa Jean*0212
0213 diagName = 'DFrE'//diagSufx
65d3db6a48 Jean*0214 diagTitle = 'Vertical Diffusive Flux of '//locName
0215 & // '(Explicit part)'
81c8d7b9aa Jean*0216 diagCode = 'WM LR '
65d3db6a48 Jean*0217 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0218 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
f68e77b60d Jean*0219 diagName = 'DFxE'//diagSufx
65d3db6a48 Jean*0220 diagTitle = 'Zonal Diffusive Flux of '//locName
0221 diagCode = 'UU MR '
0222 diagMate = diagNum + 2
0223 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0224 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
f68e77b60d Jean*0225 diagName = 'DFyE'//diagSufx
65d3db6a48 Jean*0226 diagTitle = 'Meridional Diffusive Flux of '//locName
0227 diagCode = 'VV MR '
0228 diagMate = diagNum
0229 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0230 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
81c8d7b9aa Jean*0231
0232 diagName = 'DFrI'//diagSufx
65d3db6a48 Jean*0233 diagTitle = 'Vertical Diffusive Flux of '//locName
0234 & //'(Implicit part)'
81c8d7b9aa Jean*0235 diagCode = 'WM LR '
65d3db6a48 Jean*0236 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0237 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
81c8d7b9aa Jean*0238
12838c4aff Andr*0239 diagName = 'SALTFILL'
65d3db6a48 Jean*0240 diagTitle = 'Filling of Negative Values of '//locName
12838c4aff Andr*0241 diagCode = 'SM MR '
65d3db6a48 Jean*0242 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0243 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
0244
6e23417f74 Jean*0245 #ifdef GAD_ALLOW_TS_SOM_ADV
65d3db6a48 Jean*0246
0247 diagUnits = DIAGS_MK_UNITS( trUnits, myThid )
0248
0249 diagName = 'SM_x'//diagSufx
0250 diagTitle = locName//'1rst Order Moment Sx'
0251 diagCode = 'UM MR '
0252 diagMate = diagNum + 2
0253 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0254 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
0255 diagName = 'SM_y'//diagSufx
0256 diagTitle = locName//'1rst Order Moment Sy'
0257 diagCode = 'VM MR '
0258 diagMate = diagNum
0259 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0260 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
0261 diagName = 'SM_z'//diagSufx
0262 diagTitle = locName//'1rst Order Moment Sz'
0263 diagCode = 'SM MR '
0264 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0265 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
0266
0267 diagName = 'SMxx'//diagSufx
0268 diagTitle = locName//'2nd Order Moment Sxx'
0269 diagCode = 'UM MR '
0270 diagMate = diagNum + 2
0271 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0272 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
0273 diagName = 'SMyy'//diagSufx
0274 diagTitle = locName//'2nd Order Moment Syy'
0275 diagCode = 'VM MR '
0276 diagMate = diagNum
0277 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0278 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
0279 diagName = 'SMzz'//diagSufx
0280 diagTitle = locName//'2nd Order Moment Szz'
0281 diagCode = 'SM MR '
0282 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0283 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
0284
0285 diagName = 'SMxy'//diagSufx
0286 diagTitle = locName//'2nd Order Moment Sxy'
0287 diagCode = 'SM MR '
0288 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0289 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
0290 diagName = 'SMxz'//diagSufx
0291 diagTitle = locName//'2nd Order Moment Sxz'
0292 diagCode = 'UM MR '
0293 diagMate = diagNum + 2
0294 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0295 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
0296 diagName = 'SMyz'//diagSufx
0297 diagTitle = locName//'2nd Order Moment Syz'
0298 diagCode = 'VM MR '
0299 diagMate = diagNum
0300 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0301 I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
0302
0303 diagUnits = DIAGS_MK_UNITS( '('//trUnits//')^2', myThid )
0304 diagName = 'SM_v'//diagSufx
0305 diagTitle = locName//'sub-grid variance'
0306 diagCode = 'SM P MR '
0307 CALL DIAGNOSTICS_ADDTOLIST( diagNum,
0308 I diagName, diagCode, diagUnits, diagTitle, 0, myThid )
6e23417f74 Jean*0309 #endif /* GAD_ALLOW_TS_SOM_ADV */
12838c4aff Andr*0310
81c8d7b9aa Jean*0311
0312
0313 #endif /* ALLOW_DIAGNOSTICS */
0314
0315 RETURN
0316 END
0317
0318
0319
0320
0321
0322
0323
0324 CHARACTER*4 FUNCTION GAD_DIAG_SUFX( tracerId, myThid )
0325
0326
0327
0328
0329
0330
0331
0332
0333
0334 IMPLICIT NONE
8aa8d99107 Jean*0335 #include "SIZE.h"
81c8d7b9aa Jean*0336 #include "EEPARAMS.h"
0337 #include "GAD.h"
01111eb599 Jean*0338 #ifdef ALLOW_PTRACERS
0339
0340 # include "PTRACERS_SIZE.h"
0341 # include "PTRACERS_PARAMS.h"
0342 #endif /* ALLOW_PTRACERS */
81c8d7b9aa Jean*0343
0344
0345
0346
0347 INTEGER tracerId
0348 INTEGER myThid
0349
0350
0351
0352
0353
0354 IF ( tracerId.EQ.GAD_TEMPERATURE ) THEN
0355 GAD_DIAG_SUFX = '_TH '
0356 ELSEIF( tracerId.EQ.GAD_SALINITY ) THEN
0357 GAD_DIAG_SUFX = '_SLT'
01111eb599 Jean*0358 #ifdef ALLOW_PTRACERS
0359
0360
81c8d7b9aa Jean*0361 ELSEIF( tracerId.GE.GAD_TR1
01111eb599 Jean*0362 & .AND. tracerId.LT.GAD_TR1+PTRACERS_num ) THEN
0363
0364
0365 GAD_DIAG_SUFX = 'Tr'//PTRACERS_ioLabel( tracerId+1-GAD_TR1 )
0366 #endif /* ALLOW_PTRACERS */
81c8d7b9aa Jean*0367 ELSE
0368 GAD_DIAG_SUFX = 'aaaa'
0369 ENDIF
0370
0371 RETURN
0372 END