C $Header: /u/gcmpack/MITgcm/pkg/diagnostics/diagnostics_init_early.F,v 1.19 2015/06/02 20:58:22 jmc Exp $
C $Name: $
#include "DIAG_OPTIONS.h"
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
CBOP 0
C !ROUTINE: DIAGNOSTICS_INIT_EARLY
C !INTERFACE:
SUBROUTINE DIAGNOSTICS_INIT_EARLY( myThid )
C !DESCRIPTION:
C Initialize available diagnostics list: set the following attributes:
C name (=cdiag), parsing code (=gdiag), units (=udiag), and title (=tdiag)
C Note: 1) diagnostics defined here are not presently filled. To use
C one of them, one just needs to add a call to S/R DIAGNOSTICS_FILL
C with the diagnostic name 'SDIAG...' or 'UDIAG...'
C 2) GDIAG is defined as character*16 and can be to character*1
C parse(16) with the following codes currently defined:
C \begin{center}
C \begin{tabular}[h]{|c|c|}\hline
C \textbf{Positions} & \textbf{Characters}
C & \textbf{Meanings} \\\hline
C parse(1) & S & scalar \\
C & U & vector component in X direction \\
C & V & vector component in Y direction \\
C & W & vector component in vertical direction \\
C parse(2) & U & C-grid U-Point \\
C & V & C-grid V-Point \\
C & M & C-grid Mass Point \\
C & Z & C-grid Corner Point \\
C parse(3) & & Used for Level Integrated output: cumulate levels \\
C & r & same but cumulate product by model level thickness \\
C & R & same but cumulate product by hFac & level thickness \\
C parse(4) & P & positive definite \\
C parse(5 ) & C & with counter array \\
C & P & post-processed (not filled up) from other diags \\
C & D & disable an array for output \\
C parse(6--8) & '123' & retired, formerly: 3-digit mate number \\
C parse(9) & U & model-level plus 1/2 \\
C & M & model-level middle \\
C & L & model-level minus 1/2 \\
C parse(10) & 0 & levels = 0 \\
C & 1 & levels = 1 \\
C & R & levels = Nr \\
C & L & levels = MAX(Nr,NrPhys) \\
C & M & levels = MAX(Nr,NrPhys) - 1 \\
C & G & levels = Ground_level Number \\
C & I & levels = sea-Ice_level Number \\
C & X & free levels option (need to be set explicitly) \\
C \end{tabular}
C \end{center}
C !USES:
IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "DIAGNOSTICS_SIZE.h"
#include "DIAGNOSTICS.h"
C !INPUT PARAMETERS:
INTEGER myThid
CEOP
C !LOCAL VARIABLES:
INTEGER n
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
_BARRIER
_BEGIN_MASTER( myThid )
DO n=1,ndiagMax
kdiag(n) = 0
hdiag(n) = 0
cdiag(n) = ' '
gdiag(n) = ' '
udiag(n) = ' '
tdiag(n) = ' '
ENDDO
C-- Diagnostics definition/setting starts here (can now add diags to list)
c IF ( diag_pkgStatus.NE.1 ) STOP
diag_pkgStatus = ready2setDiags
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
C For each output variable,
C specify Name (cdiag, 8c), Descriptions (tdiag, *c), Units (udiag, 16c)
C and parsing code (location on C grid, 2D/3D, ...) (gdiag, 16c)
C----------------------------------------------------------------------
cdiag( 1) = 'SDIAG1 '
tdiag( 1) = 'User-Defined Surface Diagnostic #1 '
udiag( 1) = 'user-defined '
gdiag( 1) = 'SM L1 '
cdiag( 2) = 'SDIAG2 '
tdiag( 2) = 'User-Defined Surface Diagnostic #2 '
udiag( 2) = 'user-defined '
gdiag( 2) = 'SM L1 '
cdiag( 3) = 'SDIAG3 '
tdiag( 3) = 'User-Defined Surface Diagnostic #3 '
udiag( 3) = 'user-defined '
gdiag( 3) = 'SM L1 '
cdiag( 4) = 'SDIAG4 '
tdiag( 4) = 'User-Defined Surface Diagnostic #4 '
udiag( 4) = 'user-defined '
gdiag( 4) = 'SM L1 '
cdiag( 5) = 'SDIAG5 '
tdiag( 5) = 'User-Defined Surface Diagnostic #5 '
udiag( 5) = 'user-defined '
gdiag( 5) = 'SM L1 '
cdiag( 6) = 'SDIAG6 '
tdiag( 6) = 'User-Defined Surface Diagnostic #6 '
udiag( 6) = 'user-defined '
gdiag( 6) = 'SM L1 '
cdiag( 7) = 'SDIAG7 '
tdiag( 7) = 'User-Defined U.pt Surface Diagnostic #7 '
udiag( 7) = 'user-defined '
gdiag( 7) = 'SU L1 '
cdiag( 8) = 'SDIAG8 '
tdiag( 8) = 'User-Defined V.pt Surface Diagnostic #8 '
udiag( 8) = 'user-defined '
gdiag( 8) = 'SV L1 '
cdiag( 9) = 'SDIAG9 '
tdiag( 9) = 'User-Defined U.vector Surface Diag. #9 '
udiag( 9) = 'user-defined '
gdiag( 9) = 'UU L1 '
hdiag( 9) = 10
cdiag(10) = 'SDIAG10 '
tdiag(10) = 'User-Defined V.vector Surface Diag. #10 '
udiag(10) = 'user-defined '
gdiag(10) = 'VV L1 '
hdiag(10) = 9
cdiag(11) = 'UDIAG1 '
tdiag(11) = 'User-Defined Model-Level Diagnostic #1 '
udiag(11) = 'user-defined '
gdiag(11) = 'SM MR '
cdiag(12) = 'UDIAG2 '
tdiag(12) = 'User-Defined Model-Level Diagnostic #2 '
udiag(12) = 'user-defined '
gdiag(12) = 'SM MR '
cdiag(13) = 'UDIAG3 '
tdiag(13) = 'User-Defined Model-Level Diagnostic #3 '
udiag(13) = 'user-defined '
gdiag(13) = 'SMR MR '
cdiag(14) = 'UDIAG4 '
tdiag(14) = 'User-Defined Model-Level Diagnostic #4 '
udiag(14) = 'user-defined '
gdiag(14) = 'SMR MR '
cdiag(15) = 'UDIAG5 '
tdiag(15) = 'User-Defined U.pt Model-Level Diag. #5 '
udiag(15) = 'user-defined '
gdiag(15) = 'SU MR '
cdiag(16) = 'UDIAG6 '
tdiag(16) = 'User-Defined V.pt Model-Level Diag. #6 '
udiag(16) = 'user-defined '
gdiag(16) = 'SV MR '
cdiag(17) = 'UDIAG7 '
tdiag(17) = 'User-Defined U.vector Model-Lev Diag.#7 '
udiag(17) = 'user-defined '
gdiag(17) = 'UUR MR '
hdiag(17) = 18
cdiag(18) = 'UDIAG8 '
tdiag(18) = 'User-Defined V.vector Model-Lev Diag.#8 '
udiag(18) = 'user-defined '
gdiag(18) = 'VVR MR '
hdiag(18) = 17
cdiag(19) = 'UDIAG9 '
tdiag(19) = 'User-Defined Phys-Level Diagnostic #9 '
udiag(19) = 'user-defined '
gdiag(19) = 'SM ML '
cdiag(20) = 'UDIAG10 '
tdiag(20) = 'User-Defined Phys-Level Diagnostic #10 '
udiag(20) = 'user-defined '
gdiag(20) = 'SM ML '
cdiag(21) = 'SDIAGC '
tdiag(21) = 'User-Defined Counted Surface Diagnostic '
udiag(21) = 'user-defined '
gdiag(21) = 'SM C L1 '
hdiag(21) = 22
cdiag(22) = 'SDIAGCC '
tdiag(22) = 'User-Defined Surface Diagnostic Counter '
udiag(22) = 'count '
gdiag(22) = 'SM L1 '
C- set the total number of available diagnostics
ndiagt = 22
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
_END_MASTER( myThid )
_BARRIER
RETURN
END