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