/[MITgcm]/MITgcm/pkg/diagnostics/diagnostics_set_levels.F
ViewVC logotype

Diff of /MITgcm/pkg/diagnostics/diagnostics_set_levels.F

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

revision 1.15 by jmc, Mon Jan 11 19:44:41 2010 UTC revision 1.16 by jmc, Fri Jan 15 00:25:58 2010 UTC
# Line 26  C                   &  L  &  levels = MA Line 26  C                   &  L  &  levels = MA
26  C                   &  M  &  levels = MAX(Nr,NrPhys) - 1  \\  C                   &  M  &  levels = MAX(Nr,NrPhys) - 1  \\
27  C                   &  G  &  levels = Ground_level Number \\  C                   &  G  &  levels = Ground_level Number \\
28  C                   &  I  &  levels = sea-Ice_level Number \\  C                   &  I  &  levels = sea-Ice_level Number \\
29    C                   &  X  &  free levels option (need to be set explicitly) \\
30  C       \end{tabular}  C       \end{tabular}
31  C     \end{center}  C     \end{center}
32    
# Line 66  C     !LOCAL VARIABLES: Line 67  C     !LOCAL VARIABLES:
67        CHARACTER*84 ccHead, ccLine        CHARACTER*84 ccHead, ccLine
68        CHARACTER*8  blk8c        CHARACTER*8  blk8c
69        CHARACTER*10 gcode        CHARACTER*10 gcode
70          CHARACTER*1  g10code
71        INTEGER  ILNBLNK        INTEGER  ILNBLNK
72        EXTERNAL ILNBLNK        EXTERNAL ILNBLNK
73    
# Line 73  C---+----1----+----2----+----3----+----4 Line 75  C---+----1----+----2----+----3----+----4
75    
76        _BEGIN_MASTER( myThid )        _BEGIN_MASTER( myThid )
77    
78    C--   Diagnostics definition/setting ends (cannot add diags to list anymore)
79          settingDiags = .FALSE.
80    
81        nlevs   = MAX(Nr,Nrphys)        nlevs   = MAX(Nr,Nrphys)
82        nGroundLev = land_nLev        nGroundLev = land_nLev
83    
84  C     Diagnostic Levels  C     Diagnostic Levels
85  C     -----------------  C     -----------------
86          ncount = 0
87        DO n = 1,ndiagt        DO n = 1,ndiagt
88          IF     (gdiag(n)(10:10) .EQ. '0') THEN          g10code = gdiag(n)(10:10)
89            IF     ( g10code .EQ. '0' ) THEN
90            kdiag(n) = 0            kdiag(n) = 0
91          ELSEIF (gdiag(n)(10:10) .EQ. '1') THEN          ELSEIF ( g10code .EQ. '1' ) THEN
92            kdiag(n) = 1            kdiag(n) = 1
93          ELSEIF (gdiag(n)(10:10) .EQ. 'R') THEN          ELSEIF ( g10code .EQ. 'R' ) THEN
94            kdiag(n) = Nr            kdiag(n) = Nr
95          ELSEIF (gdiag(n)(10:10) .EQ. 'L') THEN          ELSEIF ( g10code .EQ. 'L' ) THEN
96            kdiag(n) = nlevs            kdiag(n) = nlevs
97          ELSEIF (gdiag(n)(10:10) .EQ. 'M') THEN          ELSEIF ( g10code .EQ. 'M' ) THEN
98            kdiag(n) = nlevs - 1            kdiag(n) = nlevs - 1
99          ELSEIF (gdiag(n)(10:10) .EQ. 'G') THEN          ELSEIF ( g10code .EQ. 'G' ) THEN
100            kdiag(n) = nGroundLev            kdiag(n) = nGroundLev
101          ELSEIF (gdiag(n)(10:10) .NE. ' ') THEN          ELSEIF ( g10code .EQ. 'g' ) THEN
 C-      others: set 1 level:  
102            kdiag(n) = 1            kdiag(n) = 1
103            ELSEIF ( g10code .EQ. 'X' ) THEN
104             IF ( kdiag(n) .LE. 0 ) THEN
105              WRITE(msgBuf,'(2A,I4,3A)')
106         &     '** WARNING ** DIAGNOSTICS_SET_LEVELS: ',
107         &     'level Nb =', kdiag(n), ' < 1 for diag."', cdiag(n),'"'
108              CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
109         &                        SQUEEZE_RIGHT , myThid )
110             ENDIF
111            ELSE
112    C-      enforce a strict matching:
113              WRITE(msgBuf,'(2A,4A)') 'DIAGNOSTICS_SET_LEVELS: ',
114         &     'invalid gdiag(10)="', g10code, '" code for diag."',
115         &                            cdiag(n),'"'
116              CALL PRINT_ERROR( msgBuf , myThid )
117              ncount = ncount + 1
118          ENDIF          ENDIF
119        ENDDO        ENDDO
120          IF ( ncount.GT.0 ) THEN
121            WRITE(msgBuf,'(2A,I6,3A)') 'DIAGNOSTICS_SET_LEVELS: ',
122         &   'found', ncount, ' invalid parser "gdiag(10)" => STOP'
123            CALL PRINT_ERROR( msgBuf , myThid )
124            STOP 'ABNORMAL END: S/R DIAGSTATS_SET_LEVELS'
125          ENDIF
126    
127  C--   Check for inconsistent diagnostic parser field  C--   Check for inconsistent diagnostic parser field
128        ncount = 0        ncount = 0

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.16

  ViewVC Help
Powered by ViewVC 1.1.22