4 |
#include "LAYERS_OPTIONS.h" |
#include "LAYERS_OPTIONS.h" |
5 |
|
|
6 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
7 |
|
CBOP 0 |
8 |
|
C !ROUTINE: LAYERS_DIAGNOSTICS_INIT |
9 |
|
|
10 |
|
C !INTERFACE: |
11 |
SUBROUTINE LAYERS_DIAGNOSTICS_INIT( myThid ) |
SUBROUTINE LAYERS_DIAGNOSTICS_INIT( myThid ) |
12 |
|
|
13 |
C =================================================================== |
C !DESCRIPTION: |
14 |
C Initialize LAYERS variables that are kept fixed during the run. |
C Initialize list of all available diagnostics for LAYERS package |
|
C =================================================================== |
|
15 |
|
|
16 |
|
C !USES: |
17 |
IMPLICIT NONE |
IMPLICIT NONE |
18 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
19 |
#include "SIZE.h" |
#include "SIZE.h" |
20 |
#include "PARAMS.h" |
#include "PARAMS.h" |
|
#include "GRID.h" |
|
21 |
#ifdef ALLOW_LAYERS |
#ifdef ALLOW_LAYERS |
22 |
# include "LAYERS_SIZE.h" |
# include "LAYERS_SIZE.h" |
23 |
# include "LAYERS.h" |
# include "LAYERS.h" |
24 |
#endif |
#endif |
|
#ifdef ALLOW_DIAGNOSTICS |
|
|
# include "DIAGNOSTICS_SIZE.h" |
|
|
# include "DIAGNOSTICS.h" |
|
|
#endif |
|
25 |
|
|
26 |
C INPUT/OUTPUT PARAMETERS: |
C !INPUT/OUTPUT PARAMETERS: |
27 |
C myThid :: my Thread Id number |
C myThid :: my Thread Id number |
28 |
INTEGER myThid |
INTEGER myThid |
29 |
|
|
30 |
|
#ifdef ALLOW_LAYERS |
31 |
|
#ifdef ALLOW_DIAGNOSTICS |
32 |
|
C !FUNCTIONS: |
33 |
|
INTEGER DIAGS_GET_PARMS_I |
34 |
|
EXTERNAL DIAGS_GET_PARMS_I |
35 |
|
CHARACTER*(16) DIAGS_MK_UNITS |
36 |
|
EXTERNAL DIAGS_MK_UNITS |
37 |
|
|
38 |
|
C !LOCAL VARIABLES: |
39 |
INTEGER iLa |
INTEGER iLa |
40 |
INTEGER diagNum |
INTEGER diagNum |
41 |
INTEGER diagMate |
INTEGER diagMate |
43 |
CHARACTER*16 diagCode |
CHARACTER*16 diagCode |
44 |
CHARACTER*16 diagUnits |
CHARACTER*16 diagUnits |
45 |
CHARACTER*(80) diagTitle |
CHARACTER*(80) diagTitle |
46 |
|
CHARACTER*2 rUnit2c |
47 |
|
CEOP |
48 |
|
|
49 |
#ifdef ALLOW_LAYERS |
c IF ( useDiagnostics ) THEN |
|
#ifdef ALLOW_DIAGNOSTICS |
|
|
IF ( useDiagnostics ) THEN |
|
50 |
|
|
51 |
diagNum=ndiagt |
IF ( usingPCoords ) THEN |
52 |
|
rUnit2c= 'Pa' |
53 |
|
ELSE |
54 |
|
rUnit2c= 'm ' |
55 |
|
ENDIF |
56 |
|
diagNum = DIAGS_GET_PARMS_I( 'LAST_DIAG_ID', myThid ) |
57 |
|
|
58 |
DO iLa=1,layers_maxNum |
DO iLa=1,layers_maxNum |
59 |
IF ( layers_num(iLa).NE.0 ) THEN |
IF ( layers_num(iLa).NE.0 ) THEN |
60 |
|
|
61 |
C --- UH, UV |
#if (defined LAYERS_UFLUX) || (defined LAYERS_VFLUX) |
|
#ifdef LAYERS_UFLUX |
|
|
WRITE(diagName,'(A4,I1,A3)') 'LaUH',iLa,layers_name(iLa) |
|
|
diagTitle = 'Layer Integrated U (UH in m2/s)' |
|
|
diagUnits = 'm2/s ' |
|
|
diagCode = 'UU MX ' |
|
|
#ifdef LAYERS_VFLUX |
|
|
diagMate = diagNum + 2 |
|
|
#else |
|
|
diagMate = 0 |
|
|
#endif |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
|
|
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
|
|
#endif |
|
62 |
|
|
63 |
#ifdef LAYERS_VFLUX |
C --- UH, VH |
64 |
WRITE(diagName,'(A4,I1,A3)') 'LaVH',iLa,layers_name(iLa) |
WRITE(diagName,'(A4,I1,A3)') 'LaUH',iLa,layers_name(iLa) |
65 |
diagTitle = 'Layer Integrated V (VH m2/s)' |
diagTitle = 'Layer Integrated zonal Transport (UH, m^2/s)' |
66 |
diagUnits = 'm2/s ' |
diagUnits = DIAGS_MK_UNITS( rUnit2c//'.m/s', myThid ) |
67 |
diagCode = 'VV MX ' |
diagCode = 'UU MX ' |
68 |
#ifdef LAYERS_UFLUX |
diagMate = diagNum + 2 |
69 |
diagMate = diagNum |
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
70 |
#else |
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
71 |
diagMate = 0 |
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
72 |
#endif |
|
73 |
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
WRITE(diagName,'(A4,I1,A3)') 'LaVH',iLa,layers_name(iLa) |
74 |
|
diagTitle = 'Layer Integrated merid. Transport (VH, m^2/s)' |
75 |
|
diagUnits = DIAGS_MK_UNITS( rUnit2c//'.m/s', myThid ) |
76 |
|
diagCode = 'VV MX ' |
77 |
|
diagMate = diagNum |
78 |
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
79 |
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
80 |
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
|
#endif |
|
81 |
|
|
|
C --- Thickness |
|
82 |
#ifdef LAYERS_THICKNESS |
#ifdef LAYERS_THICKNESS |
|
#ifdef LAYERS_UFLUX |
|
|
WRITE(diagName,'(A4,I1,A3)') 'LaHw',iLa,layers_name(iLa) |
|
|
diagTitle = 'Layer Thickness at U points (m)' |
|
|
diagUnits = 'm ' |
|
|
diagCode = 'UU MX ' |
|
|
#ifdef LAYERS_VFLUX |
|
|
diagMate = diagNum + 2 |
|
|
#else |
|
|
diagMate = 0 |
|
|
#endif |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
|
|
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
|
|
#endif |
|
83 |
|
|
84 |
#ifdef LAYERS_VFLUX |
C --- Thickness |
85 |
WRITE(diagName,'(A4,I1,A3)') 'LaHs',iLa,layers_name(iLa) |
WRITE(diagName,'(A4,I1,A3)') 'LaHw',iLa,layers_name(iLa) |
86 |
diagTitle = 'Layer Thickness at V points (m)' |
diagTitle = 'Layer Thickness at U points (m)' |
87 |
diagUnits = 'm ' |
diagUnits = DIAGS_MK_UNITS( rUnit2c, myThid ) |
88 |
diagCode = 'VV MX ' |
diagCode = 'SU MX ' |
89 |
#ifdef LAYERS_UFLUX |
diagMate = diagNum + 2 |
90 |
diagMate = diagNum |
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
91 |
#else |
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
92 |
diagMate = 0 |
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
93 |
#endif |
|
94 |
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
WRITE(diagName,'(A4,I1,A3)') 'LaHs',iLa,layers_name(iLa) |
95 |
|
diagTitle = 'Layer Thickness at V points (m)' |
96 |
|
diagUnits = DIAGS_MK_UNITS( rUnit2c, myThid ) |
97 |
|
diagCode = 'SV MX ' |
98 |
|
diagMate = diagNum |
99 |
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
100 |
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
101 |
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
|
#endif |
|
102 |
|
|
103 |
C --- PI |
C --- PI |
104 |
#ifdef LAYERS_THICKNESS |
WRITE(diagName,'(A4,I1,A3)') 'LaPw',iLa,layers_name(iLa) |
105 |
#ifdef LAYERS_UFLUX |
diagTitle = 'Layer Probability at U points [-]' |
106 |
WRITE(diagName,'(A4,I1,A3)') 'LaPw',iLa,layers_name(iLa) |
diagUnits = '1 ' |
107 |
diagTitle = 'Layer Probability at U points (m)' |
diagCode = 'SU MX ' |
108 |
diagUnits = ' ' |
diagMate = diagNum + 2 |
109 |
diagCode = 'UU MX ' |
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
110 |
#ifdef LAYERS_VFLUX |
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
111 |
diagMate = diagNum + 2 |
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
112 |
#else |
|
113 |
diagMate = 0 |
WRITE(diagName,'(A4,I1,A3)') 'LaPs',iLa,layers_name(iLa) |
114 |
#endif |
diagTitle = 'Layer Probability at V points [-]' |
115 |
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
diagUnits = '1 ' |
116 |
|
diagCode = 'SV MX ' |
117 |
|
diagMate = diagNum |
118 |
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
119 |
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
120 |
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
|
#endif |
|
|
|
|
|
#ifdef LAYERS_VFLUX |
|
|
WRITE(diagName,'(A4,I1,A3)') 'LaPs',iLa,layers_name(iLa) |
|
|
diagTitle = 'Layer Probability at V points (m)' |
|
|
diagUnits = ' ' |
|
|
diagCode = 'VV MX ' |
|
|
#ifdef LAYERS_UFLUX |
|
|
diagMate = diagNum |
|
|
#else |
|
|
diagMate = 0 |
|
|
#endif |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
|
|
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
|
|
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
|
|
#endif |
|
121 |
|
|
122 |
C --- U, V |
C --- U, V |
123 |
#ifdef LAYERS_THICKNESS |
WRITE(diagName,'(A4,I1,A3)') 'LaUa',iLa,layers_name(iLa) |
124 |
#ifdef LAYERS_UFLUX |
diagTitle = 'Layer-averaged U velocity (non-weighted) (m/s)' |
125 |
WRITE(diagName,'(A4,I1,A3)') 'LaUa',iLa,layers_name(iLa) |
diagUnits = 'm/s ' |
126 |
diagTitle = 'Layer-averaged U velocity (non-weighted) (m/s)' |
diagCode = 'UU MX ' |
127 |
diagUnits = 'm/s ' |
diagMate = diagNum + 2 |
128 |
diagCode = 'UU MX ' |
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
|
#ifdef LAYERS_VFLUX |
|
|
diagMate = diagNum + 2 |
|
|
#else |
|
|
diagMate = 0 |
|
|
#endif |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
|
129 |
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
130 |
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
|
#endif |
|
131 |
|
|
132 |
#ifdef LAYERS_VFLUX |
WRITE(diagName,'(A4,I1,A3)') 'LaVa',iLa,layers_name(iLa) |
133 |
WRITE(diagName,'(A4,I1,A3)') 'LaVa',iLa,layers_name(iLa) |
diagTitle = 'Layer-averaged V velocity (non-weighted) (m/s)' |
134 |
diagTitle = 'Layer-averaged V velocity (non-weighted) (m/s)' |
diagUnits = 'm/s ' |
135 |
diagUnits = 'm/s ' |
diagCode = 'VV MX ' |
136 |
diagCode = 'VV MX ' |
diagMate = diagNum |
137 |
#ifdef LAYERS_UFLUX |
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
|
diagMate = diagNum |
|
|
#else |
|
|
diagMate = 0 |
|
|
#endif |
|
|
CALL DIAGNOSTICS_ADDTOLIST( diagNum, |
|
138 |
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
I diagName, diagCode, diagUnits, diagTitle, diagMate, myThid ) |
139 |
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
CALL DIAGNOSTICS_SETKLEV( diagName, Nlayers , myThid ) |
|
#endif |
|
140 |
|
|
141 |
#endif |
#endif /* LAYERS_THICKNESS */ |
142 |
|
|
143 |
ENDIF |
#endif /* LAYERS_UFLUX or LAYERS_VFLUX */ |
144 |
|
|
145 |
|
ENDIF |
146 |
ENDDO |
ENDDO |
147 |
|
|
148 |
ENDIF |
c ENDIF |
149 |
#endif /* ALLOW_DIAGNOSTICS */ |
#endif /* ALLOW_DIAGNOSTICS */ |
150 |
#endif /* ALLOW_LAYERS */ |
#endif /* ALLOW_LAYERS */ |
151 |
|
|