Back to home page

MITgcm

 
 

    


File indexing completed on 2026-03-19 05:09:15 UTC

view on githubraw file Latest commit 69361556 on 2026-03-18 21:20:20 UTC
5a54dbbd56 Jean*0001 #ifndef CTRL_OPTIONS_H
                0002 #define CTRL_OPTIONS_H
                0003 #include "PACKAGES_CONFIG.h"
                0004 #include "CPP_OPTIONS.h"
                0005 
6b47d550f4 Mart*0006 CBOP
                0007 C !ROUTINE: CTRL_OPTIONS.h
                0008 C !INTERFACE:
                0009 C #include "CTRL_OPTIONS.h"
                0010 
                0011 C !DESCRIPTION:
                0012 C *==================================================================*
                0013 C | CPP options file for Control (ctrl) package:
                0014 C | Control which optional features to compile in this package code.
                0015 C *==================================================================*
                0016 CEOP
                0017 
                0018 #ifdef ALLOW_CTRL
                0019 #ifdef ECCO_CPPOPTIONS_H
                0020 
                0021 C-- When multi-package option-file ECCO_CPPOPTIONS.h is used (directly included
                0022 C    in CPP_OPTIONS.h), this option file is left empty since all options that
                0023 C   are specific to this package are assumed to be set in ECCO_CPPOPTIONS.h
                0024 
                0025 #else /* ndef ECCO_CPPOPTIONS_H */
                0026 C   ==================================================================
                0027 C-- Package-specific Options & Macros go here
                0028 
5a54dbbd56 Jean*0029 C o I/O and pack settings
                0030 #undef CTRL_SET_PREC_32
                0031 C   This option is only relevant (for pack/unpack) with OBCS_CONTROL:
6b47d550f4 Mart*0032 #define ALLOW_NONDIMENSIONAL_CONTROL_IO
5a54dbbd56 Jean*0033 #undef EXCLUDE_CTRL_PACK
                0034 #undef ALLOW_PACKUNPACK_METHOD2
                0035 #undef CTRL_DO_PACK_UNPACK_ONLY
                0036 #undef CTRL_PACK_PRECISE
                0037 #undef CTRL_UNPACK_PRECISE
                0038 #undef CTRL_DELZNORM
69361556c2 Mart*0039 C   To read-in old (prior to PR #796) packed-ctrl file (specially the header)
                0040 #undef READ_OLD_CTRL_PACK_FILE
5a54dbbd56 Jean*0041 
                0042 C       >>> Other Control.
                0043 C   Allows for GMREDI controls
                0044 #undef ALLOW_KAPGM_CONTROL
                0045 #undef ALLOW_KAPREDI_CONTROL
                0046 C   Allows for Vertical Diffusivity controls
                0047 #undef ALLOW_DIFFKR_CONTROL
                0048 #undef ALLOW_BOTTOMDRAG_CONTROL
                0049 #undef ALLOW_DIC_CONTROL
6b47d550f4 Mart*0050 
5a54dbbd56 Jean*0051 C   Allows bathymetry as a control vector
                0052 C   Note: keep this Option separated from generic control since this control
                0053 C     involves many new dependencies that we would like to avoid in general.
                0054 #undef ALLOW_DEPTH_CONTROL
                0055 #ifdef ALLOW_DEPTH_CONTROL
                0056 C   Only relevant within DEPTH_CONTROL code:
                0057 # define USE_SMOOTH_MIN
                0058 #endif /* ALLOW_DEPTH_CONTROL */
6b47d550f4 Mart*0059 
                0060 C       >>> Generic Control.
69361556c2 Mart*0061 #undef  ALLOW_GENARR2D_CONTROL
6b47d550f4 Mart*0062 #define ALLOW_GENARR3D_CONTROL
69361556c2 Mart*0063 #undef  ALLOW_GENTIM2D_CONTROL
5a54dbbd56 Jean*0064 # undef ALLOW_UVEL0_CONTROL
                0065 # undef ALLOW_VVEL0_CONTROL
6b47d550f4 Mart*0066 
                0067 C       >>> Open boundaries
5a54dbbd56 Jean*0068 #ifdef ALLOW_OBCS
                0069 C    Control of Open-Boundaries is meaningless without compiling pkg/obcs
69361556c2 Mart*0070 C    Note: Make sure that corresponding OBCS N/S/E/W Option is defined
5a54dbbd56 Jean*0071 # define ALLOW_OBCSN_CONTROL
                0072 # define ALLOW_OBCSS_CONTROL
                0073 # define ALLOW_OBCSE_CONTROL
69361556c2 Mart*0074 # define ALLOW_OBCSW_CONTROL
5a54dbbd56 Jean*0075 #endif /* ALLOW_OBCS */
                0076 
                0077 C  o Set ALLOW_OBCS_CONTROL (Do not edit/modify):
6b47d550f4 Mart*0078 #if (defined (ALLOW_OBCSN_CONTROL) || \
                0079      defined (ALLOW_OBCSS_CONTROL) || \
69361556c2 Mart*0080      defined (ALLOW_OBCSE_CONTROL) || \
                0081      defined (ALLOW_OBCSW_CONTROL))
6b47d550f4 Mart*0082 # define ALLOW_OBCS_CONTROL
                0083 #endif
5a54dbbd56 Jean*0084 
69361556c2 Mart*0085 #ifdef ALLOW_OBCS_CONTROL
                0086 C     Untested code:
                0087 # define ALLOW_OBCS_CONTROL_MODES
                0088 C     Enable code for 2D (horizontal,vertical) weights for obcs;
                0089 C     this code is incomplete (fields are defined but not used anywhere)
                0090 # undef ALLOW_OBCS_WEIGHTS2D
                0091 #endif
                0092 
5a54dbbd56 Jean*0093 C  o Impose bounds on controls
                0094 #undef ALLOW_ADCTRLBOUND
6b47d550f4 Mart*0095 
                0096 C  o Rotation of wind/stress controls adjustments
                0097 C    from Eastward/Northward to model grid directions
                0098 #undef ALLOW_ROTATE_UV_CONTROLS
                0099 
                0100 C  o Originally the first two time-reccords of control
                0101 C    variable tau u and tau v were skipped.
                0102 C    The CTRL_SKIP_FIRST_TWO_ATM_REC_ALL option extends this
                0103 C    to the other the time variable atmospheric controls.
                0104 #undef CTRL_SKIP_FIRST_TWO_ATM_REC_ALL
                0105 
5a54dbbd56 Jean*0106 C  Note: this flag turns on extra smoothing code in ctrl_get_gen.F which
                0107 C  is inconsistent with the Weaver and Courtier, 2001 algorithm, and
                0108 C  should probably not be used. The corresponding 3D flag applied only
                0109 C  to deprecated code that is now removed. At some point we will remove
                0110 C  this flag and associated code as well.
                0111 C  o apply pkg/smooth/smooth_diff2d.F to 2D controls (outside of Smooth_Correl2D)
6b47d550f4 Mart*0112 #undef ALLOW_SMOOTH_CTRL2D
5a54dbbd56 Jean*0113 
                0114 C  o Print more debug info to STDOUT
                0115 #undef ALLOW_CTRL_DEBUG
6b47d550f4 Mart*0116 
                0117 C   ==================================================================
                0118 #endif /* ndef ECCO_CPPOPTIONS_H */
                0119 #endif /* ALLOW_CTRL */
                0120 #endif /* CTRL_OPTIONS_H */