File indexing completed on 2025-04-19 05:07:54 UTC
view on githubraw file Latest commit 79b5d577 on 2025-04-18 19:55:23 UTC
6d54cf9ca1 Ed H*0001 #include "PACKAGES_CONFIG.h"
5cd64f209f Jean*0002 #include "CPP_OPTIONS.h"
dc3adfb09b Jean*0003 #ifdef ALLOW_MOM_COMMON
0004 # include "MOM_COMMON_OPTIONS.h"
0005 #endif
aecc8b0f47 Mart*0006 #ifdef ALLOW_CTRL
0007 # include "CTRL_OPTIONS.h"
0008 #endif
5cd64f209f Jean*0009
0010
0011
0012
0013 SUBROUTINE CONFIG_CHECK( myThid )
0014
0015
0016
0017
0018
0019
0020
0021
46979d29da Jean*0022
5cd64f209f Jean*0023
0024
0025 IMPLICIT NONE
0026
0027 #include "SIZE.h"
0028 #include "EEPARAMS.h"
0029 #include "PARAMS.h"
7bb5a8a109 Jean*0030 #ifdef ALLOW_MOM_COMMON
0031 # include "MOM_VISC.h"
0032 #endif
5cd64f209f Jean*0033
0034
79b5d5775c Jean*0035
5cd64f209f Jean*0036 INTEGER myThid
0037
0038
79b5d5775c Jean*0039
0040
5cd64f209f Jean*0041 CHARACTER*(MAX_LEN_MBUF) msgBuf
fbf4b71a66 Jean*0042 INTEGER errCount
5cd64f209f Jean*0043
0044
51a413ac3c Jean*0045 _BEGIN_MASTER(myThid)
0046 WRITE(msgBuf,'(A)')
0047 &'// ======================================================='
0048 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0049 & SQUEEZE_RIGHT, myThid )
0050 WRITE(msgBuf,'(A)') '// Check Model config. (CONFIG_CHECK):'
0051 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
0052 & SQUEEZE_RIGHT, myThid )
0053 _END_MASTER(myThid)
0054
fbf4b71a66 Jean*0055
0056
0057 _BEGIN_MASTER(myThid)
0058 errCount = 0
0059
5cd64f209f Jean*0060
0061
51575f66de Mart*0062 #ifndef INCLUDE_CONVECT_CALL
0063
0064 IF ( cAdjFreq .NE. 0. ) THEN
0065 #ifdef INCLUDE_CONVECT_INI_CALL
0066 WRITE(msgBuf,'(2A)') '** Warning ** CONFIG_CHECK: ',
0067 & 'Convective-Adjustment (cAdjFreq) turned off (except INI)'
0068 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0069 & SQUEEZE_RIGHT, myThid )
0070 WRITE(msgBuf,'(2A)') '** Warning ** CONFIG_CHECK: ',
0071 & ' without "#define INCLUDE_CONVECT_CALL" in CPP_OPTIONS.h'
0072 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0073 & SQUEEZE_RIGHT, myThid )
0074 #else
0075 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0076 & 'Cannot use Convective-Adjustment (cAdjFreq) without'
0077 CALL PRINT_ERROR( msgBuf, myThid )
0078 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0079 & ' defining INCLUDE_CONVECT_(CALL/INI_CALL) in CPP_OPTIONS.h'
0080 CALL PRINT_ERROR( msgBuf, myThid )
0081 errCount = errCount + 1
0082 #endif
0083 ENDIF
0084 #endif /* ndef INCLUDE_CONVECT_CALL */
0085
53176ebafb Dimi*0086
0087
6c944fd806 Jean*0088 #ifndef ALLOW_3D_DIFFKR
53176ebafb Dimi*0089 IF (diffKrFile.NE.' ') THEN
0090 WRITE(msgBuf,'(A)')
0091 & 'CONFIG_CHECK: diffKrFile is set but never used.'
3c3b37da6e Jean*0092 CALL PRINT_ERROR( msgBuf, myThid )
db8d49beca Jean*0093 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0094 & 'Re-compile with: "#define ALLOW_3D_DIFFKR"'
3c3b37da6e Jean*0095 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0096 errCount = errCount + 1
53176ebafb Dimi*0097 ENDIF
0098 #endif
0099
bb2fd3f1ad Jean*0100 #ifdef EXCLUDE_PCELL_MIX_CODE
0101 IF ( interDiffKr_pCell .OR. interViscAr_pCell
0102 & .OR. pCellMix_select.NE.0 ) THEN
0103 IF ( interDiffKr_pCell ) THEN
0104 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0105 & 'Cannot use interDiffKr_pCell=.TRUE.'
0106 CALL PRINT_ERROR( msgBuf, myThid )
0107 ENDIF
0108 IF ( interViscAr_pCell ) THEN
0109 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0110 & 'Cannot use interViscAr_pCell=.TRUE.'
0111 CALL PRINT_ERROR( msgBuf, myThid )
0112 ENDIF
0113 IF ( pCellMix_select.NE.0 ) THEN
0114 WRITE(msgBuf,'(2A,I6)') 'CONFIG_CHECK: ',
0115 & 'Cannot use pCellMix_select=', pCellMix_select
0116 CALL PRINT_ERROR( msgBuf, myThid )
0117 ENDIF
0118 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: when compiled ',
0119 & 'with "#define EXCLUDE_PCELL_MIX_CODE" in CPP_OPTIONS.h'
0120 CALL PRINT_ERROR( msgBuf, myThid )
0121 errCount = errCount + 1
0122 ENDIF
0123 #endif
0124
9dd0c3e7d6 Jean*0125 #ifndef ALLOW_LEITH_QG
0126
0127
0128 IF ( viscC2LeithQG.NE.zeroRL ) THEN
0129 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0130 & 'must #define ALLOW_LEITH_QG in MOM_COMMON_OPTIONS.h'
0131 CALL PRINT_ERROR( msgBuf, myThid )
0132 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0133 & ' in order to use QG-Leith (viscC2LeithQG > 0)'
0134 CALL PRINT_ERROR( msgBuf, myThid )
0135 errCount = errCount + 1
0136 ENDIF
0137 #endif /* ALLOW_LEITH_QG */
0138
dc3adfb09b Jean*0139 #ifndef ALLOW_SMAG_3D
0140 IF ( useSmag3D ) THEN
0141 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0142 & 'Cannot set useSmag3D=TRUE when compiled with'
0143 CALL PRINT_ERROR( msgBuf, myThid )
0144 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0145 & '"#undef ALLOW_SMAG_3D" in MOM_COMMON_OPTIONS.h'
0146 CALL PRINT_ERROR( msgBuf, myThid )
0147 errCount = errCount + 1
0148 ENDIF
0149 #endif
2d5bb917cc Jean*0150 #ifndef ALLOW_SMAG_3D_DIFFUSIVITY
0151 IF ( smag3D_diffCoeff.NE.zeroRL ) THEN
0152 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0153 & 'Cannot use smag3D_diffCoeff > 0 when compiled with'
0154 CALL PRINT_ERROR( msgBuf, myThid )
0155 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0156 & '"#undef ALLOW_SMAG_3D_DIFFUSIVITY" in CPP_OPTIONS.h'
0157 CALL PRINT_ERROR( msgBuf, myThid )
0158 errCount = errCount + 1
0159 ENDIF
0160 #endif
dc3adfb09b Jean*0161
5cd64f209f Jean*0162 #ifndef ALLOW_NONHYDROSTATIC
8dc8e44fac Jean*0163 IF (use3Dsolver) THEN
0164 WRITE(msgBuf,'(A)')
5cd64f209f Jean*0165 & 'CONFIG_CHECK: #undef ALLOW_NONHYDROSTATIC and'
3c3b37da6e Jean*0166 CALL PRINT_ERROR( msgBuf, myThid )
f9fd562f68 Jean*0167 IF ( implicitIntGravWave ) WRITE(msgBuf,'(A)')
0168 & 'CONFIG_CHECK: implicitIntGravWave is TRUE'
0169 IF ( nonHydrostatic ) WRITE(msgBuf,'(A)')
5cd64f209f Jean*0170 & 'CONFIG_CHECK: nonHydrostatic is TRUE'
3c3b37da6e Jean*0171 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0172 errCount = errCount + 1
5cd64f209f Jean*0173 ENDIF
0174 #endif
0175
fdf5fb6af0 Jean*0176 #ifndef ALLOW_QHYD_STAGGER_TS
0177 IF ( quasiHydrostatic .AND. staggerTimeStep ) THEN
0178 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0179 & 'Cannot use quasiHydrostatic with staggerTimeStep'
0180 CALL PRINT_ERROR( msgBuf, myThid )
0181 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: when compiled ',
0182 & 'with "#undef ALLOW_QHYD_STAGGER_TS" in CPP_OPTIONS.h'
0183 CALL PRINT_ERROR( msgBuf, myThid )
0184 errCount = errCount + 1
0185 ENDIF
0186 #endif
0187
92aa7be6ff Jean*0188 #ifndef ALLOW_ADAMSBASHFORTH_3
0189 IF ( alph_AB.NE.UNSET_RL .OR. beta_AB.NE.UNSET_RL ) THEN
0190 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0191 & '#undef ALLOW_ADAMSBASHFORTH_3 but alph_AB,beta_AB'
3c3b37da6e Jean*0192 CALL PRINT_ERROR( msgBuf, myThid )
92aa7be6ff Jean*0193 WRITE(msgBuf,'(A,1P2E20.7)')
0194 & 'CONFIG_CHECK: are set to:',alph_AB,beta_AB
3c3b37da6e Jean*0195 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0196 errCount = errCount + 1
92aa7be6ff Jean*0197 ENDIF
0198 #endif
0199
b9d351b225 Jean*0200 #ifndef INCLUDE_IMPLVERTADV_CODE
8dc8e44fac Jean*0201 IF ( momImplVertAdv ) THEN
0202 WRITE(msgBuf,'(A)')
b9d351b225 Jean*0203 & 'CONFIG_CHECK: #undef INCLUDE_IMPLVERTADV_CODE'
3c3b37da6e Jean*0204 CALL PRINT_ERROR( msgBuf, myThid )
b9d351b225 Jean*0205 WRITE(msgBuf,'(A)')
0206 & 'CONFIG_CHECK: but momImplVertAdv is TRUE'
3c3b37da6e Jean*0207 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0208 errCount = errCount + 1
b9d351b225 Jean*0209 ENDIF
8dc8e44fac Jean*0210 IF ( tempImplVertAdv ) THEN
0211 WRITE(msgBuf,'(A)')
b9d351b225 Jean*0212 & 'CONFIG_CHECK: #undef INCLUDE_IMPLVERTADV_CODE'
3c3b37da6e Jean*0213 CALL PRINT_ERROR( msgBuf, myThid )
b9d351b225 Jean*0214 WRITE(msgBuf,'(A)')
0215 & 'CONFIG_CHECK: but tempImplVertAdv is TRUE'
3c3b37da6e Jean*0216 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0217 errCount = errCount + 1
b9d351b225 Jean*0218 ENDIF
8dc8e44fac Jean*0219 IF ( saltImplVertAdv ) THEN
0220 WRITE(msgBuf,'(A)')
b9d351b225 Jean*0221 & 'CONFIG_CHECK: #undef INCLUDE_IMPLVERTADV_CODE'
3c3b37da6e Jean*0222 CALL PRINT_ERROR( msgBuf, myThid )
b9d351b225 Jean*0223 WRITE(msgBuf,'(A)')
0224 & 'CONFIG_CHECK: but saltImplVertAdv is TRUE'
3c3b37da6e Jean*0225 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0226 errCount = errCount + 1
b9d351b225 Jean*0227 ENDIF
1883875e84 Jean*0228 IF ( dTtracerLev(1).NE.dTtracerLev(Nr) .AND. implicitDiffusion
8dc8e44fac Jean*0229 & .AND. ( saltStepping .OR. tempStepping .OR. usePTRACERS )
1883875e84 Jean*0230 & ) THEN
8dc8e44fac Jean*0231 WRITE(msgBuf,'(A)')
1883875e84 Jean*0232 & 'CONFIG_CHECK: #undef INCLUDE_IMPLVERTADV_CODE'
3c3b37da6e Jean*0233 CALL PRINT_ERROR( msgBuf, myThid )
1883875e84 Jean*0234 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0235 & 'but implicitDiffusion=T with non-uniform dTtracerLev'
3c3b37da6e Jean*0236 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0237 errCount = errCount + 1
1883875e84 Jean*0238 ENDIF
9e44938df7 Jean*0239 IF ( selectImplicitDrag.GT.0 ) THEN
0240 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0241 & 'Needs to compile with #define INCLUDE_IMPLVERTADV_CODE'
0242 CALL PRINT_ERROR( msgBuf, myThid )
0243 WRITE(msgBuf,'(A)')
0244 & 'CONFIG_CHECK: to use selectImplicitDrag > 0 ==> STOP here'
0245 CALL PRINT_ERROR( msgBuf, myThid )
0246 errCount = errCount + 1
0247 ENDIF
0248 #endif
0249
0250 #ifndef ALLOW_SOLVE4_PS_AND_DRAG
0251 IF ( selectImplicitDrag.EQ.2 ) THEN
0252 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0253 & 'Needs to compile with #define ALLOW_SOLVE4_PS_AND_DRAG'
0254 CALL PRINT_ERROR( msgBuf, myThid )
0255 WRITE(msgBuf,'(A)')
0256 & 'CONFIG_CHECK: to use selectImplicitDrag = 2 ==> STOP here'
0257 CALL PRINT_ERROR( msgBuf, myThid )
0258 errCount = errCount + 1
0259 ENDIF
b9d351b225 Jean*0260 #endif
0261
02d90fb24c Jean*0262 #ifdef ALLOW_AUTODIFF
d666da8b50 Gael*0263 IF ( momImplVertAdv ) THEN
0264 WRITE(msgBuf,'(A)')
0265 & 'CONFIG_CHECK: momImplVertAdv is not yet'
0266 CALL PRINT_ERROR( msgBuf, myThid )
0267 WRITE(msgBuf,'(A)')
0268 & 'CONFIG_CHECK: supported in adjoint mode'
0269 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0270 errCount = errCount + 1
d666da8b50 Gael*0271 ENDIF
9e44938df7 Jean*0272 IF ( selectImplicitDrag.GT.0 ) THEN
0273 WRITE(msgBuf,'(A)')
0274 & 'CONFIG_CHECK: selectImplicitDrag is not yet'
0275 CALL PRINT_ERROR( msgBuf, myThid )
0276 WRITE(msgBuf,'(A)')
0277 & 'CONFIG_CHECK: supported in adjoint mode'
0278 CALL PRINT_ERROR( msgBuf, myThid )
0279 errCount = errCount + 1
0280 ENDIF
d666da8b50 Gael*0281 #endif
0282
88bca52623 Jean*0283 #ifdef ALLOW_DEPTH_CONTROL
0284 IF ( useOBCS ) THEN
0285 WRITE(msgBuf,'(A)')
0286 & 'CONFIG_CHECK: DEPTH_CONTROL code not compatible with OBCS'
0287 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0288 errCount = errCount + 1
88bca52623 Jean*0289 ENDIF
0290 #endif
0291
5cd64f209f Jean*0292 #ifndef EXACT_CONSERV
8dc8e44fac Jean*0293 IF (exactConserv) THEN
0294 WRITE(msgBuf,'(A)')
5cd64f209f Jean*0295 & 'CONFIG_CHECK: #undef EXACT_CONSERV and'
3c3b37da6e Jean*0296 CALL PRINT_ERROR( msgBuf, myThid )
5cd64f209f Jean*0297 WRITE(msgBuf,'(A)')
0298 & 'CONFIG_CHECK: exactConserv is TRUE'
3c3b37da6e Jean*0299 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0300 errCount = errCount + 1
5cd64f209f Jean*0301 ENDIF
0302 #endif
0303
0304 #ifndef NONLIN_FRSURF
8dc8e44fac Jean*0305 IF (nonlinFreeSurf.NE.0) THEN
0306 WRITE(msgBuf,'(A)')
5cd64f209f Jean*0307 & 'CONFIG_CHECK: #undef NONLIN_FRSURF and'
3c3b37da6e Jean*0308 CALL PRINT_ERROR( msgBuf, myThid )
5cd64f209f Jean*0309 WRITE(msgBuf,'(A)')
0310 & 'CONFIG_CHECK: nonlinFreeSurf is non-zero'
3c3b37da6e Jean*0311 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0312 errCount = errCount + 1
5cd64f209f Jean*0313 ENDIF
0314 #endif
0315
a97467b673 Jean*0316 #ifndef NONLIN_FRSURF
0317 IF (select_rStar .NE. 0) THEN
8dc8e44fac Jean*0318 WRITE(msgBuf,'(A)')
a97467b673 Jean*0319 & 'CONFIG_CHECK: rStar is part of NonLin-FS '
3c3b37da6e Jean*0320 CALL PRINT_ERROR( msgBuf, myThid )
a97467b673 Jean*0321 WRITE(msgBuf,'(A)')
f15994caab Jean*0322 & 'CONFIG_CHECK: ==> set #define NONLIN_FRSURF to use it'
3c3b37da6e Jean*0323 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0324 errCount = errCount + 1
a97467b673 Jean*0325 ENDIF
0326 #endif /* NONLIN_FRSURF */
0327
f15994caab Jean*0328 #ifdef DISABLE_RSTAR_CODE
0329 IF ( select_rStar.NE.0 ) THEN
0330 WRITE(msgBuf,'(A)')
0331 & 'CONFIG_CHECK: rStar code disable (DISABLE_RSTAR_CODE defined)'
0332 CALL PRINT_ERROR( msgBuf, myThid )
0333 WRITE(msgBuf,'(A)')
0334 & 'CONFIG_CHECK: ==> set #undef DISABLE_RSTAR_CODE to use it'
0335 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0336 errCount = errCount + 1
f15994caab Jean*0337 ENDIF
0338 #endif /* DISABLE_RSTAR_CODE */
0339
0340 #ifdef DISABLE_SIGMA_CODE
0341 IF ( selectSigmaCoord.NE.0 ) THEN
0342 WRITE(msgBuf,'(A)')
0343 & 'CONFIG_CHECK: Sigma code disable (DISABLE_SIGMA_CODE defined)'
0344 CALL PRINT_ERROR( msgBuf, myThid )
0345 WRITE(msgBuf,'(A)')
0346 & 'CONFIG_CHECK: ==> set #undef DISABLE_SIGMA_CODE to use it'
0347 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0348 errCount = errCount + 1
f15994caab Jean*0349 ENDIF
0350 #endif /* DISABLE_SIGMA_CODE */
0351
5cd64f209f Jean*0352 #ifdef USE_NATURAL_BCS
8dc8e44fac Jean*0353 WRITE(msgBuf,'(A)')
745a0098ab Jean*0354 & 'CONFIG_CHECK: USE_NATURAL_BCS option has been replaced'
3c3b37da6e Jean*0355 CALL PRINT_ERROR( msgBuf, myThid )
5cd64f209f Jean*0356 WRITE(msgBuf,'(A)')
745a0098ab Jean*0357 & 'CONFIG_CHECK: by useRealFreshWaterFlux=TRUE in data file'
3c3b37da6e Jean*0358 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0359 errCount = errCount + 1
745a0098ab Jean*0360 #endif
0361
6c944fd806 Jean*0362 #ifndef ALLOW_ADDFLUID
0363 IF ( selectAddFluid.NE.0 ) THEN
0364 WRITE(msgBuf,'(A)')
db8d49beca Jean*0365 & 'CONFIG_CHECK: #undef ALLOW_ADDFLUID (CPP_OPTIONS.h) and'
6c944fd806 Jean*0366 CALL PRINT_ERROR( msgBuf, myThid )
0367 WRITE(msgBuf,'(A,I4,A)') 'CONFIG_CHECK: selectAddFluid=',
0368 & selectAddFluid, ' is not zero'
0369 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0370 errCount = errCount + 1
6c944fd806 Jean*0371 ENDIF
0372 #endif /* ALLOW_ADDFLUID */
0373
463053c692 Jean*0374
0375
0376 #ifndef ATMOSPHERIC_LOADING
0377 IF (pLoadFile.NE.' ') THEN
0378 WRITE(msgBuf,'(A)')
0379 & 'CONFIG_CHECK: pLoadFile is set but you have not'
3c3b37da6e Jean*0380 CALL PRINT_ERROR( msgBuf, myThid )
463053c692 Jean*0381 WRITE(msgBuf,'(A)')
db8d49beca Jean*0382 & ' compiled the model with the pressure loading code.'
3c3b37da6e Jean*0383 CALL PRINT_ERROR( msgBuf, myThid )
f4db9965d8 Jean*0384 WRITE(msgBuf,'(A)')
db8d49beca Jean*0385 & ' Re-compile with: "#define ATMOSPHERIC_LOADING"'
3c3b37da6e Jean*0386 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0387 errCount = errCount + 1
f4db9965d8 Jean*0388 ENDIF
0389 IF ( useRealFreshWaterFlux .AND. useThSIce ) THEN
0390 WRITE(msgBuf,'(A)')
0391 & 'CONFIG_CHECK: sIceLoad is computed but'
3c3b37da6e Jean*0392 CALL PRINT_ERROR( msgBuf, myThid )
f4db9965d8 Jean*0393 WRITE(msgBuf,'(A)')
db8d49beca Jean*0394 & ' pressure loading code is not compiled.'
3c3b37da6e Jean*0395 CALL PRINT_ERROR( msgBuf, myThid )
f4db9965d8 Jean*0396 WRITE(msgBuf,'(A)')
db8d49beca Jean*0397 & ' Re-compile with: "#define ATMOSPHERIC_LOADING"'
0398 CALL PRINT_ERROR( msgBuf, myThid )
0399 errCount = errCount + 1
0400 ENDIF
0401 #endif
0402
59b35dd864 Jean*0403 IF ( geothermalFile.NE.' ' ) THEN
0404
0405 #ifdef USE_OLD_EXTERNAL_FORCING
0406 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0407 & 'geothermalFile is set but Geothermal-Flux code'
0408 CALL PRINT_ERROR( msgBuf, myThid )
0409 WRITE(msgBuf,'(2A)')' is missing.',
0410 & ' Re-compile with "#undef USE_OLD_EXTERNAL_FORCING"'
0411 CALL PRINT_ERROR( msgBuf, myThid )
0412 errCount = errCount + 1
0413 #endif /* USE_OLD_EXTERNAL_FORCING */
aaea5aaeec Jean*0414
0415 #ifndef ALLOW_GEOTHERMAL_FLUX
0416 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0417 & 'geothermalFile is set but Geothermal-Flux code'
0418 CALL PRINT_ERROR( msgBuf, myThid )
0419 WRITE(msgBuf,'(2A)')' is not compiled.',
0420 & ' Re-compile with "#define ALLOW_GEOTHERMAL_FLUX"'
0421 CALL PRINT_ERROR( msgBuf, myThid )
0422 errCount = errCount + 1
0423 #endif /* ALLOW_GEOTHERMAL_FLUX */
59b35dd864 Jean*0424 ENDIF
0425
0426
0427 #ifdef USE_OLD_EXTERNAL_FORCING
0428 IF ( momTidalForcing ) THEN
0429 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0430 & 'momTidalForcing is set but Tidal forcing code'
0431 CALL PRINT_ERROR( msgBuf, myThid )
0432 WRITE(msgBuf,'(2A)')' is missing.',
0433 & ' Re-compile with "#undef USE_OLD_EXTERNAL_FORCING"'
0434 CALL PRINT_ERROR( msgBuf, myThid )
0435 errCount = errCount + 1
0436 ENDIF
0437 #endif /* USE_OLD_EXTERNAL_FORCING */
aaea5aaeec Jean*0438
db8d49beca Jean*0439 #ifndef ALLOW_FRICTION_HEATING
0440 IF ( addFrictionHeating ) THEN
0441 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: addFrictionHeating=T',
0442 & ' but FRICTIONAL_HEATING code is not compiled.'
0443 CALL PRINT_ERROR( msgBuf, myThid )
0444 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: Re-compile with:',
0445 & ' "#define ALLOW_FRICTION_HEATING" (CPP_OPTIONS.h)'
3c3b37da6e Jean*0446 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0447 errCount = errCount + 1
463053c692 Jean*0448 ENDIF
0449 #endif
0450
7e00d7e8f9 Jean*0451 #ifdef ALLOW_BALANCE_FLUXES
0452 IF ( selectBalanceEmPmR.LT.0 .OR. selectBalanceEmPmR.GT.2 ) THEN
0453 WRITE(msgBuf,'(2A,I6,A)') 'CONFIG_CHECK: ',
0454 & 'selectBalanceEmPmR=', selectBalanceEmPmR,' : invalid value'
0455 CALL PRINT_ERROR( msgBuf, myThid )
0456 errCount = errCount + 1
0457 ENDIF
0458 #else /* ALLOW_BALANCE_FLUXES */
0459 IF ( selectBalanceEmPmR.NE.0 .OR. balanceQnet ) THEN
2e21c62c84 Mart*0460 WRITE(msgBuf,'(A,A)')
0461 & 'CONFIG_CHECK: balanceEmPmR/Qnet is set but balance code ',
0462 & 'is not compiled.'
3c3b37da6e Jean*0463 CALL PRINT_ERROR( msgBuf, myThid )
db8d49beca Jean*0464 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0465 & 'Re-compile with: ALLOW_BALANCE_FLUXES defined'
3c3b37da6e Jean*0466 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0467 errCount = errCount + 1
fc64655a31 Dimi*0468 ENDIF
7e00d7e8f9 Jean*0469 #endif /* ALLOW_BALANCE_FLUXES */
fc64655a31 Dimi*0470
9e3a303fa3 Gael*0471 #ifndef ALLOW_BALANCE_RELAX
0472 IF (balanceThetaClimRelax .OR. balanceSaltClimRelax) THEN
0473 WRITE(msgBuf,'(A,A)')
0474 & 'CONFIG_CHECK: balanceTheta/SaltClimRelax is set ',
0475 & 'but balance code is not compiled.'
0476 CALL PRINT_ERROR( msgBuf, myThid )
db8d49beca Jean*0477 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
9e3a303fa3 Gael*0478 & 'Re-compile with ALLOW_BALANCE_RELAX defined'
0479 CALL PRINT_ERROR( msgBuf, myThid )
0480 errCount = errCount + 1
0481 ENDIF
0482 #endif
0483
aecc8b0f47 Mart*0484 #ifndef ALLOW_CG2D_NSA
0485 IF (useNSACGSolver) THEN
0486 WRITE(msgBuf,'(A,A)')
0487 & 'CONFIG_CHECK: useNSACGSolver = .TRUE., but CG2D_NSA ',
0488 & 'code is not compiled.'
0489 CALL PRINT_ERROR( msgBuf, myThid )
0490 WRITE(msgBuf,'(A)')
0491 & 'CONFIG_CHECK: Re-compile with ALLOW_CG2D_NSA defined'
0492 CALL PRINT_ERROR( msgBuf, myThid )
0493 errCount = errCount + 1
0494 ENDIF
0495 #endif /* ALLOW_CG2D_NSA */
0496
c26312e441 Mart*0497 #ifndef ALLOW_SRCG
0498 IF (useSRCGSolver) THEN
0499 WRITE(msgBuf,'(A,A)')
0500 & 'CONFIG_CHECK: useSRCGSolver = .TRUE., but single reduction ',
0501 & 'code is not compiled.'
3c3b37da6e Jean*0502 CALL PRINT_ERROR( msgBuf, myThid )
c26312e441 Mart*0503 WRITE(msgBuf,'(A)')
0504 & 'CONFIG_CHECK: Re-compile with ALLOW_SRCG defined'
3c3b37da6e Jean*0505 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0506 errCount = errCount + 1
c26312e441 Mart*0507 ENDIF
0508 #endif /* ALLOW_SRCG */
0509
ab47de63dc Mart*0510 #ifndef ALLOW_BOTTOMDRAG_ROUGHNESS
0511 IF (zRoughBot .GT. 0.) THEN
0512 WRITE(msgBuf,'(A,A)') 'CONFIG_CHECK: zRoughBot > 0.',
0513 & ' but bottom drag code for roughness length is not compiled'
0514 CALL PRINT_ERROR( msgBuf, myThid )
0515 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: Re-compile with',
0516 & ' #define ALLOW_BOTTOMDRAG_ROUGHNESS (MOM_COMMON_OPTIONS.h)'
0517 CALL PRINT_ERROR( msgBuf, myThid )
0518 errCount = errCount + 1
0519 ENDIF
0520 #endif /* ALLOW_BOTTOMDRAG_ROUGHNESS */
0521
aecc8b0f47 Mart*0522 IF ( useNSACGSolver .AND. useSRCGSolver ) THEN
0523 WRITE(msgBuf,'(A,A)')
0524 & 'CONFIG_CHECK: both useNSACGSolver and ',
0525 & 'useSRCGSolver = .TRUE., this is not allowed.'
0526 CALL PRINT_ERROR( msgBuf, myThid )
0527 errCount = errCount + 1
0528 ENDIF
0529
745a0098ab Jean*0530
0531
c7ad17745a Jean*0532
745a0098ab Jean*0533
aa6b2555c8 Jean*0534 IF ( ( OLx.LT.2 .OR. OLy.LT.2 ) .AND. momStepping ) THEN
0535
0536
0537
0538
0539 WRITE(msgBuf,'(A,A)') 'CONFIG_CHECK: Cannot use momStepping',
0540 & ' with overlap (OLx,OLy) smaller than 2'
0541 CALL PRINT_ERROR( msgBuf, myThid )
0542 errCount = errCount + 1
0543 ENDIF
7be5c07bb8 Jean*0544 IF ( ( OLx.LT.3 .OR. OLy.LT.3 ) .AND.
5f70aa61cc Jean*0545 & ( viscC4leithD.NE.0. .OR. viscC4leith.NE.0.
0546 & .OR. viscC4smag.NE.0. .OR. viscA4Grid.NE.0.
0547 & .OR. viscA4D.NE.0. .OR. viscA4Z.NE.0. ) ) THEN
a67f2474bd Jean*0548 WRITE(msgBuf,'(A,A)')
0549 & 'CONFIG_CHECK: cannot use Biharmonic Visc. (viscA4) with',
7be5c07bb8 Jean*0550 & ' overlap (OLx,OLy) smaller than 3'
3c3b37da6e Jean*0551 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0552 errCount = errCount + 1
46979d29da Jean*0553 ENDIF
7be5c07bb8 Jean*0554 IF ( ( OLx.LT.3 .OR. OLy.LT.3 ) .AND.
f59d76b0dd Ed D*0555 & ( viscC2leithD.NE.0. .OR. viscC4leithD.NE.0. .OR.
0556 & viscC2LeithQG.NE.0.)
5f70aa61cc Jean*0557 & ) THEN
0558 WRITE(msgBuf,'(A,A)')
f59d76b0dd Ed D*0559 & 'CONFIG_CHECK: cannot use Leith Visc.(div.part or QG) with',
7be5c07bb8 Jean*0560 & ' overlap (OLx,OLy) smaller than 3'
3c3b37da6e Jean*0561 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0562 errCount = errCount + 1
46979d29da Jean*0563 ENDIF
2253ef4483 Jean*0564 IF ( ( OLx.LT.3 .OR. OLy.LT.3 ) .AND.
0565 & useSmag3D .AND. useCDscheme ) THEN
0566 WRITE(msgBuf,'(A,A)')
0567 & 'CONFIG_CHECK: cannot use Smag-3D + CD-scheme with',
0568 & ' overlap (OLx,OLy) smaller than 3'
0569 CALL PRINT_ERROR( msgBuf, myThid )
0570 errCount = errCount + 1
0571 ENDIF
a67f2474bd Jean*0572
f59d76b0dd Ed D*0573 IF ( ( viscC4leithD.NE.0. .OR. viscC4leith.NE.0. .OR.
0574 & viscC2leithD.NE.0. .OR. viscC2leith.NE.0.)
0575 & .AND. (viscC2LeithQG.NE.0) ) THEN
0576 WRITE(msgBuf,'(A,A)')
0577 & 'CONFIG_CHECK: cannot use LeithQG in conjunction with',
0578 & ' either standard Leith or LeithD'
0579 CALL PRINT_ERROR( msgBuf, myThid )
0580 errCount = errCount + 1
0581 ENDIF
0582
402fba1a12 Jean*0583 #ifndef DISCONNECTED_TILES
0584
5a05fd524d Mart*0585 IF ( sNx.LT.OLx ) THEN
0586 #ifdef ALLOW_EXCH2
0587 WRITE(msgBuf,'(A)')
0588 & 'CONFIG_CHECK: sNx<OLx not allowed with ALLOW_EXCH2 defined'
0589 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0590 errCount = errCount + 1
5a05fd524d Mart*0591 #endif /* ALLOW_EXCH2 */
0592 IF ( Nx.NE.1 ) THEN
0593 WRITE(msgBuf,'(A)')
0594 & 'CONFIG_CHECK: sNx<OLx not allowed unless Nx=1'
0595 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0596 errCount = errCount + 1
5a05fd524d Mart*0597 ENDIF
0598 ENDIF
0599 IF ( sNy.LT.OLy ) THEN
0600 #ifdef ALLOW_EXCH2
0601 WRITE(msgBuf,'(A)')
0602 & 'CONFIG_CHECK: sNy<OLy not allowed with ALLOW_EXCH2 defined'
0603 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0604 errCount = errCount + 1
5a05fd524d Mart*0605 #endif /* ALLOW_EXCH2 */
0606 IF ( Ny.NE.1 ) THEN
0607 WRITE(msgBuf,'(A)')
0608 & 'CONFIG_CHECK: sNy<OLy not allowed unless Ny=1'
0609 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0610 errCount = errCount + 1
5a05fd524d Mart*0611 ENDIF
0612 ENDIF
402fba1a12 Jean*0613 #endif /* ndef DISCONNECTED_TILES */
5a05fd524d Mart*0614
6ef71429db Jean*0615
0616 IF ( usingPCoords .AND. gravityFile .NE. ' ' ) THEN
0617 WRITE(msgBuf,'(A,A)') 'CONFIG_CHECK: Variable gravity',
0618 & ' not yet implemented for P-coordinate'
0619 CALL PRINT_ERROR( msgBuf, myThid )
0620 errCount = errCount + 1
0621 ENDIF
0622 IF ( select_rStar.NE.0 .AND. gravityFile .NE. ' ' ) THEN
0623 WRITE(msgBuf,'(A,A)') 'CONFIG_CHECK: Variable gravity',
0624 & ' not yet implemented with rStar'
0625 CALL PRINT_ERROR( msgBuf, myThid )
0626 errCount = errCount + 1
0627 ENDIF
0628
c7ad17745a Jean*0629
8dc8e44fac Jean*0630 IF ( deepAtmosphere .AND.
0631 & useRealFreshWaterFlux .AND. usingPCoords ) THEN
0632 WRITE(msgBuf,'(A,A)')
0633 & 'CONFIG_CHECK: Deep-Atmosphere not yet implemented with',
0634 & ' real-Fresh-Water option in P-coordinate'
3c3b37da6e Jean*0635 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0636 errCount = errCount + 1
8dc8e44fac Jean*0637 ENDIF
0638 IF ( select_rStar.NE.0 .AND.
0639 & ( deepAtmosphere .OR.
0640 & usingZCoords.AND.rhoRefFile .NE. ' ' ) ) THEN
0641 WRITE(msgBuf,'(A,A)')
0642 & 'CONFIG_CHECK: Deep-Atmosphere or Anelastic',
0643 & ' not yet implemented with rStar'
3c3b37da6e Jean*0644 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0645 errCount = errCount + 1
8dc8e44fac Jean*0646 ENDIF
0647
c7ad17745a Jean*0648
b46f9da188 Jean*0649 IF ( cg2dUseMinResSol.LT.0 .OR. cg2dUseMinResSol.GT.1 ) THEN
0650 WRITE(msgBuf,'(A,I10,A)')
0651 & 'CONFIG_CHECK: cg2dUseMinResSol set to unvalid value(=',
0652 & cg2dUseMinResSol, ')'
0653 CALL PRINT_ERROR( msgBuf, myThid )
0654 errCount = errCount + 1
0655 ENDIF
0656
745a0098ab Jean*0657 IF ( rigidLid .AND. implicitFreeSurface ) THEN
0658 WRITE(msgBuf,'(A,A)')
0659 & 'CONFIG_CHECK: Cannot select both implicitFreeSurface',
0660 & ' and rigidLid.'
3c3b37da6e Jean*0661 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0662 errCount = errCount + 1
46979d29da Jean*0663 ENDIF
745a0098ab Jean*0664
79b5d5775c Jean*0665 IF ( rigidLid .AND. exactConserv ) THEN
8dc8e44fac Jean*0666 WRITE(msgBuf,'(A)')
745a0098ab Jean*0667 & 'CONFIG_CHECK: exactConserv not compatible with'
3c3b37da6e Jean*0668 CALL PRINT_ERROR( msgBuf, myThid )
5cd64f209f Jean*0669 WRITE(msgBuf,'(A)')
745a0098ab Jean*0670 & 'CONFIG_CHECK: rigidLid (meaningless in that case)'
3c3b37da6e Jean*0671 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0672 errCount = errCount + 1
5cd64f209f Jean*0673 ENDIF
0674
1e6181f584 Davi*0675 IF ( linFSConserveTr .AND. nonlinFreeSurf.NE.0 ) THEN
0676 WRITE(msgBuf,'(A)')
0677 & 'CONFIG_CHECK: Cannot select both a Nonlinear Free Surf.'
3c3b37da6e Jean*0678 CALL PRINT_ERROR( msgBuf, myThid )
1e6181f584 Davi*0679 WRITE(msgBuf,'(A)')
0680 & 'CONFIG_CHECK: and Tracer Correction of Lin. Free Surf.'
3c3b37da6e Jean*0681 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0682 errCount = errCount + 1
1e6181f584 Davi*0683 ENDIF
0684
79b5d5775c Jean*0685 IF ( rigidLid .AND. useRealFreshWaterFlux ) THEN
8dc8e44fac Jean*0686 WRITE(msgBuf,'(A)')
745a0098ab Jean*0687 & 'CONFIG_CHECK: useRealFreshWaterFlux not compatible with'
3c3b37da6e Jean*0688 CALL PRINT_ERROR( msgBuf, myThid )
5cd64f209f Jean*0689 WRITE(msgBuf,'(A)')
0690 & 'CONFIG_CHECK: rigidLid (meaningless in that case)'
3c3b37da6e Jean*0691 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0692 errCount = errCount + 1
5cd64f209f Jean*0693 ENDIF
0694
79b5d5775c Jean*0695 IF ( implicDiv2DFlow.NE.oneRL .AND. .NOT.exactConserv ) THEN
0696 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: implicDiv2DFlow < 1 ',
0697 & 'requires exactConserv= T (+ #define EXACT_CONSERV)'
0698 CALL PRINT_ERROR( msgBuf, myThid )
0699 errCount = errCount + 1
0700 ENDIF
0701
0702 IF ( nonlinFreeSurf.NE.0 .AND. .NOT.exactConserv ) THEN
8dc8e44fac Jean*0703 WRITE(msgBuf,'(A)')
5cd64f209f Jean*0704 & 'CONFIG_CHECK: nonlinFreeSurf cannot be used'
3c3b37da6e Jean*0705 CALL PRINT_ERROR( msgBuf, myThid )
5cd64f209f Jean*0706 WRITE(msgBuf,'(A)')
0707 & 'CONFIG_CHECK: without exactConserv'
3c3b37da6e Jean*0708 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0709 errCount = errCount + 1
5cd64f209f Jean*0710 ENDIF
0711
79b5d5775c Jean*0712 IF ( select_rStar.NE.0 .AND. .NOT.exactConserv ) THEN
8dc8e44fac Jean*0713 WRITE(msgBuf,'(A)')
ef891516b3 Jean*0714 & 'CONFIG_CHECK: r* Coordinate cannot be used'
3c3b37da6e Jean*0715 CALL PRINT_ERROR( msgBuf, myThid )
ef891516b3 Jean*0716 WRITE(msgBuf,'(A)')
0717 & 'CONFIG_CHECK: without exactConserv'
3c3b37da6e Jean*0718 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0719 errCount = errCount + 1
ef891516b3 Jean*0720 ENDIF
0721
98b6d5abd6 Jean*0722 IF ( select_rStar.GE.1 .AND. nonlinFreeSurf.LE.0 ) THEN
0723 WRITE(msgBuf,'(2A,I3,A)') 'CONFIG_CHECK: r* Coordinate',
0724 & ' (select_rStar=', select_rStar, ' ) cannot be used'
0725 CALL PRINT_ERROR( msgBuf, myThid )
0726 WRITE(msgBuf,'(2A,I3,A)') 'CONFIG_CHECK: ',
0727 & ' with Linear FreeSurf (nonlinFreeSurf=', nonlinFreeSurf,' )'
0728 CALL PRINT_ERROR( msgBuf, myThid )
0729 errCount = errCount + 1
0730 ENDIF
4227e4b9a3 Jean*0731 IF ( select_rStar.EQ.2 .AND. nonlinFreeSurf.NE.4 ) THEN
0732
0733
0734
0735 WRITE(msgBuf,'(2A,I3)') '** WARNING ** CONFIG_CHECK: ',
0736 & 'select_rStar=2 not right with nonlinFreeSurf=', nonlinFreeSurf
0737 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0738 & SQUEEZE_RIGHT, myThid )
0739 ENDIF
98b6d5abd6 Jean*0740
f15994caab Jean*0741 IF ( selectSigmaCoord.NE.0 ) THEN
0742 IF ( fluidIsWater ) THEN
0743 WRITE(msgBuf,'(A)')
0744 & 'CONFIG_CHECK: Sigma-Coords not yet coded for Oceanic set-up'
0745 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0746 errCount = errCount + 1
f15994caab Jean*0747 ENDIF
0748 IF ( nonlinFreeSurf.LE.0 ) THEN
0749 WRITE(msgBuf,'(A)')
0750 & 'CONFIG_CHECK: Sigma-Coords not coded for Lin-FreeSurf'
0751 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0752 errCount = errCount + 1
f15994caab Jean*0753 ENDIF
0754 IF (select_rStar.NE.0 ) THEN
0755 WRITE(msgBuf,'(A)')
0756 & 'CONFIG_CHECK: Sigma-Coords and rStar are not compatible'
0757 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0758 errCount = errCount + 1
f15994caab Jean*0759 ENDIF
0760 WRITE(msgBuf,'(A)')
0761 & 'CONFIG_CHECK: Sigma-Coords code neither complete nor tested'
0762 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0763 & SQUEEZE_RIGHT, myThid )
0764 ENDIF
0765
ff02675122 Jean*0766
87a066093f Jean*0767
0768
0769
5cd64f209f Jean*0770
8dc8e44fac Jean*0771 IF ( nonlinFreeSurf.NE.0 .AND.
db8d49beca Jean*0772 & deltaTFreeSurf.NE.dTtracerLev(1) ) THEN
3c3b37da6e Jean*0773 WRITE(msgBuf,'(2A)') '** WARNING ** CONFIG_CHECK: ',
0774 & 'nonlinFreeSurf might cause problems'
463053c692 Jean*0775 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
3c3b37da6e Jean*0776 & SQUEEZE_RIGHT, myThid )
0777 WRITE(msgBuf,'(2A)') '** WARNING ** ',
0778 & 'with different FreeSurf & Tracer time-steps'
463053c692 Jean*0779 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
3c3b37da6e Jean*0780 & SQUEEZE_RIGHT, myThid )
745a0098ab Jean*0781 ENDIF
0782
79b5d5775c Jean*0783 IF ( useRealFreshWaterFlux .AND. implicDiv2DFlow.EQ.zeroRL
51d88069bf Jean*0784 & .AND. startTime.NE.baseTime .AND. usePickupBeforeC54 ) THEN
8dc8e44fac Jean*0785 WRITE(msgBuf,'(A)')
79b5d5775c Jean*0786 & 'CONFIG_CHECK: usePickupBeforeC54 restart does not work with'
3c3b37da6e Jean*0787 CALL PRINT_ERROR( msgBuf, myThid )
745a0098ab Jean*0788 WRITE(msgBuf,'(A)')
79b5d5775c Jean*0789 & 'CONFIG_CHECK: implicDiv2DFlow=0 + useRealFreshWaterFlux'
3c3b37da6e Jean*0790 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0791 errCount = errCount + 1
745a0098ab Jean*0792 ENDIF
0793
f4db9965d8 Jean*0794 #ifdef EXACT_CONSERV
79b5d5775c Jean*0795 IF ( useRealFreshWaterFlux .AND. .NOT.exactConserv
463053c692 Jean*0796 & .AND. buoyancyRelation.EQ.'OCEANICP' ) THEN
8dc8e44fac Jean*0797 WRITE(msgBuf,'(A)')
463053c692 Jean*0798 & 'CONFIG_CHECK: RealFreshWaterFlux with OCEANICP'
3c3b37da6e Jean*0799 CALL PRINT_ERROR( msgBuf, myThid )
463053c692 Jean*0800 WRITE(msgBuf,'(A)')
0801 & 'CONFIG_CHECK: requires exactConserv=T'
3c3b37da6e Jean*0802 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0803 errCount = errCount + 1
463053c692 Jean*0804 ENDIF
0805 #else
79b5d5775c Jean*0806 IF ( useRealFreshWaterFlux
463053c692 Jean*0807 & .AND. buoyancyRelation.EQ.'OCEANICP' ) THEN
3c3b37da6e Jean*0808 WRITE(msgBuf,'(2A)') '** WARNING ** CONFIG_CHECK: ',
0809 & 'E-P effects on wVel are not included'
463053c692 Jean*0810 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
3c3b37da6e Jean*0811 & SQUEEZE_RIGHT, myThid )
0812 WRITE(msgBuf,'(2A)') '** WARNING ** CONFIG_CHECK: ',
0813 & '==> use #define EXACT_CONSERV to fix it'
463053c692 Jean*0814 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
3c3b37da6e Jean*0815 & SQUEEZE_RIGHT, myThid )
463053c692 Jean*0816 ENDIF
f4db9965d8 Jean*0817 #endif /* EXACT_CONSERV */
0870c568ac Jean*0818
6c944fd806 Jean*0819 IF ( selectAddFluid.LT.-1 .OR. selectAddFluid.GT.2 ) THEN
0820 WRITE(msgBuf,'(A,I10,A)') 'CONFIG_CHECK: selectAddFluid=',
0821 & selectAddFluid, ' not allowed'
3c3b37da6e Jean*0822 CALL PRINT_ERROR( msgBuf, myThid )
6c944fd806 Jean*0823 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0824 & 'should be =0 (Off), 1,2 (Add Mass) or -1 (Virtual Flux)'
3c3b37da6e Jean*0825 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0826 errCount = errCount + 1
6c944fd806 Jean*0827 ENDIF
0828 IF ( selectAddFluid.GE.1 .AND. rigidLid ) THEN
0829 WRITE(msgBuf,'(A)')
0830 & 'CONFIG_CHECK: selectAddFluid > 0 not compatible with'
3c3b37da6e Jean*0831 CALL PRINT_ERROR( msgBuf, myThid )
6c944fd806 Jean*0832 WRITE(msgBuf,'(A)')
0833 & 'CONFIG_CHECK: rigidLid (meaningless in that case)'
3c3b37da6e Jean*0834 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0835 errCount = errCount + 1
6c944fd806 Jean*0836 ENDIF
0837 IF ( selectAddFluid.GE.1 .AND. .NOT.staggerTimeStep ) THEN
3c3b37da6e Jean*0838 WRITE(msgBuf,'(2A)') '** WARNING ** CONFIG_CHECK: ',
0839 & 'synchronous time-stepping =>'
6c944fd806 Jean*0840 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
3c3b37da6e Jean*0841 & SQUEEZE_RIGHT, myThid )
0842 WRITE(msgBuf,'(2A)') '** WARNING ** ',
6c944fd806 Jean*0843 & '1 time-step mismatch in AddFluid effects on T & S'
0844 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
3c3b37da6e Jean*0845 & SQUEEZE_RIGHT, myThid )
0846 ENDIF
0847
898305944e Jean*0848
0849 #ifndef INCLUDE_PHIHYD_CALCULATION_CODE
6ef71429db Jean*0850 IF ( momPressureForcing .OR. storePhiHyd4Phys ) THEN
898305944e Jean*0851 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0852 & 'missing code to calculate pressure (totPhiHyd)'
0853 CALL PRINT_ERROR( msgBuf, myThid )
0854 errCount = errCount + 1
0855 ENDIF
0856 #endif /* INCLUDE_PHIHYD_CALCULATION_CODE */
6ef71429db Jean*0857 IF ( storePhiHyd4Phys .AND. .NOT.momStepping ) THEN
898305944e Jean*0858 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
6ef71429db Jean*0859 & 'storePhiHyd4Phys = TRUE but pressure is not computed'
898305944e Jean*0860 CALL PRINT_ERROR( msgBuf, myThid )
0861 errCount = errCount + 1
0862 ENDIF
0863
3c3b37da6e Jean*0864
0865 IF (nonlinFreeSurf.NE.0 .AND. use3Dsolver) THEN
0866 WRITE(msgBuf,'(A)')
0867 & 'CONFIG_CHECK: nonlinFreeSurf not yet implemented'
0868 CALL PRINT_ERROR( msgBuf, myThid )
0869 WRITE(msgBuf,'(A)')
0870 & 'CONFIG_CHECK: in nonHydrostatic code'
0871 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0872 errCount = errCount + 1
3c3b37da6e Jean*0873 ENDIF
0874
228881fcf1 Jean*0875 IF ( implicitNHPress*implicSurfPress*implicDiv2DFlow.NE.1.
3c3b37da6e Jean*0876 & .AND. implicitIntGravWave ) THEN
0877 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: implicitIntGravWave',
0878 & ' NOT SAFE with non-fully implicit solver'
0879 CALL PRINT_ERROR( msgBuf, myThid )
0880 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: To by-pass this',
0881 & 'STOP, comment this test and re-compile config_check'
0882 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0883 errCount = errCount + 1
3c3b37da6e Jean*0884 ENDIF
228881fcf1 Jean*0885 IF ( implicitNHPress*implicSurfPress*implicDiv2DFlow.EQ.0.
0886 & .AND. nonHydrostatic ) THEN
0887 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0888 & 'Needs non-zero implicit factors (i.e., implicitNHPress,'
0889 CALL PRINT_ERROR( msgBuf, myThid )
0890 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0891 & ' implicSurfPress & implicDiv2DFlow) to run nonHydrostatic'
0892 CALL PRINT_ERROR( msgBuf, myThid )
0893 errCount = errCount + 1
0894 ENDIF
3c3b37da6e Jean*0895 IF ( nonHydrostatic .AND.
0896 & implicitNHPress.NE.implicSurfPress ) THEN
0897 WRITE(msgBuf,'(2A)') '** WARNING ** CONFIG_CHECK: ',
9e44938df7 Jean*0898 & 'nonHydrostatic might cause problems with'
3c3b37da6e Jean*0899 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0900 & SQUEEZE_RIGHT, myThid )
0901 WRITE(msgBuf,'(2A)') '** WARNING ** CONFIG_CHECK: ',
0902 & 'different implicitNHPress & implicSurfPress'
0903 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0904 & SQUEEZE_RIGHT, myThid )
0905 ENDIF
0906
9e44938df7 Jean*0907 IF ( selectImplicitDrag.EQ.2 .AND. use3Dsolver ) THEN
0908 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: selectImplicitDrag=2',
0909 & ' not compatible with 3-D Press. solver'
0910 CALL PRINT_ERROR( msgBuf, myThid )
0911 errCount = errCount + 1
0912 ENDIF
0913
3c3b37da6e Jean*0914 IF ( implicitViscosity .AND. use3Dsolver ) THEN
0915 WRITE(msgBuf,'(2A)') '** WARNING ** CONFIG_CHECK: ',
0916 & 'Implicit viscosity applies to provisional u,vVel'
0917 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0918 & SQUEEZE_RIGHT, myThid )
0919 WRITE(msgBuf,'(2A)') '** WARNING ** => not consistent with',
4c3e5a1532 Jean*0920 & ' final vertical shear (after appling 3-D solver solution'
3c3b37da6e Jean*0921 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0922 & SQUEEZE_RIGHT, myThid )
0923 ENDIF
0924 IF ( implicitViscosity .AND. nonHydrostatic ) THEN
0925 WRITE(msgBuf,'(2A)') '** WARNING ** CONFIG_CHECK: ',
0926 & 'Implicit viscosity not implemented in CALC_GW'
0927 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0928 & SQUEEZE_RIGHT, myThid )
0929 WRITE(msgBuf,'(2A)') '** WARNING ** CONFIG_CHECK: ',
0930 & 'Explicit viscosity might become unstable if too large'
0931 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0932 & SQUEEZE_RIGHT, myThid )
6c944fd806 Jean*0933 ENDIF
0934
c7ad17745a Jean*0935
7fe6343684 Jean*0936 IF ( vectorInvariantMomentum.AND.momStepping ) THEN
0937 IF ( highOrderVorticity.AND.upwindVorticity ) THEN
0938 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
0939 & '"highOrderVorticity" conflicts with "upwindVorticity"'
3c3b37da6e Jean*0940 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0941 errCount = errCount + 1
7fe6343684 Jean*0942 ENDIF
0943 ENDIF
7bb5a8a109 Jean*0944 #ifdef ALLOW_MOM_COMMON
0945 IF ( vectorInvariantMomentum .AND. momViscosity .AND.
0946 & usingSphericalPolarGrid .AND. cosPower.NE.zeroRL ) THEN
0947 #ifdef ISOTROPIC_COS_SCALING
0948 IF ( no_slip_sides ) THEN
0949 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: inconsistent ',
0950 & 'no_slip_sides & ISOTROPIC_COS_SCALING in mom_vecinv'
0951 CALL PRINT_ERROR( msgBuf, myThid )
0952 errCount = errCount + 1
0953 ELSE
0954 WRITE(msgBuf,'(2A)') '** WARNING ** CONFIG_CHECK: ',
0955 & 'ISOTROPIC_COS_SCALING not implemented in mom_vecinv'
0956 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0957 & SQUEEZE_RIGHT, myThid )
0958 ENDIF
0959 #endif /* ISOTROPIC_COS_SCALING */
0960 #ifdef COSINEMETH_III
0961 IF ( useBiharmonicVisc .AND. no_slip_sides ) THEN
0962 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: inconsistent ',
0963 & 'no_slip_sides & COSINEMETH_III in mom_vecinv'
0964 CALL PRINT_ERROR( msgBuf, myThid )
0965 errCount = errCount + 1
0966 ELSEIF ( useBiharmonicVisc ) THEN
0967 WRITE(msgBuf,'(2A)') '** WARNING ** CONFIG_CHECK: ',
0968 & 'COSINEMETH_III not implemented in mom_vecinv'
0969 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0970 & SQUEEZE_RIGHT, myThid )
0971 ENDIF
0972 #endif /* COSINEMETH_III */
0973 ENDIF
0974 #endif /* ALLOW_MOM_COMMON */
51a413ac3c Jean*0975 IF ( .NOT.vectorInvariantMomentum .AND. momAdvection ) THEN
0976 IF ( usingCurvilinearGrid ) THEN
0977 WRITE(msgBuf,'(2A)') '** WARNING ** CONFIG_CHECK: ',
0978 & 'missing metric-terms for CurvilinearGrid'
0979 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
0980 & SQUEEZE_RIGHT, myThid )
0981 ENDIF
0982 IF ( hasWetCSCorners ) THEN
0983 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: momAdvection ',
0984 & 'in flux-form is wrong on CubedSphere grid (corners)'
0985 CALL PRINT_ERROR( msgBuf, myThid )
0986 errCount = errCount + 1
0987 ENDIF
0988 ENDIF
dfc353d300 Jean*0989 IF ( selectCoriMap.LT.0 .OR. selectCoriMap.GT.3 ) THEN
0990 WRITE(msgBuf,'(2A,I4)') 'CONFIG_CHECK: ',
0991 & 'Invalid option: selectCoriMap=', selectCoriMap
0992 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*0993 errCount = errCount + 1
dfc353d300 Jean*0994 ENDIF
f9ef55fa0c Jean*0995 IF ( selectBotDragQuadr.LT.-1 .OR. selectBotDragQuadr.GT.2 ) THEN
0996 WRITE(msgBuf,'(2A,I8,A)') 'CONFIG_CHECK: ',
0997 & 'selectBotDragQuadr=', selectBotDragQuadr,
0998 & ' not valid (-1,0,1,2)'
0999 CALL PRINT_ERROR( msgBuf, myThid )
1000 errCount = errCount + 1
1001 ENDIF
dc3adfb09b Jean*1002 IF ( useSmag3D .AND.
1003 & ( usingPCoords .OR. deepAtmosphere .OR. selectSigmaCoord.NE.0
1004 & .OR. rhoRefFile.NE.' ' .OR. hasWetCSCorners )
1005 & ) THEN
1006 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: ',
1007 & 'Smag-3D not yet implemented for this set-up'
1008 CALL PRINT_ERROR( msgBuf, myThid )
1009 errCount = errCount + 1
1010 ENDIF
7fe6343684 Jean*1011
2b0fbf127e Jean*1012 IF ( momStepping .AND. .NOT.useCDscheme
1013 & .AND. (tauCD.NE.0. .OR. rCD.NE.-1.) ) THEN
8dc8e44fac Jean*1014
1015
1016
a97467b673 Jean*1017
1018
2b0fbf127e Jean*1019 IF ( vectorInvariantMomentum ) THEN
1020 WRITE(msgBuf,'(2A)') '** WARNING ** CONFIG_CHECK: ',
1021 & 'CD-scheme is OFF but params(tauCD,rCD) are set'
1022 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1023 & SQUEEZE_RIGHT, myThid )
1024 WRITE(msgBuf,'(3A)') '** WARNING ** to turn ON CD-scheme:',
1025 & ' => "useCDscheme=.TRUE." in "data", namelist PARM01'
1026 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1027 & SQUEEZE_RIGHT, myThid )
1028 ELSE
8dc8e44fac Jean*1029 WRITE(msgBuf,'(A)')
a97467b673 Jean*1030 & 'CONFIG_CHECK: CD-scheme is OFF but params(tauCD,rCD) are set'
3c3b37da6e Jean*1031 CALL PRINT_ERROR( msgBuf, myThid )
a97467b673 Jean*1032 WRITE(msgBuf,'(2A)')
1033 & 'CONFIG_CHECK: to turn ON CD-scheme: => "useCDscheme=.TRUE."',
8dc8e44fac Jean*1034 & ' in "data", namelist PARM01'
3c3b37da6e Jean*1035 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*1036 errCount = errCount + 1
a97467b673 Jean*1037 ENDIF
0870c568ac Jean*1038 ENDIF
745a0098ab Jean*1039
51a413ac3c Jean*1040 IF ( useCDscheme .AND. hasWetCSCorners ) THEN
a77afd21fa Jean*1041 WRITE(msgBuf,'(2A)')
1042 & 'CONFIG_CHECK: CD-scheme not implemented on CubedSphere grid'
3c3b37da6e Jean*1043 CALL PRINT_ERROR( msgBuf, myThid )
51a413ac3c Jean*1044 errCount = errCount + 1
d964dd04ff Jean*1045 ENDIF
9e44938df7 Jean*1046 IF ( useCDscheme .AND. momImplVertAdv ) THEN
1047 WRITE(msgBuf,'(2A)')'CONFIG_CHECK: ',
1048 & 'Implicit Vert. Advect. not coded for CD-scheme velocity'
1049 CALL PRINT_ERROR( msgBuf, myThid )
1050 errCount = errCount + 1
1051 ENDIF
1052 IF ( useCDscheme .AND. selectImplicitDrag.GT.0 ) THEN
1053 WRITE(msgBuf,'(2A)')'CONFIG_CHECK: ',
1054 & 'Implicit (bottom) drag not coded for CD-scheme velocity'
1055 CALL PRINT_ERROR( msgBuf, myThid )
1056 errCount = errCount + 1
1057 ENDIF
d964dd04ff Jean*1058
c7ad17745a Jean*1059
6d54334e28 Jean*1060 IF ( implicitIntGravWave .AND. staggerTimeStep ) THEN
1061 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: staggerTimeStep',
1062 & ' incompatible with implicitIntGravWave'
1063 CALL PRINT_ERROR( msgBuf, myThid )
1064 errCount = errCount + 1
1065 ENDIF
8dc8e44fac Jean*1066 IF ( momForcingOutAB.NE.0 .AND. momForcingOutAB.NE.1 ) THEN
c2b6ed6bfd Jean*1067 WRITE(msgBuf,'(A,I10,A)') 'CONFIG_CHECK: momForcingOutAB=',
1068 & momForcingOutAB, ' not allowed'
3c3b37da6e Jean*1069 CALL PRINT_ERROR( msgBuf, myThid )
c2b6ed6bfd Jean*1070 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: momForcingOutAB ',
1071 & 'should be =1 (Out of AB) or =0 (In AB)'
3c3b37da6e Jean*1072 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*1073 errCount = errCount + 1
c2b6ed6bfd Jean*1074 ENDIF
8dc8e44fac Jean*1075 IF ( tracForcingOutAB.NE.0 .AND. tracForcingOutAB.NE.1 ) THEN
c2b6ed6bfd Jean*1076 WRITE(msgBuf,'(A,I10,A)') 'CONFIG_CHECK: tracForcingOutAB=',
1077 & tracForcingOutAB, ' not allowed'
3c3b37da6e Jean*1078 CALL PRINT_ERROR( msgBuf, myThid )
c2b6ed6bfd Jean*1079 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: tracForcingOutAB ',
1080 & 'should be =1 (Out of AB) or =0 (In AB)'
3c3b37da6e Jean*1081 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*1082 errCount = errCount + 1
a77afd21fa Jean*1083 ENDIF
9e44938df7 Jean*1084 IF ( selectImplicitDrag.LT.0 .OR. selectImplicitDrag.GT.2 ) THEN
1085 WRITE(msgBuf,'(2A,I4)') 'CONFIG_CHECK: ',
1086 & 'Invalid option: selectImplicitDrag=', selectImplicitDrag
1087 CALL PRINT_ERROR( msgBuf, myThid )
1088 errCount = errCount + 1
1089 ENDIF
1090 IF ( selectImplicitDrag.EQ.1 ) THEN
1091 WRITE(msgBuf,'(2A)') 'CONFIG_CHECK: selectImplicitDrag=1',
1092 & ' not yet available'
f9ef55fa0c Jean*1093 CALL PRINT_ERROR( msgBuf, myThid )
1094 errCount = errCount + 1
1095 ENDIF
a77afd21fa Jean*1096
c7ad17745a Jean*1097
7514c1bd55 Mart*1098 IF ( rotateGrid ) THEN
1099 IF ( .NOT. usingSphericalPolarGrid ) THEN
1100 WRITE(msgBuf,'(2A)')
1101 & 'CONFIG_CHECK: specifying Euler angles makes only ',
1102 & 'sense with usingSphericalGrid=.TRUE.'
3c3b37da6e Jean*1103 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*1104 errCount = errCount + 1
7514c1bd55 Mart*1105 ENDIF
427e24e121 Jean*1106 IF ( useFLT .OR. useECCO ) THEN
1107 WRITE(msgBuf,'(2A)') '** WARNING ** CONFIG_CHECK: specifying',
1108 & ' Euler angles may not work with pkgs FLT, ECCO'
1109 CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
1110 & SQUEEZE_RIGHT, myThid )
7514c1bd55 Mart*1111 ENDIF
1112 ENDIF
1113
c7ad17745a Jean*1114
1115 IF ( useMATRIX .AND. useGCHEM ) THEN
1116 WRITE(msgBuf,'(2A)')
1117 & 'CONFIG_CHECK: cannot set both: useMATRIX & useGCHEM'
3c3b37da6e Jean*1118 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*1119 errCount = errCount + 1
c7ad17745a Jean*1120 ENDIF
1121
1122 IF ( useMATRIX .AND. .NOT.usePTRACERS ) THEN
1123 WRITE(msgBuf,'(2A)')
1124 & 'CONFIG_CHECK: cannot set useMATRIX without ',
1125 & 'setting usePTRACERS'
3c3b37da6e Jean*1126 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*1127 errCount = errCount + 1
c7ad17745a Jean*1128 ENDIF
1129
6c944fd806 Jean*1130 IF ( (useSEAICE .OR. useThSIce) .AND. allowFreezing ) THEN
1131 WRITE(msgBuf,'(2A)')
1132 & 'CONFIG_CHECK: cannot set allowFreezing',
1133 & ' with pkgs SEAICE or THSICE'
3c3b37da6e Jean*1134 CALL PRINT_ERROR( msgBuf, myThid )
fbf4b71a66 Jean*1135 errCount = errCount + 1
1136 ENDIF
1137
1138 IF ( errCount.GE.1 ) THEN
1139 WRITE(msgBuf,'(A,I3,A)')
1140 & 'CONFIG_CHECK: detected', errCount,' fatal error(s)'
1141 CALL PRINT_ERROR( msgBuf, myThid )
1142 CALL ALL_PROC_DIE( 0 )
6c944fd806 Jean*1143 STOP 'ABNORMAL END: S/R CONFIG_CHECK'
1144 ENDIF
fbf4b71a66 Jean*1145 _END_MASTER(myThid)
1146
1147
6c944fd806 Jean*1148
fbf4b71a66 Jean*1149 _BEGIN_MASTER(myThid)
c19461ac28 Jean*1150 WRITE(msgBuf,'(A)') '// CONFIG_CHECK : Normal End'
1151 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1152 & SQUEEZE_RIGHT, myThid )
1153 WRITE(msgBuf,'(A)')
1154 &'// ======================================================='
1155 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1156 & SQUEEZE_RIGHT, myThid )
1157 WRITE(msgBuf,'(A)') ' '
1158 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
1159 & SQUEEZE_RIGHT, myThid )
fbf4b71a66 Jean*1160 _END_MASTER(myThid)
5cd64f209f Jean*1161
1162 RETURN
1163 END