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

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

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

revision 1.3 by dfer, Sat Dec 4 23:50:32 2010 UTC revision 1.6 by gforget, Wed Sep 19 18:48:18 2012 UTC
# Line 23  C     INPUT PARAMETERS: Line 23  C     INPUT PARAMETERS:
23    
24        NAMELIST /LAYERS_PARM01/        NAMELIST /LAYERS_PARM01/
25       &       layers_G, layers_taveFreq, layers_diagFreq,       &       layers_G, layers_taveFreq, layers_diagFreq,
26       &       LAYER_nb       &       LAYER_nb, layers_kref, useBOLUS, layers_bolus,
27         &       layers_name, layers_bounds, layers_krho
28    
29  C     === Local variables ===  C     === Local variables ===
30  C     msgBuf      - Informational/error meesage buffer  C     msgBuf      - Informational/error meesage buffer
31  C     iUnit       - Work variable for IO unit number  C     iUnit       - Work variable for IO unit number
32  C     k           - index  C     k           - index
33        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
34        INTEGER iUnit, k        INTEGER iUnit, k, iLa
35    
36        _BEGIN_MASTER(myThid)        _BEGIN_MASTER(myThid)
37    
# Line 40  C     The MNC stuff is not working yet Line 41  C     The MNC stuff is not working yet
41        layers_MNC = .FALSE.        layers_MNC = .FALSE.
42        layers_MDSIO = .TRUE.        layers_MDSIO = .TRUE.
43    
44          DO iLa=1,layers_maxNum
45            layers_name(iLa) = ' '
46            layers_num(iLa) = 0
47            layers_krho(iLa)= 1
48            layers_bolus(iLa) = .TRUE.
49            DO k=1,Nlayers+1
50              layers_bounds(k,iLa) = UNSET_RL
51            ENDDO
52          ENDDO
53          
54        DO k=1,Nlayers+1        DO k=1,Nlayers+1
55          layers_G(k) = UNSET_RL          layers_G(k) = UNSET_RL
56        ENDDO        ENDDO
57        layers_taveFreq = taveFreq        layers_taveFreq = taveFreq
58        layers_diagFreq = dumpFreq        layers_diagFreq = dumpFreq
59        LAYER_nb = 1        LAYER_nb = 0
60          layers_kref = 1
61          useBOLUS = .TRUE.
62    
63        WRITE(msgBuf,'(A)') 'LAYERS_READPARMS: opening data.layers'        WRITE(msgBuf,'(A)') 'LAYERS_READPARMS: opening data.layers'
64        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,        CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
# Line 55  C     The MNC stuff is not working yet Line 68  C     The MNC stuff is not working yet
68       O                     iUnit,       O                     iUnit,
69       I                     myThid )       I                     myThid )
70    
71    
72  C     Read parameters from open data file  C     Read parameters from open data file
73        READ(UNIT=iUnit,NML=LAYERS_PARM01)        READ(UNIT=iUnit,NML=LAYERS_PARM01)
74        WRITE(msgBuf,'(A)')        WRITE(msgBuf,'(A)')
# Line 64  C     Read parameters from open data fil Line 78  C     Read parameters from open data fil
78  C     Close the open data file  C     Close the open data file
79        CLOSE(iUnit)        CLOSE(iUnit)
80    
81  C--   Make sure the layers_G we just read is big enough  c revert to old approach
82    c (unless I simply retore the old ways, I need a
83    c  print statement or two as I override the new way)
84          IF ( LAYER_nb.NE.0 ) THEN
85            layers_num(1) = LAYER_nb
86            layers_krho(1) = layers_kref
87            layers_bolus(iLa) = useBOLUS
88            DO k=1,Nlayers+1
89              layers_bounds(k,1) = layers_G(k)
90            ENDDO
91            DO iLa=2,layers_maxNum
92              layers_num(iLa) = 0
93              layers_name(iLa) = ' '
94              layers_krho(iLa) = 1
95              layers_bolus(iLa) = .TRUE.
96              DO k=1,Nlayers+1
97                layers_bounds(k,iLa) = UNSET_RL
98              ENDDO
99            ENDDO
100          ENDIF
101    
102    C--   ensure layers_name/layers_num setup consistency
103          DO iLa=1,layers_maxNum
104            IF ( ( layers_name(iLa).EQ.'TH' ).OR.
105         &       ( layers_num(iLa).EQ.1 ) ) THEN
106              layers_name(iLa)='TH'
107              layers_num(iLa)=1
108            ELSEIF ( ( layers_name(iLa).EQ.'SLT' ).OR.
109         &       ( layers_num(iLa).EQ.2 ) ) THEN
110              layers_name(iLa)='SLT'
111              layers_num(iLa)=2
112            ELSEIF ( ( layers_name(iLa).EQ.'RHO' ).OR.
113         &       ( layers_num(iLa).EQ.3 ) ) THEN
114              layers_name(iLa)='RHO'
115              layers_num(iLa)=3
116            ELSE
117              layers_name(iLa)=' '
118              layers_num(iLa)=0
119            ENDIF  
120          ENDDO
121          
122    C--   Make sure the layers_bounds we just read is big enough
123          DO iLa=1,layers_maxNum
124          IF ( layers_num(iLa).NE.0 ) THEN
125        DO k=1,Nlayers+1        DO k=1,Nlayers+1
126          IF ( layers_G(k) .EQ. UNSET_RL ) THEN          IF ( layers_bounds(k,iLa) .EQ. UNSET_RL ) THEN
127            WRITE(msgBuf,'(A,I4)')            WRITE(msgBuf,'(2A,I4)')
128       &        'S/R LAYERS_READPARMS: No value for layers_G at k =', k       &        'S/R LAYERS_READPARMS: ',
129         &        'No value for layers_bounds at k =', k
130            CALL PRINT_ERROR( msgBuf, myThid )            CALL PRINT_ERROR( msgBuf, myThid )
131            STOP 'ABNORMAL END: S/R LAYERS_READPARMS'            STOP 'ABNORMAL END: S/R LAYERS_READPARMS'
132          ELSE IF ( k .EQ. 1 ) THEN          ELSE IF ( k .EQ. 1 ) THEN
133  C         Do nothing  C         Do nothing
134          ELSE IF ( layers_G(k) .LE. layers_G(k-1) ) THEN          ELSE IF ( layers_bounds(k,iLa) .LE.
135  C         Check to make sure layers_G is increasing       &            layers_bounds(k-1,iLa) ) THEN
136            WRITE(msgBuf,'(A,I4)')  C         Check to make sure layers_bounds is increasing
137       &      'S/R LAYERS_READPARMS: layers_G is not increasing at k =', k            WRITE(msgBuf,'(2A,I4)')
138         &      'S/R LAYERS_READPARMS: ',
139         &      'layers_bounds is not increasing at k =', k
140            CALL PRINT_ERROR( msgBuf, myThid )            CALL PRINT_ERROR( msgBuf, myThid )
141            STOP 'ABNORMAL END: S/R LAYERS_READPARMS'            STOP 'ABNORMAL END: S/R LAYERS_READPARMS'
142          ENDIF          ENDIF
143        ENDDO        ENDDO
144          ENDIF
145          ENDDO
146    
147  C--   Make sure that we locally honor the global MNC on/off flag  C--   Make sure that we locally honor the global MNC on/off flag
148        layers_MNC = layers_MNC .AND. useMNC        layers_MNC = layers_MNC .AND. useMNC

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.22