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 |
|
|
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, |
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)') |
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 |