File indexing completed on 2025-11-07 06:08:37 UTC
view on githubraw file Latest commit b7411f1a on 2025-11-06 19:05:26 UTC
1d478690dc Patr*0001 #include "KPP_OPTIONS.h"
0002
c9c3d7103f Ed H*0003
0004
0005
0006
0007
1d478690dc Patr*0008 SUBROUTINE KPP_READPARMS( myThid )
0009
c9c3d7103f Ed H*0010
0011
0012
0013
0014 IMPLICIT NONE
1d478690dc Patr*0015 #include "SIZE.h"
0016 #include "EEPARAMS.h"
0017 #include "PARAMS.h"
0018 #include "KPP_PARAMS.h"
0019
c9c3d7103f Ed H*0020
1d478690dc Patr*0021 INTEGER myThid
c9c3d7103f Ed H*0022
1d478690dc Patr*0023
c9c3d7103f Ed H*0024
1d478690dc Patr*0025 #ifdef ALLOW_KPP
8ce97507dd Jean*0026
0027
0028
1d478690dc Patr*0029 CHARACTER*(MAX_LEN_MBUF) msgBuf
cee16b76ae Dimi*0030 INTEGER errIO, iUnit
8ce97507dd Jean*0031
0032
0033 INTEGER nRetired
0034 LOGICAL KPPmixingMaps
0035 INTEGER num_v_smooth_BV, num_z_smooth_sh, num_m_smooth_sh
b7411f1a84 Jean*0036 _RL kpp_taveFreq
1d478690dc Patr*0037
0038
0039 NAMELIST /KPP_PARM01/
0040 & kpp_freq, kpp_dumpFreq, kpp_taveFreq,
8ce97507dd Jean*0041 & KPPwriteState, KPP_ghatUseTotalDiffus,
00c7090dc0 Mart*0042 & KPPuseDoubleDiff, LimitHblStable, KPPuseSWfrac3D,
1d478690dc Patr*0043 & minKPPhbl,
0044 & epsln, phepsi, epsilon, vonk, dB_dz,
0045 & conc1, conam, concm, conc2, zetam,
0046 & conas, concs, conc3, zetas,
0047 & Ricr, cekman, cmonob, concv, hbf,
d6f292d8c0 Jean*0048 & zmin, zmax, umin, umax,
8ce97507dd Jean*0049 & num_v_smooth_Ri,
1d478690dc Patr*0050 & Riinfty, BVSQcon, difm0, difs0, dift0,
0051 & difmcon, difscon, diftcon,
ae4c29e0db Jean*0052 & Rrho0, dsfmax,
8ce97507dd Jean*0053 & cstar,
0054 & KPPmixingMaps,
0055 & num_v_smooth_BV, num_z_smooth_sh, num_m_smooth_sh
1d478690dc Patr*0056
ae4c29e0db Jean*0057
0058
0059 IF ( .NOT.useKPP ) THEN
0060
0061 _BEGIN_MASTER(myThid)
0062
0063
0064 CALL PACKAGES_UNUSED_MSG( 'useKPP', ' ', ' ' )
0065 _END_MASTER(myThid)
0066 RETURN
0067 ENDIF
0068
1d478690dc Patr*0069 _BEGIN_MASTER(myThid)
0070
8ce97507dd Jean*0071 WRITE(msgBuf,'(A)') ' KPP_READPARMS: opening data.kpp'
1d478690dc Patr*0072 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
8ce97507dd Jean*0073 & SQUEEZE_RIGHT, myThid )
93abbf4908 Jean*0074 errIO = 0
1d478690dc Patr*0075 CALL OPEN_COPY_DATA_FILE(
8ce97507dd Jean*0076 I 'data.kpp', 'KPP_READPARMS',
1d478690dc Patr*0077 O iUnit,
0078 I myThid )
0079
0080
e750a5e49e Mart*0081 kpp_freq = deltaTClock
0082 kpp_dumpFreq = dumpFreq
0083 KPPwriteState = .FALSE.
0084 KPPuseDoubleDiff = .FALSE.
0085 LimitHblStable = .TRUE.
08300bd1e7 Jean*0086 KPP_ghatUseTotalDiffus = .FALSE.
00c7090dc0 Mart*0087 KPPuseSWfrac3D = .FALSE.
ee7edf0613 Davi*0088 minKPPhbl = UNSET_RL
1d478690dc Patr*0089
0090
0091
0092
0093
d6f292d8c0 Jean*0094
0095 epsln = 1. _d -20
0096 phepsi = 1. _d -10
0097 epsilon = 1. _d -1
0098 vonk = 0.4 _d 0
0099 dB_dz = 5.2 _d -5
0100 conc1 = 5. _d 0
0101 conam = 1.257 _d 0
0102 concm = 8.380 _d 0
0103 conc2 = 16. _d 0
0104 zetam = -0.2 _d 0
0105 conas = -28.86 _d 0
0106 concs = 98.96 _d 0
0107 conc3 = 16. _d 0
0108 zetas = -1. _d 0
0109
0110
0111
0112 Ricr = 0.3 _d 0
0113 cekman = 0.7 _d 0
0114 cmonob = 1. _d 0
0115 concv = 1.8 _d 0
0116 hbf = 1. _d 0
0117
0118
0119
0120
0121 zmin = -4. _d -7
0122 zmax = 0. _d 0
0123 umin = 0. _d 0
0124 umax = 4. _d -2
0125
0126
1d478690dc Patr*0127
0128 num_v_smooth_Ri = 0
d6f292d8c0 Jean*0129 Riinfty = 0.7 _d 0
0130 BVSQcon = -0.2 _d -4
1d478690dc Patr*0131
d6f292d8c0 Jean*0132 difm0 = 5. _d -3
0133 difs0 = 5. _d -3
0134 dift0 = 5. _d -3
1d478690dc Patr*0135
d6f292d8c0 Jean*0136 difmcon = 0.1 _d 0
0137 difscon = 0.1 _d 0
0138 diftcon = 0.1 _d 0
1d478690dc Patr*0139
e750a5e49e Mart*0140
0141
0142 Rrho0 = 1.9 _d 0
0143 dsfmax = 10. _d -3
0144
1d478690dc Patr*0145
0146
0147 cstar = 10.
0148
8ce97507dd Jean*0149
0150 nRetired = 0
0151 KPPmixingMaps = .FALSE.
0152 num_v_smooth_BV = UNSET_I
0153 num_z_smooth_sh = UNSET_I
0154 num_m_smooth_sh = UNSET_I
b7411f1a84 Jean*0155 kpp_taveFreq = UNSET_RL
8ce97507dd Jean*0156
1d478690dc Patr*0157
0158
0159
8ce97507dd Jean*0160 WRITE(msgBuf,'(A)') ' KPP_READPARMS ; starts to read KPP_PARM01'
0161 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0162 & SQUEEZE_RIGHT, myThid )
0163 READ( UNIT=iUnit, NML=KPP_PARM01 )
0164
0165
0166
0167
0168
1d478690dc Patr*0169 IF ( errIO .LT. 0 ) THEN
0170 WRITE(msgBuf,'(A)')
8ce97507dd Jean*0171 & 'S/R KPP_READPARMS: Error reading parameter file "data.kpp"'
0172 CALL PRINT_ERROR( msgBuf, myThid )
1d478690dc Patr*0173 WRITE(msgBuf,'(A)')
8ce97507dd Jean*0174 & 'S/R KPP_READPARMS: Problem in namelist KPP_PARM01'
0175 CALL PRINT_ERROR( msgBuf, myThid )
0176 STOP 'ABNORMAL END: S/R KPP_READPARMS'
0177 ELSE
0178 WRITE(msgBuf,'(A)') ' KPP_READPARMS ; read KPP_PARM01 : OK'
0179 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0180 & SQUEEZE_RIGHT, myThid )
1d478690dc Patr*0181 ENDIF
0182
7a77863887 Mart*0183 #ifdef SINGLE_DISK_IO
1d478690dc Patr*0184 CLOSE(iUnit)
7a77863887 Mart*0185 #else
0186 CLOSE(iUnit,STATUS='DELETE')
0187 #endif /* SINGLE_DISK_IO */
1d478690dc Patr*0188
8ce97507dd Jean*0189 WRITE(msgBuf,'(A)') ' KPP_READPARMS: finished reading data.kpp'
1d478690dc Patr*0190 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
8ce97507dd Jean*0191 & SQUEEZE_RIGHT, myThid )
0192
b7411f1a84 Jean*0193
0194
8ce97507dd Jean*0195 IF ( KPPmixingMaps ) THEN
0196 nRetired = nRetired + 1
0197 WRITE(msgBuf,'(2A)') 'S/R KPP_READPARMS: "KPPmixingMaps"',
0198 & ' no longer allowed in file "data.kpp"'
0199 CALL PRINT_ERROR( msgBuf, myThid )
0200 ENDIF
0201 IF ( num_v_smooth_BV .NE. UNSET_I ) THEN
0202 nRetired = nRetired + 1
0203 WRITE(msgBuf,'(2A)') 'S/R KPP_READPARMS: "num_v_smooth_BV"',
0204 & ' no longer allowed in file "data.kpp"'
0205 CALL PRINT_ERROR( msgBuf, myThid )
0206 ENDIF
0207 IF ( num_z_smooth_sh .NE. UNSET_I ) THEN
0208 nRetired = nRetired + 1
0209 WRITE(msgBuf,'(2A)') 'S/R KPP_READPARMS: "num_z_smooth_sh"',
0210 & ' no longer allowed in file "data.kpp"'
0211 CALL PRINT_ERROR( msgBuf, myThid )
0212 ENDIF
0213 IF ( num_m_smooth_sh .NE. UNSET_I ) THEN
0214 nRetired = nRetired + 1
0215 WRITE(msgBuf,'(2A)') 'S/R KPP_READPARMS: "num_m_smooth_sh"',
0216 & ' no longer allowed in file "data.kpp"'
0217 CALL PRINT_ERROR( msgBuf, myThid )
0218 ENDIF
b7411f1a84 Jean*0219 IF ( kpp_taveFreq .NE. UNSET_RL ) THEN
0220 WRITE(msgBuf,'(2A)') 'KPP_READPARMS: "kpp_taveFreq"',
0221 & ' is no longer allowed in file "data.kpp"'
0222 CALL PRINT_ERROR( msgBuf, myThid )
0223 WRITE(msgBuf,'(2A)') 'KPP_READPARMS: ',
0224 & ' since "pkg/timeave" has been removed.'
0225 CALL PRINT_ERROR( msgBuf, myThid )
0226 nRetired = nRetired + 1
0227 ENDIF
8ce97507dd Jean*0228
0229 IF ( nRetired .GT. 0 ) THEN
0230 WRITE(msgBuf,'(2A)') 'S/R KPP_READPARMS: ',
0231 & 'Error reading file "data.kpp":'
0232 CALL PRINT_ERROR( msgBuf, myThid )
0233 WRITE(msgBuf,'(I4,A)') nRetired,
0234 & ' out-of-date parameters were found in the namelist(s)'
0235 CALL PRINT_ERROR( msgBuf, myThid )
0236
0237 CALL ALL_PROC_DIE( 0 )
0238 STOP 'ABNORMAL END: S/R KPP_READPARMS'
0239 ENDIF
1d478690dc Patr*0240
0241 _END_MASTER(myThid)
0242
0243
0244 _BARRIER
0245
0246 #endif /* ALLOW_KPP */
0247
d6f292d8c0 Jean*0248 RETURN
0249 END