Back to home page

MITgcm

 
 

    


File indexing completed on 2024-05-11 05:10:21 UTC

view on githubraw file Latest commit 41c4545f on 2024-05-10 15:00:41 UTC
09ceb40cd6 Jean*0001 C ======================================================================
                0002 C  Common blocks for diagnostics package.
666b944083 Jean*0003 C  - DIAG_DEFINE contains the definition of all available diagnostics
09ceb40cd6 Jean*0004 C        ndiagt :: total number of available diagnostics
666b944083 Jean*0005 C         kdiag :: number of levels associated with the diagnostic
dd249f8e4f Jean*0006 C         hdiag :: mate number (in available diag. list) of the diagnostic
931cda44c0 Jean*0007 C         cdiag :: list of available diagnostic names
                0008 C         gdiag :: parser field with characteristics of the diagnostics
dd249f8e4f Jean*0009 C         tdiag :: description of field in diagnostic
666b944083 Jean*0010 C         udiag :: physical units of the diagnostic field
                0011 C  - DIAG_STORE  contains the large array to store diagnostic fields
931cda44c0 Jean*0012 C         qdiag :: storage array for 2D/3D diagnostic fields
666b944083 Jean*0013 C        qSdiag :: storage array for diagnostics of (per level) statistics
931cda44c0 Jean*0014 C         ndiag :: holds number of times a diagnostic is filled (for time-mean diag)
26d80a25ac Jean*0015 C  - DIAG_SELECT contains the user selection of diagnostics to write
666b944083 Jean*0016 C         idiag :: slot number in large diagnostic array
                0017 C         mdiag :: slot number in large diagnostic array for the mate
                0018 C         jdiag :: short-list (active diag.) to long-list (available diag.)
                0019 C                  pointer
26d80a25ac Jean*0020 C  - DIAG_PARAMS contains general parameters (used for both 2D/3D & Stats diags)
                0021 C  - DIAG_STATIS contains the user selection of statistics-diags to write
09ceb40cd6 Jean*0022 C ======================================================================
                0023 
8a1f6fb317 Jean*0024 C--   DIAG_STATUS common block:
                0025 C  diag_pkgStatus  :: internal parameter to track status of this pkg settings
                0026 C             = -1 :: pkg is not used ;   = 1 :: user params are loaded
                0027 C             =  2 :: early initialisation is done (enable to add diags to list)
                0028 C             =  3 :: diagnostics setting is done (no more diags to add to list)
                0029 C             = 10 :: storage is initialised (init_varia)
                0030 C             = 20 :: ready for active section (filling diagnostics & output)
                0031 C             = 99 :: active section is over (end of the run)
                0032 C  ready2setDiags  :: pkgStatus level required to add any diagnostics to list
                0033 C  ready2fillDiags :: pkgStatus level required to fill any diagnostics
                0034 C  blkName         :: blank diagnostics name
                0035 
                0036       INTEGER  ready2setDiags, ready2fillDiags
                0037       PARAMETER ( ready2setDiags = 2 , ready2fillDiags = 20 )
                0038       CHARACTER*8 blkName
                0039       PARAMETER ( blkName = '        ' )
                0040 
                0041       INTEGER  diag_pkgStatus
                0042       COMMON / DIAG_STATUS_I /
                0043      &  diag_pkgStatus
                0044 
666b944083 Jean*0045 C--   DIAG_DEFINE common block:
931cda44c0 Jean*0046 C       ndiagt :: total number of available diagnostics
                0047 C       kdiag  :: number of levels associated with the diagnostic
dd249f8e4f Jean*0048 C       hdiag  :: mate number (in available diag. list) of the diagnostic
931cda44c0 Jean*0049 C       cdiag  :: list of available diagnostic names
                0050 C       gdiag  :: parser field with characteristics of the diagnostics
dd249f8e4f Jean*0051 C       tdiag  :: description of field in diagnostic
931cda44c0 Jean*0052 C       udiag  :: physical units of the diagnostic field
09ceb40cd6 Jean*0053 
666b944083 Jean*0054       INTEGER        ndiagt
                0055       INTEGER        kdiag(ndiagMax)
931cda44c0 Jean*0056       INTEGER        hdiag(ndiagMax)
666b944083 Jean*0057       CHARACTER*8    cdiag(ndiagMax)
                0058       CHARACTER*80   tdiag(ndiagMax)
                0059       CHARACTER*16   gdiag(ndiagMax)
                0060       CHARACTER*16   udiag(ndiagMax)
09ceb40cd6 Jean*0061 
dd249f8e4f Jean*0062       COMMON / DIAG_DEFINE_I /
                0063      &  ndiagt, kdiag, hdiag
                0064       COMMON / DIAG_DEFINE_C /
                0065      &  cdiag, gdiag, tdiag, udiag
09ceb40cd6 Jean*0066 
666b944083 Jean*0067 C--   DIAG_STORE common block:
931cda44c0 Jean*0068 C       qdiag  :: storage array for 2D/3D diagnostic fields
666b944083 Jean*0069 C       qSdiag :: storage array for (per level) statistics
931cda44c0 Jean*0070 C       ndiag  :: holds number of times a diagnostic is filled (for time-mean diag)
666b944083 Jean*0071 C       pdiag  :: index of current averaging interval within the averaging-cycle
09ceb40cd6 Jean*0072 
61ef66e73f Jean*0073       _RL qdiag(1-OLx:sNx+OLx,1-OLy:sNy+OLy,numDiags,nSx,nSy)
3e5de6a370 Jean*0074       _RL qSdiag(0:nStats,0:nRegions,diagSt_size,nSx,nSy)
931cda44c0 Jean*0075       INTEGER  ndiag(numDiags,nSx,nSy)
866f99417e Jean*0076       INTEGER  pdiag(numLists,nSx,nSy)
09ceb40cd6 Jean*0077 
dd249f8e4f Jean*0078       COMMON / DIAG_STORE_R / qdiag, qSdiag
                0079       COMMON / DIAG_STORE_I / ndiag, pdiag
09ceb40cd6 Jean*0080 
666b944083 Jean*0081 C--   DIAG_SELECT common block:
dd249f8e4f Jean*0082 C     freq(n)     :: frequency (in s) to write output stream # n
                0083 C     phase(n)    :: phase     (in s) to write output stream # n
666b944083 Jean*0084 C     averageFreq :: frequency (in s) for periodic averaging interval
                0085 C     averagePhase:: phase     (in s) for periodic averaging interval
                0086 C     averageCycle:: number of averaging intervals in 1 cycle
61ef66e73f Jean*0087 C     misValFlt(n):: missing value for floats   to use in output stream #n
                0088 Cc    misValInt(n):: missing value for integers to use in output stream #n
dd249f8e4f Jean*0089 C     levs(:,n)   :: list of selected levels to write for output stream # n
                0090 C     nlevels(n)  :: number of levels to write for output stream # n
666b944083 Jean*0091 C     nfields(n)  :: number of active diagnostics for output stream # n
                0092 C     nActive(n)  :: number of active diagnostics (including counters)
                0093 C                    for output stream # n
                0094 C     nlists      :: effective number of output streams
dd249f8e4f Jean*0095 C     idiag(:,n)  :: list of diag slot number in long-list of available diag.
                0096 C     mdiag(:,n)  :: list of mate slot number in long-list of available diag.
                0097 C     jdiag(:,n)  :: short-list (active diag.) to long-list (available diag.) pointer
666b944083 Jean*0098 C     flds(:,n)   :: list of field names in output stream # n
                0099 C     fnames(n)   :: output file name for output stream # n
                0100 C     fflags(n)   :: character string with per-file flags
62f987c0ae Jean*0101 C                 :: 1rst: file precision ('R','D' or ' ' to use default outp prec)
                0102 C                 :: 2nd: 'I'; integrate vertically ; 'P': interpolate vertically
1d99daeaf6 Oliv*0103 C                 :: 3rd: 'h'; multiply by hFac (if permitted) when filled
866f99417e Jean*0104 C useMissingValue :: put MissingValue where mask = 0 (NetCDF output only)
09ceb40cd6 Jean*0105 
866f99417e Jean*0106       _RL freq(numLists), phase(numLists)
                0107       _RL averageFreq(numLists), averagePhase(numLists)
61ef66e73f Jean*0108       _RL misValFlt(numLists)
866f99417e Jean*0109       _RL levs (numLevels,numLists)
                0110       INTEGER averageCycle(numLists)
61ef66e73f Jean*0111 c     INTEGER misValInt(numLists)
866f99417e Jean*0112       INTEGER nlevels(numLists)
                0113       INTEGER nfields(numLists)
                0114       INTEGER nActive(numLists)
666b944083 Jean*0115       INTEGER nlists
866f99417e Jean*0116       INTEGER idiag(numperList,numLists)
                0117       INTEGER mdiag(numperList,numLists)
                0118       INTEGER jdiag(numperList,numLists)
                0119       CHARACTER*8  flds  (numperList,numLists)
                0120       CHARACTER*80 fnames(numLists)
                0121       CHARACTER*8  fflags(numLists)
26d80a25ac Jean*0122       LOGICAL diag_mdsio, diag_mnc, useMissingValue
09ceb40cd6 Jean*0123 
dd249f8e4f Jean*0124       COMMON / DIAG_SELECT_R /
                0125      &     freq, phase, averageFreq, averagePhase,
61ef66e73f Jean*0126      &     misValFlt, levs
dd249f8e4f Jean*0127       COMMON / DIAG_SELECT_I /
61ef66e73f Jean*0128      &     averageCycle,
dd249f8e4f Jean*0129      &     nlevels, nfields, nActive,
                0130      &     nlists, idiag, mdiag, jdiag
61ef66e73f Jean*0131 c    &   , misValInt
dd249f8e4f Jean*0132       COMMON / DIAG_SELECT_C /
                0133      &     flds, fnames, fflags
                0134       COMMON / DIAG_SELECT_L /
26d80a25ac Jean*0135      &     diag_mdsio, diag_mnc, useMissingValue
                0136 
                0137 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0138 
                0139 C  - DIAG_PARAMS common block:
                0140 C    diagLoc_ioUnit :: internal parameter: I/O unit for local diagnostics output
41c4545f8f Jean*0141 C    diag_dBugLevel :: control debug print to STDOUT or log file, higher -> more
                0142 C    dumpAtLast :: always write time-ave (freq>0) diagnostics at end of the run
1f837e63b3 Gael*0143 C    diagMdsDir :: directory where diagnostics will be written when using mds
                0144 C    diagMdsDirCreate :: system call to mkdir to create diagMdsDir
41c4545f8f Jean*0145       INTEGER diagLoc_ioUnit, diag_dBugLevel
1f837e63b3 Gael*0146       LOGICAL dumpAtLast,              diagMdsDirCreate
26d80a25ac Jean*0147       LOGICAL diag_pickup_read,        diag_pickup_write
                0148       LOGICAL diag_pickup_read_mdsio,  diag_pickup_write_mdsio
                0149       LOGICAL diag_pickup_read_mnc,    diag_pickup_write_mnc
54bb21a420 Jean*0150       CHARACTER*(MAX_LEN_FNAM) diagMdsDir
26d80a25ac Jean*0151 
                0152       COMMON / DIAG_PARAMS_I /
41c4545f8f Jean*0153      &     diagLoc_ioUnit, diag_dBugLevel
                0154       COMMON / DIAG_PARAMS_L /
1f837e63b3 Gael*0155      &     dumpAtLast,              diagMdsDirCreate,
ee2e7fad64 Ed H*0156      &     diag_pickup_read,        diag_pickup_write,
                0157      &     diag_pickup_read_mdsio,  diag_pickup_write_mdsio,
dd249f8e4f Jean*0158      &     diag_pickup_read_mnc,    diag_pickup_write_mnc
1f837e63b3 Gael*0159       COMMON / DIAG_PARAMS_C /
                0160      &     diagMdsDir
3ae5f90260 Jean*0161 
3e5de6a370 Jean*0162 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0163 
666b944083 Jean*0164 C--   DIAG_STATIS common block:
f800a6f6a8 Jean*0165 C     diagSt_freq(n)   :: frequency (in s) to write output stream # n
                0166 C     diagSt_phase(n)  :: phase     (in s) to write output stream # n
dd249f8e4f Jean*0167 C     iSdiag(:,n)      :: list of diag slot number in long-list of available diag.
                0168 C     mSdiag(:,n)      :: list of mate slot number in long-list of available diag.
                0169 C     jSdiag(:,n)      :: short-list (active diag.) to long-list (available
                0170 C                         diag.) pointer
                0171 C     diagSt_region(j,n) :: flag to perform (=1) or not (=0) regional-statistics
                0172 C                           over region # j for output stream # n
f800a6f6a8 Jean*0173 C     diagSt_nbFlds(n) :: number of active diagnostics for output stream # n
                0174 C     diagSt_nbActv(n) :: number of active diagnostics (including counters)
                0175 C                         for output stream # n
                0176 C     diagSt_nbLists   :: effective number of output streams
                0177 C     diagSt_ioUnit(n) :: fortran IO unit for output stream # n (ascii output)
                0178 C     diagSt_Flds(:,n) :: list of field names in output stream # n
                0179 C     diagSt_Fname(n)  :: output file name for output stream # n
                0180 
866f99417e Jean*0181       _RL       diagSt_freq(numLists), diagSt_phase(numLists)
                0182       INTEGER   iSdiag(numperList,numLists)
                0183       INTEGER   mSdiag(numperList,numLists)
                0184       INTEGER   jSdiag(numperList,numLists)
                0185       INTEGER   diagSt_region(0:nRegions,numLists)
                0186       INTEGER   diagSt_nbFlds(numLists)
                0187       INTEGER   diagSt_nbActv(numLists)
3e5de6a370 Jean*0188       INTEGER   diagSt_nbLists
866f99417e Jean*0189       INTEGER   diagSt_ioUnit(numLists)
                0190       CHARACTER*8  diagSt_Flds(numperList,numLists)
                0191       CHARACTER*80 diagSt_Fname(numLists)
3e5de6a370 Jean*0192       LOGICAL   diagSt_ascii, diagSt_mnc
dd249f8e4f Jean*0193 
                0194       COMMON / DIAG_STATIS_R /
                0195      &     diagSt_freq, diagSt_phase
                0196       COMMON / DIAG_STATIS_I /
                0197      &     iSdiag, mSdiag, jSdiag, diagSt_region,
3e5de6a370 Jean*0198      &     diagSt_nbFlds, diagSt_nbActv, diagSt_nbLists,
dd249f8e4f Jean*0199      &     diagSt_ioUnit
                0200       COMMON / DIAG_STATIS_C /
3ae5f90260 Jean*0201      &     diagSt_Flds, diagSt_Fname
dd249f8e4f Jean*0202       COMMON / DIAG_STATIS_L /
                0203      &     diagSt_Ascii, diagSt_mnc
09ceb40cd6 Jean*0204 
                0205 CEH3 ;;; Local Variables: ***
                0206 CEH3 ;;; mode:fortran ***
                0207 CEH3 ;;; End: ***