Back to home page

MITgcm

 
 

    


File indexing completed on 2026-03-19 05:08:30 UTC

view on githubraw file Latest commit 69361556 on 2026-03-18 21:20:20 UTC
7bfe6112e8 Jean*0001 #include "CTRL_OPTIONS.h"
57c22ecc45 Jean*0002 #include "AD_CONFIG.h"
69361556c2 Mart*0003 #if (      defined ALLOW_GENARR2D_CONTROL \
                0004         || defined ALLOW_GENARR3D_CONTROL \
                0005         || defined ALLOW_GENTIM2D_CONTROL )
                0006 # define ALLOW_GENARR_CONTROL
                0007 #endif
cf705a6c8e Mart*0008 C--  File ctrl_readparms.F:
                0009 C--   Contents
                0010 C--   o CTRL_READPARMS
                0011 C--   o CTRL_SET_RETIRED_PARMS
                0012 C--   o CTRL_CHECK_RETIRED_PARMS
                0013 
                0014 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0015 CBOP
                0016 C     !ROUTINE: CTRL_READPARMS
                0017 C     !INTERFACE:
                0018       SUBROUTINE CTRL_READPARMS( myThid )
                0019 
                0020 C     !DESCRIPTION:
                0021 C     ==================================================================
                0022 C     o read ctrl parameters
                0023 C     ==================================================================
                0024 
                0025 C     !USES:
                0026       IMPLICIT NONE
                0027 
                0028 C     == global variables ==
042be14492 Patr*0029 #include "EEPARAMS.h"
                0030 #include "SIZE.h"
                0031 #include "PARAMS.h"
61a813cf9a Gael*0032 #ifdef ALLOW_CTRL
                0033 # include "CTRL_SIZE.h"
4d72283393 Mart*0034 # include "CTRL.h"
61a813cf9a Gael*0035 # include "CTRL_GENARR.h"
                0036 # include "CTRL_OBCS.h"
cf705a6c8e Mart*0037 # include "ctrl_local_params.h"
61a813cf9a Gael*0038 #endif
a5904a1bbe Gael*0039 #ifdef ALLOW_AUTODIFF
                0040 #include "AUTODIFF_PARAMS.h"
                0041 #endif
042be14492 Patr*0042 
cf705a6c8e Mart*0043 C     !INPUT/OUTPUT PARAMETERS:
                0044       INTEGER myThid
042be14492 Patr*0045 
f9d7cbfb72 Ou W*0046 C     == EXTERNAL FUNCTIONS ==
                0047       INTEGER  ILNBLNK
                0048       EXTERNAL ILNBLNK
                0049 
cf705a6c8e Mart*0050 C     !LOCAL VARIABLES:
                0051       INTEGER iUnit
                0052       INTEGER nRetired
                0053       CHARACTER*(MAX_LEN_MBUF) msgBuf
69361556c2 Mart*0054 #ifdef ALLOW_GENARR_CONTROL
cf705a6c8e Mart*0055       INTEGER iarr,jarr
02585d30f9 Gael*0056 #endif
f9d7cbfb72 Ou W*0057       CHARACTER*(MAX_LEN_FNAM) namBuf
                0058       INTEGER IL
                0059 #ifdef HAVE_SYSTEM
                0060       INTEGER pIL
                0061 #endif
69361556c2 Mart*0062 C     auxillary variable to simplify code
                0063       _RL mult_default
cf705a6c8e Mart*0064 C     retired parameters (others are in ctrl_local_params.h)
                0065       LOGICAL ctrlUseGen
                0066       LOGICAL ctrlSmoothCorrel3D
                0067       LOGICAL ctrlSmoothCorrel2D
69361556c2 Mart*0068 #ifndef ALLOW_COST
                0069 C     dummy values, so that namelist need not change
                0070       _RL  mult_obcsN, mult_obcsS
                0071       _RL  mult_obcsE, mult_obcsW
                0072       _RL  mult_obcsvol, mult_ageos
                0073 # ifdef ALLOW_GENARR_CONTROL
                0074       _RL  mult_gentim2d(maxCtrlTim2D)
                0075       _RL  mult_genarr2d(maxCtrlArr2D)
                0076       _RL  mult_genarr3d(maxCtrlArr3D)
                0077 # endif
                0078 #endif
cf705a6c8e Mart*0079 CEOP
                0080 
                0081 C--   Read the namelist input.
                0082       NAMELIST /CTRL_NML/
983e72444d Patr*0083      &  xx_theta_file, xx_salt_file,
                0084      &  xx_hflux_file, xx_hflux_remo_intercept, xx_hflux_remo_slope,
042be14492 Patr*0085      &  xx_hfluxstartdate1, xx_hfluxstartdate2, xx_hfluxperiod,
983e72444d Patr*0086      &  xx_sflux_file, xx_sflux_remo_intercept, xx_sflux_remo_slope,
042be14492 Patr*0087      &  xx_sfluxstartdate1, xx_sfluxstartdate2, xx_sfluxperiod,
983e72444d Patr*0088      &  xx_tauu_file, xx_tauu_remo_intercept, xx_tauu_remo_slope,
042be14492 Patr*0089      &  xx_tauustartdate1,  xx_tauustartdate2,  xx_tauuperiod,
983e72444d Patr*0090      &  xx_tauv_file, xx_tauv_remo_intercept, xx_tauv_remo_slope,
042be14492 Patr*0091      &  xx_tauvstartdate1,  xx_tauvstartdate2,  xx_tauvperiod,
983e72444d Patr*0092      &  xx_atemp_file, xx_atemp_remo_intercept, xx_atemp_remo_slope,
042be14492 Patr*0093      &  xx_atempstartdate1, xx_atempstartdate2, xx_atempperiod,
983e72444d Patr*0094      &  xx_aqh_file, xx_aqh_remo_intercept, xx_aqh_remo_slope,
042be14492 Patr*0095      &  xx_aqhstartdate1, xx_aqhstartdate2, xx_aqhperiod,
983e72444d Patr*0096      &  xx_precip_file, xx_precip_remo_intercept, xx_precip_remo_slope,
9ab1d0672d Patr*0097      &  xx_precipstartdate1, xx_precipstartdate2, xx_precipperiod,
983e72444d Patr*0098      &  xx_swflux_file, xx_swflux_remo_intercept, xx_swflux_remo_slope,
5ceb56546e Patr*0099      &  xx_swfluxstartdate1, xx_swfluxstartdate2, xx_swfluxperiod,
983e72444d Patr*0100      &  xx_swdown_file, xx_swdown_remo_intercept, xx_swdown_remo_slope,
02568c8633 Patr*0101      &  xx_swdownstartdate1, xx_swdownstartdate2, xx_swdownperiod,
983e72444d Patr*0102      &  xx_lwflux_file, xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
                0103      &  xx_lwfluxstartdate1, xx_lwfluxstartdate2, xx_lwfluxperiod,
                0104      &  xx_lwdown_file, xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
                0105      &  xx_lwdownstartdate1, xx_lwdownstartdate2, xx_lwdownperiod,
                0106      &  xx_evap_file, xx_evap_remo_intercept, xx_evap_remo_slope,
                0107      &  xx_evapstartdate1, xx_evapstartdate2, xx_evapperiod,
7ef594fa1c Jean*0108      &  xx_snowprecip_file, xx_snowprecip_remo_intercept,
983e72444d Patr*0109      &  xx_snowprecip_remo_slope,  xx_snowprecipperiod,
                0110      &  xx_snowprecipstartdate1, xx_snowprecipstartdate2,
7ef594fa1c Jean*0111      &  xx_apressure_file, xx_apressure_remo_intercept,
983e72444d Patr*0112      &  xx_apressure_remo_slope, xx_apressureperiod,
                0113      &  xx_apressurestartdate1, xx_apressurestartdate2,
                0114      &  xx_runoff_file, xx_runoff_remo_intercept, xx_runoff_remo_slope,
                0115      &  xx_runoffstartdate1, xx_runoffstartdate2, xx_runoffperiod,
                0116      &  xx_uwind_file, xx_uwind_remo_intercept, xx_uwind_remo_slope,
042be14492 Patr*0117      &  xx_uwindstartdate1, xx_uwindstartdate2, xx_uwindperiod,
983e72444d Patr*0118      &  xx_vwind_file, xx_vwind_remo_intercept, xx_vwind_remo_slope,
042be14492 Patr*0119      &  xx_vwindstartdate1, xx_vwindstartdate2, xx_vwindperiod,
bc12ca2c8b Patr*0120      &  xx_aqh_mean_file, xx_atemp_mean_file, xx_precip_mean_file,
                0121      &  xx_swdown_mean_file, xx_uwind_mean_file, xx_vwind_mean_file,
69361556c2 Mart*0122      &  xx_obcsN_file,
                0123      &  xx_obcsNstartdate1,  xx_obcsNstartdate2,  xx_obcsNperiod,
                0124      &  xx_obcsS_file,
                0125      &  xx_obcsSstartdate1,  xx_obcsSstartdate2,  xx_obcsSperiod,
                0126      &  xx_obcsE_file,
                0127      &  xx_obcsEstartdate1,  xx_obcsEstartdate2,  xx_obcsEperiod,
                0128      &  xx_obcsW_file,
                0129      &  xx_obcsWstartdate1,  xx_obcsWstartdate2,  xx_obcsWperiod,
7e2482cabc Gael*0130      &  xx_diffkr_file, xx_kapgm_file, xx_kapredi_file, xx_tr1_file,
b142f4a690 Patr*0131      &  xx_sst_file, xx_sst_remo_intercept, xx_sst_remo_slope,
                0132      &  xx_sss_file, xx_sss_remo_intercept, xx_sss_remo_slope,
103f30c840 Patr*0133      &  xx_sststartdate1, xx_sststartdate2, xx_sstperiod,
                0134      &  xx_sssstartdate1, xx_sssstartdate2, xx_sssperiod,
7bfe6112e8 Jean*0135      &  xx_depth_file, xx_gen2d_file, xx_gen3d_file,
ffe95b3b07 Patr*0136      &  xx_efluxy_file, xx_efluxp_file, xx_bottomdrag_file,
983e72444d Patr*0137      &  xx_edtaux_file, xx_edtauy_file,
                0138      &  xx_uvel_file, xx_vvel_file, xx_etan_file,
784bc8f884 Patr*0139      &  xx_siarea_file, xx_siheff_file, xx_sihsnow_file,
7ef594fa1c Jean*0140      &  xx_shifwflx_file,
                0141      &  xx_shifwflx_remo_intercept, xx_shifwflx_remo_slope,
1d82288286 Mart*0142      &  xx_shifwflxstartdate1, xx_shifwflxstartdate2, xx_shifwflxperiod,
69361556c2 Mart*0143      &  mult_obcsN, mult_obcsS, mult_obcsE, mult_obcsW,
                0144      &  mult_obcsvol, mult_ageos,
                0145      &  obcs_data_errfile,
b6f5c14800 Gael*0146      &  doInitXX, ctrlSmoothCorrel3D, ctrlSmoothCorrel2D, ctrlUseGen,
b052f6c8f1 Patr*0147      &  doPackDiag,
983e72444d Patr*0148      &  doZscaleUnpack, doZscalePack,
                0149      &  doMainUnpack, doMainPack,
516917913e Patr*0150      &  doSinglePrecTapelev,
ca0df8acbf Patr*0151      &  doAdmtlmBypassAD,
f9d7cbfb72 Ou W*0152      &  delZexp, forcingPrecond, ctrlprec, ctrlDir
798126c2ad Davi*0153 cHFLUXM_CONTROL
                0154      &  ,xx_hfluxm_file
                0155 cHFLUXM_CONTROL
042be14492 Patr*0156 
cf705a6c8e Mart*0157       NAMELIST /CTRL_PACKNAMES/
d04f98ba8f Patr*0158      &  yadmark, yctrlid, yctrlposunpack, yctrlpospack,
042be14492 Patr*0159      &  ctrlname, costname, scalname, maskname, metaname
                0160 
69361556c2 Mart*0161 #ifdef ALLOW_GENARR_CONTROL
cf705a6c8e Mart*0162       NAMELIST /CTRL_NML_GENARR/
7bd66d7dc3 Patr*0163      &  xx_genarr2d_file, xx_genarr3d_file, xx_gentim2d_file,
3145d51f22 Patr*0164      &  xx_genarr2d_weight, xx_genarr3d_weight, xx_gentim2d_weight,
bd00ac563a Gael*0165      &  xx_genarr2d_bounds, xx_genarr3d_bounds, xx_gentim2d_bounds,
513e004a84 Gael*0166      &  genarr2dPrecond, genarr3dPrecond, gentim2dPrecond,
                0167      &  mult_gentim2d,mult_genarr2d,mult_genarr3d,
                0168      &  xx_genarr2d_preproc, xx_genarr2d_preproc_i,
                0169      &  xx_genarr2d_preproc_r, xx_genarr2d_preproc_c,
                0170      &  xx_genarr3d_preproc, xx_genarr3d_preproc_i,
                0171      &  xx_genarr3d_preproc_r, xx_genarr3d_preproc_c,
                0172      &  xx_gentim2d_preproc, xx_gentim2d_preproc_i,
                0173      &  xx_gentim2d_preproc_r, xx_gentim2d_preproc_c,
9bf17fb3ed Gael*0174      &  xx_gentim2d_period,
7bd66d7dc3 Patr*0175      &  xx_gentim2d_startdate1, xx_gentim2d_startdate2,
513e004a84 Gael*0176      &  xx_gentim2d_cumsum,xx_gentim2d_glosum
7bd66d7dc3 Patr*0177 #endif
                0178 
219393e304 Gael*0179       IF ( .NOT.useCTRL ) THEN
                0180 C-    pkg CTRL is not used
                0181         _BEGIN_MASTER(myThid)
                0182 C-    Track pkg activation status:
                0183 C     print a (weak) warning if data.ctrl is found
                0184          CALL PACKAGES_UNUSED_MSG( 'useCTRL', ' ', ' ' )
                0185         _END_MASTER(myThid)
                0186         RETURN
                0187       ENDIF
                0188 
042be14492 Patr*0189       _BEGIN_MASTER( myThid )
                0190 
cf705a6c8e Mart*0191 C--     Set default values.
8f0b59c61c Patr*0192         doInitXX            = .TRUE.
456bf2eff2 Jean*0193 #ifdef ALLOW_SMOOTH_CORREL3D
439bdb021f Gael*0194         ctrlSmoothCorrel3D  = .TRUE.
                0195 #else
                0196         ctrlSmoothCorrel3D  = .FALSE.
                0197 #endif
456bf2eff2 Jean*0198 #ifdef ALLOW_SMOOTH_CORREL2D
439bdb021f Gael*0199         ctrlSmoothCorrel2D  = .TRUE.
                0200 #else
                0201         ctrlSmoothCorrel2D  = .FALSE.
                0202 #endif
b6f5c14800 Gael*0203         ctrlUseGen          = .TRUE.
8f0b59c61c Patr*0204 #ifdef ALLOW_ADMTLM
                0205         doAdmTlm            = .TRUE.
                0206 #else
                0207         doAdmTlm            = .FALSE.
                0208 #endif
0ba65c94ff Patr*0209         doPackDiag          = .FALSE.
b052f6c8f1 Patr*0210         doZscaleUnpack      = .FALSE.
                0211         doZscalePack        = .FALSE.
f8659cb5d2 Patr*0212         doMainUnpack        = .TRUE.
f29f3cc477 Jean*0213 #if (defined (ALLOW_ADJOINT_RUN)||defined (ALLOW_TANGENTLINEAR_RUN))
f8659cb5d2 Patr*0214         doMainPack          = .TRUE.
456bf2eff2 Jean*0215 #else
                0216         doMainPack          = .FALSE.
                0217 #endif
516917913e Patr*0218         doSinglePrecTapelev = .FALSE.
8a10dfc8f1 Patr*0219         doAdmtlmBypassAD    = .FALSE.
8f0b59c61c Patr*0220 
ca0df8acbf Patr*0221         delZexp = 0.
3a2820aa92 Gael*0222         forcingPrecond = 1. _d 0
ca0df8acbf Patr*0223 
6b47d550f4 Mart*0224 #ifdef CTRL_SET_PREC_32
                0225 C     for backward compatibility set default value to 32 if this
                0226 C     flag is defined
                0227         ctrlprec = 32
                0228 #else
                0229         ctrlprec = 64
                0230 #endif
                0231 
69361556c2 Mart*0232         obcs_data_errfile = ' '
f9d7cbfb72 Ou W*0233         ctrlDir = ' '
                0234 
8f901f15d1 Patr*0235         xx_theta_file      = 'xx_theta'
                0236         xx_salt_file       = 'xx_salt'
cf705a6c8e Mart*0237 
e936cea1a6 Patr*0238         xx_gen2d_file      = 'xx_gen2d'
                0239         xx_gen3d_file      = 'xx_gen3d'
7bd66d7dc3 Patr*0240 
69361556c2 Mart*0241 #ifdef ALLOW_GENARR_CONTROL
ffe95b3b07 Patr*0242         do iarr = 1, maxCtrlArr2D
954f010844 Gael*0243          write(xx_genarr2d_file(iarr)(1:MAX_LEN_FNAM),'(a)') ' '
                0244 #ifdef ALLOW_OPENAD
ffe95b3b07 Patr*0245          write(xx_genarr2d_file(iarr)(1:14),'(a,i2.2)')
                0246      &        'xx_genarr2d_', iarr
                0247          write(xx_genarr2d_file(iarr)(15:MAX_LEN_FNAM),'(a)') ' '
954f010844 Gael*0248 #endif
3145d51f22 Patr*0249          write(xx_genarr2d_weight(iarr)(1:MAX_LEN_FNAM),'(a)') ' '
6b47d550f4 Mart*0250          genarr2dPrecond(iarr)  = 1. _d 0
69361556c2 Mart*0251          mult_genarr2d(iarr)    = UNSET_RL
02585d30f9 Gael*0252          do jarr = 1, 5
                0253            xx_genarr2d_bounds(jarr,iarr) = 0. _d 0
                0254          enddo
513e004a84 Gael*0255          do jarr=1,maxCtrlProc
                0256           xx_genarr2d_preproc(jarr,iarr)   = ' '
                0257           xx_genarr2d_preproc_c(jarr,iarr) = ' '
                0258           xx_genarr2d_preproc_i(jarr,iarr) = 0
                0259           xx_genarr2d_preproc_r(jarr,iarr) = 0. _d 0
                0260          enddo
ffe95b3b07 Patr*0261         enddo
cf705a6c8e Mart*0262 
ffe95b3b07 Patr*0263         do iarr = 1, maxCtrlArr3D
954f010844 Gael*0264          write(xx_genarr3d_file(iarr)(1:MAX_LEN_FNAM),'(a)') ' '
                0265 #ifdef ALLOW_OPENAD
ffe95b3b07 Patr*0266          write(xx_genarr3d_file(iarr)(1:14),'(a,i2.2)')
                0267      &        'xx_genarr3d_', iarr
                0268          write(xx_genarr3d_file(iarr)(15:MAX_LEN_FNAM),'(a)') ' '
954f010844 Gael*0269 #endif
3145d51f22 Patr*0270          write(xx_genarr3d_weight(iarr)(1:MAX_LEN_FNAM),'(a)') ' '
6b47d550f4 Mart*0271          genarr3dPrecond(iarr)  = 1. _d 0
69361556c2 Mart*0272          mult_genarr3d(iarr)    = UNSET_RL
02585d30f9 Gael*0273          do jarr = 1, 5
                0274            xx_genarr3d_bounds(jarr,iarr) = 0. _d 0
                0275          enddo
513e004a84 Gael*0276          do jarr=1,maxCtrlProc
                0277           xx_genarr3d_preproc(jarr,iarr)   = ' '
                0278           xx_genarr3d_preproc_c(jarr,iarr) = ' '
                0279           xx_genarr3d_preproc_i(jarr,iarr) = 0
                0280           xx_genarr3d_preproc_r(jarr,iarr) = 0. _d 0
                0281          enddo
ffe95b3b07 Patr*0282         enddo
cf705a6c8e Mart*0283 
7bd66d7dc3 Patr*0284         do iarr = 1, maxCtrlTim2D
954f010844 Gael*0285          write(xx_gentim2d_file(iarr)(1:MAX_LEN_FNAM),'(a)') ' '
                0286 #ifdef ALLOW_OPENAD
7bd66d7dc3 Patr*0287          write(xx_gentim2d_file(iarr)(1:14),'(a,i2.2)')
                0288      &        'xx_gentim2d_', iarr
                0289          write(xx_gentim2d_file(iarr)(15:MAX_LEN_FNAM),'(a)') ' '
954f010844 Gael*0290 #endif
3145d51f22 Patr*0291          write(xx_gentim2d_weight(iarr)(1:MAX_LEN_FNAM),'(a)') ' '
                0292          xx_gentim2d_startdate1(iarr) = 0
                0293          xx_gentim2d_startdate2(iarr) = 0
                0294          xx_gentim2d_period(iarr)     = 0. _d 0
a87570e2e8 Gael*0295          xx_gentim2d_cumsum(iarr)     = .FALSE.
                0296          xx_gentim2d_glosum(iarr)     = .FALSE.
513e004a84 Gael*0297          do jarr=1,maxCtrlProc
                0298           xx_gentim2d_preproc(jarr,iarr)   = ' '
                0299           xx_gentim2d_preproc_c(jarr,iarr) = ' '
                0300           xx_gentim2d_preproc_i(jarr,iarr) = 0
                0301           xx_gentim2d_preproc_r(jarr,iarr) = 0. _d 0
                0302          enddo
ea1c7c7217 Gael*0303          gentim2dPrecond(iarr)        = 1. _d 0
69361556c2 Mart*0304          mult_gentim2d(iarr)          = UNSET_RL
bd00ac563a Gael*0305          do jarr = 1, 5
                0306            xx_gentim2d_bounds(jarr,iarr) = 0. _d 0
                0307          enddo
7bd66d7dc3 Patr*0308         enddo
                0309 #endif
cf705a6c8e Mart*0310 
69361556c2 Mart*0311         xx_obcsNstartdate1  =   0
                0312         xx_obcsNstartdate2  =   0
                0313         xx_obcsNperiod      =   0. _d 0
                0314         xx_obcsN_file       = 'xx_obcsn'
                0315 
                0316         xx_obcsSstartdate1  =   0
                0317         xx_obcsSstartdate2  =   0
                0318         xx_obcsSperiod      =   0. _d 0
                0319         xx_obcsS_file       = 'xx_obcss'
                0320 
                0321         xx_obcsEstartdate1  =   0
                0322         xx_obcsEstartdate2  =   0
                0323         xx_obcsEperiod      =   0. _d 0
                0324         xx_obcsE_file       = 'xx_obcse'
                0325 
                0326         xx_obcsWstartdate1  =   0
                0327         xx_obcsWstartdate2  =   0
                0328         xx_obcsWperiod      =   0. _d 0
                0329         xx_obcsW_file       = 'xx_obcsw'
                0330 
                0331         mult_obcsN          =   0. _d 0
                0332         mult_obcsS          =   0. _d 0
                0333         mult_obcsE          =   0. _d 0
                0334         mult_obcsW          =   0. _d 0
                0335         mult_obcsvol        =   0. _d 0
                0336         mult_ageos          =   0. _d 0
cf705a6c8e Mart*0337 
                0338 C     retired parameters
                0339 
                0340         CALL CTRL_SET_RETIRED_PARMS(xx_hfluxstartdate1,
                0341      I       xx_hfluxstartdate2, xx_hfluxperiod, xx_hflux_file,
                0342      I       xx_hflux_file, xx_hflux_remo_intercept,
                0343      I       xx_hflux_remo_slope , myThid )
                0344         CALL CTRL_SET_RETIRED_PARMS(xx_sfluxstartdate1,
                0345      I       xx_sfluxstartdate2, xx_sfluxperiod, xx_sflux_file,
                0346      I       xx_sflux_file, xx_sflux_remo_intercept,
                0347      I       xx_sflux_remo_slope, myThid )
                0348         CALL CTRL_SET_RETIRED_PARMS(xx_tauustartdate1,xx_tauustartdate2,
                0349      I       xx_tauuperiod, xx_tauu_file, xx_tauu_file,
                0350      I       xx_tauu_remo_intercept, xx_tauu_remo_slope, myThid )
                0351         CALL CTRL_SET_RETIRED_PARMS(xx_tauvstartdate1,xx_tauvstartdate2,
                0352      I       xx_tauvperiod, xx_tauv_file, xx_tauv_file,
                0353      I       xx_tauv_remo_intercept, xx_tauv_remo_slope, myThid )
                0354         CALL CTRL_SET_RETIRED_PARMS(xx_atempstartdate1,
                0355      I       xx_atempstartdate2, xx_atempperiod, xx_atemp_file,
                0356      I       xx_atemp_mean_file, xx_atemp_remo_intercept,
                0357      I       xx_atemp_remo_slope, myThid )
                0358         CALL CTRL_SET_RETIRED_PARMS(xx_aqhstartdate1, xx_aqhstartdate2,
                0359      I       xx_aqhperiod, xx_aqh_file, xx_aqh_mean_file,
                0360      I       xx_aqh_remo_intercept, xx_aqh_remo_slope, myThid )
                0361         CALL CTRL_SET_RETIRED_PARMS(xx_precipstartdate1,
                0362      I       xx_precipstartdate2, xx_precipperiod, xx_precip_file,
                0363      I       xx_precip_mean_file, xx_precip_remo_intercept,
                0364      I       xx_precip_remo_slope, myThid )
                0365         CALL CTRL_SET_RETIRED_PARMS(xx_sfluxstartdate1,
                0366      I       xx_sfluxstartdate2, xx_sfluxperiod, xx_sflux_file,
                0367      I       xx_sflux_file, xx_sflux_remo_intercept,xx_sflux_remo_slope,
                0368      I       myThid )
                0369         CALL CTRL_SET_RETIRED_PARMS(xx_swdownstartdate1,
                0370      I       xx_swdownstartdate2, xx_swdownperiod, xx_swdown_file,
                0371      I       xx_swdown_mean_file, xx_swdown_remo_intercept,
                0372      I       xx_swdown_remo_slope, myThid )
                0373         CALL CTRL_SET_RETIRED_PARMS(xx_lwfluxstartdate1,
                0374      I       xx_lwfluxstartdate2, xx_lwfluxperiod, xx_lwflux_file,
                0375      I       xx_lwflux_file, xx_lwflux_remo_intercept,
                0376      I       xx_lwflux_remo_slope, myThid )
                0377         CALL CTRL_SET_RETIRED_PARMS(xx_lwdownstartdate1,
                0378      I       xx_lwdownstartdate2, xx_lwdownperiod, xx_lwdown_file,
                0379      I       xx_lwdown_file, xx_lwdown_remo_intercept,
                0380      I       xx_lwdown_remo_slope, myThid )
                0381         CALL CTRL_SET_RETIRED_PARMS(xx_evapstartdate1,xx_evapstartdate2,
                0382      I       xx_evapperiod, xx_evap_file, xx_evap_file,
                0383      I       xx_evap_remo_intercept, xx_evap_remo_slope, myThid )
                0384         CALL CTRL_SET_RETIRED_PARMS(xx_snowprecipstartdate1,
                0385      I       xx_snowprecipstartdate2, xx_snowprecipperiod,
                0386      I       xx_snowprecip_file, xx_snowprecip_file,
                0387      I       xx_snowprecip_remo_intercept, xx_snowprecip_remo_slope,
                0388      I       myThid )
                0389         CALL CTRL_SET_RETIRED_PARMS(xx_apressurestartdate1,
                0390      I       xx_apressurestartdate2, xx_apressureperiod,
                0391      I       xx_apressure_file, xx_apressure_file,
                0392      I       xx_apressure_remo_intercept, xx_apressure_remo_slope,
                0393      I       myThid )
                0394         CALL CTRL_SET_RETIRED_PARMS(xx_runoffstartdate1,
                0395      I       xx_runoffstartdate2, xx_runoffperiod, xx_runoff_file,
                0396      I       xx_runoff_file, xx_runoff_remo_intercept,
                0397      I       xx_runoff_remo_slope, myThid )
                0398         CALL CTRL_SET_RETIRED_PARMS(xx_uwindstartdate1,
                0399      I       xx_uwindstartdate2, xx_uwindperiod, xx_uwind_file,
                0400      I       xx_uwind_file, xx_uwind_remo_intercept,xx_uwind_remo_slope,
                0401      I       myThid )
                0402         CALL CTRL_SET_RETIRED_PARMS(xx_vwindstartdate1,
                0403      I       xx_vwindstartdate2, xx_vwindperiod, xx_vwind_file,
                0404      I       xx_vwind_file, xx_vwind_remo_intercept,xx_vwind_remo_slope,
                0405      I       myThid )
                0406         CALL CTRL_SET_RETIRED_PARMS(xx_sststartdate1, xx_sststartdate2,
                0407      I       xx_sstperiod, xx_sst_file, xx_sst_file,
                0408      I       xx_sst_remo_intercept, xx_sst_remo_slope, myThid )
                0409         CALL CTRL_SET_RETIRED_PARMS(xx_sssstartdate1, xx_sssstartdate2,
                0410      I       xx_sssperiod, xx_sss_file, xx_sss_file,
                0411      I       xx_sss_remo_intercept, xx_sss_remo_slope, myThid )
                0412         CALL CTRL_SET_RETIRED_PARMS(xx_shifwflxstartdate1,
                0413      I       xx_shifwflxstartdate2, xx_shifwflxperiod, xx_shifwflx_file,
                0414      I       xx_shifwflx_file, xx_shifwflx_remo_intercept,
                0415      I       xx_shifwflx_remo_slope, myThid )
                0416 
                0417         xx_diffkr_file      = ' '
                0418         xx_kapgm_file       = ' '
                0419         xx_kapredi_file     = ' '
                0420         xx_tr1_file         = ' '
                0421         xx_depth_file       = ' '
                0422         xx_efluxy_file      = ' '
                0423         xx_efluxp_file      = ' '
                0424         xx_bottomdrag_file  = ' '
                0425         xx_edtaux_file      = ' '
                0426         xx_edtauy_file      = ' '
                0427         xx_uvel_file        = ' '
                0428         xx_vvel_file        = ' '
                0429         xx_etan_file        = ' '
                0430         xx_siarea_file      = ' '
                0431         xx_siheff_file      = ' '
                0432         xx_sihsnow_file     = ' '
798126c2ad Davi*0433 cHFLUXM_CONTROL
cf705a6c8e Mart*0434         xx_hfluxm_file      = ' '
798126c2ad Davi*0435 cHFLUXM_CONTROL
cf705a6c8e Mart*0436 C     end retired parameters
042be14492 Patr*0437 
9eb96e5404 Patr*0438 #ifdef ALLOW_TANGENTLINEAR_RUN
                0439         yadprefix           = 'g_'
042be14492 Patr*0440         yadmark             = 'g_'
9eb96e5404 Patr*0441 #else
                0442         yadprefix           = 'ad'
                0443         yadmark             = 'ad'
042be14492 Patr*0444 #endif
                0445         yctrlid             = 'MIT_CE_000'
d04f98ba8f Patr*0446         yctrlposunpack      = '.opt'
                0447         yctrlpospack        = '.opt'
214a1cd575 Patr*0448         ctrlname            = 'ecco_ctrl'
                0449         costname            = 'ecco_cost'
042be14492 Patr*0450         scalname            = ' '
                0451         maskname            = ' '
                0452         metaname            = ' '
                0453 
cf705a6c8e Mart*0454 C--     Next, read the cost data file.
9aaf43452b Patr*0455         WRITE(msgBuf,'(A)') 'CTRL_READPARMS: opening data.ctrl'
                0456         CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
                0457      &                    SQUEEZE_RIGHT , 1)
                0458 
                0459         CALL OPEN_COPY_DATA_FILE(
                0460      I                          'data.ctrl', 'CTRL_READPARMS',
                0461      O                          iUnit,
                0462      I                          myThid )
                0463 
                0464         READ(unit = iUnit, nml = ctrl_nml)
                0465         READ(unit = iUnit, nml = ctrl_packnames)
69361556c2 Mart*0466 #ifdef ALLOW_GENARR_CONTROL
7bd66d7dc3 Patr*0467         READ(unit = iUnit, nml = ctrl_nml_genarr)
                0468 #endif
9aaf43452b Patr*0469 
7ef594fa1c Jean*0470         WRITE(msgBuf,'(A)')
9aaf43452b Patr*0471      &       'CTRL_READPARMS: finished reading data.ctrl'
                0472         CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
                0473      &                  SQUEEZE_RIGHT , 1)
                0474 
7a77863887 Mart*0475 #ifdef SINGLE_DISK_IO
                0476         CLOSE(iUnit)
                0477 #else
                0478         CLOSE(iUnit,STATUS='DELETE')
                0479 #endif /* SINGLE_DISK_IO */
042be14492 Patr*0480 
69361556c2 Mart*0481 C--   Set defaults for backwards compatibility
                0482         mult_default = 0. _d 0
                0483         IF ( useECCO ) mult_default = 1. _d 0
                0484 #ifdef ALLOW_GENARR2D_CONTROL
                0485         DO iarr = 1, maxCtrlArr2D
                0486          IF ( mult_genarr2d(iarr) .EQ. UNSET_RL )
                0487      &        mult_genarr2d(iarr) = mult_default
                0488         ENDDO
                0489 #endif
                0490 #ifdef ALLOW_GENARR3D_CONTROL
                0491         DO iarr = 1, maxCtrlArr3D
                0492          IF ( mult_genarr3d(iarr) .EQ. UNSET_RL )
                0493      &        mult_genarr3d(iarr) = mult_default
                0494         ENDDO
                0495 #endif
                0496 #ifdef ALLOW_GENTIM2D_CONTROL
                0497         DO iarr = 1, maxCtrlTim2D
                0498          IF ( mult_gentim2d(iarr) .EQ. UNSET_RL )
                0499      &        mult_gentim2d(iarr) = mult_default
                0500         ENDDO
                0501 #endif
                0502 
                0503 C--   if all multipliers are zero, we do not need to calculate the cost
                0504 C     function contribution of the ctrl-variables (no Tikhonov
                0505 C     regularisation)
                0506         useCtrlCostContribution = .FALSE.
                0507         useObcsCostContribution = .FALSE.
                0508 #ifdef ALLOW_COST
                0509 # ifdef ALLOW_GENARR2D_CONTROL
                0510         DO iarr = 1, maxCtrlArr2D
                0511          useCtrlCostContribution = useCtrlCostContribution
                0512      &        .OR. mult_genarr2d(iarr) .GT. 0. _d 0
                0513         ENDDO
                0514 # endif
                0515 # ifdef ALLOW_GENARR3D_CONTROL
                0516         DO iarr = 1, maxCtrlArr3D
                0517          useCtrlCostContribution = useCtrlCostContribution
                0518      &        .OR. mult_genarr3d(iarr) .GT. 0. _d 0
                0519         ENDDO
                0520 # endif
                0521 # ifdef ALLOW_GENTIM2D_CONTROL
                0522         DO iarr = 1, maxCtrlTim2D
                0523          useCtrlCostContribution = useCtrlCostContribution
                0524      &        .OR. mult_gentim2d(iarr) .GT. 0. _d 0
                0525         ENDDO
                0526 # endif
                0527 # ifdef ALLOW_OBCS
                0528         IF ( mult_obcsN .GT. 0. _d 0 .OR. mult_obcsS .GT. 0. _d 0 .OR.
                0529      &       mult_obcsE .GT. 0. _d 0 .OR. mult_obcsW .GT. 0. _d 0 .OR.
                0530      &       mult_obcsvol.GT.0. _d 0 .OR. mult_ageos .GT. 0. _d 0 )
                0531      &       useObcsCostContribution = .TRUE.
                0532 # endif
                0533 #endif
                0534 
f9d7cbfb72 Ou W*0535 C-- Create ctrlDir if necessary
                0536       IF ( ctrlDir .NE. ' ' ) THEN
                0537        IL = ILNBLNK( ctrlDir )
                0538 C      append "/", if necessary
                0539        IF ( IL.LT.MAX_LEN_FNAM .AND. ctrlDir(IL:IL).NE.'/' ) THEN
                0540         namBuf(1:IL) = ctrlDir(1:IL)
                0541         WRITE(ctrlDir(1:IL+1),'(2A)') namBuf(1:IL),'/'
                0542        ENDIF
                0543 #ifdef HAVE_SYSTEM
                0544 C      create directory
                0545        IL = ILNBLNK( ctrlDir ) -1
                0546        WRITE(namBuf,'(2A)') ' mkdir -p ', ctrlDir(1:IL)
                0547        pIL = 1 + ILNBLNK( namBuf )
                0548        WRITE(standardMessageUnit,'(3A)')
                0549      &  '==> SYSTEM CALL (from CTRL_READPARMS): >',
                0550      &                                 namBuf(1:pIL), '<'
                0551        CALL SYSTEM( namBuf(1:pIL) )
                0552 #else
                0553        WRITE(msgBuf,'(2A)') '** WARNING ** CTRL_READPARMS: ',
                0554      &       'cannot call mkdir -> please create ctrlDir manually'
                0555        CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
                0556      &                     SQUEEZE_RIGHT, myThid )
                0557 #endif
                0558       ENDIF
                0559 
                0560       IF (ctrlDir .NE. ' ') THEN
                0561        WRITE(msgBuf,'(2A)')
                0562      & 'read-write ctrl files from ', ctrlDir(1:IL)
                0563       ELSE
                0564        WRITE(msgBuf,'(A)')
                0565      & 'read-write ctrl files from current run directory'
                0566       ENDIF
                0567       CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
                0568      &                    SQUEEZE_RIGHT, myThid )
                0569 
                0570 C-- Check retired parameters
cf705a6c8e Mart*0571       nRetired = 0
                0572       IF ( ctrlSmoothCorrel2D ) THEN
                0573        WRITE(msgBuf,'(2A)') 'S/R CTRL_READPARMS: ',
                0574      &  'ctrlSmoothCorrel2D no longer allowed in file "data.ctrl"'
                0575        CALL PRINT_ERROR( msgBuf, myThid )
                0576 #ifdef ALLOW_SMOOTH_CORREL2D
                0577        WRITE(msgBuf,'(2A)') 'S/R CTRL_READPARMS: ',
                0578      &  ' nor is ALLOW_SMOOTH_CORREL2D allowed to be defined.'
                0579        CALL PRINT_ERROR( msgBuf, myThid )
                0580 #endif
                0581        WRITE(msgBuf,'(A)')
                0582      &  'S/R CTRL_READPARMS: Please use the smooth-pkg instead'
                0583        CALL PRINT_ERROR( msgBuf, myThid )
                0584        nRetired = nRetired + 1
                0585       ENDIF
                0586       IF ( ctrlSmoothCorrel3D ) THEN
                0587        WRITE(msgBuf,'(2A)') 'S/R CTRL_READPARMS: ',
                0588      &  'ctrlSmoothCorrel3D no longer allowed in file "data.ctrl"'
                0589        CALL PRINT_ERROR( msgBuf, myThid )
                0590 #ifdef ALLOW_SMOOTH_CORREL3D
                0591        WRITE(msgBuf,'(2A)') 'S/R CTRL_READPARMS: ',
                0592      &  ' nor is ALLOW_SMOOTH_CORREL3D allowed to be defined.'
                0593        CALL PRINT_ERROR( msgBuf, myThid )
a5904a1bbe Gael*0594 #endif
cf705a6c8e Mart*0595        WRITE(msgBuf,'(A)')
                0596      &  'S/R CTRL_READPARMS: Please use the smooth-pkg instead'
                0597        CALL PRINT_ERROR( msgBuf, myThid )
                0598        nRetired = nRetired + 1
                0599       ENDIF
                0600       IF ( .NOT. ctrlUseGen ) THEN
                0601        WRITE(msgBuf,'(A,A)')
                0602      &  'S/R CTRL_READPARMS: ctrlUseGen',
                0603      &  ' is no longer allowed in file "data.ctrl"'
                0604        CALL PRINT_ERROR( msgBuf, myThid )
                0605        nRetired = nRetired + 1
                0606       ENDIF
                0607       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_hflux',
                0608      I     xx_hfluxstartdate1, xx_hfluxstartdate2,
                0609      I     xx_hfluxperiod, xx_hflux_file, ' ',
                0610      I     xx_hflux_remo_intercept, xx_hflux_remo_slope,
                0611      U     nRetired,
                0612      I     myThid )
                0613       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_sflux',
                0614      I     xx_sfluxstartdate1, xx_sfluxstartdate2,
                0615      I     xx_sfluxperiod, xx_sflux_file, ' ',
                0616      I     xx_sflux_remo_intercept,xx_sflux_remo_slope,
                0617      U     nRetired,
                0618      I     myThid )
                0619       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_tauu',
                0620      I     xx_tauustartdate1, xx_tauustartdate2,
                0621      I     xx_tauuperiod, xx_tauu_file, ' ',
                0622      I     xx_tauu_remo_intercept, xx_tauu_remo_slope,
                0623      U     nRetired,
                0624      I     myThid )
                0625       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_tauv',
                0626      I     xx_tauvstartdate1,xx_tauvstartdate2,
                0627      I     xx_tauvperiod, xx_tauv_file, ' ',
                0628      I     xx_tauv_remo_intercept, xx_tauv_remo_slope,
                0629      U     nRetired,
                0630      I     myThid )
                0631       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_atemp',
                0632      I     xx_atempstartdate1, xx_atempstartdate2,
                0633      I     xx_atempperiod, xx_atemp_file, xx_atemp_mean_file,
                0634      I     xx_atemp_remo_intercept, xx_atemp_remo_slope,
                0635      U     nRetired,
                0636      I     myThid )
                0637       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_aqh',
                0638      I     xx_aqhstartdate1, xx_aqhstartdate2,
                0639      I     xx_aqhperiod, xx_aqh_file, xx_aqh_mean_file,
                0640      I     xx_aqh_remo_intercept, xx_aqh_remo_slope,
                0641      U     nRetired,
                0642      I     myThid )
                0643       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_precip',
                0644      I     xx_precipstartdate1, xx_precipstartdate2,
                0645      I     xx_precipperiod, xx_precip_file, xx_precip_mean_file,
                0646      I     xx_precip_remo_intercept, xx_precip_remo_slope,
                0647      U     nRetired,
                0648      I     myThid )
                0649       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_sflux',
                0650      I     xx_sfluxstartdate1, xx_sfluxstartdate2,
                0651      I     xx_sfluxperiod, xx_sflux_file, ' ',
                0652      I     xx_sflux_remo_intercept,xx_sflux_remo_slope,
                0653      U     nRetired,
                0654      I     myThid )
                0655       CALL CTRL_CHECK_RETIRED_PARMS('xx_swdown',
                0656      I     xx_swdownstartdate1, xx_swdownstartdate2,
                0657      I     xx_swdownperiod, xx_swdown_file, xx_swdown_mean_file,
                0658      I     xx_swdown_remo_intercept, xx_swdown_remo_slope,
                0659      U     nRetired,
                0660      I     myThid )
                0661       CALL CTRL_CHECK_RETIRED_PARMS('xx_lwflux',
                0662      I     xx_lwfluxstartdate1, xx_lwfluxstartdate2,
                0663      I     xx_lwfluxperiod, xx_lwflux_file, ' ',
                0664      I     xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
                0665      U     nRetired,
                0666      I     myThid )
                0667       CALL CTRL_CHECK_RETIRED_PARMS('xx_lwdown',
                0668      I     xx_lwdownstartdate1, xx_lwdownstartdate2,
                0669      I     xx_lwdownperiod, xx_lwdown_file, ' ',
                0670      I     xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
                0671      U     nRetired,
                0672      I     myThid )
                0673       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_evap',
                0674      I     xx_evapstartdate1, xx_evapstartdate2,
                0675      I     xx_evapperiod, xx_evap_file, ' ',
                0676      I     xx_evap_remo_intercept, xx_evap_remo_slope,
                0677      U     nRetired,
                0678      I     myThid )
                0679       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_snowprecip',
                0680      I     xx_snowprecipstartdate1, xx_snowprecipstartdate2,
                0681      I     xx_snowprecipperiod, xx_snowprecip_file, ' ',
                0682      I     xx_snowprecip_remo_intercept, xx_snowprecip_remo_slope,
                0683      U     nRetired,
                0684      I     myThid )
                0685       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_apressure',
                0686      I     xx_apressurestartdate1, xx_apressurestartdate2,
                0687      I     xx_apressureperiod, xx_apressure_file, ' ',
                0688      I     xx_apressure_remo_intercept, xx_apressure_remo_slope,
                0689      U     nRetired,
                0690      I     myThid )
                0691       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_runoff',
                0692      I     xx_runoffstartdate1, xx_runoffstartdate2,
                0693      I     xx_runoffperiod, xx_runoff_file, ' ',
                0694      I     xx_runoff_remo_intercept, xx_runoff_remo_slope,
                0695      U     nRetired,
                0696      I     myThid )
                0697       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_uwind',
                0698      I     xx_uwindstartdate1, xx_uwindstartdate2,
                0699      I     xx_uwindperiod, xx_uwind_file, ' ',
                0700      I     xx_uwind_remo_intercept,xx_uwind_remo_slope,
                0701      U     nRetired,
                0702      I     myThid )
                0703       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_vwind',
                0704      I     xx_vwindstartdate1, xx_vwindstartdate2,
                0705      I     xx_vwindperiod, xx_vwind_file, ' ',
                0706      I     xx_vwind_remo_intercept,xx_vwind_remo_slope,
                0707      U     nRetired,
                0708      I     myThid )
                0709       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_sst',
                0710      I     xx_sststartdate1, xx_sststartdate2,
                0711      I     xx_sstperiod, xx_sst_file, ' ',
                0712      I     xx_sst_remo_intercept, xx_sst_remo_slope,
                0713      U     nRetired,
                0714      I     myThid )
                0715       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_sss',
                0716      I     xx_sssstartdate1, xx_sssstartdate2,
                0717      I     xx_sssperiod, xx_sss_file, ' ',
                0718      I     xx_sss_remo_intercept, xx_sss_remo_slope,
                0719      U     nRetired,
                0720      I     myThid )
                0721       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_shifwflx',
                0722      I     xx_shifwflxstartdate1, xx_shifwflxstartdate2,
                0723      I     xx_shifwflxperiod, xx_shifwflx_file, ' ',
                0724      I     xx_shifwflx_remo_intercept, xx_shifwflx_remo_slope,
                0725      U     nRetired,
                0726      I     myThid )
                0727       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_diffkr_file',
                0728      I     UNSET_I, UNSET_I, UNSET_RL, xx_diffkr_file, ' ',
                0729      I     UNSET_RL, UNSET_RL,
                0730      U     nRetired,
                0731      I     myThid )
                0732       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_kapgm_file',
                0733      I     UNSET_I, UNSET_I, UNSET_RL, xx_kapgm_file, ' ',
                0734      I     UNSET_RL, UNSET_RL,
                0735      U     nRetired,
                0736      I     myThid )
                0737       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_kapredi_file',
                0738      I     UNSET_I, UNSET_I, UNSET_RL, xx_kapredi_file, ' ',
                0739      I     UNSET_RL, UNSET_RL,
                0740      U     nRetired,
                0741      I     myThid )
                0742       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_tr1_file',
                0743      I     UNSET_I, UNSET_I, UNSET_RL, xx_tr1_file, ' ',
                0744      I     UNSET_RL, UNSET_RL,
                0745      U     nRetired,
                0746      I     myThid )
                0747       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_depth_file',
                0748      I     UNSET_I, UNSET_I, UNSET_RL, xx_depth_file, ' ',
                0749      I     UNSET_RL, UNSET_RL,
                0750      U     nRetired,
                0751      I     myThid )
                0752       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_efluxy_file',
                0753      I     UNSET_I, UNSET_I, UNSET_RL, xx_efluxy_file, ' ',
                0754      I     UNSET_RL, UNSET_RL,
                0755      U     nRetired,
                0756      I     myThid )
                0757       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_efluxp_file',
                0758      I     UNSET_I, UNSET_I, UNSET_RL, xx_efluxp_file, ' ',
                0759      I     UNSET_RL, UNSET_RL,
                0760      U     nRetired,
                0761      I     myThid )
                0762       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_bottomdrag_file',
                0763      I     UNSET_I, UNSET_I, UNSET_RL, xx_bottomdrag_file, ' ',
                0764      I     UNSET_RL, UNSET_RL,
                0765      U     nRetired,
                0766      I     myThid )
                0767       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_edtaux_file',
                0768      I     UNSET_I, UNSET_I, UNSET_RL, xx_edtaux_file, ' ',
                0769      I     UNSET_RL, UNSET_RL,
                0770      U     nRetired,
                0771      I     myThid )
                0772       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_edtauy_file',
                0773      I     UNSET_I, UNSET_I, UNSET_RL, xx_edtauy_file, ' ',
                0774      I     UNSET_RL, UNSET_RL,
                0775      U     nRetired,
                0776      I     myThid )
                0777       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_uvel_file',
                0778      I     UNSET_I, UNSET_I, UNSET_RL, xx_uvel_file, ' ',
                0779      I     UNSET_RL, UNSET_RL,
                0780      U     nRetired,
                0781      I     myThid )
                0782       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_vvel_file',
                0783      I     UNSET_I, UNSET_I, UNSET_RL, xx_vvel_file, ' ',
                0784      I     UNSET_RL, UNSET_RL,
                0785      U     nRetired,
                0786      I     myThid )
                0787       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_etan_file',
                0788      I     UNSET_I, UNSET_I, UNSET_RL, xx_etan_file, ' ',
                0789      I     UNSET_RL, UNSET_RL,
                0790      U     nRetired,
                0791      I     myThid )
                0792       CALL CTRL_CHECK_RETIRED_PARMS( 'xx_hfluxm_file',
                0793      I     UNSET_I, UNSET_I, UNSET_RL, xx_hfluxm_file, ' ',
                0794      I     UNSET_RL, UNSET_RL,
                0795      U     nRetired,
                0796      I     myThid )
                0797 
                0798       IF ( nRetired .GT. 0 ) THEN
                0799        WRITE(msgBuf,'(2A)') 'S/R CTRL_READPARMS: ',
                0800      &  'Error reading parameter file "data.ctrl"'
                0801        CALL PRINT_ERROR( msgBuf, myThid )
                0802        WRITE(msgBuf,'(A,I3,A)') 'S/R CTRL_READPARMS: ', nRetired,
                0803      &      ' out of date parameters were found in namelist CTRL_NML'
                0804        CALL PRINT_ERROR( msgBuf, myThid )
                0805        CALL ALL_PROC_DIE( 0 )
                0806        STOP 'ABNORMAL END: S/R CTRL_READPARMS'
                0807       ENDIF
a5904a1bbe Gael*0808 
042be14492 Patr*0809       _END_MASTER( myThid )
                0810 
                0811       _BARRIER
                0812 
cf705a6c8e Mart*0813       RETURN
                0814       END
                0815 
                0816 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0817 CBOP
                0818 C     !ROUTINE: CTRL_SET_RETIRED_PARMS
                0819 C     !INTERFACE:
                0820       SUBROUTINE CTRL_SET_RETIRED_PARMS(
                0821      I     xx_startdate1,
                0822      I     xx_startdate2,
                0823      I     xx_period,
                0824      I     xx_file,
                0825      I     xx_mean_file,
                0826      I     xx_remo_intercept,
                0827      I     xx_remo_slope,
                0828      I     myThid )
                0829 
                0830 C     !DESCRIPTION:
                0831 C     ==================================================================
                0832 C     o set some retired parameters
                0833 C     ==================================================================
                0834 
                0835 C     !USES:
                0836       IMPLICIT NONE
                0837 C     == global variables ==
                0838 #include "EEPARAMS.h"
                0839 
                0840 C     !INPUT/OUTPUT PARAMETERS:
                0841       INTEGER xx_startdate1, xx_startdate2
                0842       _RL xx_period
                0843       CHARACTER*(*) xx_file, xx_mean_file
                0844       _RL xx_remo_intercept, xx_remo_slope
                0845       INTEGER myThid
                0846 
                0847 C     !LOCAL VARIABLES:
                0848 CEOP
                0849       xx_startdate1 = UNSET_I
                0850       xx_startdate2 = UNSET_I
                0851       xx_period     = UNSET_RL
                0852       xx_remo_intercept = UNSET_RL
                0853       xx_remo_slope = UNSET_RL
                0854       xx_file = ' '
                0855       xx_mean_file = ' '
                0856 
                0857       RETURN
                0858       END
                0859 
                0860 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0861 CBOP
                0862 C     !ROUTINE: CTRL_CHECK_RETIRED_PARMS
                0863 C     !INTERFACE:
                0864       SUBROUTINE CTRL_CHECK_RETIRED_PARMS(
                0865      I     xx_name,
                0866      I     xx_startdate1,
                0867      I     xx_startdate2,
                0868      I     xx_period,
                0869      I     xx_file,
                0870      I     xx_mean_file,
                0871      I     xx_remo_intercept,
                0872      I     xx_remo_slope,
                0873      U     nRetired,
                0874      I     myThid )
                0875 
                0876 C     !DESCRIPTION:
                0877 C     ==================================================================
                0878 C     o check some retired parameter values
                0879 C     ==================================================================
                0880 
                0881 C     !USES:
                0882       IMPLICIT NONE
                0883 C     == global variables ==
                0884 #include "EEPARAMS.h"
                0885 
                0886 C     !INPUT/OUTPUT PARAMETERS:
                0887       CHARACTER*(*) xx_name
                0888       INTEGER xx_startdate1, xx_startdate2
                0889       _RL xx_period
                0890       CHARACTER*(*) xx_file, xx_mean_file
                0891       _RL xx_remo_intercept, xx_remo_slope
                0892       INTEGER nRetired
                0893       INTEGER myThid
                0894 
                0895 C     !FUNCTIONS:
                0896       INTEGER  ILNBLNK
                0897       EXTERNAL ILNBLNK
                0898 
                0899 C     !LOCAL VARIABLES:
                0900       INTEGER il
                0901       CHARACTER*(MAX_LEN_MBUF) msgBuf
                0902 CEOP
                0903 
                0904       IF (      xx_startdate1 .NE. UNSET_I
                0905      &     .OR. xx_startdate2 .NE. UNSET_I
                0906      &     .OR. xx_period .NE. UNSET_RL
                0907      &     .OR. xx_remo_intercept .NE. UNSET_RL
                0908      &     .OR. xx_remo_slope .NE. UNSET_RL
                0909      &     .OR. xx_file .NE. ' '
                0910      &     .OR. xx_mean_file .NE. ' ' ) THEN
                0911        il = ILNBLNK(xx_name)
                0912        WRITE(msgBuf,'(A,A,A)')
                0913      &  'S/R CTRL_READPARMS: ', xx_name(1:il),
                0914      &  '* is no longer allowed in file "data.ctrl"'
                0915        CALL PRINT_ERROR( msgBuf, myThid )
                0916        WRITE(msgBuf,'(A)')
                0917      &  'S/R CTRL_READPARMS: use generic controls instead'
                0918        CALL PRINT_ERROR( msgBuf, myThid )
                0919        nRetired = nRetired + 1
                0920       ENDIF
                0921 
                0922       RETURN
                0923       END