Back to home page

MITgcm

 
 

    


File indexing completed on 2024-03-02 06:10:18 UTC

view on githubraw file Latest commit 5cf43646 on 2024-03-01 18:50:49 UTC
7bfe6112e8 Jean*0001 #include "CTRL_OPTIONS.h"
cf705a6c8e Mart*0002 #include "AD_CONFIG.h"
                0003 #ifdef ALLOW_ECCO
                0004 # include "ECCO_OPTIONS.h"
                0005 #endif
94a8024bbe Jean*0006 #ifdef ALLOW_GMREDI
                0007 # include "GMREDI_OPTIONS.h"
                0008 #endif
bf759c6109 Gael*0009 #ifdef ALLOW_EXF
                0010 # include "EXF_OPTIONS.h"
                0011 #endif
7b8b86ab99 Timo*0012 #ifdef ALLOW_SHELFICE
                0013 # include "SHELFICE_OPTIONS.h"
                0014 #endif
042be14492 Patr*0015 
698b6992ee Jean*0016 CBOP
                0017 C     !ROUTINE: CTRL_CHECK
                0018 C     !INTERFACE:
042be14492 Patr*0019       SUBROUTINE CTRL_CHECK( myThid )
698b6992ee Jean*0020 
                0021 C     !DESCRIPTION: \bv
                0022 C     *=================================================================
d592a6ea2a Jean*0023 C     | SUBROUTINE CTRK_CHECK
698b6992ee Jean*0024 C     | o Validate basic ctrl package setup and inter-package
d592a6ea2a Jean*0025 C     | dependencies.
698b6992ee Jean*0026 C     *=================================================================
                0027 C     \ev
                0028 
                0029 C     !USES:
042be14492 Patr*0030       IMPLICIT NONE
                0031 
                0032 C     === Global variables ===
                0033 #include "SIZE.h"
                0034 #include "EEPARAMS.h"
                0035 #include "PARAMS.h"
5cf4364659 Mart*0036 #include "CTRL_SIZE.h"
4d72283393 Mart*0037 #include "CTRL.h"
54efc7cf00 Gael*0038 #ifdef ALLOW_EXF
                0039 # include "EXF_PARAM.h"
                0040 #endif
954f010844 Gael*0041 #include "CTRL_GENARR.h"
042be14492 Patr*0042 
698b6992ee Jean*0043 C     !INPUT/OUTPUT PARAMETERS:
6b47d550f4 Mart*0044 C     myThid     :: my Thread Id number
042be14492 Patr*0045       INTEGER myThid
                0046 
698b6992ee Jean*0047 #if (defined (ALLOW_GENARR3D_CONTROL) && defined(ALLOW_PTRACERS))
                0048 C     !FUNCTIONS:
                0049       INTEGER  ILNBLNK
                0050       EXTERNAL ILNBLNK
                0051 #endif
                0052 
                0053 C     !LOCAL VARIABLES:
6b47d550f4 Mart*0054 C     msgBuf     :: Informational/error message buffer
042be14492 Patr*0055       CHARACTER*(MAX_LEN_MBUF) msgBuf
698b6992ee Jean*0056       INTEGER errCount
                0057 #if ( defined ALLOW_GENARR2D_CONTROL || defined ALLOW_GENARR3D_CONTROL || defined ALLOW_GENTIM2D_CONTROL )
9f5240b52a Jean*0058       INTEGER iarr
                0059 #endif
                0060 #if ( defined ALLOW_GENARR2D_CONTROL || defined ALLOW_GENARR3D_CONTROL )
                0061       INTEGER k2
954f010844 Gael*0062 #endif
698b6992ee Jean*0063 #if ( defined ALLOW_GENARR3D_CONTROL && defined ALLOW_PTRACERS )
                0064       INTEGER iLen, iPtr, ascii_1
                0065 #endif
cf705a6c8e Mart*0066 #ifdef ECCO_CTRL_DEPRECATED
                0067       INTEGER ioUnit
                0068       CHARACTER*(16) w_sfx
                0069 #endif
698b6992ee Jean*0070 CEOP
954f010844 Gael*0071 
698b6992ee Jean*0072 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0073 
                0074       _BEGIN_MASTER(myThid)
                0075       errCount = 0
                0076 
                0077       WRITE(msgBuf,'(2A)') 'CTRL_CHECK: ',
                0078      &                     ' --> Starts to check CTRL set-up'
042be14492 Patr*0079       CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
d592a6ea2a Jean*0080      &                    SQUEEZE_RIGHT, myThid )
042be14492 Patr*0081 
                0082 #ifdef ALLOW_TANGENTLINEAR_RUN
698b6992ee Jean*0083       IF ( yadmark .NE. 'g_' ) THEN
                0084         WRITE(msgBuf,'(A)')
042be14492 Patr*0085      &        'yadmark very likely wrong in data.ctrl for case '
698b6992ee Jean*0086         CALL PRINT_ERROR( msgBuf, myThid )
                0087         WRITE(msgBuf,'(A)')
042be14492 Patr*0088      &        'ALLOW_TANGENTLINEAR_RUN; should be g_ '
698b6992ee Jean*0089         CALL PRINT_ERROR( msgBuf, myThid )
                0090         errCount = errCount + 1
                0091       ENDIF
d592a6ea2a Jean*0092 #endif
                0093 
6b47d550f4 Mart*0094 #ifdef ALLOW_GENTIM2D_CONTROL
cf705a6c8e Mart*0095       IF ( .NOT.useCAL ) THEN
6b47d550f4 Mart*0096         WRITE(msgBuf,'(2A)') '** WARNING ** CTRL_CHECK: ',
cf705a6c8e Mart*0097      &    'ALLOW_GENTIM2D_CONTROL is'
6b47d550f4 Mart*0098         CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
                0099      &                      SQUEEZE_RIGHT, myThid )
                0100         WRITE(msgBuf,'(2A)') '** WARNING ** ',
                0101      &    ' unsafe without calendar package (currently: useCAL=F)'
                0102         CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
                0103      &                      SQUEEZE_RIGHT, myThid )
                0104       ENDIF
                0105 #endif
                0106 
954f010844 Gael*0107 #ifndef ALLOW_OPENAD
                0108 
                0109 #ifdef ALLOW_GENARR2D_CONTROL
698b6992ee Jean*0110       DO iarr = 1, maxCtrlArr2D
                0111         IF (((xx_genarr2d_weight(iarr).NE.' ').AND.
954f010844 Gael*0112      &         (xx_genarr2d_file(iarr).EQ.' ')).OR.
                0113      &        ((xx_genarr2d_weight(iarr).EQ.' ').AND.
698b6992ee Jean*0114      &         (xx_genarr2d_file(iarr).NE.' '))) THEN
                0115           WRITE(msgBuf,'(3A)') 'CTRL_CHECK: ',
954f010844 Gael*0116      &      'Cannot define xx_genarr2d_weight or xx_genarr2d_file ',
                0117      &      'separately'
698b6992ee Jean*0118           CALL PRINT_ERROR( msgBuf, myThid )
                0119           errCount = errCount + 1
                0120         ENDIF
                0121       ENDDO
                0122 #endif /* ALLOW_GENARR2D_CONTROL */
954f010844 Gael*0123 
                0124 #ifdef ALLOW_GENARR3D_CONTROL
698b6992ee Jean*0125       DO iarr = 1, maxCtrlArr3D
                0126         IF (((xx_genarr3d_weight(iarr).NE.' ').AND.
954f010844 Gael*0127      &         (xx_genarr3d_file(iarr).EQ.' ')).OR.
                0128      &        ((xx_genarr3d_weight(iarr).EQ.' ').AND.
698b6992ee Jean*0129      &         (xx_genarr3d_file(iarr).NE.' '))) THEN
                0130           WRITE(msgBuf,'(3A)') 'CTRL_CHECK: ',
954f010844 Gael*0131      &      'Cannot define xx_genarr3d_weight or xx_genarr3d_file ',
                0132      &      'separately'
698b6992ee Jean*0133           CALL PRINT_ERROR( msgBuf, myThid )
                0134           errCount = errCount + 1
                0135         ENDIF
                0136       ENDDO
                0137 # ifdef ALLOW_PTRACERS
                0138 C     Check for valid gen-ctrl file name that mactch a ptracer index
                0139       IF ( usePTRACERS ) THEN
                0140         DO iarr = 1, maxCtrlArr3D
                0141           iLen = ILNBLNK(xx_genarr3d_file(iarr))
                0142           IF ( iLen.EQ.7 .AND.
                0143      &         xx_genarr3d_file(iarr)(1:6).EQ.'xx_ptr' ) THEN
                0144             ascii_1 = ICHAR( xx_genarr3d_file(iarr)(7:7) )
                0145 C     character 0 to 9 <-> 48 to 57
                0146             IF ( ascii_1.GE.49 .AND. ascii_1.LE.57 ) THEN
                0147               READ(xx_genarr3d_file(iarr)(7:7),*) iPtr
                0148               WRITE(msgBuf,'(2A,I4,A)') 'CTRL_CHECK: ',
                0149      &              'pTracer #', iPtr, ' in Gen-CTRL'
                0150               CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
                0151      &                            SQUEEZE_RIGHT, myThid )
                0152             ELSE
                0153               WRITE(msgBuf,'(4A)') 'CTRL_CHECK: ',
                0154      &          'Gen-CTRL file "', xx_genarr3d_file(iarr)(1:iLen), '"'
                0155               CALL PRINT_ERROR( msgBuf, myThid )
                0156               WRITE(msgBuf,'(2A,I3,A)') 'CTRL_CHECK:  <-- ',
                0157      &             'do not match any pTr number (ascii=', ascii_1, ')'
                0158               CALL PRINT_ERROR( msgBuf, myThid )
                0159               errCount = errCount + 1
                0160             ENDIF
                0161           ENDIF
                0162         ENDDO
                0163       ENDIF
                0164 # endif /* ALLOW_PTRACERS */
                0165 #endif /* ALLOW_GENARR3D_CONTROL */
954f010844 Gael*0166 
                0167 #ifdef ALLOW_GENTIM2D_CONTROL
698b6992ee Jean*0168       DO iarr = 1, maxCtrlTim2D
                0169         IF (((xx_gentim2d_weight(iarr).NE.' ').AND.
954f010844 Gael*0170      &         (xx_gentim2d_file(iarr).EQ.' ')).OR.
                0171      &        ((xx_gentim2d_weight(iarr).EQ.' ').AND.
698b6992ee Jean*0172      &         (xx_gentim2d_file(iarr).NE.' '))) THEN
                0173           WRITE(msgBuf,'(3A)') 'CTRL_CHECK: ',
954f010844 Gael*0174      &      'Cannot define xx_gentim2d_weight or xx_gentim2d_file ',
                0175      &      'separately'
698b6992ee Jean*0176           CALL PRINT_ERROR( msgBuf, myThid )
                0177           errCount = errCount + 1
                0178         ENDIF
                0179       ENDDO
                0180 #endif /* ALLOW_GENTIM2D_CONTROL */
954f010844 Gael*0181 
698b6992ee Jean*0182 #endif /* ndef ALLOW_OPENAD */
954f010844 Gael*0183 
d592a6ea2a Jean*0184 #ifdef ALLOW_DIFFKR_CONTROL
                0185 C-    to use DIFFKR_CONTROL, needs to define ALLOW_3D_DIFFKR in CPP_OPTIONS.h
698b6992ee Jean*0186 # ifndef ALLOW_3D_DIFFKR
                0187       WRITE(msgBuf,'(A)')
d592a6ea2a Jean*0188      &        'Needs to define ALLOW_3D_DIFFKR to use DIFFKR_CONTROL'
698b6992ee Jean*0189       CALL PRINT_ERROR( msgBuf, myThid )
                0190       errCount = errCount + 1
                0191 # endif
d592a6ea2a Jean*0192 #endif /* ALLOW_DIFFKR_CONTROL */
042be14492 Patr*0193 
94a8024bbe Jean*0194 #ifdef ALLOW_KAPGM_CONTROL
                0195 C-    to use KAPGM_CONTROL, needs to define GM_READ_K3D_GM in GMREDI_OPTIONS.h
                0196 # ifndef GM_READ_K3D_GM
                0197       WRITE(msgBuf,'(A)')
                0198      &        'Needs to define GM_READ_K3D_GM to use KAPGM_CONTROL'
                0199       CALL PRINT_ERROR( msgBuf, myThid )
                0200       errCount = errCount + 1
                0201 # endif
                0202 #endif /* ALLOW_KAPGM_CONTROL */
                0203 
                0204 #ifdef ALLOW_KAPREDI_CONTROL
                0205 C-    to use KAPREDI_CONTROL, needs to define GM_READ_K3D_REDI in GMREDI_OPTIONS.h
                0206 # ifndef GM_READ_K3D_REDI
                0207       WRITE(msgBuf,'(A)')
                0208      &        'Needs to define GM_READ_K3D_REDI to use KAPREDI_CONTROL'
                0209       CALL PRINT_ERROR( msgBuf, myThid )
                0210       errCount = errCount + 1
                0211 # endif
                0212 #endif /* ALLOW_KAPREDI_CONTROL */
                0213 
94069ed3c1 Gael*0214 #ifndef ALLOW_PACKUNPACK_METHOD2
                0215 # ifndef EXCLUDE_CTRL_PACK
698b6992ee Jean*0216       IF ( useSingleCpuIO ) THEN
94069ed3c1 Gael*0217         WRITE(msgBuf,'(3A)') '** WARNING ** CTRL_CHECK: ',
                0218      &        'relying on mdsio_gl.F to pack/unpack the control',
                0219      &        'vector is unsafe when useSingleCpuIO is true.'
6b47d550f4 Mart*0220         CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
94069ed3c1 Gael*0221      &  SQUEEZE_RIGHT, myThid )
698b6992ee Jean*0222       ENDIF
94069ed3c1 Gael*0223 # endif
698b6992ee Jean*0224 #endif /* ndef ALLOW_PACKUNPACK_METHOD2 */
94069ed3c1 Gael*0225 
                0226 #ifdef ALLOW_PACKUNPACK_METHOD2
698b6992ee Jean*0227 # ifndef EXCLUDE_CTRL_PACK
cda1c18f72 Jean*0228 #  ifdef ALLOW_OBCS_CONTROL
698b6992ee Jean*0229       WRITE(msgBuf,'(2A)')
94069ed3c1 Gael*0230      &        'ALLOW_PACKUNPACK_METHOD2 does not work with',
                0231      &        'open boundary controls (see verif/obcs_ctrl).'
698b6992ee Jean*0232       CALL PRINT_ERROR( msgBuf, myThid )
                0233       errCount = errCount + 1
                0234 #  endif
                0235 # endif /* ndef EXCLUDE_CTRL_PACK */
                0236 #endif /* ALLOW_PACKUNPACK_METHOD2 */
                0237 
11c3150c71 Mart*0238 #ifdef ALLOW_HFLUXM_CONTROL
                0239       WRITE(msgBuf,'(2A)') 'CTRL_CHECK: ',
                0240      &     'CPP-flag ALLOW_HFLUXM_CONTROL has been retired.'
                0241       CALL PRINT_ERROR( msgBuf, myThid )
                0242       WRITE(msgBuf,'(2A)') 'CTRL_CHECK: ',
                0243      &     'tutorial_global_oce_optim, which was the only experiment'
                0244       CALL PRINT_ERROR( msgBuf, myThid )
                0245       WRITE(msgBuf,'(2A)') 'CTRL_CHECK: ',
                0246      &     'that used this flag, now uses the generic control xx_qnet'
                0247       CALL PRINT_ERROR( msgBuf, myThid )
                0248       WRITE(msgBuf,'(2A)') 'CTRL_CHECK: ',
                0249      &     'to achieve the same thing.'
                0250       CALL PRINT_ERROR( msgBuf, myThid )
cf705a6c8e Mart*0251       errCount = errCount + 1
11c3150c71 Mart*0252 #endif /* ALLOW_HFLUXM_CONTROL */
                0253 
edcd27be69 Mart*0254 #ifdef ALLOW_HFACC_CONTROL
                0255       WRITE(msgBuf,'(2A)') 'CTRL_CHECK: ',
                0256      &     'CPP-flag ALLOW_HFACC_CONTROL has been retired.'
                0257       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0258       errCount = errCount + 1
                0259 #endif
                0260 #ifdef ALLOW_HFACC3D_CONTROL
                0261       WRITE(msgBuf,'(2A)') 'CTRL_CHECK: ',
                0262      &     'CPP-flag ALLOW_HFACC3D_CONTROL has been retired.'
                0263       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0264       errCount = errCount + 1
                0265 #endif
                0266 
7b8b86ab99 Timo*0267 #ifdef ALLOW_GENARR2D_CONTROL
edcd27be69 Mart*0268 C     doscaling must be true to do log10 ctrl
7b8b86ab99 Timo*0269       DO iarr = 1, maxCtrlArr2D
                0270         DO k2 = 1, maxCtrlProc
                0271           IF ( (xx_genarr2d_preproc(k2,iarr).EQ.'noscaling') .AND.
                0272      &       (xx_genarr2d_preproc_c(k2,iarr).EQ.'log10ctrl') ) THEN
                0273             WRITE(msgBuf,'(A)')
                0274      &      'CTRL_CHECK: conflicting preproc_c & preproc flags '
                0275             CALL PRINT_ERROR( msgBuf, myThid )
                0276             WRITE(msgBuf,'(A,I2,A)')
                0277      &      'log10ctrl and noscaling set for xx_genarr2d(',iarr,').'
                0278             CALL PRINT_ERROR( msgBuf, myThid )
cf705a6c8e Mart*0279             errCount = errCount + 1
7b8b86ab99 Timo*0280           ENDIF
                0281         ENDDO
                0282       ENDDO
                0283 # ifdef ALLOW_SHELFICE
                0284 #  ifdef SHI_ALLOW_GAMMAFRICT
                0285 C     Cannot have shiTransCoeffT/S as control variables in gammafrict form
                0286       DO iarr = 1, maxCtrlArr2D
                0287         IF ( (xx_genarr2d_file(iarr)(1:11).EQ.'xx_shicoeff')) THEN
                0288           WRITE(msgBuf,'(2A,I2,A)')
                0289      &    'shiTransCoeffT or S set as control variable for ',
                0290      &    'xx_genarr2d(', iarr,'). '
                0291           CALL PRINT_ERROR( msgBuf, myThid )
                0292           WRITE(msgBuf,'(2A)')
                0293      &    'Cannot use shiTransCoeffT/S when SHI_ALLOW_GAMMAFRICT ',
                0294      &    'is defined'
                0295           CALL PRINT_ERROR( msgBuf, myThid )
cf705a6c8e Mart*0296           errCount = errCount + 1
7b8b86ab99 Timo*0297         ENDIF
                0298       ENDDO
                0299 #  else
                0300 C     Cannot have shiCDrag as control variable without gammafrict form
                0301 C     this could be changed to control cdrag for momentum equation only,
                0302 C     but is probably not what the user wants or expects.
                0303       DO iarr = 1, maxCtrlArr2D
                0304         IF ( (xx_genarr2d_file(iarr)(1:11).EQ.'xx_shicdrag')) THEN
                0305           WRITE(msgBuf,'(2A,I2,A)')
                0306      &    'shiCDrag set as control variable for ',
                0307      &    'xx_genarr2d(', iarr,'). '
                0308           CALL PRINT_ERROR( msgBuf, myThid )
                0309           WRITE(msgBuf,'(2A)')
                0310      &    'Cannot use shiCDrag when SHI_ALLOW_GAMMAFRICT ',
                0311      &    'is NOT defined'
                0312           CALL PRINT_ERROR( msgBuf, myThid )
cf705a6c8e Mart*0313           errCount = errCount + 1
7b8b86ab99 Timo*0314         ENDIF
                0315       ENDDO
                0316 #  endif /* SHI_ALLOW_GAMMAFRICT */
                0317 # endif /* ALLOW_SHELFICE */
                0318 #endif /* ALLOW_GENARR2D_CONTROL */
                0319 
                0320 #ifdef ALLOW_GENARR3D_CONTROL
edcd27be69 Mart*0321 C     doscaling must be true to do log10 ctrl
7b8b86ab99 Timo*0322       DO iarr = 1, maxCtrlArr3D
                0323         DO k2 = 1, maxCtrlProc
                0324           IF ( (xx_genarr3d_preproc(k2,iarr).EQ.'noscaling') .AND.
                0325      &       (xx_genarr3d_preproc_c(k2,iarr).EQ.'log10ctrl') ) THEN
                0326             WRITE(msgBuf,'(A)')
                0327      &      'CTRL_CHECK: conflicting preproc_c & preproc flags '
                0328             CALL PRINT_ERROR( msgBuf, myThid )
                0329             WRITE(msgBuf,'(A,I2,A)')
                0330      &      'log10ctrl and noscaling set for xx_genarr2d(',iarr,'). '
                0331             CALL PRINT_ERROR( msgBuf, myThid )
cf705a6c8e Mart*0332             errCount = errCount + 1
7b8b86ab99 Timo*0333           ENDIF
                0334         ENDDO
                0335       ENDDO
                0336 #endif
                0337 
cf705a6c8e Mart*0338 #ifdef ECCO_CTRL_DEPRECATED
                0339       WRITE(msgBuf,'(2A)') 'CTRL_CHECK: CPP-flag ECCO_CTRL_DEPRECATED',
                0340      &                     ' is no longer available.'
                0341       CALL PRINT_ERROR( msgBuf, myThid )
                0342       ioUnit = errorMessageUnit
                0343       w_sfx = '** WARNING ** : '
                0344       WRITE(msgBuf,'(2A)') '** WARNING ** CTRL_CHECK: ',
                0345      &     'Along with ECCO_CTRL_DEPRECATED a long list'
                0346       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0347       WRITE(msgBuf,'(2A)') '** WARNING ** CTRL_CHECK: ',
                0348      &     ' of CPP-flags have no effect anymore:'
                0349       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0350 C---- long list starts
                0351       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_APRESSURE_CONTROL'
                0352       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0353       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_APRESSURE_COST_CONTRIBUTION'
                0354       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0355       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_AQH_CONTROL'
                0356       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0357       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_ARGO_SALT_COST_CONTRIBUTION'
                0358       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0359       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_ARGO_THETA_COST_CONTRIBUTION'
                0360       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0361       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_ATEMP_CONTROL'
                0362       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0363       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_ATM_MEAN_CONTROL'
                0364       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0365       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_AUTODIFF_INIT_OLD'
                0366       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0367       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_BOTTOMDRAG_CONTROL_NONGENERIC'
                0368       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0369       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_BOTTOMDRAG_COST_CONTRIBUTION'
                0370       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0371       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_BP_COST_CONTRIBUTION'
                0372       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0373       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_CTDS_COST_CONTRIBUTION'
                0374       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0375       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_CTDT_COST_CONTRIBUTION'
                0376       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0377       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_CTRL_SMOOTH'
                0378       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0379       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_DAILYSCAT_COST_CONTRIBUTION'
                0380       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0381       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_DAILYSST_COST_CONTRIBUTION'
                0382       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0383 c     WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_diffkr_COST_CONTRIBUTION'
                0384       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_DIFFKR_COST_CONTRIBUTION'
                0385       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0386       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_DRIFTER_COST_CONTRIBUTION'
                0387       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0388       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_DRIFTW_COST_CONTRIBUTION'
                0389       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0390 c     WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_ECCO_DIAGNOSTIC_RUN'
                0391 c     WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_ECCO_FORWARD_RUN'
                0392       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_EDDYPSI_COST_CONTRIBUTION'
                0393       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0394       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_EFLUXY0_CONTROL'
                0395       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0396 c     WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_EGM96_ERROR_COV'
                0397       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_EGM96_ERROR_DIAG'
                0398       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0399       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_ETAN0_COST_CONTRIBUTION'
                0400       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0401       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_EVAP_CONTROL'
                0402       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0403       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_EVAP_COST_CONTRIBUTION'
                0404       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0405       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_GEN2D_CONTROL'
                0406       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0407       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_GEN3D_CONTROL'
                0408       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0409 c     WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_GRADIENT_CHECK'
                0410       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_HFLUX_COST_CONTRIBUTION'
                0411       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0412       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_IESTAU_COST_CONTRIBUTION'
                0413       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0414       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_KAPGM_COST_CONTRIBUTION'
                0415       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0416       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_KAPREDI_COST_CONTRIBUTION'
                0417       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0418       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_LWDOWN_CONTROL'
                0419       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0420       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_LWDOWN_COST_CONTRIBUTION'
                0421       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0422       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_LWFLUX_CONTROL'
                0423       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0424       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_LWFLUX_COST_CONTRIBUTION'
                0425       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0426       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_MEAN_HFLUX_COST_CONTRIBUTION'
                0427       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0428       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_NEW_SSH_COST'
                0429       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0430 c     WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_NO_DYNAMICS'
                0431       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_PRECIP_CONTROL'
                0432       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0433       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_PRECIP_COST_CONTRIBUTION'
                0434       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0435 c     WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_READ_EGM_DATA'
                0436       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_RELAXSSS_CONTROL'
                0437       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0438       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_RELAXSST_CONTROL'
                0439       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0440       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_RUNOFF_CONTROL'
                0441       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0442       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_RUNOFF_COST_CONTRIBUTION'
                0443       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0444       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SALT0_COST_CONTRIBUTION'
                0445       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0446       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SALT_COST_CONTRIBUTION'
                0447       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0448       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SCAT_COST_CONTRIBUTION'
                0449       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0450       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SFLUX_COST_CONTRIBUTION'
                0451       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0452       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SMOOTH_BC_COST_CONTRIBUTION'
                0453       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0454       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SMOOTH_CTRL3D'
                0455       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0456       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SNOWPRECIP_CONTROL'
                0457       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0458       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SNOWPRECIP_COST_CONTRIBUTION'
                0459       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0460 c     WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SPH_PROJECTION'
                0461       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SSH_COST_CONTRIBUTION'
                0462       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0463       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SSH_ERSANOM_COST_CONTRIBUTION'
                0464       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0465       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SSH_GFOANOM_COST_CONTRIBUTION'
                0466       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0467       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SSH_MEAN_COST_CONTRIBUTION'
                0468       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0469       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SSH_TOT'
                0470       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0471       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SSH_TPANOM_COST_CONTRIBUTION'
                0472       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0473       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SSHV4_COST'
                0474       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0475       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SSS_CONTROL'
                0476       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0477       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SSS_COST_CONTRIBUTION'
                0478       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0479       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SST_CONTROL'
                0480       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0481       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SST_COST_CONTRIBUTION'
                0482       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0483 c     WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_STEPPING_CALL'
                0484       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_STRESS_MEAN_COST_CONTRIBUTION'
                0485       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0486       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SWDOWN_CONTROL'
                0487       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0488       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SWDOWN_COST_CONTRIBUTION'
                0489       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0490       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SWFLUX_CONTROL'
                0491       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0492       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_SWFLUX_COST_CONTRIBUTION'
                0493       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0494       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_THETA0_COST_CONTRIBUTION'
                0495       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0496       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_THETA_COST_CONTRIBUTION'
                0497       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0498       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_TMI_SST_COST_CONTRIBUTION'
                0499       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0500       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_TRANSPORT_COST_CONTRIBUTION'
                0501       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0502       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_USTRESS_COST_CONTRIBUTION'
                0503       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0504       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_UVEL0_COST_CONTRIBUTION'
                0505       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0506       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_UWIND_CONTROL'
                0507       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0508       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_UWIND_COST_CONTRIBUTION'
                0509       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0510       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_VSTRESS_COST_CONTRIBUTION'
                0511       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0512       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_VVEL0_COST_CONTRIBUTION'
                0513       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0514       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_VWIND_CONTROL'
                0515       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0516       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_VWIND_COST_CONTRIBUTION'
                0517       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0518       WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_XBT_COST_CONTRIBUTION'
                0519       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0520 c     WRITE(msgBuf,'(2A)') w_sfx, 'ALLOW_YMDS_TREE'
                0521 c     WRITE(msgBuf,'(2A)') w_sfx, 'APPLY_HFLUX_COST_CONTRIBUTION'
                0522 c     WRITE(msgBuf,'(2A)') w_sfx, 'APPLY_SALT_COST_CONTRIBUTION'
                0523 c     WRITE(msgBuf,'(2A)') w_sfx, 'APPLY_SFLUX_COST_CONTRIBUTION'
                0524 c     WRITE(msgBuf,'(2A)') w_sfx, 'APPLY_SSH_COST_CONTRIBUTION'
                0525 c     WRITE(msgBuf,'(2A)') w_sfx, 'APPLY_SST_COST_CONTRIBUTION'
                0526 c     WRITE(msgBuf,'(2A)') w_sfx, 'APPLY_THETA_COST_CONTRIBUTION'
                0527 c     WRITE(msgBuf,'(2A)') w_sfx, 'APPLY_USTRESS_COST_CONTRIBUTION'
                0528 c     WRITE(msgBuf,'(2A)') w_sfx, 'APPLY_VSTRESS_COST_CONTRIBUTION'
                0529       WRITE(msgBuf,'(2A)') w_sfx, 'DISABLE_CTRL_THETA_LIMIT'
                0530       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0531       WRITE(msgBuf,'(2A)') w_sfx, 'GENERIC_BAR_MONTH'
                0532       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0533 C---- long list ends
                0534       WRITE(msgBuf,'(2A)') '** WARNING ** CTRL_CHECK: ',
                0535      &     'end of CPP-flag list that have no effect anymore.'
                0536       CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0537       errCount = errCount + 1
                0538 #endif /* ECCO_CTRL_DEPRECATED */
                0539 
                0540       IF ( errCount.GE.1 ) THEN
                0541         WRITE(msgBuf,'(A,I3,A)')
                0542      &       'CTRL_CHECK: detected', errCount,' fatal error(s)'
                0543         CALL PRINT_ERROR( msgBuf, myThid )
                0544         CALL ALL_PROC_DIE( 0 )
                0545         STOP 'ABNORMAL END: S/R CTRL_CHECK'
                0546       ENDIF
                0547 
                0548       WRITE(msgBuf,'(2A)') 'CTRL_CHECK: ',
                0549      &                     ' <-- Ends Normally'
                0550       CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
                0551      &                    SQUEEZE_RIGHT, myThid )
                0552       WRITE(msgBuf,'(2A)') ' '
                0553       CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
                0554      &                    SQUEEZE_RIGHT, myThid )
                0555       _END_MASTER(myThid)
                0556 
99fb70dae5 Jean*0557       RETURN
                0558       END