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

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

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


Revision 1.24 - (hide annotations) (download)
Thu Oct 19 00:34:25 2017 UTC (6 years, 8 months ago) by jmc
Branch: MAIN
Changes since 1.23: +83 -31 lines
- move retired parameter outside common block
- read namelist without IOSTAT=errIO to force to stop if there is an error

1 jmc 1.24 C $Header: /u/gcmpack/MITgcm/pkg/kpp/kpp_readparms.F,v 1.23 2017/08/09 15:23:37 mlosch Exp $
2     C $Name: $
3 heimbach 1.1 #include "KPP_OPTIONS.h"
4    
5 edhill 1.9 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
6     CBOP 0
7     C !ROUTINE: KPP_READPARMS
8    
9     C !INTERFACE:
10 heimbach 1.1 SUBROUTINE KPP_READPARMS( myThid )
11 edhill 1.9
12     C !DESCRIPTION:
13     C Routine to read in file data.kpp
14    
15     C !USES:
16 heimbach 1.1 IMPLICIT NONE
17     #include "SIZE.h"
18     #include "EEPARAMS.h"
19     #include "PARAMS.h"
20     #include "KPP_PARAMS.h"
21    
22 edhill 1.9 C !INPUT PARAMETERS:
23 heimbach 1.1 INTEGER myThid
24 edhill 1.9 CEOP
25 heimbach 1.1
26 edhill 1.9 C !LOCAL VARIABLES:
27 heimbach 1.1 #ifdef ALLOW_KPP
28 jmc 1.24 C msgBuf :: Informational/error message buffer
29     C errIO :: IO error flag
30     C iUnit :: Work variable for IO unit number
31 heimbach 1.1 CHARACTER*(MAX_LEN_MBUF) msgBuf
32 dimitri 1.7 INTEGER errIO, iUnit
33 jmc 1.24 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 heimbach 1.1
39     C-- KPP vertical mixing parameters
40     NAMELIST /KPP_PARM01/
41     & kpp_freq, kpp_dumpFreq, kpp_taveFreq,
42 jmc 1.24 & KPPwriteState, KPP_ghatUseTotalDiffus,
43 mlosch 1.21 & KPPuseDoubleDiff, LimitHblStable,
44 heimbach 1.1 & 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 jmc 1.16 & zmin, zmax, umin, umax,
50 jmc 1.24 & num_v_smooth_Ri,
51 heimbach 1.1 & Riinfty, BVSQcon, difm0, difs0, dift0,
52     & difmcon, difscon, diftcon,
53 jmc 1.22 & Rrho0, dsfmax,
54 jmc 1.24 & cstar,
55     & KPPmixingMaps,
56     & num_v_smooth_BV, num_z_smooth_sh, num_m_smooth_sh
57 heimbach 1.1
58 jmc 1.22 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 heimbach 1.1 _BEGIN_MASTER(myThid)
71    
72 jmc 1.24 WRITE(msgBuf,'(A)') ' KPP_READPARMS: opening data.kpp'
73 heimbach 1.1 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
74 jmc 1.24 & SQUEEZE_RIGHT, myThid )
75 heimbach 1.1
76     CALL OPEN_COPY_DATA_FILE(
77 jmc 1.24 I 'data.kpp', 'KPP_READPARMS',
78 heimbach 1.1 O iUnit,
79     I myThid )
80    
81     C-- set default KPP vertical mixing parameters
82 mlosch 1.21 kpp_freq = deltaTClock
83     kpp_dumpFreq = dumpFreq
84     kpp_taveFreq = taveFreq
85     KPPwriteState = .FALSE.
86     KPPuseDoubleDiff = .FALSE.
87     LimitHblStable = .TRUE.
88 jmc 1.12 KPP_ghatUseTotalDiffus = .FALSE.
89 dfer 1.18 minKPPhbl = UNSET_RL
90 heimbach 1.1
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 jmc 1.16 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 heimbach 1.1
129     num_v_smooth_Ri = 0
130 jmc 1.16 Riinfty = 0.7 _d 0
131     BVSQcon = -0.2 _d -4
132 heimbach 1.1
133 jmc 1.16 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 heimbach 1.1
141 mlosch 1.21 C parameters for double diffusion routine "KPP_DOUBLEDIFF"
142    
143     Rrho0 = 1.9 _d 0
144     dsfmax = 10. _d -3
145    
146 heimbach 1.1 C parameters for subroutine "blmix"
147    
148     cstar = 10.
149    
150 jmc 1.24 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 heimbach 1.1 C-----------------------------------------------------------------------
158    
159     C-- Read settings from model parameter file "data.kpp".
160 jmc 1.24 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 heimbach 1.1 IF ( errIO .LT. 0 ) THEN
170     WRITE(msgBuf,'(A)')
171 jmc 1.24 & 'S/R KPP_READPARMS: Error reading parameter file "data.kpp"'
172     CALL PRINT_ERROR( msgBuf, myThid )
173 heimbach 1.1 WRITE(msgBuf,'(A)')
174 jmc 1.24 & '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 heimbach 1.1 ENDIF
182    
183 mlosch 1.23 #ifdef SINGLE_DISK_IO
184 heimbach 1.1 CLOSE(iUnit)
185 mlosch 1.23 #else
186     CLOSE(iUnit,STATUS='DELETE')
187     #endif /* SINGLE_DISK_IO */
188 heimbach 1.1
189 jmc 1.24 WRITE(msgBuf,'(A)') ' KPP_READPARMS: finished reading data.kpp'
190 heimbach 1.1 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
191 jmc 1.24 & 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 heimbach 1.1
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 jmc 1.16 RETURN
239     END

  ViewVC Help
Powered by ViewVC 1.1.22