/[MITgcm]/MITgcm/pkg/layers/layers_diagnostics_init.F
ViewVC logotype

Diff of /MITgcm/pkg/layers/layers_diagnostics_init.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.4 by rpa, Wed Oct 17 18:49:15 2012 UTC revision 1.5 by jmc, Wed Oct 17 23:12:12 2012 UTC
# Line 4  C $Name$ Line 4  C $Name$
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
# Line 36  C     myThid ::  my Thread Id number Line 43  C     myThid ::  my Thread Id number
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    

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

  ViewVC Help
Powered by ViewVC 1.1.22