Back to home page

MITgcm

 
 

    


File indexing completed on 2021-06-23 05:11:40 UTC

view on githubraw file Latest commit eaee6fe0 on 2021-06-18 20:43:21 UTC
ddc7b8ee22 Jean*0001 #include "THSICE_OPTIONS.h"
                0002 
                0003 CBOP
                0004 C     !ROUTINE: THSICE_DIAGNOSTICS_INIT
                0005 C     !INTERFACE:
                0006       SUBROUTINE THSICE_DIAGNOSTICS_INIT( myThid )
                0007 
                0008 C     !DESCRIPTION: \bv
                0009 C     *==========================================================*
                0010 C     | SUBROUTINE THSICE_DIAGNOSTICS_INIT
                0011 C     | o Routine to initialize list of all available diagnostics
                0012 C     |   for THSICE package
                0013 C     *==========================================================*
                0014 C     \ev
                0015 C     !USES:
                0016       IMPLICIT NONE
                0017 
                0018 C     === Global variables ===
                0019 #include "EEPARAMS.h"
                0020 c #include "SIZE.h"
                0021 c #include "PARAMS.h"
a4eca6e929 Jean*0022 #include "THSICE_SIZE.h"
ddc7b8ee22 Jean*0023 c #include "THSICE_PARAMS.h"
                0024 
                0025 C     !INPUT/OUTPUT PARAMETERS:
                0026 C     === Routine arguments ===
a4eca6e929 Jean*0027 C     myThid ::  My Thread Id. number
ddc7b8ee22 Jean*0028       INTEGER myThid
                0029 CEOP
                0030 
                0031 #ifdef ALLOW_DIAGNOSTICS
                0032 C     !LOCAL VARIABLES:
                0033 C     === Local variables ===
                0034 C     diagNum   :: diagnostics number in the (long) list of available diag.
ab84bd527e Jean*0035 C     diagMate  :: diag. mate number in the (long) list of available diag.
ddc7b8ee22 Jean*0036 C     diagName  :: local short name (8c) of a diagnostics
                0037 C     diagCode  :: local parser field with characteristics of the diagnostics
                0038 C              cf head of S/R DIAGNOSTICS_INIT_EARLY or DIAGNOSTICS_MAIN_INIT
                0039 C     diagUnits :: local string (16c): physical units of a diagnostic field
                0040 C     diagTitle :: local string (80c): description of field in diagnostic
                0041       INTEGER       diagNum
ab84bd527e Jean*0042       INTEGER       diagMate
ddc7b8ee22 Jean*0043       CHARACTER*8   diagName
                0044       CHARACTER*16  diagCode
                0045       CHARACTER*16  diagUnits
                0046       CHARACTER*(80) diagTitle
617abfa0a4 Jean*0047       INTEGER       numFract, numThick, numFrcFx
a4eca6e929 Jean*0048       INTEGER       n
                0049       LOGICAL       flag
                0050       CHARACTER*16  locName
                0051       CHARACTER*4   THSICE_DIAG_SUFX, diagSufx
                0052       EXTERNAL      THSICE_DIAG_SUFX
ddc7b8ee22 Jean*0053 
                0054 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0055 
                0056 c     IF ( useDiagnotics ) THEN
                0057 
                0058         diagName  = 'SI_Fract'
                0059         diagTitle = 'Sea-Ice fraction  [0-1]'
                0060         diagUnits = '0-1             '
                0061         diagCode  = 'SM P    M1      '
ab84bd527e Jean*0062         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0063      I            diagName, diagCode, diagUnits, diagTitle, 0, myThid )
ddc7b8ee22 Jean*0064         numFract  = diagNum
1b12829e5f Jean*0065         numFrcFx  = diagNum
ddc7b8ee22 Jean*0066 
                0067         diagName  = 'SI_Thick'
                0068         diagTitle = 'Sea-Ice thickness (area weighted average)'
                0069         diagUnits = 'm               '
ab84bd527e Jean*0070         diagCode  = 'SM PC   M1      '
                0071         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0072      I     diagName, diagCode, diagUnits, diagTitle, numFract, myThid )
ddc7b8ee22 Jean*0073         numThick  = diagNum
                0074 
                0075         diagName  = 'SI_SnowH'
                0076         diagTitle = 'Snow thickness over Sea-Ice (area weighted)'
                0077         diagUnits = 'm               '
ab84bd527e Jean*0078         diagCode  = 'SM PC   M1      '
                0079         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0080      I     diagName, diagCode, diagUnits, diagTitle, numFract, myThid )
ddc7b8ee22 Jean*0081 
                0082         diagName  = 'SI_Tsrf '
                0083         diagTitle = 'Surface Temperature over Sea-Ice (area weighted)'
                0084         diagUnits = 'degC            '
ab84bd527e Jean*0085         diagCode  = 'SM  C   M1      '
                0086         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0087      I     diagName, diagCode, diagUnits, diagTitle, numFract, myThid )
ddc7b8ee22 Jean*0088 
                0089         diagName  = 'SI_Tice1'
                0090         diagTitle = 'Sea-Ice Temperature, 1srt layer (area weighted)'
                0091         diagUnits = 'degC            '
ab84bd527e Jean*0092         diagCode  = 'SM  C   M1      '
                0093         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0094      I     diagName, diagCode, diagUnits, diagTitle, numFract, myThid )
ddc7b8ee22 Jean*0095 
                0096         diagName  = 'SI_Tice2'
                0097         diagTitle = 'Sea-Ice Temperature, 2nd  layer (area weighted)'
                0098         diagUnits = 'degC            '
ab84bd527e Jean*0099         diagCode  = 'SM  C   M1      '
                0100         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0101      I     diagName, diagCode, diagUnits, diagTitle, numFract, myThid )
ddc7b8ee22 Jean*0102 
                0103         diagName  = 'SI_Qice1'
bd8a00c1fc Jean*0104         diagTitle = 'Sea-Ice enthalpy, 1srt layer (mass weighted)'
                0105         diagUnits = 'J/kg            '
ab84bd527e Jean*0106         diagCode  = 'SM  C   M1      '
                0107         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0108      I     diagName, diagCode, diagUnits, diagTitle, numThick, myThid )
ddc7b8ee22 Jean*0109 
                0110         diagName  = 'SI_Qice2'
bd8a00c1fc Jean*0111         diagTitle = 'Sea-Ice enthalpy, 2nd  layer (mass weighted)'
                0112         diagUnits = 'J/kg            '
ab84bd527e Jean*0113         diagCode  = 'SM  C   M1      '
                0114         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0115      I     diagName, diagCode, diagUnits, diagTitle, numThick, myThid )
ddc7b8ee22 Jean*0116 
                0117         diagName  = 'SIsnwAge'
                0118         diagTitle = 'snow age over Sea-Ice'
                0119         diagUnits = 's               '
                0120         diagCode  = 'SM P    M1      '
ab84bd527e Jean*0121         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0122      I            diagName, diagCode, diagUnits, diagTitle, 0, myThid )
ddc7b8ee22 Jean*0123 
617abfa0a4 Jean*0124         diagName  = 'SIalbedo'
                0125         diagTitle = 'Sea-Ice Albedo [0-1] (area weighted average)'
                0126         diagUnits = '0-1             '
ab84bd527e Jean*0127         diagCode  = 'SM PC   M1      '
                0128         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0129      I     diagName, diagCode, diagUnits, diagTitle, numFrcFx, myThid )
617abfa0a4 Jean*0130 
ddc7b8ee22 Jean*0131         diagName  = 'SIsnwPrc'
                0132         diagTitle = 'snow precip. (+=dw) over Sea-Ice (area weighted)'
                0133         diagUnits = 'kg/m^2/s        '
ab84bd527e Jean*0134         diagCode  = 'SM  C   M1      '
                0135         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0136      I     diagName, diagCode, diagUnits, diagTitle, numFrcFx, myThid )
ddc7b8ee22 Jean*0137 
                0138         diagName  = 'SIflxAtm'
                0139         diagTitle = 'net heat flux from the Atmosphere (+=dw)'
                0140         diagUnits = 'W/m^2           '
                0141         diagCode  = 'SM      M1      '
ab84bd527e Jean*0142         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0143      I            diagName, diagCode, diagUnits, diagTitle, 0, myThid )
ddc7b8ee22 Jean*0144 
                0145         diagName  = 'SIfrwAtm'
                0146         diagTitle = 'fresh-water flux to the Atmosphere (+=up)'
                0147         diagUnits = 'kg/m^2/s        '
                0148         diagCode  = 'SM      M1      '
ab84bd527e Jean*0149         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0150      I            diagName, diagCode, diagUnits, diagTitle, 0, myThid )
ddc7b8ee22 Jean*0151 
                0152         diagName  = 'SIflx2oc'
                0153         diagTitle = 'heat flux out of the ocean (+=up)'
                0154         diagUnits = 'W/m^2           '
                0155         diagCode  = 'SM      M1      '
ab84bd527e Jean*0156         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0157      I            diagName, diagCode, diagUnits, diagTitle, 0, myThid )
ddc7b8ee22 Jean*0158 
                0159         diagName  = 'SIfrw2oc'
                0160         diagTitle = 'fresh-water flux out of the ocean (+=up)'
ac29614c18 Davi*0161         diagUnits = 'kg/m^2/s        '
ddc7b8ee22 Jean*0162         diagCode  = 'SM      M1      '
ab84bd527e Jean*0163         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0164      I            diagName, diagCode, diagUnits, diagTitle, 0, myThid )
ddc7b8ee22 Jean*0165 
                0166         diagName  = 'SIsaltFx'
                0167         diagTitle = 'salt flux out of the ocean (+=up)'
ba0b047096 Mart*0168         diagUnits = 'g/m^2/s         '
ddc7b8ee22 Jean*0169         diagCode  = 'SM      M1      '
ab84bd527e Jean*0170         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0171      I            diagName, diagCode, diagUnits, diagTitle, 0, myThid )
ddc7b8ee22 Jean*0172 
                0173         diagName  = 'SItOcMxL'
                0174         diagTitle = 'ocean mixed layer temperature'
                0175         diagUnits = 'degC            '
                0176         diagCode  = 'SM      M1      '
ab84bd527e Jean*0177         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0178      I            diagName, diagCode, diagUnits, diagTitle, 0, myThid )
ddc7b8ee22 Jean*0179 
                0180         diagName  = 'SIsOcMxL'
                0181         diagTitle = 'ocean mixed layer salinity'
ba0b047096 Mart*0182         diagUnits = 'g/kg            '
ddc7b8ee22 Jean*0183         diagCode  = 'SM P    M1      '
ab84bd527e Jean*0184         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0185      I            diagName, diagCode, diagUnits, diagTitle, 0, myThid )
ddc7b8ee22 Jean*0186 
a4eca6e929 Jean*0187        DO n=-5,-9,-1
                0188         flag = .TRUE.
                0189         IF     ( n .EQ. GAD_SI_FRAC  ) THEN
                0190           locName   = 'SeaIce Fraction '
                0191           diagUnits = 'm^2/s           '
                0192         ELSEIF ( n .EQ. GAD_SI_HSNOW ) THEN
                0193           locName   = 'Snow Thickness  '
                0194           diagUnits = 'm^3/s           '
                0195         ELSEIF ( n .EQ. GAD_SI_HICE  ) THEN
                0196           locName   = 'SeaIce Thickness'
                0197           diagUnits = 'm^3/s           '
                0198         ELSEIF ( n .EQ. GAD_SI_QICE1 ) THEN
                0199           locName   = 'Ice enthalpy l=1'
                0200           diagUnits = 'J/kg.m^3/s      '
                0201 c         diagUnits = 'W.m^3/kg        '
                0202         ELSEIF ( n .EQ. GAD_SI_QICE2 ) THEN
                0203           locName   = 'Ice enthalpy l=2'
                0204           diagUnits = 'J/kg.m^3/s      '
                0205         ELSE
                0206           flag = .FALSE.
                0207         ENDIF
                0208         IF ( flag ) THEN
                0209 C-     Advective flux:
                0210         diagSufx = THSICE_DIAG_SUFX( n, myThid )
                0211         diagName  = 'ADVx'//diagSufx
                0212         diagTitle = 'Zonal      Advective Flux of '//locName
ab84bd527e Jean*0213         diagCode  = 'UU      M1      '
                0214         diagMate  = diagNum + 2
                0215         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0216      I     diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
a4eca6e929 Jean*0217         diagName  = 'ADVy'//diagSufx
                0218         diagTitle = 'Meridional Advective Flux of '//locName
ab84bd527e Jean*0219         diagCode  = 'VV      M1      '
                0220         diagMate  = diagNum
                0221         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0222      I     diagName, diagCode, diagUnits, diagTitle, diagMate, myThid )
a4eca6e929 Jean*0223         ENDIF
                0224       ENDDO
                0225 
7c0d02fed1 Jean*0226 C--   Intermediate State, just before advection:
                0227         locName   = 'before advection'
0e322d6e56 Jean*0228         diagName  = 'SI_AdvFr'
7c0d02fed1 Jean*0229         diagTitle = 'Sea-Ice fraction  [0-1] ('//locName//')'
0e322d6e56 Jean*0230         diagUnits = '0-1             '
                0231         diagCode  = 'SM P    M1      '
ab84bd527e Jean*0232         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0233      I            diagName, diagCode, diagUnits, diagTitle, 0, myThid )
0e322d6e56 Jean*0234         numFract  = diagNum
                0235 
                0236         diagName  = 'SI_AdvHi'
7c0d02fed1 Jean*0237         diagTitle = 'Sea-Ice thickness ('//locName//')'
0e322d6e56 Jean*0238         diagUnits = 'm               '
ab84bd527e Jean*0239         diagCode  = 'SM PC   M1      '
                0240         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0241      I     diagName, diagCode, diagUnits, diagTitle, numFract, myThid )
0e322d6e56 Jean*0242         numThick  = diagNum
                0243 
                0244         diagName  = 'SI_AdvHs'
7c0d02fed1 Jean*0245         diagTitle = 'Snow thickness over Sea-Ice ('//locName//')'
0e322d6e56 Jean*0246         diagUnits = 'm               '
ab84bd527e Jean*0247         diagCode  = 'SM PC   M1      '
                0248         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0249      I     diagName, diagCode, diagUnits, diagTitle, numFract, myThid )
0e322d6e56 Jean*0250 
                0251         diagName  = 'SI_AdvQ1'
7c0d02fed1 Jean*0252         diagTitle = 'Sea-Ice enthalpy, 1srt layer ('//locName//')'
0e322d6e56 Jean*0253         diagUnits = 'J/kg            '
ab84bd527e Jean*0254         diagCode  = 'SM  C   M1      '
                0255         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0256      I     diagName, diagCode, diagUnits, diagTitle, numThick, myThid )
0e322d6e56 Jean*0257 
                0258         diagName  = 'SI_AdvQ2'
7c0d02fed1 Jean*0259         diagTitle = 'Sea-Ice enthalpy, 2nd  layer ('//locName//')'
0e322d6e56 Jean*0260         diagUnits = 'J/kg            '
ab84bd527e Jean*0261         diagCode  = 'SM  C   M1      '
                0262         CALL DIAGNOSTICS_ADDTOLIST( diagNum,
                0263      I     diagName, diagCode, diagUnits, diagTitle, numThick, myThid )
0e322d6e56 Jean*0264 
ddc7b8ee22 Jean*0265 c     ENDIF
                0266 
                0267 #endif /* ALLOW_DIAGNOSTICS */
                0268 
                0269       RETURN
                0270       END
a4eca6e929 Jean*0271 
                0272 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0273 
                0274 CBOP 0
                0275 C     !ROUTINE: THSICE_DIAG_SUFX
                0276 
                0277 C     !INTERFACE:
                0278       CHARACTER*4 FUNCTION THSICE_DIAG_SUFX( tracerId, myThid )
                0279 
                0280 C     !DESCRIPTION:
                0281 C     *==========================================================*
                0282 C     | FUNCTION THSICE_DIAG_SUFX
                0283 C     | o Return diagnostic suffix (4 character long) for the
                0284 C     |   "tracerId" tracer (used to build diagnostic names).
                0285 C     *==========================================================*
                0286 
                0287 C     !USES:
                0288       IMPLICIT NONE
                0289 #include "EEPARAMS.h"
                0290 #include "THSICE_SIZE.h"
                0291 
                0292 C     !INPUT PARAMETERS:
                0293 C     tracerId   ::  tracer identifier
                0294 C     myThid     ::  my thread Id number
                0295       INTEGER      tracerId
                0296       INTEGER      myThid
                0297 CEOP
                0298 
                0299 C     !LOCAL VARIABLES:
                0300 
                0301 C--   Set diagnostic suffix (4 character long) for the "tracerId" tracer
                0302       IF    ( tracerId.EQ.GAD_SI_FRAC  ) THEN
                0303         THSICE_DIAG_SUFX = 'SIfr'
                0304       ELSEIF( tracerId.EQ.GAD_SI_HSNOW ) THEN
                0305         THSICE_DIAG_SUFX = 'SIhs'
                0306       ELSEIF( tracerId.EQ.GAD_SI_HICE  ) THEN
                0307         THSICE_DIAG_SUFX = 'SIhi'
                0308       ELSEIF( tracerId.EQ.GAD_SI_QICE1 ) THEN
                0309         THSICE_DIAG_SUFX = 'SIq1'
                0310       ELSEIF( tracerId.EQ.GAD_SI_QICE2 ) THEN
                0311         THSICE_DIAG_SUFX = 'SIq2'
                0312       ELSE
                0313         THSICE_DIAG_SUFX = 'iiii'
                0314       ENDIF
                0315 
                0316       RETURN
                0317       END