/[MITgcm]/MITgcm/pkg/kpp/kpp_readparms.F
ViewVC logotype

Contents of /MITgcm/pkg/kpp/kpp_readparms.F

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


Revision 1.25 - (show annotations) (download)
Thu Oct 19 13:17:17 2017 UTC (6 years, 8 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, HEAD
Changes since 1.24: +2 -2 lines
fix missing initialisation of errIO

1 C $Header: /u/gcmpack/MITgcm/pkg/kpp/kpp_readparms.F,v 1.24 2017/10/19 00:34:25 jmc Exp $
2 C $Name: $
3 #include "KPP_OPTIONS.h"
4
5 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
6 CBOP 0
7 C !ROUTINE: KPP_READPARMS
8
9 C !INTERFACE:
10 SUBROUTINE KPP_READPARMS( myThid )
11
12 C !DESCRIPTION:
13 C Routine to read in file data.kpp
14
15 C !USES:
16 IMPLICIT NONE
17 #include "SIZE.h"
18 #include "EEPARAMS.h"
19 #include "PARAMS.h"
20 #include "KPP_PARAMS.h"
21
22 C !INPUT PARAMETERS:
23 INTEGER myThid
24 CEOP
25
26 C !LOCAL VARIABLES:
27 #ifdef ALLOW_KPP
28 C msgBuf :: Informational/error message buffer
29 C errIO :: IO error flag
30 C iUnit :: Work variable for IO unit number
31 CHARACTER*(MAX_LEN_MBUF) msgBuf
32 INTEGER errIO, iUnit
33 C- retired parameters:
34 C nRetired :: Count number of "retired" parameters found in namelist.
35 INTEGER nRetired
36 LOGICAL KPPmixingMaps
37 INTEGER num_v_smooth_BV, num_z_smooth_sh, num_m_smooth_sh
38
39 C-- KPP vertical mixing parameters
40 NAMELIST /KPP_PARM01/
41 & kpp_freq, kpp_dumpFreq, kpp_taveFreq,
42 & KPPwriteState, KPP_ghatUseTotalDiffus,
43 & KPPuseDoubleDiff, LimitHblStable,
44 & minKPPhbl,
45 & epsln, phepsi, epsilon, vonk, dB_dz,
46 & conc1, conam, concm, conc2, zetam,
47 & conas, concs, conc3, zetas,
48 & Ricr, cekman, cmonob, concv, hbf,
49 & zmin, zmax, umin, umax,
50 & num_v_smooth_Ri,
51 & Riinfty, BVSQcon, difm0, difs0, dift0,
52 & difmcon, difscon, diftcon,
53 & Rrho0, dsfmax,
54 & cstar,
55 & KPPmixingMaps,
56 & num_v_smooth_BV, num_z_smooth_sh, num_m_smooth_sh
57
58 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
59
60 IF ( .NOT.useKPP ) THEN
61 C- pkg KPP is not used
62 _BEGIN_MASTER(myThid)
63 C- Track pkg activation status:
64 C print a (weak) warning if data.kpp is found
65 CALL PACKAGES_UNUSED_MSG( 'useKPP', ' ', ' ' )
66 _END_MASTER(myThid)
67 RETURN
68 ENDIF
69
70 _BEGIN_MASTER(myThid)
71
72 WRITE(msgBuf,'(A)') ' KPP_READPARMS: opening data.kpp'
73 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
74 & SQUEEZE_RIGHT, myThid )
75 errIO = 0
76 CALL OPEN_COPY_DATA_FILE(
77 I 'data.kpp', 'KPP_READPARMS',
78 O iUnit,
79 I myThid )
80
81 C-- set default KPP vertical mixing parameters
82 kpp_freq = deltaTClock
83 kpp_dumpFreq = dumpFreq
84 kpp_taveFreq = taveFreq
85 KPPwriteState = .FALSE.
86 KPPuseDoubleDiff = .FALSE.
87 LimitHblStable = .TRUE.
88 KPP_ghatUseTotalDiffus = .FALSE.
89 minKPPhbl = UNSET_RL
90
91 C-----------------------------------------------------------------------
92 C define some non-dimensional constants and
93 C the vertical mixing coefficients in m-k-s units
94 C-----------------------------------------------------------------------
95
96 epsln = 1. _d -20
97 phepsi = 1. _d -10
98 epsilon = 1. _d -1
99 vonk = 0.4 _d 0
100 dB_dz = 5.2 _d -5
101 conc1 = 5. _d 0
102 conam = 1.257 _d 0
103 concm = 8.380 _d 0
104 conc2 = 16. _d 0
105 zetam = -0.2 _d 0
106 conas = -28.86 _d 0
107 concs = 98.96 _d 0
108 conc3 = 16. _d 0
109 zetas = -1. _d 0
110
111 C parameters for subroutine "bldepth"
112
113 Ricr = 0.3 _d 0
114 cekman = 0.7 _d 0
115 cmonob = 1. _d 0
116 concv = 1.8 _d 0
117 hbf = 1. _d 0
118
119 C parameters and common arrays for subroutines
120 C "kmixinit" and "wscale"
121
122 zmin = -4. _d -7
123 zmax = 0. _d 0
124 umin = 0. _d 0
125 umax = 4. _d -2
126
127 C parameters for subroutine "Ri_iwmix"
128
129 num_v_smooth_Ri = 0
130 Riinfty = 0.7 _d 0
131 BVSQcon = -0.2 _d -4
132
133 difm0 = 5. _d -3
134 difs0 = 5. _d -3
135 dift0 = 5. _d -3
136
137 difmcon = 0.1 _d 0
138 difscon = 0.1 _d 0
139 diftcon = 0.1 _d 0
140
141 C parameters for double diffusion routine "KPP_DOUBLEDIFF"
142
143 Rrho0 = 1.9 _d 0
144 dsfmax = 10. _d -3
145
146 C parameters for subroutine "blmix"
147
148 cstar = 10.
149
150 C- Retired parameters: initialised to unlikely value:
151 nRetired = 0
152 KPPmixingMaps = .FALSE.
153 num_v_smooth_BV = UNSET_I
154 num_z_smooth_sh = UNSET_I
155 num_m_smooth_sh = UNSET_I
156
157 C-----------------------------------------------------------------------
158
159 C-- Read settings from model parameter file "data.kpp".
160 WRITE(msgBuf,'(A)') ' KPP_READPARMS ; starts to read KPP_PARM01'
161 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
162 & SQUEEZE_RIGHT, myThid )
163 READ( UNIT=iUnit, NML=KPP_PARM01 )
164 c READ( UNIT=iUnit, NML=KPP_PARM01, IOSTAT=errIO )
165 c WRITE(msgBuf,'(A,I6,A)')
166 c & ' KPP_READPARMS ; read KPP_PARM01 (', errIO, ' )'
167 c CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
168 c & SQUEEZE_RIGHT, myThid )
169 IF ( errIO .LT. 0 ) THEN
170 WRITE(msgBuf,'(A)')
171 & 'S/R KPP_READPARMS: Error reading parameter file "data.kpp"'
172 CALL PRINT_ERROR( msgBuf, myThid )
173 WRITE(msgBuf,'(A)')
174 & 'S/R KPP_READPARMS: Problem in namelist KPP_PARM01'
175 CALL PRINT_ERROR( msgBuf, myThid )
176 STOP 'ABNORMAL END: S/R KPP_READPARMS'
177 ELSE
178 WRITE(msgBuf,'(A)') ' KPP_READPARMS ; read KPP_PARM01 : OK'
179 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
180 & SQUEEZE_RIGHT, myThid )
181 ENDIF
182
183 #ifdef SINGLE_DISK_IO
184 CLOSE(iUnit)
185 #else
186 CLOSE(iUnit,STATUS='DELETE')
187 #endif /* SINGLE_DISK_IO */
188
189 WRITE(msgBuf,'(A)') ' KPP_READPARMS: finished reading data.kpp'
190 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
191 & SQUEEZE_RIGHT, myThid )
192
193 C-- Print message and stop when retired parameters were found in namelist
194 IF ( KPPmixingMaps ) THEN
195 nRetired = nRetired + 1
196 WRITE(msgBuf,'(2A)') 'S/R KPP_READPARMS: "KPPmixingMaps"',
197 & ' no longer allowed in file "data.kpp"'
198 CALL PRINT_ERROR( msgBuf, myThid )
199 ENDIF
200 IF ( num_v_smooth_BV .NE. UNSET_I ) THEN
201 nRetired = nRetired + 1
202 WRITE(msgBuf,'(2A)') 'S/R KPP_READPARMS: "num_v_smooth_BV"',
203 & ' no longer allowed in file "data.kpp"'
204 CALL PRINT_ERROR( msgBuf, myThid )
205 ENDIF
206 IF ( num_z_smooth_sh .NE. UNSET_I ) THEN
207 nRetired = nRetired + 1
208 WRITE(msgBuf,'(2A)') 'S/R KPP_READPARMS: "num_z_smooth_sh"',
209 & ' no longer allowed in file "data.kpp"'
210 CALL PRINT_ERROR( msgBuf, myThid )
211 ENDIF
212 IF ( num_m_smooth_sh .NE. UNSET_I ) THEN
213 nRetired = nRetired + 1
214 WRITE(msgBuf,'(2A)') 'S/R KPP_READPARMS: "num_m_smooth_sh"',
215 & ' no longer allowed in file "data.kpp"'
216 CALL PRINT_ERROR( msgBuf, myThid )
217 ENDIF
218
219 IF ( nRetired .GT. 0 ) THEN
220 WRITE(msgBuf,'(2A)') 'S/R KPP_READPARMS: ',
221 & 'Error reading file "data.kpp":'
222 CALL PRINT_ERROR( msgBuf, myThid )
223 WRITE(msgBuf,'(I4,A)') nRetired,
224 & ' out-of-date parameters were found in the namelist(s)'
225 CALL PRINT_ERROR( msgBuf, myThid )
226 c errCount = errCount + 1
227 CALL ALL_PROC_DIE( 0 )
228 STOP 'ABNORMAL END: S/R KPP_READPARMS'
229 ENDIF
230
231 _END_MASTER(myThid)
232
233 C-- Everyone else must wait for the parameters to be loaded
234 _BARRIER
235
236 #endif /* ALLOW_KPP */
237
238 RETURN
239 END

  ViewVC Help
Powered by ViewVC 1.1.22