diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/INPUT/targetlayers_scalar.nc b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/INPUT/targetlayers_scalar.nc new file mode 100644 index 0000000000..42983e423b Binary files /dev/null and b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/INPUT/targetlayers_scalar.nc differ diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_input b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_input new file mode 100644 index 0000000000..99ed6f5377 --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_input @@ -0,0 +1,587 @@ +! This input file provides the adjustable run-time parameters for version 6 of the Modular Ocean Model (MOM6). +! Where appropriate, parameters use usually given in MKS units. + +! This particular file is for the example in ice_ocean_SIS2/Baltic_ALE_Z_offline_tracers. + +! This MOM_input file typically contains only the non-default values that are needed to reproduce this example. +! A full list of parameters for this example can be found in the corresponding MOM_parameter_doc.all file +! which is generated by the model at run-time. + +! === module MOM_domains === +REENTRANT_X = False ! [Boolean] default = True + ! If true, the domain is zonally reentrant. +NIGLOBAL = 23 ! + ! The total number of thickness grid points in the x-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +NJGLOBAL = 14 ! + ! The total number of thickness grid points in the y-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +! LAYOUT = 2, 1 ! + ! The processor layout that was actually used. + +! === module MOM === +USE_REGRIDDING = True ! [Boolean] default = False + ! If True, use the ALE algorithm (regridding/remapping). If False, use the + ! layered isopycnal algorithm. +THICKNESSDIFFUSE = True ! [Boolean] default = False + ! If true, interface heights are diffused with a coefficient of KHTH. +THICKNESSDIFFUSE_FIRST = True ! [Boolean] default = False + ! If true, do thickness diffusion before dynamics. This is only used if + ! THICKNESSDIFFUSE is true. +DT = 3600.0 ! [s] + ! The (baroclinic) dynamics time step. The time-step that is actually used will + ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode + ! or the coupling timestep in coupled mode.) +DT_THERM = 7200.0 ! [s] default = 3600.0 + ! The thermodynamic and tracer advection time step. Ideally DT_THERM should be + ! an integer multiple of DT and less than the forcing or coupling time-step, + ! unless THERMO_SPANS_COUPLING is true, in which case DT_THERM can be an integer + ! multiple of the coupling timestep. By default DT_THERM is set to DT. +DTBT_RESET_PERIOD = 0.0 ! [s] default = 7200.0 + ! The period between recalculations of DTBT (if DTBT <= 0). If DTBT_RESET_PERIOD + ! is negative, DTBT is set based only on information available at + ! initialization. If 0, DTBT will be set every dynamics time step. The default + ! is set by DT_THERM. This is only used if SPLIT is true. +FRAZIL = True ! [Boolean] default = False + ! If true, water freezes if it gets too cold, and the accumulated heat deficit + ! is returned in the surface state. FRAZIL is only used if + ! ENABLE_THERMODYNAMICS is true. +DO_GEOTHERMAL = True ! [Boolean] default = False + ! If true, apply geothermal heating. +BOUND_SALINITY = True ! [Boolean] default = False + ! If true, limit salinity to being positive. (The sea-ice model may ask for more + ! salt than is available and drive the salinity negative otherwise.) +C_P = 3925.0 ! [J kg-1 K-1] default = 3991.86795711963 + ! The heat capacity of sea water, approximated as a constant. This is only used + ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 + ! definition of conservative temperature. +USE_PSURF_IN_EOS = False ! [Boolean] default = True + ! If true, always include the surface pressure contributions in equation of + ! state calculations. +CHECK_BAD_SURFACE_VALS = True ! [Boolean] default = False + ! If true, check the surface state for ridiculous values. +SAVE_INITIAL_CONDS = True ! [Boolean] default = False + ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. + +! === module MOM_fixed_initialization === +INPUTDIR = "INPUT" ! default = "." + ! The directory in which input files are found. + +! === module MOM_grid_init === +GRID_CONFIG = "mosaic" ! + ! A character string that determines the method for defining the horizontal + ! grid. Current options are: + ! mosaic - read the grid from a mosaic (supergrid) + ! file set by GRID_FILE. + ! cartesian - use a (flat) Cartesian grid. + ! spherical - use a simple spherical grid. + ! mercator - use a Mercator spherical grid. +GRID_FILE = "ocean_hgrid.nc" ! + ! Name of the file from which to read horizontal grid data. +TOPO_CONFIG = "file" ! + ! This specifies how bathymetry is specified: + ! file - read bathymetric information from the file + ! specified by (TOPO_FILE). + ! flat - flat bottom set to MAXIMUM_DEPTH. + ! bowl - an analytically specified bowl-shaped basin + ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. + ! spoon - a similar shape to 'bowl', but with an vertical + ! wall at the southern face. + ! halfpipe - a zonally uniform channel with a half-sine + ! profile in the meridional direction. + ! bbuilder - build topography from list of functions. + ! benchmark - use the benchmark test case topography. + ! Neverworld - use the Neverworld test case topography. + ! DOME - use a slope and channel configuration for the + ! DOME sill-overflow test case. + ! ISOMIP - use a slope and channel configuration for the + ! ISOMIP test case. + ! DOME2D - use a shelf and slope configuration for the + ! DOME2D gravity current/overflow test case. + ! Kelvin - flat but with rotated land mask. + ! seamount - Gaussian bump for spontaneous motion test case. + ! dumbbell - Sloshing channel with reservoirs on both ends. + ! shelfwave - exponential slope for shelfwave test case. + ! Phillips - ACC-like idealized topography used in the Phillips config. + ! dense - Denmark Strait-like dense water formation and overflow. + ! USER - call a user modified routine. +MAXIMUM_DEPTH = 6000.0 ! [m] + ! The maximum depth of the ocean. +MINIMUM_DEPTH = 0.5 ! [m] default = 0.0 + ! If MASKING_DEPTH is unspecified, then anything shallower than MINIMUM_DEPTH is + ! assumed to be land and all fluxes are masked out. If MASKING_DEPTH is + ! specified, then all depths shallower than MINIMUM_DEPTH but deeper than + ! MASKING_DEPTH are rounded to MINIMUM_DEPTH. +CHANNEL_CONFIG = "global_1deg" ! default = "none" + ! A parameter that determines which set of channels are + ! restricted to specific widths. Options are: + ! none - All channels have the grid width. + ! global_1deg - Sets 16 specific channels appropriate + ! for a 1-degree model, as used in CM2G. + ! list - Read the channel locations and widths from a + ! text file, like MOM_channel_list in the MOM_SIS + ! test case. + ! file - Read open face widths everywhere from a + ! NetCDF file on the model grid. + +! === module MOM_verticalGrid === +! Parameters providing information about the vertical grid. +NK = 50 ! [nondim] + ! The number of model layers. + +! === module MOM_EOS === +EQN_OF_STATE = "WRIGHT" ! default = "WRIGHT_FULL" + ! EQN_OF_STATE determines which ocean equation of state should be used. + ! Currently, the valid choices are "LINEAR", "UNESCO", "JACKETT_MCD", "WRIGHT", + ! "WRIGHT_REDUCED", "WRIGHT_FULL", "NEMO", "ROQUET_RHO", "ROQUET_SPV" and + ! "TEOS10". This is only used if USE_EOS is true. + +! === module MOM_tracer_flow_control === +USE_IDEAL_AGE_TRACER = True ! [Boolean] default = False + ! If true, use the ideal_age_example tracer package. +USE_ADVECTION_TEST_TRACER = True ! [Boolean] default = False + ! If true, use the advection_test_tracer tracer package. + +! === module ideal_age_example === + +! === module advection_test_tracer === +ADVECTION_TEST_X_ORIGIN = 19.5 ! [same as geoLon] default = 0.0 + ! The x-coordinate of the center of the test-functions. +ADVECTION_TEST_Y_ORIGIN = 60.5 ! [same as geoLat] default = 0.0 + ! The y-coordinate of the center of the test-functions. +ADVECTION_TEST_X_WIDTH = 1.0 ! [same as geoLon] default = 0.0 + ! The x-width of the test-functions. +ADVECTION_TEST_Y_WIDTH = 1.0 ! [same as geoLat] default = 0.0 + ! The y-width of the test-functions. + +! === module MOM_coord_initialization === +COORD_CONFIG = "file" ! default = "none" + ! This specifies how layers are to be defined: + ! ALE or none - used to avoid defining layers in ALE mode + ! file - read coordinate information from the file + ! specified by (COORD_FILE). + ! BFB - Custom coords for buoyancy-forced basin case + ! based on SST_S, T_BOT and DRHO_DT. + ! linear - linear based on interfaces not layers + ! layer_ref - linear based on layer densities + ! ts_ref - use reference temperature and salinity + ! ts_range - use range of temperature and salinity + ! (T_REF and S_REF) to determine surface density + ! and GINT calculate internal densities. + ! gprime - use reference density (RHO_0) for surface + ! density and GINT calculate internal densities. + ! ts_profile - use temperature and salinity profiles + ! (read from COORD_FILE) to set layer densities. + ! USER - call a user modified routine. +COORD_FILE = "Layer_coord50.nc" ! + ! The file from which the coordinate densities are read. +REMAP_UV_USING_OLD_ALG = True ! [Boolean] default = False + ! If true, uses the old remapping-via-a-delta-z method for remapping u and v. If + ! false, uses the new method that remaps between grids described by an old and + ! new thickness. +REGRIDDING_COORDINATE_MODE = "Z*" ! default = "LAYER" + ! Coordinate mode for vertical regridding. Choose among the following + ! possibilities: LAYER - Isopycnal or stacked shallow water layers + ! ZSTAR, Z* - stretched geopotential z* + ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf + ! SIGMA - terrain following coordinates + ! RHO - continuous isopycnal + ! HYCOM1 - HyCOM-like hybrid coordinate + ! SLIGHT - stretched coordinates above continuous isopycnal + ! ADAPTIVE - optimize for smooth neutral density surfaces +ALE_COORDINATE_CONFIG = "FILE:vgrid.nc,dz" ! default = "UNIFORM" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter ALE_RESOLUTION + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +!ALE_RESOLUTION = 3*10.1, 2*10.2, 10.3, 10.5, 10.7, 10.9, 11.3, 11.7, 12.4, 13.3, 14.6, 16.3, 18.6, 21.7, 25.9, 31.4, 38.5, 47.4, 58.4, 71.3, 86.0, 101.9, 118.1, 134.0, 148.7, 161.6, 172.6, 181.5, 188.6, 194.1, 198.3, 201.4, 203.7, 205.4, 206.7, 207.6, 208.3, 208.7, 209.1, 209.3, 209.5, 209.7, 2*209.8, 2*209.9, 209.0 ! [m] + ! The distribution of vertical resolution for the target + ! grid used for Eulerian-like coordinates. For example, + ! in z-coordinate mode, the parameter is a list of level + ! thicknesses (in m). In sigma-coordinate mode, the list + ! is of non-dimensional fractions of the water column. +REMAPPING_SCHEME = "PPM_H4" ! default = "PLM" + ! This sets the reconstruction scheme used for vertical remapping for all + ! variables. It can be one of the following schemes: PCM (1st-order + ! accurate) + ! PLM (2nd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) + +! === module MOM_state_initialization === +INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False + ! If true, initialize the layer thicknesses, temperatures, and salinities from a + ! Z-space file on a latitude-longitude grid. + +! === module MOM_initialize_layers_from_Z === +TEMP_SALT_Z_INIT_FILE = "WOA05_pottemp_salt.nc" ! default = "temp_salt_z.nc" + ! The name of the z-space input file used to initialize temperatures (T) and + ! salinities (S). If T and S are not in the same file, TEMP_Z_INIT_FILE and + ! SALT_Z_INIT_FILE must be set. +Z_INIT_FILE_PTEMP_VAR = "PTEMP" ! default = "ptemp" + ! The name of the potential temperature variable in TEMP_Z_INIT_FILE. +Z_INIT_FILE_SALT_VAR = "SALT" ! default = "salt" + ! The name of the salinity variable in SALT_Z_INIT_FILE. +Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False + ! If True, then remap straight to model coordinate from file. + +! === module MOM_diag_mediator === + +! === module MOM_MEKE === +USE_MEKE = True ! [Boolean] default = False + ! If true, turns on the MEKE scheme which calculates a sub-grid mesoscale eddy + ! kinetic energy budget. +MEKE_GMCOEFF = 1.0 ! [nondim] default = -1.0 + ! The efficiency of the conversion of potential energy into MEKE by the + ! thickness mixing parameterization. If MEKE_GMCOEFF is negative, this + ! conversion is not used or calculated. +MEKE_ALPHA_RHINES = 0.05 ! [nondim] default = 0.0 + ! If positive, is a coefficient weighting the Rhines scale in the expression for + ! mixing length used in MEKE-derived diffusivity. +MEKE_ALPHA_EADY = 0.05 ! [nondim] default = 0.0 + ! If positive, is a coefficient weighting the Eady length scale in the + ! expression for mixing length used in MEKE-derived diffusivity. + +! === module MOM_lateral_mixing_coeffs === +USE_VARIABLE_MIXING = True ! [Boolean] default = False + ! If true, the variable mixing code will be called. This allows diagnostics to + ! be created even if the scheme is not used. If KHTR_SLOPE_CFF>0 or + ! KhTh_Slope_Cff>0, this is set to true regardless of what is in the parameter + ! file. +RESOLN_SCALED_KH = True ! [Boolean] default = False + ! If true, the Laplacian lateral viscosity is scaled away when the first + ! baroclinic deformation radius is well resolved. +RESOLN_SCALED_KHTH = True ! [Boolean] default = False + ! If true, the interface depth diffusivity is scaled away when the first + ! baroclinic deformation radius is well resolved. +USE_STORED_SLOPES = True ! [Boolean] default = False + ! If true, the isopycnal slopes are calculated once and stored for re-use. This + ! uses more memory but avoids calling the equation of state more times than + ! should be necessary. +INTERNAL_WAVE_SPEED_BETTER_EST = False ! [Boolean] default = False + ! If true, use a more robust estimate of the first mode wave speed as the + ! starting point for iterations. + +! === module MOM_set_visc === +CHANNEL_DRAG = True ! [Boolean] default = False + ! If true, the bottom drag is exerted directly on each layer proportional to the + ! fraction of the bottom it overlies. +HBBL = 10.0 ! [m] + ! The thickness of a bottom boundary layer with a viscosity of KVBBL if + ! BOTTOMDRAGLAW is not defined, or the thickness over which near-bottom + ! velocities are averaged for the drag law if BOTTOMDRAGLAW is defined but + ! LINEAR_DRAG is not. +DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 + ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an + ! unresolved velocity that is combined with the resolved velocity to estimate + ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is + ! defined. +BBL_USE_EOS = True ! [Boolean] default = False + ! If true, use the equation of state in determining the properties of the bottom + ! boundary layer. Otherwise use the layer target potential densities. +BBL_THICK_MIN = 0.1 ! [m] default = 0.0 + ! The minimum bottom boundary layer thickness that can be used with + ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum + ! near-bottom viscosity. +KV = 1.0E-04 ! [m2 s-1] + ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 + ! m2 s-1, may be used. + +! === module MOM_thickness_diffuse === +KHTH = 600.0 ! [m2 s-1] default = 0.0 + ! The background horizontal thickness diffusivity. +KHTH_MAX = 900.0 ! [m2 s-1] default = 0.0 + ! The maximum horizontal thickness diffusivity. + +! === module MOM_dynamics_split_RK2 === +TIDES = True ! [Boolean] default = False + ! If true, apply tidal momentum forcing. + +! === module MOM_continuity === + +! === module MOM_continuity_PPM === +ETA_TOLERANCE = 1.0E-06 ! [m] default = 2.5E-09 + ! The tolerance for the differences between the barotropic and baroclinic + ! estimates of the sea surface height due to the fluxes through each face. The + ! total tolerance for SSH is 4 times this value. The default is + ! 0.5*NK*ANGSTROM, and this should not be set less than about + ! 10^-15*MAXIMUM_DEPTH. +VELOCITY_TOLERANCE = 1.0E-04 ! [m s-1] default = 3.0E+08 + ! The tolerance for barotropic velocity discrepancies between the barotropic + ! solution and the sum of the layer thicknesses. + +! === module MOM_CoriolisAdv === +BOUND_CORIOLIS = True ! [Boolean] default = False + ! If true, the Coriolis terms at u-points are bounded by the four estimates of + ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This + ! option would have no effect on the SADOURNY Coriolis scheme if it were + ! possible to use centered difference thickness fluxes. + +! === module MOM_tidal_forcing === +TIDE_M2 = True ! [Boolean] default = False + ! If true, apply tidal momentum forcing at the M2 frequency. This is only used + ! if TIDES is true. +TIDE_SAL_SCALAR_VALUE = 0.094 ! [m m-1] + ! The constant of proportionality between sea surface height (really it should + ! be bottom pressure) anomalies and bottom geopotential anomalies. This is only + ! used if TIDES and TIDE_USE_SAL_SCALAR are true. + +! === module MOM_PressureForce === + +! === module MOM_PressureForce_FV === +TIDES_ANSWER_DATE = 20230630 ! default = 99991231 + ! The vintage of self-attraction and loading (SAL) and tidal forcing + ! calculations in Boussinesq mode. Values below 20230701 recover the old answers + ! in which the SAL is part of the tidal forcing calculation. The change is due + ! to a reordered summation and the difference is only at bit level. +MASS_WEIGHT_IN_PRESSURE_GRADIENT = True ! [Boolean] default = False + ! If true, use mass weighting when interpolating T/S for integrals near the + ! bathymetry in AFV pressure gradient calculations. + +! === module MOM_hor_visc === +LAPLACIAN = True ! [Boolean] default = False + ! If true, use a Laplacian horizontal viscosity. +KH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 + ! The velocity scale which is multiplied by the grid spacing to calculate the + ! Laplacian viscosity. The final viscosity is the largest of this scaled + ! viscosity, the Smagorinsky and Leith viscosities, and KH. +AH_VEL_SCALE = 0.05 ! [m s-1] default = 0.0 + ! The velocity scale which is multiplied by the cube of the grid spacing to + ! calculate the biharmonic viscosity. The final viscosity is the largest of this + ! scaled viscosity, the Smagorinsky and Leith viscosities, and AH. +SMAGORINSKY_AH = True ! [Boolean] default = False + ! If true, use a biharmonic Smagorinsky nonlinear eddy viscosity. +BACKSCATTER_UNDERBOUND = True ! [Boolean] default = False + ! If true, the bounds on the biharmonic viscosity are allowed to increase where + ! the Laplacian viscosity is negative (due to backscatter parameterizations) + ! beyond the largest timestep-dependent stable values of biharmonic viscosity + ! when no Laplacian viscosity is applied. The default is true for historical + ! reasons, but this option probably should not be used because it can contribute + ! to numerical instabilities. +SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0 + ! The nondimensional biharmonic Smagorinsky constant, typically 0.015 - 0.06. + +! === module MOM_vert_friction === +HMIX_FIXED = 0.5 ! [m] + ! The prescribed depth over which the near-surface viscosity and diffusivity are + ! elevated when the bulk mixed layer is not used. +MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 + ! The maximum velocity allowed before the velocity components are truncated. +CFL_TRUNCATE_RAMP_TIME = 7200.0 ! [s] default = 0.0 + ! The time over which the CFL truncation value is ramped up at the beginning of + ! the run. + +! === module MOM_barotropic === +BOUND_BT_CORRECTION = True ! [Boolean] default = False + ! If true, the corrective pseudo mass-fluxes into the barotropic solver are + ! limited to values that require less than maxCFL_BT_cont to be accommodated. +BT_PROJECT_VELOCITY = True ! [Boolean] default = False + ! If true, step the barotropic velocity first and project out the velocity + ! tendency by 1+BEBT when calculating the transport. The default (false) is to + ! use a predictor continuity step to find the pressure field, and then to do a + ! corrector continuity step using a weighted average of the old and new + ! velocities, with weights of (1-BEBT) and BEBT. +BAROTROPIC_TIDAL_SAL_BUG = False ! [Boolean] default = True + ! If true, the tidal self-attraction and loading anomaly in the barotropic + ! solver has the wrong sign, replicating a long-standing bug with a scalar + ! self-attraction and loading term or the SAL term from a previous simulation. +BEBT = 0.2 ! [nondim] default = 0.1 + ! BEBT determines whether the barotropic time stepping uses the forward-backward + ! time-stepping scheme or a backward Euler scheme. BEBT is valid in the range + ! from 0 (for a forward-backward treatment of nonrotating gravity waves) to 1 + ! (for a backward Euler treatment). In practice, BEBT must be greater than about + ! 0.05. +DTBT = -0.95 ! [s or nondim] default = -0.98 + ! The barotropic time step, in s. DTBT is only used with the split explicit time + ! stepping. To set the time step automatically based the maximum stable value + ! use 0, or a negative value gives the fraction of the stable value. Setting + ! DTBT to 0 is the same as setting it to -0.98. The value of DTBT that will + ! actually be used is an integer fraction of DT, rounding down. + +! === module MOM_mixed_layer_restrat === +MIXEDLAYER_RESTRAT = True ! [Boolean] default = False + ! If true, a density-gradient dependent re-stratifying flow is imposed in the + ! mixed layer. Can be used in ALE mode without restriction but in layer mode can + ! only be used if BULKMIXEDLAYER is true. +FOX_KEMPER_ML_RESTRAT_COEF = 20.0 ! [nondim] default = 0.0 + ! A nondimensional coefficient that is proportional to the ratio of the + ! deformation radius to the dominant lengthscale of the submesoscale mixed layer + ! instabilities, times the minimum of the ratio of the mesoscale eddy kinetic + ! energy to the large-scale geostrophic kinetic energy or 1 plus the square of + ! the grid spacing over the deformation radius, as detailed by Fox-Kemper et al. + ! (2010) + +! === module MOM_diagnostics === + +! === module MOM_diabatic_driver === +! The following parameters are used for diabatic processes. +ENERGETICS_SFC_PBL = True ! [Boolean] default = False + ! If true, use an implied energetics planetary boundary layer scheme to + ! determine the diffusivity and viscosity in the surface boundary layer. + +! === module MOM_tidal_mixing === +! Vertical Tidal Mixing Parameterization +INT_TIDE_DISSIPATION = True ! [Boolean] default = False + ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, + ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). +INT_TIDE_DECAY_SCALE = 300.0 ! [m] default = 500.0 + ! The decay scale away from the bottom for tidal TKE with the new coding when + ! INT_TIDE_DISSIPATION is used. +KAPPA_ITIDES = 6.28319E-04 ! [m-1] default = 6.283185307179586E-04 + ! A topographic wavenumber used with INT_TIDE_DISSIPATION. The default is 2pi/10 + ! km, as in St.Laurent et al. 2002. +KAPPA_H2_FACTOR = 0.75 ! [nondim] default = 1.0 + ! A scaling factor for the roughness amplitude with INT_TIDE_DISSIPATION. +TKE_ITIDE_MAX = 0.1 ! [W m-2] default = 1000.0 + ! The maximum internal tide energy source available to mix above the bottom + ! boundary layer with INT_TIDE_DISSIPATION. +READ_TIDEAMP = True ! [Boolean] default = False + ! If true, read a file (given by TIDEAMP_FILE) containing the tidal amplitude + ! with INT_TIDE_DISSIPATION. +H2_FILE = "sgs_h2.nc" ! + ! The path to the file containing the sub-grid-scale topographic roughness + ! amplitude with INT_TIDE_DISSIPATION. + +! === module MOM_geothermal === +GEOTHERMAL_SCALE = 0.001 ! [W m-2 or various] default = 0.0 + ! The constant geothermal heat flux, a rescaling factor for the heat flux read + ! from GEOTHERMAL_FILE, or 0 to disable the geothermal heating. +GEOTHERMAL_FILE = "geothermal_heating_cm2g.nc" ! default = "" + ! The file from which the geothermal heating is to be read, or blank to use a + ! constant heating rate. + +! === module MOM_set_diffusivity === +BBL_MIXING_AS_MAX = False ! [Boolean] default = True + ! If true, take the maximum of the diffusivity from the BBL mixing and the other + ! diffusivities. Otherwise, diffusivity from the BBL_mixing is simply added. +USE_LOTW_BBL_DIFFUSIVITY = True ! [Boolean] default = False + ! If true, uses a simple, imprecise but non-coordinate dependent, model of BBL + ! mixing diffusivity based on Law of the Wall. Otherwise, uses the original BBL + ! scheme. +SIMPLE_TKE_TO_KD = True ! [Boolean] default = False + ! If true, uses a simple estimate of Kd/TKE that will work for arbitrary + ! vertical coordinates. If false, calculates Kd/TKE and bounds based on exact + ! energetics for an isopycnal layer-formulation. +LOTW_BBL_ANSWER_DATE = 20190101 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the LOTW_BBL + ! calculations. Values below 20240630 recover the original answers, while + ! higher values use more accurate expressions. This only applies when + ! USE_LOTW_BBL_DIFFUSIVITY is true. + +! === module MOM_bkgnd_mixing === +! Adding static vertical background mixing coefficients +KD = 2.0E-05 ! [m2 s-1] default = 0.0 + ! The background diapycnal diffusivity of density in the interior. Zero or the + ! molecular value, ~1e-7 m2 s-1, may be used. +KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 + ! The minimum diapycnal diffusivity. +HENYEY_IGW_BACKGROUND = True ! [Boolean] default = False + ! If true, use a latitude-dependent scaling for the near surface background + ! diffusivity, as described in Harrison & Hallberg, JPO 2008. +KD_MAX = 0.1 ! [m2 s-1] default = -1.0 + ! The maximum permitted increment for the diapycnal diffusivity from TKE-based + ! parameterizations, or a negative value for no limit. + +! === module MOM_kappa_shear === +! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 +USE_JACKSON_PARAM = True ! [Boolean] default = False + ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing + ! parameterization. +MAX_RINO_IT = 25 ! [nondim] default = 50 + ! The maximum number of iterations that may be used to estimate the Richardson + ! number driven mixing. + +! === module MOM_diabatic_aux === +! The following parameters are used for auxiliary diabatic processes. +VAR_PEN_SW = True ! [Boolean] default = False + ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine + ! the e-folding depth of incoming short wave radiation. +CHL_FILE = "seawifs_1998-2006_GOLD_smoothed_2X.nc" ! + ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It + ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. + +! === module MOM_energetic_PBL === +USE_MLD_ITERATION = False ! [Boolean] default = True + ! A logical that specifies whether or not to use the distance to the bottom of + ! the actively turbulent boundary layer to help set the EPBL length scale. +EPBL_ANSWER_DATE = 20231231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the energetic PBL + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. + ! Values below 20240101 use A**(1./3.) to estimate the cube root of A in several + ! expressions, while higher values use the integer root function cuberoot(A) and + ! therefore can work with scaled variables. + +! === module MOM_opacity === +PEN_SW_NBANDS = 3 ! default = 1 + ! The number of bands of penetrating shortwave radiation. + +! === module MOM_tracer_advect === +TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "PLM" + ! The horizontal transport scheme for tracers: + ! PLM - Piecewise Linear Method + ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) + ! PPM - Piecewise Parabolic Method (Colella-Woodward) + +! === module MOM_tracer_hor_diff === +KHTR = 600.0 ! [m2 s-1] default = 0.0 + ! The background along-isopycnal tracer diffusivity. +KHTR_MIN = 50.0 ! [m2 s-1] default = 0.0 + ! The minimum along-isopycnal tracer diffusivity. +KHTR_MAX = 900.0 ! [m2 s-1] default = 0.0 + ! The maximum along-isopycnal tracer diffusivity. + +! === module MOM_neutral_diffusion === +! This module implements neutral diffusion of tracers +USE_NEUTRAL_DIFFUSION = True ! [Boolean] default = False + ! If true, enables the neutral diffusion module. +NDIFF_ANSWER_DATE = 20240101 ! default = 99991231 + ! The vintage of the order of arithmetic to use for the neutral diffusion. + ! Values of 20240330 or below recover the answers from the original form of the + ! neutral diffusion code, while higher values use mathematically equivalent + ! expressions that recover rotational symmetry. + +! === module MOM_sum_output === +MAXTRUNC = 5000 ! [truncations save_interval-1] default = 0 + ! The run will be stopped, and the day set to a very large value if the velocity + ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 + ! to stop if there is any truncation of velocities. +ENERGYSAVEDAYS = 0.5 ! [days] default = 1.0 + ! The interval in units of TIMEUNIT between saves of the energies of the run and + ! other globally summed diagnostics. + +! === module ocean_model_init === +RESTART_CONTROL = 3 ! default = 1 + ! An integer whose bits encode which restart files are written. Add 2 (bit 1) + ! for a time-stamped file, and odd (bit 0) for a non-time-stamped file. A + ! restart file will be saved at the end of the run segment for any non-negative + ! value. + +! === module MOM_surface_forcing === +READ_GUST_2D = True ! [Boolean] default = False + ! If true, use a 2-dimensional gustiness supplied from an input file +GUST_CONST = 0.02 ! [Pa] default = 0.0 + ! The background gustiness in the winds. +GUST_2D_FILE = "gustiness_qscat.nc" ! + ! The file in which the wind gustiness is found in variable gustiness. + +! Debugging parameters set to non-default values +U_TRUNC_FILE = "U_velocity_truncations" ! default = "" + ! The absolute path to a file into which the accelerations leading to zonal + ! velocity truncations are written. Undefine this for efficiency if this + ! diagnostic is not needed. +V_TRUNC_FILE = "V_velocity_truncations" ! default = "" + ! The absolute path to a file into which the accelerations leading to meridional + ! velocity truncations are written. Undefine this for efficiency if this + ! diagnostic is not needed. diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_override b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_override new file mode 100644 index 0000000000..096e49d08a --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_override @@ -0,0 +1,6 @@ +! Blank file in which we can put "overrides" for parameters +NUM_DIAG_COORDS = 2 +DIAG_COORDS = "z Z ZSTAR", "scalar SCALAR SCALAR" +DIAG_COORD_P_REF_SCALAR = 0.0 +DIAG_COORD_DEF_SCALAR = "FILE:targetlayers_scalar.nc,interfaces=interfaces" +DIAG_COORD_HISTOGRAM_EXTENSIVE_DIAGS_SCALAR = True diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_override_offline b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_override_offline new file mode 100644 index 0000000000..3c47ecfdad --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_override_offline @@ -0,0 +1,20 @@ +! Blank file in which we can put "overrides" for parameters +#override USE_REGRIDDING = True +#override BULKMIXEDLAYER = False +#override COORD_FILE = "Layer_coord50.nc" +#override DIABATIC_FIRST = False +#override PEN_SW_NBANDS = 0 +#override REGRID_TIME_SCALE = 0.0 + +! Related to offline tracer transport +OFFLINE_TRACER_MODE = True +OFFLINEDIR = "ONLINE/" +OFF_SUM_FILE = "00010101.off_sum_1day.nc" +OFF_SNAP_FILE = "00010101.off_snap_1day.nc" +OFF_SURF_FILE = "00010101.off_sum_1day.nc" +OFF_MEAN_FILE = "00010101.off_avg_1day.nc" +START_INDEX = 1 +DT_OFFLINE = 86400.0 +DT_OFFLINE_VERTICAL = 86400.0 +NUM_OFF_ITER = 30 +NUMTIME = 5 diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_override_online b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_override_online new file mode 100644 index 0000000000..550754ce43 --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_override_online @@ -0,0 +1,17 @@ +! Blank file in which we can put "overrides" for parameters +NK = 50 +#override USE_REGRIDDING = True +#override BULKMIXEDLAYER = False +#override COORD_FILE = "Layer_coord50.nc" +#override DIABATIC_FIRST = False +#override REGRID_TIME_SCALE = 0.0 + +ALE_COORDINATE_CONFIG = "FILE:vgrid.nc,dz" + +USE_ADVECTION_TEST_TRACER = True +ADVECTION_TEST_X_ORIGIN = 19.5 +ADVECTION_TEST_Y_ORIGIN = 60.5 +ADVECTION_TEST_X_WIDTH = 1.0 +ADVECTION_TEST_Y_WIDTH = 1.0 + + diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_parameter_doc.all b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_parameter_doc.all new file mode 100644 index 0000000000..ebe788008b --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_parameter_doc.all @@ -0,0 +1,2532 @@ +! This file was written by the model and records all non-layout or debugging parameters used at run-time. + +! === module MOM === +SPLIT = True ! [Boolean] default = True + ! Use the split time stepping if true. +SPLIT_RK2B = False ! [Boolean] default = False + ! If true, use a version of the split explicit time stepping scheme that + ! exchanges velocities with step_MOM that have the average barotropic phase over + ! a baroclinic timestep rather than the instantaneous barotropic phase. +CALC_RHO_FOR_SEA_LEVEL = False ! [Boolean] default = False + ! If true, the in-situ density is used to calculate the effective sea level that + ! is returned to the coupler. If false, the Boussinesq parameter RHO_0 is used. +ENABLE_THERMODYNAMICS = True ! [Boolean] default = True + ! If true, Temperature and salinity are used as state variables. +USE_EOS = True ! [Boolean] default = True + ! If true, density is calculated from temperature and salinity with an equation + ! of state. If USE_EOS is true, ENABLE_THERMODYNAMICS must be true as well. +DIABATIC_FIRST = False ! [Boolean] default = False + ! If true, apply diabatic and thermodynamic processes, including buoyancy + ! forcing and mass gain or loss, before stepping the dynamics forward. +USE_CONTEMP_ABSSAL = False ! [Boolean] default = False + ! If true, the prognostics T&S are the conservative temperature and absolute + ! salinity. Care should be taken to convert them to potential temperature and + ! practical salinity before exchanging them with the coupler and/or reporting + ! T&S diagnostics. +ADIABATIC = False ! [Boolean] default = False + ! There are no diapycnal mass fluxes if ADIABATIC is true. This assumes that KD + ! = 0.0 and that there is no buoyancy forcing, but makes the model faster by + ! eliminating subroutine calls. +DO_DYNAMICS = True ! [Boolean] default = True + ! If False, skips the dynamics calls that update u & v, as well as the gravity + ! wave adjustment to h. This may be a fragile feature, but can be useful during + ! development +OFFLINE_TRACER_MODE = False ! [Boolean] default = False + ! If true, barotropic and baroclinic dynamics, thermodynamics are all bypassed + ! with all the fields necessary to integrate the tracer advection and diffusion + ! equation are read in from files stored from a previous integration of the + ! prognostic model. NOTE: This option only used in the ocean_solo_driver. +USE_REGRIDDING = True ! [Boolean] default = False + ! If True, use the ALE algorithm (regridding/remapping). If False, use the + ! layered isopycnal algorithm. +REMAP_UV_USING_OLD_ALG = True ! [Boolean] default = False + ! If true, uses the old remapping-via-a-delta-z method for remapping u and v. If + ! false, uses the new method that remaps between grids described by an old and + ! new thickness. +REMAP_AUXILIARY_VARS = False ! [Boolean] default = False + ! If true, apply ALE remapping to all of the auxiliary 3-dimensional variables + ! that are needed to reproduce across restarts, similarly to what is already + ! being done with the primary state variables. The default should be changed to + ! true. +BULKMIXEDLAYER = False ! [Boolean] default = False + ! If true, use a Kraus-Turner-like bulk mixed layer with transitional buffer + ! layers. Layers 1 through NKML+NKBL have variable densities. There must be at + ! least NKML+NKBL+1 layers if BULKMIXEDLAYER is true. BULKMIXEDLAYER can not be + ! used with USE_REGRIDDING. The default is influenced by ENABLE_THERMODYNAMICS. +THICKNESSDIFFUSE = True ! [Boolean] default = False + ! If true, isopycnal surfaces are diffused with a Laplacian coefficient of KHTH. +APPLY_INTERFACE_FILTER = False ! [Boolean] default = False + ! If true, model interface heights are subjected to a grid-scale dependent + ! spatial smoothing, often with biharmonic filter. +THICKNESSDIFFUSE_FIRST = True ! [Boolean] default = False + ! If true, do thickness diffusion or interface height smoothing before dynamics. + ! This is only used if THICKNESSDIFFUSE or APPLY_INTERFACE_FILTER is true. +USE_POROUS_BARRIER = False ! [Boolean] default = False + ! If true, use porous barrier to constrain the widths and face areas at the + ! edges of the grid cells. +BATHYMETRY_AT_VEL = False ! [Boolean] default = False + ! If true, there are separate values for the basin depths at velocity points. + ! Otherwise the effects of topography are entirely determined from thickness + ! points. +DT = 3600.0 ! [s] + ! The (baroclinic) dynamics time step. The time-step that is actually used will + ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode + ! or the coupling timestep in coupled mode.) +DT_THERM = 7200.0 ! [s] default = 3600.0 + ! The thermodynamic and tracer advection time step. Ideally DT_THERM should be + ! an integer multiple of DT and less than the forcing or coupling time-step, + ! unless THERMO_SPANS_COUPLING is true, in which case DT_THERM can be an integer + ! multiple of the coupling timestep. By default DT_THERM is set to DT. +THERMO_SPANS_COUPLING = False ! [Boolean] default = False + ! If true, the MOM will take thermodynamic and tracer timesteps that can be + ! longer than the coupling timestep. The actual thermodynamic timestep that is + ! used in this case is the largest integer multiple of the coupling timestep + ! that is less than or equal to DT_THERM. +HMIX_SFC_PROP = 1.0 ! [m] default = 1.0 + ! If BULKMIXEDLAYER is false, HMIX_SFC_PROP is the depth over which to average + ! to find surface properties like SST and SSS or density (but not surface + ! velocities). +HMIX_UV_SFC_PROP = 0.0 ! [m] default = 0.0 + ! If BULKMIXEDLAYER is false, HMIX_UV_SFC_PROP is the depth over which to + ! average to find surface flow properties, SSU, SSV. A non-positive value + ! indicates no averaging. +HFREEZE = -1.0 ! [m] default = -1.0 + ! If HFREEZE > 0, melt potential will be computed. The actual depth over which + ! melt potential is computed will be min(HFREEZE, OBLD), where OBLD is the + ! boundary layer depth. If HFREEZE <= 0 (default), melt potential will not be + ! computed. +INTERPOLATE_P_SURF = False ! [Boolean] default = False + ! If true, linearly interpolate the surface pressure over the coupling time + ! step, using the specified value at the end of the step. +DTBT_RESET_PERIOD = 0.0 ! [s] default = 7200.0 + ! The period between recalculations of DTBT (if DTBT <= 0). If DTBT_RESET_PERIOD + ! is negative, DTBT is set based only on information available at + ! initialization. If 0, DTBT will be set every dynamics time step. The default + ! is set by DT_THERM. This is only used if SPLIT is true. +FRAZIL = True ! [Boolean] default = False + ! If true, water freezes if it gets too cold, and the accumulated heat deficit + ! is returned in the surface state. FRAZIL is only used if + ! ENABLE_THERMODYNAMICS is true. +DO_GEOTHERMAL = True ! [Boolean] default = False + ! If true, apply geothermal heating. +BOUND_SALINITY = True ! [Boolean] default = False + ! If true, limit salinity to being positive. (The sea-ice model may ask for more + ! salt than is available and drive the salinity negative otherwise.) +MIN_SALINITY = 0.0 ! [PPT] default = 0.0 + ! The minimum value of salinity when BOUND_SALINITY=True. +SALINITY_UNDERFLOW = 0.0 ! [PPT] default = 0.0 + ! A tiny value of salinity below which the it is set to 0. For reference, one + ! molecule of salt per square meter of ocean is of order 1e-29 ppt. +TEMPERATURE_UNDERFLOW = 0.0 ! [degC] default = 0.0 + ! A tiny magnitude of temperatures below which they are set to 0. +C_P = 3925.0 ! [J kg-1 K-1] default = 3991.86795711963 + ! The heat capacity of sea water, approximated as a constant. This is only used + ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 + ! definition of conservative temperature. +USE_PSURF_IN_EOS = False ! [Boolean] default = True + ! If true, always include the surface pressure contributions in equation of + ! state calculations. +P_REF = 2.0E+07 ! [Pa] default = 2.0E+07 + ! The pressure that is used for calculating the coordinate density. (1 Pa = 1e4 + ! dbar, so 2e7 is commonly used.) This is only used if USE_EOS and + ! ENABLE_THERMODYNAMICS are true. +FIRST_DIRECTION = 0 ! default = 0 + ! An integer that indicates which direction goes first in parts of the code that + ! use directionally split updates, with even numbers (or 0) used for x- first + ! and odd numbers used for y-first. +ALTERNATE_FIRST_DIRECTION = False ! [Boolean] default = False + ! If true, after every dynamic timestep alternate whether the x- or y- direction + ! updates occur first in directionally split parts of the calculation. If this + ! is true, FIRST_DIRECTION applies at the start of a new run or if the next + ! first direction can not be found in the restart file. +CHECK_BAD_SURFACE_VALS = True ! [Boolean] default = False + ! If true, check the surface state for ridiculous values. +BAD_VAL_SSH_MAX = 20.0 ! [m] default = 20.0 + ! The value of SSH above which a bad value message is triggered, if + ! CHECK_BAD_SURFACE_VALS is true. +BAD_VAL_SSS_MAX = 45.0 ! [PPT] default = 45.0 + ! The value of SSS above which a bad value message is triggered, if + ! CHECK_BAD_SURFACE_VALS is true. +BAD_VAL_SST_MAX = 45.0 ! [deg C] default = 45.0 + ! The value of SST above which a bad value message is triggered, if + ! CHECK_BAD_SURFACE_VALS is true. +BAD_VAL_SST_MIN = -2.1 ! [deg C] default = -2.1 + ! The value of SST below which a bad value message is triggered, if + ! CHECK_BAD_SURFACE_VALS is true. +BAD_VAL_COLUMN_THICKNESS = 0.0 ! [m] default = 0.0 + ! The value of column thickness below which a bad value message is triggered, if + ! CHECK_BAD_SURFACE_VALS is true. +DEFAULT_ANSWER_DATE = 99991231 ! default = 99991231 + ! This sets the default value for the various _ANSWER_DATE parameters. +SURFACE_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the expressions for the surface properties. Values below + ! 20190101 recover the answers from the end of 2018, while higher values use + ! updated and more robust forms of the same expressions. +USE_DIABATIC_TIME_BUG = False ! [Boolean] default = False + ! If true, uses the wrong calendar time for diabatic processes, as was done in + ! MOM6 versions prior to February 2018. This is not recommended. +SAVE_INITIAL_CONDS = True ! [Boolean] default = False + ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. +IC_OUTPUT_FILE = "MOM_IC" ! default = "MOM_IC" + ! The file into which to write the initial conditions. +WRITE_GEOM = 1 ! default = 1 + ! If =0, never write the geometry and vertical grid files. If =1, write the + ! geometry and vertical grid files only for a new simulation. If =2, always + ! write the geometry and vertical grid files. Other values are invalid. +USE_DBCLIENT = False ! [Boolean] default = False + ! If true, initialize a client to a remote database that can be used for online + ! analysis and machine-learning inference. +ICE_SHELF = False ! [Boolean] default = False + ! If true, enables the ice shelf model. +USE_PARTICLES = False ! [Boolean] default = False + ! If true, use the particles package. +USE_UH_PARTICLES = False ! [Boolean] default = False + ! If true, use the uh velocity in the particles package. +ENSEMBLE_OCEAN = False ! [Boolean] default = False + ! If False, The model is being run in serial mode as a single realization. If + ! True, The current model realization is part of a larger ensemble and at the + ! end of step MOM, we will perform a gather of the ensemble members for + ! statistical evaluation and/or data assimilation. +HOMOGENIZE_FORCINGS = False ! [Boolean] default = False + ! If True, homogenize the forces and fluxes. + +! === module MOM_domains === +REENTRANT_X = False ! [Boolean] default = True + ! If true, the domain is zonally reentrant. +REENTRANT_Y = False ! [Boolean] default = False + ! If true, the domain is meridionally reentrant. +TRIPOLAR_N = False ! [Boolean] default = False + ! Use tripolar connectivity at the northern edge of the domain. With + ! TRIPOLAR_N, NIGLOBAL must be even. +NIGLOBAL = 23 ! + ! The total number of thickness grid points in the x-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +NJGLOBAL = 14 ! + ! The total number of thickness grid points in the y-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +NIHALO = 4 ! default = 4 + ! The number of halo points on each side in the x-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. +NJHALO = 4 ! default = 4 + ! The number of halo points on each side in the y-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. + +! === module MOM_hor_index === +! Sets the horizontal array index types. + +! === module MOM_grid === +! Parameters providing information about the lateral grid. +REFERENCE_HEIGHT = 0.0 ! [m] default = 0.0 + ! A reference value for geometric height fields, such as bathyT. + +! === module MOM_fixed_initialization === +INPUTDIR = "INPUT" ! default = "." + ! The directory in which input files are found. + +! === module MOM_grid_init === +GRID_CONFIG = "mosaic" ! + ! A character string that determines the method for defining the horizontal + ! grid. Current options are: + ! mosaic - read the grid from a mosaic (supergrid) + ! file set by GRID_FILE. + ! cartesian - use a (flat) Cartesian grid. + ! spherical - use a simple spherical grid. + ! mercator - use a Mercator spherical grid. +GRID_FILE = "ocean_hgrid.nc" ! + ! Name of the file from which to read horizontal grid data. +USE_TRIPOLAR_GEOLONB_BUG = False ! [Boolean] default = False + ! If true, use older code that incorrectly sets the longitude in some points + ! along the tripolar fold to be off by 360 degrees. +RAD_EARTH = 6.378E+06 ! [m] default = 6.378E+06 + ! The radius of the Earth. +TOPO_CONFIG = "file" ! + ! This specifies how bathymetry is specified: + ! file - read bathymetric information from the file + ! specified by (TOPO_FILE). + ! flat - flat bottom set to MAXIMUM_DEPTH. + ! bowl - an analytically specified bowl-shaped basin + ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. + ! spoon - a similar shape to 'bowl', but with an vertical + ! wall at the southern face. + ! halfpipe - a zonally uniform channel with a half-sine + ! profile in the meridional direction. + ! bbuilder - build topography from list of functions. + ! benchmark - use the benchmark test case topography. + ! Neverworld - use the Neverworld test case topography. + ! DOME - use a slope and channel configuration for the + ! DOME sill-overflow test case. + ! ISOMIP - use a slope and channel configuration for the + ! ISOMIP test case. + ! DOME2D - use a shelf and slope configuration for the + ! DOME2D gravity current/overflow test case. + ! Kelvin - flat but with rotated land mask. + ! seamount - Gaussian bump for spontaneous motion test case. + ! dumbbell - Sloshing channel with reservoirs on both ends. + ! shelfwave - exponential slope for shelfwave test case. + ! Phillips - ACC-like idealized topography used in the Phillips config. + ! dense - Denmark Strait-like dense water formation and overflow. + ! USER - call a user modified routine. +TOPO_FILE = "topog.nc" ! default = "topog.nc" + ! The file from which the bathymetry is read. +TOPO_VARNAME = "depth" ! default = "depth" + ! The name of the bathymetry variable in TOPO_FILE. +TOPO_EDITS_FILE = "" ! default = "" + ! The file from which to read a list of i,j,z topography overrides. +ALLOW_LANDMASK_CHANGES = False ! [Boolean] default = False + ! If true, allow topography overrides to change land mask. +MINIMUM_DEPTH = 0.5 ! [m] default = 0.0 + ! If MASKING_DEPTH is unspecified, then anything shallower than MINIMUM_DEPTH is + ! assumed to be land and all fluxes are masked out. If MASKING_DEPTH is + ! specified, then all depths shallower than MINIMUM_DEPTH but deeper than + ! MASKING_DEPTH are rounded to MINIMUM_DEPTH. +MASKING_DEPTH = -9999.0 ! [m] default = -9999.0 + ! The depth below which to mask points as land points, for which all fluxes are + ! zeroed out. MASKING_DEPTH is ignored if it has the special default value. +MAXIMUM_DEPTH = 6000.0 ! [m] + ! The maximum depth of the ocean. + +! === module MOM_open_boundary === +! Controls where open boundaries are located, what kind of boundary condition to impose, and what data to apply, +! if any. +OBC_NUMBER_OF_SEGMENTS = 0 ! default = 0 + ! The number of open boundary segments. +CHANNEL_CONFIG = "global_1deg" ! default = "none" + ! A parameter that determines which set of channels are + ! restricted to specific widths. Options are: + ! none - All channels have the grid width. + ! global_1deg - Sets 16 specific channels appropriate + ! for a 1-degree model, as used in CM2G. + ! list - Read the channel locations and widths from a + ! text file, like MOM_channel_list in the MOM_SIS + ! test case. + ! file - Read open face widths everywhere from a + ! NetCDF file on the model grid. +SUBGRID_TOPO_AT_VEL = False ! [Boolean] default = False + ! If true, use variables from TOPO_AT_VEL_FILE as parameters for porous barrier. +ROTATION = "2omegasinlat" ! default = "2omegasinlat" + ! This specifies how the Coriolis parameter is specified: + ! 2omegasinlat - Use twice the planetary rotation rate + ! times the sine of latitude. + ! betaplane - Use a beta-plane or f-plane. + ! USER - call a user modified routine. +OMEGA = 7.2921E-05 ! [s-1] default = 7.2921E-05 + ! The rotation rate of the earth. +GRID_ROTATION_ANGLE_BUGS = False ! [Boolean] default = False + ! If true, use an older algorithm to calculate the sine and cosines needed + ! rotate between grid-oriented directions and true north and east. Differences + ! arise at the tripolar fold. + +! === module MOM_verticalGrid === +! Parameters providing information about the vertical grid. +G_EARTH = 9.8 ! [m s-2] default = 9.8 + ! The gravitational acceleration of the Earth. +RHO_0 = 1035.0 ! [kg m-3] default = 1035.0 + ! The mean ocean density used with BOUSSINESQ true to calculate accelerations + ! and the mass for conservation properties, or with BOUSSINSEQ false to convert + ! some parameters from vertical units of m to kg m-2. +BOUSSINESQ = True ! [Boolean] default = True + ! If true, make the Boussinesq approximation. +ANGSTROM = 1.0E-10 ! [m] default = 1.0E-10 + ! The minimum layer thickness, usually one-Angstrom. +H_TO_M = 1.0 ! [m H-1] default = 1.0 + ! A constant that translates the model's internal units of thickness into m. +NK = 50 ! [nondim] + ! The number of model layers. + +! === module MOM_tracer_registry === + +! === module MOM_EOS === +EQN_OF_STATE = "WRIGHT" ! default = "WRIGHT" + ! EQN_OF_STATE determines which ocean equation of state should be used. + ! Currently, the valid choices are "LINEAR", "UNESCO", "JACKETT_MCD", "WRIGHT", + ! "WRIGHT_REDUCED", "WRIGHT_FULL", "NEMO", "ROQUET_RHO", "ROQUET_SPV" and + ! "TEOS10". This is only used if USE_EOS is true. +USE_WRIGHT_2ND_DERIV_BUG = False ! [Boolean] default = False + ! If true, use a bug in the calculation of the second derivatives of density + ! with temperature and with temperature and pressure that causes some terms to + ! be only 2/3 of what they should be. +EOS_QUADRATURE = False ! [Boolean] default = False + ! If true, always use the generic (quadrature) code code for the integrals of + ! density. +TFREEZE_FORM = "LINEAR" ! default = "LINEAR" + ! TFREEZE_FORM determines which expression should be used for the freezing + ! point. Currently, the valid choices are "LINEAR", "MILLERO_78", "TEOS_POLY", + ! "TEOS10" +TFREEZE_S0_P0 = 0.0 ! [degC] default = 0.0 + ! When TFREEZE_FORM=LINEAR, this is the freezing potential temperature at S=0, + ! P=0. +DTFREEZE_DS = -0.054 ! [degC ppt-1] default = -0.054 + ! When TFREEZE_FORM=LINEAR, this is the derivative of the freezing potential + ! temperature with salinity. +DTFREEZE_DP = 0.0 ! [degC Pa-1] default = 0.0 + ! When TFREEZE_FORM=LINEAR, this is the derivative of the freezing potential + ! temperature with pressure. + +! === module MOM_restart === +PARALLEL_RESTARTFILES = False ! [Boolean] default = False + ! If true, the IO layout is used to group processors that write to the same + ! restart file or each processor writes its own (numbered) restart file. If + ! false, a single restart file is generated combining output from all PEs. +RESTARTFILE = "MOM.res" ! default = "MOM.res" + ! The name-root of the restart file. +MAX_FIELDS = 100 ! default = 100 + ! The maximum number of restart fields that can be used. +RESTART_CHECKSUMS_REQUIRED = True ! [Boolean] default = True + ! If true, require the restart checksums to match and error out otherwise. Users + ! may want to avoid this comparison if for example the restarts are made from a + ! run with a different mask_table than the current run, in which case the + ! checksums will not match and cause crash. +STREAMING_FILTER_M2 = False ! [Boolean] default = False + ! If true, turn on streaming band-pass filter for detecting instantaneous tidal + ! signals. +STREAMING_FILTER_K1 = False ! [Boolean] default = False + ! If true, turn on streaming band-pass filter for detecting instantaneous tidal + ! signals. + +! === module MOM_tracer_flow_control === +USE_USER_TRACER_EXAMPLE = False ! [Boolean] default = False + ! If true, use the USER_tracer_example tracer package. +USE_DOME_TRACER = False ! [Boolean] default = False + ! If true, use the DOME_tracer tracer package. +USE_ISOMIP_TRACER = False ! [Boolean] default = False + ! If true, use the ISOMIP_tracer tracer package. +USE_RGC_TRACER = False ! [Boolean] default = False + ! If true, use the RGC_tracer tracer package. +USE_IDEAL_AGE_TRACER = True ! [Boolean] default = False + ! If true, use the ideal_age_example tracer package. +USE_REGIONAL_DYES = False ! [Boolean] default = False + ! If true, use the regional_dyes tracer package. +USE_OIL_TRACER = False ! [Boolean] default = False + ! If true, use the oil_tracer tracer package. +USE_ADVECTION_TEST_TRACER = True ! [Boolean] default = False + ! If true, use the advection_test_tracer tracer package. +USE_OCMIP2_CFC = False ! [Boolean] default = False + ! If true, use the MOM_OCMIP2_CFC tracer package. +USE_CFC_CAP = False ! [Boolean] default = False + ! If true, use the MOM_CFC_cap tracer package. +USE_generic_tracer = False ! [Boolean] default = False + ! If true and _USE_GENERIC_TRACER is defined as a preprocessor macro, use the + ! MOM_generic_tracer packages. +USE_PSEUDO_SALT_TRACER = False ! [Boolean] default = False + ! If true, use the pseudo salt tracer, typically run as a diagnostic. +USE_BOUNDARY_IMPULSE_TRACER = False ! [Boolean] default = False + ! If true, use the boundary impulse tracer. +USE_DYED_OBC_TRACER = False ! [Boolean] default = False + ! If true, use the dyed_obc_tracer tracer package. +USE_NW2_TRACERS = False ! [Boolean] default = False + ! If true, use the NeverWorld2 tracers. + +! === module ideal_age_example === +DO_IDEAL_AGE = True ! [Boolean] default = True + ! If true, use an ideal age tracer that is set to 0 age in the boundary layer + ! and ages at unit rate in the interior. +DO_IDEAL_VINTAGE = False ! [Boolean] default = False + ! If true, use an ideal vintage tracer that is set to an exponentially + ! increasing value in the boundary layer and is conserved thereafter. +DO_IDEAL_AGE_DATED = False ! [Boolean] default = False + ! If true, use an ideal age tracer that is everywhere 0 before + ! IDEAL_AGE_DATED_START_YEAR, but the behaves like the standard ideal age tracer + ! - i.e. is set to 0 age in the boundary layer and ages at unit rate in the + ! interior. +DO_BL_RESIDENCE = False ! [Boolean] default = False + ! If true, use a residence tracer that is set to 0 age in the interior and ages + ! at unit rate in the boundary layer. +USE_REAL_BL_DEPTH = False ! [Boolean] default = False + ! If true, the ideal age tracers will use the boundary layer depth diagnosed + ! from the BL or bulkmixedlayer scheme. +AGE_IC_FILE = "" ! default = "" + ! The file in which the age-tracer initial values can be found, or an empty + ! string for internal initialization. +AGE_IC_FILE_IS_Z = False ! [Boolean] default = False + ! If true, AGE_IC_FILE is in depth space, not layer space +TRACERS_MAY_REINIT = False ! [Boolean] default = False + ! If true, tracers may go through the initialization code if they are not found + ! in the restart files. Otherwise it is a fatal error if the tracers are not + ! found in the restart files of a restarted run. + +! === module advection_test_tracer === +ADVECTION_TEST_X_ORIGIN = 19.5 ! [degrees_E] default = 0.0 + ! The x-coordinate of the center of the test-functions. +ADVECTION_TEST_Y_ORIGIN = 60.5 ! [degrees_N] default = 0.0 + ! The y-coordinate of the center of the test-functions. +ADVECTION_TEST_X_WIDTH = 1.0 ! [degrees_E] default = 0.0 + ! The x-width of the test-functions. +ADVECTION_TEST_Y_WIDTH = 1.0 ! [degrees_N] default = 0.0 + ! The y-width of the test-functions. +ADVECTION_TEST_TRACER_IC_FILE = "" ! default = "" + ! The name of a file from which to read the initial conditions for the tracers, + ! or blank to initialize them internally. +SPONGE = False ! [Boolean] default = False + ! If true, sponges may be applied anywhere in the domain. The exact location and + ! properties of those sponges are specified from MOM_initialization.F90. + +! === module MOM_coord_initialization === +COORD_CONFIG = "file" ! default = "none" + ! This specifies how layers are to be defined: + ! ALE or none - used to avoid defining layers in ALE mode + ! file - read coordinate information from the file + ! specified by (COORD_FILE). + ! BFB - Custom coords for buoyancy-forced basin case + ! based on SST_S, T_BOT and DRHO_DT. + ! linear - linear based on interfaces not layers + ! layer_ref - linear based on layer densities + ! ts_ref - use reference temperature and salinity + ! ts_range - use range of temperature and salinity + ! (T_REF and S_REF) to determine surface density + ! and GINT calculate internal densities. + ! gprime - use reference density (RHO_0) for surface + ! density and GINT calculate internal densities. + ! ts_profile - use temperature and salinity profiles + ! (read from COORD_FILE) to set layer densities. + ! USER - call a user modified routine. +GFS = 9.8 ! [m s-2] default = 9.8 + ! The reduced gravity at the free surface. +COORD_FILE = "Layer_coord50.nc" ! + ! The file from which the coordinate densities are read. +COORD_VAR = "Layer" ! default = "Layer" + ! The variable in COORD_FILE that is to be used for the coordinate densities. +REGRIDDING_COORDINATE_MODE = "Z*" ! default = "LAYER" + ! Coordinate mode for vertical regridding. Choose among the following + ! possibilities: LAYER - Isopycnal or stacked shallow water layers + ! ZSTAR, Z* - stretched geopotential z* + ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf + ! SIGMA - terrain following coordinates + ! RHO - continuous isopycnal + ! SCALAR - any scalar variable ** for diagnostic grids only ** + ! HYCOM1 - HyCOM-like hybrid coordinate + ! HYBGEN - Hybrid coordinate from the Hycom hybgen code + ! ADAPTIVE - optimize for smooth neutral density surfaces +REGRIDDING_COORDINATE_UNITS = "m" ! default = "m" + ! Units of the regridding coordinate. +ALE_COORDINATE_CONFIG = "FILE:vgrid.nc,dz" ! default = "UNIFORM" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter ALE_RESOLUTION + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! WOA09INT[:N] - layers spanned by the WOA09 depths + ! WOA23INT[:N] - layers spanned by the WOA23 depths + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +!ALE_RESOLUTION = 3*10.1, 2*10.2, 10.3, 10.5, 10.7, 10.9, 11.3, 11.7, 12.4, 13.3, 14.6, 16.3, 18.6, 21.7, 25.9, 31.4, 38.5, 47.4, 58.4, 71.3, 86.0, 101.9, 118.1, 134.0, 148.7, 161.6, 172.6, 181.5, 188.6, 194.1, 198.3, 201.4, 203.7, 205.4, 206.7, 207.6, 208.3, 208.7, 209.1, 209.3, 209.5, 209.7, 2*209.8, 2*209.9, 209.0 ! [m] + ! The distribution of vertical resolution for the target + ! grid used for Eulerian-like coordinates. For example, + ! in z-coordinate mode, the parameter is a list of level + ! thicknesses (in m). In sigma-coordinate mode, the list + ! is of non-dimensional fractions of the water column. +MIN_THICKNESS = 0.001 ! [m] default = 0.001 + ! When regridding, this is the minimum layer thickness allowed. +REMAPPING_SCHEME = "PPM_H4" ! default = "PLM" + ! This sets the reconstruction scheme used for vertical remapping for all + ! variables. It can be one of the following schemes: + ! PCM (1st-order accurate) + ! PLM (2nd-order accurate) + ! PLM_HYBGEN (2nd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! PPM_HYBGEN (3rd-order accurate) + ! WENO_HYBGEN (3rd-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) +VELOCITY_REMAPPING_SCHEME = "PPM_H4" ! default = "PPM_H4" + ! This sets the reconstruction scheme used for vertical remapping of velocities. + ! By default it is the same as REMAPPING_SCHEME. It can be one of the following + ! schemes: + ! PCM (1st-order accurate) + ! PLM (2nd-order accurate) + ! PLM_HYBGEN (2nd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! PPM_HYBGEN (3rd-order accurate) + ! WENO_HYBGEN (3rd-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) +FATAL_CHECK_RECONSTRUCTIONS = False ! [Boolean] default = False + ! If true, cell-by-cell reconstructions are checked for consistency and if + ! non-monotonicity or an inconsistency is detected then a FATAL error is issued. +FATAL_CHECK_REMAPPING = False ! [Boolean] default = False + ! If true, the results of remapping are checked for conservation and new extrema + ! and if an inconsistency is detected then a FATAL error is issued. +REMAP_BOUND_INTERMEDIATE_VALUES = False ! [Boolean] default = False + ! If true, the values on the intermediate grid used for remapping are forced to + ! be bounded, which might not be the case due to round off. +REMAP_BOUNDARY_EXTRAP = False ! [Boolean] default = False + ! If true, values at the interfaces of boundary cells are extrapolated instead + ! of piecewise constant +INIT_BOUNDARY_EXTRAP = False ! [Boolean] default = False + ! If true, values at the interfaces of boundary cells are extrapolated instead + ! of piecewise constant during initialization.Defaults to REMAP_BOUNDARY_EXTRAP. +REMAPPING_USE_OM4_SUBCELLS = True ! [Boolean] default = True + ! This selects the remapping algorithm used in OM4 that does not use the full + ! reconstruction for the top- and lower-most sub-layers, but instead assumes + ! they are always vanished (untrue) and so just uses their edge values. We + ! recommend setting this option to false. +REMAPPING_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the expressions and order of arithmetic to use for remapping. + ! Values below 20190101 result in the use of older, less accurate expressions + ! that were in use at the end of 2018. Higher values result in the use of more + ! robust and accurate forms of mathematically equivalent expressions. +PARTIAL_CELL_VELOCITY_REMAP = False ! [Boolean] default = False + ! If true, use partial cell thicknesses at velocity points that are masked out + ! where they extend below the shallower of the neighboring bathymetry for + ! remapping velocity. +REMAP_AFTER_INITIALIZATION = True ! [Boolean] default = True + ! If true, applies regridding and remapping immediately after initialization so + ! that the state is ALE consistent. This is a legacy step and should not be + ! needed if the initialization is consistent with the coordinate mode. +REGRID_TIME_SCALE = 0.0 ! [s] default = 0.0 + ! The time-scale used in blending between the current (old) grid and the target + ! (new) grid. A short time-scale favors the target grid (0. or anything less + ! than DT_THERM) has no memory of the old grid. A very long time-scale makes the + ! model more Lagrangian. +REGRID_FILTER_SHALLOW_DEPTH = 0.0 ! [m] default = 0.0 + ! The depth above which no time-filtering is applied. Above this depth final + ! grid exactly matches the target (new) grid. +REGRID_FILTER_DEEP_DEPTH = 0.0 ! [m] default = 0.0 + ! The depth below which full time-filtering is applied with time-scale + ! REGRID_TIME_SCALE. Between depths REGRID_FILTER_SHALLOW_DEPTH and + ! REGRID_FILTER_SHALLOW_DEPTH the filter weights adopt a cubic profile. +REMAP_VEL_MASK_BBL_THICK = -0.001 ! [m] default = -0.001 + ! A thickness of a bottom boundary layer below which velocities in thin layers + ! are zeroed out after remapping, following practice with Hybgen remapping, or a + ! negative value to avoid such filtering altogether. + +! === module MOM_state_initialization === +FATAL_INCONSISTENT_RESTART_TIME = False ! [Boolean] default = False + ! If true and a time_in value is provided to MOM_initialize_state, verify that + ! the time read from a restart file is the same as time_in, and issue a fatal + ! error if it is not. Otherwise, simply set the time to time_in if present. +INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False + ! If true, initialize the layer thicknesses, temperatures, and salinities from a + ! Z-space file on a latitude-longitude grid. + +! === module MOM_initialize_layers_from_Z === +TEMP_SALT_Z_INIT_FILE = "WOA05_pottemp_salt.nc" ! default = "temp_salt_z.nc" + ! The name of the z-space input file used to initialize temperatures (T) and + ! salinities (S). If T and S are not in the same file, TEMP_Z_INIT_FILE and + ! SALT_Z_INIT_FILE must be set. +TEMP_Z_INIT_FILE = "WOA05_pottemp_salt.nc" ! default = "WOA05_pottemp_salt.nc" + ! The name of the z-space input file used to initialize temperatures, only. +SALT_Z_INIT_FILE = "WOA05_pottemp_salt.nc" ! default = "WOA05_pottemp_salt.nc" + ! The name of the z-space input file used to initialize temperatures, only. +Z_INIT_FILE_PTEMP_VAR = "PTEMP" ! default = "ptemp" + ! The name of the potential temperature variable in TEMP_Z_INIT_FILE. +Z_INIT_FILE_SALT_VAR = "SALT" ! default = "salt" + ! The name of the salinity variable in SALT_Z_INIT_FILE. +Z_INIT_HOMOGENIZE = False ! [Boolean] default = False + ! If True, then horizontally homogenize the interpolated initial conditions. +Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False + ! If True, then remap straight to model coordinate from file. +Z_INIT_REMAPPING_SCHEME = "PPM_IH4" ! default = "PPM_IH4" + ! The remapping scheme to use if using Z_INIT_ALE_REMAPPING is True. +Z_INIT_REMAP_GENERAL = False ! [Boolean] default = False + ! If false, only initializes to z* coordinates. If true, allows initialization + ! directly to general coordinates. +Z_INIT_REMAP_FULL_COLUMN = False ! [Boolean] default = False + ! If false, only reconstructs profiles for valid data points. If true, inserts + ! vanished layers below the valid data. +Z_INIT_REMAP_OLD_ALG = False ! [Boolean] default = False + ! If false, uses the preferred remapping algorithm for initialization. If true, + ! use an older, less robust algorithm for remapping. +TEMP_SALT_INIT_VERTICAL_REMAP_ONLY = False ! [Boolean] default = False + ! If true, initial conditions are on the model horizontal grid. Extrapolation + ! over missing ocean values is done using an ICE-9 procedure with vertical ALE + ! remapping . +Z_INIT_REMAPPING_USE_OM4_SUBCELLS = True ! [Boolean] default = True + ! If true, use the OM4 remapping-via-subcells algorithm for initialization. See + ! REMAPPING_USE_OM4_SUBCELLS for more details. We recommend setting this option + ! to false. +HOR_REGRID_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic for horizontal regridding. Dates + ! before 20190101 give the same answers as the code did in late 2018, while + ! later versions add parentheses for rotational symmetry. Dates after 20230101 + ! use reproducing sums for global averages. +LAND_FILL_TEMP = 0.0 ! [degC] default = 0.0 + ! A value to use to fill in ocean temperatures on land points. +LAND_FILL_SALIN = 35.0 ! [ppt] default = 35.0 + ! A value to use to fill in ocean salinities on land points. +HORIZ_INTERP_TOL_TEMP = 0.001 ! [degC] default = 0.001 + ! The tolerance in temperature changes between iterations when interpolating + ! from an input dataset using horiz_interp_and_extrap_tracer. This routine + ! converges slowly, so an overly small tolerance can get expensive. +HORIZ_INTERP_TOL_SALIN = 0.001 ! [ppt] default = 0.001 + ! The tolerance in salinity changes between iterations when interpolating from + ! an input dataset using horiz_interp_and_extrap_tracer. This routine converges + ! slowly, so an overly small tolerance can get expensive. +DEPRESS_INITIAL_SURFACE = False ! [Boolean] default = False + ! If true, depress the initial surface to avoid huge tsunamis when a large + ! surface pressure is applied. +TRIM_IC_FOR_P_SURF = False ! [Boolean] default = False + ! If true, cuts way the top of the column for initial conditions at the depth + ! where the hydrostatic pressure matches the imposed surface pressure which is + ! read from file. +REGRID_ACCELERATE_INIT = False ! [Boolean] default = False + ! If true, runs REGRID_ACCELERATE_ITERATIONS iterations of the regridding + ! algorithm to push the initial grid to be consistent with the initial + ! condition. Useful only for state-based and iterative coordinates. +VELOCITY_CONFIG = "zero" ! default = "zero" + ! A string that determines how the initial velocities are specified for a new + ! run: + ! file - read velocities from the file specified + ! by (VELOCITY_FILE). + ! zero - the fluid is initially at rest. + ! uniform - the flow is uniform (determined by + ! parameters INITIAL_U_CONST and INITIAL_V_CONST). + ! rossby_front - a mixed layer front in thermal wind balance. + ! soliton - Equatorial Rossby soliton. + ! USER - call a user modified routine. +ODA_INCUPD = False ! [Boolean] default = False + ! If true, oda incremental updates will be applied everywhere in the domain. + +! === module MOM_diag_mediator === +NUM_DIAG_COORDS = 2 ! default = 1 + ! The number of diagnostic vertical coordinates to use. For each coordinate, an + ! entry in DIAG_COORDS must be provided. +DIAG_REMAPPING_USE_OM4_SUBCELLS = True ! [Boolean] default = True + ! If true, use the OM4 remapping-via-subcells algorithm for diagnostics. See + ! REMAPPING_USE_OM4_SUBCELLS for details. We recommend setting this option to + ! false. +USE_INDEX_DIAGNOSTIC_AXES = False ! [Boolean] default = False + ! If true, use a grid index coordinate convention for diagnostic axes. +DIAG_COORDS = "z Z ZSTAR", "scalar SCALAR SCALAR" ! + ! A list of string tuples associating diag_table modules to a coordinate + ! definition used for diagnostics. Each string is of the form + ! "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME". +DIAG_MISVAL = 1.0E+20 ! [various] default = 1.0E+20 + ! Set the default missing value to use for diagnostics. +DIAG_AS_CHKSUM = False ! [Boolean] default = False + ! Instead of writing diagnostics to the diag manager, write a text file + ! containing the checksum (bitcount) of the array. +AVAILABLE_DIAGS_FILE = "available_diags.000000" ! default = "available_diags.000000" + ! A file into which to write a list of all available ocean diagnostics that can + ! be included in a diag_table. +DIAG_COORD_DEF_Z = "WOA09" ! default = "WOA09" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter DIAG_COORD_RES_Z + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! WOA09INT[:N] - layers spanned by the WOA09 depths + ! WOA23INT[:N] - layers spanned by the WOA23 depths + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +DIAG_COORD_INTERP_SCHEME_SCALAR = "PPM_H4" ! default = "PPM_H4" + ! This sets the interpolation scheme to use to determine the new grid. These + ! parameters are only relevant when REGRIDDING_COORDINATE_MODE is set to a + ! function of state. Otherwise, it is not used. It can be one of the following + ! schemes: + ! P1M_H2 (2nd-order accurate) + ! P1M_H4 (2nd-order accurate) + ! P1M_IH4 (2nd-order accurate) + ! PLM (2nd-order accurate) + ! PPM_CW (3rd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! P3M_IH4IH3 (4th-order accurate) + ! P3M_IH6IH5 (4th-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) +REGRIDDING_ANSWER_DATE = 20181231 ! default = 20181231 + ! The vintage of the expressions and order of arithmetic to use for regridding. + ! Values below 20190101 result in the use of older, less accurate expressions + ! that were in use at the end of 2018. Higher values result in the use of more + ! robust and accurate forms of mathematically equivalent expressions. +DIAG_COORD_DEF_SCALAR = "FILE:targetlayers_scalar.nc,interfaces=interfaces" ! default = "WOA09" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter DIAG_COORD_RES_SCALAR + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! WOA09INT[:N] - layers spanned by the WOA09 depths + ! WOA23INT[:N] - layers spanned by the WOA23 depths + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +DIAG_COORD_P_REF_SCALAR = 0.0 ! [Pa] default = 2.0E+07 + ! The pressure that is used for calculating the diagnostic coordinate density. + ! (1 Pa = 1e4 dbar, so 2e7 is commonly used.) This is only used for the RHO + ! coordinate. +DIAG_COORD_REGRID_COMPRESSIBILITY_FRACTION_SCALAR = 0.0 ! [nondim] default = 0.0 + ! When interpolating potential density profiles we can add some artificial + ! compressibility solely to make homogeneous regions appear stratified. +DIAG_COORD_HISTOGRAM_EXTENSIVE_DIAGS_SCALAR = True ! [nondim] default = False + ! If true, extensive diagnostics are remapped using a histogram procedureThis is + ! therefore suitable for coordinates that are non-monotonic in the vertical + ! dimension. This should only be set True for **diagnostic**coordinates. + +! === module MOM_MEKE === +USE_MEKE = True ! [Boolean] default = False + ! If true, turns on the MEKE scheme which calculates a sub-grid mesoscale eddy + ! kinetic energy budget. +MEKE_IN_DYNAMICS = True ! [Boolean] default = True + ! If true, step MEKE forward with the dynamicsotherwise with the tracer + ! timestep. +EKE_SOURCE = "prog" ! default = "prog" + ! Determine the where EKE comes from: + ! 'prog': Calculated solving EKE equation + ! 'file': Read in from a file + ! 'dbclient': Retrieved from ML-database +MEKE_DAMPING = 0.0 ! [s-1] default = 0.0 + ! The local depth-independent MEKE dissipation rate. +MEKE_CD_SCALE = 0.0 ! [nondim] default = 0.0 + ! The ratio of the bottom eddy velocity to the column mean eddy velocity, i.e. + ! sqrt(2*MEKE). This should be less than 1 to account for the surface + ! intensification of MEKE. +MEKE_CB = 25.0 ! [nondim] default = 25.0 + ! A coefficient in the expression for the ratio of bottom projected eddy energy + ! and mean column energy (see Jansen et al. 2015). +MEKE_MIN_GAMMA2 = 1.0E-04 ! [nondim] default = 1.0E-04 + ! The minimum allowed value of gamma_b^2. +MEKE_CT = 50.0 ! [nondim] default = 50.0 + ! A coefficient in the expression for the ratio of barotropic eddy energy and + ! mean column energy (see Jansen et al. 2015). +MEKE_GMCOEFF = 1.0 ! [nondim] default = -1.0 + ! The efficiency of the conversion of potential energy into MEKE by the + ! thickness mixing parameterization. If MEKE_GMCOEFF is negative, this + ! conversion is not used or calculated. +MEKE_GEOMETRIC = False ! [Boolean] default = False + ! If MEKE_GEOMETRIC is true, uses the GM coefficient formulation from the + ! GEOMETRIC framework (Marshall et al., 2012). +MEKE_GEOMETRIC_ALPHA = 0.05 ! [nondim] default = 0.05 + ! The nondimensional coefficient governing the efficiency of the GEOMETRIC + ! thickness diffusion. +MEKE_EQUILIBRIUM_ALT = False ! [Boolean] default = False + ! If true, use an alternative formula for computing the (equilibrium)initial + ! value of MEKE. +MEKE_EQUILIBRIUM_RESTORING = False ! [Boolean] default = False + ! If true, restore MEKE back to its equilibrium value, which is calculated at + ! each time step. +MEKE_FRCOEFF = -1.0 ! [nondim] default = -1.0 + ! The efficiency of the conversion of mean energy into MEKE. If MEKE_FRCOEFF is + ! negative, this conversion is not used or calculated. +MEKE_BHFRCOEFF = -1.0 ! [nondim] default = -1.0 + ! The efficiency of the conversion of mean energy into MEKE by the biharmonic + ! dissipation. If MEKE_bhFRCOEFF is negative, this conversion is not used or + ! calculated. +MEKE_GMECOEFF = -1.0 ! [nondim] default = -1.0 + ! The efficiency of the conversion of MEKE into mean energy by GME. If + ! MEKE_GMECOEFF is negative, this conversion is not used or calculated. +MEKE_BGSRC = 0.0 ! [W kg-1] default = 0.0 + ! A background energy source for MEKE. +MEKE_KH = -1.0 ! [m2 s-1] default = -1.0 + ! A background lateral diffusivity of MEKE. Use a negative value to not apply + ! lateral diffusion to MEKE. +MEKE_K4 = -1.0 ! [m4 s-1] default = -1.0 + ! A lateral bi-harmonic diffusivity of MEKE. Use a negative value to not apply + ! bi-harmonic diffusion to MEKE. +MEKE_DTSCALE = 1.0 ! [nondim] default = 1.0 + ! A scaling factor to accelerate the time evolution of MEKE. +MEKE_KHCOEFF = 1.0 ! [nondim] default = 1.0 + ! A scaling factor in the expression for eddy diffusivity which is otherwise + ! proportional to the MEKE velocity- scale times an eddy mixing-length. This + ! factor must be >0 for MEKE to contribute to the thickness/ and tracer + ! diffusivity in the rest of the model. +MEKE_USCALE = 0.0 ! [m s-1] default = 0.0 + ! The background velocity that is combined with MEKE to calculate the bottom + ! drag. +MEKE_GM_SRC_ALT = False ! [Boolean] default = False + ! If true, use the GM energy conversion form S^2*N^2*kappa rather than the + ! streamfunction for the MEKE GM source term. +MEKE_VISC_DRAG = True ! [Boolean] default = True + ! If true, use the vertvisc_type to calculate the bottom drag acting on MEKE. +MEKE_KHTH_FAC = 0.0 ! [nondim] default = 0.0 + ! A factor that maps MEKE%Kh to KhTh. +MEKE_KHTR_FAC = 0.0 ! [nondim] default = 0.0 + ! A factor that maps MEKE%Kh to KhTr. +MEKE_KHMEKE_FAC = 0.0 ! [nondim] default = 0.0 + ! A factor that maps MEKE%Kh to Kh for MEKE itself. +MEKE_OLD_LSCALE = False ! [Boolean] default = False + ! If true, use the old formula for length scale which is a function of grid + ! spacing and deformation radius. +MEKE_MIN_LSCALE = False ! [Boolean] default = False + ! If true, use a strict minimum of provided length scales rather than harmonic + ! mean. +MEKE_RD_MAX_SCALE = False ! [Boolean] default = False + ! If true, the length scale used by MEKE is the minimum of the deformation + ! radius or grid-spacing. Only used if MEKE_OLD_LSCALE=True +MEKE_VISCOSITY_COEFF_KU = 0.0 ! [nondim] default = 0.0 + ! If non-zero, is the scaling coefficient in the expression forviscosity used to + ! parameterize harmonic lateral momentum mixing byunresolved eddies represented + ! by MEKE. Can be negative torepresent backscatter from the unresolved eddies. +MEKE_VISCOSITY_COEFF_AU = 0.0 ! [nondim] default = 0.0 + ! If non-zero, is the scaling coefficient in the expression forviscosity used to + ! parameterize biharmonic lateral momentum mixing byunresolved eddies + ! represented by MEKE. Can be negative torepresent backscatter from the + ! unresolved eddies. +MEKE_FIXED_MIXING_LENGTH = 0.0 ! [m] default = 0.0 + ! If positive, is a fixed length contribution to the expression for mixing + ! length used in MEKE-derived diffusivity. +MEKE_FIXED_TOTAL_DEPTH = True ! [Boolean] default = True + ! If true, use the nominal bathymetric depth as the estimate of the time-varying + ! ocean depth. Otherwise base the depth on the total ocean massper unit area. +MEKE_ALPHA_DEFORM = 0.0 ! [nondim] default = 0.0 + ! If positive, is a coefficient weighting the deformation scale in the + ! expression for mixing length used in MEKE-derived diffusivity. +MEKE_ALPHA_RHINES = 0.05 ! [nondim] default = 0.0 + ! If positive, is a coefficient weighting the Rhines scale in the expression for + ! mixing length used in MEKE-derived diffusivity. +MEKE_ALPHA_EADY = 0.05 ! [nondim] default = 0.0 + ! If positive, is a coefficient weighting the Eady length scale in the + ! expression for mixing length used in MEKE-derived diffusivity. +MEKE_ALPHA_FRICT = 0.0 ! [nondim] default = 0.0 + ! If positive, is a coefficient weighting the frictional arrest scale in the + ! expression for mixing length used in MEKE-derived diffusivity. +MEKE_ALPHA_GRID = 0.0 ! [nondim] default = 0.0 + ! If positive, is a coefficient weighting the grid-spacing as a scale in the + ! expression for mixing length used in MEKE-derived diffusivity. +MEKE_COLD_START = False ! [Boolean] default = False + ! If true, initialize EKE to zero. Otherwise a local equilibrium solution is + ! used as an initial condition for EKE. +MEKE_BACKSCAT_RO_C = 0.0 ! [nondim] default = 0.0 + ! The coefficient in the Rossby number function for scaling the biharmonic + ! frictional energy source. Setting to non-zero enables the Rossby number + ! function. +MEKE_BACKSCAT_RO_POW = 0.0 ! [nondim] default = 0.0 + ! The power in the Rossby number function for scaling the biharmonic frictional + ! energy source. +MEKE_ADVECTION_FACTOR = 0.0 ! [nondim] default = 0.0 + ! A scale factor in front of advection of eddy energy. Zero turns advection off. + ! Using unity would be normal but other values could accommodate a mismatch + ! between the advecting barotropic flow and the vertical structure of MEKE. +MEKE_TOPOGRAPHIC_BETA = 0.0 ! [nondim] default = 0.0 + ! A scale factor to determine how much topographic beta is weighed in computing + ! beta in the expression of Rhines scale. Use 1 if full topographic beta effect + ! is considered; use 0 if it's completely ignored. +SQG_USE_MEKE = False ! [Boolean] default = False + ! If true, the eddy scale of MEKE is used for the SQG vertical structure +CDRAG = 0.003 ! [nondim] default = 0.003 + ! CDRAG is the drag coefficient relating the magnitude of the velocity field to + ! the bottom stress. +MEKE_CDRAG = 0.003 ! [nondim] default = 0.003 + ! Drag coefficient relating the magnitude of the velocity field to the bottom + ! stress in MEKE. + +! === module MOM_lateral_mixing_coeffs === +USE_VARIABLE_MIXING = True ! [Boolean] default = False + ! If true, the variable mixing code will be called. This allows diagnostics to + ! be created even if the scheme is not used. If KHTR_SLOPE_CFF>0 or + ! KhTh_Slope_Cff>0, this is set to true regardless of what is in the parameter + ! file. +USE_VISBECK = False ! [Boolean] default = False + ! If true, use the Visbeck et al. (1997) formulation for + ! thickness diffusivity. +RESOLN_SCALED_KH = True ! [Boolean] default = False + ! If true, the Laplacian lateral viscosity is scaled away when the first + ! baroclinic deformation radius is well resolved. +DEPTH_SCALED_KHTH = False ! [Boolean] default = False + ! If true, KHTH is scaled away when the depth is shallowerthan a reference + ! depth: KHTH = MIN(1,H/H0)**N * KHTH, where H0 is a reference depth, controlled + ! via DEPTH_SCALED_KHTH_H0, and the exponent (N) is controlled via + ! DEPTH_SCALED_KHTH_EXP. +RESOLN_SCALED_KHTH = True ! [Boolean] default = False + ! If true, the interface depth diffusivity is scaled away when the first + ! baroclinic deformation radius is well resolved. +RESOLN_SCALED_KHTR = False ! [Boolean] default = False + ! If true, the epipycnal tracer diffusivity is scaled away when the first + ! baroclinic deformation radius is well resolved. +RESOLN_USE_EBT = False ! [Boolean] default = False + ! If true, uses the equivalent barotropic wave speed instead of first baroclinic + ! wave for calculating the resolution fn. +BACKSCAT_EBT_POWER = 0.0 ! [nondim] default = 0.0 + ! Power to raise EBT vertical structure to when backscatter has vertical + ! structure. +BS_USE_SQG_STRUCT = False ! [Boolean] default = False + ! If true, the SQG vertical structure is used for backscatter on the condition + ! that BS_EBT_power=0 +SQG_EXPO = 1.0 ! [nondim] default = 1.0 + ! Nondimensional exponent coeffecient of the SQG mode that is used for the + ! vertical struture of diffusivities. +KHTH_USE_EBT_STRUCT = False ! [Boolean] default = False + ! If true, uses the equivalent barotropic structure as the vertical structure of + ! thickness diffusivity. +KHTH_USE_SQG_STRUCT = False ! [Boolean] default = False + ! If true, uses the surface quasigeostrophic structure as the vertical structure + ! of thickness diffusivity. +KHTR_USE_EBT_STRUCT = False ! [Boolean] default = False + ! If true, uses the equivalent barotropic structure as the vertical structure of + ! tracer diffusivity. +KHTR_USE_SQG_STRUCT = False ! [Boolean] default = False + ! If true, uses the surface quasigeostrophic structure as the vertical structure + ! of tracer diffusivity. +KD_GL90_USE_EBT_STRUCT = False ! [Boolean] default = False + ! If true, uses the equivalent barotropic structure as the vertical structure of + ! diffusivity in the GL90 scheme. +KD_GL90_USE_SQG_STRUCT = False ! [Boolean] default = False + ! If true, uses the equivalent barotropic structure as the vertical structure of + ! diffusivity in the GL90 scheme. +KHTH_SLOPE_CFF = 0.0 ! [nondim] default = 0.0 + ! The nondimensional coefficient in the Visbeck formula for the interface depth + ! diffusivity +KHTR_SLOPE_CFF = 0.0 ! [nondim] default = 0.0 + ! The nondimensional coefficient in the Visbeck formula for the epipycnal tracer + ! diffusivity +USE_STORED_SLOPES = True ! [Boolean] default = False + ! If true, the isopycnal slopes are calculated once and stored for re-use. This + ! uses more memory but avoids calling the equation of state more times than + ! should be necessary. +VERY_SMALL_FREQUENCY = 1.0E-17 ! [s-1] default = 1.0E-17 + ! A miniscule frequency that is used to avoid division by 0. The default value + ! is roughly (pi / (the age of the universe)). +USE_STANLEY_ISO = False ! [Boolean] default = False + ! If true, turn on Stanley SGS T variance parameterization in isopycnal slope + ! code. +KD_SMOOTH = 1.0E-06 ! [m2 s-1] default = 1.0E-06 + ! A diapycnal diffusivity that is used to interpolate more sensible values of T + ! & S into thin layers. +USE_SIMPLER_EADY_GROWTH_RATE = False ! [Boolean] default = False + ! If true, use a simpler method to calculate the Eady growth rate that avoids + ! division by layer thickness. Recommended. +VARMIX_KTOP = 2 ! [nondim] default = 2 + ! The layer number at which to start vertical integration of S*N for purposes of + ! finding the Eady growth rate. +KH_RES_SCALE_COEF = 1.0 ! [nondim] default = 1.0 + ! A coefficient that determines how KhTh is scaled away if RESOLN_SCALED_... is + ! true, as F = 1 / (1 + (KH_RES_SCALE_COEF*Rd/dx)^KH_RES_FN_POWER). +KH_RES_FN_POWER = 2 ! default = 2 + ! The power of dx/Ld in the Kh resolution function. Any positive integer may be + ! used, although even integers are more efficient to calculate. Setting this + ! greater than 100 results in a step-function being used. +VISC_RES_SCALE_COEF = 1.0 ! [nondim] default = 1.0 + ! A coefficient that determines how Kh is scaled away if RESOLN_SCALED_... is + ! true, as F = 1 / (1 + (KH_RES_SCALE_COEF*Rd/dx)^KH_RES_FN_POWER). This + ! function affects lateral viscosity, Kh, and not KhTh. +VISC_RES_FN_POWER = 2 ! default = 2 + ! The power of dx/Ld in the Kh resolution function. Any positive integer may be + ! used, although even integers are more efficient to calculate. Setting this + ! greater than 100 results in a step-function being used. This function affects + ! lateral viscosity, Kh, and not KhTh. +INTERPOLATE_RES_FN = False ! [Boolean] default = False + ! If true, interpolate the resolution function to the velocity points from the + ! thickness points; otherwise interpolate the wave speed and calculate the + ! resolution function independently at each point. +GILL_EQUATORIAL_LD = True ! [Boolean] default = True + ! If true, uses Gill's definition of the baroclinic equatorial deformation + ! radius, otherwise, if false, use Pedlosky's definition. These definitions + ! differ by a factor of 2 in front of the beta term in the denominator. Gill's + ! is the more appropriate definition. +INTERNAL_WAVE_SPEED_TOL = 0.001 ! [nondim] default = 0.001 + ! The fractional tolerance for finding the wave speeds. +INTERNAL_WAVE_SPEED_MIN = 0.0 ! [m s-1] default = 0.0 + ! A floor in the first mode speed below which 0 used instead. +INTERNAL_WAVE_SPEED_BETTER_EST = False ! [Boolean] default = True + ! If true, use a more robust estimate of the first mode wave speed as the + ! starting point for iterations. +EBT_REMAPPING_USE_OM4_SUBCELLS = True ! [Boolean] default = True + ! If true, use the OM4 remapping-via-subcells algorithm for calculating EBT + ! structure. See REMAPPING_USE_OM4_SUBCELLS for details. We recommend setting + ! this option to false. +USE_QG_LEITH_GM = False ! [Boolean] default = False + ! If true, use the QG Leith viscosity as the GM coefficient. + +! === module MOM_set_visc === +SET_VISC_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the set viscosity + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. +BOTTOMDRAGLAW = True ! [Boolean] default = True + ! If true, the bottom stress is calculated with a drag law of the form + ! c_drag*|u|*u. The velocity magnitude may be an assumed value or it may be + ! based on the actual velocity in the bottommost HBBL, depending on LINEAR_DRAG. +DRAG_AS_BODY_FORCE = False ! [Boolean] default = False + ! If true, the bottom stress is imposed as an explicit body force applied over a + ! fixed distance from the bottom, rather than as an implicit calculation based + ! on an enhanced near-bottom viscosity. The thickness of the bottom boundary + ! layer is HBBL. +CHANNEL_DRAG = True ! [Boolean] default = False + ! If true, the bottom drag is exerted directly on each layer proportional to the + ! fraction of the bottom it overlies. +LINEAR_DRAG = False ! [Boolean] default = False + ! If LINEAR_DRAG and BOTTOMDRAGLAW are defined the drag law is + ! cdrag*DRAG_BG_VEL*u. +PRANDTL_TURB = 1.0 ! [nondim] default = 1.0 + ! The turbulent Prandtl number applied to shear instability. +DYNAMIC_VISCOUS_ML = False ! [Boolean] default = False + ! If true, use a bulk Richardson number criterion to determine the mixed layer + ! thickness for viscosity. +HBBL = 10.0 ! [m] + ! The thickness of a bottom boundary layer with a viscosity increased by + ! KV_EXTRA_BBL if BOTTOMDRAGLAW is not defined, or the thickness over which + ! near-bottom velocities are averaged for the drag law if BOTTOMDRAGLAW is + ! defined but LINEAR_DRAG is not. +BBL_USE_TIDAL_BG = False ! [Boolean] default = False + ! Flag to use the tidal RMS amplitude in place of constant background velocity + ! for computing u* in the BBL. This flag is only used when BOTTOMDRAGLAW is true + ! and LINEAR_DRAG is false. +DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 + ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an + ! unresolved velocity that is combined with the resolved velocity to estimate + ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is + ! defined. +BBL_USE_EOS = True ! [Boolean] default = True + ! If true, use the equation of state in determining the properties of the bottom + ! boundary layer. Otherwise use the layer target potential densities. The + ! default of this parameter is the value of USE_EOS. +BBL_THICK_MIN = 0.1 ! [m] default = 0.0 + ! The minimum bottom boundary layer thickness that can be used with + ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum + ! near-bottom viscosity. +HTBL_SHELF_MIN = 0.1 ! [m] default = 0.1 + ! The minimum top boundary layer thickness that can be used with BOTTOMDRAGLAW. + ! This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum near-top + ! viscosity. +HTBL_SHELF = 10.0 ! [m] default = 10.0 + ! The thickness over which near-surface velocities are averaged for the drag law + ! under an ice shelf. By default this is the same as HBBL +KV = 1.0E-04 ! [m2 s-1] + ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 + ! m2 s-1, may be used. +KV_BBL_MIN = 1.0E-04 ! [m2 s-1] default = 1.0E-04 + ! The minimum viscosities in the bottom boundary layer. +KV_TBL_MIN = 1.0E-04 ! [m2 s-1] default = 1.0E-04 + ! The minimum viscosities in the top boundary layer. +CORRECT_BBL_BOUNDS = False ! [Boolean] default = False + ! If true, uses the correct bounds on the BBL thickness and viscosity so that + ! the bottom layer feels the intended drag. +SMAG_CONST_CHANNEL = 0.15 ! [nondim] default = 0.15 + ! The nondimensional Laplacian Smagorinsky constant used in calculating the + ! channel drag if it is enabled. The default is to use the same value as + ! SMAG_LAP_CONST if it is defined, or 0.15 if it is not. The value used is also + ! 0.15 if the specified value is negative. +TRIG_CHANNEL_DRAG_WIDTHS = True ! [Boolean] default = True + ! If true, use trigonometric expressions to determine the fractional open + ! interface lengths for concave topography. +CHANNEL_DRAG_MAX_BBL_THICK = 5.0 ! [m] default = 5.0 + ! The maximum bottom boundary layer thickness over which the channel drag is + ! exerted, or a negative value for no fixed limit, instead basing the BBL + ! thickness on the bottom stress, rotation and stratification. The default is + ! proportional to HBBL if USE_JACKSON_PARAM or DRAG_AS_BODY_FORCE is true. + +! === module MOM_thickness_diffuse === +KHTH = 600.0 ! [m2 s-1] default = 0.0 + ! The background horizontal thickness diffusivity. +READ_KHTH = False ! [Boolean] default = False + ! If true, read a file (given by KHTH_FILE) containing the spatially varying + ! horizontal isopycnal height diffusivity. +KHTH_MIN = 0.0 ! [m2 s-1] default = 0.0 + ! The minimum horizontal thickness diffusivity. +KHTH_MAX = 900.0 ! [m2 s-1] default = 0.0 + ! The maximum horizontal thickness diffusivity. +KHTH_MAX_CFL = 0.8 ! [nondimensional] default = 0.8 + ! The maximum value of the local diffusive CFL ratio that is permitted for the + ! thickness diffusivity. 1.0 is the marginally unstable value in a pure layered + ! model, but much smaller numbers (e.g. 0.1) seem to work better for ALE-based + ! models. +KH_ETA_CONST = 0.0 ! [m2 s-1] default = 0.0 + ! The background horizontal diffusivity of the interface heights (without + ! considering the layer density structure). If diffusive CFL limits are + ! encountered, the diffusivities of the isopycnals and the interfaces heights + ! are scaled back proportionately. +KH_ETA_VEL_SCALE = 0.0 ! [m s-1] default = 0.0 + ! A velocity scale that is multiplied by the grid spacing to give a contribution + ! to the horizontal diffusivity of the interface heights (without considering + ! the layer density structure). +DETANGLE_INTERFACES = False ! [Boolean] default = False + ! If defined add 3-d structured enhanced interface height diffusivities to + ! horizontally smooth jagged layers. +KHTH_SLOPE_MAX = 0.01 ! [nondim] default = 0.01 + ! A slope beyond which the calculated isopycnal slope is not reliable and is + ! scaled away. +KHTH_USE_FGNV_STREAMFUNCTION = False ! [Boolean] default = False + ! If true, use the streamfunction formulation of Ferrari et al., 2010, which + ! effectively emphasizes graver vertical modes by smoothing in the vertical. +USE_STANLEY_GM = False ! [Boolean] default = False + ! If true, turn on Stanley SGS T variance parameterization in GM code. +USE_KH_IN_MEKE = False ! [Boolean] default = False + ! If true, uses the thickness diffusivity calculated here to diffuse MEKE. +USE_GME = False ! [Boolean] default = False + ! If true, use the GM+E backscatter scheme in association with the Gent and + ! McWilliams parameterization. +USE_GM_WORK_BUG = False ! [Boolean] default = False + ! If true, compute the top-layer work tendency on the u-grid with the incorrect + ! sign, for legacy reproducibility. +STOCH_EOS = False ! [Boolean] default = False + ! If true, stochastic perturbations are applied to the EOS in the PGF. +STANLEY_COEFF = -1.0 ! [nondim] default = -1.0 + ! Coefficient correlating the temperature gradient and SGS T variance. + +! === module MOM_dynamics_split_RK2 === +TIDES = True ! [Boolean] default = False + ! If true, apply tidal momentum forcing. +CALCULATE_SAL = True ! [Boolean] default = True + ! If true, calculate self-attraction and loading. +BE = 0.6 ! [nondim] default = 0.6 + ! If SPLIT is true, BE determines the relative weighting of a 2nd-order + ! Runga-Kutta baroclinic time stepping scheme (0.5) and a backward Euler scheme + ! (1) that is used for the Coriolis and inertial terms. BE may be from 0.5 to + ! 1, but instability may occur near 0.5. BE is also applicable if SPLIT is false + ! and USE_RK2 is true. +BEGW = 0.0 ! [nondim] default = 0.0 + ! If SPLIT is true, BEGW is a number from 0 to 1 that controls the extent to + ! which the treatment of gravity waves is forward-backward (0) or simulated + ! backward Euler (1). 0 is almost always used. If SPLIT is false and USE_RK2 is + ! true, BEGW can be between 0 and 0.5 to damp gravity waves. +SPLIT_BOTTOM_STRESS = False ! [Boolean] default = False + ! If true, provide the bottom stress calculated by the vertical viscosity to the + ! barotropic solver. +BT_USE_LAYER_FLUXES = True ! [Boolean] default = True + ! If true, use the summed layered fluxes plus an adjustment due to the change in + ! the barotropic velocity in the barotropic continuity equation. +STORE_CORIOLIS_ACCEL = True ! [Boolean] default = True + ! If true, calculate the Coriolis accelerations at the end of each timestep for + ! use in the predictor step of the next split RK2 timestep. +FPMIX = False ! [Boolean] default = False + ! If true, apply profiles of momentum flux magnitude and direction +VISC_REM_BUG = True ! [Boolean] default = True + ! If true, visc_rem_[uv] in split mode is incorrectly calculated or accounted + ! for in two places. This parameter controls the defaults of two individual + ! flags, VISC_REM_TIMESTEP_BUG in MOM_dynamics_split_RK2(b) and + ! VISC_REM_BT_WEIGHT_BUG in MOM_barotropic. +VISC_REM_TIMESTEP_BUG = True ! [Boolean] default = True + ! If true, recover a bug that uses dt_pred rather than dt in vertvisc_remnant() + ! at the end of predictor stage for the following continuity() and btstep() + ! calls in the corrector step. Default of this flag is set by VISC_REM_BUG + +! === module MOM_continuity_PPM === +MONOTONIC_CONTINUITY = False ! [Boolean] default = False + ! If true, CONTINUITY_PPM uses the Colella and Woodward monotonic limiter. The + ! default (false) is to use a simple positive definite limiter. +SIMPLE_2ND_PPM_CONTINUITY = False ! [Boolean] default = False + ! If true, CONTINUITY_PPM uses a simple 2nd order (arithmetic mean) + ! interpolation of the edge values. This may give better PV conservation + ! properties. While it formally reduces the accuracy of the continuity solver + ! itself in the strongly advective limit, it does not reduce the overall order + ! of accuracy of the dynamic core. +UPWIND_1ST_CONTINUITY = False ! [Boolean] default = False + ! If true, CONTINUITY_PPM becomes a 1st-order upwind continuity solver. This + ! scheme is highly diffusive but may be useful for debugging or in single-column + ! mode where its minimal stencil is useful. +ETA_TOLERANCE = 1.0E-06 ! [m] default = 2.5E-09 + ! The tolerance for the differences between the barotropic and baroclinic + ! estimates of the sea surface height due to the fluxes through each face. The + ! total tolerance for SSH is 4 times this value. The default is + ! 0.5*NK*ANGSTROM, and this should not be set less than about + ! 10^-15*MAXIMUM_DEPTH. +VELOCITY_TOLERANCE = 1.0E-04 ! [m s-1] default = 3.0E+08 + ! The tolerance for barotropic velocity discrepancies between the barotropic + ! solution and the sum of the layer thicknesses. +CONT_PPM_AGGRESS_ADJUST = False ! [Boolean] default = False + ! If true, allow the adjusted velocities to have a relative CFL change up to + ! 0.5. +CONT_PPM_VOLUME_BASED_CFL = False ! [Boolean] default = False + ! If true, use the ratio of the open face lengths to the tracer cell areas when + ! estimating CFL numbers. The default is set by CONT_PPM_AGGRESS_ADJUST. +CONTINUITY_CFL_LIMIT = 0.5 ! [nondim] default = 0.5 + ! The maximum CFL of the adjusted velocities. +CONT_PPM_BETTER_ITER = True ! [Boolean] default = True + ! If true, stop corrective iterations using a velocity based criterion and only + ! stop if the iteration is better than all predecessors. +CONT_PPM_USE_VISC_REM_MAX = True ! [Boolean] default = True + ! If true, use more appropriate limiting bounds for corrections in strongly + ! viscous columns. +CONT_PPM_MARGINAL_FACE_AREAS = True ! [Boolean] default = True + ! If true, use the marginal face areas from the continuity solver for use as the + ! weights in the barotropic solver. Otherwise use the transport averaged areas. + +! === module MOM_CoriolisAdv === +NOSLIP = False ! [Boolean] default = False + ! If true, no slip boundary conditions are used; otherwise free slip boundary + ! conditions are assumed. The implementation of the free slip BCs on a C-grid is + ! much cleaner than the no slip BCs. The use of free slip BCs is strongly + ! encouraged, and no slip BCs are not used with the biharmonic viscosity. +CORIOLIS_EN_DIS = False ! [Boolean] default = False + ! If true, two estimates of the thickness fluxes are used to estimate the + ! Coriolis term, and the one that dissipates energy relative to the other one is + ! used. +CORIOLIS_SCHEME = "SADOURNY75_ENERGY" ! default = "SADOURNY75_ENERGY" + ! CORIOLIS_SCHEME selects the discretization for the Coriolis terms. Valid + ! values are: + ! SADOURNY75_ENERGY - Sadourny, 1975; energy cons. + ! ARAKAWA_HSU90 - Arakawa & Hsu, 1990 + ! SADOURNY75_ENSTRO - Sadourny, 1975; enstrophy cons. + ! ARAKAWA_LAMB81 - Arakawa & Lamb, 1981; En. + Enst. + ! ARAKAWA_LAMB_BLEND - A blend of Arakawa & Lamb with + ! Arakawa & Hsu and Sadourny energy +BOUND_CORIOLIS = True ! [Boolean] default = False + ! If true, the Coriolis terms at u-points are bounded by the four estimates of + ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This + ! option would have no effect on the SADOURNY Coriolis scheme if it were + ! possible to use centered difference thickness fluxes. +KE_SCHEME = "KE_ARAKAWA" ! default = "KE_ARAKAWA" + ! KE_SCHEME selects the discretization for acceleration due to the kinetic + ! energy gradient. Valid values are: + ! KE_ARAKAWA, KE_SIMPLE_GUDONOV, KE_GUDONOV +PV_ADV_SCHEME = "PV_ADV_CENTERED" ! default = "PV_ADV_CENTERED" + ! PV_ADV_SCHEME selects the discretization for PV advection. Valid values are: + ! PV_ADV_CENTERED - centered (aka Sadourny, 75) + ! PV_ADV_UPWIND1 - upwind, first order + +! === module MOM_self_attr_load === +SAL_USE_BPA = False ! [Boolean] default = False + ! If true, use bottom pressure anomaly to calculate self-attraction and loading + ! (SAL). Otherwise sea surface height anomaly is used, which is only correct for + ! homogenous flow. +SAL_SCALAR_APPROX = True ! [Boolean] default = True + ! If true, use the scalar approximation to calculate self-attraction and + ! loading. +SAL_SCALAR_VALUE = 0.094 ! [m m-1] default = 0.094 + ! The constant of proportionality between sea surface height (really it should + ! be bottom pressure) anomalies and bottom geopotential anomalies. This is only + ! used if USE_SAL_SCALAR is true or USE_PREVIOUS_TIDES is true. +SAL_HARMONICS = False ! [Boolean] default = False + ! If true, use the online spherical harmonics method to calculate + ! self-attraction and loading. + +! === module MOM_tidal_forcing === +TIDE_M2 = True ! [Boolean] default = False + ! If true, apply tidal momentum forcing at the M2 frequency. This is only used + ! if TIDES is true. +TIDE_S2 = False ! [Boolean] default = False + ! If true, apply tidal momentum forcing at the S2 frequency. This is only used + ! if TIDES is true. +TIDE_N2 = False ! [Boolean] default = False + ! If true, apply tidal momentum forcing at the N2 frequency. This is only used + ! if TIDES is true. +TIDE_K2 = False ! [Boolean] default = False + ! If true, apply tidal momentum forcing at the K2 frequency. This is only used + ! if TIDES is true. +TIDE_K1 = False ! [Boolean] default = False + ! If true, apply tidal momentum forcing at the K1 frequency. This is only used + ! if TIDES is true. +TIDE_O1 = False ! [Boolean] default = False + ! If true, apply tidal momentum forcing at the O1 frequency. This is only used + ! if TIDES is true. +TIDE_P1 = False ! [Boolean] default = False + ! If true, apply tidal momentum forcing at the P1 frequency. This is only used + ! if TIDES is true. +TIDE_Q1 = False ! [Boolean] default = False + ! If true, apply tidal momentum forcing at the Q1 frequency. This is only used + ! if TIDES is true. +TIDE_MF = False ! [Boolean] default = False + ! If true, apply tidal momentum forcing at the MF frequency. This is only used + ! if TIDES is true. +TIDE_MM = False ! [Boolean] default = False + ! If true, apply tidal momentum forcing at the MM frequency. This is only used + ! if TIDES is true. +TIDAL_SAL_FROM_FILE = False ! [Boolean] default = False + ! If true, read the tidal self-attraction and loading from input files, + ! specified by TIDAL_INPUT_FILE. This is only used if TIDES is true. +USE_PREVIOUS_TIDES = False ! [Boolean] default = False + ! If true, use the SAL from the previous iteration of the tides to facilitate + ! convergent iteration. This is only used if TIDES is true. +TIDE_REF_DATE = 0, 0, 0 ! default = 0, 0, 0 + ! Year,month,day to use as reference date for tidal forcing. If not specified, + ! defaults to 0. +TIDE_USE_EQ_PHASE = False ! [Boolean] default = False + ! Correct phases by calculating equilibrium phase arguments for TIDE_REF_DATE. +TIDE_M2_FREQ = 1.405189E-04 ! [rad s-1] default = 1.405189E-04 + ! Frequency of the M2 tidal constituent. This is only used if TIDES and TIDE_M2 + ! are true, or if OBC_TIDE_N_CONSTITUENTS > 0 and M2 is in + ! OBC_TIDE_CONSTITUENTS. +TIDE_M2_AMP = 0.242334 ! [m] default = 0.242334 + ! Amplitude of the M2 tidal constituent. This is only used if TIDES and TIDE_M2 + ! are true. +TIDE_M2_PHASE_T0 = 0.0 ! [radians] default = 0.0 + ! Phase of the M2 tidal constituent at time 0. This is only used if TIDES and + ! TIDE_M2 are true. +HA_START_TIME = 0.0 ! [days] default = 0.0 + ! Start time of harmonic analysis, in units of days after the start of the + ! current run segment. Must be smaller than HA_END_TIME, otherwise harmonic + ! analysis will not be performed. If negative, |HA_START_TIME| determines the + ! length of harmonic analysis, and harmonic analysis will start |HA_START_TIME| + ! days before HA_END_TIME, or at the beginning of the run segment, whichever + ! occurs later. +HA_END_TIME = 0.0 ! [days] default = 0.0 + ! End time of harmonic analysis, in units of days after the start of the current + ! run segment. Must be positive and smaller than the length of the currnet run + ! segment, otherwise harmonic analysis will not be performed. +HA_SSH = False ! [Boolean] default = False + ! If true, perform harmonic analysis of sea serface height. +HA_UBT = False ! [Boolean] default = False + ! If true, perform harmonic analysis of zonal barotropic velocity. +HA_VBT = False ! [Boolean] default = False + ! If true, perform harmonic analysis of meridional barotropic velocity. + +! === module MOM_PressureForce === +ANALYTIC_FV_PGF = True ! [Boolean] default = True + ! If true the pressure gradient forces are calculated with a finite volume form + ! that analytically integrates the equations of state in pressure to avoid any + ! possibility of numerical thermobaric instability, as described in Adcroft et + ! al., O. Mod. (2008). + +! === module MOM_PressureForce_FV === +RHO_PGF_REF = 1035.0 ! [kg m-3] default = 1035.0 + ! The reference density that is subtracted off when calculating pressure + ! gradient forces. Its inverse is subtracted off of specific volumes when in + ! non-Boussinesq mode. The default is RHO_0. +TIDES_ANSWER_DATE = 20230630 ! default = 20230630 + ! The vintage of self-attraction and loading (SAL) and tidal forcing + ! calculations. Setting dates before 20230701 recovers old answers (Boussinesq + ! and non-Boussinesq modes) when SAL is part of the tidal forcing calculation. + ! The answer difference is only at bit level and due to a reordered summation. + ! Setting dates before 20250201 recovers answers (Boussinesq mode) that + ! interface heights are modified before pressure force integrals are calculated. +BOUSSINESQ_SAL_TIDES = False ! [Boolean] default = False + ! If true, in Boussinesq mode, use an alternative method to include + ! self-attraction and loading (SAL) and tidal forcings in pressure gradient, in + ! which their gradients are calculated separately, instead of adding + ! geopotential anomalies as corrections to the interface height. This + ! alternative method elimates a baroclinic component of the SAL and tidal + ! forcings. +SSH_IN_EOS_PRESSURE_FOR_PGF = False ! [Boolean] default = False + ! If true, include contributions from the sea surface height in the height-based + ! pressure used in the equation of state calculations for the Boussinesq + ! pressure gradient forces, including adjustments for atmospheric or sea-ice + ! pressure. +MASS_WEIGHT_IN_PRESSURE_GRADIENT = True ! [Boolean] default = False + ! If true, use mass weighting when interpolating T/S for integrals near the + ! bathymetry in FV pressure gradient calculations. +MASS_WEIGHT_IN_PRESSURE_GRADIENT_TOP = False ! [Boolean] default = False + ! If true and MASS_WEIGHT_IN_PRESSURE_GRADIENT is true, use mass weighting when + ! interpolating T/S for integrals near the top of the water column in FV + ! pressure gradient calculations. +CORRECTION_INTXPA = False ! [Boolean] default = False + ! If true, use a correction for surface pressure curvature in intx_pa. +RESET_INTXPA_INTEGRAL = False ! [Boolean] default = False + ! If true, reset INTXPA to match pressures at first nonvanished cell. Includes + ! pressure correction. +USE_INACCURATE_PGF_RHO_ANOM = False ! [Boolean] default = False + ! If true, use a form of the PGF that uses the reference density in an + ! inaccurate way. This is not recommended. +RECONSTRUCT_FOR_PRESSURE = True ! [Boolean] default = True + ! If True, use vertical reconstruction of T & S within the integrals of the FV + ! pressure gradient calculation. If False, use the constant-by-layer algorithm. + ! The default is set by USE_REGRIDDING. +PRESSURE_RECONSTRUCTION_SCHEME = 1 ! default = 1 + ! Order of vertical reconstruction of T/S to use in the integrals within the FV + ! pressure gradient calculation. + ! 0: PCM or no reconstruction. + ! 1: PLM reconstruction. + ! 2: PPM reconstruction. +BOUNDARY_EXTRAPOLATION_PRESSURE = True ! [Boolean] default = True + ! If true, the reconstruction of T & S for pressure in boundary cells is + ! extrapolated, rather than using PCM in these cells. If true, the same order + ! polynomial is used as is used for the interior cells. +USE_STANLEY_PGF = False ! [Boolean] default = False + ! If true, turn on Stanley SGS T variance parameterization in PGF code. + +! === module MOM_Zanna_Bolton === +USE_ZB2020 = False ! [Boolean] default = False + ! If true, turns on Zanna-Bolton-2020 (ZB) subgrid momentum parameterization of + ! mesoscale eddies. + +! === module MOM_hor_visc === +USE_CONT_THICKNESS = False ! [Boolean] default = False + ! If true, use thickness at velocity points from continuity solver. This option + ! currently only works with split mode. +LAPLACIAN = True ! [Boolean] default = False + ! If true, use a Laplacian horizontal viscosity. +KH = 0.0 ! [m2 s-1] default = 0.0 + ! The background Laplacian horizontal viscosity. +KH_BG_MIN = 0.0 ! [m2 s-1] default = 0.0 + ! The minimum value allowed for Laplacian horizontal viscosity, KH. +KH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 + ! The velocity scale which is multiplied by the grid spacing to calculate the + ! Laplacian viscosity. The final viscosity is the largest of this scaled + ! viscosity, the Smagorinsky and Leith viscosities, and KH. +KH_SIN_LAT = 0.0 ! [m2 s-1] default = 0.0 + ! The amplitude of a latitudinally-dependent background viscosity of the form + ! KH_SIN_LAT*(SIN(LAT)**KH_PWR_OF_SINE). +SMAGORINSKY_KH = False ! [Boolean] default = False + ! If true, use a Smagorinsky nonlinear eddy viscosity. +LEITH_KH = False ! [Boolean] default = False + ! If true, use a Leith nonlinear eddy viscosity. +RES_SCALE_MEKE_VISC = False ! [Boolean] default = False + ! If true, the viscosity contribution from MEKE is scaled by the resolution + ! function. +BOUND_KH = True ! [Boolean] default = True + ! If true, the Laplacian coefficient is locally limited to be stable. +BETTER_BOUND_KH = True ! [Boolean] default = True + ! If true, the Laplacian coefficient is locally limited to be stable with a + ! better bounding than just BOUND_KH. +EY24_EBT_BS = False ! [Boolean] default = False + ! If true, use the the backscatter scheme (EBT mode with kill switch)developed + ! by Yankovsky et al. (2024). +ANISOTROPIC_VISCOSITY = False ! [Boolean] default = False + ! If true, allow anistropic viscosity in the Laplacian horizontal viscosity. +ADD_LES_VISCOSITY = False ! [Boolean] default = False + ! If true, adds the viscosity from Smagorinsky and Leith to the background + ! viscosity instead of taking the maximum. +BIHARMONIC = True ! [Boolean] default = True + ! If true, use a biharmonic horizontal viscosity. BIHARMONIC may be used with + ! LAPLACIAN. +AH = 0.0 ! [m4 s-1] default = 0.0 + ! The background biharmonic horizontal viscosity. +AH_VEL_SCALE = 0.05 ! [m s-1] default = 0.0 + ! The velocity scale which is multiplied by the cube of the grid spacing to + ! calculate the biharmonic viscosity. The final viscosity is the largest of this + ! scaled viscosity, the Smagorinsky and Leith viscosities, and AH. +AH_TIME_SCALE = 0.0 ! [s] default = 0.0 + ! A time scale whose inverse is multiplied by the fourth power of the grid + ! spacing to calculate biharmonic viscosity. The final viscosity is the largest + ! of all viscosity formulations in use. 0.0 means that it's not used. +SMAGORINSKY_AH = True ! [Boolean] default = False + ! If true, use a biharmonic Smagorinsky nonlinear eddy viscosity. +LEITH_AH = False ! [Boolean] default = False + ! If true, use a biharmonic Leith nonlinear eddy viscosity. +USE_LEITHY = False ! [Boolean] default = False + ! If true, use a biharmonic Leith nonlinear eddy viscosity together with a + ! harmonic backscatter. +BOUND_AH = True ! [Boolean] default = True + ! If true, the biharmonic coefficient is locally limited to be stable. +BETTER_BOUND_AH = True ! [Boolean] default = True + ! If true, the biharmonic coefficient is locally limited to be stable with a + ! better bounding than just BOUND_AH. +RE_AH = 0.0 ! [nondim] default = 0.0 + ! If nonzero, the biharmonic coefficient is scaled so that the biharmonic + ! Reynolds number is equal to this. +BACKSCATTER_UNDERBOUND = True ! [Boolean] default = True + ! If true, the bounds on the biharmonic viscosity are allowed to increase where + ! the Laplacian viscosity is negative (due to backscatter parameterizations) + ! beyond the largest timestep-dependent stable values of biharmonic viscosity + ! when no Laplacian viscosity is applied. The default is true for historical + ! reasons, but this option probably should not be used because it can contribute + ! to numerical instabilities. +SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0 + ! The nondimensional biharmonic Smagorinsky constant, typically 0.015 - 0.06. +BOUND_CORIOLIS_BIHARM = True ! [Boolean] default = True + ! If true use a viscosity that increases with the square of the velocity shears, + ! so that the resulting viscous drag is of comparable magnitude to the Coriolis + ! terms when the velocity differences between adjacent grid points is + ! 0.5*BOUND_CORIOLIS_VEL. The default is the value of BOUND_CORIOLIS (or + ! false). +BOUND_CORIOLIS_VEL = 6.0 ! [m s-1] default = 6.0 + ! The velocity scale at which BOUND_CORIOLIS_BIHARM causes the biharmonic drag + ! to have comparable magnitude to the Coriolis acceleration. The default is set + ! by MAXVEL. +USE_LAND_MASK_FOR_HVISC = True ! [Boolean] default = True + ! If true, use the land mask for the computation of thicknesses at velocity + ! locations. This eliminates the dependence on arbitrary values over land or + ! outside of the domain. +HORVISC_BOUND_COEF = 0.8 ! [nondim] default = 0.8 + ! The nondimensional coefficient of the ratio of the viscosity bounds to the + ! theoretical maximum for stability without considering other terms. +USE_KH_BG_2D = False ! [Boolean] default = False + ! If true, read a file containing 2-d background harmonic viscosities. The final + ! viscosity is the maximum of the other terms and this background value. +FRICTWORK_BUG = True ! [Boolean] default = True + ! If true, retain an answer-changing bug in calculating the FrictWork, which + ! cancels the h in thickness flux and the h at velocity point. This isnot + ! recommended. + +! === module MOM_vert_friction === +VERT_FRICTION_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the viscous + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use expressions that do not use an arbitrary hard-coded + ! maximum viscous coupling coefficient between layers. Values below 20230601 + ! recover a form of the viscosity within the mixed layer that breaks up the + ! magnitude of the wind stress in some non-Boussinesq cases. +DIRECT_STRESS = False ! [Boolean] default = False + ! If true, the wind stress is distributed over the topmost HMIX_STRESS of fluid + ! (like in HYCOM), and an added mixed layer viscosity or a physically based + ! boundary layer turbulence parameterization is not needed for stability. +FIXED_DEPTH_LOTW_ML = False ! [Boolean] default = False + ! If true, use a Law-of-the-wall prescription for the mixed layer viscosity + ! within a boundary layer that is the lesser of HMIX_FIXED and the total depth + ! of the ocean in a column. +LOTW_VISCOUS_ML_FLOOR = False ! [Boolean] default = False + ! If true, use a Law-of-the-wall prescription to set a lower bound on the + ! viscous coupling between layers within the surface boundary layer, based the + ! distance of interfaces from the surface. This only acts when there are large + ! changes in the thicknesses of successive layers or when the viscosity is set + ! externally and the wind stress has subsequently increased. +VON_KARMAN_CONST = 0.41 ! [nondim] default = 0.41 + ! The value the von Karman constant as used for mixed layer viscosity. +HARMONIC_VISC = False ! [Boolean] default = False + ! If true, use the harmonic mean thicknesses for calculating the vertical + ! viscosity. +HARMONIC_BL_SCALE = 0.0 ! [nondim] default = 0.0 + ! A scale to determine when water is in the boundary layers based solely on + ! harmonic mean thicknesses for the purpose of determining the extent to which + ! the thicknesses used in the viscosities are upwinded. +HMIX_FIXED = 0.5 ! [m] + ! The prescribed depth over which the near-surface viscosity and diffusivity are + ! elevated when the bulk mixed layer is not used. +USE_GL90_IN_SSW = False ! [Boolean] default = False + ! If true, use simpler method to calculate 1/N^2 in GL90 vertical viscosity + ! coefficient. This method is valid in stacked shallow water mode. +KV_ML_INVZ2 = 0.0 ! [m2 s-1] default = 0.0 + ! An extra kinematic viscosity in a mixed layer of thickness HMIX_FIXED, with + ! the actual viscosity scaling as 1/(z*HMIX_FIXED)^2, where z is the distance + ! from the surface, to allow for finite wind stresses to be transmitted through + ! infinitesimally thin surface layers. This is an older option for numerical + ! convenience without a strong physical basis, and its use is now discouraged. +MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 + ! The maximum velocity allowed before the velocity components are truncated. +CFL_BASED_TRUNCATIONS = True ! [Boolean] default = True + ! If true, base truncations on the CFL number, and not an absolute speed. +CFL_TRUNCATE = 0.5 ! [nondim] default = 0.5 + ! The value of the CFL number that will cause velocity components to be + ! truncated; instability can occur past 0.5. +CFL_REPORT = 0.5 ! [nondim] default = 0.5 + ! The value of the CFL number that causes accelerations to be reported; the + ! default is CFL_TRUNCATE. +CFL_TRUNCATE_RAMP_TIME = 7200.0 ! [s] default = 0.0 + ! The time over which the CFL truncation value is ramped up at the beginning of + ! the run. +CFL_TRUNCATE_START = 0.0 ! [nondim] default = 0.0 + ! The start value of the truncation CFL number used when ramping up CFL_TRUNC. +STOKES_MIXING_COMBINED = False ! [Boolean] default = False + ! Flag to use Stokes drift Mixing via the Lagrangian current (Eulerian plus + ! Stokes drift). Still needs work and testing, so not recommended for use. +VEL_UNDERFLOW = 0.0 ! [m s-1] default = 0.0 + ! A negligibly small velocity magnitude below which velocity components are set + ! to 0. A reasonable value might be 1e-30 m/s, which is less than an Angstrom + ! divided by the age of the universe. + +! === module MOM_barotropic === +USE_BT_CONT_TYPE = True ! [Boolean] default = True + ! If true, use a structure with elements that describe effective face areas from + ! the summed continuity solver as a function the barotropic flow in coupling + ! between the barotropic and baroclinic flow. This is only used if SPLIT is + ! true. +INTEGRAL_BT_CONTINUITY = False ! [Boolean] default = False + ! If true, use the time-integrated velocity over the barotropic steps to + ! determine the integrated transports used to update the continuity equation. + ! Otherwise the transports are the sum of the transports based on a series of + ! instantaneous velocities and the BT_CONT_TYPE for transports. This is only + ! valid if USE_BT_CONT_TYPE = True. +BOUND_BT_CORRECTION = True ! [Boolean] default = False + ! If true, the corrective pseudo mass-fluxes into the barotropic solver are + ! limited to values that require less than maxCFL_BT_cont to be accommodated. +BT_CONT_CORR_BOUNDS = True ! [Boolean] default = True + ! If true, and BOUND_BT_CORRECTION is true, use the BT_cont_type variables to + ! set limits determined by MAXCFL_BT_CONT on the CFL number of the velocities + ! that are likely to be driven by the corrective mass fluxes. +ADJUST_BT_CONT = False ! [Boolean] default = False + ! If true, adjust the curve fit to the BT_cont type that is used by the + ! barotropic solver to match the transport about which the flow is being + ! linearized. +GRADUAL_BT_ICS = False ! [Boolean] default = False + ! If true, adjust the initial conditions for the barotropic solver to the values + ! from the layered solution over a whole timestep instead of instantly. This is + ! a decent approximation to the inclusion of sum(u dh_dt) while also correcting + ! for truncation errors. +BT_USE_VISC_REM_U_UH0 = False ! [Boolean] default = False + ! If true, use the viscous remnants when estimating the barotropic velocities + ! that were used to calculate uh0 and vh0. False is probably the better choice. +BT_PROJECT_VELOCITY = True ! [Boolean] default = False + ! If true, step the barotropic velocity first and project out the velocity + ! tendency by 1+BEBT when calculating the transport. The default (false) is to + ! use a predictor continuity step to find the pressure field, and then to do a + ! corrector continuity step using a weighted average of the old and new + ! velocities, with weights of (1-BEBT) and BEBT. +BT_NONLIN_STRESS = False ! [Boolean] default = False + ! If true, use the full depth of the ocean at the start of the barotropic step + ! when calculating the surface stress contribution to the barotropic + ! acclerations. Otherwise use the depth based on bathyT. +DYNAMIC_SURFACE_PRESSURE = False ! [Boolean] default = False + ! If true, add a dynamic pressure due to a viscous ice shelf, for instance. +BT_CORIOLIS_SCALE = 1.0 ! [nondim] default = 1.0 + ! A factor by which the barotropic Coriolis anomaly terms are scaled. +BAROTROPIC_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the expressions in the barotropic solver. Values below 20190101 + ! recover the answers from the end of 2018, while higher values use more + ! efficient or general expressions. +VISC_REM_BT_WEIGHT_BUG = True ! [Boolean] default = True + ! If true, recover a bug in barotropic solver that uses an unnormalized weight + ! function for vertical averages of baroclinic velocity and forcing. Default of + ! this flag is set by VISC_REM_BUG. +BAROTROPIC_TIDAL_SAL_BUG = False ! [Boolean] default = False + ! If true, the tidal self-attraction and loading anomaly in the barotropic + ! solver has the wrong sign, replicating a long-standing bug with a scalar + ! self-attraction and loading term or the SAL term from a previous simulation. +TIDAL_SAL_FLATHER = False ! [Boolean] default = False + ! If true, then apply adjustments to the external gravity wave speed used with + ! the Flather OBC routine consistent with the barotropic solver. This applies to + ! cases with tidal forcing using the scalar self-attraction approximation. The + ! default is currently False in order to retain previous answers but should be + ! set to True for new experiments +SADOURNY = True ! [Boolean] default = True + ! If true, the Coriolis terms are discretized with the Sadourny (1975) energy + ! conserving scheme, otherwise the Arakawa & Hsu scheme is used. If the + ! internal deformation radius is not resolved, the Sadourny scheme should + ! probably be used. +BT_THICK_SCHEME = "FROM_BT_CONT" ! default = "FROM_BT_CONT" + ! A string describing the scheme that is used to set the open face areas used + ! for barotropic transport and the relative weights of the accelerations. Valid + ! values are: + ! ARITHMETIC - arithmetic mean layer thicknesses + ! HARMONIC - harmonic mean layer thicknesses + ! HYBRID (the default) - use arithmetic means for + ! layers above the shallowest bottom, the harmonic + ! mean for layers below, and a weighted average for + ! layers that straddle that depth + ! FROM_BT_CONT - use the average thicknesses kept + ! in the h_u and h_v fields of the BT_cont_type +BT_STRONG_DRAG = False ! [Boolean] default = False + ! If true, use a stronger estimate of the retarding effects of strong bottom + ! drag, by making it implicit with the barotropic time-step instead of implicit + ! with the baroclinic time-step and dividing by the number of barotropic steps. +BT_LINEAR_WAVE_DRAG = False ! [Boolean] default = False + ! If true, apply a linear drag to the barotropic velocities, using rates set by + ! lin_drag_u & _v divided by the depth of the ocean. This was introduced to + ! facilitate tide modeling. +CLIP_BT_VELOCITY = False ! [Boolean] default = False + ! If true, limit any velocity components that exceed CFL_TRUNCATE. This should + ! only be used as a desperate debugging measure. +MAXCFL_BT_CONT = 0.25 ! [nondim] default = 0.25 + ! The maximum permitted CFL number associated with the barotropic accelerations + ! from the summed velocities times the time-derivatives of thicknesses. +DT_BT_FILTER = -0.25 ! [sec or nondim] default = -0.25 + ! A time-scale over which the barotropic mode solutions are filtered, in seconds + ! if positive, or as a fraction of DT if negative. When used this can never be + ! taken to be longer than 2*dt. Set this to 0 to apply no filtering. +G_BT_EXTRA = 0.0 ! [nondim] default = 0.0 + ! A nondimensional factor by which gtot is enhanced. +SSH_EXTRA = 10.0 ! [m] default = 10.0 + ! An estimate of how much higher SSH might get, for use in calculating the safe + ! external wave speed. The default is the minimum of 10 m or 5% of + ! MAXIMUM_DEPTH. +LINEARIZED_BT_CORIOLIS = True ! [Boolean] default = True + ! If true use the bottom depth instead of the total water column thickness in + ! the barotropic Coriolis term calculations. +BEBT = 0.2 ! [nondim] default = 0.1 + ! BEBT determines whether the barotropic time stepping uses the forward-backward + ! time-stepping scheme or a backward Euler scheme. BEBT is valid in the range + ! from 0 (for a forward-backward treatment of nonrotating gravity waves) to 1 + ! (for a backward Euler treatment). In practice, BEBT must be greater than about + ! 0.05. +DTBT = -0.95 ! [s or nondim] default = -0.98 + ! The barotropic time step, in s. DTBT is only used with the split explicit time + ! stepping. To set the time step automatically based the maximum stable value + ! use 0, or a negative value gives the fraction of the stable value. Setting + ! DTBT to 0 is the same as setting it to -0.98. The value of DTBT that will + ! actually be used is an integer fraction of DT, rounding down. +BT_USE_OLD_CORIOLIS_BRACKET_BUG = False ! [Boolean] default = False + ! If True, use an order of operations that is not bitwise rotationally symmetric + ! in the meridional Coriolis term of the barotropic solver. + +! === module MOM_mixed_layer_restrat === +MIXEDLAYER_RESTRAT = True ! [Boolean] default = False + ! If true, a density-gradient dependent re-stratifying flow is imposed in the + ! mixed layer. Can be used in ALE mode without restriction but in layer mode can + ! only be used if BULKMIXEDLAYER is true. +MLE% +USE_BODNER23 = False ! [Boolean] default = False + ! If true, use the Bodner et al., 2023, formulation of the re-stratifying + ! mixed-layer restratification parameterization. This only works in ALE mode. +%MLE +FOX_KEMPER_ML_RESTRAT_COEF = 20.0 ! [nondim] default = 0.0 + ! A nondimensional coefficient that is proportional to the ratio of the + ! deformation radius to the dominant lengthscale of the submesoscale mixed layer + ! instabilities, times the minimum of the ratio of the mesoscale eddy kinetic + ! energy to the large-scale geostrophic kinetic energy or 1 plus the square of + ! the grid spacing over the deformation radius, as detailed by Fox-Kemper et al. + ! (2011) +USE_STANLEY_ML = False ! [Boolean] default = False + ! If true, turn on Stanley SGS T variance parameterization in ML restrat code. +FOX_KEMPER_ML_RESTRAT_COEF2 = 0.0 ! [nondim] default = 0.0 + ! As for FOX_KEMPER_ML_RESTRAT_COEF but used in a second application of the MLE + ! restratification parameterization. +MLE_FRONT_LENGTH = 0.0 ! [m] default = 0.0 + ! If non-zero, is the frontal-length scale used to calculate the upscaling of + ! buoyancy gradients that is otherwise represented by the parameter + ! FOX_KEMPER_ML_RESTRAT_COEF. If MLE_FRONT_LENGTH is non-zero, it is recommended + ! to set FOX_KEMPER_ML_RESTRAT_COEF=1.0. +MLE_USE_PBL_MLD = False ! [Boolean] default = False + ! If true, the MLE parameterization will use the mixed-layer depth provided by + ! the active PBL parameterization. If false, MLE will estimate a MLD based on a + ! density difference with the surface using the parameter MLE_DENSITY_DIFF. +MLE_MLD_DECAY_TIME = 0.0 ! [s] default = 0.0 + ! The time-scale for a running-mean filter applied to the mixed-layer depth used + ! in the MLE restratification parameterization. When the MLD deepens below the + ! current running-mean the running-mean is instantaneously set to the current + ! MLD. +MLE_MLD_DECAY_TIME2 = 0.0 ! [s] default = 0.0 + ! The time-scale for a running-mean filter applied to the filtered mixed-layer + ! depth used in a second MLE restratification parameterization. When the MLD + ! deepens below the current running-mean the running-mean is instantaneously set + ! to the current MLD. +MLE_DENSITY_DIFF = 0.03 ! [kg/m3] default = 0.03 + ! Density difference used to detect the mixed-layer depth used for the + ! mixed-layer eddy parameterization by Fox-Kemper et al. (2011) +MLE_TAIL_DH = 0.0 ! [nondim] default = 0.0 + ! Fraction by which to extend the mixed-layer restratification depth used for a + ! smoother stream function at the base of the mixed-layer. +MLE_MLD_STRETCH = 1.0 ! [nondim] default = 1.0 + ! A scaling coefficient for stretching/shrinking the MLD used in the MLE scheme. + ! This simply multiplies MLD wherever used. +KV_RESTRAT = 0.0 ! [m2 s-1] default = 0.0 + ! A small viscosity that sets a floor on the momentum mixing rate during + ! restratification. If this is positive, it will prevent some possible + ! divisions by zero even if ustar, RESTRAT_USTAR_MIN, and f are all 0. +RESTRAT_USTAR_MIN = 1.45842E-18 ! [m s-1] default = 1.45842E-18 + ! The minimum value of ustar that will be used by the mixed layer + ! restratification module. This can be tiny, but if this is greater than 0, it + ! will prevent divisions by zero when f and KV_RESTRAT are zero. + +! === module MOM_diagnostics === +DIAG_EBT_MONO_N2_COLUMN_FRACTION = 0.0 ! [nondim] default = 0.0 + ! The lower fraction of water column over which N2 is limited as monotonic for + ! the purposes of calculating the equivalent barotropic wave speed. +DIAG_EBT_MONO_N2_DEPTH = -1.0 ! [m] default = -1.0 + ! The depth below which N2 is limited as monotonic for the purposes of + ! calculating the equivalent barotropic wave speed. +INTWAVE_REMAPPING_USE_OM4_SUBCELLS = True ! [Boolean] default = True + ! If true, use the OM4 remapping-via-subcells algorithm for calculating EBT + ! structure. See REMAPPING_USE_OM4_SUBCELLS for details. We recommend setting + ! this option to false. + +! === module MOM_diabatic_driver === +! The following parameters are used for diabatic processes. +USE_LEGACY_DIABATIC_DRIVER = True ! [Boolean] default = True + ! If true, use a legacy version of the diabatic subroutine. This is temporary + ! and is needed to avoid change in answers. +ENERGETICS_SFC_PBL = True ! [Boolean] default = False + ! If true, use an implied energetics planetary boundary layer scheme to + ! determine the diffusivity and viscosity in the surface boundary layer. +EPBL_IS_ADDITIVE = True ! [Boolean] default = True + ! If true, the diffusivity from ePBL is added to all other diffusivities. + ! Otherwise, the larger of kappa-shear and ePBL diffusivities are used. +PRANDTL_EPBL = 1.0 ! [nondim] default = 1.0 + ! The Prandtl number used by ePBL to convert vertical diffusivities into + ! viscosities. +INTERNAL_TIDES = False ! [Boolean] default = False + ! If true, use the code that advances a separate set of equations for the + ! internal tide energy density. +MASSLESS_MATCH_TARGETS = True ! [Boolean] default = True + ! If true, the temperature and salinity of massless layers are kept consistent + ! with their target densities. Otherwise the properties of massless layers + ! evolve diffusively to match massive neighboring layers. +AGGREGATE_FW_FORCING = True ! [Boolean] default = True + ! If true, the net incoming and outgoing fresh water fluxes are combined and + ! applied as either incoming or outgoing depending on the sign of the net. If + ! false, the net incoming fresh water flux is added to the model and thereafter + ! the net outgoing is removed from the topmost non-vanished layers of the + ! updated state. +MIX_BOUNDARY_TRACERS = True ! [Boolean] default = True + ! If true, mix the passive tracers in massless layers at the bottom into the + ! interior as though a diffusivity of KD_MIN_TR were operating. +MIX_BOUNDARY_TRACER_ALE = False ! [Boolean] default = False + ! If true and in ALE mode, mix the passive tracers in massless layers at the + ! bottom into the interior as though a diffusivity of KD_MIN_TR were operating. +KD_MIN_TR = 2.0E-06 ! [m2 s-1] default = 2.0E-06 + ! A minimal diffusivity that should always be applied to tracers, especially in + ! massless layers near the bottom. The default is 0.1*KD. +KD_BBL_TR = 0.0 ! [m2 s-1] default = 0.0 + ! A bottom boundary layer tracer diffusivity that will allow for explicitly + ! specified bottom fluxes. The entrainment at the bottom is at least + ! sqrt(Kd_BBL_tr*dt) over the same distance. +TRACER_TRIDIAG = False ! [Boolean] default = False + ! If true, use the passive tracer tridiagonal solver for T and S +MINIMUM_FORCING_DEPTH = 0.001 ! [m] default = 0.001 + ! The smallest depth over which forcing can be applied. This only takes effect + ! when near-surface layers become thin relative to this scale, in which case the + ! forcing tendencies scaled down by distributing the forcing over this depth + ! scale. +EVAP_CFL_LIMIT = 0.8 ! [nondim] default = 0.8 + ! The largest fraction of a layer than can be lost to forcing (e.g. evaporation, + ! sea-ice formation) in one time-step. The unused mass loss is passed down + ! through the column. +MLD_EN_VALS = 25.0, 2500.0, 2.5E+05 ! [J/m2] default = 25.0, 2500.0, 2.5E+05 + ! The energy values used to compute MLDs. If not set (or all set to 0.), the + ! default will overwrite to 25., 2500., 250000. +DIAG_MLD_DENSITY_DIFF = 0.1 ! [kg/m3] default = 0.1 + ! The density difference used to determine a diagnostic mixed layer depth, + ! MLD_user, following the definition of Levitus 1982. The MLD is the depth at + ! which the density is larger than the surface density by the specified amount. +DIAG_DEPTH_SUBML_N2 = 50.0 ! [m] default = 50.0 + ! The distance over which to calculate a diagnostic of the stratification at the + ! base of the mixed layer. + +! === module MOM_CVMix_KPP === +! This is the MOM wrapper to CVMix:KPP +! See http://cvmix.github.io/ +USE_KPP = False ! [Boolean] default = False + ! If true, turns on the [CVMix] KPP scheme of Large et al., 1994, to calculate + ! diffusivities and non-local transport in the OBL. + +! === module MOM_CVMix_conv === +! Parameterization of enhanced mixing due to convection via CVMix +USE_CVMix_CONVECTION = False ! [Boolean] default = False + ! If true, turns on the enhanced mixing due to convection via CVMix. This scheme + ! increases diapycnal diffs./viscs. at statically unstable interfaces. Relevant + ! parameters are contained in the CVMix_CONVECTION% parameter block. + +! === module MOM_geothermal === +GEOTHERMAL_SCALE = 0.001 ! [W m-2 or various] default = 0.0 + ! The constant geothermal heat flux, a rescaling factor for the heat flux read + ! from GEOTHERMAL_FILE, or 0 to disable the geothermal heating. +GEOTHERMAL_FILE = "geothermal_heating_cm2g.nc" ! default = "" + ! The file from which the geothermal heating is to be read, or blank to use a + ! constant heating rate. +GEOTHERMAL_THICKNESS = 0.1 ! [m] default = 0.1 + ! The thickness over which to apply geothermal heating. +GEOTHERMAL_VARNAME = "geo_heat" ! default = "geo_heat" + ! The name of the geothermal heating variable in GEOTHERMAL_FILE. + +! === module MOM_set_diffusivity === +FLUX_RI_MAX = 0.2 ! [nondim] default = 0.2 + ! The flux Richardson number where the stratification is large enough that N2 > + ! omega2. The full expression for the Flux Richardson number is usually + ! FLUX_RI_MAX*N2/(N2+OMEGA2). +SET_DIFF_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the set diffusivity + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. + +! === module MOM_tidal_mixing === +! Vertical Tidal Mixing Parameterization +USE_CVMix_TIDAL = False ! [Boolean] default = False + ! If true, turns on tidal mixing via CVMix +INT_TIDE_DISSIPATION = True ! [Boolean] default = False + ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, + ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). +TIDAL_MIXING_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the tidal mixing + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. +INT_TIDE_PROFILE = "STLAURENT_02" ! default = "STLAURENT_02" + ! INT_TIDE_PROFILE selects the vertical profile of energy dissipation with + ! INT_TIDE_DISSIPATION. Valid values are: + ! STLAURENT_02 - Use the St. Laurent et al exponential + ! decay profile. + ! POLZIN_09 - Use the Polzin WKB-stretched algebraic + ! decay profile. +LEE_WAVE_DISSIPATION = False ! [Boolean] default = False + ! If true, use an lee wave driven dissipation scheme to drive diapycnal mixing, + ! along the lines of Nikurashin (2010) and using the St. Laurent et al. (2002) + ! and Simmons et al. (2004) vertical profile +INT_TIDE_LOWMODE_DISSIPATION = False ! [Boolean] default = False + ! If true, consider mixing due to breaking low modes that have been remotely + ! generated; as with itidal drag on the barotropic tide, use an internal tidal + ! dissipation scheme to drive diapycnal mixing, along the lines of St. Laurent + ! et al. (2002) and Simmons et al. (2004). +INT_TIDE_DECAY_SCALE = 300.0 ! [m] default = 500.0 + ! The decay scale away from the bottom for tidal TKE with the new coding when + ! INT_TIDE_DISSIPATION is used. +MU_ITIDES = 0.2 ! [nondim] default = 0.2 + ! A dimensionless turbulent mixing efficiency used with INT_TIDE_DISSIPATION, + ! often 0.2. +GAMMA_ITIDES = 0.3333 ! [nondim] default = 0.3333 + ! The fraction of the internal tidal energy that is dissipated locally with + ! INT_TIDE_DISSIPATION. THIS NAME COULD BE BETTER. +MIN_ZBOT_ITIDES = 0.0 ! [m] default = 0.0 + ! Turn off internal tidal dissipation when the total ocean depth is less than + ! this value. +KAPPA_ITIDES = 6.28319E-04 ! [m-1] default = 6.283185307179586E-04 + ! A topographic wavenumber used with INT_TIDE_DISSIPATION. The default is 2pi/10 + ! km, as in St.Laurent et al. 2002. +UTIDE = 0.0 ! [m s-1] default = 0.0 + ! The constant tidal amplitude used with INT_TIDE_DISSIPATION. +KAPPA_H2_FACTOR = 0.75 ! [nondim] default = 1.0 + ! A scaling factor for the roughness amplitude with INT_TIDE_DISSIPATION. +TKE_ITIDE_MAX = 0.1 ! [W m-2] default = 1000.0 + ! The maximum internal tide energy source available to mix above the bottom + ! boundary layer with INT_TIDE_DISSIPATION. +READ_TIDEAMP = True ! [Boolean] default = False + ! If true, read a file (given by TIDEAMP_FILE) containing the tidal amplitude + ! with INT_TIDE_DISSIPATION. +TIDEAMP_FILE = "tideamp.nc" ! default = "tideamp.nc" + ! The path to the file containing the spatially varying tidal amplitudes with + ! INT_TIDE_DISSIPATION. +TIDEAMP_VARNAME = "tideamp" ! default = "tideamp" + ! The name of the tidal amplitude variable in the input file. +H2_FILE = "sgs_h2.nc" ! + ! The path to the file containing the sub-grid-scale topographic roughness + ! amplitude with INT_TIDE_DISSIPATION. +ROUGHNESS_VARNAME = "h2" ! default = "h2" + ! The name in the input file of the squared sub-grid-scale topographic roughness + ! amplitude variable. +FRACTIONAL_ROUGHNESS_MAX = 0.1 ! [nondim] default = 0.1 + ! The maximum topographic roughness amplitude as a fraction of the mean depth, + ! or a negative value for no limitations on roughness. +ML_RADIATION = False ! [Boolean] default = False + ! If true, allow a fraction of TKE available from wind work to penetrate below + ! the base of the mixed layer with a vertical decay scale determined by the + ! minimum of: (1) The depth of the mixed layer, (2) an Ekman length scale. +BBL_EFFIC = 0.2 ! [nondim] default = 0.2 + ! The efficiency with which the energy extracted by bottom drag drives BBL + ! diffusion. This is only used if BOTTOMDRAGLAW is true. +BBL_MIXING_MAX_DECAY = 200.0 ! [m] default = 200.0 + ! The maximum decay scale for the BBL diffusion, or 0 to allow the mixing to + ! penetrate as far as stratification and rotation permit. The default for now + ! is 200 m. This is only used if BOTTOMDRAGLAW is true. +BBL_MIXING_AS_MAX = False ! [Boolean] default = True + ! If true, take the maximum of the diffusivity from the BBL mixing and the other + ! diffusivities. Otherwise, diffusivity from the BBL_mixing is simply added. +USE_LOTW_BBL_DIFFUSIVITY = True ! [Boolean] default = False + ! If true, uses a simple, imprecise but non-coordinate dependent, model of BBL + ! mixing diffusivity based on Law of the Wall. Otherwise, uses the original BBL + ! scheme. +LOTW_BBL_USE_OMEGA = True ! [Boolean] default = True + ! If true, use the maximum of Omega and N for the TKE to diffusion calculation. + ! Otherwise, N is N. +VON_KARMAN_BBL = 0.41 ! [nondim] default = 0.41 + ! The value the von Karman constant as used in calculating the BBL diffusivity. +LOTW_BBL_ANSWER_DATE = 20190101 ! default = 20190101 + ! The vintage of the order of arithmetic and expressions in the LOTW_BBL + ! calculations. Values below 20240630 recover the original answers, while + ! higher values use more accurate expressions. This only applies when + ! USE_LOTW_BBL_DIFFUSIVITY is true. +DZ_BBL_AVG_MIN = 0.0 ! [m] default = 0.0 + ! A minimal distance over which to average to determine the average bottom + ! boundary layer density. +SIMPLE_TKE_TO_KD = True ! [Boolean] default = False + ! If true, uses a simple estimate of Kd/TKE that will work for arbitrary + ! vertical coordinates. If false, calculates Kd/TKE and bounds based on exact + ! energetics for an isopycnal layer-formulation. + +! === module MOM_bkgnd_mixing === +! Adding static vertical background mixing coefficients +KD = 2.0E-05 ! [m2 s-1] default = 0.0 + ! The background diapycnal diffusivity of density in the interior. Zero or the + ! molecular value, ~1e-7 m2 s-1, may be used. +KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 + ! The minimum diapycnal diffusivity. +BRYAN_LEWIS_DIFFUSIVITY = False ! [Boolean] default = False + ! If true, use a Bryan & Lewis (JGR 1979) like tanh profile of background + ! diapycnal diffusivity with depth. This is done via CVMix. +HORIZ_VARYING_BACKGROUND = False ! [Boolean] default = False + ! If true, apply vertically uniform, latitude-dependent background diffusivity, + ! as described in Danabasoglu et al., 2012 +PRANDTL_BKGND = 1.0 ! [nondim] default = 1.0 + ! Turbulent Prandtl number used to convert vertical background diffusivities + ! into viscosities. +HENYEY_IGW_BACKGROUND = True ! [Boolean] default = False + ! If true, use a latitude-dependent scaling for the near surface background + ! diffusivity, as described in Harrison & Hallberg, JPO 2008. +HENYEY_N0_2OMEGA = 20.0 ! [nondim] default = 20.0 + ! The ratio of the typical Buoyancy frequency to twice the Earth's rotation + ! period, used with the Henyey scaling from the mixing. +HENYEY_MAX_LAT = 95.0 ! [degN] default = 95.0 + ! A latitude poleward of which the Henyey profile is returned to the minimum + ! diffusivity +KD_TANH_LAT_FN = False ! [Boolean] default = False + ! If true, use a tanh dependence of Kd_sfc on latitude, like CM2.1/CM2M. There + ! is no physical justification for this form, and it can not be used with + ! HENYEY_IGW_BACKGROUND. +KD_MAX = 0.1 ! [m2 s-1] default = -1.0 + ! The maximum permitted increment for the diapycnal diffusivity from TKE-based + ! parameterizations, or a negative value for no limit. +KD_ADD = 0.0 ! [m2 s-1] default = 0.0 + ! A uniform diapycnal diffusivity that is added everywhere without any filtering + ! or scaling. +USER_CHANGE_DIFFUSIVITY = False ! [Boolean] default = False + ! If true, call user-defined code to change the diffusivity. +DISSIPATION_MIN = 0.0 ! [W m-3] default = 0.0 + ! The minimum dissipation by which to determine a lower bound of Kd (a floor). +DISSIPATION_N0 = 0.0 ! [W m-3] default = 0.0 + ! The intercept when N=0 of the N-dependent expression used to set a minimum + ! dissipation by which to determine a lower bound of Kd (a floor): A in eps_min + ! = A + B*N. +DISSIPATION_N1 = 0.0 ! [J m-3] default = 0.0 + ! The coefficient multiplying N, following Gargett, used to set a minimum + ! dissipation by which to determine a lower bound of Kd (a floor): B in eps_min + ! = A + B*N +DISSIPATION_KD_MIN = 0.0 ! [m2 s-1] default = 0.0 + ! The minimum vertical diffusivity applied as a floor. +DOUBLE_DIFFUSION = False ! [Boolean] default = False + ! If true, increase diffusivites for temperature or salinity based on the + ! double-diffusive parameterization described in Large et al. (1994). + +! === module MOM_kappa_shear === +! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 +USE_JACKSON_PARAM = True ! [Boolean] default = False + ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing + ! parameterization. +VERTEX_SHEAR = False ! [Boolean] default = False + ! If true, do the calculations of the shear-driven mixing at the cell vertices + ! (i.e., the vorticity points). +RINO_CRIT = 0.25 ! [nondim] default = 0.25 + ! The critical Richardson number for shear mixing. +SHEARMIX_RATE = 0.089 ! [nondim] default = 0.089 + ! A nondimensional rate scale for shear-driven entrainment. Jackson et al find + ! values in the range of 0.085-0.089. +MAX_RINO_IT = 25 ! [nondim] default = 50 + ! The maximum number of iterations that may be used to estimate the Richardson + ! number driven mixing. +KD_KAPPA_SHEAR_0 = 2.0E-05 ! [m2 s-1] default = 2.0E-05 + ! The background diffusivity that is used to smooth the density and shear + ! profiles before solving for the diffusivities. The default is the greater of + ! KD and 1e-7 m2 s-1. +KD_SEED_KAPPA_SHEAR = 1.0 ! [m2 s-1] default = 1.0 + ! A moderately large seed value of diapycnal diffusivity that is used as a + ! starting turbulent diffusivity in the iterations to find an energetically + ! constrained solution for the shear-driven diffusivity. +KD_TRUNC_KAPPA_SHEAR = 2.0E-07 ! [m2 s-1] default = 2.0E-07 + ! The value of shear-driven diffusivity that is considered negligible and is + ! rounded down to 0. The default is 1% of KD_KAPPA_SHEAR_0. +FRI_CURVATURE = -0.97 ! [nondim] default = -0.97 + ! The nondimensional curvature of the function of the Richardson number in the + ! kappa source term in the Jackson et al. scheme. +TKE_N_DECAY_CONST = 0.24 ! [nondim] default = 0.24 + ! The coefficient for the decay of TKE due to stratification (i.e. proportional + ! to N*tke). The values found by Jackson et al. are 0.24-0.28. +TKE_SHEAR_DECAY_CONST = 0.14 ! [nondim] default = 0.14 + ! The coefficient for the decay of TKE due to shear (i.e. proportional to + ! |S|*tke). The values found by Jackson et al. are 0.14-0.12. +KAPPA_BUOY_SCALE_COEF = 0.82 ! [nondim] default = 0.82 + ! The coefficient for the buoyancy length scale in the kappa equation. The + ! values found by Jackson et al. are in the range of 0.81-0.86. +KAPPA_N_OVER_S_SCALE_COEF2 = 0.0 ! [nondim] default = 0.0 + ! The square of the ratio of the coefficients of the buoyancy and shear scales + ! in the diffusivity equation, Set this to 0 (the default) to eliminate the + ! shear scale. This is only used if USE_JACKSON_PARAM is true. +LZ_RESCALE = 1.0 ! [nondim] default = 1.0 + ! A coefficient to rescale the distance to the nearest solid boundary. This + ! adjustment is to account for regions where 3 dimensional turbulence prevents + ! the growth of shear instabilies [nondim]. +KAPPA_SHEAR_TOL_ERR = 0.1 ! [nondim] default = 0.1 + ! The fractional error in kappa that is tolerated. Iteration stops when changes + ! between subsequent iterations are smaller than this everywhere in a column. + ! The peak diffusivities usually converge most rapidly, and have much smaller + ! errors than this. +TKE_BACKGROUND = 0.0 ! [m2 s-2] default = 0.0 + ! A background level of TKE used in the first iteration of the kappa equation. + ! TKE_BACKGROUND could be 0. +KAPPA_SHEAR_ELIM_MASSLESS = True ! [Boolean] default = True + ! If true, massless layers are merged with neighboring massive layers in this + ! calculation. The default is true and I can think of no good reason why it + ! should be false. This is only used if USE_JACKSON_PARAM is true. +MAX_KAPPA_SHEAR_IT = 13 ! default = 13 + ! The maximum number of iterations that may be used to estimate the + ! time-averaged diffusivity. +KAPPA_SHEAR_MAX_KAP_SRC_CHG = 10.0 ! [nondim] default = 10.0 + ! The maximum permitted increase in the kappa source within an iteration + ! relative to the local source; this must be greater than 1. The lower limit + ! for the permitted fractional decrease is (1 - 0.5/kappa_src_max_chg). These + ! limits could perhaps be made dynamic with an improved iterative solver. +KAPPA_SHEAR_ITER_BUG = False ! [Boolean] default = False + ! If true, use an older, dimensionally inconsistent estimate of the derivative + ! of diffusivity with energy in the Newton's method iteration. The bug causes + ! undercorrections when dz > 1 m. +KAPPA_SHEAR_ALL_LAYER_TKE_BUG = False ! [Boolean] default = False + ! If true, report back the latest estimate of TKE instead of the time average + ! TKE when there is mass in all layers. Otherwise always report the time + ! averaged TKE, as is currently done when there are some massless layers. +USE_RESTRICTIVE_TOLERANCE_CHECK = False ! [Boolean] default = False + ! If true, uses the more restrictive tolerance check to determine if a timestep + ! is acceptable for the KS_it outer iteration loop. False uses the original + ! less restrictive check. + +! === module MOM_CVMix_shear === +! Parameterization of shear-driven turbulence via CVMix (various options) +USE_LMD94 = False ! [Boolean] default = False + ! If true, use the Large-McWilliams-Doney (JGR 1994) shear mixing + ! parameterization. +USE_PP81 = False ! [Boolean] default = False + ! If true, use the Pacanowski and Philander (JPO 1981) shear mixing + ! parameterization. + +! === module MOM_CVMix_ddiff === +! Parameterization of mixing due to double diffusion processes via CVMix +USE_CVMIX_DDIFF = False ! [Boolean] default = False + ! If true, turns on double diffusive processes via CVMix. Note that double + ! diffusive processes on viscosity are ignored in CVMix, see + ! http://cvmix.github.io/ for justification. + +! === module MOM_diabatic_aux === +! The following parameters are used for auxiliary diabatic processes. +RECLAIM_FRAZIL = True ! [Boolean] default = True + ! If true, try to use any frazil heat deficit to cool any overlying layers down + ! to the freezing point, thereby avoiding the creation of thin ice when the SST + ! is above the freezing point. +SALT_EXTRACTION_LIMIT = 0.9999 ! [nondim] default = 0.9999 + ! An upper limit on the fraction of the salt in a layer that can be lost to the + ! net surface salt fluxes within a timestep. +PRESSURE_DEPENDENT_FRAZIL = False ! [Boolean] default = False + ! If true, use a pressure dependent freezing temperature when making frazil. The + ! default is false, which will be faster but is inappropriate with ice-shelf + ! cavities. +IGNORE_FLUXES_OVER_LAND = False ! [Boolean] default = False + ! If true, the model does not check if fluxes are being applied over land + ! points. This is needed when the ocean is coupled with ice shelves and sea ice, + ! since the sea ice mask needs to be different than the ocean mask to avoid sea + ! ice formation under ice shelves. This flag only works when use_ePBL = True. +DO_RIVERMIX = False ! [Boolean] default = False + ! If true, apply additional mixing wherever there is runoff, so that it is mixed + ! down to RIVERMIX_DEPTH if the ocean is that deep. +USE_RIVER_HEAT_CONTENT = False ! [Boolean] default = False + ! If true, use the fluxes%runoff_Hflx field to set the heat carried by runoff, + ! instead of using SST*CP*liq_runoff. +USE_CALVING_HEAT_CONTENT = False ! [Boolean] default = False + ! If true, use the fluxes%calving_Hflx field to set the heat carried by runoff, + ! instead of using SST*CP*froz_runoff. +DO_BRINE_PLUME = False ! [Boolean] default = False + ! If true, use a brine plume parameterization from Nguyen et al., 2009. +VAR_PEN_SW = True ! [Boolean] default = False + ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine + ! the e-folding depth of incoming short wave radiation. +CHL_FROM_FILE = True ! [Boolean] default = True + ! If true, chl_a is read from a file. +CHL_FILE = "seawifs_1998-2006_GOLD_smoothed_2X.nc" ! + ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It + ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. +CHL_VARNAME = "CHL_A" ! default = "CHL_A" + ! Name of CHL_A variable in CHL_FILE. + +! === module MOM_energetic_PBL === +ML_OMEGA_FRAC = 0.0 ! [nondim] default = 0.0 + ! When setting the decay scale for turbulence, use this fraction of the absolute + ! rotation rate blended with the local value of f, as sqrt((1-of)*f^2 + + ! of*4*omega^2). +EKMAN_SCALE_COEF = 1.0 ! [nondim] default = 1.0 + ! A nondimensional scaling factor controlling the inhibition of the diffusive + ! length scale by rotation. Making this larger decreases the PBL diffusivity. +EPBL_ANSWER_DATE = 20231231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the energetic PBL + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. + ! Values below 20240101 use A**(1./3.) to estimate the cube root of A in several + ! expressions, while higher values use the integer root function cuberoot(A) and + ! therefore can work with scaled variables. +EPBL_ORIGINAL_PE_CALC = True ! [Boolean] default = True + ! If true, the ePBL code uses the original form of the potential energy change + ! code. Otherwise, the newer version that can work with successive increments + ! to the diffusivity in upward or downward passes is used. +MKE_TO_TKE_EFFIC = 0.0 ! [nondim] default = 0.0 + ! The efficiency with which mean kinetic energy released by mechanically forced + ! entrainment of the mixed layer is converted to turbulent kinetic energy. +TKE_DECAY = 2.5 ! [nondim] default = 2.5 + ! TKE_DECAY relates the vertical rate of decay of the TKE available for + ! mechanical entrainment to the natural Ekman depth. +DIRECT_EPBL_MIXING_CALC = False ! [Boolean] default = False + ! If true and there is no conversion from mean kinetic energy to ePBL turbulent + ! kinetic energy, use a direct calculation of the diffusivity that is supported + ! by a given energy input instead of the more general but slower iterative + ! solver. +EPBL_MSTAR_SCHEME = "CONSTANT" ! default = "CONSTANT" + ! EPBL_MSTAR_SCHEME selects the method for setting mstar. Valid values are: + ! CONSTANT - Use a fixed mstar given by MSTAR + ! OM4 - Use L_Ekman/L_Obukhov in the stabilizing limit, as in OM4 + ! REICHL_H18 - Use the scheme documented in Reichl & Hallberg, 2018. +MSTAR = 1.2 ! [nondim] default = 1.2 + ! The ratio of the friction velocity cubed to the TKE input to the mixed layer. + ! This option is used if EPBL_MSTAR_SCHEME = CONSTANT. +NSTAR = 0.2 ! [nondim] default = 0.2 + ! The portion of the buoyant potential energy imparted by surface fluxes that is + ! available to drive entrainment at the base of mixed layer when that energy is + ! positive. +MSTAR_CONV_ADJ = 0.0 ! [nondim] default = 0.0 + ! Coefficient used for reducing mstar during convection due to reduction of + ! stable density gradient. +USE_MLD_ITERATION = False ! [Boolean] default = True + ! A logical that specifies whether or not to use the distance to the bottom of + ! the actively turbulent boundary layer to help set the EPBL length scale. +EPBL_TRANSITION_SCALE = 0.1 ! [nondim] default = 0.1 + ! A scale for the mixing length in the transition layer at the edge of the + ! boundary layer as a fraction of the boundary layer thickness. +EPBL_MIN_MIX_LEN = 0.0 ! [meter] default = 0.0 + ! The minimum mixing length scale that will be used by ePBL. The default (0) + ! does not set a minimum. +MIX_LEN_EXPONENT = 2.0 ! [nondim] default = 2.0 + ! The exponent applied to the ratio of the distance to the MLD and the MLD depth + ! which determines the shape of the mixing length. This is only used if + ! USE_MLD_ITERATION is True. +EPBL_VEL_SCALE_SCHEME = "CUBE_ROOT_TKE" ! default = "CUBE_ROOT_TKE" + ! Selects the method for translating TKE into turbulent velocities. Valid values + ! are: + ! CUBE_ROOT_TKE - A constant times the cube root of remaining TKE. + ! REICHL_H18 - Use the scheme based on a combination of w* and v* as + ! documented in Reichl & Hallberg, 2018. +WSTAR_USTAR_COEF = 1.0 ! [nondim] default = 1.0 + ! A ratio relating the efficiency with which convectively released energy is + ! converted to a turbulent velocity, relative to mechanically forced TKE. Making + ! this larger increases the BL diffusivity +EPBL_VEL_SCALE_FACTOR = 1.0 ! [nondim] default = 1.0 + ! An overall nondimensional scaling factor for wT. Making this larger increases + ! the PBL diffusivity. +VSTAR_SURF_FAC = 1.2 ! [nondim] default = 1.2 + ! The proportionality times ustar to set vstar at the surface. +EPBL_BBL_EFFIC = 0.0 ! [nondim] default = 0.0 + ! The efficiency of bottom boundary layer mixing via ePBL. Setting this to a + ! value that is greater than 0 to enable bottom boundary layer mixing from EPBL. +USE_LA_LI2016 = False ! [Boolean] default = False + ! A logical to use the Li et al. 2016 (submitted) formula to determine the + ! Langmuir number. +EPBL_LT = False ! [Boolean] default = False + ! A logical to use a LT parameterization. +EPBL_OPTIONS_DIFF = 0 ! default = 0 + ! If positive, this is a coded integer indicating a pair of settings whose + ! differences are diagnosed in a passive diagnostic mode via extra calls to + ! ePBL_column. If this is 0 or negative no extra calls occur. +!EPBL_USTAR_MIN = 1.45842E-18 ! [m s-1] + ! The (tiny) minimum friction velocity used within the ePBL code, derived from + ! OMEGA and ANGSTROM. + +! === module MOM_regularize_layers === +REGULARIZE_SURFACE_LAYERS = False ! [Boolean] default = False + ! If defined, vertically restructure the near-surface layers when they have too + ! much lateral variations to allow for sensible lateral barotropic transports. + +! === module MOM_opacity === +OPACITY_SCHEME = "MANIZZA_05" ! default = "MANIZZA_05" + ! This character string specifies how chlorophyll concentrations are translated + ! into opacities. Currently valid options include: + ! MANIZZA_05 - Use Manizza et al., GRL, 2005. + ! MOREL_88 - Use Morel, JGR, 1988. +BLUE_FRAC_SW = 0.5 ! [nondim] default = 0.5 + ! The fraction of the penetrating shortwave radiation that is in the blue band. +PEN_SW_NBANDS = 3 ! default = 1 + ! The number of bands of penetrating shortwave radiation. +OPTICS_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the optics + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. +PEN_SW_FLUX_ABSORB = 2.5E-11 ! [degC m s-1] default = 2.5E-11 + ! A minimum remaining shortwave heating rate that will be simply absorbed in the + ! next sufficiently thick layers for computational efficiency, instead of + ! continuing to penetrate. The default, 2.5e-11 degC m s-1, is about 1e-4 W m-2 + ! or 0.08 degC m century-1, but 0 is also a valid value. +PEN_SW_ABSORB_MINTHICK = 1.0 ! [m] default = 1.0 + ! A thickness that is used to absorb the remaining penetrating shortwave heat + ! flux when it drops below PEN_SW_FLUX_ABSORB. +OPACITY_VALUES_MANIZZA = 0.0232, 0.074, 0.225, 0.037, 2.86, 0.0 ! [m-1] default = 0.0232, 0.074, 0.225, 0.037, 2.86, 0.0 + ! Pairs of opacity coefficients for blue, red and near-infrared radiation with + ! parameterizations following the functional form from Manizza et al., GRL 2005, + ! namely in the form opacity = coef_1 + coef_2 * chl**pow for each band. + ! Although coefficients are set for 3 bands, more or less bands may actually be + ! used, with extra bands following the same properties as band 3. +CHOROPHYLL_POWER_MANIZZA = 0.674, 0.629, 0.0 ! [nondim] default = 0.674, 0.629, 0.0 + ! Powers of chlorophyll for blue, red and near-infrared radiation bands in + ! expressions for opacity of the form opacity = coef_1 + coef_2 * chl**pow. +OPACITY_BAND_WAVELENGTHS = 0.0, 550.0, 700.0, 2800.0 ! [nm] default = 0.0, 550.0, 700.0, 2800.0 + ! The bounding wavelengths for the various bands of shortwave radiation, with + ! defaults that depend on the setting for OPACITY_SCHEME. +OPACITY_LAND_VALUE = 10.0 ! [m-1] default = 10.0 + ! The value to use for opacity over land. The default is 10 m-1 - a value for + ! muddy water. + +! === module MOM_tracer_advect === +TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "PLM" + ! The horizontal transport scheme for tracers: + ! PLM - Piecewise Linear Method + ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) + ! PPM - Piecewise Parabolic Method (Colella-Woodward) +USE_HUYNH_STENCIL_BUG = False ! [Boolean] default = False + ! If true, use a stencil width of 2 in PPM:H3 tracer advection. This is + ! incorrect and will produce regressions in certain configurations, but may be + ! required to reproduce results in legacy simulations. + +! === module MOM_tracer_hor_diff === +KHTR = 600.0 ! [m2 s-1] default = 0.0 + ! The background along-isopycnal tracer diffusivity. +KHTR_MIN = 50.0 ! [m2 s-1] default = 0.0 + ! The minimum along-isopycnal tracer diffusivity. +KHTR_MAX = 900.0 ! [m2 s-1] default = 0.0 + ! The maximum along-isopycnal tracer diffusivity. +KHTR_PASSIVITY_COEFF = 0.0 ! [nondim] default = 0.0 + ! The coefficient that scales deformation radius over grid-spacing in passivity, + ! where passivity is the ratio between along isopycnal mixing of tracers to + ! thickness mixing. A non-zero value enables this parameterization. +KHTR_PASSIVITY_MIN = 0.5 ! [nondim] default = 0.5 + ! The minimum passivity which is the ratio between along isopycnal mixing of + ! tracers to thickness mixing. +DIFFUSE_ML_TO_INTERIOR = False ! [Boolean] default = False + ! If true, enable epipycnal mixing between the surface boundary layer and the + ! interior. +CHECK_DIFFUSIVE_CFL = False ! [Boolean] default = False + ! If true, use enough iterations the diffusion to ensure that the diffusive + ! equivalent of the CFL limit is not violated. If false, always use the greater + ! of 1 or MAX_TR_DIFFUSION_CFL iteration. +MAX_TR_DIFFUSION_CFL = -1.0 ! [nondim] default = -1.0 + ! If positive, locally limit the along-isopycnal tracer diffusivity to keep the + ! diffusive CFL locally at or below this value. The number of diffusive + ! iterations is often this value or the next greater integer. +RECALC_NEUTRAL_SURF = False ! [Boolean] default = False + ! If true, then recalculate the neutral surfaces if the + ! diffusive CFL is exceeded. If false, assume that the + ! positions of the surfaces do not change + +! === module MOM_neutral_diffusion === +! This module implements neutral diffusion of tracers +USE_NEUTRAL_DIFFUSION = True ! [Boolean] default = False + ! If true, enables the neutral diffusion module. +NDIFF_CONTINUOUS = True ! [Boolean] default = True + ! If true, uses a continuous reconstruction of T and S when finding neutral + ! surfaces along which diffusion will happen. If false, a PPM discontinuous + ! reconstruction of T and S is done which results in a higher order routine but + ! exacts a higher computational cost. +NDIFF_REF_PRES = -1.0 ! [Pa] default = -1.0 + ! The reference pressure (Pa) used for the derivatives of the equation of state. + ! If negative (default), local pressure is used. +NDIFF_INTERIOR_ONLY = False ! [Boolean] default = False + ! If true, only applies neutral diffusion in the ocean interior.That is, the + ! algorithm will exclude the surface and bottomboundary layers. +NDIFF_USE_UNMASKED_TRANSPORT_BUG = False ! [Boolean] default = False + ! If true, use an older form for the accumulation of neutral-diffusion + ! transports that were unmasked, as used prior to Jan 2018. This is not + ! recommended. +NDIFF_ANSWER_DATE = 20240101 ! default = 20240101 + ! The vintage of the order of arithmetic to use for the neutral diffusion. + ! Values of 20240330 or below recover the answers from the original form of the + ! neutral diffusion code, while higher values use mathematically equivalent + ! expressions that recover rotational symmetry. + +! === module MOM_hor_bnd_diffusion === +! This module implements horizontal diffusion of tracers near boundaries +USE_HORIZONTAL_BOUNDARY_DIFFUSION = False ! [Boolean] default = False + ! If true, enables the horizonal boundary tracer's diffusion module. +OBSOLETE_DIAGNOSTIC_IS_FATAL = True ! [Boolean] default = True + ! If an obsolete diagnostic variable appears in the diag_table, cause a FATAL + ! error rather than issue a WARNING. + +! === module MOM_sum_output === +CALCULATE_APE = True ! [Boolean] default = True + ! If true, calculate the available potential energy of the interfaces. Setting + ! this to false reduces the memory footprint of high-PE-count models + ! dramatically. +WRITE_STOCKS = True ! [Boolean] default = True + ! If true, write the integrated tracer amounts to stdout when the energy files + ! are written. +MAXTRUNC = 5000 ! [truncations save_interval-1] default = 0 + ! The run will be stopped, and the day set to a very large value if the velocity + ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 + ! to stop if there is any truncation of velocities. +MAX_ENERGY = 0.0 ! [m2 s-2] default = 0.0 + ! The maximum permitted average energy per unit mass; the model will be stopped + ! if there is more energy than this. If zero or negative, this is set to + ! 10*MAXVEL^2. +ENERGYFILE = "ocean.stats" ! default = "ocean.stats" + ! The file to use to write the energies and globally summed diagnostics. +DATE_STAMPED_STDOUT = True ! [Boolean] default = True + ! If true, use dates (not times) in messages to stdout +TIMEUNIT = 8.64E+04 ! [s] default = 8.64E+04 + ! The time unit in seconds a number of input fields +READ_DEPTH_LIST = False ! [Boolean] default = False + ! Read the depth list from a file if it exists or create that file otherwise. +DEPTH_LIST_MIN_INC = 1.0E-10 ! [m] default = 1.0E-10 + ! The minimum increment between the depths of the entries in the depth-list + ! file. +ENERGYSAVEDAYS = 0.5 ! [days] default = 1.0 + ! The interval in units of TIMEUNIT between saves of the energies of the run and + ! other globally summed diagnostics. +ENERGYSAVEDAYS_GEOMETRIC = 0.0 ! [days] default = 0.0 + ! The starting interval in units of TIMEUNIT for the first call to save the + ! energies of the run and other globally summed diagnostics. The interval + ! increases by a factor of 2. after each call to write_energy. + +! === module ocean_stochastics_init === +DO_SPPT = False ! [Boolean] default = False + ! If true, then stochastically perturb the thermodynamic tendemcies of T,S, amd + ! h. Amplitude and correlations are controlled by the nam_stoch namelist in the + ! UFS model only. +PERT_EPBL = False ! [Boolean] default = False + ! If true, then stochastically perturb the kinetic energy production and + ! dissipation terms. Amplitude and correlations are controlled by the nam_stoch + ! namelist in the UFS model only. + +! === module ocean_model_init === +SINGLE_STEPPING_CALL = True ! [Boolean] default = True + ! If true, advance the state of MOM with a single step including both dynamics + ! and thermodynamics. If false, the two phases are advanced with separate + ! calls. +RESTART_CONTROL = 3 ! default = 1 + ! An integer whose bits encode which restart files are written. Add 2 (bit 1) + ! for a time-stamped file, and odd (bit 0) for a non-time-stamped file. A + ! restart file will be saved at the end of the run segment for any non-negative + ! value. +OCEAN_SURFACE_STAGGER = "C" ! default = "C" + ! A case-insensitive character string to indicate the staggering of the surface + ! velocity field that is returned to the coupler. Valid values include 'A', + ! 'B', or 'C'. +ICEBERGS_APPLY_RIGID_BOUNDARY = False ! [Boolean] default = False + ! If true, allows icebergs to change boundary condition felt by ocean + +! === module MOM_surface_forcing === +LATENT_HEAT_FUSION = 3.34E+05 ! [J/kg] default = 3.34E+05 + ! The latent heat of fusion. +LATENT_HEAT_VAPORIZATION = 2.5E+06 ! [J/kg] default = 2.5E+06 + ! The latent heat of fusion. +MAX_P_SURF = -1.0 ! [Pa] default = -1.0 + ! The maximum surface pressure that can be exerted by the atmosphere and + ! floating sea-ice or ice shelves. This is needed because the FMS coupling + ! structure does not limit the water that can be frozen out of the ocean and the + ! ice-ocean heat fluxes are treated explicitly. No limit is applied if a + ! negative value is used. +RESTORE_SALINITY = False ! [Boolean] default = False + ! If true, the coupled driver will add a globally-balanced fresh-water flux that + ! drives sea-surface salinity toward specified values. +RESTORE_TEMPERATURE = False ! [Boolean] default = False + ! If true, the coupled driver will add a heat flux that drives sea-surface + ! temperature toward specified values. +ADJUST_NET_SRESTORE_TO_ZERO = False ! [Boolean] default = False + ! If true, adjusts the salinity restoring seen to zero whether restoring is via + ! a salt flux or virtual precip. +ADJUST_NET_SRESTORE_BY_SCALING = False ! [Boolean] default = False + ! If true, adjustments to salt restoring to achieve zero net are made by scaling + ! values without moving the zero contour. +ADJUST_NET_FRESH_WATER_TO_ZERO = False ! [Boolean] default = False + ! If true, adjusts the net fresh-water forcing seen by the ocean (including + ! restoring) to zero. +ADJUST_NET_FRESH_WATER_BY_SCALING = False ! [Boolean] default = False + ! If true, adjustments to net fresh water to achieve zero net are made by + ! scaling values without moving the zero contour. +ICE_SALT_CONCENTRATION = 0.005 ! [kg/kg] default = 0.005 + ! The assumed sea-ice salinity needed to reverse engineer the melt flux (or + ! ice-ocean fresh-water flux). +USE_LIMITED_PATM_SSH = True ! [Boolean] default = True + ! If true, return the sea surface height with the correction for the atmospheric + ! (and sea-ice) pressure limited by max_p_surf instead of the full atmospheric + ! pressure. +APPROX_NET_MASS_SRC = False ! [Boolean] default = False + ! If true, use the net mass sources from the ice-ocean boundary type without any + ! further adjustments to drive the ocean dynamics. The actual net mass source + ! may differ due to internal corrections. +WIND_STAGGER = "C" ! default = "C" + ! A case-insensitive character string to indicate the staggering of the input + ! wind stress field. Valid values are 'A', 'B', or 'C'. +WIND_STRESS_MULTIPLIER = 1.0 ! [nondim] default = 1.0 + ! A factor multiplying the wind-stress given to the ocean by the coupler. This + ! is used for testing and should be =1.0 for any production runs. +CD_TIDES = 1.0E-04 ! [nondim] default = 1.0E-04 + ! The drag coefficient that applies to the tides. +TKE_TIDAL_RHO = 1035.0 ! [kg m-3] default = 1035.0 + ! The constant bottom density used to translate tidal amplitudes into the tidal + ! bottom TKE input used with INT_TIDE_DISSIPATION. +READ_GUST_2D = True ! [Boolean] default = False + ! If true, use a 2-dimensional gustiness supplied from an input file +GUST_CONST = 0.02 ! [Pa] default = 0.0 + ! The background gustiness in the winds. +GUST_2D_FILE = "gustiness_qscat.nc" ! + ! The file in which the wind gustiness is found in variable gustiness. +SURFACE_FORCING_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the gustiness + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use a simpler expression to calculate gustiness. +USTAR_GUSTLESS_BUG = False ! [Boolean] default = False + ! If true include a bug in the time-averaging of the gustless wind friction + ! velocity +USE_RIGID_SEA_ICE = False ! [Boolean] default = False + ! If true, sea-ice is rigid enough to exert a nonhydrostatic pressure that + ! resist vertical motion. +ALLOW_ICEBERG_FLUX_DIAGNOSTICS = False ! [Boolean] default = False + ! If true, makes available diagnostics of fluxes from icebergs as seen by MOM6. +ALLOW_FLUX_ADJUSTMENTS = False ! [Boolean] default = False + ! If true, allows flux adjustments to specified via the data_table using the + ! component name 'OCN'. + +! === module MOM_restart === +USE_WAVES = False ! [Boolean] default = False + ! If true, enables surface wave modules. + +! === module MOM_file_parser === +SEND_LOG_TO_STDOUT = False ! [Boolean] default = False + ! If true, all log messages are also sent to stdout. +DOCUMENT_FILE = "MOM_parameter_doc" ! default = "MOM_parameter_doc" + ! The basename for files where run-time parameters, their settings, units and + ! defaults are documented. Blank will disable all parameter documentation. +COMPLETE_DOCUMENTATION = True ! [Boolean] default = True + ! If true, all run-time parameters are documented in MOM_parameter_doc.all . +MINIMAL_DOCUMENTATION = True ! [Boolean] default = True + ! If true, non-default run-time parameters are documented in + ! MOM_parameter_doc.short . diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_parameter_doc.debugging b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_parameter_doc.debugging new file mode 100644 index 0000000000..fb34ffff41 --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_parameter_doc.debugging @@ -0,0 +1,96 @@ +! This file was written by the model and records the debugging parameters used at run-time. + +! === module MOM_unit_scaling === +! Parameters for doing unit scaling of variables. +Z_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! depths and heights. Valid values range from -300 to 300. +L_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! lateral distances. Valid values range from -300 to 300. +T_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! time. Valid values range from -300 to 300. +R_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! density. Valid values range from -300 to 300. +Q_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! heat content. Valid values range from -300 to 300. +C_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! temperature. Valid values range from -300 to 300. +S_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! salinity. Valid values range from -300 to 300. + +! === module MOM === +VERBOSITY = 2 ! default = 2 + ! Integer controlling level of messaging + ! 0 = Only FATAL messages + ! 2 = Only FATAL, WARNING, NOTE [default] + ! 9 = All) +DO_UNIT_TESTS = False ! [Boolean] default = False + ! If True, exercises unit tests at model start up. +DEBUG = False ! [Boolean] default = False + ! If true, write out verbose debugging data. +DEBUG_TRUNCATIONS = False ! [Boolean] default = False + ! If true, calculate all diagnostics that are useful for debugging truncations. +ROTATE_INDEX = False ! [Boolean] default = False + ! Enable rotation of the horizontal indices. +DEBUG_CHKSUMS = False ! [Boolean] default = False + ! If true, checksums are performed on arrays in the various vec_chksum routines. +DEBUG_REDUNDANT = False ! [Boolean] default = False + ! If true, debug redundant data points during calls to the various vec_chksum + ! routines. + +! === module MOM_verticalGrid === +! Parameters providing information about the vertical grid. +H_RESCALE_POWER = 0 ! [nondim] default = 0 + ! An integer power of 2 that is used to rescale the model's intenal units of + ! thickness. Valid values range from -300 to 300. + +! === module MOM_vert_friction === +U_TRUNC_FILE = "U_velocity_truncations" ! default = "" + ! The absolute path to a file into which the accelerations leading to zonal + ! velocity truncations are written. Undefine this for efficiency if this + ! diagnostic is not needed. +V_TRUNC_FILE = "V_velocity_truncations" ! default = "" + ! The absolute path to a file into which the accelerations leading to meridional + ! velocity truncations are written. Undefine this for efficiency if this + ! diagnostic is not needed. + +! === module MOM_PointAccel === +MAX_TRUNC_FILE_SIZE_PER_PE = 50 ! default = 50 + ! The maximum number of columns of truncations that any PE will write out during + ! a run. +DEBUG_FULL_COLUMN = False ! [Boolean] default = False + ! If true, write out the accelerations in all massive layers; otherwise just + ! document the ones with large velocities. + +! === module MOM_barotropic === +DEBUG_BT = False ! [Boolean] default = False + ! If true, write out verbose debugging data within the barotropic time-stepping + ! loop. The data volume can be quite large if this is true. + +! === module MOM_diabatic_driver === +! The following parameters are used for diabatic processes. +DEBUG_CONSERVATION = False ! [Boolean] default = False + ! If true, monitor conservation and extrema. + +! === module MOM_kappa_shear === +! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 +WRITE_TRACER_MIN_MAX = False ! [Boolean] default = False + ! If true, write the maximum and minimum values of temperature, salinity and + ! some tracer concentrations to stdout when the energy files are written. + +! === module MOM_surface_forcing === +CHECK_NO_LAND_FLUXES = False ! [Boolean] default = False + ! If true, checks that values from IOB fluxes are zero above land points (i.e. + ! G%mask2dT = 0). + +! === module MOM_file_parser === +REPORT_UNUSED_PARAMS = True ! [Boolean] default = True + ! If true, report any parameter lines that are not used in the run. +FATAL_UNUSED_PARAMS = False ! [Boolean] default = False + ! If true, kill the run if there are any unused parameters. diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_parameter_doc.layout b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_parameter_doc.layout new file mode 100644 index 0000000000..62d7cb620e --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_parameter_doc.layout @@ -0,0 +1,69 @@ +! This file was written by the model and records the layout parameters used at run-time. + +! === module MOM === +GLOBAL_INDEXING = False ! [Boolean] default = False + ! If true, use a global lateral indexing convention, so that corresponding + ! points on different processors have the same index. This does not work with + ! static memory. + +! === module MOM_domains === +!SYMMETRIC_MEMORY_ = True ! [Boolean] + ! If defined, the velocity point data domain includes every face of the + ! thickness points. In other words, some arrays are larger than others, + ! depending on where they are on the staggered grid. Also, the starting index + ! of the velocity-point arrays is usually 0, not 1. This can only be set at + ! compile time. +NONBLOCKING_UPDATES = False ! [Boolean] default = False + ! If true, non-blocking halo updates may be used. +THIN_HALO_UPDATES = True ! [Boolean] default = True + ! If true, optional arguments may be used to specify the width of the halos that + ! are updated with each call. +!STATIC_MEMORY_ = False ! [Boolean] + ! If STATIC_MEMORY_ is defined, the principle variables will have sizes that are + ! statically determined at compile time. Otherwise the sizes are not determined + ! until run time. The STATIC option is substantially faster, but does not allow + ! the PE count to be changed at run time. This can only be set at compile time. +AUTO_MASKTABLE = False ! [Boolean] default = False + ! Turn on automatic mask table generation to eliminate land blocks. +MASKTABLE = "MOM_mask_table" ! default = "MOM_mask_table" + ! A text file to specify n_mask, layout and mask_list. This feature masks out + ! processors that contain only land points. The first line of mask_table is the + ! number of regions to be masked out. The second line is the layout of the model + ! and must be consistent with the actual model layout. The following (n_mask) + ! lines give the logical positions of the processors that are masked out. The + ! mask_table can be created by tools like check_mask. The following example of + ! mask_table masks out 2 processors, (1,2) and (3,6), out of the 24 in a 4x6 + ! layout: + ! 2 + ! 4,6 + ! 1,2 + ! 3,6 +NIPROC = 4 ! + ! The number of processors in the x-direction. With STATIC_MEMORY_ this is set + ! in MOM_memory.h at compile time. +NJPROC = 2 ! + ! The number of processors in the y-direction. With STATIC_MEMORY_ this is set + ! in MOM_memory.h at compile time. +LAYOUT = 4, 2 ! + ! The processor layout that was actually used. +IO_LAYOUT = 1, 1 ! default = 1, 1 + ! The processor layout to be used, or 0,0 to automatically set the io_layout to + ! be the same as the layout. + +! === module MOM_grid === +! Parameters providing information about the lateral grid. +NIBLOCK = 1 ! default = 1 + ! The number of blocks in the x-direction on each processor (for openmp). +NJBLOCK = 1 ! default = 1 + ! The number of blocks in the y-direction on each processor (for openmp). + +! === module MOM_barotropic === +BT_USE_WIDE_HALOS = True ! [Boolean] default = True + ! If true, use wide halos and march in during the barotropic time stepping for + ! efficiency. +BTHALO = 0 ! default = 0 + ! The minimum halo size for the barotropic solver. +!BT x-halo = 4 ! + ! The barotropic x-halo size that is actually used. +!BT y-halo = 4 ! + ! The barotropic y-halo size that is actually used. diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_parameter_doc.short b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_parameter_doc.short new file mode 100644 index 0000000000..7bfc99f564 --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/MOM_parameter_doc.short @@ -0,0 +1,573 @@ +! This file was written by the model and records the non-default parameters used at run-time. + +! === module MOM === +USE_REGRIDDING = True ! [Boolean] default = False + ! If True, use the ALE algorithm (regridding/remapping). If False, use the + ! layered isopycnal algorithm. +REMAP_UV_USING_OLD_ALG = True ! [Boolean] default = False + ! If true, uses the old remapping-via-a-delta-z method for remapping u and v. If + ! false, uses the new method that remaps between grids described by an old and + ! new thickness. +THICKNESSDIFFUSE = True ! [Boolean] default = False + ! If true, isopycnal surfaces are diffused with a Laplacian coefficient of KHTH. +THICKNESSDIFFUSE_FIRST = True ! [Boolean] default = False + ! If true, do thickness diffusion or interface height smoothing before dynamics. + ! This is only used if THICKNESSDIFFUSE or APPLY_INTERFACE_FILTER is true. +DT = 3600.0 ! [s] + ! The (baroclinic) dynamics time step. The time-step that is actually used will + ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode + ! or the coupling timestep in coupled mode.) +DT_THERM = 7200.0 ! [s] default = 3600.0 + ! The thermodynamic and tracer advection time step. Ideally DT_THERM should be + ! an integer multiple of DT and less than the forcing or coupling time-step, + ! unless THERMO_SPANS_COUPLING is true, in which case DT_THERM can be an integer + ! multiple of the coupling timestep. By default DT_THERM is set to DT. +DTBT_RESET_PERIOD = 0.0 ! [s] default = 7200.0 + ! The period between recalculations of DTBT (if DTBT <= 0). If DTBT_RESET_PERIOD + ! is negative, DTBT is set based only on information available at + ! initialization. If 0, DTBT will be set every dynamics time step. The default + ! is set by DT_THERM. This is only used if SPLIT is true. +FRAZIL = True ! [Boolean] default = False + ! If true, water freezes if it gets too cold, and the accumulated heat deficit + ! is returned in the surface state. FRAZIL is only used if + ! ENABLE_THERMODYNAMICS is true. +DO_GEOTHERMAL = True ! [Boolean] default = False + ! If true, apply geothermal heating. +BOUND_SALINITY = True ! [Boolean] default = False + ! If true, limit salinity to being positive. (The sea-ice model may ask for more + ! salt than is available and drive the salinity negative otherwise.) +C_P = 3925.0 ! [J kg-1 K-1] default = 3991.86795711963 + ! The heat capacity of sea water, approximated as a constant. This is only used + ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 + ! definition of conservative temperature. +USE_PSURF_IN_EOS = False ! [Boolean] default = True + ! If true, always include the surface pressure contributions in equation of + ! state calculations. +CHECK_BAD_SURFACE_VALS = True ! [Boolean] default = False + ! If true, check the surface state for ridiculous values. +SAVE_INITIAL_CONDS = True ! [Boolean] default = False + ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. + +! === module MOM_domains === +REENTRANT_X = False ! [Boolean] default = True + ! If true, the domain is zonally reentrant. +NIGLOBAL = 23 ! + ! The total number of thickness grid points in the x-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +NJGLOBAL = 14 ! + ! The total number of thickness grid points in the y-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. + +! === module MOM_fixed_initialization === +INPUTDIR = "INPUT" ! default = "." + ! The directory in which input files are found. + +! === module MOM_grid_init === +GRID_CONFIG = "mosaic" ! + ! A character string that determines the method for defining the horizontal + ! grid. Current options are: + ! mosaic - read the grid from a mosaic (supergrid) + ! file set by GRID_FILE. + ! cartesian - use a (flat) Cartesian grid. + ! spherical - use a simple spherical grid. + ! mercator - use a Mercator spherical grid. +GRID_FILE = "ocean_hgrid.nc" ! + ! Name of the file from which to read horizontal grid data. +TOPO_CONFIG = "file" ! + ! This specifies how bathymetry is specified: + ! file - read bathymetric information from the file + ! specified by (TOPO_FILE). + ! flat - flat bottom set to MAXIMUM_DEPTH. + ! bowl - an analytically specified bowl-shaped basin + ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. + ! spoon - a similar shape to 'bowl', but with an vertical + ! wall at the southern face. + ! halfpipe - a zonally uniform channel with a half-sine + ! profile in the meridional direction. + ! bbuilder - build topography from list of functions. + ! benchmark - use the benchmark test case topography. + ! Neverworld - use the Neverworld test case topography. + ! DOME - use a slope and channel configuration for the + ! DOME sill-overflow test case. + ! ISOMIP - use a slope and channel configuration for the + ! ISOMIP test case. + ! DOME2D - use a shelf and slope configuration for the + ! DOME2D gravity current/overflow test case. + ! Kelvin - flat but with rotated land mask. + ! seamount - Gaussian bump for spontaneous motion test case. + ! dumbbell - Sloshing channel with reservoirs on both ends. + ! shelfwave - exponential slope for shelfwave test case. + ! Phillips - ACC-like idealized topography used in the Phillips config. + ! dense - Denmark Strait-like dense water formation and overflow. + ! USER - call a user modified routine. +MINIMUM_DEPTH = 0.5 ! [m] default = 0.0 + ! If MASKING_DEPTH is unspecified, then anything shallower than MINIMUM_DEPTH is + ! assumed to be land and all fluxes are masked out. If MASKING_DEPTH is + ! specified, then all depths shallower than MINIMUM_DEPTH but deeper than + ! MASKING_DEPTH are rounded to MINIMUM_DEPTH. +MAXIMUM_DEPTH = 6000.0 ! [m] + ! The maximum depth of the ocean. +CHANNEL_CONFIG = "global_1deg" ! default = "none" + ! A parameter that determines which set of channels are + ! restricted to specific widths. Options are: + ! none - All channels have the grid width. + ! global_1deg - Sets 16 specific channels appropriate + ! for a 1-degree model, as used in CM2G. + ! list - Read the channel locations and widths from a + ! text file, like MOM_channel_list in the MOM_SIS + ! test case. + ! file - Read open face widths everywhere from a + ! NetCDF file on the model grid. + +! === module MOM_verticalGrid === +! Parameters providing information about the vertical grid. +NK = 50 ! [nondim] + ! The number of model layers. + +! === module MOM_EOS === + +! === module MOM_tracer_flow_control === +USE_IDEAL_AGE_TRACER = True ! [Boolean] default = False + ! If true, use the ideal_age_example tracer package. +USE_ADVECTION_TEST_TRACER = True ! [Boolean] default = False + ! If true, use the advection_test_tracer tracer package. + +! === module ideal_age_example === + +! === module advection_test_tracer === +ADVECTION_TEST_X_ORIGIN = 19.5 ! [degrees_E] default = 0.0 + ! The x-coordinate of the center of the test-functions. +ADVECTION_TEST_Y_ORIGIN = 60.5 ! [degrees_N] default = 0.0 + ! The y-coordinate of the center of the test-functions. +ADVECTION_TEST_X_WIDTH = 1.0 ! [degrees_E] default = 0.0 + ! The x-width of the test-functions. +ADVECTION_TEST_Y_WIDTH = 1.0 ! [degrees_N] default = 0.0 + ! The y-width of the test-functions. + +! === module MOM_coord_initialization === +COORD_CONFIG = "file" ! default = "none" + ! This specifies how layers are to be defined: + ! ALE or none - used to avoid defining layers in ALE mode + ! file - read coordinate information from the file + ! specified by (COORD_FILE). + ! BFB - Custom coords for buoyancy-forced basin case + ! based on SST_S, T_BOT and DRHO_DT. + ! linear - linear based on interfaces not layers + ! layer_ref - linear based on layer densities + ! ts_ref - use reference temperature and salinity + ! ts_range - use range of temperature and salinity + ! (T_REF and S_REF) to determine surface density + ! and GINT calculate internal densities. + ! gprime - use reference density (RHO_0) for surface + ! density and GINT calculate internal densities. + ! ts_profile - use temperature and salinity profiles + ! (read from COORD_FILE) to set layer densities. + ! USER - call a user modified routine. +COORD_FILE = "Layer_coord50.nc" ! + ! The file from which the coordinate densities are read. +REGRIDDING_COORDINATE_MODE = "Z*" ! default = "LAYER" + ! Coordinate mode for vertical regridding. Choose among the following + ! possibilities: LAYER - Isopycnal or stacked shallow water layers + ! ZSTAR, Z* - stretched geopotential z* + ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf + ! SIGMA - terrain following coordinates + ! RHO - continuous isopycnal + ! SCALAR - any scalar variable ** for diagnostic grids only ** + ! HYCOM1 - HyCOM-like hybrid coordinate + ! HYBGEN - Hybrid coordinate from the Hycom hybgen code + ! ADAPTIVE - optimize for smooth neutral density surfaces +ALE_COORDINATE_CONFIG = "FILE:vgrid.nc,dz" ! default = "UNIFORM" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter ALE_RESOLUTION + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! WOA09INT[:N] - layers spanned by the WOA09 depths + ! WOA23INT[:N] - layers spanned by the WOA23 depths + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +!ALE_RESOLUTION = 3*10.1, 2*10.2, 10.3, 10.5, 10.7, 10.9, 11.3, 11.7, 12.4, 13.3, 14.6, 16.3, 18.6, 21.7, 25.9, 31.4, 38.5, 47.4, 58.4, 71.3, 86.0, 101.9, 118.1, 134.0, 148.7, 161.6, 172.6, 181.5, 188.6, 194.1, 198.3, 201.4, 203.7, 205.4, 206.7, 207.6, 208.3, 208.7, 209.1, 209.3, 209.5, 209.7, 2*209.8, 2*209.9, 209.0 ! [m] + ! The distribution of vertical resolution for the target + ! grid used for Eulerian-like coordinates. For example, + ! in z-coordinate mode, the parameter is a list of level + ! thicknesses (in m). In sigma-coordinate mode, the list + ! is of non-dimensional fractions of the water column. +REMAPPING_SCHEME = "PPM_H4" ! default = "PLM" + ! This sets the reconstruction scheme used for vertical remapping for all + ! variables. It can be one of the following schemes: + ! PCM (1st-order accurate) + ! PLM (2nd-order accurate) + ! PLM_HYBGEN (2nd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! PPM_HYBGEN (3rd-order accurate) + ! WENO_HYBGEN (3rd-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) + +! === module MOM_state_initialization === +INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False + ! If true, initialize the layer thicknesses, temperatures, and salinities from a + ! Z-space file on a latitude-longitude grid. + +! === module MOM_initialize_layers_from_Z === +TEMP_SALT_Z_INIT_FILE = "WOA05_pottemp_salt.nc" ! default = "temp_salt_z.nc" + ! The name of the z-space input file used to initialize temperatures (T) and + ! salinities (S). If T and S are not in the same file, TEMP_Z_INIT_FILE and + ! SALT_Z_INIT_FILE must be set. +Z_INIT_FILE_PTEMP_VAR = "PTEMP" ! default = "ptemp" + ! The name of the potential temperature variable in TEMP_Z_INIT_FILE. +Z_INIT_FILE_SALT_VAR = "SALT" ! default = "salt" + ! The name of the salinity variable in SALT_Z_INIT_FILE. +Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False + ! If True, then remap straight to model coordinate from file. + +! === module MOM_diag_mediator === +NUM_DIAG_COORDS = 2 ! default = 1 + ! The number of diagnostic vertical coordinates to use. For each coordinate, an + ! entry in DIAG_COORDS must be provided. +DIAG_COORDS = "z Z ZSTAR", "scalar SCALAR SCALAR" ! + ! A list of string tuples associating diag_table modules to a coordinate + ! definition used for diagnostics. Each string is of the form + ! "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME". +DIAG_COORD_DEF_SCALAR = "FILE:targetlayers_scalar.nc,interfaces=interfaces" ! default = "WOA09" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter DIAG_COORD_RES_SCALAR + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! WOA09INT[:N] - layers spanned by the WOA09 depths + ! WOA23INT[:N] - layers spanned by the WOA23 depths + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +DIAG_COORD_P_REF_SCALAR = 0.0 ! [Pa] default = 2.0E+07 + ! The pressure that is used for calculating the diagnostic coordinate density. + ! (1 Pa = 1e4 dbar, so 2e7 is commonly used.) This is only used for the RHO + ! coordinate. +DIAG_COORD_HISTOGRAM_EXTENSIVE_DIAGS_SCALAR = True ! [nondim] default = False + ! If true, extensive diagnostics are remapped using a histogram procedureThis is + ! therefore suitable for coordinates that are non-monotonic in the vertical + ! dimension. This should only be set True for **diagnostic**coordinates. + +! === module MOM_MEKE === +USE_MEKE = True ! [Boolean] default = False + ! If true, turns on the MEKE scheme which calculates a sub-grid mesoscale eddy + ! kinetic energy budget. +MEKE_GMCOEFF = 1.0 ! [nondim] default = -1.0 + ! The efficiency of the conversion of potential energy into MEKE by the + ! thickness mixing parameterization. If MEKE_GMCOEFF is negative, this + ! conversion is not used or calculated. +MEKE_ALPHA_RHINES = 0.05 ! [nondim] default = 0.0 + ! If positive, is a coefficient weighting the Rhines scale in the expression for + ! mixing length used in MEKE-derived diffusivity. +MEKE_ALPHA_EADY = 0.05 ! [nondim] default = 0.0 + ! If positive, is a coefficient weighting the Eady length scale in the + ! expression for mixing length used in MEKE-derived diffusivity. + +! === module MOM_lateral_mixing_coeffs === +USE_VARIABLE_MIXING = True ! [Boolean] default = False + ! If true, the variable mixing code will be called. This allows diagnostics to + ! be created even if the scheme is not used. If KHTR_SLOPE_CFF>0 or + ! KhTh_Slope_Cff>0, this is set to true regardless of what is in the parameter + ! file. +RESOLN_SCALED_KH = True ! [Boolean] default = False + ! If true, the Laplacian lateral viscosity is scaled away when the first + ! baroclinic deformation radius is well resolved. +RESOLN_SCALED_KHTH = True ! [Boolean] default = False + ! If true, the interface depth diffusivity is scaled away when the first + ! baroclinic deformation radius is well resolved. +USE_STORED_SLOPES = True ! [Boolean] default = False + ! If true, the isopycnal slopes are calculated once and stored for re-use. This + ! uses more memory but avoids calling the equation of state more times than + ! should be necessary. +INTERNAL_WAVE_SPEED_BETTER_EST = False ! [Boolean] default = True + ! If true, use a more robust estimate of the first mode wave speed as the + ! starting point for iterations. + +! === module MOM_set_visc === +CHANNEL_DRAG = True ! [Boolean] default = False + ! If true, the bottom drag is exerted directly on each layer proportional to the + ! fraction of the bottom it overlies. +HBBL = 10.0 ! [m] + ! The thickness of a bottom boundary layer with a viscosity increased by + ! KV_EXTRA_BBL if BOTTOMDRAGLAW is not defined, or the thickness over which + ! near-bottom velocities are averaged for the drag law if BOTTOMDRAGLAW is + ! defined but LINEAR_DRAG is not. +DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 + ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an + ! unresolved velocity that is combined with the resolved velocity to estimate + ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is + ! defined. +BBL_THICK_MIN = 0.1 ! [m] default = 0.0 + ! The minimum bottom boundary layer thickness that can be used with + ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum + ! near-bottom viscosity. +KV = 1.0E-04 ! [m2 s-1] + ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 + ! m2 s-1, may be used. + +! === module MOM_thickness_diffuse === +KHTH = 600.0 ! [m2 s-1] default = 0.0 + ! The background horizontal thickness diffusivity. +KHTH_MAX = 900.0 ! [m2 s-1] default = 0.0 + ! The maximum horizontal thickness diffusivity. + +! === module MOM_dynamics_split_RK2 === +TIDES = True ! [Boolean] default = False + ! If true, apply tidal momentum forcing. + +! === module MOM_continuity_PPM === +ETA_TOLERANCE = 1.0E-06 ! [m] default = 2.5E-09 + ! The tolerance for the differences between the barotropic and baroclinic + ! estimates of the sea surface height due to the fluxes through each face. The + ! total tolerance for SSH is 4 times this value. The default is + ! 0.5*NK*ANGSTROM, and this should not be set less than about + ! 10^-15*MAXIMUM_DEPTH. +VELOCITY_TOLERANCE = 1.0E-04 ! [m s-1] default = 3.0E+08 + ! The tolerance for barotropic velocity discrepancies between the barotropic + ! solution and the sum of the layer thicknesses. + +! === module MOM_CoriolisAdv === +BOUND_CORIOLIS = True ! [Boolean] default = False + ! If true, the Coriolis terms at u-points are bounded by the four estimates of + ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This + ! option would have no effect on the SADOURNY Coriolis scheme if it were + ! possible to use centered difference thickness fluxes. + +! === module MOM_self_attr_load === + +! === module MOM_tidal_forcing === +TIDE_M2 = True ! [Boolean] default = False + ! If true, apply tidal momentum forcing at the M2 frequency. This is only used + ! if TIDES is true. + +! === module MOM_PressureForce === + +! === module MOM_PressureForce_FV === +MASS_WEIGHT_IN_PRESSURE_GRADIENT = True ! [Boolean] default = False + ! If true, use mass weighting when interpolating T/S for integrals near the + ! bathymetry in FV pressure gradient calculations. + +! === module MOM_Zanna_Bolton === + +! === module MOM_hor_visc === +LAPLACIAN = True ! [Boolean] default = False + ! If true, use a Laplacian horizontal viscosity. +KH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 + ! The velocity scale which is multiplied by the grid spacing to calculate the + ! Laplacian viscosity. The final viscosity is the largest of this scaled + ! viscosity, the Smagorinsky and Leith viscosities, and KH. +AH_VEL_SCALE = 0.05 ! [m s-1] default = 0.0 + ! The velocity scale which is multiplied by the cube of the grid spacing to + ! calculate the biharmonic viscosity. The final viscosity is the largest of this + ! scaled viscosity, the Smagorinsky and Leith viscosities, and AH. +SMAGORINSKY_AH = True ! [Boolean] default = False + ! If true, use a biharmonic Smagorinsky nonlinear eddy viscosity. +SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0 + ! The nondimensional biharmonic Smagorinsky constant, typically 0.015 - 0.06. + +! === module MOM_vert_friction === +HMIX_FIXED = 0.5 ! [m] + ! The prescribed depth over which the near-surface viscosity and diffusivity are + ! elevated when the bulk mixed layer is not used. +MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 + ! The maximum velocity allowed before the velocity components are truncated. +CFL_TRUNCATE_RAMP_TIME = 7200.0 ! [s] default = 0.0 + ! The time over which the CFL truncation value is ramped up at the beginning of + ! the run. + +! === module MOM_barotropic === +BOUND_BT_CORRECTION = True ! [Boolean] default = False + ! If true, the corrective pseudo mass-fluxes into the barotropic solver are + ! limited to values that require less than maxCFL_BT_cont to be accommodated. +BT_PROJECT_VELOCITY = True ! [Boolean] default = False + ! If true, step the barotropic velocity first and project out the velocity + ! tendency by 1+BEBT when calculating the transport. The default (false) is to + ! use a predictor continuity step to find the pressure field, and then to do a + ! corrector continuity step using a weighted average of the old and new + ! velocities, with weights of (1-BEBT) and BEBT. +BEBT = 0.2 ! [nondim] default = 0.1 + ! BEBT determines whether the barotropic time stepping uses the forward-backward + ! time-stepping scheme or a backward Euler scheme. BEBT is valid in the range + ! from 0 (for a forward-backward treatment of nonrotating gravity waves) to 1 + ! (for a backward Euler treatment). In practice, BEBT must be greater than about + ! 0.05. +DTBT = -0.95 ! [s or nondim] default = -0.98 + ! The barotropic time step, in s. DTBT is only used with the split explicit time + ! stepping. To set the time step automatically based the maximum stable value + ! use 0, or a negative value gives the fraction of the stable value. Setting + ! DTBT to 0 is the same as setting it to -0.98. The value of DTBT that will + ! actually be used is an integer fraction of DT, rounding down. + +! === module MOM_mixed_layer_restrat === +MIXEDLAYER_RESTRAT = True ! [Boolean] default = False + ! If true, a density-gradient dependent re-stratifying flow is imposed in the + ! mixed layer. Can be used in ALE mode without restriction but in layer mode can + ! only be used if BULKMIXEDLAYER is true. +MLE% +%MLE +FOX_KEMPER_ML_RESTRAT_COEF = 20.0 ! [nondim] default = 0.0 + ! A nondimensional coefficient that is proportional to the ratio of the + ! deformation radius to the dominant lengthscale of the submesoscale mixed layer + ! instabilities, times the minimum of the ratio of the mesoscale eddy kinetic + ! energy to the large-scale geostrophic kinetic energy or 1 plus the square of + ! the grid spacing over the deformation radius, as detailed by Fox-Kemper et al. + ! (2011) + +! === module MOM_diagnostics === + +! === module MOM_diabatic_driver === +! The following parameters are used for diabatic processes. +ENERGETICS_SFC_PBL = True ! [Boolean] default = False + ! If true, use an implied energetics planetary boundary layer scheme to + ! determine the diffusivity and viscosity in the surface boundary layer. + +! === module MOM_geothermal === +GEOTHERMAL_SCALE = 0.001 ! [W m-2 or various] default = 0.0 + ! The constant geothermal heat flux, a rescaling factor for the heat flux read + ! from GEOTHERMAL_FILE, or 0 to disable the geothermal heating. +GEOTHERMAL_FILE = "geothermal_heating_cm2g.nc" ! default = "" + ! The file from which the geothermal heating is to be read, or blank to use a + ! constant heating rate. + +! === module MOM_set_diffusivity === + +! === module MOM_tidal_mixing === +! Vertical Tidal Mixing Parameterization +INT_TIDE_DISSIPATION = True ! [Boolean] default = False + ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, + ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). +INT_TIDE_DECAY_SCALE = 300.0 ! [m] default = 500.0 + ! The decay scale away from the bottom for tidal TKE with the new coding when + ! INT_TIDE_DISSIPATION is used. +KAPPA_ITIDES = 6.28319E-04 ! [m-1] default = 6.283185307179586E-04 + ! A topographic wavenumber used with INT_TIDE_DISSIPATION. The default is 2pi/10 + ! km, as in St.Laurent et al. 2002. +KAPPA_H2_FACTOR = 0.75 ! [nondim] default = 1.0 + ! A scaling factor for the roughness amplitude with INT_TIDE_DISSIPATION. +TKE_ITIDE_MAX = 0.1 ! [W m-2] default = 1000.0 + ! The maximum internal tide energy source available to mix above the bottom + ! boundary layer with INT_TIDE_DISSIPATION. +READ_TIDEAMP = True ! [Boolean] default = False + ! If true, read a file (given by TIDEAMP_FILE) containing the tidal amplitude + ! with INT_TIDE_DISSIPATION. +H2_FILE = "sgs_h2.nc" ! + ! The path to the file containing the sub-grid-scale topographic roughness + ! amplitude with INT_TIDE_DISSIPATION. +BBL_MIXING_AS_MAX = False ! [Boolean] default = True + ! If true, take the maximum of the diffusivity from the BBL mixing and the other + ! diffusivities. Otherwise, diffusivity from the BBL_mixing is simply added. +USE_LOTW_BBL_DIFFUSIVITY = True ! [Boolean] default = False + ! If true, uses a simple, imprecise but non-coordinate dependent, model of BBL + ! mixing diffusivity based on Law of the Wall. Otherwise, uses the original BBL + ! scheme. +SIMPLE_TKE_TO_KD = True ! [Boolean] default = False + ! If true, uses a simple estimate of Kd/TKE that will work for arbitrary + ! vertical coordinates. If false, calculates Kd/TKE and bounds based on exact + ! energetics for an isopycnal layer-formulation. + +! === module MOM_bkgnd_mixing === +! Adding static vertical background mixing coefficients +KD = 2.0E-05 ! [m2 s-1] default = 0.0 + ! The background diapycnal diffusivity of density in the interior. Zero or the + ! molecular value, ~1e-7 m2 s-1, may be used. +KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 + ! The minimum diapycnal diffusivity. +HENYEY_IGW_BACKGROUND = True ! [Boolean] default = False + ! If true, use a latitude-dependent scaling for the near surface background + ! diffusivity, as described in Harrison & Hallberg, JPO 2008. +KD_MAX = 0.1 ! [m2 s-1] default = -1.0 + ! The maximum permitted increment for the diapycnal diffusivity from TKE-based + ! parameterizations, or a negative value for no limit. + +! === module MOM_kappa_shear === +! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 +USE_JACKSON_PARAM = True ! [Boolean] default = False + ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing + ! parameterization. +MAX_RINO_IT = 25 ! [nondim] default = 50 + ! The maximum number of iterations that may be used to estimate the Richardson + ! number driven mixing. + +! === module MOM_diabatic_aux === +! The following parameters are used for auxiliary diabatic processes. +VAR_PEN_SW = True ! [Boolean] default = False + ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine + ! the e-folding depth of incoming short wave radiation. +CHL_FILE = "seawifs_1998-2006_GOLD_smoothed_2X.nc" ! + ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It + ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. + +! === module MOM_energetic_PBL === +EPBL_ANSWER_DATE = 20231231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the energetic PBL + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. + ! Values below 20240101 use A**(1./3.) to estimate the cube root of A in several + ! expressions, while higher values use the integer root function cuberoot(A) and + ! therefore can work with scaled variables. +USE_MLD_ITERATION = False ! [Boolean] default = True + ! A logical that specifies whether or not to use the distance to the bottom of + ! the actively turbulent boundary layer to help set the EPBL length scale. + +! === module MOM_opacity === +PEN_SW_NBANDS = 3 ! default = 1 + ! The number of bands of penetrating shortwave radiation. + +! === module MOM_tracer_advect === +TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "PLM" + ! The horizontal transport scheme for tracers: + ! PLM - Piecewise Linear Method + ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) + ! PPM - Piecewise Parabolic Method (Colella-Woodward) + +! === module MOM_tracer_hor_diff === +KHTR = 600.0 ! [m2 s-1] default = 0.0 + ! The background along-isopycnal tracer diffusivity. +KHTR_MIN = 50.0 ! [m2 s-1] default = 0.0 + ! The minimum along-isopycnal tracer diffusivity. +KHTR_MAX = 900.0 ! [m2 s-1] default = 0.0 + ! The maximum along-isopycnal tracer diffusivity. + +! === module MOM_neutral_diffusion === +! This module implements neutral diffusion of tracers +USE_NEUTRAL_DIFFUSION = True ! [Boolean] default = False + ! If true, enables the neutral diffusion module. + +! === module MOM_sum_output === +MAXTRUNC = 5000 ! [truncations save_interval-1] default = 0 + ! The run will be stopped, and the day set to a very large value if the velocity + ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 + ! to stop if there is any truncation of velocities. +ENERGYSAVEDAYS = 0.5 ! [days] default = 1.0 + ! The interval in units of TIMEUNIT between saves of the energies of the run and + ! other globally summed diagnostics. + +! === module ocean_stochastics_init === + +! === module ocean_model_init === +RESTART_CONTROL = 3 ! default = 1 + ! An integer whose bits encode which restart files are written. Add 2 (bit 1) + ! for a time-stamped file, and odd (bit 0) for a non-time-stamped file. A + ! restart file will be saved at the end of the run segment for any non-negative + ! value. + +! === module MOM_surface_forcing === +READ_GUST_2D = True ! [Boolean] default = False + ! If true, use a 2-dimensional gustiness supplied from an input file +GUST_CONST = 0.02 ! [Pa] default = 0.0 + ! The background gustiness in the winds. +GUST_2D_FILE = "gustiness_qscat.nc" ! + ! The file in which the wind gustiness is found in variable gustiness. diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/README.offline b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/README.offline new file mode 100644 index 0000000000..47161c4aa0 --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/README.offline @@ -0,0 +1,80 @@ +Instructions for running passive tracers offline in MOM6 +Contact: Andrew Shao (andrew.shao@noaa.gov) +Last modified: 7 October 2016 + +---- +QUICK-START +---- +1) Follow instructions to compile MOM6 executables using ice_ocean_SIS2 and ocean_only drivers +2) Link executables to Baltic_ALE_z directory (replace 'intel' and 'repro' as necessary) + ln -s ../../build/intel/ice_ocean_SIS2/repro/MOM6 ./MOM6_coupled + ln -s ../../build/intel/ice_ocean_SIS2/repro/MOM6 ./MOM6_ocean_only +3) Run model forward using the provided script to generate necessary fields + source run_online.sh +4) Run model offline + source run_offline.sh + +---- +OVERVIEW +---- +'Offline tracer modeling' uses physical fields (e.g. mass transports and layer thicknesses) saved +from a previous integration of the physical model to transport passive tracers. These fields are +accumulated or averaged over a period of time (in this test case, 1 day) and used to integrate +portions of the MOM6 code base that handle the 3d advection and diffusion of passive tracers. +This capability has currently targeted the Baltic_ALE_z test case, though some work has also been +done with the OM4 1/2 degree configuration. Work is ongoing to develop recommendations and best +practices for investigators seeking to use MOM6 for offline tracer modeling. + +The subroutine step_tracers that coordinates this can be found in MOM.F90 and is only called +using the solo ocean driver. This is to avoid issues with coupling to other climate components +that may be relying on fluxes from the ocean to be coupled more often than the offline time step. +Other routines related to offline tracer modeling can be found in tracers/MOM_offline_control.F90 + +As can also be seen in the comments for the step_tracers subroutine, an offline time step +comprises the following steps + 1) Using the layer thicknesses and tracer concentrations from the previous timestep, + half of the accumulated vertical mixing (eatr and ebtr) is applied in the call to + tracer_column_fns. + For tracers whose source/sink terms need dt, this value is set to 1/2 dt_offline + 2) Half of the accumulated surface freshwater fluxes are applied + START ITERATION + 3) Accumulated mass fluxes are used to do horizontal transport. The number of iterations + used in advect_tracer is limited to 2 (e.g x->y->x->y). The remaining mass fluxes are + stored for later use and resulting layer thicknesses fed into the next step + 4) Tracers and the h-grid are regridded and remapped in a call to ALE. This allows for + layers which might 'vanish' because of horizontal mass transport to be 'reinflated' + and essentially allows for the vertical transport of tracers + 5) Check that transport is done if the remaining mass fluxes equals 0 or if the max + number of iterations has been reached + END ITERATION + 6) Repeat steps 1 and 2 + 7) Force a remapping to the stored layer thicknesses that correspond to the snapshot of + the online model at the end of an accumulation interval + 8) Reset T/S and h to their stored snapshotted values to prevent model drift + +---- +EVALUATING +---- +A framework for formally regression testing the offline capability still needs to be developed. +However, as a simple way of testing whether the offline model is nominally behaving as expected, +the total inventory of the advection test tracers (tr1, tr2, etc.) should be conserved between +time steps except for the last 4 decimal places. + +---- +MOM_input parameters +---- +OFFLINEDIR ! default = "" + ! Input directory where the offline fields can be found +OFF_SUM_FILE ! default = "" + ! Filename where the accumulated fields can be found +OFF_SNAP_FILE ! default = "" + ! Filename where snapshot fields can be found +START_INDEX = ! default = 1 + ! Which time index to start from +NUMTIME = ! default = 0 + ! Number of timelevels in offline input files +FIELDS_ARE_OFFSET ! [Boolean] default = False + ! True if the time-averaged fields and snapshot fields are offset by one time level +NUM_OFF_ITER ! + ! Number of iterations to subdivide the offline tracer advection and diffusion +DT_OFFLINE ! Length of the offline timestep diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_input b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_input new file mode 100644 index 0000000000..f3be6a452c --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_input @@ -0,0 +1,104 @@ +! This input file provides the adjustable run-time parameters for version 2 of the Sea Ice Simulator (SIS2). +! Where appropriate, parameters use usually given in MKS units. + +! This particular file is for the example in ice_ocean_SIS2/Baltic_ALE_z_offline_tracers. + +! This SIS_input file typically contains only the non-default values that are needed to reproduce this example. +! A full list of parameters for this example can be found in the corresponding SIS_parameter_doc.all file +! which is generated by the model at run-time. + +! === module ice_model === +ADD_DIURNAL_SW = True ! [Boolean] default = False + ! If true, add a synthetic diurnal cycle to the shortwave radiation. + +! === module MOM_domains === +REENTRANT_X = False ! [Boolean] default = True + ! If true, the domain is zonally reentrant. +NIGLOBAL = 23 ! + ! The total number of thickness grid points in the x-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in SIS2_memory.h at compile time. +NJGLOBAL = 14 ! + ! The total number of thickness grid points in the y-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in SIS2_memory.h at compile time. +NIHALO = 2 ! default = 4 + ! The number of halo points on each side in the x-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. +NJHALO = 2 ! default = 4 + ! The number of halo points on each side in the y-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. + +! === module SIS_initialize_fixed === +INPUTDIR = "INPUT" ! default = "." + ! The directory in which input files are found. + +! === module MOM_grid_init === +GRID_CONFIG = "mosaic" ! + ! A character string that determines the method for defining the horizontal + ! grid. Current options are: + ! mosaic - read the grid from a mosaic (supergrid) + ! file set by GRID_FILE. + ! cartesian - use a (flat) Cartesian grid. + ! spherical - use a simple spherical grid. + ! mercator - use a Mercator spherical grid. +GRID_FILE = "ocean_hgrid.nc" ! + ! Name of the file from which to read horizontal grid data. +!MAXIMUM_DEPTH = 608.4598627866924 ! [m] + ! The (diagnosed) maximum depth of the ocean. + +! === module hor_grid === +! Parameters providing information about the lateral grid. + +! === module SIS2_ice_thm (thermo) === +! This sub-module calculates ice thermodynamic quantities. + +! === module SIS_tracer_registry === + +! === module SIS_tracer_flow_control === + +! === module SIS_slow_thermo === +! This module calculates the slow evolution of the ice mass, heat, and salt budgets. +ICE_BULK_SALINITY = 5.0 ! [g/kg] default = 4.0 + ! The fixed bulk salinity of sea ice. +FILLING_FRAZIL_TIMESCALE = 8.64E+04 ! [s] default = 0.0 + ! A timescale with which the filling frazil causes the thinest cells to attain + ! similar thicknesses, or a negative number to apply the frazil flux uniformly. + +! === module SIS2_ice_thm (updates) === +! This sub-module does updates of the sea-ice due to thermodynamic changes. + +! === module SIS_dyn_trans === +! This module updates the ice momentum and does ice transport. +DT_ICE_DYNAMICS = 3600.0 ! [seconds] default = -1.0 + ! The time step used for the slow ice dynamics, including stepping the + ! continuity equation and interactions between the ice mass field and + ! velocities. If 0 or negative the coupling time step will be used. +DT_RHEOLOGY = 100.0 ! [seconds] default = -1.0 + ! The sub-cycling time step for iterating the rheology and ice momentum + ! equations. If DT_RHEOLOGY is negative, the time step is set via NSTEPS_DYN. +ICE_TDAMP_ELASTIC = 0.0 ! [s or nondim] default = -0.2 + ! The damping timescale associated with the elastic terms in the sea-ice + ! dynamics equations (if positive) or the fraction of DT_ICE_DYNAMICS (if + ! negative). + +! === module SIS_tracer_advect === +SIS_TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "UPWIND_2D" + ! The horizontal transport scheme for tracers: + ! UPWIND_2D - Non-directionally split upwind + ! PCM - Directionally split piecewise constant + ! PLM - Piecewise Linear Method + ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) + +! === module SIS_sum_output === + +! === module SIS_ice_diagnostics === +! This module handles sea-ice state diagnostics. + +! === module SIS_fast_thermo === +! This module applies rapidly varying heat fluxes to the ice and does an implicit surface temperature +! calculation. + +! === module SIS2_ice_thm (updates) === +! This sub-module does updates of the sea-ice due to thermodynamic changes. + +! === module SIS_optics === +! This module calculates the albedo and absorption profiles for shortwave radiation. diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_override b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_override new file mode 100644 index 0000000000..5d67420dc4 --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_override @@ -0,0 +1 @@ +! Blank file in which we can put "overrides" for parameters diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_parameter_doc.all b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_parameter_doc.all new file mode 100644 index 0000000000..f9e6373acf --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_parameter_doc.all @@ -0,0 +1,560 @@ +! This file was written by the model and records all non-layout or debugging parameters used at run-time. + +! === module ice_model === +SPECIFIED_ICE = False ! [Boolean] default = False + ! If true, the ice is specified and there is no dynamics. +CGRID_ICE_DYNAMICS = True ! [Boolean] default = True + ! If true, use a C-grid discretization of the sea-ice dynamics; if false use a + ! B-grid discretization. +USE_SLAB_ICE = False ! [Boolean] default = False + ! If true, use the very old slab-style ice. +SINGLE_ICE_STATE_TYPE = True ! [Boolean] default = True + ! If true, the fast and slow portions of the ice use a single common + ! ice_state_type. Otherwise they point to different ice_state_types that need + ! to be explicitly copied back and forth. +EULERIAN_TSURF = True ! [Boolean] default = True + ! If true, use previous calculations of the ice-top surface skin temperature for + ! tsurf at the start of atmospheric time stepping, including interpolating + ! between tsurf values from other categories in the same location. +ICE_OCEAN_STRESS_STAGGER = "C" ! default = "C" + ! A case-insensitive character string to indicate the staggering of the stress + ! field on the ocean that is returned to the coupler. Valid values include 'A', + ! 'B', or 'C', with a default that follows the value of CGRID_ICE_DYNAMICS. +RHO_OCEAN = 1030.0 ! [kg m-3] default = 1030.0 + ! The nominal density of sea water as used by SIS. +RHO_ICE = 905.0 ! [kg m-3] default = 905.0 + ! The nominal density of sea ice as used by SIS. +RHO_SNOW = 330.0 ! [kg m-3] default = 330.0 + ! The nominal density of snow as used by SIS. +G_EARTH = 9.8 ! [m s-2] default = 9.8 + ! The gravitational acceleration of the Earth. +MOMENTUM_ROUGH_ICE = 1.0E-04 ! [m] default = 1.0E-04 + ! The default momentum roughness length scale for the ocean. +HEAT_ROUGH_ICE = 1.0E-04 ! [m] default = 1.0E-04 + ! The default roughness length scale for the turbulent transfer of heat into the + ! ocean. +CONSTANT_COSZEN_IC = -1.0 ! [nondim] default = -1.0 + ! A constant value to use to initialize the cosine of the solar zenith angle for + ! the first radiation step, or a negative number to use the current time and + ! astronomy. +DT_RADIATION = 3600.0 ! [s] default = 3600.0 + ! The time step with which the shortwave radiation and fields like albedos are + ! updated. Currently this is only used to initialize albedos when there is no + ! restart file. +ICE_KMELT = 240.0 ! [W m-2 K-1] default = 240.0 + ! A constant giving the proportionality of the ocean/ice base heat flux to the + ! tempature difference, given by the product of the heat capacity per unit + ! volume of sea water times a molecular diffusive piston velocity. +ICE_BOUNDS_CHECK = True ! [Boolean] default = True + ! If true, periodically check the values of ice and snow temperatures and + ! thicknesses to ensure that they are sensible, and issue warnings if they are + ! not. This does not change answers, but can increase model run time. +FIRST_DIRECTION = 0 ! default = 0 + ! An integer that indicates which direction goes first in parts of the code that + ! use directionally split updates, with even numbers (or 0) used for x- first + ! and odd numbers used for y-first. +ICE_SEES_ATMOS_WINDS = True ! [Boolean] default = True + ! If true, the sea ice is being given wind stresses with the atmospheric sign + ! convention, and need to have their sign changed. +APPLY_SLP_TO_OCEAN = False ! [Boolean] default = False + ! If true, apply the atmospheric sea level pressure to the ocean. +PASS_STRESS_MAG_TO_OCEAN = False ! [Boolean] default = False + ! If true, provide the time and area weighted mean magnitude of the stresses on + ! the ocean to the ocean. +DO_ICEBERGS = False ! [Boolean] default = False + ! If true, call the iceberg module. +ADD_DIURNAL_SW = True ! [Boolean] default = False + ! If true, add a synthetic diurnal cycle to the shortwave radiation. +DO_SUN_ANGLE_FOR_ALB = False ! [Boolean] default = False + ! If true, find the sun angle for calculating the ocean albedo within the sea + ! ice model. +DO_RIDGING = False ! [Boolean] default = False + ! If true, call the ridging routines. +RESTARTFILE = "ice_model.res.nc" ! default = "ice_model.res.nc" + ! The name of the restart file. +FAST_ICE_RESTARTFILE = "ice_model.res.nc" ! default = "ice_model.res.nc" + ! The name of the restart file for those elements of the the sea ice that are + ! handled by the fast ice PEs. +APPLY_MASKS_AFTER_RESTART = True ! [Boolean] default = True + ! If true, applies masks to mH_ice,mH_snow and part_size after a restart. +WRITE_GEOM = 1 ! default = 1 + ! If =0, never write the geometry and vertical grid files. If =1, write the + ! geometry and vertical grid files only for a new simulation. If =2, always + ! write the geometry and vertical grid files. Other values are invalid. +INTERPOLATE_FLUXES = True ! [Boolean] default = True + ! If true, interpolate a linearized version of the fast fluxes into arealess + ! categories. +REDO_FAST_ICE_UPDATE = False ! [Boolean] default = False + ! If true, recalculate the thermal updates from the fast dynamics on the slowly + ! evolving ice state, rather than copying over the slow ice state to the fast + ! ice state. +READ_HLIM_VALS = False ! [Boolean] default = False + ! If true, read the lower limits on the ice thicknesscategories. +NCAT_ICE = 5 ! [nondim] default = 5 + ! The number of sea ice thickness categories. +NK_ICE = 4 ! [nondim] default = 4 + ! The number of layers within the sea ice. +NK_SNOW = 1 ! [nondim] default = 1 + ! The number of layers within the snow atop the sea ice. +MIN_OCEAN_PARTSIZE = 0.0 ! [nondim] default = 0.0 + ! The minimum value for the fractional open-ocean area. This can be 0, but for + ! some purposes it may be useful to set this to a miniscule value (like 1e-40) + ! that will be lost to roundoff during any sums so that the open ocean fluxes + ! can be used in with new categories. + +! === module MOM_domains === +REENTRANT_X = False ! [Boolean] default = True + ! If true, the domain is zonally reentrant. +REENTRANT_Y = False ! [Boolean] default = False + ! If true, the domain is meridionally reentrant. +TRIPOLAR_N = False ! [Boolean] default = False + ! Use tripolar connectivity at the northern edge of the domain. With + ! TRIPOLAR_N, NIGLOBAL must be even. +NIGLOBAL = 23 ! + ! The total number of thickness grid points in the x-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in SIS2_memory.h at compile time. +NJGLOBAL = 14 ! + ! The total number of thickness grid points in the y-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in SIS2_memory.h at compile time. +NIHALO = 2 ! default = 4 + ! The number of halo points on each side in the x-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. +NJHALO = 2 ! default = 4 + ! The number of halo points on each side in the y-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. + +! === module MOM_hor_index === +! Sets the horizontal array index types. + +! === module SIS_restart === +PARALLEL_RESTARTFILES = False ! [Boolean] default = False + ! If true, each processor writes its own restart file, otherwise a single + ! restart file is generated +MAX_FIELDS = 100 ! default = 100 + ! The maximum number of restart fields that can be used. +RESTART_CHECKSUMS_REQUIRED = True ! [Boolean] default = True + ! If true, require the restart checksums to match and error out otherwise. Users + ! may want to avoid this comparison if for example the restarts are made from a + ! run with a different mask_table than the current run, in which case the + ! checksums will not match. + +! === module SIS_initialize_fixed === +INPUTDIR = "INPUT" ! default = "." + ! The directory in which input files are found. + +! === module MOM_grid_init === +GRID_CONFIG = "mosaic" ! + ! A character string that determines the method for defining the horizontal + ! grid. Current options are: + ! mosaic - read the grid from a mosaic (supergrid) + ! file set by GRID_FILE. + ! cartesian - use a (flat) Cartesian grid. + ! spherical - use a simple spherical grid. + ! mercator - use a Mercator spherical grid. +GRID_FILE = "ocean_hgrid.nc" ! + ! Name of the file from which to read horizontal grid data. +USE_TRIPOLAR_GEOLONB_BUG = False ! [Boolean] default = False + ! If true, use older code that incorrectly sets the longitude in some points + ! along the tripolar fold to be off by 360 degrees. +RAD_EARTH = 6.378E+06 ! [m] default = 6.378E+06 + ! The radius of the Earth. +TOPO_CONFIG = "file" ! default = "file" + ! This specifies how bathymetry is specified: + ! file - read bathymetric information from the file + ! specified by (TOPO_FILE). + ! flat - flat bottom set to MAXIMUM_DEPTH. + ! bowl - an analytically specified bowl-shaped basin + ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. + ! spoon - a similar shape to 'bowl', but with a vertical + ! wall at the southern face. + ! halfpipe - a zonally uniform channel with a half-sine + ! profile in the meridional direction. +TOPO_FILE = "topog.nc" ! default = "topog.nc" + ! The file from which the bathymetry is read. +TOPO_VARNAME = "depth" ! default = "depth" + ! The name of the bathymetry variable in TOPO_FILE. +TOPO_EDITS_FILE = "" ! default = "" + ! The file from which to read a list of i,j,z topography overrides. +ALLOW_LANDMASK_CHANGES = False ! [Boolean] default = False + ! If true, allow topography overrides to change land mask. +MINIMUM_DEPTH = 0.0 ! [m] default = 0.0 + ! If MASKING_DEPTH is unspecified, then anything shallower than MINIMUM_DEPTH is + ! assumed to be land and all fluxes are masked out. If MASKING_DEPTH is + ! specified, then all depths shallower than MINIMUM_DEPTH but deeper than + ! MASKING_DEPTH are rounded to MINIMUM_DEPTH. +MASKING_DEPTH = -9999.0 ! [m] default = -9999.0 + ! The depth below which to mask points as land points, for which all fluxes are + ! zeroed out. MASKING_DEPTH is ignored if it has the special default value. +!MAXIMUM_DEPTH = 608.4598627866924 ! [m] + ! The (diagnosed) maximum depth of the ocean. + +! === module SIS_open_boundary === +! Controls where open boundaries are located, what kind of boundary condition to impose, and what data to apply, +! if any. +OBC_NUMBER_OF_SEGMENTS = 0 ! default = 0 + ! The number of open boundary segments. +CHANNEL_CONFIG = "none" ! default = "none" + ! A parameter that determines which set of channels are restricted to specific + ! widths. Options are: + ! none - All channels have the grid width. + ! global_1deg - Sets 16 specific channels appropriate + ! for a 1-degree model, as used in CM2G. + ! list - Read the channel locations and widths from a + ! text file, like MOM_channel_list in the MOM_SIS + ! test case. + ! file - Read open face widths everywhere from a + ! NetCDF file on the model grid. +ROTATION = "2omegasinlat" ! default = "2omegasinlat" + ! This specifies how the Coriolis parameter is specified: + ! 2omegasinlat - Use twice the planetary rotation rate + ! times the sine of latitude. + ! betaplane - Use a beta-plane or f-plane. + ! USER - call a user modified routine. +OMEGA = 7.2921E-05 ! [s-1] default = 7.2921E-05 + ! The rotation rate of the earth. +GRID_ROTATION_ANGLE_BUGS = False ! [Boolean] default = False + ! If true, use an older algorithm to calculate the sine and cosines needed + ! rotate between grid-oriented directions and true north and east. Differences + ! arise at the tripolar fold. + +! === module hor_grid === +! Parameters providing information about the lateral grid. + +! === module MOM_hor_index === +! Sets the horizontal array index types. +SIS_AVAILABLE_DIAGS_FILE = "SIS.available_diags" ! default = "SIS.available_diags" + ! A file into which to write a list of all available sea ice diagnostics that + ! can be included in a diag_table. + +! === module SIS2_ice_thm (thermo) === +! This sub-module calculates ice thermodynamic quantities. +LATENT_HEAT_FUSION = 3.34E+05 ! [J kg-1] default = 3.34E+05 + ! The latent heat of fusion as used by SIS. +LATENT_HEAT_VAPOR = 2.5E+06 ! [J kg-1] default = 2.5E+06 + ! The latent heat of vaporization of water at 0C as used by SIS. +CP_ICE = 2100.0 ! [J kg-1 K-1] default = 2100.0 + ! The heat capacity of fresh ice, approximated as a constant. +CP_SEAWATER = 4200.0 ! [J kg-1 K-1] default = 4200.0 + ! The heat capacity of sea water, approximated as a constant. +CP_BRINE = 4200.0 ! [J kg-1 K-1] default = 4200.0 + ! The heat capacity of water in brine pockets within the sea-ice, approximated + ! as a constant. CP_BRINE and CP_SEAWATER should be equal, but for + ! computational convenience CP_BRINE can be set equal to CP_ICE. +DTFREEZE_DS = -0.054 ! [deg C PSU-1] default = -0.054 + ! The derivative of the freezing temperature with salinity. +ENTHALPY_LIQUID_0 = 0.0 ! [J kg-1] default = 0.0 + ! The enthalpy of liquid fresh water at 0 C. The solutions should be physically + ! consistent when this is adjusted, because only the relative value is of + ! physical meaning, but roundoff errors can change the solution. +SUBLIMATION_BUG = False ! [Boolean] default = False + ! If true use an older calculation that omits the latent heat of fusion from the + ! latent heat of sublimation. This variable should be obsoleted as soon as + ! possible. + +! === module SIS_tracer_registry === + +! === module SIS_tracer_flow_control === +USE_ICE_AGE_TRACER = False ! [Boolean] default = False + ! If true, use the concentration based age tracer package. +SIS_FAST_AVAILABLE_DIAGS_FILE = "SIS_fast.available_diags" ! default = "SIS_fast.available_diags" + ! A file into which to write a list of all available sea ice diagnostics that + ! can be included in a diag_table. +CONCENTRATION_INIT_CONFIG = "data_override" ! default = "data_override" + ! A string that determines how the initial total sea ice concentration is + ! initialized for a new run: + ! file - read sea ice concentrations from a specified file + ! data_override - use the data_override capability or zero everywhere + ! zero - there is no sea ice anywhere + ! latitudes - initial sea ice concentration is a function of latitude. +ICE_THICKNESS_INIT_CONFIG = "data_override" ! default = "data_override" + ! A string that determines how the initial sea ice thickness is initialized for + ! a new run: + ! file - read sea ice thickesses from a specified file + ! data_override - use the data_override capability or zero everywhere + ! uniform - sea ice has uniform thickness where the concentration is + ! nonzero. +SNOW_THICKNESS_INIT_CONFIG = "data_override" ! default = "data_override" + ! A string that determines how the initial total snow thickness is initialized + ! for a new run: + ! file - read sea ice concentrations from a specified file + ! data_override - use the data_override capability or zero everywhere + ! uniform - snow has uniform thickness where the concentration is nonzero. +ICE_SALINITY_INIT_CONFIG = "uniform" ! default = "uniform" + ! A string that determines how the sea ice salinity is initialized for a new + ! run: + ! uniform - Use a constant ice salinity initial condition + ! file - Read sea ice salinities from a specified file + ! data_override - use the data_override capability or zero everywhere. +ICE_ENTHALPY_INIT_CONFIG = "uniform_temp" ! default = "uniform_temp" + ! A string that determines how the sea ice enthalpy is initialized for a new + ! run: + ! uniform_temp - Use a constant ice temperature initial condition + ! relative_temp - Use an ice temperature initial condition with a + ! specified depression below the bulk ice freezing point + ! file - Read sea ice temperatures or enthalpies from a specified file + ! data_override - use the data_override capability or freezing enthalpy + ! everywhere. +SNOW_ENTHALPY_INIT_CONFIG = "uniform_temp" ! default = "uniform_temp" + ! A string that determines how the snow enthalpy is initialized for a new run: + ! uniform_temp - Use a constant ice temperature initial condition + ! relative_temp - Use an ice temperature initial condition with a + ! specified depression below the bulk ice freezing point + ! file - Read sea ice temperatures or enthalpies from a specified file + ! data_override - use the data_override capability or freezing enthalpy + ! everywhere. +ICE_SALINITY_IC = 5.0 ! [g kg-1] default = 5.0 + ! The uniform sea ice salinity used for the initial condition +ICE_TEMPERATURE_IC = -4.0 ! [degC] default = -4.0 + ! The uniform sea ice and snow temperature used for the initial condition + +! === module SIS_slow_thermo === +! This module calculates the slow evolution of the ice mass, heat, and salt budgets. +ICE_BULK_SALINITY = 5.0 ! [g/kg] default = 4.0 + ! The fixed bulk salinity of sea ice. +ICE_RELATIVE_SALINITY = 0.0 ! [nondim] default = 0.0 + ! The initial salinity of sea ice as a fraction of the salinity of the seawater + ! from which it formed. +SIS2_FILLING_FRAZIL = True ! [Boolean] default = True + ! If true, apply frazil to fill as many categories as possible to fill in a + ! uniform (minimum) amount of ice in all the thinnest categories. Otherwise the + ! frazil is always assigned to a single category. +FILLING_FRAZIL_TIMESCALE = 8.64E+04 ! [s] default = 0.0 + ! A timescale with which the filling frazil causes the thinest cells to attain + ! similar thicknesses, or a negative number to apply the frazil flux uniformly. +APPLY_ICE_LIMIT = False ! [Boolean] default = False + ! If true, restore the sea ice state toward climatology. +DO_ICE_RESTORE = False ! [Boolean] default = False + ! If true, restore the sea ice state toward climatology. +NUDGE_SEA_ICE = False ! [Boolean] default = False + ! If true, constrain the sea ice concentrations using observations. +TRANSMUTE_SEA_ICE = False ! [Boolean] default = False + ! If true, allow ice to be transmuted directly into seawater with a spatially + ! varying rate as a form of outflow open boundary condition. + +! === module SIS2_ice_thm (updates) === +! This sub-module does updates of the sea-ice due to thermodynamic changes. +SNOW_CONDUCTIVITY = 0.31 ! [W m-1 K-1] default = 0.31 + ! The conductivity of heat in snow. +ICE_CONDUCTIVITY = 2.03 ! [W m-1 K-1] default = 2.03 + ! The conductivity of heat in ice. +MIN_H_FOR_TEMP_CALC = 0.0 ! [m] default = 0.0 + ! The minimum ice thickness at which to do temperature calculations. +DO_POND = False ! [Boolean] default = False + ! If true, calculate melt ponds and use them for shortwave radiation + ! calculation. +TDRAIN = -0.8 ! [degC] default = -0.8 + ! Melt ponds drain to sea level when ice average temp. exceeds TDRAIN (stand-in + ! for mushy layer thermo) +R_MIN_POND = 0.15 ! [nondim] default = 0.15 + ! Minimum retention rate of surface water sources in melt pond (retention scales + ! linearly with ice cover) +R_MAX_POND = 0.9 ! [nondim] default = 0.9 + ! Maximum retention rate of surface water sources in melt pond (retention scales + ! linearly with ice cover) +MIN_POND_FRAC = 0.2 ! [nondim] default = 0.2 + ! Minimum melt pond cover (by ponds at sea level) pond drains to this when ice + ! is porous. +MAX_POND_FRAC = 0.5 ! [nondim] default = 0.5 + ! Maximum melt pond cover - associated with pond volume that suppresses ice top + ! to waterline +ICE_TEMP_RANGE_ESTIMATE = 40.0 ! [degC] default = 40.0 + ! An estimate of the range of snow and ice temperatures that is used to evaluate + ! whether an explicit diffusive form of the heat fluxes or an inversion based on + ! the layer heat budget is more likely to be more accurate. Setting this to 0 + ! causes the explicit diffusive form. to always be used. + +! === module SIS_dyn_trans === +! This module updates the ice momentum and does ice transport. +DT_ICE_DYNAMICS = 3600.0 ! [seconds] default = -1.0 + ! The time step used for the slow ice dynamics, including stepping the + ! continuity equation and interactions between the ice mass field and + ! velocities. If 0 or negative the coupling time step will be used. +MERGED_CONTINUITY = False ! [Boolean] default = False + ! If true, update the continuity equations for the ice, snow, and melt pond + ! water together summed across categories, with proportionate fluxes for each + ! part. Otherwise the media are updated separately. +NSTEPS_ADV = 1 ! default = 1 + ! The number of advective iterations for each slow dynamics time step. +ICEBERG_WINDSTRESS_BUG = False ! [Boolean] default = False + ! If true, use older code that applied an old ice-ocean stress to the icebergs + ! in place of the current air-ocean stress. This option is here for backward + ! compatibility, but should be avoided. +WARSAW_SUM_ORDER = True ! [Boolean] default = True + ! If true, use the order of sums in the Warsaw version of SIS2. The default is + ! the opposite of MERGED_CONTINUITY. This option exists for backward + ! compatibilty but may eventually be obsoleted. +TIMEUNIT = 8.64E+04 ! [s] default = 8.64E+04 + ! The time unit for ICE_STATS_INTERVAL. +ICE_STATS_INTERVAL = 1.0 ! [days] default = 1.0 + ! The interval in units of TIMEUNIT between writes of the globally summed ice + ! statistics and conservation checks. +DT_RHEOLOGY = 100.0 ! [seconds] default = -1.0 + ! The sub-cycling time step for iterating the rheology and ice momentum + ! equations. If DT_RHEOLOGY is negative, the time step is set via NSTEPS_DYN. +ICE_TDAMP_ELASTIC = 0.0 ! [s or nondim] default = -0.2 + ! The damping timescale associated with the elastic terms in the sea-ice + ! dynamics equations (if positive) or the fraction of DT_ICE_DYNAMICS (if + ! negative). +WEAK_LOW_SHEAR_ICE = False ! [Boolean] default = False + ! If true, the divergent stresses go toward 0 in the C-grid dynamics when the + ! shear magnitudes are very weak. Otherwise they go to -P_ice. This setting is + ! temporary. +PROJECT_ICE_DRAG_VEL = True ! [Boolean] default = True + ! If true, project forward the ice velocity used in the drag calculation to + ! avoid an instability that can occur when a finite stress is applied to thin + ! ice moving with the velocity of the ocean. +ICE_YIELD_ELLIPTICITY = 2.0 ! [Nondim] default = 2.0 + ! The ellipticity coefficient for the plastic yield curve in the sea-ice + ! rheology. For an infinite ellipticity (i.e., a cavitating fluid rheology), + ! use 0. +ICE_STRENGTH_PSTAR = 2.75E+04 ! [Pa] default = 2.75E+04 + ! A constant in the expression for the ice strength, P* in Hunke & Dukowicz + ! 1997. +ICE_STRENGTH_CSTAR = 20.0 ! [nondim] default = 20.0 + ! A constant in the exponent of the expression for the ice strength, c* in Hunke + ! & Dukowicz 1997. +ICE_CDRAG_WATER = 0.00324 ! [nondim] default = 0.00324 + ! The drag coefficient between the sea ice and water. +MIN_OCN_INTERTIAL_H = 0.0 ! [m] default = 0.0 + ! A minimum ocean thickness used to limit the viscous coupling rate implied for + ! the ocean by the ice-ocean stress. Only used if positive. +ICE_DEL_SH_MIN_SCALE = 2.0 ! [nondim] default = 2.0 + ! A scaling factor for the lower bound on the shear rates used in the + ! denominator of the stress calculation. This probably needs to be greater than + ! 1. +PROJECT_ICE_CONCENTRATION = True ! [Boolean] default = True + ! If true, project the evolution of the ice concentration due to the convergence + ! or divergence of the ice flow. +VEL_UNDERFLOW = 0.0 ! [m s-1] default = 0.0 + ! A negligibly small velocity magnitude below which velocity components are set + ! to 0. A reasonable value might be 1e-30 m/s, which is less than an Angstrom + ! divided by the age of the universe. +STRESS_UNDERFLOW = 0.0 ! [Pa m] default = 0.0 + ! A negligibly small magnitude below which ice stress tensor components are set + ! to 0. A reasonable value might be 1e-15 kg m-1 s-1 times vel_underflow. +CFL_TRUNCATE = 0.5 ! [nondim] default = 0.5 + ! The value of the CFL number that will cause ice velocity components to be + ! truncated; instability can occur past 0.5. +CFL_TRUNC_DYN_ITS = False ! [Boolean] default = False + ! If true, check the CFL number for every iteration of the rheology solver; + ! otherwise only the final velocities that are used for transport are checked. +LEMIEUX_LANDFAST = False ! [Boolean] default = False + ! If true, turn on Lemieux landfast ice parameterization. +ITD_LANDFAST = False ! [Boolean] default = False + ! If true, turn on probabilistic landfast ice parameterization. +RECATEGORIZE_ICE = True ! [Boolean] default = True + ! If true, readjust the distribution into ice thickness categories after + ! advection. +SEA_ICE_ROLL_FACTOR = 1.0 ! [Nondim] default = 1.0 + ! A factor by which the propensity of small amounts of thick sea-ice to become + ! thinner by rolling is increased or 0 to disable rolling. This can be thought + ! of as the minimum number of ice floes in a grid cell divided by the horizontal + ! floe aspect ratio. Sensible values are 0 (no rolling) or larger than 1. +ICE_COVER_DISCARD = -1.0 ! [nondim] default = -1.0 + ! A tiny fractional ice coverage which if positive causes the mass in categories + ! with less than this coverage to be discarded. +SIS_THICKNESS_ADVECTION_SCHEME = "UPWIND_2D" ! default = "UPWIND_2D" + ! The horizontal transport scheme for thickness: + ! UPWIND_2D - Non-directionally split upwind + ! PCM - Directionally split piecewise constant + ! PLM - Piecewise Linear Method + ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) +INCONSISTENT_COVER_BUG = False ! [Boolean] default = False + ! If true, omit a recalculation of the fractional ice-free areal coverage after + ! the adjustment of the ice categories. +SIS_CONTINUITY_SCHEME = "UPWIND_2D" ! default = "UPWIND_2D" + ! The horizontal transport scheme used in continuity: + ! UPWIND_2D - Non-directionally split upwind + ! PCM - Directionally split piecewise constant + ! PPM:C2PD - Positive definite PPM with 2nd order edge values + ! PPM:C2MO - Monotonic PPM with 2nd order edge values +CONT_PPM_VOLUME_BASED_CFL = False ! [Boolean] default = False + ! If true, use the ratio of the open face lengths to the tracer cell areas when + ! estimating CFL numbers. +CONTINUITY_H_NEGLECT = 0.0 ! [kg m-2] default = 0.0 + ! The category ice mass per ocean cell area below which the transport within + ! this thickness category of out of a cell is set to zero. A suggested + ! non-default value might be of order 3e-32 kg m-2, which is one molecule of ice + ! per square kilometer. +CONTINUITY_FRAC_NEGLECT = 0.0 ! [nondim] default = 0.0 + ! When the total fluxes are distributed between categories with + ! MERGED_CONTINUITY, any category whose ice is less than this fraction of the + ! total mass contributes no flux. Without MERGED_CONTINUITY, any snow or melt + ! pond transport that is less than this fraction of the ice transport is zeroed + ! out. A suggested non-default value might be of order 1e-20. + +! === module SIS_tracer_advect === +SIS_TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "UPWIND_2D" + ! The horizontal transport scheme for tracers: + ! UPWIND_2D - Non-directionally split upwind + ! PCM - Directionally split piecewise constant + ! PLM - Piecewise Linear Method + ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) +CFL_MASS_NEGLECT_BUG = False ! [Boolean] default = False + ! If true use a globally constant negligible volume in the denominator of the + ! tracer advection CFL calculation, reproducing an older incorrect expression, + ! rather than using a proper scaling of this negligible mass with cell area. +ADCROFT_ADVECTIVE_CFL = False ! [Boolean] default = False + ! If true use the Adcroft reciprocal of the cell mass when calculating the + ! advective CFL numbers used in PPM tracer advection schemes, rather than adding + ! a small mass in the denominator of the advective CFL ratio. + +! === module SIS_sum_output === +WRITE_STOCKS = True ! [Boolean] default = True + ! If true, write the integrated tracer amounts to stdout when the statistics + ! files are written. +STDOUT_HEARTBEAT = True ! [Boolean] default = True + ! If true, periodically write sea ice statistics to stdout to allow the progress + ! to be seen. +MAXTRUNC = 0 ! [truncations save_interval-1] default = 0 + ! The run will be stopped, and the day set to a very large value if the velocity + ! is truncated more than MAXTRUNC times between writing ice statistics. Set + ! MAXTRUNC to 0 to stop if there is any truncation of sea ice velocities. +STATISTICS_FILE = "seaice.stats" ! default = "seaice.stats" + ! The file to use to write the globally integrated statistics. + +! === module SIS_ice_diagnostics === +! This module handles sea-ice state diagnostics. + +! === module SIS_fast_thermo === +! This module applies rapidly varying heat fluxes to the ice and does an implicit surface temperature +! calculation. +REORDER_0C_HEATFLUX = False ! [Boolean] default = False + ! If true, rearrange the calculation of the heat fluxes projected back to 0C to + ! work on each contribution separately, so that they can be indentically + ! replicated if there is a single fast timestep per coupled timestep and + ! REDO_FAST_ICE_UPDATE=True. +MAX_TSKIN_ITT = 10 ! default = 10 + ! The maximum number of iterations of the skin temperature and optical + ! properties during redo_update_ice_model_fast. + +! === module SIS2_ice_thm (updates) === +! This sub-module does updates of the sea-ice due to thermodynamic changes. + +! === module SIS_optics === +! This module calculates the albedo and absorption profiles for shortwave radiation. +DO_DELTA_EDDINGTON_SW = True ! [Boolean] default = True + ! If true, a delta-Eddington radiative transfer calculation for the shortwave + ! radiation within the sea-ice. +ICE_DELTA_EDD_R_ICE = 0.0 ! [nondimensional] default = 0.0 + ! A dreadfully documented tuning parameter for the radiative propeties of sea + ! ice with the delta-Eddington radiative transfer calculation. +ICE_DELTA_EDD_R_SNOW = 0.0 ! [nondimensional] default = 0.0 + ! A dreadfully documented tuning parameter for the radiative propeties of snow + ! on sea ice with the delta-Eddington radiative transfer calculation. +ICE_DELTA_EDD_R_POND = 0.0 ! [nondimensional] default = 0.0 + ! A dreadfully documented tuning parameter for the radiative propeties of + ! meltwater ponds on sea ice with the delta-Eddington radiative transfer + ! calculation. + +! === module MOM_file_parser === +SEND_LOG_TO_STDOUT = False ! [Boolean] default = False + ! If true, all log messages are also sent to stdout. +DOCUMENT_FILE = "SIS_parameter_doc" ! default = "SIS_parameter_doc" + ! The basename for files where run-time parameters, their settings, units and + ! defaults are documented. Blank will disable all parameter documentation. +COMPLETE_DOCUMENTATION = True ! [Boolean] default = True + ! If true, all run-time parameters are documented in SIS_parameter_doc.all . +MINIMAL_DOCUMENTATION = True ! [Boolean] default = True + ! If true, non-default run-time parameters are documented in + ! SIS_parameter_doc.short . diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_parameter_doc.debugging b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_parameter_doc.debugging new file mode 100644 index 0000000000..83f366cb9f --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_parameter_doc.debugging @@ -0,0 +1,66 @@ +! This file was written by the model and records the debugging parameters used at run-time. + +! === module MOM_unit_scaling === +! Parameters for doing unit scaling of variables. +Z_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! depths and heights. Valid values range from -300 to 300. +L_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! lateral distances. Valid values range from -300 to 300. +T_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! time. Valid values range from -300 to 300. +R_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! density. Valid values range from -300 to 300. +Q_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! heat content. Valid values range from -300 to 300. +C_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! temperature. Valid values range from -300 to 300. +S_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! salinity. Valid values range from -300 to 300. +DEBUG = False ! [Boolean] default = False + ! If true, write out verbose debugging data. +DEBUG_SLOW_ICE = False ! [Boolean] default = False + ! If true, write out verbose debugging data on the slow ice PEs. +DEBUG_FAST_ICE = False ! [Boolean] default = False + ! If true, write out verbose debugging data on the fast ice PEs. +DEBUG_CHKSUMS = False ! [Boolean] default = False + ! If true, checksums are performed on arrays in the various vec_chksum routines. +DEBUG_REDUNDANT = False ! [Boolean] default = False + ! If true, debug redundant data points during calls to the various vec_chksum + ! routines. +COLUMN_CHECK = False ! [Boolean] default = False + ! If true, add code to allow debugging of conservation column-by-column. This + ! does not change answers, but can increase model run time. +IMBALANCE_TOLERANCE = 1.0E-09 ! [nondim] default = 1.0E-09 + ! The tolerance for imbalances to be flagged by COLUMN_CHECK. +VERBOSE = False ! [Boolean] default = False + ! If true, write out verbose diagnostics. +DEBUG_EVP_SUBSTEPS = False ! [Boolean] default = False + ! If true, write out verbose debugging data for each of the steps within the EVP + ! solver. +U_TRUNC_FILE = "" ! default = "" + ! The absolute path to the file where the accelerations leading to zonal + ! velocity truncations are written. Leave this empty for efficiency if this + ! diagnostic is not needed. +V_TRUNC_FILE = "" ! default = "" + ! The absolute path to the file where the accelerations leading to meridional + ! velocity truncations are written. Leave this empty for efficiency if this + ! diagnostic is not needed. +MAX_TRUNC_FILE_SIZE_PER_PE = 50 ! default = 50 + ! The maximum number of colums of truncations that any PE will write out during + ! a run. +CHECK_ICE_TRANSPORT_CONSERVATION = False ! [Boolean] default = False + ! If true, use add multiple diagnostics of ice and snow mass conservation in the + ! sea-ice transport code. This is expensive and should be used sparingly. + +! === module MOM_file_parser === +REPORT_UNUSED_PARAMS = True ! [Boolean] default = True + ! If true, report any parameter lines that are not used in the run. +FATAL_UNUSED_PARAMS = False ! [Boolean] default = False + ! If true, kill the run if there are any unused parameters. diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_parameter_doc.layout b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_parameter_doc.layout new file mode 100644 index 0000000000..dac1f74906 --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_parameter_doc.layout @@ -0,0 +1,53 @@ +! This file was written by the model and records the layout parameters used at run-time. +GLOBAL_INDEXING = False ! [Boolean] default = False + ! If true, use a global lateral indexing convention, so that corresponding + ! points on different processors have the same index. This does not work with + ! static memory. + +! === module MOM_domains === +!SYMMETRIC_MEMORY_ = False ! [Boolean] + ! If defined, the velocity point data domain includes every face of the + ! thickness points. In other words, some arrays are larger than others, + ! depending on where they are on the staggered grid. Also, the starting index + ! of the velocity-point arrays is usually 0, not 1. This can only be set at + ! compile time. +NONBLOCKING_UPDATES = False ! [Boolean] default = False + ! If true, non-blocking halo updates may be used. +THIN_HALO_UPDATES = True ! [Boolean] default = True + ! If true, optional arguments may be used to specify the width of the halos that + ! are updated with each call. +!STATIC_MEMORY_ = False ! [Boolean] + ! If STATIC_MEMORY_ is defined, the principle variables will have sizes that are + ! statically determined at compile time. Otherwise the sizes are not determined + ! until run time. The STATIC option is substantially faster, but does not allow + ! the PE count to be changed at run time. This can only be set at compile time. +AUTO_MASKTABLE = False ! [Boolean] default = False + ! Turn on automatic mask table generation to eliminate land blocks. +MASKTABLE = "MOM_mask_table" ! default = "MOM_mask_table" + ! A text file to specify n_mask, layout and mask_list. This feature masks out + ! processors that contain only land points. The first line of mask_table is the + ! number of regions to be masked out. The second line is the layout of the model + ! and must be consistent with the actual model layout. The following (n_mask) + ! lines give the logical positions of the processors that are masked out. The + ! mask_table can be created by tools like check_mask. The following example of + ! mask_table masks out 2 processors, (1,2) and (3,6), out of the 24 in a 4x6 + ! layout: + ! 2 + ! 4,6 + ! 1,2 + ! 3,6 +NIPROC = 4 ! + ! The number of processors in the x-direction. With STATIC_MEMORY_ this is set + ! in SIS2_memory.h at compile time. +NJPROC = 2 ! + ! The number of processors in the y-direction. With STATIC_MEMORY_ this is set + ! in SIS2_memory.h at compile time. +LAYOUT = 4, 2 ! + ! The processor layout that was actually used. +IO_LAYOUT = 1, 1 ! default = 1, 1 + ! The processor layout to be used, or 0,0 to automatically set the io_layout to + ! be the same as the layout. +NIBLOCK = 1 ! default = 1 + ! The number of blocks in the x-direction on each processor (for openmp). +NJBLOCK = 1 ! default = 1 + ! The number of blocks in the y-direction on each processor (for openmp). diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_parameter_doc.short b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_parameter_doc.short new file mode 100644 index 0000000000..dda898e71b --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/SIS_parameter_doc.short @@ -0,0 +1,97 @@ +! This file was written by the model and records the non-default parameters used at run-time. + +! === module ice_model === +ADD_DIURNAL_SW = True ! [Boolean] default = False + ! If true, add a synthetic diurnal cycle to the shortwave radiation. + +! === module MOM_domains === +REENTRANT_X = False ! [Boolean] default = True + ! If true, the domain is zonally reentrant. +NIGLOBAL = 23 ! + ! The total number of thickness grid points in the x-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in SIS2_memory.h at compile time. +NJGLOBAL = 14 ! + ! The total number of thickness grid points in the y-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in SIS2_memory.h at compile time. +NIHALO = 2 ! default = 4 + ! The number of halo points on each side in the x-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. +NJHALO = 2 ! default = 4 + ! The number of halo points on each side in the y-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. + +! === module SIS_initialize_fixed === +INPUTDIR = "INPUT" ! default = "." + ! The directory in which input files are found. + +! === module MOM_grid_init === +GRID_CONFIG = "mosaic" ! + ! A character string that determines the method for defining the horizontal + ! grid. Current options are: + ! mosaic - read the grid from a mosaic (supergrid) + ! file set by GRID_FILE. + ! cartesian - use a (flat) Cartesian grid. + ! spherical - use a simple spherical grid. + ! mercator - use a Mercator spherical grid. +GRID_FILE = "ocean_hgrid.nc" ! + ! Name of the file from which to read horizontal grid data. +!MAXIMUM_DEPTH = 608.4598627866924 ! [m] + ! The (diagnosed) maximum depth of the ocean. + +! === module hor_grid === +! Parameters providing information about the lateral grid. + +! === module SIS2_ice_thm (thermo) === +! This sub-module calculates ice thermodynamic quantities. + +! === module SIS_tracer_registry === + +! === module SIS_tracer_flow_control === + +! === module SIS_slow_thermo === +! This module calculates the slow evolution of the ice mass, heat, and salt budgets. +ICE_BULK_SALINITY = 5.0 ! [g/kg] default = 4.0 + ! The fixed bulk salinity of sea ice. +FILLING_FRAZIL_TIMESCALE = 8.64E+04 ! [s] default = 0.0 + ! A timescale with which the filling frazil causes the thinest cells to attain + ! similar thicknesses, or a negative number to apply the frazil flux uniformly. + +! === module SIS2_ice_thm (updates) === +! This sub-module does updates of the sea-ice due to thermodynamic changes. + +! === module SIS_dyn_trans === +! This module updates the ice momentum and does ice transport. +DT_ICE_DYNAMICS = 3600.0 ! [seconds] default = -1.0 + ! The time step used for the slow ice dynamics, including stepping the + ! continuity equation and interactions between the ice mass field and + ! velocities. If 0 or negative the coupling time step will be used. +DT_RHEOLOGY = 100.0 ! [seconds] default = -1.0 + ! The sub-cycling time step for iterating the rheology and ice momentum + ! equations. If DT_RHEOLOGY is negative, the time step is set via NSTEPS_DYN. +ICE_TDAMP_ELASTIC = 0.0 ! [s or nondim] default = -0.2 + ! The damping timescale associated with the elastic terms in the sea-ice + ! dynamics equations (if positive) or the fraction of DT_ICE_DYNAMICS (if + ! negative). + +! === module SIS_tracer_advect === +SIS_TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "UPWIND_2D" + ! The horizontal transport scheme for tracers: + ! UPWIND_2D - Non-directionally split upwind + ! PCM - Directionally split piecewise constant + ! PLM - Piecewise Linear Method + ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) + +! === module SIS_sum_output === + +! === module SIS_ice_diagnostics === +! This module handles sea-ice state diagnostics. + +! === module SIS_fast_thermo === +! This module applies rapidly varying heat fluxes to the ice and does an implicit surface temperature +! calculation. + +! === module SIS2_ice_thm (updates) === +! This sub-module does updates of the sea-ice due to thermodynamic changes. + +! === module SIS_optics === +! This module calculates the albedo and absorption profiles for shortwave radiation. diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/analysis.ipynb b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/analysis.ipynb new file mode 100644 index 0000000000..8a14c162ee --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/analysis.ipynb @@ -0,0 +1,185 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 92, + "id": "29a54806-71c0-42df-a6d5-ff9a65976870", + "metadata": {}, + "outputs": [], + "source": [ + "import xarray as xr" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "id": "b560155a-e533-4baa-b0c2-fba092483e90", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xarray/coding/times.py:992: SerializationWarning: Unable to decode time axis into full numpy.datetime64 objects, continuing using cftime.datetime objects instead, reason: dates out of range\n", + " dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xarray/coding/times.py:992: SerializationWarning: Unable to decode time axis into full numpy.datetime64 objects, continuing using cftime.datetime objects instead, reason: dates out of range\n", + " dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xarray/coding/times.py:992: SerializationWarning: Unable to decode time axis into full numpy.datetime64 objects, continuing using cftime.datetime objects instead, reason: dates out of range\n", + " dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xarray/coding/times.py:992: SerializationWarning: Unable to decode time axis into full numpy.datetime64 objects, continuing using cftime.datetime objects instead, reason: dates out of range\n", + " dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xarray/coding/times.py:992: SerializationWarning: Unable to decode time axis into full numpy.datetime64 objects, continuing using cftime.datetime objects instead, reason: dates out of range\n", + " dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xarray/coding/times.py:992: SerializationWarning: Unable to decode time axis into full numpy.datetime64 objects, continuing using cftime.datetime objects instead, reason: dates out of range\n", + " dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xarray/coding/times.py:992: SerializationWarning: Unable to decode time axis into full numpy.datetime64 objects, continuing using cftime.datetime objects instead, reason: dates out of range\n", + " dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xarray/coding/times.py:992: SerializationWarning: Unable to decode time axis into full numpy.datetime64 objects, continuing using cftime.datetime objects instead, reason: dates out of range\n", + " dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xarray/coding/times.py:992: SerializationWarning: Unable to decode time axis into full numpy.datetime64 objects, continuing using cftime.datetime objects instead, reason: dates out of range\n", + " dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xarray/coding/times.py:992: SerializationWarning: Unable to decode time axis into full numpy.datetime64 objects, continuing using cftime.datetime objects instead, reason: dates out of range\n", + " dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xarray/coding/times.py:992: SerializationWarning: Unable to decode time axis into full numpy.datetime64 objects, continuing using cftime.datetime objects instead, reason: dates out of range\n", + " dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xarray/coding/times.py:992: SerializationWarning: Unable to decode time axis into full numpy.datetime64 objects, continuing using cftime.datetime objects instead, reason: dates out of range\n", + " dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xarray/coding/times.py:992: SerializationWarning: Unable to decode time axis into full numpy.datetime64 objects, continuing using cftime.datetime objects instead, reason: dates out of range\n", + " dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xarray/coding/times.py:992: SerializationWarning: Unable to decode time axis into full numpy.datetime64 objects, continuing using cftime.datetime objects instead, reason: dates out of range\n", + " dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xarray/coding/times.py:992: SerializationWarning: Unable to decode time axis into full numpy.datetime64 objects, continuing using cftime.datetime objects instead, reason: dates out of range\n", + " dtype = _decode_cf_datetime_dtype(data, units, calendar, self.use_cftime)\n" + ] + } + ], + "source": [ + "ds = xr.open_mfdataset(\"00010101.ocean_hourly_sclr_thck_*.nc\")\n", + "ds_natv = xr.merge([\n", + " xr.open_mfdataset(\"00010101.ocean_hourly_natv_thck_*.nc\"),\n", + " xr.open_mfdataset(\"00010101.ocean_hourly_natv_heat_*.nc\")\n", + "])\n", + "og = xr.open_dataset(\"00010101.ocean_static.nc\")" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "id": "367e6997-1bdf-4ded-949d-65cad643a5a7", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "zi = np.concatenate([[0], 0.5*(ds_natv.zl.values[1:] + ds_natv.zl.values[:-1]), [6000]])\n", + "ds_natv = ds_natv.assign_coords({\"zi\": xr.DataArray(zi, dims=(\"zi\",))})" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "id": "fd41831d-c144-40fd-bc18-5ece0d258fad", + "metadata": {}, + "outputs": [], + "source": [ + "from xgcm import Grid\n", + "# z-coordinate dataset containing basic state variables\n", + "coords = {\n", + " 'X': {'center': 'xh'},\n", + " 'Y': {'center': 'yh'},\n", + " 'Z': {'center': 'zl', 'outer': 'zi'},\n", + "}\n", + "boundary = {\"X\":\"extend\", \"Y\":\"extend\", \"Z\":\"extend\"}\n", + "grid = Grid(ds_natv, coords=coords, boundary=boundary, autoparse_metadata=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "id": "9ca25617-8b06-4c4a-a506-0cadd47f9a4c", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xgcm/transform.py:464: UserWarning: The `target data` input is not located on the cell bounds. This method will continue with linear interpolation with repeated boundary values. For most accurate results provide values on cell bounds.\n", + " warnings.warn(\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xgcm/grid_ufunc.py:836: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.\n", + " out_dim: grid._ds.dims[out_dim] for arg in out_core_dims for out_dim in arg\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xgcm/transform.py:245: FutureWarning: ``output_sizes`` should be given in the ``dask_gufunc_kwargs`` parameter. It will be removed as direct parameter in a future version.\n", + " out = xr.apply_ufunc(\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xgcm/transform.py:464: UserWarning: The `target data` input is not located on the cell bounds. This method will continue with linear interpolation with repeated boundary values. For most accurate results provide values on cell bounds.\n", + " warnings.warn(\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xgcm/grid_ufunc.py:836: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.\n", + " out_dim: grid._ds.dims[out_dim] for arg in out_core_dims for out_dim in arg\n", + "/Users/henrifdrake/anaconda3/envs/xwmb_stack/lib/python3.12/site-packages/xgcm/transform.py:245: FutureWarning: ``output_sizes`` should be given in the ``dask_gufunc_kwargs`` parameter. It will be removed as direct parameter in a future version.\n", + " out = xr.apply_ufunc(\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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IAiCIASQCMYEQRAEQRACSARjLcA777xDUlISJpOJ5ORkVq5cGeghtSgvvPACgwcPJiQkhNjYWK644gr27NkT6GG1eC+88AKSJPHggw8GeigtTlZWFjfffDNRUVFYLBYGDBjApk2bAj2sFsXpdPLEE0+QlJSE2WymU6dOPP3008iyHOihNXsrVqzg0ksvJTExEUmS+OGHH6rcrigK//73v0lMTMRsNjN69Gh27twZmMHWkQjGmrm5c+fy4IMP8vjjj5OamsqIESMYP348hw8fDvTQWozly5dz77338tdff7FkyRKcTidjx46lvLw80ENrsTZs2MD7779Pv379Aj2UFqewsJBzzz0XvV7Pr7/+yq5du/jvf//b7LaPaepeeukl3n33Xd566y3S0tJ4+eWXeeWVV/i///u/QA+t2SsvL6d///689dZbNd7+8ssvM2vWLN566y02bNhAfHw8F154oXfv6SZJEZq1IUOGKFOmTKlyrEePHsqjjz4aoBG1fLm5uQqgLF++PNBDaZFKS0uVrl27KkuWLFFGjRqlPPDAA4EeUovyyCOPKOedd16gh9HiXXzxxcodd9xR5dhVV12l3HzzzQEaUcsEKPPnz/d+LcuyEh8fr7z44oveY1arVQkLC1PefffdAIywbkRmrBmz2+1s2rSJsWPHVjk+duxY1qxZE6BRtXzFxcUAREZGBngkLdO9997LxRdfzAUXXBDoobRICxYsICUlhWuvvZbY2FgGDhzIBx98EOhhtTjnnXcef/zxB3v37gVg69atrFq1igkTJgR4ZC1bRkYGOTk5VV4XjUYjo0aNatKvi2Kj8GYsPz8fl8tFXFxcleNxcXHk5OQEaFQtm6IoTJ8+nfPOO48+ffoEejgtzjfffMPmzZvZsGFDoIfSYh04cIDZs2czffp0HnvsMdavX8/999+P0Whk0qRJgR5ei/HII49QXFxMjx490Gq1uFwunnvuOW644YZAD61F87z21fS6eOjQoUAMqU5EMNYCSJJU5WtFUaodE/xj6tSpbNu2jVWrVgV6KC1OZmYmDzzwAIsXL8ZkMgV6OC2WLMukpKTw/PPPAzBw4EB27tzJ7NmzRTDmR3PnzuWLL77gq6++onfv3mzZsoUHH3yQxMREbr311kAPr8Vrbq+LIhhrxqKjo9FqtdWyYLm5udXeFQi+u++++1iwYAErVqygbdu2gR5Oi7Np0yZyc3NJTk72HnO5XKxYsYK33noLm82GVqsN4AhbhoSEBHr16lXlWM+ePZk3b16ARtQyPfzwwzz66KNcf/31APTt25dDhw7xwgsviGCsAcXHxwNqhiwhIcF7vKm/LoqasWbMYDCQnJzMkiVLqhxfsmQJw4cPD9CoWh5FUZg6dSrff/89f/75J0lJSYEeUot0/vnns337drZs2eL9SElJ4aabbmLLli0iEPOTc889t1prlr1799KhQ4cAjahlqqioQKOp+hKr1WpFa4sGlpSURHx8fJXXRbvdzvLly5v066LIjDVz06dP55ZbbiElJYVhw4bx/vvvc/jwYaZMmRLoobUY9957L1999RU//vgjISEh3kxkWFgYZrM5wKNrOUJCQqrV4QUFBREVFSXq8/xo2rRpDB8+nOeff57rrruO9evX8/777/P+++8HemgtyqWXXspzzz1H+/bt6d27N6mpqcyaNYs77rgj0ENr9srKykhPT/d+nZGRwZYtW4iMjKR9+/Y8+OCDPP/883Tt2pWuXbvy/PPPY7FYuPHGGwM46jMI7GJOwR/efvttpUOHDorBYFAGDRokWi74GVDjxyeffBLoobV4orVFw/jpp5+UPn36KEajUenRo4fy/vvvB3pILU5JSYnywAMPKO3bt1dMJpPSqVMn5fHHH1dsNlugh9bsLV26tMbn5FtvvVVRFLW9xVNPPaXEx8crRqNRGTlypLJ9+/bADvoMJEVRlADFgYIgCIIgCK2eqBkTBEEQBEEIIBGMCYIgCIIgBJAIxgRBEARBEAJIBGOCIAiCIAgBJIIxQRAEQRCEABLBmCAIgiAIQgCJYEwQBEEQBCGARDAmCILQyDp27IgkSUiSRFFRkd+u67lmeHi4364pCELDE8GYIAiMHj2aBx98MNDDaBT//ve/GTBgQKCHwdNPP012djZhYWEA7N69mzFjxpCcnMzAgQNZsGBBlfPT09O5/fbbadu2LUajkaSkJG644QY2btzoPSc7O5vXX3+9Mb8NQRD8QARjgiC0CHa7vVEfT1EUnE5nve8fEhJCfHw8kiQBcPvtt3PPPfewadMmvv/+eyZPnkxhYSEAGzduJDk5mb179/Lee++xa9cu5s+fT48ePfjnP//pvWZ8fLw3uBMEofkQwZggtHK33XYby5cv54033vBOcx08eBCAXbt2MWHCBIKDg4mLi+OWW24hPz/fe9/Ro0dz33338eCDDxIREUFcXBzvv/8+5eXl3H777YSEhNC5c2d+/fVX732WLVuGJEn88ssv9O/fH5PJxNChQ9m+fXuVca1Zs4aRI0diNptp164d999/P+Xl5d7bO3bsyLPPPsttt91GWFgYkydPBuCRRx6hW7duWCwWOnXqxJNPPonD4QBgzpw5/Oc//2Hr1q3e73XOnDkcPHgQSZLYsmWL9/pFRUVIksSyZcuqjPu3334jJSUFo9HIypUrURSFl19+mU6dOmE2m+nfvz/ffffdWf87bNu2jUsuuQSApKQkOnToQHp6OoqicNttt9G1a1dWrlzJxRdfTOfOnRkwYABPPfUUP/7441k/liAITYsIxgShlXvjjTcYNmwYkydPJjs7m+zsbNq1a0d2djajRo1iwIABbNy4kUWLFnHs2DGuu+66Kvf/9NNPiY6OZv369dx333384x//4Nprr2X48OFs3ryZcePGccstt1BRUVHlfg8//DCvvvoqGzZsIDY2lssuu8wbNG3fvp1x48Zx1VVXsW3bNubOncuqVauYOnVqlWu88sor9OnTh02bNvHkk08CasZpzpw57Nq1izfeeIMPPviA1157DYCJEyfyz3/+k969e3u/14kTJ57Vz2vGjBm88MILpKWl0a9fP5544gk++eQTZs+ezc6dO5k2bRo333wzy5cvP6vr9u3bl4ULFwJw6NAhDh06RJcuXdiyZQs7d+7kn//8JxpN9adsUR8mCC1AQLcpFwShSRg1apTywAMPVDn25JNPKmPHjq1yLDMzUwGUPXv2eO933nnneW93Op1KUFCQcsstt3iPZWdnK4Cydu1aRVEUZenSpQqgfPPNN95zjh8/rpjNZmXu3LmKoijKLbfcotx1111VHnvlypWKRqNRKisrFUVRlA4dOihXXHHFGb+3l19+WUlOTvZ+/dRTTyn9+/evck5GRoYCKKmpqd5jhYWFCqAsXbq0yrh/+OEH7zllZWWKyWRS1qxZU+V6f//735Ubbrih1jF16NBBee2116oc27lzpzJy5Ehl0KBBSv/+/ZXvv/9eURRFmTt3rgIomzdvPuP3qiiK8sknnyhhYWF1OlcQhKZBF8A4UBCEJmzTpk0sXbqU4ODgarft37+fbt26AdCvXz/vca1WS1RUFH379vUei4uLAyA3N7fKNYYNG+b9PDIyku7du5OWluZ97PT0dL788kvvOYqiIMsyGRkZ9OzZE4CUlJRqY/vuu+94/fXXSU9Pp6ysDKfTSWho6Fl//7U5+TF37dqF1WrlwgsvrHKO3W5n4MCBZ3XdXr161ZhNUxQFwFtbJghCyyOCMUEQaiTLMpdeeikvvfRStdsSEhK8n+v1+iq3SZJU5ZgniJBl+YyPefK5d999N/fff3+1c9q3b+/9PCgoqMptf/31F9dffz3/+c9/GDduHGFhYXzzzTf897//Pe3jeqb/PIEP4J0yPdXJj+n5nn755RfatGlT5Tyj0XjaxzzV5MmTWblypfdrnU7Hjh07vEFvWlpak1gFKgiC/4lgTBAEDAYDLperyrFBgwYxb948OnbsiE7n/6eKv/76yxtYFRYWsnfvXnr06OF97J07d9KlS5ezuubq1avp0KEDjz/+uPfYoUOHqpxT0/caExMDqK0hPBmtk4v5a9OrVy+MRiOHDx9m1KhRZzXWU33wwQc1Hh8wYAC9evXiv//9LxMnTqxWN1ZUVCTqxgShmRMF/IIg0LFjR9atW8fBgwfJz89HlmXuvfdeCgoKuOGGG1i/fj0HDhxg8eLF3HHHHdWCmfp4+umn+eOPP9ixYwe33XYb0dHRXHHFFYC6InLt2rXce++9bNmyhX379rFgwQLuu+++016zS5cuHD58mG+++Yb9+/fz5ptvMn/+/Grfa0ZGBlu2bCE/Px+bzYbZbOacc87hxRdfZNeuXaxYsYInnnjijN9DSEgIDz30ENOmTePTTz9l//79pKam8vbbb/Ppp5/W+2dzMkmS+OSTT9i7dy8jR45k4cKFHDhwgG3btvHcc89x+eWX++VxBEEIHBGMCYLAQw89hFarpVevXsTExHD48GESExNZvXo1LpeLcePG0adPHx544AHCwsJqXNV3tl588UUeeOABkpOTyc7OZsGCBRgMBkCtQ1u+fDn79u1jxIgRDBw4kCeffLLK9GhNLr/8cqZNm8bUqVMZMGAAa9as8a6y9Lj66qu56KKLGDNmDDExMXz99dcAfPzxxzgcDlJSUnjggQd49tln6/R9PPPMM/zrX//ihRdeoGfPnowbN46ffvqJpKSkevxUajZkyBA2btxI586dmTx5Mj179uSyyy5j586dosmrILQAknJykYQgCEIDW7ZsGWPGjKGwsLDVTq917NiRBx98sEF2PZgzZw4PPvigX7dZEgShYYnMmCAIQgA88sgjBAcHU1xc7LdrBgcHM2XKFL9dTxCExiEK+AVBEBrZ8uXLvas1Q0JC/HZdz6IDrVbrt2sKgtDwxDSlIAiCIAhCAIlpSkEQBEEQhAASwZggCIIgCEIAiWBMEARBEAQhgEQwJgiCIAiCEEAiGBMEQRAEQQggEYwJgiAIgiAEkAjGBEEQBEEQAkgEY4IgCIIgCAEkgjFBEARBEIQA+n+c6g2+fot2cQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ds_off_lo = grid.transform(ds_natv.thkcello.fillna(0.).mean(\"time\"), \"Z\", ds.scalar_i.values, target_data=ds_natv.temp.mean(\"time\"), method=\"conservative\")\n", + "ds_off_hi = grid.transform(ds_natv.thkcello.fillna(0.), \"Z\", ds.scalar_i.values, target_data=ds_natv.temp, method=\"conservative\").mean(\"time\")\n", + "\n", + "import matplotlib.pyplot as plt\n", + "(ds.thkcello.mean(\"time\")*og.areacello).sum([\"xh\", \"yh\"]).plot(label=\"online histogramming (gmac)\")\n", + "(ds_off_hi*og.areacello).sum([\"xh\", \"yh\"]).plot(label=\"offline histogramming (xgcm) using timestep-averaged output\")\n", + "(ds_off_lo*og.areacello).sum([\"xh\", \"yh\"]).plot(label=\"offline histogramming (xgcm) using 5-day-averaged output\")\n", + "plt.xlim(-1, 10)\n", + "plt.title(\"Water volume distribution averaged over 5 days of Baltic simulation\")\n", + "plt.ylabel(r\"water volume [m$^3$ per 0.1ºC temperature bin]\")\n", + "plt.xlabel(\"temperature [ºC]\")\n", + "plt.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7bee1d44-a235-47c1-9d39-2bad46789f81", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/data_table b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/data_table new file mode 100644 index 0000000000..5fc61c3e4a --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/data_table @@ -0,0 +1,49 @@ +"ATM", "cfc_11_flux_pcair_atm","CFC_11","INPUT/cfc.bc.nc",.false., 1.0e-12 +"ATM", "cfc_12_flux_pcair_atm","CFC_12","INPUT/cfc.bc.nc",.false., 1.0e-12 +"ATM" , "p_surf" , "SLP" , "./INPUT/slp.clim.nc" , .false. , 1.0 +"ATM" , "p_bot" , "SLP" , "./INPUT/slp.clim.nc" , .false. , 1.0 +"ATM" , "t_bot" , "T_10_MOD" , "./INPUT/t_10_mod.clim.nc" , .false. , 1.0 +"ATM" , "sphum_bot" , "Q_10_MOD" , "./INPUT/q_10_mod.clim.nc" , .false. , 1.0 +"ATM" , "u_bot" , "U_10_MOD" , "./INPUT/u_10_mod.clim.nc" , .false. , 1.0 +"ATM" , "v_bot" , "V_10_MOD" , "./INPUT/v_10_mod.clim.nc" , .false. , 1.0 +"ATM" , "z_bot" , "" , "" , .false. , 10.0 +"ATM" , "gust" , "" , "" , .false. , 0.0 +"ICE" , "lw_flux_dn" , "LWDN_MOD" , "./INPUT/ncar_rad_clim.nc" , .false. , 1.0 +"ICE" , "sw_flux_vis_dir_dn", "SWDN_MOD", "./INPUT/ncar_rad_clim.nc", .false. , 0.285 +"ICE" , "sw_flux_vis_dif_dn", "SWDN_MOD", "./INPUT/ncar_rad_clim.nc", .false. , 0.285 +"ICE" , "sw_flux_nir_dir_dn", "SWDN_MOD", "./INPUT/ncar_rad_clim.nc", .false. , 0.215 +"ICE" , "sw_flux_nir_dif_dn", "SWDN_MOD", "./INPUT/ncar_rad_clim.nc", .false. , 0.215 +"ICE" , "lprec" , "RAIN" , "./INPUT/ncar_precip_clim.nc" , .false. , 0.9933 +"ICE" , "fprec" , "SNOW" , "./INPUT/ncar_precip_clim.nc" , .false. , 0.9933 +"ICE" , "runoff" , "runoff" , "./INPUT/runoff.nc" , .false. , 0.0 +"ICE" , "calving" , "" , "" , .true. , 0.0 +"ICE" , "dhdt" , "" , "" , .true. , 80.0 +"ICE" , "dedt" , "" , "" , .true. , 2.0e-6 +"ICE" , "drdt" , "" , "" , .true. , 10.0 +"ICE", "sic_obs" , "SIC" ,"./INPUT/sst_ice_clim.nc" , .false. , 0.00 +"ICE", "sit_obs" , "SIT" ,"./INPUT/sst_ice_clim.nc" , .false. , 0.00 +"ICE", "sst_obs" , "SST" ,"./INPUT/sst_ice_clim.nc" , .false. , 1.0 +"LND" , "t_surf" , "" , "" , .true. , 273.0 +"LND" , "t_ca" , "" , "" , .true. , 273.0 +"LND" , "q_ca" , "" , "" , .true. , 0.0 +"LND" , "rough_mom" , "" , "" , .true. , 0.01 +"LND" , "rough_heat" , "" , "" , .true. , 0.1 +"LND" , "albedo" , "" , "" , .true. , 0.1 +"LND" , "t_ca" , "" , "" , .true. , 273.0 +"LND" , "t_surf" , "" , "" , .true. , 273.0 +"LND" , "sphum_surf" , "" , "" , .true. , 0.0 +"LND" , "sphum_ca" , "" , "" , .true. , 0.0 +"LND" , "t_flux" , "" , "" , .true. , 0.0 +"LND" , "sphum_flux" , "" , "" , .true. , 0.0 +"LND" , "lw_flux" , "" , "" , .true. , 0.0 +"LND" , "sw_flux" , "" , "" , .true. , 0.0 +"LND" , "lprec" , "" , "" , .true. , 0.0 +"LND" , "fprec" , "" , "" , .true. , 0.0 +"LND" , "dhdt" , "" , "" , .true. , 5.0 +"LND" , "dedt" , "" , "" , .true. , 2e-6 +"LND" , "dedq" , "" , "" , .true. , 0.0 +"LND" , "drdt" , "" , "" , .true. , 5.0 +"LND" , "drag_q" , "" , "" , .true. , 0.0 +"LND" , "p_surf" , "" , "" , .true. , 1.e5 + + diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/diag_table b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/diag_table new file mode 100644 index 0000000000..2ea0177d9d --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/diag_table @@ -0,0 +1,420 @@ +GOLD_SIS +1 1 1 0 0 0 + +#==================================================================================================== +# MOM6 +#==================================================================================================== +# MOM6 ocean diagnostics files + +# hourly +"ocean_hourly_natv_surf%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" +"ocean_hourly_natv_xtra%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" +"ocean_hourly_natv_thck%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" +"ocean_hourly_natv_heat%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" +"ocean_hourly_natv_salt%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" +"ocean_hourly_natv_snap%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" + +"ocean_hourly_zstr_surf%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" +"ocean_hourly_zstr_xtra%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" +"ocean_hourly_zstr_thck%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" +"ocean_hourly_zstr_heat%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" +"ocean_hourly_zstr_salt%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" +"ocean_hourly_zstr_snap%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" + +"ocean_hourly_sclr_surf%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" +"ocean_hourly_sclr_xtra%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" +"ocean_hourly_sclr_thck%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" +"ocean_hourly_sclr_heat%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" +"ocean_hourly_sclr_salt%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" +"ocean_hourly_sclr_snap%4yr_%2mo_%2dy", 1, "hours", 1, "minutes", "time", 1, "days" + +"ocean_static", -1, "hours", 1, "days", "time" # ocean_static is a protected name. Do not change this line. + +# --------------------------- # +# Static grid variables # +# --------------------------- # +"ocean_model", "areacello", "areacello", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolon", "geolon", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolat", "geolat", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolon_c", "geolon_c", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolat_c", "geolat_c", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolon_u", "geolon_u", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolat_u", "geolat_u", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolon_v", "geolon_v", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolat_v", "geolat_v", "ocean_static", "all", "none", "none", 2 +"ocean_model", "area_t", "area_t", "ocean_static", "all", "none", "none", 2 +"ocean_model", "area_u", "area_u", "ocean_static", "all", "none", "none", 2 +"ocean_model", "area_v", "area_v", "ocean_static", "all", "none", "none", 2 +"ocean_model", "area_q", "area_q", "ocean_static", "all", "none", "none", 2 +"ocean_model", "depth_ocean", "depth_ocean", "ocean_static", "all", "none", "none", 2 +"ocean_model", "wet", "wet", "ocean_static", "all", "none", "none", 2 +"ocean_model", "wet_c", "wet_c", "ocean_static", "all", "none", "none", 2 +"ocean_model", "wet_u", "wet_u", "ocean_static", "all", "none", "none", 2 +"ocean_model", "wet_v", "wet_v", "ocean_static", "all", "none", "none", 2 +"ocean_model", "Coriolis", "Coriolis", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dxt", "dxt", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dyt", "dyt", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dxCu", "dxCu", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dyCu", "dyCu", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dxCv", "dxCv", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dyCv", "dyCv", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dxCvo", "dxCvo", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dyCuo", "dyCuo", "ocean_static", "all", "none", "none", 2 + +##################################################### +# TIMESTEP # +# +############## +### NATIVE ### +# ------------------------------------------------- # +# Heat + budget terms [get from Andrew Shao github] # +# ------------------------------------------------- # + +# MEAN +"ocean_model", "temp", "temp" "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +"ocean_model", "opottemptend", "opottemptend", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "opottempdiff", "opottempdiff", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "opottemppmdiff", "opottemppmdiff", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "boundary_forcing_heat_tendency","boundary_forcing_heat_tendency", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "frazil_heat_tendency", "frazil_heat_tendency", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "T_advection_xy", "T_advection_xy", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "Th_tendency_vert_remap", "Th_tendency_vert_remap", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "internal_heat_heat_tendency", "internal_heat_heat_tendency", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# SNAP +"ocean_model", "temp", "temp" "ocean_hourly_natv_snap%4yr_%2mo_%2dy", "all", "none", "none", 2 + +# ------------------- # +# Salt + budget terms # +# ------------------- # + +"ocean_model", "salt", "salt", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +"ocean_model", "osalttend", "osalttend", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "osaltdiff", "osaltdiff", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "osaltpmdiff", "osaltpmdiff", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "boundary_forcing_salt_tendency","boundary_forcing_salt_tendency", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "S_advection_xy", "S_advection_xy", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "Sh_tendency_vert_remap", "Sh_tendency_vert_remap", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# SNAP +"ocean_model", "salt", "salt" "ocean_hourly_natv_snap%4yr_%2mo_%2dy", "all", "none", "none", 2 + +# ------------------- # +# Thickness + budget terms # +# ------------------- # + +# MEAN +"ocean_model", "thkcello", "thkcello", "ocean_hourly_natv_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +"ocean_model", "dhdt", "dhdt", "ocean_hourly_natv_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "dynamics_h_tendency", "dynamics_h_tendency", "ocean_hourly_natv_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "vert_remap_h_tendency", "vert_remap_h_tendency", "ocean_hourly_natv_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "boundary_forcing_h_tendency", "boundary_forcing_h_tendency", "ocean_hourly_natv_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "internal_heat_h_tendency", "internal_heat_h_tendency", "ocean_hourly_natv_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# SNAP +"ocean_model", "thkcello", "thkcello" "ocean_hourly_natv_snap%4yr_%2mo_%2dy", "all", "none", "none", 2 +#"ocean_model", "e", "e" "ocean_hourly_natv_snap%4yr_%2mo_%2dy", "all", "none", "none", 2 + +# ----------------------------------------- # +# Other terms necessary for WMT calculation # +# ----------------------------------------- # + +# MEAN +"ocean_model", "rhoinsitu", "rhoinsitu", "ocean_hourly_natv_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "rhopot0", "rhopot0", "ocean_hourly_natv_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "rhopot2", "rhopot2", "ocean_hourly_natv_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "drho_dT", "drho_dT", "ocean_hourly_natv_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "drho_dS", "drho_dS", "ocean_hourly_natv_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +#"ocean_model", "umo", "umo", "ocean_hourly_natv_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +#"ocean_model", "vmo", "vmo", "ocean_hourly_natv_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +#"ocean_model", "e", "e", "ocean_hourly_natv_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# SNAP +"ocean_model", "rhopot2", "rhopot2" "ocean_hourly_natv_snap%4yr_%2mo_%2dy", "all", "none", "none", 2 + +# ----------------------------------------- # +# Surface fluxes # +# ----------------------------------------- # +# Surface scalars +"ocean_model", "tos", "tos", "ocean_hourly_natv_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "sos", "sos", "ocean_hourly_natv_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Mass +"ocean_model", "net_massin", "net_massin", "ocean_hourly_natv_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "net_massout", "net_massout", "ocean_hourly_natv_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "wfo", "wfo", "ocean_hourly_natv_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Salt +"ocean_model", "sfdsi", "sfdsi", "ocean_hourly_natv_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "salt_flux_added", "salt_flux_added", "ocean_hourly_natv_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Heat +"ocean_model", "hfds", "hfds", "ocean_hourly_natv_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# ----------------------------------------- # +# Lateral fluxes # +# ----------------------------------------- # +# Advective and diffusive fluxes +# Heat +# "ocean_model", "T_adx", "T_adx", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model", "T_ady", "T_ady", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model", "T_diffx", "T_diffx", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model", "T_diffy", "T_diffy", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Salt +# "ocean_model", "S_adx", "S_adx", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model", "S_ady", "S_ady", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model", "S_diffx", "S_diffx", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model", "S_diffy", "S_diffy", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# Depth-integrated advective and diffusive fluxes +# Heat +"ocean_model", "T_adx_2d", "T_adx_2d", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "T_ady_2d", "T_ady_2d", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "T_diffx_2d", "T_diffx_2d", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "T_diffy_2d", "T_diffy_2d", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Salt +"ocean_model", "S_adx_2d", "S_adx_2d", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "S_ady_2d", "S_ady_2d", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "S_diffx_2d", "S_diffx_2d", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "S_diffy_2d", "S_diffy_2d", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Depth-integrated tendencies due to advection and isoneutral diffusion +"ocean_model", "T_advection_xy_2d", "T_advection_xy_2d", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "opottemppmdiff_2d", "opottemppmdiff_2d", "ocean_hourly_natv_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "S_advection_xy_2d", "S_advection_xy_2d", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model", "osaltpmdiff_2d", "osaltpmdiff_2d", "ocean_hourly_natv_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +############ +#### Z* #### +# ------------------------------------------------- # +# Heat + budget terms [get from Andrew Shao github] # +# ------------------------------------------------- # + +# MEAN +"ocean_model_z", "temp", "temp" "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +"ocean_model_z", "opottemptend", "opottemptend", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "opottempdiff", "opottempdiff", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "opottemppmdiff", "opottemppmdiff", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "boundary_forcing_heat_tendency","boundary_forcing_heat_tendency", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "frazil_heat_tendency", "frazil_heat_tendency", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "T_advection_xy", "T_advection_xy", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "Th_tendency_vert_remap", "Th_tendency_vert_remap", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "internal_heat_heat_tendency", "internal_heat_heat_tendency", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# SNAP +"ocean_model_z", "temp", "temp" "ocean_hourly_zstr_snap%4yr_%2mo_%2dy", "all", "none", "none", 2 + +# ------------------- # +# Salt + budget terms # +# ------------------- # + +"ocean_model_z", "salt", "salt", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +"ocean_model_z", "osalttend", "osalttend", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "osaltdiff", "osaltdiff", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "osaltpmdiff", "osaltpmdiff", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "boundary_forcing_salt_tendency","boundary_forcing_salt_tendency", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "S_advection_xy", "S_advection_xy", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "Sh_tendency_vert_remap", "Sh_tendency_vert_remap", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# SNAP +"ocean_model_z", "salt", "salt" "ocean_hourly_zstr_snap%4yr_%2mo_%2dy", "all", "none", "none", 2 + +# ------------------------ # +# Thickness + budget terms # +# ------------------------ # + +# MEAN +"ocean_model_z", "thkcello", "thkcello", "ocean_hourly_zstr_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +"ocean_model_z", "dhdt", "dhdt", "ocean_hourly_zstr_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "dynamics_h_tendency", "dynamics_h_tendency", "ocean_hourly_zstr_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "vert_remap_h_tendency", "vert_remap_h_tendency", "ocean_hourly_zstr_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "boundary_forcing_h_tendency", "boundary_forcing_h_tendency", "ocean_hourly_zstr_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "internal_heat_h_tendency", "internal_heat_h_tendency", "ocean_hourly_zstr_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# SNAP +"ocean_model_z", "thkcello", "thkcello" "ocean_hourly_zstr_snap%4yr_%2mo_%2dy", "all", "none", "none", 2 +#"ocean_model_z", "e", "e" "ocean_hourly_zstr_snap%4yr_%2mo_%2dy", "all", "none", "none", 2 + +# ----------------------------------------- # +# Other terms necessary for WMT calculation # +# ----------------------------------------- # + +# MEAN +"ocean_model_z", "rhoinsitu", "rhoinsitu", "ocean_hourly_zstr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "rhopot0", "rhopot0", "ocean_hourly_zstr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "rhopot2", "rhopot2", "ocean_hourly_zstr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "drho_dT", "drho_dT", "ocean_hourly_zstr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "drho_dS", "drho_dS", "ocean_hourly_zstr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +#"ocean_model_z", "umo", "umo", "ocean_hourly_zstr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +#"ocean_model_z", "vmo", "vmo", "ocean_hourly_zstr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +#"ocean_model_z", "e", "e", "ocean_hourly_zstr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# SNAP +"ocean_model_z", "rhopot2", "rhopot2" "ocean_hourly_zstr_snap%4yr_%2mo_%2dy", "all", "none", "none", 2 + +# ----------------------------------------- # +# Surface fluxes # +# ----------------------------------------- # +# Surface scalars +"ocean_model_z", "tos", "tos", "ocean_hourly_zstr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "sos", "sos", "ocean_hourly_zstr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Mass +"ocean_model_z", "net_massin", "net_massin", "ocean_hourly_zstr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "net_massout", "net_massout", "ocean_hourly_zstr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "wfo", "wfo", "ocean_hourly_zstr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Salt +"ocean_model_z", "sfdsi", "sfdsi", "ocean_hourly_zstr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "salt_flux_added", "salt_flux_added", "ocean_hourly_zstr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Heat +"ocean_model_z", "hfds", "hfds", "ocean_hourly_zstr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# ----------------------------------------- # +# Lateral fluxes # +# ----------------------------------------- # +# Advective and diffusive fluxes +# # Heat +# "ocean_model_z", "T_adx", "T_adx", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model_z", "T_ady", "T_ady", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model_z", "T_diffx", "T_diffx", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model_z", "T_diffy", "T_diffy", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# # Salt +# "ocean_model_z", "S_adx", "S_adx", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model_z", "S_ady", "S_ady", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model_z", "S_diffx", "S_diffx", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model_z", "S_diffy", "S_diffy", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Depth-integzd advective and diffusive fluxes +# Heat +"ocean_model_z", "T_adx_2d", "T_adx_2d", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "T_ady_2d", "T_ady_2d", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "T_diffx_2d", "T_diffx_2d", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "T_diffy_2d", "T_diffy_2d", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Salt +"ocean_model_z", "S_adx_2d", "S_adx_2d", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "S_ady_2d", "S_ady_2d", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "S_diffx_2d", "S_diffx_2d", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "S_diffy_2d", "S_diffy_2d", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Depth-integzd tendencies due to advection and isoneutral diffusion +"ocean_model_z", "T_advection_xy_2d", "T_advection_xy_2d", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "opottemppmdiff_2d", "opottemppmdiff_2d", "ocean_hourly_zstr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "S_advection_xy_2d", "S_advection_xy_2d", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_z", "osaltpmdiff_2d", "osaltpmdiff_2d", "ocean_hourly_zstr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +###################################### +### SCALAR (Potential Temperature) ### +# ------------------------------------------------- # +# Heat + budget terms [get from Andrew Shao github] # +# ------------------------------------------------- # + +# MEAN +"ocean_model_scalar", "temp", "temp" "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +"ocean_model_scalar", "opottemptend", "opottemptend", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "opottempdiff", "opottempdiff", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "opottemppmdiff", "opottemppmdiff", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "boundary_forcing_heat_tendency","boundary_forcing_heat_tendency", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "frazil_heat_tendency", "frazil_heat_tendency", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "T_advection_xy", "T_advection_xy", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "Th_tendency_vert_remap", "Th_tendency_vert_remap", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "internal_heat_heat_tendency", "internal_heat_heat_tendency", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# SNAP +"ocean_model_scalar", "temp", "temp" "ocean_hourly_sclr_snap%4yr_%2mo_%2dy", "all", "none", "none", 2 + +# ------------------- # +# Salt + budget terms # +# ------------------- # + +"ocean_model_scalar", "salt", "salt", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +"ocean_model_scalar", "osalttend", "osalttend", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "osaltdiff", "osaltdiff", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "osaltpmdiff", "osaltpmdiff", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "boundary_forcing_salt_tendency","boundary_forcing_salt_tendency", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "S_advection_xy", "S_advection_xy", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "Sh_tendency_vert_remap", "Sh_tendency_vert_remap", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# SNAP +"ocean_model_scalar", "salt", "salt" "ocean_hourly_sclr_snap%4yr_%2mo_%2dy", "all", "none", "none", 2 + +# ------------------- # +# Thickness + budget terms # +# ------------------- # + +# MEAN +"ocean_model_scalar", "thkcello", "thkcello", "ocean_hourly_sclr_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +"ocean_model_scalar", "dhdt", "dhdt", "ocean_hourly_sclr_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "dynamics_h_tendency", "dynamics_h_tendency", "ocean_hourly_sclr_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "vert_remap_h_tendency", "vert_remap_h_tendency", "ocean_hourly_sclr_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "boundary_forcing_h_tendency", "boundary_forcing_h_tendency", "ocean_hourly_sclr_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "internal_heat_h_tendency", "internal_heat_h_tendency", "ocean_hourly_sclr_thck%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# SNAP +"ocean_model_scalar", "thkcello", "thkcello" "ocean_hourly_sclr_snap%4yr_%2mo_%2dy", "all", "none", "none", 2 +#"ocean_model_scalar", "e", "e" "ocean_hourly_sclr_snap%4yr_%2mo_%2dy", "all", "none", "none", 2 + +# ----------------------------------------- # +# Other terms necessary for WMT calculation # +# ----------------------------------------- # + +# MEAN +"ocean_model_scalar", "rhoinsitu", "rhoinsitu", "ocean_hourly_sclr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "rhopot0", "rhopot0", "ocean_hourly_sclr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "rhopot2", "rhopot2", "ocean_hourly_sclr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "drho_dT", "drho_dT", "ocean_hourly_sclr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "drho_dS", "drho_dS", "ocean_hourly_sclr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model_scalar", "umo", "umo", "ocean_hourly_sclr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model_scalar", "vmo", "vmo", "ocean_hourly_sclr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model_scalar", "e", "e", "ocean_hourly_sclr_xtra%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# SNAP +"ocean_model_scalar", "rhopot2", "rhopot2" "ocean_hourly_sclr_snap%4yr_%2mo_%2dy", "all", "none", "none", 2 + +# ----------------------------------------- # +# Surface fluxes # +# ----------------------------------------- # +# Surface scalars +"ocean_model_scalar", "tos", "tos", "ocean_hourly_sclr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "sos", "sos", "ocean_hourly_sclr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Mass +"ocean_model_scalar", "net_massin", "net_massin", "ocean_hourly_sclr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "net_massout", "net_massout", "ocean_hourly_sclr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "wfo", "wfo", "ocean_hourly_sclr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Salt +"ocean_model_scalar", "sfdsi", "sfdsi", "ocean_hourly_sclr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "salt_flux_added", "salt_flux_added", "ocean_hourly_sclr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Heat +"ocean_model_scalar", "hfds", "hfds", "ocean_hourly_sclr_surf%4yr_%2mo_%2dy", "all", "mean", "none", 2 + +# ----------------------------------------- # +# Lateral fluxes # +# ----------------------------------------- # +# Advective and diffusive fluxes +# # Heat +# "ocean_model_scalar", "T_adx", "T_adx", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model_scalar", "T_ady", "T_ady", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model_scalar", "T_diffx", "T_diffx", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model_scalar", "T_diffy", "T_diffy", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# # Salt +# "ocean_model_scalar", "S_adx", "S_adx", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model_scalar", "S_ady", "S_ady", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model_scalar", "S_diffx", "S_diffx", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# "ocean_model_scalar", "S_diffy", "S_diffy", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Depth-integrated advective and diffusive fluxes +# Heat +"ocean_model_scalar", "T_adx_2d", "T_adx_2d", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "T_ady_2d", "T_ady_2d", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "T_diffx_2d", "T_diffx_2d", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "T_diffy_2d", "T_diffy_2d", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Salt +"ocean_model_scalar", "S_adx_2d", "S_adx_2d", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "S_ady_2d", "S_ady_2d", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "S_diffx_2d", "S_diffx_2d", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "S_diffy_2d", "S_diffy_2d", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +# Depth-integrated tendencies due to advection and isoneutral diffusion +"ocean_model_scalar", "T_advection_xy_2d", "T_advection_xy_2d", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "opottemppmdiff_2d", "opottemppmdiff_2d", "ocean_hourly_sclr_heat%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "S_advection_xy_2d", "S_advection_xy_2d", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 +"ocean_model_scalar", "osaltpmdiff_2d", "osaltpmdiff_2d", "ocean_hourly_sclr_salt%4yr_%2mo_%2dy", "all", "mean", "none", 2 diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/diag_table.original b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/diag_table.original new file mode 100644 index 0000000000..9a642599c5 --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/diag_table.original @@ -0,0 +1,71 @@ +GOLD_SIS +1 1 1 0 0 0 +#output files + +"off_snap_1day", 1, "days", 1, "days", "time" +"off_sum_1day", 1, "days", 1, "days", "time" +"off_snap_2day", 2, "days", 1, "days", "time" +"off_sum_2day", 2, "days", 1, "days", "time" +"off_snap_5day", 5, "days", 1, "days", "time" +"off_sum_5day", 5, "days", 1, "days", "time" +"off_snap_10day", 10, "days", 1, "days", "time" +"off_sum_10day", 10, "days", 1, "days", "time" + +# One day resolution +"ocean_model","ea","ea_sum","off_sum_1day","all",sum,"none",1 +"ocean_model","eb","eb_sum","off_sum_1day","all",sum,"none",1 +"ocean_model","uhtr","uhtr","off_sum_1day","all",sum,"none",1 +"ocean_model","vhtr","vhtr","off_sum_1day","all",sum,"none",1 +"ocean_model","KHDT_x","khdt_x","off_sum_1day","all",sum,"none",1 +"ocean_model","KHDT_y","khdt_y","off_sum_1day","all",sum,"none",1 +"ocean_model","massout_flux","massout_flux","off_sum_1day","all",sum,"none",1 +"ocean_model","massin_flux","massin_flux","off_sum_1day","all",sum,"none",1 + +"ocean_model","h","h_end","off_snap_1day","all",.false.,"none",1 +"ocean_model","temp","temp","off_snap_1day","all",.false.,"none",1 +"ocean_model","salt","salt","off_snap_1day","all",.false.,"none",1 + +# Two day resolution +"ocean_model","ea","ea_sum","off_sum_2day","all",sum,"none",1 +"ocean_model","eb","eb_sum","off_sum_2day","all",sum,"none",1 +"ocean_model","uhtr","uhtr","off_sum_2day","all",sum,"none",1 +"ocean_model","vhtr","vhtr","off_sum_2day","all",sum,"none",1 +"ocean_model","KHDT_x","khdt_x","off_sum_2day","all",sum,"none",1 +"ocean_model","KHDT_y","khdt_y","off_sum_2day","all",sum,"none",1 +"ocean_model","massout_flux","massout_flux","off_sum_2day","all",sum,"none",1 +"ocean_model","massin_flux","massin_flux","off_sum_2day","all",sum,"none",1 + + +"ocean_model","h","h_end","off_snap_2day","all",.false.,"none",1 +"ocean_model","temp","temp","off_snap_2day","all",.false.,"none",1 +"ocean_model","salt","salt","off_snap_2day","all",.false.,"none",1 + +# 5 Day resolution +"ocean_model","ea","ea_sum","off_sum_5day","all",sum,"none",1 +"ocean_model","eb","eb_sum","off_sum_5day","all",sum,"none",1 +"ocean_model","uhtr","uhtr","off_sum_5day","all",sum,"none",1 +"ocean_model","vhtr","vhtr","off_sum_5day","all",sum,"none",1 +"ocean_model","KHDT_x","khdt_x","off_sum_5day","all",sum,"none",1 +"ocean_model","KHDT_y","khdt_y","off_sum_5day","all",sum,"none",1 +"ocean_model","massout_flux","massout_flux","off_sum_5day","all",sum,"none",1 +"ocean_model","massin_flux","massin_flux","off_sum_5day","all",sum,"none",1 + + +"ocean_model","h","h_end","off_snap_5day","all",.false.,"none",1 +"ocean_model","temp","temp","off_snap_5day","all",.false.,"none",1 +"ocean_model","salt","salt","off_snap_5day","all",.false.,"none",1 + +# 10 day resolution +"ocean_model","ea","ea_sum","off_sum_10day","all",sum,"none",1 +"ocean_model","eb","eb_sum","off_sum_10day","all",sum,"none",1 +"ocean_model","uhtr","uhtr","off_sum_10day","all",sum,"none",1 +"ocean_model","vhtr","vhtr","off_sum_10day","all",sum,"none",1 +"ocean_model","KHDT_x","khdt_x","off_sum_10day","all",sum,"none",1 +"ocean_model","KHDT_y","khdt_y","off_sum_10day","all",sum,"none",1 +"ocean_model","massout_flux","massout_flux","off_sum_10day","all",sum,"none",1 +"ocean_model","massin_flux","massin_flux","off_sum_10day","all",sum,"none",1 + + +"ocean_model","h","h_end","off_snap_10day","all",.false.,"none",1 +"ocean_model","temp","temp","off_snap_10day","all",.false.,"none",1 +"ocean_model","salt","salt","off_snap_10day","all",.false.,"none",1 diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/diag_table_offline b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/diag_table_offline new file mode 100644 index 0000000000..0cb3ac6801 --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/diag_table_offline @@ -0,0 +1,12 @@ +GOLD_SIS +1 1 1 0 0 0 +#output files +# +"off_snap", 1, "days", 1, "days", "time" + +"ocean_model","uhr","uhr","off_snap","all",.false.,"none",1 +"ocean_model","vhr","vhr","off_snap","all",.false.,"none",1 +"ocean_model","eta_diff","eta_diff","off_snap","all",.false.,"none",1 +"ocean_model","tr1","tr1","off_snap","all",.false.,"none",1 +"ocean_model","age","age","off_snap","all",.false.,"none",1 + diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/diag_table_online b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/diag_table_online new file mode 100644 index 0000000000..b1318ed384 --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/diag_table_online @@ -0,0 +1,25 @@ +GOLD_SIS +1 1 1 0 0 0 +#output files + +"off_snap_1day", 1, "days", 1, "days", "time" +"off_sum_1day", 1, "days", 1, "days", "time" +"off_avg_1day", 1, "days", 1, "days", "time" + +# One day resolution +"ocean_model","ea","ea_sum","off_sum_1day","all",sum,"none",1 +"ocean_model","eb","eb_sum","off_sum_1day","all",sum,"none",1 +"ocean_model","uhtr","uhtr","off_sum_1day","all",sum,"none",1 +"ocean_model","vhtr","vhtr","off_sum_1day","all",sum,"none",1 +"ocean_model","KHDT_x","khdt_x","off_sum_1day","all",sum,"none",1 +"ocean_model","KHDT_y","khdt_y","off_sum_1day","all",sum,"none",1 +"ocean_model","massout_flux","massout_flux","off_sum_1day","all",sum,"none",1 +"ocean_model","massin_flux","massin_flux","off_sum_1day","all",sum,"none",1 + +"ocean_model","h","h_end","off_snap_1day","all",.false.,"none",1 +"ocean_model","temp","temp","off_snap_1day","all",.false.,"none",1 +"ocean_model","salt","salt","off_snap_1day","all",.false.,"none",1 + +"ocean_model","salt","salt","off_avg_1day","all",.true.,"none",1 +"ocean_model","temp","temp","off_avg_1day","all",.true.,"none",1 +"ocean_model","Kd_interface","Kd_interface","off_avg_1day","all",.true.,"none",1 diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/field_table b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/field_table new file mode 100644 index 0000000000..dbd7e2e1c6 --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/field_table @@ -0,0 +1,23 @@ + "TRACER", "atmos_mod", "sphum" + "longname", "specific humidity" + "units", "kg/kg" / + +# prognotic cloud scheme tracers + "TRACER", "atmos_mod", "liq_wat" + "longname", "cloud liquid specific humidity" + "units", "kg/kg" / + "TRACER", "atmos_mod", "ice_wat" + "longname", "cloud ice water specific humidity" + "units", "kg/kg" / + "TRACER", "atmos_mod", "cld_amt" + "longname", "cloud fraction" + "units", "none" / + +# test tracer for radon + +# "TRACER", "atmos_mod", "radon" +# "longname", "radon test tracer" +# "units", "kg/kg" / + + "TRACER", "land_mod", "sphum"/ + diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/input.nml b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/input.nml new file mode 100644 index 0000000000..73b5450d5b --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/input.nml @@ -0,0 +1,75 @@ + &MOM_input_nml + output_directory = './', + input_filename = 'n' + restart_input_dir = 'INPUT/', + restart_output_dir = 'RESTART/', + parameter_filename = 'MOM_input', + 'MOM_override' / + + &SIS_input_nml + output_directory = './', + input_filename = 'n' + restart_input_dir = 'INPUT/', + restart_output_dir = 'RESTART/', + parameter_filename = 'SIS_input', + 'SIS_override' / + + &diag_manager_nml + max_output_fields=1000 + max_input_fields=1000 + max_num_axis_sets=1000 + max_files=1000 + max_axes=2000 + / + + &coupler_nml + months = 0, + days = 5, + current_date = 1,1,1,0,0,0, + hours = 0 + minutes = 0 + seconds = 0 + calendar = 'NOLEAP', + dt_cpld = 3600, + dt_atmos = 3600, + do_atmos = .false., + do_land = .false., + do_ice = .true., + do_ocean = .true., + atmos_npes = 0, + ocean_npes = 0, + concurrent = .false. + use_lag_fluxes=.true. / + + &data_override_nml + / + + &fms_io_nml + fms_netcdf_restart=.true. + threading_read='multi' + / + + &fms_nml + clock_grain='MODULE' + domains_stack_size = 2000000 + clock_flags='SYNC' / + + &ice_albedo_nml + t_range = 10. / + + &ice_model_nml + / + + &monin_obukhov_nml + neutral = .true. / + + &ocean_albedo_nml + ocean_albedo_option = 5 / + + &sat_vapor_pres_nml + construct_table_wrt_liq = .true., + construct_table_wrt_liq_and_ice = .true. / + + &xgrid_nml + make_exchange_reproduce = .false. + interp_method = 'second_order' / diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/input.offline.nml b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/input.offline.nml new file mode 100644 index 0000000000..79454d8b77 --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/input.offline.nml @@ -0,0 +1,38 @@ + &MOM_input_nml + output_directory = './', + input_filename = 'n' + restart_input_dir = 'INPUT/', + restart_output_dir = 'RESTART/', + parameter_filename = 'MOM_input', + 'MOM_override' / + + &diag_manager_nml + max_output_fields=1000 + max_input_fields=1000 + max_num_axis_sets=1000 + max_files=1000 + max_axes=2000 + / + + + &data_override_nml + / + + &fms_io_nml + fms_netcdf_restart=.true. + threading_read='multi' + / + + &fms_nml + clock_grain='MODULE' + domains_stack_size = 2000000 + clock_flags='SYNC' / + + &ocean_solo_nml + months = 0 + days = 5 + date_init = 1,1,1,0,0,0 + hours = 0 + minutes = 0 + seconds = 0 + calendar = 'julian' / diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/input.online.nml b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/input.online.nml new file mode 100644 index 0000000000..73b5450d5b --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/input.online.nml @@ -0,0 +1,75 @@ + &MOM_input_nml + output_directory = './', + input_filename = 'n' + restart_input_dir = 'INPUT/', + restart_output_dir = 'RESTART/', + parameter_filename = 'MOM_input', + 'MOM_override' / + + &SIS_input_nml + output_directory = './', + input_filename = 'n' + restart_input_dir = 'INPUT/', + restart_output_dir = 'RESTART/', + parameter_filename = 'SIS_input', + 'SIS_override' / + + &diag_manager_nml + max_output_fields=1000 + max_input_fields=1000 + max_num_axis_sets=1000 + max_files=1000 + max_axes=2000 + / + + &coupler_nml + months = 0, + days = 5, + current_date = 1,1,1,0,0,0, + hours = 0 + minutes = 0 + seconds = 0 + calendar = 'NOLEAP', + dt_cpld = 3600, + dt_atmos = 3600, + do_atmos = .false., + do_land = .false., + do_ice = .true., + do_ocean = .true., + atmos_npes = 0, + ocean_npes = 0, + concurrent = .false. + use_lag_fluxes=.true. / + + &data_override_nml + / + + &fms_io_nml + fms_netcdf_restart=.true. + threading_read='multi' + / + + &fms_nml + clock_grain='MODULE' + domains_stack_size = 2000000 + clock_flags='SYNC' / + + &ice_albedo_nml + t_range = 10. / + + &ice_model_nml + / + + &monin_obukhov_nml + neutral = .true. / + + &ocean_albedo_nml + ocean_albedo_option = 5 / + + &sat_vapor_pres_nml + construct_table_wrt_liq = .true., + construct_table_wrt_liq_and_ice = .true. / + + &xgrid_nml + make_exchange_reproduce = .false. + interp_method = 'second_order' / diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/run_offline.sh b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/run_offline.sh new file mode 100644 index 0000000000..2d237f7e9d --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/run_offline.sh @@ -0,0 +1,7 @@ +# Copy over the input files for the offline run +cp diag_table_offline diag_table +cp input.offline.nml input.nml +cp MOM_override_offline MOM_override + +# Run the forward model +mprun ./MOM6_ocean_only diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/run_online.sh b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/run_online.sh new file mode 100644 index 0000000000..3b8a79b921 --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/run_online.sh @@ -0,0 +1,13 @@ +# Copy over the input files for the forward run +cp diag_table_online diag_table +cp input.online.nml input.nml +cp MOM_override_online MOM_override + +# Run the forward model +mprun ./MOM6_coupled + +# Make the directory where online fields will be stored and copy diagnostics +mkdir ONLINE +mv *off_snap* ONLINE/ +mv *off_sum* ONLINE/ +mv *off_avg* ONLINE/ diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/run_simulation b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/run_simulation new file mode 100644 index 0000000000..f5a9e3043d --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/run_simulation @@ -0,0 +1 @@ +mpirun -n 8 ../../build/ice_ocean_SIS2/MOM6 diff --git a/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/static_input.nml b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/static_input.nml new file mode 100644 index 0000000000..565ece0a87 --- /dev/null +++ b/ice_ocean_SIS2/Baltic_ALE_z_offline_tracers_diagscalarhistogram/static_input.nml @@ -0,0 +1,30 @@ + + &fms_io_nml + fms_netcdf_restart=.true. + threading_read='multi' / + + &fms_nml + clock_grain='MODULE' + domains_stack_size = 2000000 + clock_flags='SYNC' / + + &ice_albedo_nml + t_range = 10. / + + &ice_model_nml + / + + &monin_obukhov_nml + neutral = .true. / + + &ocean_albedo_nml + ocean_albedo_option = 5 / + + &sat_vapor_pres_nml + construct_table_wrt_liq = .true., + construct_table_wrt_liq_and_ice = .true. / + + &xgrid_nml + make_exchange_reproduce = .false. + interp_method = 'second_order' / + diff --git a/ocean_only/flow_downslope/common/MOM_input b/ocean_only/flow_downslope/common/MOM_input index db1069f320..70de27a0a2 100644 --- a/ocean_only/flow_downslope/common/MOM_input +++ b/ocean_only/flow_downslope/common/MOM_input @@ -44,7 +44,7 @@ IC_OUTPUT_FILE = "Initial_state" ! default = "MOM_IC" ! The file into which to write the initial conditions. ! === module MOM_fixed_initialization === -INPUTDIR = "INPUT" ! default = "." +INPUTDIR = "." ! default = "." ! The directory in which input files are found. ! === module MOM_grid_init === @@ -210,6 +210,30 @@ S_RANGE = 1.0 ! [1e-3] default = 2.0 ! Initial salinity range ! === module MOM_diag_mediator === +NUM_DIAG_COORDS = 1 ! default = 1 + ! The number of diagnostic vertical coordinates to use. For each coordinate, an + ! entry in DIAG_COORDS must be provided. +DIAG_COORDS = "scalar SCALAR SCALAR" ! + ! A list of string tuples associating diag_table modules to a coordinate + ! definition used for diagnostics. Each string is of the form + ! "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME". +DIAG_COORD_P_REF_RHO0 = 0.0 +DIAG_COORD_DEF_SCALAR = "FILE:targetlayers_scalar.nc,interfaces=interfaces" ! default = "WOA09" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter DIAG_COORD_RES_RHO2 + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz + +DIAG_COORD_HISTOGRAM_EXTENSIVE_DIAGS_SCALAR = True ! === module MOM_lateral_mixing_coeffs === @@ -382,7 +406,7 @@ BUOY_CONFIG = "NONE" ! default = "zero" DT_FORCING = 1800.0 ! [s] default = 300.0 ! The time step for changing forcing, coupling with other components, or ! potentially writing certain diagnostics. The default value is given by DT. -DAYMAX = 12.0 ! [hours] +DAYMAX = 96.0 ! [hours] ! The final time of the whole simulation, in units of TIMEUNIT seconds. This ! also sets the potential end time of the present run segment if the end time is ! not set via ocean_solo_nml in input.nml. diff --git a/ocean_only/flow_downslope/common/diag_table b/ocean_only/flow_downslope/common/diag_table index fb83473337..72afb94da1 100644 --- a/ocean_only/flow_downslope/common/diag_table +++ b/ocean_only/flow_downslope/common/diag_table @@ -1,50 +1,251 @@ -"MOM resting experiment" -1 1 1 0 0 0 -"prog", 1 ,"hours",1,"days","Time" - -#This is the field section of the diag_table. - -# Prognostic Ocean fields: -#========================= - -"ocean_model","u","u","prog","all",.false.,"none",2 -"ocean_model","v","v","prog","all",.false.,"none",2 -"ocean_model","h","h","prog","all",.false.,"none",1 -"ocean_model","e","e","prog","all",.false.,"none",2 -"ocean_model","temp","temp","prog","all",.false.,"none",2 -"ocean_model","salt","salt","prog","all",.false.,"none",2 - -#============================================================================================= -# -#====> This file can be used with diag_manager/v2.0a (or higher) <==== -# -# -# FORMATS FOR FILE ENTRIES (not all input values are used) -# ------------------------ -# -#"file_name", output_freq, "output_units", format, "time_units", "time_long_name", ... -# (opt) new_file_frequecy, (opt) "new_file_freq_units", "new_file_start_date" -# -# -#output_freq: > 0 output frequency in "output_units" -# = 0 output frequency every time step -# =-1 output frequency at end of run -# -#output_units = units used for output frequency -# (years, months, days, minutes, hours, seconds) -# -#time_units = units used to label the time axis -# (days, minutes, hours, seconds) -# -# -# FORMAT FOR FIELD ENTRIES (not all input values are used) -# ------------------------ -# -#"module_name", "field_name", "output_name", "file_name" "time_sampling", time_avg, "other_opts", packing -# -#time_avg = .true. or .false. -# -#packing = 1 double precision -# = 2 float -# = 4 packed 16-bit integers -# = 8 packed 1-byte (not tested?) +CONFIG NAME +0001 1 1 0 0 0 + +#==================================================================================================== +# MOM6 +#==================================================================================================== +# MOM6 ocean diagnostics files + +"ocean_natv_thck", 6, "hours", 1, "hours", "time" +"ocean_natv_heat", 6, "hours", 1, "hours", "time" +"ocean_natv_salt", 6, "hours", 1, "hours", "time" +"ocean_natv_snap", 6, "hours", 1, "hours", "time" +"ocean_sclr_thck", 6, "hours", 1, "hours", "time" +"ocean_sclr_heat", 6, "hours", 1, "hours", "time" +"ocean_sclr_salt", 6, "hours", 1, "hours", "time" +"ocean_sclr_snap", 6, "hours", 1, "hours", "time" +"ocean_surf", 6, "hours", 1, "hours", "time" +"ocean_static", -1, "hours", 1, "hours", "time" # ocean_static is a protected name. Do not change this line. + +# --------------------------- # +# Static grid variables # +# --------------------------- # +"ocean_model", "areacello", "areacello", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolon", "geolon", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolat", "geolat", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolon_c", "geolon_c", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolat_c", "geolat_c", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolon_u", "geolon_u", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolat_u", "geolat_u", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolon_v", "geolon_v", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolat_v", "geolat_v", "ocean_static", "all", "none", "none", 2 +"ocean_model", "area_t", "area_t", "ocean_static", "all", "none", "none", 2 +"ocean_model", "area_u", "area_u", "ocean_static", "all", "none", "none", 2 +"ocean_model", "area_v", "area_v", "ocean_static", "all", "none", "none", 2 +"ocean_model", "area_q", "area_q", "ocean_static", "all", "none", "none", 2 +"ocean_model", "depth_ocean", "depth_ocean", "ocean_static", "all", "none", "none", 2 +"ocean_model", "wet", "wet", "ocean_static", "all", "none", "none", 2 +"ocean_model", "wet_c", "wet_c", "ocean_static", "all", "none", "none", 2 +"ocean_model", "wet_u", "wet_u", "ocean_static", "all", "none", "none", 2 +"ocean_model", "wet_v", "wet_v", "ocean_static", "all", "none", "none", 2 +"ocean_model", "Coriolis", "Coriolis", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dxt", "dxt", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dyt", "dyt", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dxCu", "dxCu", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dyCu", "dyCu", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dxCv", "dxCv", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dyCv", "dyCv", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dxCvo", "dxCvo", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dyCuo", "dyCuo", "ocean_static", "all", "none", "none", 2 + +############## +### NATIVE ### +# ------------------------------------------------- # +# Heat + budget terms [get from Andrew Shao github] # +# ------------------------------------------------- # + +# MEAN +"ocean_model", "temp", "temp" "ocean_natv_heat", "all", "mean", "none", 2 + +"ocean_model", "opottemptend", "opottemptend", "ocean_natv_heat", "all", "mean", "none", 1 +"ocean_model", "opottempdiff", "opottempdiff", "ocean_natv_heat", "all", "mean", "none", 1 +"ocean_model", "opottemppmdiff", "opottemppmdiff", "ocean_natv_heat", "all", "mean", "none", 1 +"ocean_model", "boundary_forcing_heat_tendency","boundary_forcing_heat_tendency", "ocean_natv_heat", "all", "mean", "none", 1 +"ocean_model", "frazil_heat_tendency", "frazil_heat_tendency", "ocean_natv_heat", "all", "mean", "none", 1 +"ocean_model", "T_advection_xy", "T_advection_xy", "ocean_natv_heat", "all", "mean", "none", 1 +"ocean_model", "Th_tendency_vert_remap", "Th_tendency_vert_remap", "ocean_natv_heat", "all", "mean", "none", 1 +"ocean_model", "internal_heat_heat_tendency", "internal_heat_heat_tendency", "ocean_natv_heat", "all", "mean", "none", 1 + +# SNAP +#"ocean_model", "temp", "temp" "ocean_natv_snap", "all", "none", "none", 2 + +# ------------------- # +# Salt + budget terms # +# ------------------- # + +"ocean_model", "salt", "salt", "ocean_natv_salt", "all", "mean", "none", 2 + +"ocean_model", "osalttend", "osalttend", "ocean_natv_salt", "all", "mean", "none", 1 +"ocean_model", "osaltdiff", "osaltdiff", "ocean_natv_salt", "all", "mean", "none", 1 +"ocean_model", "osaltpmdiff", "osaltpmdiff", "ocean_natv_salt", "all", "mean", "none", 1 +"ocean_model", "boundary_forcing_salt_tendency","boundary_forcing_salt_tendency", "ocean_natv_salt", "all", "mean", "none", 1 +"ocean_model", "S_advection_xy", "S_advection_xy", "ocean_natv_salt", "all", "mean", "none", 1 +"ocean_model", "Sh_tendency_vert_remap", "Sh_tendency_vert_remap", "ocean_natv_salt", "all", "mean", "none", 1 + +# SNAP +#"ocean_model", "salt", "salt" "ocean_natv_snap", "all", "none", "none", 2 + +# ------------------------------------------------- # +# Thickness + budget terms # +# ------------------------------------------------- # + +# MEAN +"ocean_model", "thkcello", "thkcello", "ocean_natv_thck", "all", "mean", "none", 2 + +"ocean_model", "dhdt", "dhdt", "ocean_natv_thck", "all", "mean", "none", 1 +"ocean_model", "dynamics_h_tendency", "dynamics_h_tendency", "ocean_natv_thck", "all", "mean", "none", 1 +"ocean_model", "vert_remap_h_tendency", "vert_remap_h_tendency", "ocean_natv_thck", "all", "mean", "none", 1 +"ocean_model", "boundary_forcing_h_tendency", "boundary_forcing_h_tendency", "ocean_natv_thck", "all", "mean", "none", 1 +"ocean_model", "internal_heat_h_tendency", "internal_heat_h_tendency", "ocean_natv_thck", "all", "mean", "none", 1 + +# SNAP +#"ocean_model", "thkcello", "thkcello" "ocean_natv_snap", "all", "none", "none", 2 +#"ocean_model", "e", "e" "ocean_natv_snap", "all", "none", "none", 2 + +# ----------------------------------------- # +# Other terms necessary for WMT calculation # +# ----------------------------------------- # + +# MEAN +"ocean_model", "rhoinsitu", "rhoinsitu", "ocean_natv_thck", "all", "mean", "none", 2 +"ocean_model", "rhopot0", "rhopot0", "ocean_natv_thck", "all", "mean", "none", 2 +"ocean_model", "rhopot2", "rhopot2", "ocean_natv_thck", "all", "mean", "none", 2 +"ocean_model", "drho_dT", "drho_dT", "ocean_natv_thck", "all", "mean", "none", 2 +"ocean_model", "drho_dS", "drho_dS", "ocean_natv_thck", "all", "mean", "none", 2 +"ocean_model", "umo", "umo", "ocean_natv_thck", "all", "mean", "none", 2 +"ocean_model", "vmo", "vmo", "ocean_natv_thck", "all", "mean", "none", 2 +"ocean_model", "e", "e", "ocean_natv_thck", "all", "mean", "none", 2 +"ocean_model", "rsdoabsorb", "rsdoabsorb", "ocean_natv_heat", "all", "mean", "none",2 + +# SNAP +#"ocean_model", "rhopot2", "rhopot2" "ocean_natv_snap", "all", "none", "none", 2 + +# -------------- # +# Lateral fluxes # +# -------------- # +# heat and salinity transport by residual mean advection +"ocean_model", "T_adx", "T_adx", "ocean_natv_heat", "all", "mean", "none",2 +"ocean_model", "T_ady", "T_ady", "ocean_natv_heat", "all", "mean", "none",2 +"ocean_model", "S_adx", "S_adx", "ocean_natv_salt", "all", "mean", "none",2 +"ocean_model", "S_ady", "S_ady", "ocean_natv_salt", "all", "mean", "none",2 + +############## +### SCALAR ### +# ------------------------------------------------- # +# Heat + budget terms [get from Andrew Shao github] # +# ------------------------------------------------- # + +# MEAN +"ocean_model_scalar", "temp", "temp" "ocean_sclr_heat", "all", "mean", "none", 2 + +"ocean_model_scalar", "opottemptend", "opottemptend", "ocean_sclr_heat", "all", "mean", "none", 1 +"ocean_model_scalar", "opottempdiff", "opottempdiff", "ocean_sclr_heat", "all", "mean", "none", 1 +"ocean_model_scalar", "opottemppmdiff", "opottemppmdiff", "ocean_sclr_heat", "all", "mean", "none", 1 +"ocean_model_scalar", "boundary_forcing_heat_tendency","boundary_forcing_heat_tendency", "ocean_sclr_heat", "all", "mean", "none", 1 +"ocean_model_scalar", "frazil_heat_tendency", "frazil_heat_tendency", "ocean_sclr_heat", "all", "mean", "none", 1 +"ocean_model_scalar", "T_advection_xy", "T_advection_xy", "ocean_sclr_heat", "all", "mean", "none", 1 +"ocean_model_scalar", "Th_tendency_vert_remap", "Th_tendency_vert_remap", "ocean_sclr_heat", "all", "mean", "none", 1 +"ocean_model_scalar", "internal_heat_heat_tendency", "internal_heat_heat_tendency", "ocean_sclr_heat", "all", "mean", "none", 1 + +# SNAP +#"ocean_model_scalar", "temp", "temp" "ocean_sclr_snap", "all", "none", "none", 2 + +# ------------------- # +# Salt + budget terms # +# ------------------- # + +"ocean_model_scalar", "salt", "salt", "ocean_sclr_salt", "all", "mean", "none", 2 + +"ocean_model_scalar", "osalttend", "osalttend", "ocean_sclr_salt", "all", "mean", "none", 1 +"ocean_model_scalar", "osaltdiff", "osaltdiff", "ocean_sclr_salt", "all", "mean", "none", 1 +"ocean_model_scalar", "osaltpmdiff", "osaltpmdiff", "ocean_sclr_salt", "all", "mean", "none", 1 +"ocean_model_scalar", "boundary_forcing_salt_tendency","boundary_forcing_salt_tendency", "ocean_sclr_salt", "all", "mean", "none", 1 +"ocean_model_scalar", "S_advection_xy", "S_advection_xy", "ocean_sclr_salt", "all", "mean", "none", 1 +"ocean_model_scalar", "Sh_tendency_vert_remap", "Sh_tendency_vert_remap", "ocean_sclr_salt", "all", "mean", "none", 1 + +# SNAP +#"ocean_model_scalar", "salt", "salt" "ocean_sclr_snap", "all", "none", "none", 2 + +# ------------------------ # +# Thickness + budget terms # +# ------------------------ # + +# MEAN +"ocean_model_scalar", "thkcello", "thkcello", "ocean_sclr_thck", "all", "mean", "none", 2 + +"ocean_model_scalar", "dhdt", "dhdt", "ocean_sclr_thck", "all", "mean", "none", 1 +"ocean_model_scalar", "dynamics_h_tendency", "dynamics_h_tendency", "ocean_sclr_thck", "all", "mean", "none", 1 +"ocean_model_scalar", "vert_remap_h_tendency", "vert_remap_h_tendency", "ocean_sclr_thck", "all", "mean", "none", 1 +"ocean_model_scalar", "boundary_forcing_h_tendency", "boundary_forcing_h_tendency", "ocean_sclr_thck", "all", "mean", "none", 1 +"ocean_model_scalar", "internal_heat_h_tendency", "internal_heat_h_tendency", "ocean_sclr_thck", "all", "mean", "none", 1 + +# SNAP +#"ocean_model_scalar", "thkcello", "thkcello" "ocean_sclr_snap", "all", "none", "none", 2 +#"ocean_model_scalar", "e", "e" "ocean_sclr_snap", "all", "none", "none", 2 + +# ----------------------------------------- # +# Other terms necessary for WMT calculation # +# ----------------------------------------- # + +# MEAN +"ocean_model_scalar", "rhoinsitu", "rhoinsitu", "ocean_sclr_thck", "all", "mean", "none", 2 +"ocean_model_scalar", "rhopot0", "rhopot0", "ocean_sclr_thck", "all", "mean", "none", 2 +"ocean_model_scalar", "rhopot2", "rhopot2", "ocean_sclr_thck", "all", "mean", "none", 2 +"ocean_model_scalar", "drho_dT", "drho_dT", "ocean_sclr_thck", "all", "mean", "none", 2 +"ocean_model_scalar", "drho_dS", "drho_dS", "ocean_sclr_thck", "all", "mean", "none", 2 +#"ocean_model_scalar", "umo", "umo", "ocean_sclr_thck", "all", "mean", "none", 2 +#"ocean_model_scalar", "vmo", "vmo", "ocean_sclr_thck", "all", "mean", "none", 2 +"ocean_model_scalar", "e", "e", "ocean_sclr_thck", "all", "mean", "none", 2 +"ocean_model_scalar", "rsdoabsorb", "rsdoabsorb", "ocean_sclr_heat", "all", "mean", "none",2 + +# SNAP +"ocean_model_scalar", "rhopot2", "rhopot2" "ocean_sclr_snap", "all", "none", "none", 2 + + +# -------------- # +# Lateral fluxes # +# -------------- # +# heat and salinity transport by residual mean advection +#"ocean_model_scalar", "T_adx", "T_adx", "ocean_sclr_heat", "all", "mean", "none",2 +#"ocean_model_scalar", "T_ady", "T_ady", "ocean_sclr_heat", "all", "mean", "none",2 +#"ocean_model_scalar", "S_adx", "S_adx", "ocean_sclr_salt", "all", "mean", "none",2 +#"ocean_model_scalar", "S_ady", "S_ady", "ocean_sclr_salt", "all", "mean", "none",2 + +#################################### +### SURFACE VARIABLES AND FLUXES ### + +"ocean_model", "tos", "tos" "ocean_surf", "all", "mean", "none", 2 +"ocean_model", "sos", "sos" "ocean_surf", "all", "mean", "none", 2 + +# MASS +"ocean_model", "prlq", "prlq", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "prsn", "prsn", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "evs", "evs", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "friver", "friver", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "ficeberg", "ficeberg", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "fsitherm", "fsitherm", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "wfo", "wfo", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "net_massout", "net_massout", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "net_massin", "net_massin", "ocean_surf", "all", "mean", "none",2 + +# HEAT +"ocean_model", "hfds", "hfds", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "heat_content_surfwater", "heat_content_surfwater", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "hfrainds", "hfrainds", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "hfevapds", "hfevapds", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "hfrunoffds", "hfrunoffds", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "hfsnthermds", "hfsnthermds", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "hfsifrazil", "hfsifrazil", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "hfsithermds", "hfsithermds", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "hfibthermds", "hfibthermds", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "hfsolidrunoffds", "hfsolidrunoffds", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "rlntds", "rlntds", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "hflso", "hflso", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "hfsso", "hfsso", "ocean_surf", "all", "mean", "none",2 +"ocean_model", "rsdo", "rsdo", "ocean_surf", "all", "mean", "none",2 + +# SALT +"ocean_model", "sfdsi", "sfdsi", "ocean_surf", "all", "mean", "none",2 +#"ocean_model", "sfriver", "sfriver", "ocean_surf", "all", "mean", "none",2 + + diff --git a/ocean_only/flow_downslope/common/targetlayers_scalar.nc b/ocean_only/flow_downslope/common/targetlayers_scalar.nc new file mode 100644 index 0000000000..42983e423b Binary files /dev/null and b/ocean_only/flow_downslope/common/targetlayers_scalar.nc differ diff --git a/ocean_only/flow_downslope/gmac_analysis.ipynb b/ocean_only/flow_downslope/gmac_analysis.ipynb new file mode 100644 index 0000000000..c870f01126 --- /dev/null +++ b/ocean_only/flow_downslope/gmac_analysis.ipynb @@ -0,0 +1,868 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xarray as xr\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 112kB\n",
+       "Dimensions:    (xh: 80, rho0_l: 19, rho0_i: 20, Time: 2, xq: 81)\n",
+       "Coordinates:\n",
+       "  * xh         (xh) float64 640B 5.0 15.0 25.0 35.0 ... 765.0 775.0 785.0 795.0\n",
+       "  * rho0_l     (rho0_l) float64 152B 1.034e+03 1.034e+03 ... 1.035e+03 1.035e+03\n",
+       "  * rho0_i     (rho0_i) float64 160B 1.034e+03 1.034e+03 ... 1.035e+03 1.035e+03\n",
+       "  * Time       (Time) object 16B 0001-01-01 06:00:00 0001-01-01 12:00:00\n",
+       "  * xq         (xq) float64 648B 0.0 10.0 20.0 30.0 ... 770.0 780.0 790.0 800.0\n",
+       "Data variables:\n",
+       "    temp       (Time, rho0_l, xh) float32 12kB 1.0 1.0 1.0 1.0 ... 0.0 0.0 0.0\n",
+       "    salt       (Time, rho0_l, xh) float32 12kB 35.0 35.0 35.0 ... 34.97 34.97\n",
+       "    u          (Time, rho0_l, xq) float32 12kB 0.0 -0.002137 ... 3.396e-05 0.0\n",
+       "    v          (Time, rho0_l, xh) float32 12kB 1.084e-14 ... -3.928e-15\n",
+       "    h          (Time, rho0_l, xh) float32 12kB 0.0 0.0 0.0 ... 210.5 210.5 210.5\n",
+       "    e          (Time, rho0_i, xh) float32 13kB 0.0 0.0 0.0 ... -4e+03 -4e+03\n",
+       "    rhopot0    (Time, rho0_l, xh) float32 12kB 1.035e+03 1.035e+03 ... 1.035e+03\n",
+       "    rhopot2    (Time, rho0_l, xh) float32 12kB 1.035e+03 1.035e+03 ... 1.035e+03\n",
+       "    rhoinsitu  (Time, rho0_l, xh) float32 12kB 1.035e+03 1.035e+03 ... 1.035e+03
" + ], + "text/plain": [ + " Size: 112kB\n", + "Dimensions: (xh: 80, rho0_l: 19, rho0_i: 20, Time: 2, xq: 81)\n", + "Coordinates:\n", + " * xh (xh) float64 640B 5.0 15.0 25.0 35.0 ... 765.0 775.0 785.0 795.0\n", + " * rho0_l (rho0_l) float64 152B 1.034e+03 1.034e+03 ... 1.035e+03 1.035e+03\n", + " * rho0_i (rho0_i) float64 160B 1.034e+03 1.034e+03 ... 1.035e+03 1.035e+03\n", + " * Time (Time) object 16B 0001-01-01 06:00:00 0001-01-01 12:00:00\n", + " * xq (xq) float64 648B 0.0 10.0 20.0 30.0 ... 770.0 780.0 790.0 800.0\n", + "Data variables:\n", + " temp (Time, rho0_l, xh) float32 12kB 1.0 1.0 1.0 1.0 ... 0.0 0.0 0.0\n", + " salt (Time, rho0_l, xh) float32 12kB 35.0 35.0 35.0 ... 34.97 34.97\n", + " u (Time, rho0_l, xq) float32 12kB 0.0 -0.002137 ... 3.396e-05 0.0\n", + " v (Time, rho0_l, xh) float32 12kB 1.084e-14 ... -3.928e-15\n", + " h (Time, rho0_l, xh) float32 12kB 0.0 0.0 0.0 ... 210.5 210.5 210.5\n", + " e (Time, rho0_i, xh) float32 13kB 0.0 0.0 0.0 ... -4e+03 -4e+03\n", + " rhopot0 (Time, rho0_l, xh) float32 12kB 1.035e+03 1.035e+03 ... 1.035e+03\n", + " rhopot2 (Time, rho0_l, xh) float32 12kB 1.035e+03 1.035e+03 ... 1.035e+03\n", + " rhoinsitu (Time, rho0_l, xh) float32 12kB 1.035e+03 1.035e+03 ... 1.035e+03" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "zcoord = 'rho0'\n", + "ds = xr.open_dataset('z/prog_'+zcoord+'.nc').mean(['yh','yq'])\n", + "ds" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "tmp = 0.5*(ds['e'].isel({zcoord+'_i':slice(0,-1)}).values + ds['e'].isel({zcoord+'_i':slice(1,None)}).values)\n", + "ds['eh'] = ds['temp'].copy(data=tmp)\n", + "# ds['eh'] = ds['eh'].where(np.isfinite(ds['eh']),ds['eh'].min(zcoord+'_l'))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/89/8wbtnb1d5y30tjpcqtlr5f840000gq/T/ipykernel_18491/2478410361.py:7: UserWarning: The input coordinates to pcolormesh are interpreted as cell centers, but are not monotonically increasing or decreasing. This may lead to incorrectly calculated cell edges, in which case, please supply explicit cell edges to pcolormesh.\n", + " plt.pcolormesh(x,e,s)\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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AUDaEdnV6mEymfD222+jsbERCQkJLhc/ADz55JOYMGEC7rrrLtl5V6rL119/DYPBgOjoaEydOhWnTp1yqTq89957iI+PxwMPPIBevXrhlltuwd///nfpuqvU43LNzc1444038Nhjj0Gj0bhMHUaOHIlPP/0UJ06cAAAcPHgQu3btwvjx4wG45teCOmbz3l7u5Pvvv4fJZJI2SG0THh5usVGqWrXFaa0Op0+flsr4+fmhe/fuFmWcUU8hBNLT0zFy5EgMHjxYirEtpvYxqqkehw4dQkJCApqamhAUFIRNmzZh0KBB0n9sao+/zdtvv439+/dj7969Ftdc5WsxfPhw/POf/8QNN9yA7777DsuXL8eIESNw5MgRl6nDqVOn8MorryA9PR2LFy/GV199hblz50Kr1eKRRx5xmXpcbvPmzfjpp5+QmpoqxdcWz+XUVofnnnsO9fX1GDBgALy9vWEymZCVlYWHH35YirEtpvYxqqke1Dkenfy0uXybDODSD+f259TuWurgrHrOmTMH//nPf7Br1y6La2qvx4033oiysjL89NNPKCwsREpKCkpKSqTrao8fAKqrq/H000+jqKgI/v7+HZZTe13GjRsn/XnIkCFISEhATEwMNm7ciFtvvRWA+utgNpsRHx+P7OxsAMAtt9yCI0eO4JVXXsEjjzwilVN7PS732muvYdy4cTAYDLLzaq9DQUEB3njjDbz11lu46aabUFZWhnnz5sFgMCAlJUUqp/Z6UOd4dLdXaGgovL29LTLyc+fOWWT3atU2u+VKddDr9WhubkZdXV2HZbrKU089hffeew/bt29H3759pfOuUg8/Pz9cf/31iI+PR05ODoYOHYo///nPLhM/cKlp/ty5c4iLi4OPjw98fHxQUlKCVatWwcfHR4rFFepyucDAQAwZMgRff/21y3w9evfujUGDBsnODRw4EFVVVVKMgPrr0eb06dP45JNP8Pjjj0vnXKUOzz77LBYuXIipU6diyJAhmDFjBubPn4+cnBwpRkD99aDO8ejkx8/PD3FxcSguLpadLy4uxogRI5wUlW2io6Oh1+tldWhubkZJSYlUh7i4OPj6+srK1NTU4PDhw11WTyEE5syZg3fffRfbtm1DdHS0S9ajPSEEjEajS8V/55134tChQygrK5OO+Ph4TJ8+HWVlZejfv7/L1OVyRqMRx44dQ+/evV3m63HbbbdZLPlw4sQJ9OvXD4Dr/btYv349evXqhQkTJkjnXKUOP//8M7y85D8Svb29panurlIP6qSuHV+tPm1T3V977TVx9OhRMW/ePBEYGCgqKyudHZrk/Pnz4sCBA+LAgQMCgMjLyxMHDhyQpuO/9NJLIiQkRLz77rvi0KFD4uGHH7Y6/bJv377ik08+Efv37xd33HFHl06//P3vfy9CQkLEZ599JpsS+/PPP0tl1F6PRYsWiR07doiKigrxn//8RyxevFh4eXmJoqIil4j/Si6f7SWEa9TlmWeeEZ999pk4deqU2LNnj/jNb34junXrJv3bdYU6fPXVV8LHx0dkZWWJr7/+Wrz55psiICBAvPHGG1IZV6iHEEKYTCYRGRkpnnvuOYtrrlCHlJQU0adPH2mq+7vvvitCQ0NFRkaGS9WDOsfjkx8hhPjLX/4i+vXrJ/z8/MT//M//SNOv1WL79u0CgMWRkpIihLg0BXPp0qVCr9cLrVYrRo0aJQ4dOiR7xsWLF8WcOXNEjx49hE6nE7/5zW9EVVVVl9XBWvwAxPr166Uyaq/HY489Jn2fhIWFiTvvvFNKfFwh/itpn/y4Ql3a1ljx9fUVBoNBTJkyRRw5csSl6iCEEO+//74YPHiw0Gq1YsCAAeJvf/ub7Lqr1OPjjz8WAER5ebnFNVeoQ0NDg3j66adFZGSk8Pf3F/379xdLliwRRqPRpepBnaMRQginNDkREREROYFHj/khIiIiz8Pkh4iIiDwKkx8iIiLyKEx+iIiIyKMw+SEiIiKPwuSHiIiIPAqTHyIiIvIoTH6IiIjIozD5ISIiIo/C5IeIiIg8CpMfIiIi8ij/H6f07ZlYJQeMAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "t = -1\n", + "dsnow = ds.isel(Time=t)\n", + "e = dsnow['eh']\n", + "# e = e.where(np.isfinite(e),0)\n", + "s = dsnow['rhopot0']\n", + "x = dsnow['xh']#(dsnow['xh']*xr.ones_like(ds[zcoord+'_l'])).values\n", + "plt.pcolormesh(x,e,s)\n", + "plt.colorbar()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ds['e'].isel(Time=0).plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl0AAAHVCAYAAADLiU4DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABwjklEQVR4nO3deVxUVf8H8M9FdhEUZVUQRModFCp3XHHLXCosTcXUNHKlwtDHJFNJM8UlNTPRcn3MtXKBUnEvFTAXxA3FFCQ3NpVtzu8Pf8zjyIBzZ2Bg4PN+ve7rcc69557vGXzi6znnnisJIQSIiIiIqEwZlXcARERERFUBky4iIiIiPWDSRURERKQHTLqIiIiI9IBJFxEREZEeMOkiIiIi0gMmXURERER6wKSLiIiISA+YdBERERHpAZMuqnQkSdLoOHjwIAIDA+Hm5lbeIZepTZs2wdvbG+bm5nB2dsakSZOQlZVV5LqsrCxMmjQJzs7OMDc3h7e3NzZt2qT2nrGxsejWrRusrKxQs2ZNDBw4ENeuXStyXUREBAYOHAh3d3dIkoROnTrJjl/TuI4cOYJRo0bBx8cHZmZmkCQJ169fl92eJt9XZmYmQkJC4O/vDzs7O0iShLCwMFntpKWlITAwEHXq1IGlpSXatGmDP/74Q+212dnZ+Pzzz/HSSy/BzMwMtWvXRufOnXH58uVSb+v3339HmzZtYGlpiTp16iAwMBBpaWll0i9d2yIyOIKokjl+/LjK0bt3b2FhYVGkPD09XVy5ckXExsaWd8hlZt26dQKAGDVqlNi/f79YsWKFsLGxEd27dy9ybffu3UXNmjXFihUrxP79+8WoUaMEALF+/XqV6xISEkSNGjVEhw4dxG+//Sa2bt0qmjZtKpydnUVaWprKtS+//LJo1aqVeP/994WdnZ3w8/OT3QdN4woLCxP169cX/fv3F506dRIARFJSkqy2NP2+kpKShI2NjejYsaMynhkzZmjczpMnT0SzZs1EvXr1xLp160RUVJTo16+fMDY2FgcPHlS5NjMzU/j6+gpnZ2exePFicfDgQbFz504xZcoUER8fX6ptHTx4UBgbG4t+/fqJqKgosW7dOlG3bl3RrFkz8eTJkwrVFpEhYtJFld7w4cNF9erVyzsMvcvPzxdOTk7C399fpXz9+vUCgNi9e7ey7LfffhMAxIYNG1Su7d69u3B2dhb5+fnKsrffflvUqVNHpKenK8uuX78uTExMREhIiEr9goIC5Z+bNm0qO+mSE9ezbX399deyky4535dCoRAKhUIIIcS///4rO+n69ttvBQBx7NgxZVleXp5o0qSJePXVV1WunThxoqhevbq4evWqxvfXtq1XXnlFNGnSROTl5SnLjh49KgCIZcuWVai2iAwRpxepSlM3vShJEsaNG4fIyEi8/PLLsLCwgK+vL06cOAEhBL7++mu4u7vDysoKXbp0wZUrV4rc9/fff0fXrl1hbW0NS0tLtGvXrtgplrJy4sQJpKSkYMSIESrlb7/9NqysrLB9+3Zl2fbt22FlZYW3335b5doRI0bg9u3b+PPPPwEA+fn5+PXXX/Hmm2/C2tpaeV39+vXRuXNnlXsCgJGRbv+J0TSu0mhLzvdVOEWtre3bt+Pll19GmzZtlGXGxsZ477338Ndff+HWrVsAgEePHmHVqlV4++230aBBgzJt69atWzh58iSGDh0KY2Nj5bVt27bFSy+9VORnW95tERkiJl1Eavz6669YtWoVvvrqK2zcuBGZmZno06cPPv74Yxw9ehRLly7FypUrceHCBbz55psQQijrrlu3Dv7+/rC2tsbatWvx3//+F7a2tujRo4dGiVd+fr5Gx7NtqnPu3DkAQIsWLVTKTUxM0KhRI+X5wmsbN26s8gvw2bqF1169ehWPHz8ucs/Ca69cuYInT568sI+a0jSu0mrr2XsXUvd9lUZbxX2HAHD+/HkAwOnTp5GdnQ1PT098+OGHqFWrFkxNTeHr64vffvutSH03N7ci/4jQtK3i+l9Y9nz/9dkWUWVh/OJLiKqenJwcREVFoXr16gCejmz0798fBw4cQGxsrHKU499//8WkSZNw7tw5NG/eHI8ePcLEiRPx+uuvq/xrvXfv3mjVqhWmTp2qMjqjjomJiUYxRkZGIjAwsNjz9+7dAwDY2toWOWdra6uyyPzevXtqR1IK6xbe60X3FELgwYMHcHJy0qgPL6JpXKXV1rP3fr49bRbll9RWce08G0vhyNDcuXPRvHlz/PjjjzAyMsI333yDvn37Ys+ePejRo4ey/vPJqZy2XtT/579rfbZFVFkw6SJSo3PnzsqECwAaN24MAOjVq5fKtFJh+Y0bN9C8eXMcO3YM9+/fx/Dhw5Gfn69yz549e2LevHnIzs5WuffzTp48qVGM7u7uGl1X3DTY8+UlTZfpcu2LCCFQUFCgUvbsL/TSbAsACgoKVEYJjYyMVKYmNf2+dKVJvxQKBQDA1NQUe/bsQY0aNQA8/fvp6emJL7/8UiXpUjfVrWlbL7r2+XJ9tkVUWTDpIlLj+X+Bm5qallheOKV2584dAMBbb71V7L3v379fYtLl7e2tUYzVqlUr8Xzt2rUBPB1VcHBwKBLDs32pXbu22tGF+/fvA/hfv5+9p7prJUlCzZo1NYq/UExMDDp37qxSlpSUBDc3N43jksPDwwM3btxQfp4xYwbCwsJkfV+6kvt9t23bVplwAYClpSX8/PywY8eOUm+ruGs16b8+2yIyREy6iEpRnTp1AABLlixB69at1V7z/C/055XW9GLz5s0BAGfPnkWTJk2U5fn5+bh48SLeffddlWs3btyI/Px8lVGms2fPAgCaNWsG4GnCYmFhoSx/1tmzZ9GwYUOYm5trFH8hHx+fIqN7zs7OsuKS45dffkFOTo7atgrv/aLvS1fNmzcv9jsE/tcvdWueCgkhNHp4QNO2Cv/37Nmz6N27d5FrNfmu9dkWkUEqxycnifSipC0jhg8fLurXr69SBkB89NFHKmVJSUkCgPj6669Vyg8cOCAAiC1btgghnu6pVLNmTfHhhx9qHe/Jkyc1Ou7evVvifQq3QOjZs6dK+caNGwUAsWfPHmXZ7t27BQCxadMmlWt79uxZZGuGgIAAYW9vLzIyMpRlN27cEKampmLKlCnFxqPNlhFy4nqWLltGaPJ9PUubLSOWLVsmAIgTJ04oy/Ly8kTTpk3Fa6+9pnJtmzZtRO3atVW26MjOzhZOTk6ia9eupdrWq6++Kpo1a6byvR4/flwAEMuXL69QbREZIiZdVOnpM+kSQoiffvpJGBkZiUGDBoktW7aImJgY8fPPP4vp06eLsWPHlk6nNPTTTz8JAOKDDz4QBw4cECtXrhQ1a9YsdnPUWrVqiZUrV4r9+/eL0aNHCwBi3bp1KtclJCQIKysr0bFjR7F7926xbds20axZM7Wbo548eVJs2bJFbNmyRbi4uIgmTZooP1+/fl2jPmgaV1pamvLew4YNU+73tGXLliIbc5bG97V7926xZcsWsXr1agFAvP3228r2s7OzS2znyZMnomnTpsLFxUWsX79eREdHiwEDBqjdRPTo0aPC1NRUtG7dWmzfvl3s2LFDdOjQQZiYmKjshyWEEB4eHsLDw0Prtg4cOCCMjY3FgAEDRHR0tFi/fr1wcXFRu2GpPtsiqiyYdFGlp++kSwghYmJiRJ8+fYStra0wMTERdevWFX369ClynT5s2LBBtGjRQpiamgpHR0cxYcIEkZmZWeS6zMxMMWHCBOHo6ChMTU1FixYtxMaNG9Xe89SpU6Jr167C0tJSWFtbi/79+4srV64UuW748OECgNojMjJSo/g1javwZ6HukDPCpun3Vb9+/WLb02SELTU1VQwbNkzY2toKc3Nz0bp1axEdHa322sOHDws/Pz9haWkpLC0tRZcuXcTRo0fVxvT832e5bUVFRYnWrVsLc3NzYWtrK4YNGybu3LlTrm0RVRaSEC/Y7IeIiIiIdMbNUYmIiIj0gEkXERERkR4w6SIiIiLSAyZdREREVOEdOnQIffv2hbOzMyRJ0mhz4JiYGPj4+MDc3BwNGjTAihUryj7QEjDpIiIiogovOzsbXl5eWLp0qUbXJyUloXfv3ujQoQPi4uIwdepUTJgwAVu3bi3jSIvHpxeJiIjIoEiShO3bt6N///7FXjNlyhTs2rULCQkJyrKxY8fizJkzOH78uB6iLIqvAarAFAoFbt++jRo1avAFsEREVCIhBDIzM+Hs7KzRK6K09eTJE+Tm5up8HyFEkd9tZmZmMDMz0/neAHD8+HH4+/urlPXo0QM//PAD8vLyNH7lWmli0lWB3b59Gy4uLuUdBhERGZCbN2+iXr16ZXLvJ0+ewL2+FVLTCnS+l5WVFbKyslTKCl9AXxpSU1OLvOvWwcEB+fn5uHv3LpycnEqlHTmYdFVgNWrUAAC0R28YQ/8ZORERGY585OEIdit/d5SF3NxcpKYVIOl0fVjX0H40LSNTAXefG7h58yasra2V5aU1ylXo+ZG0whVV5TV7xKSrAiv8S2EMExhLTLqIiKgE/79CWx8JhXUNI52SLuV9rK1Vkq7S5OjoiNTUVJWytLQ0GBsbo3bt2mXS5osw6SIiIiJZCoQCBTo8hlcgFKUXTDHatGmDX375RaUsKioKvr6+5bKeC+CWEURERCSTAkLnQ66srCzEx8cjPj4ewNMtIeLj45GcnAwACA0NxbBhw5TXjx07Fjdu3EBwcDASEhKwevVq/PDDD/jkk09K5TvQhkEnXS/aKE0IgbCwMDg7O8PCwgKdOnXC+fPnVa4ZM2YMPDw8YGFhATs7O/Tr1w8XL15UucbNzQ2SJKkcn332WYmxadI2ERERaebUqVNo2bIlWrZsCQAIDg5Gy5Yt8fnnnwMAUlJSlAkYALi7u2P37t04ePAgvL298eWXX2Lx4sV48803yyV+wMCnFws3ShsxYoTaL3HevHlYsGAB1qxZg5deegmzZs1C9+7dkZiYqFxo6OPjgyFDhsDV1RX3799HWFgY/P39kZSUhGrVqinvNXPmTIwePVr52crKqsTYNGmbiIjIECmggC4ThNrU7tSpE0raWnTNmjVFyvz8/BAbGyu7rbJi0ElXr1690KtXL7XnhBCIiIjAtGnTMHDgQADA2rVr4eDggA0bNmDMmDEAgA8++EBZx83NDbNmzYKXlxeuX78ODw8P5bkaNWrA0dFRo7g0bZuIiMgQFQiBAh32VtelriEz6OnFkiQlJSE1NVVlYzQzMzP4+fnh2LFjautkZ2cjMjIS7u7uRfbHmjt3LmrXrg1vb2/Mnj27xI3htGkbAHJycpCRkaFyEBERUeVQaZOuwsdE1W2M9vwjpMuWLYOVlRWsrKywd+9eREdHw9TUVHl+4sSJ2LRpEw4cOIBx48YhIiICQUFBpdL2s8LDw2FjY6M8uDEqERFVROWxkL4yqLRJVyF1G6M9XzZkyBDExcUhJiYGnp6eCAgIwJMnT5TnJ0+eDD8/P7Ro0QKjRo3CihUr8MMPP+DevXs6t/2s0NBQpKenK4+bN29q2k0iIiK9UUCgQIejqiZdBr2mqySF669SU1NVtvpPS0srMgJVOLLk6emJ1q1bo1atWti+fTveffddtfdu3bo1AODKlStqN1iT0/azSvOdU0RERGVF19Gqqpp0VdqRLnd3dzg6OiI6OlpZlpubi5iYGLRt27bEukII5OTkFHs+Li4OAIp9b5MubRMREVHlZNAjXVlZWbhy5Yryc+FGaba2tnB1dcWkSZMwZ84ceHp6wtPTE3PmzIGlpSUGDx4MALh27Ro2b94Mf39/2NnZ4datW5g7dy4sLCzQu3dvAE/fUn7ixAl07twZNjY2OHnyJCZPnow33ngDrq6uyrYbNWqE8PBwDBgwAJIkvbBtIiIiQ8WnF7Vj0EnXqVOn0LlzZ+Xn4OBgAMDw4cOxZs0ahISE4PHjxwgKCsKDBw/w2muvISoqSrlPlrm5OQ4fPoyIiAg8ePAADg4O6NixI44dOwZ7e3sAT6f8Nm/ejC+++AI5OTmoX78+Ro8ejZCQEJVYEhMTkZ6ervz8oraJiIgMleL/D13qV0WSKGmnMSpXGRkZsLGxQSf04wuviYioRPkiDwexE+np6WX2EunC30sXExxQQ4cXXmdmKtCo8Z0yjbUiMuiRLiIiItK/wqcQdalfFTHpIiIiIlkKxNNDl/pVUaV9epGIiIioIuFIFxEREcnChfTaYdJFREREsiggoQDFv2FFk/pVEacXiYiIiPSAI11EREQki0I8PXSpXxUx6SIiIiJZCnScXtSlriFj0kVERESyMOnSDtd0EREREekBR7qIiIhIFoWQoBA6PL2oQ11DxqSLiIiIZOH0onY4vUhERESkBxzpIiIiIlkKYIQCHcZtCkoxFkPCpIuIiIhkETqu6RJVdE0XpxeJiIiI9IAjXURERCQLF9Jrh0kXERERyVIgjFAgdFjTVUVfA8TpRSIiIiI94EgXERERyaKABIUO4zYKVM2hLiZdREREJAvXdGmHSRcRERHJovuarqo50sU1XURERER6wJEuIiIikuXpmi4dXnjN6UUiIiKiF1Po+BqgqrqQntOLRERERHrAkS4iIiKShQvptcOki4iIiGRRwIj7dGmB04tEREREesCRLiIiIpKlQEgoEDpsjqpDXUPGpIuIiIhkKdDx6cUCTi8SERERUVnhSBcRERHJohBGUOjw9KKCTy8SERERvRinF7XDpIuIiIhkUUC3xfCK0gvFoHBNFxEREZEecKSLiIiIZNF9c9SqOebDpIuIiIhk0f01QFUz6aqavSYiIiLSM450ERERkSwKSFBAl4X03JGeiIiI6IU4vaidqtlrIiIiIj3jSBcRERHJovvmqFVzzIdJFxEREcmiEBIUumyOqkNdQ1Y1U00iIiIiPeNIFxEREcmi0HF6kZujEhEREWlAIYyg0OEJRF3qGjImXURERCRLASQU6LDXli51DVnVTDWJiIiI9IwjXURERCQLpxe1w6SLiIiIZCmAblOEBaUXikGpmqkmERERkZ5xpIuIiIhk4fSidph0ERERkSx84bV2qmaviYiIyOAsW7YM7u7uMDc3h4+PDw4fPlzi9evXr4eXlxcsLS3h5OSEESNG4N69e3qKtigmXURERCSLgASFDofQYhH+5s2bMWnSJEybNg1xcXHo0KED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06bYa5ycnJCUlKRTYERERESViezpRT8/P7Rq1apIeW5uLn788UcAgCRJqF+/vu7RERERUYXD6UXtyE66RowYgfT09CLlmZmZGDFiRKkERURERBUXt4zQjuykSwgBSSr6Zf3zzz+wsbEplaCIiIiIKhuN13S1bNkSkiRBkiR07doVxsb/q1pQUICkpCT07NmzTIIkIiKiikPoOEVYVUe6NE66+vfvDwCIj49Hjx49YGVlpTxnamoKNzc3vPnmm2rrPvt0oyYkSUJsbCzXhREREVVAAoAQutWvijROumbMmAEAcHNzw6BBg2Bubq5xIw8fPkRERIRG049CCAQFBaGgoEDj+xMRERFVdLK3jNB209N33nkH9vb2Gl07fvx4rdogIiKisqeABEmHV/lU1dcAaZR02dra4tKlS6hTpw5q1aqldiF9ofv37xcpk/suxszMTFnXExERkf5wc1TtaJR0LVy4EDVq1FD+uaSki4iIiCo3hZAg6ZA4VdV9ujRKup6dUgwMDNS6MSEErl+/DhcXFxgbGyM3Nxfbt29HTk4OevfujTp16mh9byIiIqKKTPY+XbGxsTh79qzy886dO9G/f39MnToVubm5xdZLTEyEu7s7GjZsiMaNGyMpKQlt27bFyJEj8eGHH6Jx48a4fPmydr0gIiIivRFC96Mqkp10jRkzBpcuXQIAXLt2DYMGDYKlpSW2bNmCkJCQYutNmTIFXl5eiI+Px+uvv47XX38d9erVw4MHD/DgwQO0a9cOM2fO1L4nREREpBfckV47spOuS5cuwdvbGwCwZcsW+Pn5YcOGDVizZg22bt1abL1jx47hiy++QPPmzTFr1iwkJCTgk08+gYmJCUxNTTFlyhQcOnRI644QERERVWSyt4wQQiifRvz999/x+uuvAwBcXFxw9+7dYutlZWUpN0mtXr06qlevDicnJ+X5evXq4c6dO3LDISIiIj3j04vakT3S5evri1mzZuGnn35CTEwM+vTpAwBISkqCg4NDsfWcnZ2RnJys/Dxv3jyVfbv+/fdf1KpVS244REREpGeK/38NkC5HVSQ76YqIiEBsbCzGjRuHadOmoWHDhgCAn3/+GW3bti22Xrdu3XDx4kXl5w8//FC5DQUAREVFoVWrVnLDISIiIjIIkhCl8wzBkydPUK1aNZiYmGhVPykpCebm5ipTjlVdRkYGbGxs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VwJpy8LCAiNGjMCIESN0ug8RERGVgyqwI31ZkL056pdffonPP/8cjx490qrB8PBwrF69ukj56tWrMXfuXK3uSURERHpUBXakLwuyR7q++eYbXL16FQ4ODnBzc4OJiYnK+djY2BLrf/fdd9iwYUOR8qZNm+Kdd97BlClT5IZEREREVOHJTrr69++vU4OpqalwcnIqUm5nZ4eUlBSd7k1ERERljwvptSM76ZoxY4ZODbq4uODo0aNFXo599OhRODs763RvIiIi0gNuGaEV2UkXADx8+BA///wzrl69ik8//RS2traIjY2Fg4MD6tatW2LdUaNGYdKkScjLy0OXLl0AAH/88QdCQkLw8ccfaxMOERERUYUnO+n6+++/0a1bN9jY2OD69esYPXo0bG1tsX37dty4cQM//vhjifVDQkJw//59BAUFITc3FwBgbm6OKVOmIDQ0VLteEBERkf7oOL1YVUe6ZD+9GBwcjMDAQFy+fBnm5ubK8l69euHQoUMvrC9JEubOnYt///0XJ06cwJkzZ3D//n18/vnnckMhIiKi8sCnF7Uie6Tr5MmT+O6774qU161bF6mpqRrfx8rKCq+88orc5omIiKi8cU2XVmQnXebm5sjIyChSnpiYCDs7O43ucfLkSWzZsgXJycnKKcZC27ZtkxsSERERUYUne3qxX79+mDlzJvLy8gA8nS5MTk7GZ599hjfffPOF9Tdt2oR27drhwoUL2L59O/Ly8nDhwgXs378fNjY28ntAREREelW4ZYQuR1UkO+maP38+/v33X9jb2+Px48fw8/NDw4YNUaNGDcyePfuF9efMmYOFCxfi119/hampKRYtWoSEhAQEBATA1dVVq04QERERVXSypxetra1x5MgR7N+/H7GxsVAoFGjVqhW6deumUf2rV6+iT58+AAAzMzNkZ2dDkiRMnjwZXbp0wRdffCE3JCIiIqIKT3bS9eOPP2LQoEHo0qWLcp8tAMjNzcWmTZswbNiwEuvb2toiMzMTwNPF9+fOnUPz5s3x8OFDrd/nSERERHrEhfRakT29OGLECKSnpxcpz8zMxIgRI15Yv0OHDoiOjgYABAQEYOLEiRg9ejTeffdddO3aVW44REREpGdc06Ud2SNdQghIklSk/J9//tFoIfzSpUvx5MkTAEBoaChMTExw5MgRDBw4ENOnT5cbDhEREZFB0DjpatmyJSRJgiRJ6Nq1K4yN/1e1oKAASUlJ6Nmzp9q6wcHB+PLLL1G9enWcO3cObdu2BQAYGRkhJCQEISEhOnaDiIiI9KqKjlbpQuOkq3///gCA+Ph49OjRA1ZWVspzpqamcHNzK3bLiCVLlmDKlCmoXr06OnfujJSUFNjb2+sWOREREZUPrunSisZJ14wZMwAAbm5uGDRokMorgF7Ezc0Nixcvhr+/P4QQOH78OGrVqqX22o4dO2p8XyIiIiJDIXtN1/DhwwEAp0+fRkJCAiRJQpMmTdCyZcti63z99dcYO3YswsPDIUkSBgwYoPY6SZJQUFAgNyQiIiLSI10Xw3MhvYbS0tLwzjvv4ODBg6hZsyaEEEhPT0fnzp2xadMmta8C6t+/P/r374+srCxYW1vj0qVLGr8yiIiIiCoYTi9qRfaWEePHj0dGRgbOnz+P+/fv48GDBzh37hwyMjIwYcKEEuuam5tj9erVMDc3h42NjdpDjkOHDqFv375wdnaGJEnYsWOHynkhBMLCwuDs7AwLCwt06tQJ58+fV7lmzJgx8PDwgIWFBezs7NCvXz9cvHhRbXs5OTnw9vaGJEmIj4/XOM4xY8ZAkiRERETI6h8REVFFxC0jtCM76dq7dy+WL1+Oxo0bK8uaNGmCb7/9Fnv27CmxrrGxMYKCgkptCjE7OxteXl5YunSp2vPz5s3DggULsHTpUpw8eRKOjo7o3r27cnNWAPDx8UFkZCQSEhKwb98+CCHg7++vNsaQkBA4OzvLinHHjh34888/ZdcjIiKiykV20qVQKGBiYlKk3MTEBAqF4oX1X3vtNVmjRCXp1asXZs2ahYEDBxY5J4RAREQEpk2bhoEDB6JZs2ZYu3YtHj16hA0bNiiv++CDD9CxY0e4ubmhVatWmDVrFm7evInr16+r3G/Pnj2IiorC/PnzNY7v1q1bGDduHNavX6/2OyMiIjJIohQOLSxbtgzu7u4wNzeHj48PDh8+rFG9o0ePwtjYGN7e3to1XEpkJ11dunTBxIkTcfv2bWXZrVu3MHnyZI12lA8KCkJwcDCWLl2K48eP4++//1Y5SktSUhJSU1Ph7++vLDMzM4Ofnx+OHTumtk52djYiIyPh7u4OFxcXZfmdO3cwevRo/PTTT7C0tNSofYVCgaFDh+LTTz9F06ZNNaqTk5ODjIwMlYOIiKjCKYeka/PmzZg0aRKmTZuGuLg4dOjQAb169UJycnKJ9dLT0zFs2LAK8dYb2UnX0qVLkZmZCTc3N3h4eKBhw4Zwd3dHZmYmlixZ8sL6gwYNQlJSEiZMmIB27drB29sbLVu2VP5vaUlNTQUAODg4qJQ7ODgozxVatmwZrKysYGVlhb179yI6OhqmpqYAno6YBQYGYuzYsfD19dW4/blz58LY2PiF69yeFR4errK+7dnEj4iIqCpbsGABRo4ciVGjRqFx48aIiIiAi4sLli9fXmK9MWPGYPDgwWjTpo2eIi2e7KcXXVxcEBsbi99//x0JCQkQQqBJkybo1q2bRvWTkpJkB6mL519ZpO41RkOGDEH37t2RkpKC+fPnIyAgAEePHoW5uTmWLFmCjIwMhIaGatzm6dOnsWjRIsTGxqp9ZVJxQkNDERwcrPyckZHBxIuIiCqc0toy4vkZHTMzM5iZmRW5Pjc3F6dPn8Znn32mUu7v71/s7BUAREZG4urVq1i3bh1mzZqlfcClRFbStWXLFuzYsQN5eXno1q0bxo8fL7vB+vXry66jDUdHRwBPR7ycnJyU5WlpaUVGvwpHljw9PdG6dWvUqlUL27dvx7vvvov9+/fjxIkTRf4S+Pr6YsiQIVi7dm2Rtg8fPoy0tDS4uroqywoKCvDxxx8jIiKiyHqxQsX9ZSMiIqpQSmnLiOcHFmbMmIGwsLAil9+9excFBQUazV4Vunz5Mj777DMcPnxY5dWF5UnjKFauXImxY8fC09MT5ubm2Lp1K5KSkhAeHi670Z9++gkrVqxAUlISjh8/jvr16yMiIgLu7u7o16+f7Pup4+7uDkdHR0RHRyunLXNzcxETE4O5c+eWWFcIgZycHADA4sWLVbLj27dvo0ePHti8eTNee+01tfWHDh1aZOSvR48eGDp0KEaMGKFLt4iIiCqNmzdvwtraWvn5RQMPmsxeAU8HOgYPHowvvvgCL730UukEWwo0XtO1ZMkSTJs2DYmJiThz5gx++OGHYrdqKMny5csRHByM3r174+HDh8qtGWrWrCl7H6usrCzEx8crn4ZMSkpCfHw8kpOTIUkSJk2ahDlz5mD79u04d+4cAgMDYWlpicGDBwMArl27hvDwcJw+fRrJyck4fvw4AgICYGFhgd69ewMAXF1d0axZM+VR+MPz8PBAvXr1lLE0atQI27dvBwDUrl1bpU6zZs1gYmICR0dHvPzyy7K/MyIiogqllBbSW1tbqxzFJV116tRBtWrVioxqqZu9AoDMzEycOnUK48aNg7GxMYyNjTFz5kycOXMGxsbG2L9/v85fgTY0TrquXbumMkozdOhQ5OTkFDusV5wlS5bg+++/x7Rp01CtWjVlua+vL86ePSvrXqdOnULLli2VI1nBwcFo2bIlPv/8cwBP99WaNGkSgoKC4Ovri1u3biEqKgo1atQA8HSz1sOHD6N3795o2LAhAgICUL16dRw7dkz2C7kTExORnp4uqw4REZEh0vfmqKampvDx8UF0dLRKeXR0NNq2bVvkemtra5w9e1Y5MBMfH4+xY8fi5ZdfRnx8fLEzVWVN4+nFx48fw8rKSvm5WrVqMDMzw6NHj2Q1mJSUpPYpRTMzM2RnZ8u6V6dOnSBE8T85SZIQFhamdn4YAJydnbF7925Zbbq5ualts6Q4ABS7jouIiIheLDg4GEOHDoWvry/atGmDlStXIjk5GWPHjgXw9GG0W7du4ccff4SRkRGaNWumUt/e3h7m5uZFyvVJ1sqyVatWqSRe+fn5WLNmDerUqaMse9EWCe7u7oiPjy+yoH7Pnj1o0qSJnHCIiIioPJTDuxcHDRqEe/fuYebMmUhJSUGzZs2we/duZT6RkpLywj27ypskXjRE8//c3NxeuP2BJEm4du1aiddERkZi+vTp+OabbzBy5EisWrUKV69eRXh4OFatWoV33nlH8+gruYyMDNjY2KAT+sFY4o72RERUvHyRh4PYifT0dJXF6aWp8PdS43FzUM3MXOv7FOQ8QcLSqWUaa0Wk8UhXaU2PjRgxAvn5+QgJCcGjR48wePBg1K1bF4sWLWLCRUREZAjKYaSrMiiXjStGjx6N0aNH4+7du1AoFLIXrRMREREZGtmvAdJVly5d8PDhQwBPHwEtTLgyMjLQpUsXfYdDREREcpXTC68Nnd5Hug4ePIjc3Nwi5U+ePNH4beFERERUfqT/P3SpXxXpLen6+++/lX++cOGCyv5eBQUF2Lt3L+rWrauvcIiIiIj0Sm9Jl7e3NyRJgiRJaqcRLSwssGTJEn2FQ0RERNriQnqtyE66qlWrhpSUlCKL3+/duwd7e3vla32el5SUBCEEGjRogL/++gt2dnbKc6amprC3t1fZoZ6IiIgqJm12lX++flUkO+kqbluvnJwcmJqaFluvcPMyhUIht0kiIiIig6dx0rV48WIATzdAfX5n+oKCAhw6dAiNGjXS6F6XLl3CwYMHkZaWViQJK3xvIhEREVVQnF7UisZJ18KFCwE8HelasWKFylSgqakp3NzcsGLFihfe5/vvv8eHH36IOnXqwNHRUWWXe0mSmHQREREZgiqaOOlC46QrKSkJANC5c2ds27YNtWrV0qrBWbNmYfbs2ZgyZYpW9YmIiIgMkezNUQ8cOIBatWohNzcXiYmJyM/Pl1X/wYMHePvtt+U2S0RERBVE4UJ6XY6qSHbS9fjxY4wcORKWlpZo2rSp8o3eEyZMwFdfffXC+m+//TaioqLkR0pEREQVA3ek14rspxc/++wznDlzBgcPHkTPnj2V5d26dcOMGTPw2WeflVi/YcOGmD59Ok6cOIHmzZvDxMRE5fyECRPkhkRERER6xC0jtCM76dqxYwc2b96M1q1bqyyCb9KkCa5evfrC+itXroSVlRViYmIQExOjck6SJCZdREREVCnJTrr+/fffIhujAkB2drZKElacwgX5REREZKC4ZYRWZK/peuWVV/Dbb78pPxcmWt9//z3atGlTepERERFRhcSF9NqRPdIVHh6Onj174sKFC8jPz8eiRYtw/vx5HD9+vMh0YaHg4GB8+eWXqF69OoKDg0u8/4IFC+SGRERERFThyU662rZti6NHj2L+/Pnw8PBAVFQUWrVqhePHj6N58+Zq68TFxSEvL0/55+JoMj1JRERE5YzTi1qRnXQBQPPmzbF27VqNrz9w4IDaPxMREZEBYtKlFdlJV0ZGhtpySZJgZmZW4kuviYiIiKoq2UlXzZo1S5wGrFevHgIDAzFjxgwYGclep09EREQVHPfp0o7spGvNmjWYNm0aAgMD8eqrr0IIgZMnT2Lt2rX4z3/+g3///Rfz58+HmZkZpk6dWhYxExERUXni9KJWZCdda9euxTfffIOAgABl2RtvvIHmzZvju+++wx9//AFXV1fMnj2bSRcRERHR/5M9/3f8+HG0bNmySHnLli1x/PhxAED79u2V72QkIiKiykUSQuejKpKddNWrVw8//PBDkfIffvgBLi4uAIB79+6hVq1aukdHREREFQ9feK0V2dOL8+fPx9tvv409e/bglVdegSRJOHnyJC5evIiff/4ZAHDy5EkMGjSo1IMlIiKi8seF9NqRnXS98cYbuHTpElasWIHExEQIIdCrVy/s2LEDbm5uAIAPP/ywtOMkIiIiMmiykq68vDz4+/vju+++Q3h4eFnFRERERBUZn17Uiqyky8TEBOfOnePreoiIiKowTi9qR/ZC+mHDhqldSE9ERERExZO9pis3NxerVq1CdHQ0fH19Ub16dZXzCxYsKLXgiIiIqALi9KJWZCdd586dQ6tWrQAAly5dUjnHaUciIqLKj9OL2pGddB04cKAs4iAiIiKq1GQnXURERFTFcXpRK1olXSdPnsSWLVuQnJyM3NxclXPbtm0rlcCIiIio4qqqU4S6kP304qZNm9CuXTtcuHAB27dvR15eHi5cuID9+/fDxsamLGIkIiIiMniyk645c+Zg4cKF+PXXX2FqaopFixYhISEBAQEBcHV1LYsYiYiIqCIRQvejCpKddF29ehV9+vQBAJiZmSE7OxuSJGHy5MlYuXJlqQdIREREFUvh04u6HFWR7KTL1tYWmZmZAIC6devi3LlzAICHDx/i0aNHpRsdERERVTyiFI4qSOOk6/3330dmZiY6dOiA6OhoAEBAQAAmTpyI0aNH491330XXrl3LLFAiIiIiQ6bx04tr167FV199haVLl+LJkycAgNDQUJiYmODIkSMYOHAgpk+fXmaBEhERUcUgKZ4eutSvijROusT/L3qztbVVlhkZGSEkJAQhISGlHxkRERFVTNynSyuy1nTxNT9ERERE2pG1OepLL730wsTr/v37OgVEREREFRvfvagdWUnXF198wQ1QiYiIqjpd99qqovt0yUq63nnnHdjb25dVLERERESVlsZJF9dzEREREcDpRW3JfnqRiIiIqjg+vagVjZMuhaKKbqpBREREVApkrekiIiIi4vSidph0ERERkTx8elErTLqIiIhIFo50aUfWjvREREREpB2OdBEREZE8fHpRK0y6iIiISBZOL2qH04tEREREemDQSdehQ4fQt29fODs7Q5Ik7NixQ+W8EAJhYWFwdnaGhYUFOnXqhPPnz6tcM2bMGHh4eMDCwgJ2dnbo168fLl68qLa9nJwceHt7Q5IkxMfHFxtXXl4epkyZgubNm6N69epwdnbGsGHDcPv2bV27TEREVP4UQvejCjLopCs7OxteXl5YunSp2vPz5s3DggULsHTpUpw8eRKOjo7o3r07MjMzldf4+PggMjISCQkJ2LdvH4QQ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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "(ds['e'].isel(Time=0)>0).plot()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/ocean_only/flow_downslope/layer/MOM_parameter_doc.all b/ocean_only/flow_downslope/layer/MOM_parameter_doc.all index 148240ad3d..a8312ba5a4 100644 --- a/ocean_only/flow_downslope/layer/MOM_parameter_doc.all +++ b/ocean_only/flow_downslope/layer/MOM_parameter_doc.all @@ -191,7 +191,7 @@ REFERENCE_HEIGHT = 0.0 ! [m] default = 0.0 ! A reference value for geometric height fields, such as bathyT. ! === module MOM_fixed_initialization === -INPUTDIR = "INPUT" ! default = "." +INPUTDIR = "." ! default = "." ! The directory in which input files are found. ! === module MOM_grid_init === @@ -527,7 +527,7 @@ SPONGE = False ! [Boolean] default = False ! properties of those sponges are specified via SPONGE_CONFIG. ! === module MOM_diag_mediator === -NUM_DIAG_COORDS = 1 ! default = 1 +NUM_DIAG_COORDS = 2 ! default = 1 ! The number of diagnostic vertical coordinates to use. For each coordinate, an ! entry in DIAG_COORDS must be provided. DIAG_REMAPPING_USE_OM4_SUBCELLS = True ! [Boolean] default = True @@ -541,10 +541,10 @@ REMAPPING_ANSWER_DATE = 99991231 ! default = 99991231 ! robust and accurate forms of mathematically equivalent expressions. USE_INDEX_DIAGNOSTIC_AXES = False ! [Boolean] default = False ! If true, use a grid index coordinate convention for diagnostic axes. -DIAG_COORDS = "z Z ZSTAR" ! default = "z Z ZSTAR" +DIAG_COORDS = "z Z ZSTAR", "rho0 RHO0 RHO" ! ! A list of string tuples associating diag_table modules to a coordinate - ! definition used for diagnostics. Each string is of the form "MODULE_SUFFIX - ! PARAMETER_SUFFIX COORDINATE_NAME". + ! definition used for diagnostics. Each string is of the form + ! "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME". DIAG_MISVAL = 1.0E+20 ! [various] default = 1.0E+20 ! Set the default missing value to use for diagnostics. DIAG_AS_CHKSUM = False ! [Boolean] default = False @@ -569,6 +569,47 @@ DIAG_COORD_DEF_Z = "WOA09" ! default = "WOA09" ! the filename and two variable names, separated ! by a comma or space, for sigma-2 and dz. e.g. ! HYBRID:vgrid.nc,sigma2,dz +INTERPOLATION_SCHEME = "PPM_H4" ! default = "PPM_H4" + ! This sets the interpolation scheme to use to determine the new grid. These + ! parameters are only relevant when REGRIDDING_COORDINATE_MODE is set to a + ! function of state. Otherwise, it is not used. It can be one of the following + ! schemes: + ! P1M_H2 (2nd-order accurate) + ! P1M_H4 (2nd-order accurate) + ! P1M_IH4 (2nd-order accurate) + ! PLM (2nd-order accurate) + ! PPM_CW (3rd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! P3M_IH4IH3 (4th-order accurate) + ! P3M_IH6IH5 (4th-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) +DIAG_COORD_DEF_RHO0 = "FILE:targetlayers_rho0.nc,interfaces=interfaces" ! default = "WOA09" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter DIAG_COORD_RES_RHO0 + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +DIAG_COORD_P_REF_RHO0 = 0.0 ! [Pa] default = 2.0E+07 + ! The pressure that is used for calculating the diagnostic coordinate density. + ! (1 Pa = 1e4 dbar, so 2e7 is commonly used.) This is only used for the RHO + ! coordinate. +DIAG_COORD_REGRID_COMPRESSIBILITY_FRACTION_RHO0 = 0.0 ! [nondim] default = 0.0 + ! When interpolating potential density profiles we can add some artificial + ! compressibility solely to make homogeneous regions appear stratified. +DIAG_COORD_NEEDS_SORTING_RHO0 = False ! [Boolean] default = False + ! Specifies whether the variable from which the coordinate is derived (e.g. + ! density) should be vertically sorted (to be monotonically increasing) prior to + ! regridding. The sorting is carried over to all remapped fields. ! === module MOM_MEKE === USE_MEKE = False ! [Boolean] default = False diff --git a/ocean_only/flow_downslope/layer/MOM_parameter_doc.layout b/ocean_only/flow_downslope/layer/MOM_parameter_doc.layout index 126209f1b8..140ed1e556 100644 --- a/ocean_only/flow_downslope/layer/MOM_parameter_doc.layout +++ b/ocean_only/flow_downslope/layer/MOM_parameter_doc.layout @@ -36,13 +36,13 @@ MASKTABLE = "MOM_mask_table" ! default = "MOM_mask_table" ! 4,6 ! 1,2 ! 3,6 -NIPROC = 2 ! +NIPROC = 1 ! ! The number of processors in the x-direction. With STATIC_MEMORY_ this is set ! in MOM_memory.h at compile time. NJPROC = 1 ! ! The number of processors in the y-direction. With STATIC_MEMORY_ this is set ! in MOM_memory.h at compile time. -LAYOUT = 2, 1 ! +LAYOUT = 1, 1 ! ! The processor layout that was actually used. IO_LAYOUT = 1, 1 ! default = 1, 1 ! The processor layout to be used, or 0,0 to automatically set the io_layout to diff --git a/ocean_only/flow_downslope/layer/MOM_parameter_doc.short b/ocean_only/flow_downslope/layer/MOM_parameter_doc.short index f5287c1576..6a67ad82ce 100644 --- a/ocean_only/flow_downslope/layer/MOM_parameter_doc.short +++ b/ocean_only/flow_downslope/layer/MOM_parameter_doc.short @@ -35,8 +35,6 @@ NJGLOBAL = 4 ! ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. ! === module MOM_fixed_initialization === -INPUTDIR = "INPUT" ! default = "." - ! The directory in which input files are found. ! === module MOM_grid_init === GRID_CONFIG = "cartesian" ! @@ -206,6 +204,31 @@ S_RANGE = 1.0 ! [ppt] default = 2.0 ! Initial salinity range ! === module MOM_diag_mediator === +NUM_DIAG_COORDS = 2 ! default = 1 + ! The number of diagnostic vertical coordinates to use. For each coordinate, an + ! entry in DIAG_COORDS must be provided. +DIAG_COORDS = "z Z ZSTAR", "rho0 RHO0 RHO" ! + ! A list of string tuples associating diag_table modules to a coordinate + ! definition used for diagnostics. Each string is of the form + ! "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME". +DIAG_COORD_DEF_RHO0 = "FILE:targetlayers_rho0.nc,interfaces=interfaces" ! default = "WOA09" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter DIAG_COORD_RES_RHO0 + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +DIAG_COORD_P_REF_RHO0 = 0.0 ! [Pa] default = 2.0E+07 + ! The pressure that is used for calculating the diagnostic coordinate density. + ! (1 Pa = 1e4 dbar, so 2e7 is commonly used.) This is only used for the RHO + ! coordinate. ! === module MOM_lateral_mixing_coeffs === diff --git a/ocean_only/flow_downslope/z/MOM_parameter_doc.all b/ocean_only/flow_downslope/z/MOM_parameter_doc.all index 2857ce0b9c..03354015f8 100644 --- a/ocean_only/flow_downslope/z/MOM_parameter_doc.all +++ b/ocean_only/flow_downslope/z/MOM_parameter_doc.all @@ -200,7 +200,7 @@ REFERENCE_HEIGHT = 0.0 ! [m] default = 0.0 ! A reference value for geometric height fields, such as bathyT. ! === module MOM_fixed_initialization === -INPUTDIR = "INPUT" ! default = "." +INPUTDIR = "." ! default = "." ! The directory in which input files are found. ! === module MOM_grid_init === @@ -650,7 +650,7 @@ SPONGE = False ! [Boolean] default = False ! properties of those sponges are specified via SPONGE_CONFIG. ! === module MOM_diag_mediator === -NUM_DIAG_COORDS = 1 ! default = 1 +NUM_DIAG_COORDS = 2 ! default = 1 ! The number of diagnostic vertical coordinates to use. For each coordinate, an ! entry in DIAG_COORDS must be provided. DIAG_REMAPPING_USE_OM4_SUBCELLS = True ! [Boolean] default = True @@ -659,10 +659,10 @@ DIAG_REMAPPING_USE_OM4_SUBCELLS = True ! [Boolean] default = True ! false. USE_INDEX_DIAGNOSTIC_AXES = False ! [Boolean] default = False ! If true, use a grid index coordinate convention for diagnostic axes. -DIAG_COORDS = "z Z ZSTAR" ! default = "z Z ZSTAR" +DIAG_COORDS = "z Z ZSTAR", "rho0 RHO0 RHO" ! ! A list of string tuples associating diag_table modules to a coordinate - ! definition used for diagnostics. Each string is of the form "MODULE_SUFFIX - ! PARAMETER_SUFFIX COORDINATE_NAME". + ! definition used for diagnostics. Each string is of the form + ! "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME". DIAG_MISVAL = 1.0E+20 ! [various] default = 1.0E+20 ! Set the default missing value to use for diagnostics. DIAG_AS_CHKSUM = False ! [Boolean] default = False @@ -687,6 +687,47 @@ DIAG_COORD_DEF_Z = "WOA09" ! default = "WOA09" ! the filename and two variable names, separated ! by a comma or space, for sigma-2 and dz. e.g. ! HYBRID:vgrid.nc,sigma2,dz +INTERPOLATION_SCHEME = "PPM_H4" ! default = "PPM_H4" + ! This sets the interpolation scheme to use to determine the new grid. These + ! parameters are only relevant when REGRIDDING_COORDINATE_MODE is set to a + ! function of state. Otherwise, it is not used. It can be one of the following + ! schemes: + ! P1M_H2 (2nd-order accurate) + ! P1M_H4 (2nd-order accurate) + ! P1M_IH4 (2nd-order accurate) + ! PLM (2nd-order accurate) + ! PPM_CW (3rd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! P3M_IH4IH3 (4th-order accurate) + ! P3M_IH6IH5 (4th-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) +DIAG_COORD_DEF_RHO0 = "FILE:targetlayers_rho0.nc,interfaces=interfaces" ! default = "WOA09" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter DIAG_COORD_RES_RHO0 + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +DIAG_COORD_P_REF_RHO0 = 0.0 ! [Pa] default = 2.0E+07 + ! The pressure that is used for calculating the diagnostic coordinate density. + ! (1 Pa = 1e4 dbar, so 2e7 is commonly used.) This is only used for the RHO + ! coordinate. +DIAG_COORD_REGRID_COMPRESSIBILITY_FRACTION_RHO0 = 0.0 ! [nondim] default = 0.0 + ! When interpolating potential density profiles we can add some artificial + ! compressibility solely to make homogeneous regions appear stratified. +DIAG_COORD_NEEDS_SORTING_RHO0 = True ! [Boolean] default = False + ! Specifies whether the variable from which the coordinate is derived (e.g. + ! density) should be vertically sorted (to be monotonically increasing) prior to + ! regridding. The sorting is carried over to all remapped fields. ! === module MOM_MEKE === USE_MEKE = False ! [Boolean] default = False diff --git a/ocean_only/flow_downslope/z/MOM_parameter_doc.layout b/ocean_only/flow_downslope/z/MOM_parameter_doc.layout index 126209f1b8..140ed1e556 100644 --- a/ocean_only/flow_downslope/z/MOM_parameter_doc.layout +++ b/ocean_only/flow_downslope/z/MOM_parameter_doc.layout @@ -36,13 +36,13 @@ MASKTABLE = "MOM_mask_table" ! default = "MOM_mask_table" ! 4,6 ! 1,2 ! 3,6 -NIPROC = 2 ! +NIPROC = 1 ! ! The number of processors in the x-direction. With STATIC_MEMORY_ this is set ! in MOM_memory.h at compile time. NJPROC = 1 ! ! The number of processors in the y-direction. With STATIC_MEMORY_ this is set ! in MOM_memory.h at compile time. -LAYOUT = 2, 1 ! +LAYOUT = 1, 1 ! ! The processor layout that was actually used. IO_LAYOUT = 1, 1 ! default = 1, 1 ! The processor layout to be used, or 0,0 to automatically set the io_layout to diff --git a/ocean_only/flow_downslope/z/MOM_parameter_doc.short b/ocean_only/flow_downslope/z/MOM_parameter_doc.short index b441a302a0..b04514ecb0 100644 --- a/ocean_only/flow_downslope/z/MOM_parameter_doc.short +++ b/ocean_only/flow_downslope/z/MOM_parameter_doc.short @@ -33,8 +33,6 @@ NJGLOBAL = 4 ! ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. ! === module MOM_fixed_initialization === -INPUTDIR = "INPUT" ! default = "." - ! The directory in which input files are found. ! === module MOM_grid_init === GRID_CONFIG = "cartesian" ! @@ -232,6 +230,35 @@ S_RANGE = 1.0 ! [ppt] default = 2.0 ! Initial salinity range ! === module MOM_diag_mediator === +NUM_DIAG_COORDS = 2 ! default = 1 + ! The number of diagnostic vertical coordinates to use. For each coordinate, an + ! entry in DIAG_COORDS must be provided. +DIAG_COORDS = "z Z ZSTAR", "rho0 RHO0 RHO" ! + ! A list of string tuples associating diag_table modules to a coordinate + ! definition used for diagnostics. Each string is of the form + ! "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME". +DIAG_COORD_DEF_RHO0 = "FILE:targetlayers_rho0.nc,interfaces=interfaces" ! default = "WOA09" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter DIAG_COORD_RES_RHO0 + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +DIAG_COORD_P_REF_RHO0 = 0.0 ! [Pa] default = 2.0E+07 + ! The pressure that is used for calculating the diagnostic coordinate density. + ! (1 Pa = 1e4 dbar, so 2e7 is commonly used.) This is only used for the RHO + ! coordinate. +DIAG_COORD_NEEDS_SORTING_RHO0 = True ! [Boolean] default = False + ! Specifies whether the variable from which the coordinate is derived (e.g. + ! density) should be vertically sorted (to be monotonically increasing) prior to + ! regridding. The sorting is carried over to all remapped fields. ! === module MOM_lateral_mixing_coeffs === diff --git a/ocean_only/rotating_gravity_current/Zsetup_2D/gmac_analysis.ipynb b/ocean_only/rotating_gravity_current/Zsetup_2D/gmac_analysis.ipynb new file mode 100644 index 0000000000..04578a06c9 --- /dev/null +++ b/ocean_only/rotating_gravity_current/Zsetup_2D/gmac_analysis.ipynb @@ -0,0 +1,1601 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Basic analysis of shortened RGC experiment" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "import xarray as xr\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "ds_z = xr.open_dataset('prog_z.nc').mean(['yh','yq'])\n", + "ds_rho0 = xr.open_dataset('prog_rho0.nc').mean(['yh','yq'])" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:    (xh: 80, z_l: 30, z_i: 31, Time: 128, xq: 81)\n",
+       "Coordinates:\n",
+       "  * xh         (xh) float64 0.5 1.5 2.5 3.5 4.5 5.5 ... 75.5 76.5 77.5 78.5 79.5\n",
+       "  * z_l        (z_l) float64 41.66 125.0 208.3 ... 2.291e+03 2.375e+03 2.458e+03\n",
+       "  * z_i        (z_i) float64 0.0 83.33 166.7 ... 2.333e+03 2.416e+03 2.5e+03\n",
+       "  * Time       (Time) object 0001-01-01 06:00:00 ... 0001-02-02 00:00:00\n",
+       "  * xq         (xq) float64 0.0 1.0 2.0 3.0 4.0 5.0 ... 76.0 77.0 78.0 79.0 80.0\n",
+       "Data variables:\n",
+       "    temp       (Time, z_l, xh) float32 -0.05994 -0.05979 ... -0.8865 -0.8863\n",
+       "    salt       (Time, z_l, xh) float32 34.48 34.48 34.48 ... 34.91 34.91 34.91\n",
+       "    u          (Time, z_l, xq) float32 0.0 -9.926e-07 ... 0.0002102 0.0\n",
+       "    v          (Time, z_l, xh) float32 2.878e-05 8.53e-05 ... 0.0001362\n",
+       "    h          (Time, z_l, xh) float32 40.38 40.47 40.6 ... 83.2 83.26 83.31\n",
+       "    e          (Time, z_i, xh) float32 -0.005484 -0.005476 ... -2.5e+03 -2.5e+03\n",
+       "    tr_RGC1    (Time, z_l, xh) float32 0.9995 0.9995 0.9995 ... 0.0 0.0 0.0\n",
+       "    rhopot0    (Time, z_l, xh) float32 1.028e+03 1.028e+03 ... 1.028e+03\n",
+       "    rhopot2    (Time, z_l, xh) float32 1.037e+03 1.037e+03 ... 1.037e+03\n",
+       "    rhoinsitu  (Time, z_l, xh) float32 1.028e+03 1.028e+03 ... 1.04e+03 1.04e+03
" + ], + "text/plain": [ + "\n", + "Dimensions: (xh: 80, z_l: 30, z_i: 31, Time: 128, xq: 81)\n", + "Coordinates:\n", + " * xh (xh) float64 0.5 1.5 2.5 3.5 4.5 5.5 ... 75.5 76.5 77.5 78.5 79.5\n", + " * z_l (z_l) float64 41.66 125.0 208.3 ... 2.291e+03 2.375e+03 2.458e+03\n", + " * z_i (z_i) float64 0.0 83.33 166.7 ... 2.333e+03 2.416e+03 2.5e+03\n", + " * Time (Time) object 0001-01-01 06:00:00 ... 0001-02-02 00:00:00\n", + " * xq (xq) float64 0.0 1.0 2.0 3.0 4.0 5.0 ... 76.0 77.0 78.0 79.0 80.0\n", + "Data variables:\n", + " temp (Time, z_l, xh) float32 -0.05994 -0.05979 ... -0.8865 -0.8863\n", + " salt (Time, z_l, xh) float32 34.48 34.48 34.48 ... 34.91 34.91 34.91\n", + " u (Time, z_l, xq) float32 0.0 -9.926e-07 ... 0.0002102 0.0\n", + " v (Time, z_l, xh) float32 2.878e-05 8.53e-05 ... 0.0001362\n", + " h (Time, z_l, xh) float32 40.38 40.47 40.6 ... 83.2 83.26 83.31\n", + " e (Time, z_i, xh) float32 -0.005484 -0.005476 ... -2.5e+03 -2.5e+03\n", + " tr_RGC1 (Time, z_l, xh) float32 0.9995 0.9995 0.9995 ... 0.0 0.0 0.0\n", + " rhopot0 (Time, z_l, xh) float32 1.028e+03 1.028e+03 ... 1.028e+03\n", + " rhopot2 (Time, z_l, xh) float32 1.037e+03 1.037e+03 ... 1.037e+03\n", + " rhoinsitu (Time, z_l, xh) float32 1.028e+03 1.028e+03 ... 1.04e+03 1.04e+03" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ds_z" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ds_z['temp'].isel(Time=0).plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEiCAYAAADjxEWuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAArz0lEQVR4nO3de7ylc93/8dd7BpPT5DBDMqahUEiDIaJySuouVHclHXArN7cS6i6TUt0lbip3fqGmEsohlVNHp5BCGofMjEPEYJiMKcwkDbP35/fH97vMNXvWWvvae+113O/n43E9Zl3nz1p7z/rs63tURGBmZjbQmHYHYGZmnckJwszMqnKCMDOzqpwgzMysKicIMzOrygnCzMyqcoLoMpLmSNq13XGYWe9zgugwkv5RWPolPVtYf39EbBkR17U7zlqU/K+kv+XlZEkq7J8i6VpJ/5R0j6Q9B5x/gKSHJD0j6VJJ6xT2vUfSjfnc60rEMk7SWZIWSfqrpGMK+zaTdJmkJyT9XdIVkjYf5HpTJd2a73+rpKmFfQfmbYskzcvve6U61xr25zCU9zlY3DWud3S+ztP5uuMK+9aRdEmO6yFJB9S7lnW5iPDSoQswF9iz3XEMMeb/BO4FJgEbAncBhxX23wR8HVgVeBfwFDAx79sSWAy8AVgDOB+4sHDunsB7gOOB60rEciJwA7A28Crgr8Deed8OwCHAOsDKwJeAe+pcaxXgIeBoYBxwZF5fJe8/HHh9Pm5D4Fbg2DrXG/bnMMT3WTfuKtd6M/B4jmFt4DrgpML+C4Af5bh2AZ4Gtmz3752X5ixtD8BLnR9OlQRR3AZ8Afgx8MP8hTIL2AyYDiwAHgH2Kpz7YuB7wHzgUeDLwNgRjvlG4NDC+iHAzfn1ZsASYM3C/hvICQT4CnB+Yd/LgeeKx+ftHy6ZIB4d8P6/VOuLNieKANatsX+vfD0Vtj1c+SKucvwxwM9q7BuRz6HM+xxG3OcDXyms7wH8Nb9ePcexWWH/D4oJxEtvLS5i6n5vJ/0nXRu4HbiCVHS4IfA/wLcLx54DLAVeAWxD+vL4cLWL5iKOp+osk2vEsyXwp8L6n/K2yr4HImJxnf0vnBsRfyF/IdX7AGrEvzbw0jqxDPQG0hfh32rs3xK4M/K3YnbnINebU+daw/4cJB0r6ef59WDvs27cknaR9NSA2AZea31J6+b790XEn2vcy3pMzTJS6xo3RMQVAJJ+DLyT9Bddn6QLgRmS1iIVL7wFWCsingWekXQqcCjLJxEAIuJ80l+TQ7UGqdih4mlgjVwPMXBfZf+GNc6t7F9zmHFUzq97LUmTgNNJf/XXu16p2CQdDEyjRvKtc61Sn0NEnDTgWlD7fQ52rd8Ba9WJrfJ6zcGuZb3HTxDd7/HC62eBhRHRV1iH9B/7ZaSy9vmVpwBSYlhvhOP5BzC+sD4e+Ef+C3bgvsr+xTXOHbi/JknfKlTmfyZfq3J+zWtJmghcCZwRERcUthcbC0wuG5uk/YCTgLdExMIa4Y7k5zDY+xzqZ1rt50c+ftg/H+tOThCjxyOkcu8JEbFWXsZHRNXiAUnvH/AlOXCpVcQ0B3hNYf01LCtqmQNsImnNOvtfOFfSJqQnn2KRRlURcVhErJGXr0TEk6S6llqxVIpnrgQuj4gTBlxvjcLycD5v62KLLGDrAdfbG/gO8PaImFUn3BH7HEq8z0HjrhLbwGs9nove/gysJGnTGveyXtPuShAvtRfKVVL/sLBvT2BuYX0lUsXrpLx+GfAN0l99Y0iVn28c4ZgPA+4mFZe8lPTlUWzFdDPwVeBFwDtYsfXOIlJroNVJle/FVkxj83mHAb/Nr1euE8tJwPWk+plXkr5IK617xgO3AN8s+b4qrYE+Tvqy/ijLt2LaHfgb8IaS1xv25zDE91k37irX2pvUCmqLfL3fsHwrpgtJLZlWB3bGrZh6eml7AF7q/HBGPkG8GDgTmJf/Y98O7D/CMQs4Gfh7Xk5m+RY0U0hNJ58lNYcd+P4OILWyeYaU0NYp7Dsov5/icnadWMYBZ+Uv28eBYwr7DsznP0MqOqksk+tcbxtS89VngduAbQr7riU1AChe61d1rtXI5/CZ4rXrvc8Scb+eVARYPP6YfJ1FwPeBcYV96wCX5rgeBg5o9/8TL81blH/oZmZmy3EdhJmZVeUEYWZmVTlBmJlZVU4QZmZWlROEmZlV1bNDbUyYMCGmTJnS7jDMhm3REvc/a5X7Zv9rYURMHO75b95t9fjb3/sGPxC49c4lV0TE3sO9Vyv1bIKYMmUKM2fObHcYZsN21YOvancIo8Zem9zzUCPnL/z7Um789YaDHwi86KUPTmjkXq3UswnCzKxVAuin9/qUOUGYmY2AfvrbHcKIc4IwM2tQEPT14KgUThBmZiPARUxmZraCAPqcIMysUb+Zu3nNfX0x9K5JY9XZZd/13lPZ2EfiGmWvNxwBPB+d/XMYDicIM7MR0HvpwQnCzKxhQbiIyczMqgjo67384ARhZtao1FGu9zhBmJk1TPShdgcx4pwgzMwalFoxOUGYWQn1mrLW0+lNVodjJN7TSH8uI3291A/CCcLMzKro9xOEmZkN5CcIMzOrKhB9PThBpxOEmVmDUiW1E4SZma1AIz6+UydwgjAza1DqKNd7CaL33pGZWRv05c5ygy2NkPRuSXMk9UuaNkKh1+QnCLMGDLe/g/WWiJYVMc0G3gl8uxU3c4IwMxsB/S1o5hoRdwNIrWlS6wRhZtagQDwXvfd12nvvyMysxYZYST1B0szC+oyImFFZkXQ18JIq5x0XEZcNP8qhc4IwMxsBfeWH2lgYETUrmCNiz5GJqHFOEGZmDerVntS9947MzNqgP8aUWhoh6R2S5gE7Ab+QdMWIBF+DnyDMhuD6uZsttz62TXFYZ+lHPBfN/22IiEuAS5p+o8wJwsxsBPRiT2onCDOzBkXgsZjMzKwataSjXKs5QZiZNSjwE4SZmdXQi81cnSDMzBoUiOdb0Iqp1ZwgzAYxsGmr2UABDfdx6EROEGZmDWt8rodOVDNBSDqtxPmLIuKzIxiPmVnXGY1PEPsCxw9y/rGAE4SZjXqj6gkCODUizql3sqS16+zbCDiXNGxtP2lI229IWgf4ETAFmAu8JyKezOdMBw4B+oAjI+KKvH074GxgVeCXwMcjIkq8PzOzpotQTz5B1HxHEfF/g508yDFLgU9ExKuAHYEjJG1Beuq4JiI2Ba7J6+R9+wNbAnsDZ0iqNAs4EzgU2DQvew8Wm5lZqwTwfIwttXSTQVOepJMljZe0sqRrJC2U9IHBzouI+RFxW369GLgb2JBUdFV5MjkH2C+/3he4MCKWRMSDwP3ADpI2AMZHxE35qeHcwjlmZh0gzUldZukmZVox7RURn5L0DmAe8G7gWuCHZW8iaQqwDfAHYP2ImA8piUhaLx+2IXBz4bR5edvz+fXA7dXucyjpSYPJkyeXDc9sBW7aakORKql7rw6iTDpbOf/7VuCCiPj7UG4gaQ3gp8BREbGo3qFVtkWd7StujJgREdMiYtrEiROHEqaZWUP6GFNq6SZlniAul3QP8CzwX5ImAv8qc3FJK5OSw3kRcXHe/LikDfLTwwbAgrx9HrBR4fRJwGN5+6Qq283MOkKg0fcEIWkM8DPS7EXTIuJ54J+k+oK6JAn4HnB3RHy9sOty4MD8+kDgssL2/SWNk7QxqTL6llwctVjSjvmaHyqcY2bWdhG9WUld9wkiIvolfS0idipsewZ4psS1dwY+CMySdEfe9hngJOAiSYcAD5PqNIiIOZIuAu4itYA6IiL68nmHs6yZ66/yYmbWMVrxBCHpFODtwHPAX4CDI+KpZt2vTBHTlZLeBVw8lL4HEfE7qtcfAOxR45wTgBOqbJ8JbFX23mZmrZSKmFpSv3AVMD0ilkr6X2A68Olm3axMgjgGWB3ok/Qs6Us/ImJ8s4IyM+s2rehJHRFXFlZvBv69mfcbNEFExJrNDMCsE42hv90hWBdpUzPX/yCNStE0gyaIXDH8fmDjiPhSHkJjg4i4pZmBmZl1jyEVMU2QNLOwPiMiZrxwJelq0hBFAx0XEZflY44j1dWeN8yASylTxHQGaSyl3YEvAf8ATge2b2JcZmZdI7ViKp0gFkbEtNrXij3rnSzpQOBtwB7NHpOuTIJ4bURsK+l2gIh4UtIqzQzKzKzbtKKSWtLepErpN0bEP5t9vzIJ4vk8aF4A5I5yLqA1M8ta2FHum8A44KpU+s/NEXFYs25WJkGcBlwCrCfpBFKt+eeaFZCZWTfqb00rplc0/SYFZVoxnSfpVlLfBQH7RcTdTY/MzKxL9OpgfWVaMf0gIj4I3FNlm5mZMfqmHK3YsriS6yO2a044Zu1xw9yWPrlbj4kQS3swQdR8R5KmS1oMbC1pkaTFeX0BHizPzGw5/aFSSzepN+XoibkX9SkRMT4i1szLuhExvYUxmpl1tEodxKhJEAXHSfqApM8BSNpI0g5NjsvMrKuM1gRxOmk+iAPyeqUntZmZsawfRK8lCPekNjNrVNCTldTuSW1m1qBR2w+C6j2pP9vUqMxawE1bbSSNygThntRmZvW1cCymlirzBAHwOHBDPn5VSdtGxG3NC8vMrLvEaEwQkr4EHESaILsy9niQ5ocwMzNaM1hfq5V5gngP8PKIeK7ZwZiZdaMI6Osfna2YZgNrkYbYMDOzFYzeOogTgdslzQaWVDZGxD5Ni8rMrMuMyjoI4Bzgf4FZuP+D9ZCx8q+zjYzR3A9iYUSc1vRIzMy6VaR6iGbLjYb2Jf2xvgA4KCIea9b9ytSq3CrpREk7Sdq2sjQrIDOzbtSPSi0NOiUito6IqcDPgeMbDryOMk8Q2+R/dyxsczNXM7MsUEtaMUXEosLq6izretAUZXpS79bMAMzMesEQipgmSJpZWJ8RETPKnpyHPPoQ8DTQ1O/nejPKvW2wk8scY2Y2GkSo1EKq151WWJZLDpKuljS7yrJvuk8cFxEbAecBH23me6r3BHGKpEehbqHZV0jlYGZmo1bEyDVzjYg9Sx56PvAL4PMjcuMq6iWIx4GvD3L+fSMYi1nT3fjQJu0OwXpUK5q5Sto0Iirfu/sA9zTzfjUTRETs2swbm5n1kv7+lvSDOEnS5qRmrg8BhzXzZmVHczUzsxoCtaQndUS8q+k3KXCCMDMbAS3oJ9dydRvuShoj6XXDubCksyQtyGM4VbZ9QdKjku7Iy1sL+6ZLul/SvZLeXNi+naRZed9pknqvP7uZdbcYUiumrlE3QUREP/C1YV77bGDvKttPjYipefklgKQtgP2BLfM5Z+R5sAHOBA4FNs1LtWuambVXlFy6SJmuf1dKetdQ/3KPiN8Cfy95+L7AhRGxJCIeBO4HdpC0ATA+Im6KiADOBfYbShxmZq3Qi08QZeogjiF16e6T9CypX0RExPhh3vOjkj4EzAQ+ERFPAhsCNxeOmZe3PZ9fD9xuZtYxgpa1YmqpMkNtrDmC9zsT+BLp8/wSqfjqP6jeGS/qbK9K0qGk4igmT57caKzWA9zvwVoigC57Oihj0CImJR+Q9Lm8vpGkHYZzs4h4PCL6ct3Gd4DKdeYBGxUOnQQ8lrdPqrK91vVnVLqvT5w4cTghmpkNS0S5pZuUqYM4A9gJOCCv/wM4fTg3y3UKFe8gTWcKcDmwv6RxkjYmVUbfEhHzgcWSdsx1IB8CLhvOvc3MmqoHK6nL1EG8NiK2lXQ7QEQ8KWmVwU6SdAGwK2nkwnmk8UJ2lTSV9DHNBf4zX3OOpIuAu4ClwBER0ZcvdTipRdSqwK/yYmbWQbqvArqMMgni+dzkNAAkTaTE1KMR8b4qm79X5/gTgBOqbJ8JbFUiTjOz9giIHqykLlPEdBpwCbBeHof8d8CJTY3KzKzbjMYipog4T9KtwB6kVkX7RcTdTY/MzKyr9N4TxKAJQtIPIuKDFIaVLWwz62hju+1PNutePfirVqYOYsviSq6P2K454ZiZdakeTBD1phydLmkxsLWkRZIW5/UFuKmpmdkylY5yZZYuUjNBRMSJuRf1KRExPiLWzMu6ETG9hTGamXW86C+3dJMyldTTJW0IvKx4fB6Mz8zMoKVPB5I+CZwCTIyIhYMc+xLSqBUB/DEi/lr2PmUqqU8iDcV9F1DpvBaAE4SZWaYW1UFI2gh4E/BwiWM/DBwP/IbUzOr/SfqfiDirzL3KVFK/A9g8IpaUuaCZ2ajT2j4OpwKfolxd8H8D20TE3wAkrQvcCIxYgngAWBlwgrCu8IeHNm53CDbqtKYCWtI+wKMR8aeSU/TMAxYX1hcDj5S9X5kE8U/gDknXUEgSEXFk2ZuYmfW88k8QEyTNLKzPiIgZlRVJVwMvqXLeccBngL2GENWjwB8kXZYj3Be4RdIxABHx9Xonl0kQl+fFzMxqKd9CaWFETKu1MyL2rLZd0quBjYHK08Mk4DZJO9SpeP5LXioqxVKl5vkp04rpHEmrApMj4t4yFzUzG1VaMGFQRMwC1qusS5oLTKvXiikivtjIPctMGPR24A7g13l9qiQ/UZiZFSjKLS2NSZom6RJJt0m6s7KUPb9MEdMXSG1orwOIiDvypD5mZlbR4i//iJhS4rDzSC2ZZjGUQrCsTIJYGhFPD6gx78FRR8zMes4TETHsEp8yCWK2pAOAsZI2BY4ktaM160hjWv0cbwaoMycM+ryk7wIDW6FeXObkMgniY6TmVUuA84ErgC8PPU4zsx7VuZMBHQy8ktSXrVLEFMDIJIiI+CcpQRw3zADNzHpfZyaI10TEq4d7cplWTFdJWquwvrakK4Z7QzOzXtSJrZiAmyVtMdyTyxQxTYiIpyorEfGkpPXqHG9mNvp05hPELsCBkh4kVRMIiIjYuszJZRJEv6TJEfEwgKSX0akfhZlZu3Tmt+LejZxcJkEcB/xO0vV5/Q3AoY3c1Myslyg6sxVTRDwkaRdg04j4vqSJwBplzy9TSf1rSdsCO5IeT44ebIIKM7NRpwOfICR9HpgGbA58n9Sa6YfAzmXOL/MEQU4IPx9mjGZNd9vDk194PbaNcdjo1aHdb94BbAPcBhARj0kqNVAflEwQZmY2iM5MEM9FREgpfUlafSgnD9rM1czMBlGyiWsbnjIukvRtYC1JHwGuBr5T9uSaTxCS1ql3YkT8vXSIZma9rjOfICYCPwEWkeohjgeqzjdRTb0ipltJb7la1XwAm5SP0cyst2nIY6W2xJsi4tPAVZUNkr4GfLrMyTUTRER4SG8zsy4k6XDgv4BNBsz/sCbw+7LXqVfEtG29EyPitrI3MTPreZ1VxHQ+8CvgRODYwvbFQ6keqFfE9LU6+wLYvexNzEbanx7eaLl1N221tmpPBXRNEfE08DTwvkauU6+IabdGLmxmNqq0IEFI+gLwEeCJvOkzEfHLZt1v0H4QklYDjgEmR8ShedKgzSPCHefMzEgteVpYSX1qRHy1FTcq0w/i+8BzwOvy+jw8YZCZ2fKi5NJFyiSIl0fEycDzABHxLNWbvi5H0lmSFkiaXdi2Tp5f4r7879qFfdMl3S/pXklvLmzfTtKsvO80DZgc28ys7VrbUe6jku7M37FrD3748JVJEM9JWpWc+yS9nMLcpnWczYpDzR4LXBMRm5LmSD02X3MLYH9gy3zOGZIq9Y5nkkaP3TQvDQ1fa2bWFOWfICZImllYlhsdW9LVkmZXWfYlfR++HJgKzKd+Y6KGlRmL6fPAr4GNJJ1HGgXwoMFOiojfSpoyYPO+wK759TnAdaQOG/sCF0bEEuBBSfcDO0iaC4yPiJsAJJ0L7EdqvmVm1jnKPx0sjIhpNS8TUaqns6Tv0ORBVMsM932VpNtYNtz3xxsY7nv9iJifrzu/MDPdhsDNhePm5W3P59cDt1eVM/GhAJMnT651mPWAMZ3UptCM1jRzlbRB5TuUNFLr7HrHN6rMnNTvAJZGxC9yy6WlkvYb4ThqDedRa3tVETEjIqZFxLSJEyeOWHBmZnUF0F9yaczJuU72TmA34OiGr1hHqSKmiLikshIRT+VJKC4dxv0er2RASRsAC/L2eUCx59Mk4LG8fVKV7WZmHaUVTxAR8cHm32WZMpXU1Y4Z7jwSlwMH5tcHApcVtu8vaZykjUmV0bfkR6nFknbMrZc+VDjHzKxz9GAz1zJf9DMlfR04nfT2PkYa6bUuSReQKqQnSJpHquw+iTQ++SHAw8C7ASJijqSLgLuApcAREdGXL3U4qUXUqqTKaVdQm1nH6cVqsTIJ4mPA54Af5fUrgc8OdlJE1BoDZI8ax58AnFBl+0xgqxJxmpm1z2hMEBHxDMuPBmhmZkVdWHxUhuektq5x7yMvfeH1Km2Mw2wgMXqLmMzMbBC9mCDK9IPYucw2M7NRrQdbMZVp5vr/Sm4zMxu9ejBB1JtydCfSEN8TJR1T2DUeT+BlZrZMh80oN1Lq1UGsAqyRj1mzsH0R8O/NDMrMrNu0cMKglqk35ej1wPWSzo6Ih1oYk5lZ9xllTxAV/5R0CmmuhhdVNkbE7k2Lysysy4y2IqaK80i9qN8GHEYaQ+mJumeYNcEYzyVonaoLK6DLKNOKad2I+B7wfERcHxH/QZobwszMKkZTK6aC5/O/8yX9G2m47Ul1jjczG1VGc0/qL0t6MfAJUv+H8TR5kgozs26j/t7LEGUG66vMefo0aQYjMzMr6sLiozLK1EGYmdkgFOWWhu8jfUzSvZLmSDq58SvW5sH6zMxGQgueICTtBuwLbB0RSySt18z7OUFYR5s7b4MXXq/cxjjMBtOiSurDgZMiYglARCxo5s0GTRCSxgHvAqYUj4+I/2leWGZmXSSGNNTGBEkzC+szImJGyXM3A14v6QTgX8AnI+KP5QMdmjJPEJeRKqhvBZY0KxAzs65W/gliYURMq7VT0tXAS6rsOo70nb02qS/a9sBFkjaJiKY8v5RJEJMiYu9m3NzMrBeMZD+IiNiz5n2kw4GLc0K4RVI/MIEmjW5RphXTjZJe3Yybm5n1jIhyS2MuBXYHkLQZadTthY1etJZ680HMIj00rQQcLOkBUhGTgIiIrZsVlJlZt2lRJfVZwFmSZgPPAQc2q3gJ6hcxva1ZNzUz6ykt6igXEc8BH2j+nZJ680E8BCDpBxHxweI+ST8APlj1RLMGPPboS5dbH+sRXK1LqK/dEYy8MpXUWxZXJI0FtmtOOGZm3akXB+urWUktabqkxcDWkhZJWpzXF5CavpqZGeQippZUUrdUzQQRESdGxJrAKRExPiLWzMu6ETG9hTGamXW8Vo3F1Eplipg+I+mdwC6kPHlDRFza1KjMzLpNl335l1EmQZwOvAK4IK8fJulNEXFE88IyM+seo3nCoDcCW1Xa2ko6B5jV1KjMzLpJxOicMAi4F5gMPJTXNwLubFpENur8tdC0dWCl2BjcztW6RO/lh1IJYl3gbkm35PXtgZskXQ4QEfs0Kzgzs24xWouYjm96FGZm3SyA0VjEFBHXS3oZsGlEXC1pVWCliFjc/PDMzLpE7+WHwUdzlfQR4CfAt/OmSaQRBYdN0lxJsyTdUZk4Q9I6kq6SdF/+d+3C8dMl3Z/nYX1zI/c2M2sG9UeppZuUGe77CGBnYBFARNwHjMQ8qLtFxNTCxBnHAtdExKbANXkdSVsA+5OG/NgbOCMP92Fm1jF6saNcmQSxJI8gCICklWjOw9S+wDn59TnAfoXtF0bEkoh4ELgf2KEJ9zczG54YwtJFyiSI6yV9BlhV0puAHwM/a/C+AVwp6VZJh+Zt60fEfID8b+UpZUPgkcK58/I2M7OOkDrKRamlm5RpxXQscAipc9x/Ar8EvtvgfXeOiMckrQdcJemeOsdWawhf9VPOyeZQgMmTJzcYojXLE48tn9/Hyn0drAf0tzuAkVemFVO/pEuBSyNiROY9jYjH8r8LJF1CKjJ6XNIGETFf0gakUWMhPTFsVDh9EvBYjevOAGYATJs2rbtStZl1tVY8HUj6EbB5Xl0LeCoipjbrfvWG+5akL0haCNwD3CvpCUkN9YuQtLqkNSuvgb2A2cDlwIH5sANZNqT45cD+ksZJ2hjYFLgFM7NOEZH6QZRZGrpNvDc37pkK/BS4eCTCr6XeE8RRpNZL2+fKYSRtApwp6eiIOHWY91wfuESpWGEl4PyI+LWkPwIXSToEeBh4N0BEzJF0EXAXsBQ4IiJ6cO4mM+tmrWyhpPQF+h5g92bep16C+BDwpohYWNkQEQ9I+gBwJTCsBBERDwCvqbL9b8AeNc45AThhOPczM2uJ1lZAvx54PHc7aJp6CWLlYnKoiIgnJK3cxJjMzLpLgMpXUk+odBDOZuT6UwAkXQ28pMp5x0VEpej9fSybgqFp6iWI54a5z8xs9Cn/BLGw0EG4ymViz3on575o7wS2Kx/c8NRLEK+RtKjKdgEvalI81qOeemxZQ7SVS3W/MesyrSth2hO4JyLmNftGNRNERHg4CzOzktTfso4Q+9OC4iUo11HOzMzqCVrWUS4iDmrNnZwgzMwaJrpvGI0ynCDMzEaCE4SZmVXlBGFmZisIUJ8ThFlNz8x/2XLrfYW/qMZUHZR3RR7Z1bqWnyDMzGxF4QRhZmZVBE4QZmZWw2icMMjMzAbnfhBmZraiAPp67xHCCcLMrGGupDYDYMn8TV543U+xKevyo7SOcYtVG02cIMzMrConCDMzW0EA/U4QZma2goBwJbWZmQ3kVkxmZlZTD9ZBeHJgM7OREFFuaYCkqZJulnSHpJmSdhih6KtygjAza1jJ5ND4U8bJwBcjYipwfF5vGhcxjTL9f91s6OcMGGRmrJb9XTG24YjMekAA/S2pgwhgfH79YuCxZt7MCcLMbCS0JkEcBVwh6aukEqDXNfNmThBmZg2LofSDmCBpZmF9RkTMqKxIuhp4SZXzjgP2AI6OiJ9Keg/wPWDPYQY9KCcIM7NGBUT5fhALI2JazUtF1PzCl3Qu8PG8+mPgu6VjHAZXUpuZjYT+KLc05jHgjfn17sB9jV6wHj9BmJmNhNb0g/gI8A1JKwH/Ag5t5s2cIMzMGhXRkkrqiPgdsF3Tb5T1bIL4860P8KYx715xh8YMWFXVfRo7oAHn2Or7tMoqyx+3UuG8cQP2jRv3wst40covvO5fbfnjlq62bN8/Ji3b99Q+zyx33E07ffuF12uPWY1mGTiMt5mtKPr62h3CiOvZBGFm1jqeMMjMzKrxcN9mZlZTDw733TWFy5L2lnSvpPslHdvueMzMKgKI/ii1dJOuSBCSxgKnA28BtgDeJ2mL9kZlZpZFnjCozNJFuqWIaQfg/oh4AEDShcC+wF1tjcrMLHMrpvbZEHiksD4PeO3AgyQdyrKOI0uujp/MXuFKA5/waiX054ceZBUTgIUjciWAc1e8eFviGJ5OiAE6I45OiAE6I45OiAFg80ZOXsyTV1wdPyn7X7IT3m8p3ZIgVGXbCoV5ecCrGQCSZtYb76QVOiGGTomjE2LolDg6IYZOiaMTYqjE0cj5EbH3SMXSSbqiDoL0xLBRYX0STR4H3cxstOuWBPFHYFNJG0taBdgfuLzNMZmZ9bSuKGKKiKWSPgpcQZrE7KyImDPIaTMG2d8KnRADdEYcnRADdEYcnRADdEYcnRADdE4cHUXRg93Dzcyscd1SxGRmZi3mBGFmZlX1XIJo15Acks6StEDS7MK2dSRdJem+/O/aTY5hI0nXSrpb0hxJH291HJJeJOkWSX/KMXyx1TEMiGespNsl/bxdcUiaK2mWpDsqzSnb8LuxlqSfSLon/37s1OLfi83z+68siyQd1aafx9H5d3O2pAvy72xbfj87XU8liDYPyXE2MLAt9LHANRGxKXBNXm+mpcAnIuJVwI7AEfn9tzKOJcDuEfEaYCqwt6QdWxxD0ceBuwvr7Ypjt4iYWmjz3+o4vgH8OiJeCbyG9Jm0LIaIuDe//6mkCW/+CVzSyhgAJG0IHAlMi4itSI1e9m91HF0jInpmAXYCriisTwemt/D+U4DZhfV7gQ3y6w2Ae1v8eVwGvKldcQCrAbeRer23PAZSf5lrSHP3/rxdPxNgLjBhwLaWxQGMBx4kN0ppRwwD7rsX8Pt2xMCyURnWIbXi/HmOp63/Vzt16aknCKoPybFhm2IBWD8i5gPkf9dr1Y0lTQG2Af7Q6jhysc4dwALgqohoeQzZ/wGfYvkBVdoRRwBXSro1DwfT6jg2AZ4Avp+L274rafUWx1C0P3BBft3SGCLiUeCrwMPAfODpiLiy1XF0i15LEKWG5Oh1ktYAfgocFRGLWn3/iOiLVJQwCdhB0latjkHS24AFEXFrq+9dxc4RsS2p6PMISW9o8f1XArYFzoyIbYBnaFMRSu7oug/w4zbdf23SQJ8bAy8FVpf0gXbE0g16LUF02pAcj0vaACD/u6DZN5S0Mik5nBcRF7crDoCIeAq4jlQ30+oYdgb2kTQXuBDYXdIP2xAHEfFY/ncBqdx9hxbHMQ+Yl5/kAH5CShjt+L14C3BbRDye11sdw57AgxHxREQ8D1wMvK4NcXSFXksQnTYkx+XAgfn1gaQ6gaaRJOB7wN0R8fV2xCFpoqS18utVSf8h72llDAARMT0iJkXEFNLvwW8i4gOtjkPS6pLWrLwmlXfPbmUcEfFX4BFJlRFL9yANld/SzyJ7H8uKl2hDDA8DO0paLf9/2YNUYd+Oz6LztbsSZKQX4K3An4G/AMe18L4XkMo0nyf9xXYIsC6pkvS+/O86TY5hF1KR2p3AHXl5ayvjALYGbs8xzAaOz9tb+lkMiGlXllVSt/pnsgnwp7zMqfxOtiGOqcDM/HO5FFi7DTGsBvwNeHFhW8t/L4Avkv5omQ38ABjXzt/PTl481IaZmVXVa0VMZmY2QpwgzMysKicIMzOrygnCzMyqcoIwM7OqnCBGEUlTVBhtdgSvO03SaYMcs5ak/xrpew9G0o0NnHu2pH8vu71RlVjzz+mAYZx/kKRvjnRcNno5QVjDImJmRBw5yGFrAS1PEBHxulbfc7gKsU4BhpwgzEaaE8ToM1bSd/J4+Ffm3s7LyX8hf0vSDZL+nMc1qsz18P08t8HtknbL23fVsvkWvqA0N8Z1kh6QVEkcJwEvz3MBnDLgflPyHAUrxCVpqqSbJd0p6ZLKOP35+qdK+m0+d3tJF+fx/L9cuPY/CjFep2VzIpyXe9Ii6XhJf1SaH2BGZXsZkvbIn8Ws/L7H5e1zJX1R0m153yvz9olK8w3cJunbkh6SNKEYa/6sXp8/q6MHPhlI+rmkXfPrg/PP6HrS8CIU7vPT/L7+KOmFfWZlOUGMPpsCp0fElsBTwLtqHDcFeCPwb8C3JL0IOAIgIl5NGjLhnLx9oFcCbyaNOfR5pfGhjgX+EmlOgP8eQlznAp+OiK2BWcDnC+c8FxFvAL5FGhrhCGAr4CBJ61a5xzbAUaS5QjZh2RfqNyNi+0jzA6wKvK3GZ7Kc/N7PBt6bP5OVgMMLhyyMNEjfmcAn87bPk4b92JY0LtPkKpc+Frghf1an1rn/BqRewTuThnUvzn3yDeDUiNie9Fl+t8x7Mityghh9HoyIO/LrW0mJoJqLIqI/Iu4DHiB96e9CGpqAiLgHeAjYrMq5v4iIJRGxkDTo2frDiUvSi4G1IuL6vP0coDgSamWcrVnAnIiYHxFLcrzFQRsrbomIeRHRTxqGZErevpukP0iaRZo7YssS8QJsnuP+c434KoMlFj/nXUiDBxIRvwaeLHmval4LXBdp4LnngB8V9u0JfFNp2PXLgfGVMaHMylqp3QFYyy0pvO4j/cVczcAxWILqw6mXuUeZ37OycVU7p3/A+f017rlCXPkp4AzSDGOPSPoCUO2pqJrBPo/K/YqfQeniq4KlLP/HXDG+WmPljAF2iohnh3E/M8BPEFbbuyWNkfRyUnHMvcBvgfcDSNqMVDxyb8nrLQaG9BdsRDwNPCnp9XnTB4Hr65wyHJUv24VK82gMpXXSPaQnnVfk9TLx/Q54D4CkvUiD5g008LOaC0zNP4+NSEV3kCaD2lXSurkY792Fc64EPlpZkTS1zBsyK/IThNVyL+nLbn3gsIj4l6QzSPURs0h/1R4UEUvK1OlGxN8k/V6pme2vatRDVHNgvudqpKKjg4fzZurE9ZSk75CKqeaShowve+6/JB0M/FjSSvncbw1y2heBCyS9l/T5ziclhKI7gaWS/kSq4/g/0pShs0gjkN6W7z8/P/HclK9zG2mOZUjzLp8u6U7S//PfAoeVfW9mgEdztRVJOps0PPZP2h1Lr8mtnPoiYqmknUizvE1tc1hmVfkJwqy1JgMXSRoDPAd8pM3xmNXkJwgzM6vKldRmZlaVE4S1Re49/WzuLVx1jCgVxnga2Ju4STEdlSvDR+Ja75V0v3IPc7Nu5ARh7fSXehW0Jcd4GklHkeZNLk3S2GrbI+JHwIdHICaztnGCsI4iaZM8ttH2KozxNOCYl0m6Jo/PdI2kyXn72ZLOlHSt0jhQb8zjI92dW2ZVzt9L0k15PKQfS1pDacyolwLXSrq21nF5+1yl8Zt+R+ovcqSku3I8F7biczJrBScI6xiSNgd+ChwcEfX6I3wTODePz3QeUBxqfG3ScBlHAz8DTiUNnfFqpYH/JgCfBfbM4yHNBI6JiNOAx4DdImK3WscV7vOviNglIi4kjZ20TY7HfQ2sZ7iZq3WKiaQB994VEXMGOXYn4J359Q+Akwv7fhYRkTvzPR4RswAkzSGNhzSJNKjd73MHv1VIHc0G2nGQ44rjHt0JnCfpUuDSQWI36xpOENYpngYeIY1MOliCGKjYVnuw8Zn6gKsi4n2DXFODHPdM4fW/kQbp2wf4nKQtI2Jp2eDNOpWLmKxTPAfsB3xIg8+mdiOwf379ftL4RmXdDOxcGT9J0mp5XClYfgykese9IHd42ygirgU+RZoYaY0hxGPWsfwEYR0jIp5RmpzoKknPkJ4qqjkSOEvSfwNPMITxmSLiCUkHkcZDGpc3fxb4MzAD+JWk+bkeotZxRWOBH+ahyUWag+GpsvGYdTL3pLa2kDSFNN7TVu2OpVmUZn37ZESUmoDIrNO4iMnapQ94cZ7Qpufk0VrPoLEJgczayk8QZmZWlZ8gzMysKicIMzOrygnCzMyqcoIwM7OqnCDMzKyq/w//PUu3eLHKWgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ds_z['temp'].isel(Time=-1).plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/graemem/opt/anaconda3/envs/om4labs/lib/python3.8/site-packages/nc_time_axis/__init__.py:295: CFWarning: this date/calendar/year zero convention is not supported by CF\n", + " cftime.num2date(dt, self.date_unit, calendar=self.calendar)\n", + "/Users/graemem/opt/anaconda3/envs/om4labs/lib/python3.8/site-packages/nc_time_axis/__init__.py:344: CFWarning: this date/calendar/year zero convention is not supported by CF\n", + " return cftime.date2num(ticks, self.date_unit, calendar=self.calendar)\n", + "/Users/graemem/opt/anaconda3/envs/om4labs/lib/python3.8/site-packages/nc_time_axis/__init__.py:118: CFWarning: this date/calendar/year zero convention is not supported by CF\n", + " dt = cftime.num2date(x, self.time_units, calendar=self.calendar)\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ds_rho0['e'].isel(rho0_i=5).plot()\n", + "# plt.gca().set_ylim([-100,10])" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'rhopot0' (rho0_l: 30)>\n",
+       "array([1027.7295, 1027.7295, 1027.7295, 1027.7295, 1027.7295, 1027.7295,\n",
+       "       1027.7773, 1027.7948, 1027.82  , 1027.8435, 1027.8661, 1027.8884,\n",
+       "       1027.909 , 1027.9277, 1027.9459, 1027.9626, 1027.9779, 1027.9923,\n",
+       "       1028.0051, 1028.017 , 1028.0275, 1028.0367, 1028.0448, 1028.052 ,\n",
+       "       1028.059 , 1028.0667, 1028.0728, 1028.0758, 1028.0758, 1028.0758],\n",
+       "      dtype=float32)\n",
+       "Coordinates:\n",
+       "    xh       float64 79.5\n",
+       "  * rho0_l   (rho0_l) float64 1.013e+03 1.027e+03 ... 1.028e+03 1.029e+03\n",
+       "    Time     object 0001-01-15 00:00:00
" + ], + "text/plain": [ + "\n", + "array([1027.7295, 1027.7295, 1027.7295, 1027.7295, 1027.7295, 1027.7295,\n", + " 1027.7773, 1027.7948, 1027.82 , 1027.8435, 1027.8661, 1027.8884,\n", + " 1027.909 , 1027.9277, 1027.9459, 1027.9626, 1027.9779, 1027.9923,\n", + " 1028.0051, 1028.017 , 1028.0275, 1028.0367, 1028.0448, 1028.052 ,\n", + " 1028.059 , 1028.0667, 1028.0728, 1028.0758, 1028.0758, 1028.0758],\n", + " dtype=float32)\n", + "Coordinates:\n", + " xh float64 79.5\n", + " * rho0_l (rho0_l) float64 1.013e+03 1.027e+03 ... 1.028e+03 1.029e+03\n", + " Time object 0001-01-15 00:00:00" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ds_rho0['rhopot0'].isel(Time=-1,xh=-1)" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1027.7, 1029.0)" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ds_rho0['h'].cumsum('rho0_l').plot(robust=True)\n", + "plt.gca().set_ylim([1027.7,1029])" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1027.7, 1029.0)" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ds_rho0['temp'].isel(Time=0).plot(robust=True)\n", + "plt.gca().set_ylim([1027.7,1029])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "om4labs", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/ocean_only/single_column/EPBL_diagscalar-histogram/INPUT b/ocean_only/single_column/EPBL_diagscalar-histogram/INPUT new file mode 120000 index 0000000000..51db2b9899 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar-histogram/INPUT @@ -0,0 +1 @@ +../EPBL_diagscalar/INPUT \ No newline at end of file diff --git a/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_input b/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_input new file mode 120000 index 0000000000..733780a07d --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_input @@ -0,0 +1 @@ +../EPBL_diagscalar/MOM_input \ No newline at end of file diff --git a/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_override b/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_override new file mode 100644 index 0000000000..875579f76d --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = 7.59943e-05 +INPUTDIR = "INPUT/BATS" diff --git a/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_override2 b/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_override2 new file mode 100644 index 0000000000..1ec7f4382c --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_override2 @@ -0,0 +1,5 @@ +! Generated by run_suite.csh +!#override DAYMAX = 365 +!#override ALE_COORDINATE_CONFIG = "FILE:INPUT/vgrid_cm4_4.nc,dz" ! 4 meter surface +!#override ALE_COORDINATE_CONFIG = "FILE:INPUT/vgrid_cm4.nc,dz" ! 2 meter surface +#override DIAG_COORD_HISTOGRAM_EXTENSIVE_DIAGS_SCALAR = True diff --git a/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_parameter_doc.all b/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_parameter_doc.all new file mode 100644 index 0000000000..a31a328a92 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_parameter_doc.all @@ -0,0 +1,1823 @@ +! This file was written by the model and records all non-layout or debugging parameters used at run-time. + +! === module MOM === +SPLIT = False ! [Boolean] default = True + ! Use the split time stepping if true. +USE_RK2 = False ! [Boolean] default = False + ! If true, use RK2 instead of RK3 in the unsplit time stepping. +CALC_RHO_FOR_SEA_LEVEL = False ! [Boolean] default = False + ! If true, the in-situ density is used to calculate the effective sea level that + ! is returned to the coupler. If false, the Boussinesq parameter RHO_0 is used. +ENABLE_THERMODYNAMICS = True ! [Boolean] default = True + ! If true, Temperature and salinity are used as state variables. +USE_EOS = True ! [Boolean] default = True + ! If true, density is calculated from temperature and salinity with an equation + ! of state. If USE_EOS is true, ENABLE_THERMODYNAMICS must be true as well. +DIABATIC_FIRST = False ! [Boolean] default = False + ! If true, apply diabatic and thermodynamic processes, including buoyancy + ! forcing and mass gain or loss, before stepping the dynamics forward. +USE_CONTEMP_ABSSAL = False ! [Boolean] default = False + ! If true, the prognostics T&S are the conservative temperature and absolute + ! salinity. Care should be taken to convert them to potential temperature and + ! practical salinity before exchanging them with the coupler and/or reporting + ! T&S diagnostics. +ADIABATIC = False ! [Boolean] default = False + ! There are no diapycnal mass fluxes if ADIABATIC is true. This assumes that KD + ! = 0.0 and that there is no buoyancy forcing, but makes the model faster by + ! eliminating subroutine calls. +DO_DYNAMICS = True ! [Boolean] default = True + ! If False, skips the dynamics calls that update u & v, as well as the gravity + ! wave adjustment to h. This may be a fragile feature, but can be useful during + ! development +OFFLINE_TRACER_MODE = False ! [Boolean] default = False + ! If true, barotropic and baroclinic dynamics, thermodynamics are all bypassed + ! with all the fields necessary to integrate the tracer advection and diffusion + ! equation are read in from files stored from a previous integration of the + ! prognostic model. NOTE: This option only used in the ocean_solo_driver. +USE_REGRIDDING = True ! [Boolean] default = False + ! If True, use the ALE algorithm (regridding/remapping). If False, use the + ! layered isopycnal algorithm. +REMAP_UV_USING_OLD_ALG = False ! [Boolean] default = False + ! If true, uses the old remapping-via-a-delta-z method for remapping u and v. If + ! false, uses the new method that remaps between grids described by an old and + ! new thickness. +REMAP_AUXILIARY_VARS = False ! [Boolean] default = False + ! If true, apply ALE remapping to all of the auxiliary 3-dimensional variables + ! that are needed to reproduce across restarts, similarly to what is already + ! being done with the primary state variables. The default should be changed to + ! true. +BULKMIXEDLAYER = False ! [Boolean] default = False + ! If true, use a Kraus-Turner-like bulk mixed layer with transitional buffer + ! layers. Layers 1 through NKML+NKBL have variable densities. There must be at + ! least NKML+NKBL+1 layers if BULKMIXEDLAYER is true. BULKMIXEDLAYER can not be + ! used with USE_REGRIDDING. The default is influenced by ENABLE_THERMODYNAMICS. +THICKNESSDIFFUSE = False ! [Boolean] default = False + ! If true, isopycnal surfaces are diffused with a Laplacian coefficient of KHTH. +APPLY_INTERFACE_FILTER = False ! [Boolean] default = False + ! If true, model interface heights are subjected to a grid-scale dependent + ! spatial smoothing, often with biharmonic filter. +USE_POROUS_BARRIER = True ! [Boolean] default = True + ! If true, use porous barrier to constrain the widths and face areas at the + ! edges of the grid cells. +BATHYMETRY_AT_VEL = False ! [Boolean] default = False + ! If true, there are separate values for the basin depths at velocity points. + ! Otherwise the effects of topography are entirely determined from thickness + ! points. +DT = 3600.0 ! [s] + ! The (baroclinic) dynamics time step. The time-step that is actually used will + ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode + ! or the coupling timestep in coupled mode.) +DT_THERM = 3600.0 ! [s] default = 3600.0 + ! The thermodynamic and tracer advection time step. Ideally DT_THERM should be + ! an integer multiple of DT and less than the forcing or coupling time-step, + ! unless THERMO_SPANS_COUPLING is true, in which case DT_THERM can be an integer + ! multiple of the coupling timestep. By default DT_THERM is set to DT. +THERMO_SPANS_COUPLING = False ! [Boolean] default = False + ! If true, the MOM will take thermodynamic and tracer timesteps that can be + ! longer than the coupling timestep. The actual thermodynamic timestep that is + ! used in this case is the largest integer multiple of the coupling timestep + ! that is less than or equal to DT_THERM. +HMIX_SFC_PROP = 1.0 ! [m] default = 1.0 + ! If BULKMIXEDLAYER is false, HMIX_SFC_PROP is the depth over which to average + ! to find surface properties like SST and SSS or density (but not surface + ! velocities). +HMIX_UV_SFC_PROP = 0.0 ! [m] default = 0.0 + ! If BULKMIXEDLAYER is false, HMIX_UV_SFC_PROP is the depth over which to + ! average to find surface flow properties, SSU, SSV. A non-positive value + ! indicates no averaging. +HFREEZE = -1.0 ! [m] default = -1.0 + ! If HFREEZE > 0, melt potential will be computed. The actual depth over which + ! melt potential is computed will be min(HFREEZE, OBLD), where OBLD is the + ! boundary layer depth. If HFREEZE <= 0 (default), melt potential will not be + ! computed. +INTERPOLATE_P_SURF = False ! [Boolean] default = False + ! If true, linearly interpolate the surface pressure over the coupling time + ! step, using the specified value at the end of the step. +FRAZIL = True ! [Boolean] default = False + ! If true, water freezes if it gets too cold, and the accumulated heat deficit + ! is returned in the surface state. FRAZIL is only used if + ! ENABLE_THERMODYNAMICS is true. +DO_GEOTHERMAL = False ! [Boolean] default = False + ! If true, apply geothermal heating. +BOUND_SALINITY = False ! [Boolean] default = False + ! If true, limit salinity to being positive. (The sea-ice model may ask for more + ! salt than is available and drive the salinity negative otherwise.) +SALINITY_UNDERFLOW = 0.0 ! [PPT] default = 0.0 + ! A tiny value of salinity below which the it is set to 0. For reference, one + ! molecule of salt per square meter of ocean is of order 1e-29 ppt. +TEMPERATURE_UNDERFLOW = 0.0 ! [degC] default = 0.0 + ! A tiny magnitude of temperatures below which they are set to 0. +C_P = 3925.0 ! [J kg-1 K-1] default = 3991.86795711963 + ! The heat capacity of sea water, approximated as a constant. This is only used + ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 + ! definition of conservative temperature. +USE_PSURF_IN_EOS = True ! [Boolean] default = True + ! If true, always include the surface pressure contributions in equation of + ! state calculations. +P_REF = 2.0E+07 ! [Pa] default = 2.0E+07 + ! The pressure that is used for calculating the coordinate density. (1 Pa = 1e4 + ! dbar, so 2e7 is commonly used.) This is only used if USE_EOS and + ! ENABLE_THERMODYNAMICS are true. +FIRST_DIRECTION = 0 ! default = 0 + ! An integer that indicates which direction goes first in parts of the code that + ! use directionally split updates, with even numbers (or 0) used for x- first + ! and odd numbers used for y-first. +ALTERNATE_FIRST_DIRECTION = False ! [Boolean] default = False + ! If true, after every dynamic timestep alternate whether the x- or y- direction + ! updates occur first in directionally split parts of the calculation. If this + ! is true, FIRST_DIRECTION applies at the start of a new run or if the next + ! first direction can not be found in the restart file. +CHECK_BAD_SURFACE_VALS = False ! [Boolean] default = False + ! If true, check the surface state for ridiculous values. +DEFAULT_ANSWER_DATE = 99991231 ! default = 99991231 + ! This sets the default value for the various _ANSWER_DATE parameters. +SURFACE_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the expressions for the surface properties. Values below + ! 20190101 recover the answers from the end of 2018, while higher values use + ! updated and more robust forms of the same expressions. +USE_DIABATIC_TIME_BUG = False ! [Boolean] default = False + ! If true, uses the wrong calendar time for diabatic processes, as was done in + ! MOM6 versions prior to February 2018. This is not recommended. +SAVE_INITIAL_CONDS = True ! [Boolean] default = False + ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. +IC_OUTPUT_FILE = "MOM_IC" ! default = "MOM_IC" + ! The file into which to write the initial conditions. +WRITE_GEOM = 1 ! default = 1 + ! If =0, never write the geometry and vertical grid files. If =1, write the + ! geometry and vertical grid files only for a new simulation. If =2, always + ! write the geometry and vertical grid files. Other values are invalid. +USE_DBCLIENT = False ! [Boolean] default = False + ! If true, initialize a client to a remote database that can be used for online + ! analysis and machine-learning inference. +ICE_SHELF = False ! [Boolean] default = False + ! If true, enables the ice shelf model. +USE_PARTICLES = False ! [Boolean] default = False + ! If true, use the particles package. +USE_UH_PARTICLES = False ! [Boolean] default = False + ! If true, use the uh velocity in the particles package. +ENSEMBLE_OCEAN = False ! [Boolean] default = False + ! If False, The model is being run in serial mode as a single realization. If + ! True, The current model realization is part of a larger ensemble and at the + ! end of step MOM, we will perform a gather of the ensemble members for + ! statistical evaluation and/or data assimilation. +HOMOGENIZE_FORCINGS = False ! [Boolean] default = False + ! If True, homogenize the forces and fluxes. + +! === module MOM_domains === +REENTRANT_X = True ! [Boolean] default = True + ! If true, the domain is zonally reentrant. +REENTRANT_Y = True ! [Boolean] default = False + ! If true, the domain is meridionally reentrant. +TRIPOLAR_N = False ! [Boolean] default = False + ! Use tripolar connectivity at the northern edge of the domain. With + ! TRIPOLAR_N, NIGLOBAL must be even. +NIGLOBAL = 2 ! + ! The total number of thickness grid points in the x-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +NJGLOBAL = 2 ! + ! The total number of thickness grid points in the y-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +NIHALO = 2 ! default = 4 + ! The number of halo points on each side in the x-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. +NJHALO = 2 ! default = 4 + ! The number of halo points on each side in the y-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. + +! === module MOM_hor_index === +! Sets the horizontal array index types. + +! === module MOM_grid === +! Parameters providing information about the lateral grid. +REFERENCE_HEIGHT = 0.0 ! [m] default = 0.0 + ! A reference value for geometric height fields, such as bathyT. + +! === module MOM_fixed_initialization === +INPUTDIR = "INPUT/Labrador" ! default = "." + ! The directory in which input files are found. + +! === module MOM_grid_init === +GRID_CONFIG = "cartesian" ! + ! A character string that determines the method for defining the horizontal + ! grid. Current options are: + ! mosaic - read the grid from a mosaic (supergrid) + ! file set by GRID_FILE. + ! cartesian - use a (flat) Cartesian grid. + ! spherical - use a simple spherical grid. + ! mercator - use a Mercator spherical grid. +AXIS_UNITS = "degrees" ! default = "degrees" + ! The units for the Cartesian axes. Valid entries are: + ! degrees - degrees of latitude and longitude + ! m or meter(s) - meters + ! k or km or kilometer(s) - kilometers +SOUTHLAT = 30.0 ! [degrees] + ! The southern latitude of the domain or the equivalent starting value for the + ! y-axis. +LENLAT = 1.0 ! [degrees] + ! The latitudinal or y-direction length of the domain. +WESTLON = 0.0 ! [degrees] default = 0.0 + ! The western longitude of the domain or the equivalent starting value for the + ! x-axis. +LENLON = 1.0 ! [degrees] + ! The longitudinal or x-direction length of the domain. +RAD_EARTH = 6.378E+06 ! [m] default = 6.378E+06 + ! The radius of the Earth. +TOPO_CONFIG = "flat" ! + ! This specifies how bathymetry is specified: + ! file - read bathymetric information from the file + ! specified by (TOPO_FILE). + ! flat - flat bottom set to MAXIMUM_DEPTH. + ! bowl - an analytically specified bowl-shaped basin + ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. + ! spoon - a similar shape to 'bowl', but with an vertical + ! wall at the southern face. + ! halfpipe - a zonally uniform channel with a half-sine + ! profile in the meridional direction. + ! bbuilder - build topography from list of functions. + ! benchmark - use the benchmark test case topography. + ! Neverworld - use the Neverworld test case topography. + ! DOME - use a slope and channel configuration for the + ! DOME sill-overflow test case. + ! ISOMIP - use a slope and channel configuration for the + ! ISOMIP test case. + ! DOME2D - use a shelf and slope configuration for the + ! DOME2D gravity current/overflow test case. + ! Kelvin - flat but with rotated land mask. + ! seamount - Gaussian bump for spontaneous motion test case. + ! dumbbell - Sloshing channel with reservoirs on both ends. + ! shelfwave - exponential slope for shelfwave test case. + ! Phillips - ACC-like idealized topography used in the Phillips config. + ! dense - Denmark Strait-like dense water formation and overflow. + ! USER - call a user modified routine. +MINIMUM_DEPTH = 0.5 ! [m] default = 0.0 + ! The minimum depth of the ocean. +MAXIMUM_DEPTH = 6000.0 ! [m] + ! The maximum depth of the ocean. + +! === module MOM_open_boundary === +! Controls where open boundaries are located, what kind of boundary condition to impose, and what data to apply, +! if any. +OBC_NUMBER_OF_SEGMENTS = 0 ! default = 0 + ! The number of open boundary segments. +MASKING_DEPTH = -9999.0 ! [m] default = -9999.0 + ! The depth below which to mask points as land points, for which all fluxes are + ! zeroed out. MASKING_DEPTH is ignored if it has the special default value. +CHANNEL_CONFIG = "none" ! default = "none" + ! A parameter that determines which set of channels are + ! restricted to specific widths. Options are: + ! none - All channels have the grid width. + ! global_1deg - Sets 16 specific channels appropriate + ! for a 1-degree model, as used in CM2G. + ! list - Read the channel locations and widths from a + ! text file, like MOM_channel_list in the MOM_SIS + ! test case. + ! file - Read open face widths everywhere from a + ! NetCDF file on the model grid. +SUBGRID_TOPO_AT_VEL = False ! [Boolean] default = False + ! If true, use variables from TOPO_AT_VEL_FILE as parameters for porous barrier. +ROTATION = "betaplane" ! default = "2omegasinlat" + ! This specifies how the Coriolis parameter is specified: + ! 2omegasinlat - Use twice the planetary rotation rate + ! times the sine of latitude. + ! betaplane - Use a beta-plane or f-plane. + ! USER - call a user modified routine. +F_0 = 7.59943E-05 ! [s-1] default = 0.0 + ! The reference value of the Coriolis parameter with the betaplane option. +BETA = 0.0 ! [m-1 s-1] default = 0.0 + ! The northward gradient of the Coriolis parameter with the betaplane option. +BETA_LAT_REF = 0.0 ! [degrees] default = 0.0 + ! The reference latitude (origin) of the beta-plane +GRID_ROTATION_ANGLE_BUGS = False ! [Boolean] default = False + ! If true, use an older algorithm to calculate the sine and cosines needed + ! rotate between grid-oriented directions and true north and east. Differences + ! arise at the tripolar fold. + +! === module MOM_verticalGrid === +! Parameters providing information about the vertical grid. +G_EARTH = 9.8 ! [m s-2] default = 9.8 + ! The gravitational acceleration of the Earth. +RHO_0 = 1035.0 ! [kg m-3] default = 1035.0 + ! The mean ocean density used with BOUSSINESQ true to calculate accelerations + ! and the mass for conservation properties, or with BOUSSINSEQ false to convert + ! some parameters from vertical units of m to kg m-2. +BOUSSINESQ = True ! [Boolean] default = True + ! If true, make the Boussinesq approximation. +ANGSTROM = 1.0E-10 ! [m] default = 1.0E-10 + ! The minimum layer thickness, usually one-Angstrom. +H_TO_M = 1.0 ! [m H-1] default = 1.0 + ! A constant that translates the model's internal units of thickness into m. +NK = 75 ! [nondim] + ! The number of model layers. + +! === module MOM_tracer_registry === + +! === module MOM_EOS === +EQN_OF_STATE = "WRIGHT" ! default = "WRIGHT" + ! EQN_OF_STATE determines which ocean equation of state should be used. + ! Currently, the valid choices are "LINEAR", "UNESCO", "JACKETT_MCD", "WRIGHT", + ! "WRIGHT_REDUCED", "WRIGHT_FULL", "NEMO", "ROQUET_RHO", "ROQUET_SPV" and + ! "TEOS10". This is only used if USE_EOS is true. +USE_WRIGHT_2ND_DERIV_BUG = False ! [Boolean] default = False + ! If true, use a bug in the calculation of the second derivatives of density + ! with temperature and with temperature and pressure that causes some terms to + ! be only 2/3 of what they should be. +EOS_QUADRATURE = False ! [Boolean] default = False + ! If true, always use the generic (quadrature) code code for the integrals of + ! density. +TFREEZE_FORM = "LINEAR" ! default = "LINEAR" + ! TFREEZE_FORM determines which expression should be used for the freezing + ! point. Currently, the valid choices are "LINEAR", "MILLERO_78", "TEOS_POLY", + ! "TEOS10" +TFREEZE_S0_P0 = 0.0 ! [degC] default = 0.0 + ! When TFREEZE_FORM=LINEAR, this is the freezing potential temperature at S=0, + ! P=0. +DTFREEZE_DS = -0.054 ! [degC ppt-1] default = -0.054 + ! When TFREEZE_FORM=LINEAR, this is the derivative of the freezing potential + ! temperature with salinity. +DTFREEZE_DP = 0.0 ! [degC Pa-1] default = 0.0 + ! When TFREEZE_FORM=LINEAR, this is the derivative of the freezing potential + ! temperature with pressure. + +! === module MOM_restart === +PARALLEL_RESTARTFILES = False ! [Boolean] default = False + ! If true, the IO layout is used to group processors that write to the same + ! restart file or each processor writes its own (numbered) restart file. If + ! false, a single restart file is generated combining output from all PEs. +RESTARTFILE = "MOM.res" ! default = "MOM.res" + ! The name-root of the restart file. +MAX_FIELDS = 100 ! default = 100 + ! The maximum number of restart fields that can be used. +RESTART_CHECKSUMS_REQUIRED = True ! [Boolean] default = True + ! If true, require the restart checksums to match and error out otherwise. Users + ! may want to avoid this comparison if for example the restarts are made from a + ! run with a different mask_table than the current run, in which case the + ! checksums will not match and cause crash. + +! === module MOM_tracer_flow_control === +USE_USER_TRACER_EXAMPLE = False ! [Boolean] default = False + ! If true, use the USER_tracer_example tracer package. +USE_DOME_TRACER = False ! [Boolean] default = False + ! If true, use the DOME_tracer tracer package. +USE_ISOMIP_TRACER = False ! [Boolean] default = False + ! If true, use the ISOMIP_tracer tracer package. +USE_RGC_TRACER = False ! [Boolean] default = False + ! If true, use the RGC_tracer tracer package. +USE_IDEAL_AGE_TRACER = False ! [Boolean] default = False + ! If true, use the ideal_age_example tracer package. +USE_REGIONAL_DYES = False ! [Boolean] default = False + ! If true, use the regional_dyes tracer package. +USE_OIL_TRACER = False ! [Boolean] default = False + ! If true, use the oil_tracer tracer package. +USE_ADVECTION_TEST_TRACER = False ! [Boolean] default = False + ! If true, use the advection_test_tracer tracer package. +USE_OCMIP2_CFC = False ! [Boolean] default = False + ! If true, use the MOM_OCMIP2_CFC tracer package. +USE_CFC_CAP = False ! [Boolean] default = False + ! If true, use the MOM_CFC_cap tracer package. +USE_generic_tracer = False ! [Boolean] default = False + ! If true and _USE_GENERIC_TRACER is defined as a preprocessor macro, use the + ! MOM_generic_tracer packages. +USE_PSEUDO_SALT_TRACER = False ! [Boolean] default = False + ! If true, use the pseudo salt tracer, typically run as a diagnostic. +USE_BOUNDARY_IMPULSE_TRACER = False ! [Boolean] default = False + ! If true, use the boundary impulse tracer. +USE_DYED_OBC_TRACER = False ! [Boolean] default = False + ! If true, use the dyed_obc_tracer tracer package. +USE_NW2_TRACERS = False ! [Boolean] default = False + ! If true, use the NeverWorld2 tracers. + +! === module MOM_coord_initialization === +COORD_CONFIG = "none" ! default = "none" + ! This specifies how layers are to be defined: + ! ALE or none - used to avoid defining layers in ALE mode + ! file - read coordinate information from the file + ! specified by (COORD_FILE). + ! BFB - Custom coords for buoyancy-forced basin case + ! based on SST_S, T_BOT and DRHO_DT. + ! linear - linear based on interfaces not layers + ! layer_ref - linear based on layer densities + ! ts_ref - use reference temperature and salinity + ! ts_range - use range of temperature and salinity + ! (T_REF and S_REF) to determine surface density + ! and GINT calculate internal densities. + ! gprime - use reference density (RHO_0) for surface + ! density and GINT calculate internal densities. + ! ts_profile - use temperature and salinity profiles + ! (read from COORD_FILE) to set layer densities. + ! USER - call a user modified routine. +GFS = 9.8 ! [m s-2] default = 9.8 + ! The reduced gravity at the free surface. +LIGHTEST_DENSITY = 1035.0 ! [kg m-3] default = 1035.0 + ! The reference potential density used for layer 1. +REGRIDDING_COORDINATE_MODE = "Z*" ! default = "LAYER" + ! Coordinate mode for vertical regridding. Choose among the following + ! possibilities: LAYER - Isopycnal or stacked shallow water layers + ! ZSTAR, Z* - stretched geopotential z* + ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf + ! SIGMA - terrain following coordinates + ! RHO - continuous isopycnal + ! SCALAR - any scalar variable ** for diagnostic grids only ** + ! HYCOM1 - HyCOM-like hybrid coordinate + ! HYBGEN - Hybrid coordinate from the Hycom hybgen code + ! ADAPTIVE - optimize for smooth neutral density surfaces +REGRIDDING_COORDINATE_UNITS = "m" ! default = "m" + ! Units of the regridding coordinate. +ALE_COORDINATE_CONFIG = "FILE:./INPUT/vgrid_cm4.nc,dz" ! default = "UNIFORM" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter ALE_RESOLUTION + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! WOA09INT[:N] - layers spanned by the WOA09 depths + ! WOA23INT[:N] - layers spanned by the WOA23 depths + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +!ALE_RESOLUTION = 4*2.0, 2*2.01, 2*2.02, 2.05, 2.07, 2.09, 2.13, 2.18, 2.24, 2.3, 2.4, 2.5, 2.62, 2.78, 2.95, 3.17, 3.42, 3.71, 4.07, 4.48, 4.97, 5.55, 6.23, 7.04, 7.99, 9.11, 10.43, 11.98, 13.8, 15.94, 18.42, 21.32, 24.66, 28.51, 32.91, 37.92, 43.56, 49.87, 56.88, 64.55, 72.91, 81.87, 91.4, 101.39, 111.73, 122.29, 132.93, 143.47, 153.78, 163.7, 173.07, 181.78, 189.76, 196.89, 203.17, 208.58, 213.14, 216.87, 219.87, 222.19, 223.94, 225.18, 226.04, 226.59, 226.9, 227.07, 227.14, 2*227.16, 227.17 ! [m] + ! The distribution of vertical resolution for the target + ! grid used for Eulerian-like coordinates. For example, + ! in z-coordinate mode, the parameter is a list of level + ! thicknesses (in m). In sigma-coordinate mode, the list + ! is of non-dimensional fractions of the water column. +MIN_THICKNESS = 0.001 ! [m] default = 0.001 + ! When regridding, this is the minimum layer thickness allowed. +REMAPPING_SCHEME = "PLM" ! default = "PLM" + ! This sets the reconstruction scheme used for vertical remapping for all + ! variables. It can be one of the following schemes: + ! PCM (1st-order accurate) + ! PLM (2nd-order accurate) + ! PLM_HYBGEN (2nd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! PPM_HYBGEN (3rd-order accurate) + ! WENO_HYBGEN (3rd-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) +VELOCITY_REMAPPING_SCHEME = "PLM" ! default = "PLM" + ! This sets the reconstruction scheme used for vertical remapping of velocities. + ! By default it is the same as REMAPPING_SCHEME. It can be one of the following + ! schemes: + ! PCM (1st-order accurate) + ! PLM (2nd-order accurate) + ! PLM_HYBGEN (2nd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! PPM_HYBGEN (3rd-order accurate) + ! WENO_HYBGEN (3rd-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) +FATAL_CHECK_RECONSTRUCTIONS = False ! [Boolean] default = False + ! If true, cell-by-cell reconstructions are checked for consistency and if + ! non-monotonicity or an inconsistency is detected then a FATAL error is issued. +FATAL_CHECK_REMAPPING = False ! [Boolean] default = False + ! If true, the results of remapping are checked for conservation and new extrema + ! and if an inconsistency is detected then a FATAL error is issued. +REMAP_BOUND_INTERMEDIATE_VALUES = False ! [Boolean] default = False + ! If true, the values on the intermediate grid used for remapping are forced to + ! be bounded, which might not be the case due to round off. +REMAP_BOUNDARY_EXTRAP = False ! [Boolean] default = False + ! If true, values at the interfaces of boundary cells are extrapolated instead + ! of piecewise constant +INIT_BOUNDARY_EXTRAP = False ! [Boolean] default = False + ! If true, values at the interfaces of boundary cells are extrapolated instead + ! of piecewise constant during initialization.Defaults to REMAP_BOUNDARY_EXTRAP. +REMAPPING_USE_OM4_SUBCELLS = True ! [Boolean] default = True + ! This selects the remapping algorithm used in OM4 that does not use the full + ! reconstruction for the top- and lower-most sub-layers, but instead assumes + ! they are always vanished (untrue) and so just uses their edge values. We + ! recommend setting this option to false. +REMAPPING_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the expressions and order of arithmetic to use for remapping. + ! Values below 20190101 result in the use of older, less accurate expressions + ! that were in use at the end of 2018. Higher values result in the use of more + ! robust and accurate forms of mathematically equivalent expressions. +PARTIAL_CELL_VELOCITY_REMAP = False ! [Boolean] default = False + ! If true, use partial cell thicknesses at velocity points that are masked out + ! where they extend below the shallower of the neighboring bathymetry for + ! remapping velocity. +REMAP_AFTER_INITIALIZATION = True ! [Boolean] default = True + ! If true, applies regridding and remapping immediately after initialization so + ! that the state is ALE consistent. This is a legacy step and should not be + ! needed if the initialization is consistent with the coordinate mode. +REGRID_TIME_SCALE = 0.0 ! [s] default = 0.0 + ! The time-scale used in blending between the current (old) grid and the target + ! (new) grid. A short time-scale favors the target grid (0. or anything less + ! than DT_THERM) has no memory of the old grid. A very long time-scale makes the + ! model more Lagrangian. +REGRID_FILTER_SHALLOW_DEPTH = 0.0 ! [m] default = 0.0 + ! The depth above which no time-filtering is applied. Above this depth final + ! grid exactly matches the target (new) grid. +REGRID_FILTER_DEEP_DEPTH = 0.0 ! [m] default = 0.0 + ! The depth below which full time-filtering is applied with time-scale + ! REGRID_TIME_SCALE. Between depths REGRID_FILTER_SHALLOW_DEPTH and + ! REGRID_FILTER_SHALLOW_DEPTH the filter weights adopt a cubic profile. +REMAP_VEL_MASK_BBL_THICK = -0.001 ! [m] default = -0.001 + ! A thickness of a bottom boundary layer below which velocities in thin layers + ! are zeroed out after remapping, following practice with Hybgen remapping, or a + ! negative value to avoid such filtering altogether. + +! === module MOM_state_initialization === +FATAL_INCONSISTENT_RESTART_TIME = False ! [Boolean] default = False + ! If true and a time_in value is provided to MOM_initialize_state, verify that + ! the time read from a restart file is the same as time_in, and issue a fatal + ! error if it is not. Otherwise, simply set the time to time_in if present. +INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False + ! If true, initialize the layer thicknesses, temperatures, and salinities from a + ! Z-space file on a latitude-longitude grid. + +! === module MOM_initialize_layers_from_Z === +TEMP_SALT_Z_INIT_FILE = "WOA_column.nc" ! default = "temp_salt_z.nc" + ! The name of the z-space input file used to initialize temperatures (T) and + ! salinities (S). If T and S are not in the same file, TEMP_Z_INIT_FILE and + ! SALT_Z_INIT_FILE must be set. +TEMP_Z_INIT_FILE = "WOA_column.nc" ! default = "WOA_column.nc" + ! The name of the z-space input file used to initialize temperatures, only. +SALT_Z_INIT_FILE = "WOA_column.nc" ! default = "WOA_column.nc" + ! The name of the z-space input file used to initialize temperatures, only. +Z_INIT_FILE_PTEMP_VAR = "PTEMP" ! default = "ptemp" + ! The name of the potential temperature variable in TEMP_Z_INIT_FILE. +Z_INIT_FILE_SALT_VAR = "SALT" ! default = "salt" + ! The name of the salinity variable in SALT_Z_INIT_FILE. +Z_INIT_HOMOGENIZE = True ! [Boolean] default = False + ! If True, then horizontally homogenize the interpolated initial conditions. +Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False + ! If True, then remap straight to model coordinate from file. +Z_INIT_REMAPPING_SCHEME = "PPM_IH4" ! default = "PPM_IH4" + ! The remapping scheme to use if using Z_INIT_ALE_REMAPPING is True. +Z_INIT_REMAP_GENERAL = False ! [Boolean] default = False + ! If false, only initializes to z* coordinates. If true, allows initialization + ! directly to general coordinates. +Z_INIT_REMAP_FULL_COLUMN = False ! [Boolean] default = False + ! If false, only reconstructs profiles for valid data points. If true, inserts + ! vanished layers below the valid data. +Z_INIT_REMAP_OLD_ALG = False ! [Boolean] default = False + ! If false, uses the preferred remapping algorithm for initialization. If true, + ! use an older, less robust algorithm for remapping. +TEMP_SALT_INIT_VERTICAL_REMAP_ONLY = False ! [Boolean] default = False + ! If true, initial conditions are on the model horizontal grid. Extrapolation + ! over missing ocean values is done using an ICE-9 procedure with vertical ALE + ! remapping . +Z_INIT_REMAPPING_USE_OM4_SUBCELLS = True ! [Boolean] default = True + ! If true, use the OM4 remapping-via-subcells algorithm for initialization. See + ! REMAPPING_USE_OM4_SUBCELLS for more details. We recommend setting this option + ! to false. +HOR_REGRID_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic for horizontal regridding. Dates + ! before 20190101 give the same answers as the code did in late 2018, while + ! later versions add parentheses for rotational symmetry. Dates after 20230101 + ! use reproducing sums for global averages. +LAND_FILL_TEMP = 0.0 ! [degC] default = 0.0 + ! A value to use to fill in ocean temperatures on land points. +LAND_FILL_SALIN = 35.0 ! [ppt] default = 35.0 + ! A value to use to fill in ocean salinities on land points. +HORIZ_INTERP_TOL_TEMP = 0.001 ! [degC] default = 0.001 + ! The tolerance in temperature changes between iterations when interpolating + ! from an input dataset using horiz_interp_and_extrap_tracer. This routine + ! converges slowly, so an overly small tolerance can get expensive. +HORIZ_INTERP_TOL_SALIN = 0.001 ! [ppt] default = 0.001 + ! The tolerance in salinity changes between iterations when interpolating from + ! an input dataset using horiz_interp_and_extrap_tracer. This routine converges + ! slowly, so an overly small tolerance can get expensive. +DEPRESS_INITIAL_SURFACE = False ! [Boolean] default = False + ! If true, depress the initial surface to avoid huge tsunamis when a large + ! surface pressure is applied. +TRIM_IC_FOR_P_SURF = False ! [Boolean] default = False + ! If true, cuts way the top of the column for initial conditions at the depth + ! where the hydrostatic pressure matches the imposed surface pressure which is + ! read from file. +REGRID_ACCELERATE_INIT = False ! [Boolean] default = False + ! If true, runs REGRID_ACCELERATE_ITERATIONS iterations of the regridding + ! algorithm to push the initial grid to be consistent with the initial + ! condition. Useful only for state-based and iterative coordinates. +VELOCITY_CONFIG = "zero" ! default = "zero" + ! A string that determines how the initial velocities are specified for a new + ! run: + ! file - read velocities from the file specified + ! by (VELOCITY_FILE). + ! zero - the fluid is initially at rest. + ! uniform - the flow is uniform (determined by + ! parameters INITIAL_U_CONST and INITIAL_V_CONST). + ! rossby_front - a mixed layer front in thermal wind balance. + ! soliton - Equatorial Rossby soliton. + ! USER - call a user modified routine. +ODA_INCUPD = False ! [Boolean] default = False + ! If true, oda incremental updates will be applied everywhere in the domain. +SPONGE = False ! [Boolean] default = False + ! If true, sponges may be applied anywhere in the domain. The exact location and + ! properties of those sponges are specified via SPONGE_CONFIG. + +! === module MOM_diag_mediator === +NUM_DIAG_COORDS = 1 ! default = 1 + ! The number of diagnostic vertical coordinates to use. For each coordinate, an + ! entry in DIAG_COORDS must be provided. +DIAG_REMAPPING_USE_OM4_SUBCELLS = True ! [Boolean] default = True + ! If true, use the OM4 remapping-via-subcells algorithm for diagnostics. See + ! REMAPPING_USE_OM4_SUBCELLS for details. We recommend setting this option to + ! false. +USE_INDEX_DIAGNOSTIC_AXES = False ! [Boolean] default = False + ! If true, use a grid index coordinate convention for diagnostic axes. +DIAG_COORDS = "scalar SCALAR SCALAR" ! default = "z Z ZSTAR" + ! A list of string tuples associating diag_table modules to a coordinate + ! definition used for diagnostics. Each string is of the form "MODULE_SUFFIX + ! PARAMETER_SUFFIX COORDINATE_NAME". +DIAG_MISVAL = 1.0E+20 ! [various] default = 1.0E+20 + ! Set the default missing value to use for diagnostics. +DIAG_AS_CHKSUM = False ! [Boolean] default = False + ! Instead of writing diagnostics to the diag manager, write a text file + ! containing the checksum (bitcount) of the array. +AVAILABLE_DIAGS_FILE = "available_diags.000000" ! default = "available_diags.000000" + ! A file into which to write a list of all available ocean diagnostics that can + ! be included in a diag_table. +DIAG_COORD_INTERP_SCHEME_SCALAR = "P1M_H2" ! default = "PPM_H4" + ! This sets the interpolation scheme to use to determine the new grid. These + ! parameters are only relevant when REGRIDDING_COORDINATE_MODE is set to a + ! function of state. Otherwise, it is not used. It can be one of the following + ! schemes: + ! P1M_H2 (2nd-order accurate) + ! P1M_H4 (2nd-order accurate) + ! P1M_IH4 (2nd-order accurate) + ! PLM (2nd-order accurate) + ! PPM_CW (3rd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! P3M_IH4IH3 (4th-order accurate) + ! P3M_IH6IH5 (4th-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) +REGRIDDING_ANSWER_DATE = 20181231 ! default = 20181231 + ! The vintage of the expressions and order of arithmetic to use for regridding. + ! Values below 20190101 result in the use of older, less accurate expressions + ! that were in use at the end of 2018. Higher values result in the use of more + ! robust and accurate forms of mathematically equivalent expressions. +DIAG_COORD_DEF_SCALAR = "FILE:targetlayers_scalar.nc,interfaces=interfaces" ! default = "WOA09" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter DIAG_COORD_RES_SCALAR + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! WOA09INT[:N] - layers spanned by the WOA09 depths + ! WOA23INT[:N] - layers spanned by the WOA23 depths + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +DIAG_COORD_P_REF_SCALAR = 0.0 ! [Pa] default = 2.0E+07 + ! The pressure that is used for calculating the diagnostic coordinate density. + ! (1 Pa = 1e4 dbar, so 2e7 is commonly used.) This is only used for the RHO + ! coordinate. +DIAG_COORD_REGRID_COMPRESSIBILITY_FRACTION_SCALAR = 0.0 ! [nondim] default = 0.0 + ! When interpolating potential density profiles we can add some artificial + ! compressibility solely to make homogeneous regions appear stratified. +DIAG_COORD_HISTOGRAM_EXTENSIVE_DIAGS_SCALAR = True ! [nondim] default = False + ! If true, extensive diagnostics are remapped using a histogram procedureThis is + ! therefore suitable for coordinates that are non-monotonic in the vertical + ! dimension. This should only be set True for **diagnostic**coordinates. + +! === module MOM_MEKE === +USE_MEKE = False ! [Boolean] default = False + ! If true, turns on the MEKE scheme which calculates a sub-grid mesoscale eddy + ! kinetic energy budget. + +! === module MOM_lateral_mixing_coeffs === +USE_VARIABLE_MIXING = False ! [Boolean] default = False + ! If true, the variable mixing code will be called. This allows diagnostics to + ! be created even if the scheme is not used. If KHTR_SLOPE_CFF>0 or + ! KhTh_Slope_Cff>0, this is set to true regardless of what is in the parameter + ! file. +USE_VISBECK = False ! [Boolean] default = False + ! If true, use the Visbeck et al. (1997) formulation for + ! thickness diffusivity. +RESOLN_SCALED_KH = False ! [Boolean] default = False + ! If true, the Laplacian lateral viscosity is scaled away when the first + ! baroclinic deformation radius is well resolved. +DEPTH_SCALED_KHTH = False ! [Boolean] default = False + ! If true, KHTH is scaled away when the depth is shallowerthan a reference + ! depth: KHTH = MIN(1,H/H0)**N * KHTH, where H0 is a reference depth, controlled + ! via DEPTH_SCALED_KHTH_H0, and the exponent (N) is controlled via + ! DEPTH_SCALED_KHTH_EXP. +RESOLN_SCALED_KHTH = False ! [Boolean] default = False + ! If true, the interface depth diffusivity is scaled away when the first + ! baroclinic deformation radius is well resolved. +RESOLN_SCALED_KHTR = False ! [Boolean] default = False + ! If true, the epipycnal tracer diffusivity is scaled away when the first + ! baroclinic deformation radius is well resolved. +RESOLN_USE_EBT = False ! [Boolean] default = False + ! If true, uses the equivalent barotropic wave speed instead of first baroclinic + ! wave for calculating the resolution fn. +KHTH_USE_EBT_STRUCT = False ! [Boolean] default = False + ! If true, uses the equivalent barotropic structure as the vertical structure of + ! thickness diffusivity. +KD_GL90_USE_EBT_STRUCT = False ! [Boolean] default = False + ! If true, uses the equivalent barotropic structure as the vertical structure of + ! diffusivity in the GL90 scheme. +KHTH_SLOPE_CFF = 0.0 ! [nondim] default = 0.0 + ! The nondimensional coefficient in the Visbeck formula for the interface depth + ! diffusivity +KHTR_SLOPE_CFF = 0.0 ! [nondim] default = 0.0 + ! The nondimensional coefficient in the Visbeck formula for the epipycnal tracer + ! diffusivity +USE_STORED_SLOPES = False ! [Boolean] default = False + ! If true, the isopycnal slopes are calculated once and stored for re-use. This + ! uses more memory but avoids calling the equation of state more times than + ! should be necessary. +VERY_SMALL_FREQUENCY = 1.0E-17 ! [s-1] default = 1.0E-17 + ! A miniscule frequency that is used to avoid division by 0. The default value + ! is roughly (pi / (the age of the universe)). +USE_STANLEY_ISO = False ! [Boolean] default = False + ! If true, turn on Stanley SGS T variance parameterization in isopycnal slope + ! code. +USE_QG_LEITH_GM = False ! [Boolean] default = False + ! If true, use the QG Leith viscosity as the GM coefficient. + +! === module MOM_set_visc === +SET_VISC_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the set viscosity + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. +BOTTOMDRAGLAW = True ! [Boolean] default = True + ! If true, the bottom stress is calculated with a drag law of the form + ! c_drag*|u|*u. The velocity magnitude may be an assumed value or it may be + ! based on the actual velocity in the bottommost HBBL, depending on LINEAR_DRAG. +DRAG_AS_BODY_FORCE = False ! [Boolean] default = False + ! If true, the bottom stress is imposed as an explicit body force applied over a + ! fixed distance from the bottom, rather than as an implicit calculation based + ! on an enhanced near-bottom viscosity. The thickness of the bottom boundary + ! layer is HBBL. +CHANNEL_DRAG = False ! [Boolean] default = False + ! If true, the bottom drag is exerted directly on each layer proportional to the + ! fraction of the bottom it overlies. +LINEAR_DRAG = False ! [Boolean] default = False + ! If LINEAR_DRAG and BOTTOMDRAGLAW are defined the drag law is + ! cdrag*DRAG_BG_VEL*u. +PRANDTL_TURB = 1.0 ! [nondim] default = 1.0 + ! The turbulent Prandtl number applied to shear instability. +DYNAMIC_VISCOUS_ML = False ! [Boolean] default = False + ! If true, use a bulk Richardson number criterion to determine the mixed layer + ! thickness for viscosity. +OMEGA = 7.2921E-05 ! [s-1] default = 7.2921E-05 + ! The rotation rate of the earth. +HBBL = 10.0 ! [m] + ! The thickness of a bottom boundary layer with a viscosity increased by + ! KV_EXTRA_BBL if BOTTOMDRAGLAW is not defined, or the thickness over which + ! near-bottom velocities are averaged for the drag law if BOTTOMDRAGLAW is + ! defined but LINEAR_DRAG is not. +CDRAG = 0.0 ! [nondim] default = 0.003 + ! CDRAG is the drag coefficient relating the magnitude of the velocity field to + ! the bottom stress. CDRAG is only used if BOTTOMDRAGLAW is defined. +BBL_USE_TIDAL_BG = False ! [Boolean] default = False + ! Flag to use the tidal RMS amplitude in place of constant background velocity + ! for computing u* in the BBL. This flag is only used when BOTTOMDRAGLAW is true + ! and LINEAR_DRAG is false. +DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 + ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an + ! unresolved velocity that is combined with the resolved velocity to estimate + ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is + ! defined. +BBL_USE_EOS = True ! [Boolean] default = True + ! If true, use the equation of state in determining the properties of the bottom + ! boundary layer. Otherwise use the layer target potential densities. The + ! default of this parameter is the value of USE_EOS. +BBL_THICK_MIN = 0.1 ! [m] default = 0.0 + ! The minimum bottom boundary layer thickness that can be used with + ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum + ! near-bottom viscosity. +HTBL_SHELF_MIN = 0.1 ! [m] default = 0.1 + ! The minimum top boundary layer thickness that can be used with BOTTOMDRAGLAW. + ! This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum near-top + ! viscosity. +HTBL_SHELF = 10.0 ! [m] default = 10.0 + ! The thickness over which near-surface velocities are averaged for the drag law + ! under an ice shelf. By default this is the same as HBBL +KV = 1.0E-04 ! [m2 s-1] + ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 + ! m2 s-1, may be used. +KV_BBL_MIN = 1.0E-04 ! [m2 s-1] default = 1.0E-04 + ! The minimum viscosities in the bottom boundary layer. +KV_TBL_MIN = 1.0E-04 ! [m2 s-1] default = 1.0E-04 + ! The minimum viscosities in the top boundary layer. +CORRECT_BBL_BOUNDS = False ! [Boolean] default = False + ! If true, uses the correct bounds on the BBL thickness and viscosity so that + ! the bottom layer feels the intended drag. + +! === module MOM_thickness_diffuse === +KHTH = 0.0 ! [m2 s-1] default = 0.0 + ! The background horizontal thickness diffusivity. +READ_KHTH = False ! [Boolean] default = False + ! If true, read a file (given by KHTH_FILE) containing the spatially varying + ! horizontal isopycnal height diffusivity. +KHTH_MIN = 0.0 ! [m2 s-1] default = 0.0 + ! The minimum horizontal thickness diffusivity. +KHTH_MAX = 0.0 ! [m2 s-1] default = 0.0 + ! The maximum horizontal thickness diffusivity. +KHTH_MAX_CFL = 0.8 ! [nondimensional] default = 0.8 + ! The maximum value of the local diffusive CFL ratio that is permitted for the + ! thickness diffusivity. 1.0 is the marginally unstable value in a pure layered + ! model, but much smaller numbers (e.g. 0.1) seem to work better for ALE-based + ! models. +KH_ETA_CONST = 0.0 ! [m2 s-1] default = 0.0 + ! The background horizontal diffusivity of the interface heights (without + ! considering the layer density structure). If diffusive CFL limits are + ! encountered, the diffusivities of the isopycnals and the interfaces heights + ! are scaled back proportionately. +KH_ETA_VEL_SCALE = 0.0 ! [m s-1] default = 0.0 + ! A velocity scale that is multiplied by the grid spacing to give a contribution + ! to the horizontal diffusivity of the interface heights (without considering + ! the layer density structure). +DETANGLE_INTERFACES = False ! [Boolean] default = False + ! If defined add 3-d structured enhanced interface height diffusivities to + ! horizontally smooth jagged layers. +KHTH_SLOPE_MAX = 0.01 ! [nondim] default = 0.01 + ! A slope beyond which the calculated isopycnal slope is not reliable and is + ! scaled away. +KD_SMOOTH = 1.0E-06 ! [m2 s-1] default = 1.0E-06 + ! A diapycnal diffusivity that is used to interpolate more sensible values of T + ! & S into thin layers. +KHTH_USE_FGNV_STREAMFUNCTION = False ! [Boolean] default = False + ! If true, use the streamfunction formulation of Ferrari et al., 2010, which + ! effectively emphasizes graver vertical modes by smoothing in the vertical. +USE_STANLEY_GM = False ! [Boolean] default = False + ! If true, turn on Stanley SGS T variance parameterization in GM code. +MEKE_GM_SRC_ALT = False ! [Boolean] default = False + ! If true, use the GM energy conversion form S^2*N^2*kappa rather than the + ! streamfunction for the GM source term. +MEKE_GEOMETRIC = False ! [Boolean] default = False + ! If true, uses the GM coefficient formulation from the GEOMETRIC framework + ! (Marshall et al., 2012). +USE_KH_IN_MEKE = False ! [Boolean] default = False + ! If true, uses the thickness diffusivity calculated here to diffuse MEKE. +USE_GME = False ! [Boolean] default = False + ! If true, use the GM+E backscatter scheme in association with the Gent and + ! McWilliams parameterization. +USE_GM_WORK_BUG = False ! [Boolean] default = False + ! If true, compute the top-layer work tendency on the u-grid with the incorrect + ! sign, for legacy reproducibility. +STOCH_EOS = False ! [Boolean] default = False + ! If true, stochastic perturbations are applied to the EOS in the PGF. +STANLEY_COEFF = -1.0 ! [nondim] default = -1.0 + ! Coefficient correlating the temperature gradient and SGS T variance. + +! === module MOM_porous_barriers === +PORBAR_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the porous barrier weight function calculations. Values below + ! 20220806 recover the old answers in which the layer averaged weights are not + ! strictly limited by an upper-bound of 1.0 . +PORBAR_MASKING_DEPTH = 0.0 ! [m] default = 0.0 + ! If the effective average depth at the velocity cell is shallower than this + ! number, then porous barrier is not applied at that location. + ! PORBAR_MASKING_DEPTH is assumed to be positive below the sea surface. +PORBAR_ETA_INTERP = "MAX" ! default = "MAX" + ! A string describing the method that decides how the interface heights at the + ! velocity points are calculated. Valid values are: + ! MAX (the default) - maximum of the adjacent cells + ! MIN - minimum of the adjacent cells + ! ARITHMETIC - arithmetic mean of the adjacent cells + ! HARMONIC - harmonic mean of the adjacent cells + +! === module MOM_dynamics_unsplit === +UNSPLIT_DT_VISC_BUG = False ! [Boolean] default = False + ! If false, use the correct timestep in the viscous terms applied in the first + ! predictor step with the unsplit time stepping scheme, and in the calculation + ! of the turbulent mixed layer properties for viscosity with unsplit or + ! unsplit_RK2. If true, an older incorrect value is used. +TIDES = False ! [Boolean] default = False + ! If true, apply tidal momentum forcing. +CALCULATE_SAL = False ! [Boolean] default = False + ! If true, calculate self-attraction and loading. + +! === module MOM_continuity_PPM === +MONOTONIC_CONTINUITY = False ! [Boolean] default = False + ! If true, CONTINUITY_PPM uses the Colella and Woodward monotonic limiter. The + ! default (false) is to use a simple positive definite limiter. +SIMPLE_2ND_PPM_CONTINUITY = False ! [Boolean] default = False + ! If true, CONTINUITY_PPM uses a simple 2nd order (arithmetic mean) + ! interpolation of the edge values. This may give better PV conservation + ! properties. While it formally reduces the accuracy of the continuity solver + ! itself in the strongly advective limit, it does not reduce the overall order + ! of accuracy of the dynamic core. +UPWIND_1ST_CONTINUITY = True ! [Boolean] default = False + ! If true, CONTINUITY_PPM becomes a 1st-order upwind continuity solver. This + ! scheme is highly diffusive but may be useful for debugging or in single-column + ! mode where its minimal stencil is useful. +ETA_TOLERANCE = 1.0E-06 ! [m] default = 3.75E-09 + ! The tolerance for the differences between the barotropic and baroclinic + ! estimates of the sea surface height due to the fluxes through each face. The + ! total tolerance for SSH is 4 times this value. The default is + ! 0.5*NK*ANGSTROM, and this should not be set less than about + ! 10^-15*MAXIMUM_DEPTH. +VELOCITY_TOLERANCE = 3.0E+08 ! [m s-1] default = 3.0E+08 + ! The tolerance for barotropic velocity discrepancies between the barotropic + ! solution and the sum of the layer thicknesses. +CONT_PPM_AGGRESS_ADJUST = False ! [Boolean] default = False + ! If true, allow the adjusted velocities to have a relative CFL change up to + ! 0.5. +CONT_PPM_VOLUME_BASED_CFL = False ! [Boolean] default = False + ! If true, use the ratio of the open face lengths to the tracer cell areas when + ! estimating CFL numbers. The default is set by CONT_PPM_AGGRESS_ADJUST. +CONTINUITY_CFL_LIMIT = 0.5 ! [nondim] default = 0.5 + ! The maximum CFL of the adjusted velocities. +CONT_PPM_BETTER_ITER = True ! [Boolean] default = True + ! If true, stop corrective iterations using a velocity based criterion and only + ! stop if the iteration is better than all predecessors. +CONT_PPM_USE_VISC_REM_MAX = True ! [Boolean] default = True + ! If true, use more appropriate limiting bounds for corrections in strongly + ! viscous columns. +CONT_PPM_MARGINAL_FACE_AREAS = True ! [Boolean] default = True + ! If true, use the marginal face areas from the continuity solver for use as the + ! weights in the barotropic solver. Otherwise use the transport averaged areas. +VISC_REM_CONT_HVEL_FIX = False ! [Boolean] default = False + ! If true, velocity cell thickness h_[uv] from the continuity solver is not + ! multiplied by visc_rem_[uv]. Default of this flag is set by VISC_REM_BUG. + +! === module MOM_CoriolisAdv === +NOSLIP = False ! [Boolean] default = False + ! If true, no slip boundary conditions are used; otherwise free slip boundary + ! conditions are assumed. The implementation of the free slip BCs on a C-grid is + ! much cleaner than the no slip BCs. The use of free slip BCs is strongly + ! encouraged, and no slip BCs are not used with the biharmonic viscosity. +CORIOLIS_EN_DIS = True ! [Boolean] default = False + ! If true, two estimates of the thickness fluxes are used to estimate the + ! Coriolis term, and the one that dissipates energy relative to the other one is + ! used. +CORIOLIS_SCHEME = "SADOURNY75_ENERGY" ! default = "SADOURNY75_ENERGY" + ! CORIOLIS_SCHEME selects the discretization for the Coriolis terms. Valid + ! values are: + ! SADOURNY75_ENERGY - Sadourny, 1975; energy cons. + ! ARAKAWA_HSU90 - Arakawa & Hsu, 1990 + ! SADOURNY75_ENSTRO - Sadourny, 1975; enstrophy cons. + ! ARAKAWA_LAMB81 - Arakawa & Lamb, 1981; En. + Enst. + ! ARAKAWA_LAMB_BLEND - A blend of Arakawa & Lamb with + ! Arakawa & Hsu and Sadourny energy +BOUND_CORIOLIS = True ! [Boolean] default = False + ! If true, the Coriolis terms at u-points are bounded by the four estimates of + ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This + ! option is always effectively false with CORIOLIS_EN_DIS defined and + ! CORIOLIS_SCHEME set to SADOURNY75_ENERGY. +KE_SCHEME = "KE_ARAKAWA" ! default = "KE_ARAKAWA" + ! KE_SCHEME selects the discretization for acceleration due to the kinetic + ! energy gradient. Valid values are: + ! KE_ARAKAWA, KE_SIMPLE_GUDONOV, KE_GUDONOV +PV_ADV_SCHEME = "PV_ADV_CENTERED" ! default = "PV_ADV_CENTERED" + ! PV_ADV_SCHEME selects the discretization for PV advection. Valid values are: + ! PV_ADV_CENTERED - centered (aka Sadourny, 75) + ! PV_ADV_UPWIND1 - upwind, first order + +! === module MOM_PressureForce === +ANALYTIC_FV_PGF = True ! [Boolean] default = True + ! If true the pressure gradient forces are calculated with a finite volume form + ! that analytically integrates the equations of state in pressure to avoid any + ! possibility of numerical thermobaric instability, as described in Adcroft et + ! al., O. Mod. (2008). + +! === module MOM_PressureForce_FV === +RHO_PGF_REF = 1035.0 ! [kg m-3] default = 1035.0 + ! The reference density that is subtracted off when calculating pressure + ! gradient forces. Its inverse is subtracted off of specific volumes when in + ! non-Boussinesq mode. The default is RHO_0. +MASS_WEIGHT_IN_PRESSURE_GRADIENT = False ! [Boolean] default = False + ! If true, use mass weighting when interpolating T/S for integrals near the + ! bathymetry in FV pressure gradient calculations. +USE_INACCURATE_PGF_RHO_ANOM = False ! [Boolean] default = False + ! If true, use a form of the PGF that uses the reference density in an + ! inaccurate way. This is not recommended. +RECONSTRUCT_FOR_PRESSURE = True ! [Boolean] default = True + ! If True, use vertical reconstruction of T & S within the integrals of the FV + ! pressure gradient calculation. If False, use the constant-by-layer algorithm. + ! The default is set by USE_REGRIDDING. +PRESSURE_RECONSTRUCTION_SCHEME = 1 ! default = 1 + ! Order of vertical reconstruction of T/S to use in the integrals within the FV + ! pressure gradient calculation. + ! 0: PCM or no reconstruction. + ! 1: PLM reconstruction. + ! 2: PPM reconstruction. +BOUNDARY_EXTRAPOLATION_PRESSURE = True ! [Boolean] default = True + ! If true, the reconstruction of T & S for pressure in boundary cells is + ! extrapolated, rather than using PCM in these cells. If true, the same order + ! polynomial is used as is used for the interior cells. +USE_STANLEY_PGF = False ! [Boolean] default = False + ! If true, turn on Stanley SGS T variance parameterization in PGF code. + +! === module MOM_Zanna_Bolton === +USE_ZB2020 = False ! [Boolean] default = False + ! If true, turns on Zanna-Bolton-2020 (ZB) subgrid momentum parameterization of + ! mesoscale eddies. + +! === module MOM_hor_visc === +HOR_VISC_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the horizontal + ! viscosity calculations. Values below 20190101 recover the answers from the + ! end of 2018, while higher values use updated and more robust forms of the same + ! expressions. +USE_CONT_THICKNESS = False ! [Boolean] default = False + ! If true, use thickness at velocity points from continuity solver. This option + ! currently only works with split mode. +LAPLACIAN = False ! [Boolean] default = False + ! If true, use a Laplacian horizontal viscosity. +BIHARMONIC = False ! [Boolean] default = True + ! If true, use a biharmonic horizontal viscosity. BIHARMONIC may be used with + ! LAPLACIAN. +USE_LEITHY = False ! [Boolean] default = False + ! If true, use a biharmonic Leith nonlinear eddy viscosity together with a + ! harmonic backscatter. +USE_LAND_MASK_FOR_HVISC = True ! [Boolean] default = True + ! If true, use the land mask for the computation of thicknesses at velocity + ! locations. This eliminates the dependence on arbitrary values over land or + ! outside of the domain. +FRICTWORK_BUG = True ! [Boolean] default = True + ! If true, retain an answer-changing bug in calculating the FrictWork, which + ! cancels the h in thickness flux and the h at velocity point. This isnot + ! recommended. + +! === module MOM_vert_friction === +VERT_FRICTION_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the viscous + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use expressions that do not use an arbitrary hard-coded + ! maximum viscous coupling coefficient between layers. Values below 20230601 + ! recover a form of the viscosity within the mixed layer that breaks up the + ! magnitude of the wind stress in some non-Boussinesq cases. +DIRECT_STRESS = False ! [Boolean] default = False + ! If true, the wind stress is distributed over the topmost HMIX_STRESS of fluid + ! (like in HYCOM), and an added mixed layer viscosity or a physically based + ! boundary layer turbulence parameterization is not needed for stability. +FIXED_DEPTH_LOTW_ML = False ! [Boolean] default = False + ! If true, use a Law-of-the-wall prescription for the mixed layer viscosity + ! within a boundary layer that is the lesser of HMIX_FIXED and the total depth + ! of the ocean in a column. +LOTW_VISCOUS_ML_FLOOR = False ! [Boolean] default = False + ! If true, use a Law-of-the-wall prescription to set a lower bound on the + ! viscous coupling between layers within the surface boundary layer, based the + ! distance of interfaces from the surface. This only acts when there are large + ! changes in the thicknesses of successive layers or when the viscosity is set + ! externally and the wind stress has subsequently increased. +VON_KARMAN_CONST = 0.41 ! [nondim] default = 0.41 + ! The value the von Karman constant as used for mixed layer viscosity. +HARMONIC_VISC = True ! [Boolean] default = False + ! If true, use the harmonic mean thicknesses for calculating the vertical + ! viscosity. +HARMONIC_BL_SCALE = 0.0 ! [nondim] default = 0.0 + ! A scale to determine when water is in the boundary layers based solely on + ! harmonic mean thicknesses for the purpose of determining the extent to which + ! the thicknesses used in the viscosities are upwinded. +HMIX_FIXED = 0.01 ! [m] + ! The prescribed depth over which the near-surface viscosity and diffusivity are + ! elevated when the bulk mixed layer is not used. +USE_GL90_IN_SSW = False ! [Boolean] default = False + ! If true, use simpler method to calculate 1/N^2 in GL90 vertical viscosity + ! coefficient. This method is valid in stacked shallow water mode. +KV_ML_INVZ2 = 0.0 ! [m2 s-1] default = 0.0 + ! An extra kinematic viscosity in a mixed layer of thickness HMIX_FIXED, with + ! the actual viscosity scaling as 1/(z*HMIX_FIXED)^2, where z is the distance + ! from the surface, to allow for finite wind stresses to be transmitted through + ! infinitesimally thin surface layers. This is an older option for numerical + ! convenience without a strong physical basis, and its use is now discouraged. +MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 + ! The maximum velocity allowed before the velocity components are truncated. +CFL_BASED_TRUNCATIONS = True ! [Boolean] default = True + ! If true, base truncations on the CFL number, and not an absolute speed. +CFL_TRUNCATE = 0.5 ! [nondim] default = 0.5 + ! The value of the CFL number that will cause velocity components to be + ! truncated; instability can occur past 0.5. +CFL_REPORT = 0.5 ! [nondim] default = 0.5 + ! The value of the CFL number that causes accelerations to be reported; the + ! default is CFL_TRUNCATE. +CFL_TRUNCATE_RAMP_TIME = 0.0 ! [s] default = 0.0 + ! The time over which the CFL truncation value is ramped up at the beginning of + ! the run. +CFL_TRUNCATE_START = 0.0 ! [nondim] default = 0.0 + ! The start value of the truncation CFL number used when ramping up CFL_TRUNC. +STOKES_MIXING_COMBINED = False ! [Boolean] default = False + ! Flag to use Stokes drift Mixing via the Lagrangian current (Eulerian plus + ! Stokes drift). Still needs work and testing, so not recommended for use. +VEL_UNDERFLOW = 1.0E-30 ! [m s-1] default = 0.0 + ! A negligibly small velocity magnitude below which velocity components are set + ! to 0. A reasonable value might be 1e-30 m/s, which is less than an Angstrom + ! divided by the age of the universe. + +! === module MOM_mixed_layer_restrat === +MIXEDLAYER_RESTRAT = False ! [Boolean] default = False + ! If true, a density-gradient dependent re-stratifying flow is imposed in the + ! mixed layer. Can be used in ALE mode without restriction but in layer mode can + ! only be used if BULKMIXEDLAYER is true. + +! === module MOM_diagnostics === +DIAG_EBT_MONO_N2_COLUMN_FRACTION = 0.0 ! [nondim] default = 0.0 + ! The lower fraction of water column over which N2 is limited as monotonic for + ! the purposes of calculating the equivalent barotropic wave speed. +DIAG_EBT_MONO_N2_DEPTH = -1.0 ! [m] default = -1.0 + ! The depth below which N2 is limited as monotonic for the purposes of + ! calculating the equivalent barotropic wave speed. +INTERNAL_WAVE_SPEED_TOL = 0.001 ! [nondim] default = 0.001 + ! The fractional tolerance for finding the wave speeds. +INTERNAL_WAVE_SPEED_MIN = 0.0 ! [m s-1] default = 0.0 + ! A floor in the first mode speed below which 0 used instead. +INTERNAL_WAVE_SPEED_BETTER_EST = True ! [Boolean] default = True + ! If true, use a more robust estimate of the first mode wave speed as the + ! starting point for iterations. +INTWAVE_REMAPPING_USE_OM4_SUBCELLS = True ! [Boolean] default = True + ! If true, use the OM4 remapping-via-subcells algorithm for calculating EBT + ! structure. See REMAPPING_USE_OM4_SUBCELLS for details. We recommend setting + ! this option to false. + +! === module MOM_diabatic_driver === +! The following parameters are used for diabatic processes. +USE_LEGACY_DIABATIC_DRIVER = True ! [Boolean] default = True + ! If true, use a legacy version of the diabatic subroutine. This is temporary + ! and is needed to avoid change in answers. +ENERGETICS_SFC_PBL = True ! [Boolean] default = False + ! If true, use an implied energetics planetary boundary layer scheme to + ! determine the diffusivity and viscosity in the surface boundary layer. +EPBL_IS_ADDITIVE = True ! [Boolean] default = True + ! If true, the diffusivity from ePBL is added to all other diffusivities. + ! Otherwise, the larger of kappa-shear and ePBL diffusivities are used. +PRANDTL_EPBL = 1.0 ! [nondim] default = 1.0 + ! The Prandtl number used by ePBL to convert vertical diffusivities into + ! viscosities. +INTERNAL_TIDES = False ! [Boolean] default = False + ! If true, use the code that advances a separate set of equations for the + ! internal tide energy density. +MASSLESS_MATCH_TARGETS = True ! [Boolean] default = True + ! If true, the temperature and salinity of massless layers are kept consistent + ! with their target densities. Otherwise the properties of massless layers + ! evolve diffusively to match massive neighboring layers. +AGGREGATE_FW_FORCING = True ! [Boolean] default = True + ! If true, the net incoming and outgoing fresh water fluxes are combined and + ! applied as either incoming or outgoing depending on the sign of the net. If + ! false, the net incoming fresh water flux is added to the model and thereafter + ! the net outgoing is removed from the topmost non-vanished layers of the + ! updated state. +MIX_BOUNDARY_TRACERS = True ! [Boolean] default = True + ! If true, mix the passive tracers in massless layers at the bottom into the + ! interior as though a diffusivity of KD_MIN_TR were operating. +MIX_BOUNDARY_TRACER_ALE = False ! [Boolean] default = False + ! If true and in ALE mode, mix the passive tracers in massless layers at the + ! bottom into the interior as though a diffusivity of KD_MIN_TR were operating. +KD_MIN_TR = 2.0E-06 ! [m2 s-1] default = 2.0E-06 + ! A minimal diffusivity that should always be applied to tracers, especially in + ! massless layers near the bottom. The default is 0.1*KD. +KD_BBL_TR = 0.0 ! [m2 s-1] default = 0.0 + ! A bottom boundary layer tracer diffusivity that will allow for explicitly + ! specified bottom fluxes. The entrainment at the bottom is at least + ! sqrt(Kd_BBL_tr*dt) over the same distance. +TRACER_TRIDIAG = False ! [Boolean] default = False + ! If true, use the passive tracer tridiagonal solver for T and S +MINIMUM_FORCING_DEPTH = 0.001 ! [m] default = 0.001 + ! The smallest depth over which forcing can be applied. This only takes effect + ! when near-surface layers become thin relative to this scale, in which case the + ! forcing tendencies scaled down by distributing the forcing over this depth + ! scale. +EVAP_CFL_LIMIT = 0.8 ! [nondim] default = 0.8 + ! The largest fraction of a layer than can be lost to forcing (e.g. evaporation, + ! sea-ice formation) in one time-step. The unused mass loss is passed down + ! through the column. +MLD_EN_VALS = 3*0.0 ! [J/m2] default = 0.0 + ! The energy values used to compute MLDs. If not set (or all set to 0.), the + ! default will overwrite to 25., 2500., 250000. +DIAG_MLD_DENSITY_DIFF = 0.1 ! [kg/m3] default = 0.1 + ! The density difference used to determine a diagnostic mixed layer depth, + ! MLD_user, following the definition of Levitus 1982. The MLD is the depth at + ! which the density is larger than the surface density by the specified amount. +DIAG_DEPTH_SUBML_N2 = 50.0 ! [m] default = 50.0 + ! The distance over which to calculate a diagnostic of the stratification at the + ! base of the mixed layer. + +! === module MOM_CVMix_KPP === +! This is the MOM wrapper to CVMix:KPP +! See http://cvmix.github.io/ +USE_KPP = True ! [Boolean] default = False + ! If true, turns on the [CVMix] KPP scheme of Large et al., 1994, to calculate + ! diffusivities and non-local transport in the OBL. +KPP% +PASSIVE = True ! [Boolean] default = False + ! If True, puts KPP into a passive-diagnostic mode. +APPLY_NONLOCAL_TRANSPORT = False ! [Boolean] default = False + ! If True, applies the non-local transport to all tracers. If False, calculates + ! the non-local transport and tendencies but purely for diagnostic purposes. +N_SMOOTH = 0 ! default = 0 + ! The number of times the 1-1-4-1-1 Laplacian filter is applied on OBL depth. +RI_CRIT = 0.3 ! [nondim] default = 0.3 + ! Critical bulk Richardson number used to define depth of the surface Ocean + ! Boundary Layer (OBL). +VON_KARMAN = 0.4 ! [nondim] default = 0.4 + ! von Karman constant. +ENHANCE_DIFFUSION = True ! [Boolean] default = True + ! If True, adds enhanced diffusion at the based of the boundary layer. +INTERP_TYPE = "quadratic" ! default = "quadratic" + ! Type of interpolation to determine the OBL depth. + ! Allowed types are: linear, quadratic, cubic. +INTERP_TYPE2 = "LMD94" ! default = "LMD94" + ! Type of interpolation to compute diff and visc at OBL_depth. + ! Allowed types are: linear, quadratic, cubic or LMD94. +COMPUTE_EKMAN = False ! [Boolean] default = False + ! If True, limit OBL depth to be no deeper than Ekman depth. +COMPUTE_MONIN_OBUKHOV = False ! [Boolean] default = False + ! If True, limit the OBL depth to be no deeper than Monin-Obukhov depth. +CS = 98.96 ! [nondim] default = 98.96 + ! Parameter for computing velocity scale function. +CS2 = 6.32739901508 ! [nondim] default = 6.32739901508 + ! Parameter for computing non-local term. +DEEP_OBL_OFFSET = 0.0 ! [m] default = 0.0 + ! If non-zero, the distance above the bottom to which the OBL is clipped if it + ! would otherwise reach the bottom. The smaller of this and 0.1D is used. +FIXED_OBLDEPTH = False ! [Boolean] default = False + ! If True, fix the OBL depth to FIXED_OBLDEPTH_VALUE rather than using the OBL + ! depth from CVMix. This option is just for testing purposes. +FIXED_OBLDEPTH_VALUE = 30.0 ! [m] default = 30.0 + ! Value for the fixed OBL depth when fixedOBLdepth==True. This parameter is for + ! just for testing purposes. It will over-ride the OBLdepth computed from CVMix. +SURF_LAYER_EXTENT = 0.1 ! [nondim] default = 0.1 + ! Fraction of OBL depth considered in the surface layer. +MINIMUM_OBL_DEPTH = 0.0 ! [m] default = 0.0 + ! If non-zero, a minimum depth to use for KPP OBL depth. Independent of this + ! parameter, the OBL depth is always at least as deep as the first layer. +MINIMUM_VT2 = 1.0E-10 ! [m2/s2] default = 1.0E-10 + ! Min of the unresolved velocity Vt2 used in Rib CVMix calculation. + ! Scaling: MINIMUM_VT2 = const1*d*N*ws, with d=1m, N=1e-5/s, ws=1e-6 m/s. +NLT_SHAPE = "CVMix" ! default = "CVMix" + ! MOM6 method to set nonlocal transport profile. Over-rides the result from + ! CVMix. Allowed values are: + ! CVMix - Uses the profiles from CVMix specified by MATCH_TECHNIQUE + ! LINEAR - A linear profile, 1-sigma + ! PARABOLIC - A parablic profile, (1-sigma)^2 + ! CUBIC - A cubic profile, (1-sigma)^2(1+2*sigma) + ! CUBIC_LMD - The original KPP profile +MATCH_TECHNIQUE = "SimpleShapes" ! default = "SimpleShapes" + ! CVMix method to set profile function for diffusivity and NLT, as well as + ! matching across OBL base. Allowed values are: + ! SimpleShapes = sigma*(1-sigma)^2 for both diffusivity and NLT + ! MatchGradient = sigma*(1-sigma)^2 for NLT; diffusivity profile from + ! matching + ! MatchBoth = match gradient for both diffusivity and NLT + ! ParabolicNonLocal = sigma*(1-sigma)^2 for diffusivity; (1-sigma)^2 for NLT +KPP_ZERO_DIFFUSIVITY = False ! [Boolean] default = False + ! If True, zeroes the KPP diffusivity and viscosity; for testing purpose. +KPP_IS_ADDITIVE = True ! [Boolean] default = True + ! If true, adds KPP diffusivity to diffusivity from other schemes. + ! If false, KPP is the only diffusivity wherever KPP is non-zero. +KPP_SHORTWAVE_METHOD = "MXL_SW" ! default = "MXL_SW" + ! Determines contribution of shortwave radiation to KPP surface buoyancy flux. + ! Options include: + ! ALL_SW: use total shortwave radiation + ! MXL_SW: use shortwave radiation absorbed by mixing layer + ! LV1_SW: use shortwave radiation absorbed by top model layer +CVMix_ZERO_H_WORK_AROUND = 0.0 ! [m] default = 0.0 + ! A minimum thickness used to avoid division by small numbers in the vicinity of + ! vanished layers. This is independent of MIN_THICKNESS used in other parts of + ! MOM. +USE_KPP_LT_K = False ! [Boolean] default = False + ! Flag for Langmuir turbulence enhancement of turbulentmixing coefficient. +STOKES_MIXING = False ! [Boolean] default = False + ! Flag for Langmuir turbulence enhancement of turbulentmixing coefficient. +USE_KPP_LT_VT2 = False ! [Boolean] default = False + ! Flag for Langmuir turbulence enhancement of Vt2in Bulk Richardson Number. +ANSWER_DATE = 20240101 ! default = 20240101 + ! The vintage of the order of arithmetic in the CVMix KPP calculations. Values + ! below 20240501 recover the answers from early in 2024, while higher values use + ! expressions that have been refactored for rotational symmetry. +%KPP + +! === module MOM_CVMix_conv === +! Parameterization of enhanced mixing due to convection via CVMix +USE_CVMix_CONVECTION = False ! [Boolean] default = False + ! If true, turns on the enhanced mixing due to convection via CVMix. This scheme + ! increases diapycnal diffs./viscs. at statically unstable interfaces. Relevant + ! parameters are contained in the CVMix_CONVECTION% parameter block. + +! === module MOM_set_diffusivity === +FLUX_RI_MAX = 0.2 ! [nondim] default = 0.2 + ! The flux Richardson number where the stratification is large enough that N2 > + ! omega2. The full expression for the Flux Richardson number is usually + ! FLUX_RI_MAX*N2/(N2+OMEGA2). +SET_DIFF_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the set diffusivity + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. + +! === module MOM_tidal_mixing === +! Vertical Tidal Mixing Parameterization +USE_CVMix_TIDAL = False ! [Boolean] default = False + ! If true, turns on tidal mixing via CVMix +INT_TIDE_DISSIPATION = False ! [Boolean] default = False + ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, + ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). +ML_RADIATION = True ! [Boolean] default = False + ! If true, allow a fraction of TKE available from wind work to penetrate below + ! the base of the mixed layer with a vertical decay scale determined by the + ! minimum of: (1) The depth of the mixed layer, (2) an Ekman length scale. +ML_RAD_EFOLD_COEFF = 0.2 ! [nondim] default = 0.2 + ! A coefficient that is used to scale the penetration depth for turbulence below + ! the base of the mixed layer. This is only used if ML_RADIATION is true. +ML_RAD_BUG = False ! [Boolean] default = False + ! If true use code with a bug that reduces the energy available in the + ! transition layer by a factor of the inverse of the energy deposition + ! lenthscale (in m). +ML_RAD_KD_MAX = 0.001 ! [m2 s-1] default = 0.001 + ! The maximum diapycnal diffusivity due to turbulence radiated from the base of + ! the mixed layer. This is only used if ML_RADIATION is true. +ML_RAD_COEFF = 0.2 ! [nondim] default = 0.2 + ! The coefficient which scales MSTAR*USTAR^3 to obtain the energy available for + ! mixing below the base of the mixed layer. This is only used if ML_RADIATION is + ! true. +ML_RAD_APPLY_TKE_DECAY = True ! [Boolean] default = True + ! If true, apply the same exponential decay to ML_rad as is applied to the other + ! surface sources of TKE in the mixed layer code. This is only used if + ! ML_RADIATION is true. +MSTAR = 1.2 ! [nondim] default = 1.2 + ! The ratio of the friction velocity cubed to the TKE input to the mixed layer. +TKE_DECAY = 10.0 ! [nondim] default = 2.5 + ! The ratio of the natural Ekman depth to the TKE decay scale. +ML_OMEGA_FRAC = 1.0 ! [nondim] default = 0.0 + ! When setting the decay scale for turbulence, use this fraction of the absolute + ! rotation rate blended with the local value of f, as sqrt((1-of)*f^2 + + ! of*4*omega^2). +BBL_EFFIC = 0.2 ! [nondim] default = 0.2 + ! The efficiency with which the energy extracted by bottom drag drives BBL + ! diffusion. This is only used if BOTTOMDRAGLAW is true. +BBL_MIXING_MAX_DECAY = 200.0 ! [m] default = 200.0 + ! The maximum decay scale for the BBL diffusion, or 0 to allow the mixing to + ! penetrate as far as stratification and rotation permit. The default for now + ! is 200 m. This is only used if BOTTOMDRAGLAW is true. +BBL_MIXING_AS_MAX = True ! [Boolean] default = True + ! If true, take the maximum of the diffusivity from the BBL mixing and the other + ! diffusivities. Otherwise, diffusivity from the BBL_mixing is simply added. +USE_LOTW_BBL_DIFFUSIVITY = False ! [Boolean] default = False + ! If true, uses a simple, imprecise but non-coordinate dependent, model of BBL + ! mixing diffusivity based on Law of the Wall. Otherwise, uses the original BBL + ! scheme. +DZ_BBL_AVG_MIN = 0.0 ! [m] default = 0.0 + ! A minimal distance over which to average to determine the average bottom + ! boundary layer density. +SIMPLE_TKE_TO_KD = False ! [Boolean] default = False + ! If true, uses a simple estimate of Kd/TKE that will work for arbitrary + ! vertical coordinates. If false, calculates Kd/TKE and bounds based on exact + ! energetics for an isopycnal layer-formulation. + +! === module MOM_bkgnd_mixing === +! Adding static vertical background mixing coefficients +KD = 2.0E-05 ! [m2 s-1] default = 0.0 + ! The background diapycnal diffusivity of density in the interior. Zero or the + ! molecular value, ~1e-7 m2 s-1, may be used. +KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 + ! The minimum diapycnal diffusivity. +BRYAN_LEWIS_DIFFUSIVITY = False ! [Boolean] default = False + ! If true, use a Bryan & Lewis (JGR 1979) like tanh profile of background + ! diapycnal diffusivity with depth. This is done via CVMix. +HORIZ_VARYING_BACKGROUND = False ! [Boolean] default = False + ! If true, apply vertically uniform, latitude-dependent background diffusivity, + ! as described in Danabasoglu et al., 2012 +PRANDTL_BKGND = 1.0 ! [nondim] default = 1.0 + ! Turbulent Prandtl number used to convert vertical background diffusivities + ! into viscosities. +HENYEY_IGW_BACKGROUND = False ! [Boolean] default = False + ! If true, use a latitude-dependent scaling for the near surface background + ! diffusivity, as described in Harrison & Hallberg, JPO 2008. +KD_TANH_LAT_FN = False ! [Boolean] default = False + ! If true, use a tanh dependence of Kd_sfc on latitude, like CM2.1/CM2M. There + ! is no physical justification for this form, and it can not be used with + ! HENYEY_IGW_BACKGROUND. +KD_MAX = -1.0 ! [m2 s-1] default = -1.0 + ! The maximum permitted increment for the diapycnal diffusivity from TKE-based + ! parameterizations, or a negative value for no limit. +KD_ADD = 0.0 ! [m2 s-1] default = 0.0 + ! A uniform diapycnal diffusivity that is added everywhere without any filtering + ! or scaling. +USER_CHANGE_DIFFUSIVITY = False ! [Boolean] default = False + ! If true, call user-defined code to change the diffusivity. +DISSIPATION_MIN = 0.0 ! [W m-3] default = 0.0 + ! The minimum dissipation by which to determine a lower bound of Kd (a floor). +DISSIPATION_N0 = 0.0 ! [W m-3] default = 0.0 + ! The intercept when N=0 of the N-dependent expression used to set a minimum + ! dissipation by which to determine a lower bound of Kd (a floor): A in eps_min + ! = A + B*N. +DISSIPATION_N1 = 0.0 ! [J m-3] default = 0.0 + ! The coefficient multiplying N, following Gargett, used to set a minimum + ! dissipation by which to determine a lower bound of Kd (a floor): B in eps_min + ! = A + B*N +DISSIPATION_KD_MIN = 0.0 ! [m2 s-1] default = 0.0 + ! The minimum vertical diffusivity applied as a floor. +DOUBLE_DIFFUSION = False ! [Boolean] default = False + ! If true, increase diffusivites for temperature or salinity based on the + ! double-diffusive parameterization described in Large et al. (1994). + +! === module MOM_kappa_shear === +! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 +USE_JACKSON_PARAM = True ! [Boolean] default = False + ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing + ! parameterization. +VERTEX_SHEAR = False ! [Boolean] default = False + ! If true, do the calculations of the shear-driven mixing at the cell vertices + ! (i.e., the vorticity points). +RINO_CRIT = 0.25 ! [nondim] default = 0.25 + ! The critical Richardson number for shear mixing. +SHEARMIX_RATE = 0.089 ! [nondim] default = 0.089 + ! A nondimensional rate scale for shear-driven entrainment. Jackson et al find + ! values in the range of 0.085-0.089. +MAX_RINO_IT = 25 ! [nondim] default = 50 + ! The maximum number of iterations that may be used to estimate the Richardson + ! number driven mixing. +KD_KAPPA_SHEAR_0 = 2.0E-05 ! [m2 s-1] default = 2.0E-05 + ! The background diffusivity that is used to smooth the density and shear + ! profiles before solving for the diffusivities. The default is the greater of + ! KD and 1e-7 m2 s-1. +KD_SEED_KAPPA_SHEAR = 1.0 ! [m2 s-1] default = 1.0 + ! A moderately large seed value of diapycnal diffusivity that is used as a + ! starting turbulent diffusivity in the iterations to find an energetically + ! constrained solution for the shear-driven diffusivity. +KD_TRUNC_KAPPA_SHEAR = 2.0E-07 ! [m2 s-1] default = 2.0E-07 + ! The value of shear-driven diffusivity that is considered negligible and is + ! rounded down to 0. The default is 1% of KD_KAPPA_SHEAR_0. +FRI_CURVATURE = -0.97 ! [nondim] default = -0.97 + ! The nondimensional curvature of the function of the Richardson number in the + ! kappa source term in the Jackson et al. scheme. +TKE_N_DECAY_CONST = 0.24 ! [nondim] default = 0.24 + ! The coefficient for the decay of TKE due to stratification (i.e. proportional + ! to N*tke). The values found by Jackson et al. are 0.24-0.28. +TKE_SHEAR_DECAY_CONST = 0.14 ! [nondim] default = 0.14 + ! The coefficient for the decay of TKE due to shear (i.e. proportional to + ! |S|*tke). The values found by Jackson et al. are 0.14-0.12. +KAPPA_BUOY_SCALE_COEF = 0.82 ! [nondim] default = 0.82 + ! The coefficient for the buoyancy length scale in the kappa equation. The + ! values found by Jackson et al. are in the range of 0.81-0.86. +KAPPA_N_OVER_S_SCALE_COEF2 = 0.0 ! [nondim] default = 0.0 + ! The square of the ratio of the coefficients of the buoyancy and shear scales + ! in the diffusivity equation, Set this to 0 (the default) to eliminate the + ! shear scale. This is only used if USE_JACKSON_PARAM is true. +LZ_RESCALE = 1.0 ! [nondim] default = 1.0 + ! A coefficient to rescale the distance to the nearest solid boundary. This + ! adjustment is to account for regions where 3 dimensional turbulence prevents + ! the growth of shear instabilies [nondim]. +KAPPA_SHEAR_TOL_ERR = 0.1 ! [nondim] default = 0.1 + ! The fractional error in kappa that is tolerated. Iteration stops when changes + ! between subsequent iterations are smaller than this everywhere in a column. + ! The peak diffusivities usually converge most rapidly, and have much smaller + ! errors than this. +TKE_BACKGROUND = 0.0 ! [m2 s-2] default = 0.0 + ! A background level of TKE used in the first iteration of the kappa equation. + ! TKE_BACKGROUND could be 0. +KAPPA_SHEAR_ELIM_MASSLESS = True ! [Boolean] default = True + ! If true, massless layers are merged with neighboring massive layers in this + ! calculation. The default is true and I can think of no good reason why it + ! should be false. This is only used if USE_JACKSON_PARAM is true. +MAX_KAPPA_SHEAR_IT = 13 ! default = 13 + ! The maximum number of iterations that may be used to estimate the + ! time-averaged diffusivity. +KAPPA_SHEAR_MAX_KAP_SRC_CHG = 10.0 ! [nondim] default = 10.0 + ! The maximum permitted increase in the kappa source within an iteration + ! relative to the local source; this must be greater than 1. The lower limit + ! for the permitted fractional decrease is (1 - 0.5/kappa_src_max_chg). These + ! limits could perhaps be made dynamic with an improved iterative solver. +KAPPA_SHEAR_ITER_BUG = False ! [Boolean] default = False + ! If true, use an older, dimensionally inconsistent estimate of the derivative + ! of diffusivity with energy in the Newton's method iteration. The bug causes + ! undercorrections when dz > 1 m. +KAPPA_SHEAR_ALL_LAYER_TKE_BUG = False ! [Boolean] default = False + ! If true, report back the latest estimate of TKE instead of the time average + ! TKE when there is mass in all layers. Otherwise always report the time + ! averaged TKE, as is currently done when there are some massless layers. +USE_RESTRICTIVE_TOLERANCE_CHECK = False ! [Boolean] default = False + ! If true, uses the more restrictive tolerance check to determine if a timestep + ! is acceptable for the KS_it outer iteration loop. False uses the original + ! less restrictive check. + +! === module MOM_CVMix_shear === +! Parameterization of shear-driven turbulence via CVMix (various options) +USE_LMD94 = False ! [Boolean] default = False + ! If true, use the Large-McWilliams-Doney (JGR 1994) shear mixing + ! parameterization. +USE_PP81 = False ! [Boolean] default = False + ! If true, use the Pacanowski and Philander (JPO 1981) shear mixing + ! parameterization. + +! === module MOM_CVMix_ddiff === +! Parameterization of mixing due to double diffusion processes via CVMix +USE_CVMIX_DDIFF = False ! [Boolean] default = False + ! If true, turns on double diffusive processes via CVMix. Note that double + ! diffusive processes on viscosity are ignored in CVMix, see + ! http://cvmix.github.io/ for justification. + +! === module MOM_diabatic_aux === +! The following parameters are used for auxiliary diabatic processes. +RECLAIM_FRAZIL = False ! [Boolean] default = True + ! If true, try to use any frazil heat deficit to cool any overlying layers down + ! to the freezing point, thereby avoiding the creation of thin ice when the SST + ! is above the freezing point. +SALT_EXTRACTION_LIMIT = 0.9999 ! [nondim] default = 0.9999 + ! An upper limit on the fraction of the salt in a layer that can be lost to the + ! net surface salt fluxes within a timestep. +PRESSURE_DEPENDENT_FRAZIL = False ! [Boolean] default = False + ! If true, use a pressure dependent freezing temperature when making frazil. The + ! default is false, which will be faster but is inappropriate with ice-shelf + ! cavities. +IGNORE_FLUXES_OVER_LAND = False ! [Boolean] default = False + ! If true, the model does not check if fluxes are being applied over land + ! points. This is needed when the ocean is coupled with ice shelves and sea ice, + ! since the sea ice mask needs to be different than the ocean mask to avoid sea + ! ice formation under ice shelves. This flag only works when use_ePBL = True. +DO_RIVERMIX = False ! [Boolean] default = False + ! If true, apply additional mixing wherever there is runoff, so that it is mixed + ! down to RIVERMIX_DEPTH if the ocean is that deep. +USE_RIVER_HEAT_CONTENT = False ! [Boolean] default = False + ! If true, use the fluxes%runoff_Hflx field to set the heat carried by runoff, + ! instead of using SST*CP*liq_runoff. +USE_CALVING_HEAT_CONTENT = False ! [Boolean] default = False + ! If true, use the fluxes%calving_Hflx field to set the heat carried by runoff, + ! instead of using SST*CP*froz_runoff. +DO_BRINE_PLUME = False ! [Boolean] default = False + ! If true, use a brine plume parameterization from Nguyen et al., 2009. +VAR_PEN_SW = True ! [Boolean] default = False + ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine + ! the e-folding depth of incoming short wave radiation. +CHL_FROM_FILE = True ! [Boolean] default = True + ! If true, chl_a is read from a file. +CHL_FILE = "forcing_monthly.nc" ! + ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It + ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. +CHL_VARNAME = "CHL_A" ! default = "CHL_A" + ! Name of CHL_A variable in CHL_FILE. + +! === module MOM_energetic_PBL === +EKMAN_SCALE_COEF = 1.0 ! [nondim] default = 1.0 + ! A nondimensional scaling factor controlling the inhibition of the diffusive + ! length scale by rotation. Making this larger decreases the PBL diffusivity. +EPBL_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the energetic PBL + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. + ! Values below 20240101 use A**(1./3.) to estimate the cube root of A in several + ! expressions, while higher values use the integer root function cuberoot(A) and + ! therefore can work with scaled variables. +EPBL_ORIGINAL_PE_CALC = True ! [Boolean] default = True + ! If true, the ePBL code uses the original form of the potential energy change + ! code. Otherwise, the newer version that can work with successive increments + ! to the diffusivity in upward or downward passes is used. +MKE_TO_TKE_EFFIC = 0.0 ! [nondim] default = 0.0 + ! The efficiency with which mean kinetic energy released by mechanically forced + ! entrainment of the mixed layer is converted to turbulent kinetic energy. +EPBL_MSTAR_SCHEME = "CONSTANT" ! default = "CONSTANT" + ! EPBL_MSTAR_SCHEME selects the method for setting mstar. Valid values are: + ! CONSTANT - Use a fixed mstar given by MSTAR + ! OM4 - Use L_Ekman/L_Obukhov in the stabilizing limit, as in OM4 + ! REICHL_H18 - Use the scheme documented in Reichl & Hallberg, 2018. +NSTAR = 0.2 ! [nondim] default = 0.2 + ! The portion of the buoyant potential energy imparted by surface fluxes that is + ! available to drive entrainment at the base of mixed layer when that energy is + ! positive. +MSTAR_CONV_ADJ = 0.0 ! [nondim] default = 0.0 + ! Coefficient used for reducing mstar during convection due to reduction of + ! stable density gradient. +USE_MLD_ITERATION = False ! [Boolean] default = True + ! A logical that specifies whether or not to use the distance to the bottom of + ! the actively turbulent boundary layer to help set the EPBL length scale. +EPBL_TRANSITION_SCALE = 0.1 ! [nondim] default = 0.1 + ! A scale for the mixing length in the transition layer at the edge of the + ! boundary layer as a fraction of the boundary layer thickness. +EPBL_MIN_MIX_LEN = 0.0 ! [meter] default = 0.0 + ! The minimum mixing length scale that will be used by ePBL. The default (0) + ! does not set a minimum. +MIX_LEN_EXPONENT = 2.0 ! [nondim] default = 2.0 + ! The exponent applied to the ratio of the distance to the MLD and the MLD depth + ! which determines the shape of the mixing length. This is only used if + ! USE_MLD_ITERATION is True. +EPBL_VEL_SCALE_SCHEME = "CUBE_ROOT_TKE" ! default = "CUBE_ROOT_TKE" + ! Selects the method for translating TKE into turbulent velocities. Valid values + ! are: + ! CUBE_ROOT_TKE - A constant times the cube root of remaining TKE. + ! REICHL_H18 - Use the scheme based on a combination of w* and v* as + ! documented in Reichl & Hallberg, 2018. +WSTAR_USTAR_COEF = 1.0 ! [nondim] default = 1.0 + ! A ratio relating the efficiency with which convectively released energy is + ! converted to a turbulent velocity, relative to mechanically forced TKE. Making + ! this larger increases the BL diffusivity +EPBL_VEL_SCALE_FACTOR = 1.0 ! [nondim] default = 1.0 + ! An overall nondimensional scaling factor for wT. Making this larger increases + ! the PBL diffusivity. +VSTAR_SURF_FAC = 1.2 ! [nondim] default = 1.2 + ! The proportionality times ustar to set vstar at the surface. +USE_LA_LI2016 = False ! [Boolean] default = False + ! A logical to use the Li et al. 2016 (submitted) formula to determine the + ! Langmuir number. +EPBL_LT = False ! [Boolean] default = False + ! A logical to use a LT parameterization. +!EPBL_USTAR_MIN = 1.45842E-18 ! [m s-1] + ! The (tiny) minimum friction velocity used within the ePBL code, derived from + ! OMEGA and ANGSTROM. + +! === module MOM_regularize_layers === +REGULARIZE_SURFACE_LAYERS = False ! [Boolean] default = False + ! If defined, vertically restructure the near-surface layers when they have too + ! much lateral variations to allow for sensible lateral barotropic transports. + +! === module MOM_opacity === +OPACITY_SCHEME = "MANIZZA_05" ! default = "MANIZZA_05" + ! This character string specifies how chlorophyll concentrations are translated + ! into opacities. Currently valid options include: + ! MANIZZA_05 - Use Manizza et al., GRL, 2005. + ! MOREL_88 - Use Morel, JGR, 1988. +BLUE_FRAC_SW = 0.5 ! [nondim] default = 0.5 + ! The fraction of the penetrating shortwave radiation that is in the blue band. +PEN_SW_NBANDS = 3 ! default = 1 + ! The number of bands of penetrating shortwave radiation. +OPTICS_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the optics + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. +PEN_SW_FLUX_ABSORB = 2.5E-11 ! [degC m s-1] default = 2.5E-11 + ! A minimum remaining shortwave heating rate that will be simply absorbed in the + ! next sufficiently thick layers for computational efficiency, instead of + ! continuing to penetrate. The default, 2.5e-11 degC m s-1, is about 1e-4 W m-2 + ! or 0.08 degC m century-1, but 0 is also a valid value. +PEN_SW_ABSORB_MINTHICK = 1.0 ! [m] default = 1.0 + ! A thickness that is used to absorb the remaining penetrating shortwave heat + ! flux when it drops below PEN_SW_FLUX_ABSORB. +OPACITY_LAND_VALUE = 10.0 ! [m-1] default = 10.0 + ! The value to use for opacity over land. The default is 10 m-1 - a value for + ! muddy water. + +! === module MOM_tracer_advect === +TRACER_ADVECTION_SCHEME = "PLM" ! default = "PLM" + ! The horizontal transport scheme for tracers: + ! PLM - Piecewise Linear Method + ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) + ! PPM - Piecewise Parabolic Method (Colella-Woodward) + +! === module MOM_tracer_hor_diff === +KHTR = 600.0 ! [m2 s-1] default = 0.0 + ! The background along-isopycnal tracer diffusivity. +KHTR_USE_EBT_STRUCT = False ! [Boolean] default = False + ! If true, uses the equivalent barotropic structure as the vertical structure of + ! the tracer diffusivity. +KHTR_MIN = 0.0 ! [m2 s-1] default = 0.0 + ! The minimum along-isopycnal tracer diffusivity. +KHTR_MAX = 0.0 ! [m2 s-1] default = 0.0 + ! The maximum along-isopycnal tracer diffusivity. +KHTR_PASSIVITY_COEFF = 0.0 ! [nondim] default = 0.0 + ! The coefficient that scales deformation radius over grid-spacing in passivity, + ! where passivity is the ratio between along isopycnal mixing of tracers to + ! thickness mixing. A non-zero value enables this parameterization. +KHTR_PASSIVITY_MIN = 0.5 ! [nondim] default = 0.5 + ! The minimum passivity which is the ratio between along isopycnal mixing of + ! tracers to thickness mixing. +DIFFUSE_ML_TO_INTERIOR = False ! [Boolean] default = False + ! If true, enable epipycnal mixing between the surface boundary layer and the + ! interior. +CHECK_DIFFUSIVE_CFL = False ! [Boolean] default = False + ! If true, use enough iterations the diffusion to ensure that the diffusive + ! equivalent of the CFL limit is not violated. If false, always use the greater + ! of 1 or MAX_TR_DIFFUSION_CFL iteration. +MAX_TR_DIFFUSION_CFL = -1.0 ! [nondim] default = -1.0 + ! If positive, locally limit the along-isopycnal tracer diffusivity to keep the + ! diffusive CFL locally at or below this value. The number of diffusive + ! iterations is often this value or the next greater integer. +RECALC_NEUTRAL_SURF = False ! [Boolean] default = False + ! If true, then recalculate the neutral surfaces if the + ! diffusive CFL is exceeded. If false, assume that the + ! positions of the surfaces do not change + +! === module MOM_neutral_diffusion === +! This module implements neutral diffusion of tracers +USE_NEUTRAL_DIFFUSION = False ! [Boolean] default = False + ! If true, enables the neutral diffusion module. + +! === module MOM_hor_bnd_diffusion === +! This module implements horizontal diffusion of tracers near boundaries +USE_HORIZONTAL_BOUNDARY_DIFFUSION = False ! [Boolean] default = False + ! If true, enables the horizonal boundary tracer's diffusion module. +OBSOLETE_DIAGNOSTIC_IS_FATAL = True ! [Boolean] default = True + ! If an obsolete diagnostic variable appears in the diag_table, cause a FATAL + ! error rather than issue a WARNING. + +! === module MOM_sum_output === +CALCULATE_APE = True ! [Boolean] default = True + ! If true, calculate the available potential energy of the interfaces. Setting + ! this to false reduces the memory footprint of high-PE-count models + ! dramatically. +WRITE_STOCKS = True ! [Boolean] default = True + ! If true, write the integrated tracer amounts to stdout when the energy files + ! are written. +MAXTRUNC = 5000 ! [truncations save_interval-1] default = 0 + ! The run will be stopped, and the day set to a very large value if the velocity + ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 + ! to stop if there is any truncation of velocities. +MAX_ENERGY = 0.0 ! [m2 s-2] default = 0.0 + ! The maximum permitted average energy per unit mass; the model will be stopped + ! if there is more energy than this. If zero or negative, this is set to + ! 10*MAXVEL^2. +ENERGYFILE = "ocean.stats" ! default = "ocean.stats" + ! The file to use to write the energies and globally summed diagnostics. +DATE_STAMPED_STDOUT = True ! [Boolean] default = True + ! If true, use dates (not times) in messages to stdout +TIMEUNIT = 8.64E+04 ! [s] default = 8.64E+04 + ! The time unit in seconds a number of input fields +READ_DEPTH_LIST = False ! [Boolean] default = False + ! Read the depth list from a file if it exists or create that file otherwise. +DEPTH_LIST_MIN_INC = 1.0E-10 ! [m] default = 1.0E-10 + ! The minimum increment between the depths of the entries in the depth-list + ! file. +ENERGYSAVEDAYS = 10.0 ! [days] default = 1.0 + ! The interval in units of TIMEUNIT between saves of the energies of the run and + ! other globally summed diagnostics. +ENERGYSAVEDAYS_GEOMETRIC = 0.0 ! [days] default = 0.0 + ! The starting interval in units of TIMEUNIT for the first call to save the + ! energies of the run and other globally summed diagnostics. The interval + ! increases by a factor of 2. after each call to write_energy. + +! === module ocean_stochastics_init === +DO_SPPT = False ! [Boolean] default = False + ! If true, then stochastically perturb the thermodynamic tendemcies of T,S, amd + ! h. Amplitude and correlations are controlled by the nam_stoch namelist in the + ! UFS model only. +PERT_EPBL = False ! [Boolean] default = False + ! If true, then stochastically perturb the kinetic energy production and + ! dissipation terms. Amplitude and correlations are controlled by the nam_stoch + ! namelist in the UFS model only. + +! === module MOM_surface_forcing === +VARIABLE_WINDS = True ! [Boolean] default = True + ! If true, the winds vary in time after the initialization. +VARIABLE_BUOYFORCE = True ! [Boolean] default = True + ! If true, the buoyancy forcing varies in time after the initialization of the + ! model. +BUOY_CONFIG = "data_override" ! default = "zero" + ! The character string that indicates how buoyancy forcing is specified. Valid + ! options include (file), (data_override), (zero), (const), (linear), (MESO), + ! (SCM_CVmix_tests), (BFB), (dumbbell), (USER) and (NONE). +WIND_CONFIG = "data_override" ! default = "zero" + ! The character string that indicates how wind forcing is specified. Valid + ! options include (file), (data_override), (2gyre), (1gyre), (gyres), (zero), + ! (const), (Neverworld), (scurves), (ideal_hurr), (SCM_ideal_hurr), + ! (SCM_CVmix_tests) and (USER). +RESTOREBUOY = False ! [Boolean] default = False + ! If true, the buoyancy fluxes drive the model back toward some specified + ! surface state with a rate given by FLUXCONST. +LATENT_HEAT_FUSION = 3.34E+05 ! [J/kg] default = 3.34E+05 + ! The latent heat of fusion. +LATENT_HEAT_VAPORIZATION = 2.5E+06 ! [J/kg] default = 2.5E+06 + ! The latent heat of fusion. +GUST_CONST = 0.0 ! [Pa] default = 0.0 + ! The background gustiness in the winds. +USTAR_GUSTLESS_BUG = False ! [Boolean] default = False + ! If true include a bug in the time-averaging of the gustless wind friction + ! velocity +READ_GUST_2D = True ! [Boolean] default = False + ! If true, use a 2-dimensional gustiness supplied from an input file +GUST_2D_FILE = "forcing_monthly.nc" ! + ! The file in which the wind gustiness is found in variable gustiness. + +! === module MOM_restart === +USE_WAVES = False ! [Boolean] default = False + ! If true, enables surface wave modules. + +! === module MOM_main (MOM_driver) === +DT_FORCING = 3600.0 ! [s] default = 3600.0 + ! The time step for changing forcing, coupling with other components, or + ! potentially writing certain diagnostics. The default value is given by DT. +DAYMAX = 365.0 ! [days] + ! The final time of the whole simulation, in units of TIMEUNIT seconds. This + ! also sets the potential end time of the present run segment if the end time is + ! not set via ocean_solo_nml in input.nml. +SINGLE_STEPPING_CALL = True ! [Boolean] default = True + ! If true, advance the state of MOM with a single step including both dynamics + ! and thermodynamics. If false the two phases are advanced with separate calls. +RESTART_CONTROL = 0 ! default = 1 + ! An integer whose bits encode which restart files are written. Add 2 (bit 1) + ! for a time-stamped file, and odd (bit 0) for a non-time-stamped file. A + ! non-time-stamped restart file is saved at the end of the run segment for any + ! non-negative value. +RESTINT = 3650.0 ! [days] default = 0.0 + ! The interval between saves of the restart file in units of TIMEUNIT. Use 0 + ! (the default) to not save incremental restart files at all. +WRITE_CPU_STEPS = 1000 ! default = 1000 + ! The number of coupled timesteps between writing the cpu time. If this is not + ! positive, do not check cpu time, and the segment run-length can not be set via + ! an elapsed CPU time. + +! === module MOM_write_cputime === +MAXCPU = 2.88E+04 ! [wall-clock seconds] default = -1.0 + ! The maximum amount of cpu time per processor for which MOM should run before + ! saving a restart file and quitting with a return value that indicates that a + ! further run is required to complete the simulation. If automatic restarts are + ! not desired, use a negative value for MAXCPU. MAXCPU has units of wall-clock + ! seconds, so the actual CPU time used is larger by a factor of the number of + ! processors used. +CPU_TIME_FILE = "CPU_stats" ! default = "CPU_stats" + ! The file into which CPU time is written. + +! === module MOM_file_parser === +SEND_LOG_TO_STDOUT = False ! [Boolean] default = False + ! If true, all log messages are also sent to stdout. +DOCUMENT_FILE = "MOM_parameter_doc" ! default = "MOM_parameter_doc" + ! The basename for files where run-time parameters, their settings, units and + ! defaults are documented. Blank will disable all parameter documentation. +COMPLETE_DOCUMENTATION = True ! [Boolean] default = True + ! If true, all run-time parameters are documented in MOM_parameter_doc.all . +MINIMAL_DOCUMENTATION = True ! [Boolean] default = True + ! If true, non-default run-time parameters are documented in + ! MOM_parameter_doc.short . diff --git a/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_parameter_doc.debugging b/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_parameter_doc.debugging new file mode 100644 index 0000000000..9c06fa662f --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_parameter_doc.debugging @@ -0,0 +1,86 @@ +! This file was written by the model and records the debugging parameters used at run-time. + +! === module MOM_unit_scaling === +! Parameters for doing unit scaling of variables. +Z_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! depths and heights. Valid values range from -300 to 300. +L_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! lateral distances. Valid values range from -300 to 300. +T_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! time. Valid values range from -300 to 300. +R_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! density. Valid values range from -300 to 300. +Q_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! heat content. Valid values range from -300 to 300. +C_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! temperature. Valid values range from -300 to 300. +S_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! salinity. Valid values range from -300 to 300. + +! === module MOM === +VERBOSITY = 2 ! default = 2 + ! Integer controlling level of messaging + ! 0 = Only FATAL messages + ! 2 = Only FATAL, WARNING, NOTE [default] + ! 9 = All) +DO_UNIT_TESTS = False ! [Boolean] default = False + ! If True, exercises unit tests at model start up. +DEBUG = False ! [Boolean] default = False + ! If true, write out verbose debugging data. +DEBUG_TRUNCATIONS = False ! [Boolean] default = False + ! If true, calculate all diagnostics that are useful for debugging truncations. +ROTATE_INDEX = False ! [Boolean] default = False + ! Enable rotation of the horizontal indices. +DEBUG_CHKSUMS = False ! [Boolean] default = False + ! If true, checksums are performed on arrays in the various vec_chksum routines. +DEBUG_REDUNDANT = False ! [Boolean] default = False + ! If true, debug redundant data points during calls to the various vec_chksum + ! routines. + +! === module MOM_verticalGrid === +! Parameters providing information about the vertical grid. +H_RESCALE_POWER = 0 ! [nondim] default = 0 + ! An integer power of 2 that is used to rescale the model's intenal units of + ! thickness. Valid values range from -300 to 300. + +! === module MOM_vert_friction === +U_TRUNC_FILE = "U_velocity_truncations" ! default = "" + ! The absolute path to a file into which the accelerations leading to zonal + ! velocity truncations are written. Undefine this for efficiency if this + ! diagnostic is not needed. +V_TRUNC_FILE = "V_velocity_truncations" ! default = "" + ! The absolute path to a file into which the accelerations leading to meridional + ! velocity truncations are written. Undefine this for efficiency if this + ! diagnostic is not needed. + +! === module MOM_PointAccel === +MAX_TRUNC_FILE_SIZE_PER_PE = 50 ! default = 50 + ! The maximum number of columns of truncations that any PE will write out during + ! a run. +DEBUG_FULL_COLUMN = False ! [Boolean] default = False + ! If true, write out the accelerations in all massive layers; otherwise just + ! document the ones with large velocities. + +! === module MOM_diabatic_driver === +! The following parameters are used for diabatic processes. +DEBUG_CONSERVATION = False ! [Boolean] default = False + ! If true, monitor conservation and extrema. + +! === module MOM_kappa_shear === +! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 +WRITE_TRACER_MIN_MAX = False ! [Boolean] default = False + ! If true, write the maximum and minimum values of temperature, salinity and + ! some tracer concentrations to stdout when the energy files are written. + +! === module MOM_file_parser === +REPORT_UNUSED_PARAMS = True ! [Boolean] default = True + ! If true, report any parameter lines that are not used in the run. +FATAL_UNUSED_PARAMS = False ! [Boolean] default = False + ! If true, kill the run if there are any unused parameters. diff --git a/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_parameter_doc.layout b/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_parameter_doc.layout new file mode 100644 index 0000000000..d0bf972496 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_parameter_doc.layout @@ -0,0 +1,56 @@ +! This file was written by the model and records the layout parameters used at run-time. + +! === module MOM === +GLOBAL_INDEXING = False ! [Boolean] default = False + ! If true, use a global lateral indexing convention, so that corresponding + ! points on different processors have the same index. This does not work with + ! static memory. + +! === module MOM_domains === +!SYMMETRIC_MEMORY_ = True ! [Boolean] + ! If defined, the velocity point data domain includes every face of the + ! thickness points. In other words, some arrays are larger than others, + ! depending on where they are on the staggered grid. Also, the starting index + ! of the velocity-point arrays is usually 0, not 1. This can only be set at + ! compile time. +NONBLOCKING_UPDATES = False ! [Boolean] default = False + ! If true, non-blocking halo updates may be used. +THIN_HALO_UPDATES = True ! [Boolean] default = True + ! If true, optional arguments may be used to specify the width of the halos that + ! are updated with each call. +!STATIC_MEMORY_ = False ! [Boolean] + ! If STATIC_MEMORY_ is defined, the principle variables will have sizes that are + ! statically determined at compile time. Otherwise the sizes are not determined + ! until run time. The STATIC option is substantially faster, but does not allow + ! the PE count to be changed at run time. This can only be set at compile time. +MASKTABLE = "MOM_mask_table" ! default = "MOM_mask_table" + ! A text file to specify n_mask, layout and mask_list. This feature masks out + ! processors that contain only land points. The first line of mask_table is the + ! number of regions to be masked out. The second line is the layout of the model + ! and must be consistent with the actual model layout. The following (n_mask) + ! lines give the logical positions of the processors that are masked out. The + ! mask_table can be created by tools like check_mask. The following example of + ! mask_table masks out 2 processors, (1,2) and (3,6), out of the 24 in a 4x6 + ! layout: + ! 2 + ! 4,6 + ! 1,2 + ! 3,6 +NIPROC = 1 ! + ! The number of processors in the x-direction. With STATIC_MEMORY_ this is set + ! in MOM_memory.h at compile time. +NJPROC = 1 ! + ! The number of processors in the y-direction. With STATIC_MEMORY_ this is set + ! in MOM_memory.h at compile time. +LAYOUT = 1, 1 ! + ! The processor layout that was actually used. +IO_LAYOUT = 1, 1 ! default = 1 + ! The processor layout to be used, or 0,0 to automatically set the io_layout to + ! be the same as the layout. + +! === module MOM_grid === +! Parameters providing information about the lateral grid. +NIBLOCK = 1 ! default = 1 + ! The number of blocks in the x-direction on each processor (for openmp). +NJBLOCK = 1 ! default = 1 + ! The number of blocks in the y-direction on each processor (for openmp). diff --git a/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_parameter_doc.short b/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_parameter_doc.short new file mode 100644 index 0000000000..8a1d5126ba --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar-histogram/MOM_parameter_doc.short @@ -0,0 +1,410 @@ +! This file was written by the model and records the non-default parameters used at run-time. + +! === module MOM === +SPLIT = False ! [Boolean] default = True + ! Use the split time stepping if true. +USE_REGRIDDING = True ! [Boolean] default = False + ! If True, use the ALE algorithm (regridding/remapping). If False, use the + ! layered isopycnal algorithm. +DT = 3600.0 ! [s] + ! The (baroclinic) dynamics time step. The time-step that is actually used will + ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode + ! or the coupling timestep in coupled mode.) +FRAZIL = True ! [Boolean] default = False + ! If true, water freezes if it gets too cold, and the accumulated heat deficit + ! is returned in the surface state. FRAZIL is only used if + ! ENABLE_THERMODYNAMICS is true. +C_P = 3925.0 ! [J kg-1 K-1] default = 3991.86795711963 + ! The heat capacity of sea water, approximated as a constant. This is only used + ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 + ! definition of conservative temperature. +SAVE_INITIAL_CONDS = True ! [Boolean] default = False + ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. + +! === module MOM_domains === +REENTRANT_Y = True ! [Boolean] default = False + ! If true, the domain is meridionally reentrant. +NIGLOBAL = 2 ! + ! The total number of thickness grid points in the x-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +NJGLOBAL = 2 ! + ! The total number of thickness grid points in the y-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +NIHALO = 2 ! default = 4 + ! The number of halo points on each side in the x-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. +NJHALO = 2 ! default = 4 + ! The number of halo points on each side in the y-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. + +! === module MOM_fixed_initialization === +INPUTDIR = "INPUT/Labrador" ! default = "." + ! The directory in which input files are found. + +! === module MOM_grid_init === +GRID_CONFIG = "cartesian" ! + ! A character string that determines the method for defining the horizontal + ! grid. Current options are: + ! mosaic - read the grid from a mosaic (supergrid) + ! file set by GRID_FILE. + ! cartesian - use a (flat) Cartesian grid. + ! spherical - use a simple spherical grid. + ! mercator - use a Mercator spherical grid. +SOUTHLAT = 30.0 ! [degrees] + ! The southern latitude of the domain or the equivalent starting value for the + ! y-axis. +LENLAT = 1.0 ! [degrees] + ! The latitudinal or y-direction length of the domain. +LENLON = 1.0 ! [degrees] + ! The longitudinal or x-direction length of the domain. +TOPO_CONFIG = "flat" ! + ! This specifies how bathymetry is specified: + ! file - read bathymetric information from the file + ! specified by (TOPO_FILE). + ! flat - flat bottom set to MAXIMUM_DEPTH. + ! bowl - an analytically specified bowl-shaped basin + ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. + ! spoon - a similar shape to 'bowl', but with an vertical + ! wall at the southern face. + ! halfpipe - a zonally uniform channel with a half-sine + ! profile in the meridional direction. + ! bbuilder - build topography from list of functions. + ! benchmark - use the benchmark test case topography. + ! Neverworld - use the Neverworld test case topography. + ! DOME - use a slope and channel configuration for the + ! DOME sill-overflow test case. + ! ISOMIP - use a slope and channel configuration for the + ! ISOMIP test case. + ! DOME2D - use a shelf and slope configuration for the + ! DOME2D gravity current/overflow test case. + ! Kelvin - flat but with rotated land mask. + ! seamount - Gaussian bump for spontaneous motion test case. + ! dumbbell - Sloshing channel with reservoirs on both ends. + ! shelfwave - exponential slope for shelfwave test case. + ! Phillips - ACC-like idealized topography used in the Phillips config. + ! dense - Denmark Strait-like dense water formation and overflow. + ! USER - call a user modified routine. +MINIMUM_DEPTH = 0.5 ! [m] default = 0.0 + ! The minimum depth of the ocean. +MAXIMUM_DEPTH = 6000.0 ! [m] + ! The maximum depth of the ocean. +ROTATION = "betaplane" ! default = "2omegasinlat" + ! This specifies how the Coriolis parameter is specified: + ! 2omegasinlat - Use twice the planetary rotation rate + ! times the sine of latitude. + ! betaplane - Use a beta-plane or f-plane. + ! USER - call a user modified routine. +F_0 = 7.59943E-05 ! [s-1] default = 0.0 + ! The reference value of the Coriolis parameter with the betaplane option. + +! === module MOM_verticalGrid === +! Parameters providing information about the vertical grid. +NK = 75 ! [nondim] + ! The number of model layers. + +! === module MOM_EOS === + +! === module MOM_tracer_flow_control === + +! === module MOM_coord_initialization === +REGRIDDING_COORDINATE_MODE = "Z*" ! default = "LAYER" + ! Coordinate mode for vertical regridding. Choose among the following + ! possibilities: LAYER - Isopycnal or stacked shallow water layers + ! ZSTAR, Z* - stretched geopotential z* + ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf + ! SIGMA - terrain following coordinates + ! RHO - continuous isopycnal + ! SCALAR - any scalar variable ** for diagnostic grids only ** + ! HYCOM1 - HyCOM-like hybrid coordinate + ! HYBGEN - Hybrid coordinate from the Hycom hybgen code + ! ADAPTIVE - optimize for smooth neutral density surfaces +ALE_COORDINATE_CONFIG = "FILE:./INPUT/vgrid_cm4.nc,dz" ! default = "UNIFORM" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter ALE_RESOLUTION + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! WOA09INT[:N] - layers spanned by the WOA09 depths + ! WOA23INT[:N] - layers spanned by the WOA23 depths + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +!ALE_RESOLUTION = 4*2.0, 2*2.01, 2*2.02, 2.05, 2.07, 2.09, 2.13, 2.18, 2.24, 2.3, 2.4, 2.5, 2.62, 2.78, 2.95, 3.17, 3.42, 3.71, 4.07, 4.48, 4.97, 5.55, 6.23, 7.04, 7.99, 9.11, 10.43, 11.98, 13.8, 15.94, 18.42, 21.32, 24.66, 28.51, 32.91, 37.92, 43.56, 49.87, 56.88, 64.55, 72.91, 81.87, 91.4, 101.39, 111.73, 122.29, 132.93, 143.47, 153.78, 163.7, 173.07, 181.78, 189.76, 196.89, 203.17, 208.58, 213.14, 216.87, 219.87, 222.19, 223.94, 225.18, 226.04, 226.59, 226.9, 227.07, 227.14, 2*227.16, 227.17 ! [m] + ! The distribution of vertical resolution for the target + ! grid used for Eulerian-like coordinates. For example, + ! in z-coordinate mode, the parameter is a list of level + ! thicknesses (in m). In sigma-coordinate mode, the list + ! is of non-dimensional fractions of the water column. + +! === module MOM_state_initialization === +INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False + ! If true, initialize the layer thicknesses, temperatures, and salinities from a + ! Z-space file on a latitude-longitude grid. + +! === module MOM_initialize_layers_from_Z === +TEMP_SALT_Z_INIT_FILE = "WOA_column.nc" ! default = "temp_salt_z.nc" + ! The name of the z-space input file used to initialize temperatures (T) and + ! salinities (S). If T and S are not in the same file, TEMP_Z_INIT_FILE and + ! SALT_Z_INIT_FILE must be set. +Z_INIT_FILE_PTEMP_VAR = "PTEMP" ! default = "ptemp" + ! The name of the potential temperature variable in TEMP_Z_INIT_FILE. +Z_INIT_FILE_SALT_VAR = "SALT" ! default = "salt" + ! The name of the salinity variable in SALT_Z_INIT_FILE. +Z_INIT_HOMOGENIZE = True ! [Boolean] default = False + ! If True, then horizontally homogenize the interpolated initial conditions. +Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False + ! If True, then remap straight to model coordinate from file. + +! === module MOM_diag_mediator === +DIAG_COORDS = "scalar SCALAR SCALAR" ! default = "z Z ZSTAR" + ! A list of string tuples associating diag_table modules to a coordinate + ! definition used for diagnostics. Each string is of the form "MODULE_SUFFIX + ! PARAMETER_SUFFIX COORDINATE_NAME". +DIAG_COORD_INTERP_SCHEME_SCALAR = "P1M_H2" ! default = "PPM_H4" + ! This sets the interpolation scheme to use to determine the new grid. These + ! parameters are only relevant when REGRIDDING_COORDINATE_MODE is set to a + ! function of state. Otherwise, it is not used. It can be one of the following + ! schemes: + ! P1M_H2 (2nd-order accurate) + ! P1M_H4 (2nd-order accurate) + ! P1M_IH4 (2nd-order accurate) + ! PLM (2nd-order accurate) + ! PPM_CW (3rd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! P3M_IH4IH3 (4th-order accurate) + ! P3M_IH6IH5 (4th-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) +DIAG_COORD_DEF_SCALAR = "FILE:targetlayers_scalar.nc,interfaces=interfaces" ! default = "WOA09" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter DIAG_COORD_RES_SCALAR + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! WOA09INT[:N] - layers spanned by the WOA09 depths + ! WOA23INT[:N] - layers spanned by the WOA23 depths + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +DIAG_COORD_P_REF_SCALAR = 0.0 ! [Pa] default = 2.0E+07 + ! The pressure that is used for calculating the diagnostic coordinate density. + ! (1 Pa = 1e4 dbar, so 2e7 is commonly used.) This is only used for the RHO + ! coordinate. +DIAG_COORD_HISTOGRAM_EXTENSIVE_DIAGS_SCALAR = True ! [nondim] default = False + ! If true, extensive diagnostics are remapped using a histogram procedureThis is + ! therefore suitable for coordinates that are non-monotonic in the vertical + ! dimension. This should only be set True for **diagnostic**coordinates. + +! === module MOM_lateral_mixing_coeffs === + +! === module MOM_set_visc === +HBBL = 10.0 ! [m] + ! The thickness of a bottom boundary layer with a viscosity increased by + ! KV_EXTRA_BBL if BOTTOMDRAGLAW is not defined, or the thickness over which + ! near-bottom velocities are averaged for the drag law if BOTTOMDRAGLAW is + ! defined but LINEAR_DRAG is not. +CDRAG = 0.0 ! [nondim] default = 0.003 + ! CDRAG is the drag coefficient relating the magnitude of the velocity field to + ! the bottom stress. CDRAG is only used if BOTTOMDRAGLAW is defined. +DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 + ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an + ! unresolved velocity that is combined with the resolved velocity to estimate + ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is + ! defined. +BBL_THICK_MIN = 0.1 ! [m] default = 0.0 + ! The minimum bottom boundary layer thickness that can be used with + ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum + ! near-bottom viscosity. +KV = 1.0E-04 ! [m2 s-1] + ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 + ! m2 s-1, may be used. + +! === module MOM_thickness_diffuse === + +! === module MOM_porous_barriers === + +! === module MOM_dynamics_unsplit === + +! === module MOM_continuity_PPM === +UPWIND_1ST_CONTINUITY = True ! [Boolean] default = False + ! If true, CONTINUITY_PPM becomes a 1st-order upwind continuity solver. This + ! scheme is highly diffusive but may be useful for debugging or in single-column + ! mode where its minimal stencil is useful. +ETA_TOLERANCE = 1.0E-06 ! [m] default = 3.75E-09 + ! The tolerance for the differences between the barotropic and baroclinic + ! estimates of the sea surface height due to the fluxes through each face. The + ! total tolerance for SSH is 4 times this value. The default is + ! 0.5*NK*ANGSTROM, and this should not be set less than about + ! 10^-15*MAXIMUM_DEPTH. + +! === module MOM_CoriolisAdv === +CORIOLIS_EN_DIS = True ! [Boolean] default = False + ! If true, two estimates of the thickness fluxes are used to estimate the + ! Coriolis term, and the one that dissipates energy relative to the other one is + ! used. +BOUND_CORIOLIS = True ! [Boolean] default = False + ! If true, the Coriolis terms at u-points are bounded by the four estimates of + ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This + ! option is always effectively false with CORIOLIS_EN_DIS defined and + ! CORIOLIS_SCHEME set to SADOURNY75_ENERGY. + +! === module MOM_PressureForce === + +! === module MOM_PressureForce_FV === + +! === module MOM_Zanna_Bolton === + +! === module MOM_hor_visc === +BIHARMONIC = False ! [Boolean] default = True + ! If true, use a biharmonic horizontal viscosity. BIHARMONIC may be used with + ! LAPLACIAN. + +! === module MOM_vert_friction === +HARMONIC_VISC = True ! [Boolean] default = False + ! If true, use the harmonic mean thicknesses for calculating the vertical + ! viscosity. +HMIX_FIXED = 0.01 ! [m] + ! The prescribed depth over which the near-surface viscosity and diffusivity are + ! elevated when the bulk mixed layer is not used. +MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 + ! The maximum velocity allowed before the velocity components are truncated. +VEL_UNDERFLOW = 1.0E-30 ! [m s-1] default = 0.0 + ! A negligibly small velocity magnitude below which velocity components are set + ! to 0. A reasonable value might be 1e-30 m/s, which is less than an Angstrom + ! divided by the age of the universe. + +! === module MOM_diagnostics === + +! === module MOM_diabatic_driver === +! The following parameters are used for diabatic processes. +ENERGETICS_SFC_PBL = True ! [Boolean] default = False + ! If true, use an implied energetics planetary boundary layer scheme to + ! determine the diffusivity and viscosity in the surface boundary layer. + +! === module MOM_CVMix_KPP === +! This is the MOM wrapper to CVMix:KPP +! See http://cvmix.github.io/ +USE_KPP = True ! [Boolean] default = False + ! If true, turns on the [CVMix] KPP scheme of Large et al., 1994, to calculate + ! diffusivities and non-local transport in the OBL. +KPP% +PASSIVE = True ! [Boolean] default = False + ! If True, puts KPP into a passive-diagnostic mode. +%KPP + +! === module MOM_set_diffusivity === +ML_RADIATION = True ! [Boolean] default = False + ! If true, allow a fraction of TKE available from wind work to penetrate below + ! the base of the mixed layer with a vertical decay scale determined by the + ! minimum of: (1) The depth of the mixed layer, (2) an Ekman length scale. +TKE_DECAY = 10.0 ! [nondim] default = 2.5 + ! The ratio of the natural Ekman depth to the TKE decay scale. +ML_OMEGA_FRAC = 1.0 ! [nondim] default = 0.0 + ! When setting the decay scale for turbulence, use this fraction of the absolute + ! rotation rate blended with the local value of f, as sqrt((1-of)*f^2 + + ! of*4*omega^2). + +! === module MOM_bkgnd_mixing === +! Adding static vertical background mixing coefficients +KD = 2.0E-05 ! [m2 s-1] default = 0.0 + ! The background diapycnal diffusivity of density in the interior. Zero or the + ! molecular value, ~1e-7 m2 s-1, may be used. +KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 + ! The minimum diapycnal diffusivity. + +! === module MOM_kappa_shear === +! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 +USE_JACKSON_PARAM = True ! [Boolean] default = False + ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing + ! parameterization. +MAX_RINO_IT = 25 ! [nondim] default = 50 + ! The maximum number of iterations that may be used to estimate the Richardson + ! number driven mixing. + +! === module MOM_diabatic_aux === +! The following parameters are used for auxiliary diabatic processes. +RECLAIM_FRAZIL = False ! [Boolean] default = True + ! If true, try to use any frazil heat deficit to cool any overlying layers down + ! to the freezing point, thereby avoiding the creation of thin ice when the SST + ! is above the freezing point. +VAR_PEN_SW = True ! [Boolean] default = False + ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine + ! the e-folding depth of incoming short wave radiation. +CHL_FILE = "forcing_monthly.nc" ! + ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It + ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. + +! === module MOM_energetic_PBL === +USE_MLD_ITERATION = False ! [Boolean] default = True + ! A logical that specifies whether or not to use the distance to the bottom of + ! the actively turbulent boundary layer to help set the EPBL length scale. + +! === module MOM_opacity === +PEN_SW_NBANDS = 3 ! default = 1 + ! The number of bands of penetrating shortwave radiation. + +! === module MOM_tracer_advect === + +! === module MOM_tracer_hor_diff === +KHTR = 600.0 ! [m2 s-1] default = 0.0 + ! The background along-isopycnal tracer diffusivity. + +! === module MOM_sum_output === +MAXTRUNC = 5000 ! [truncations save_interval-1] default = 0 + ! The run will be stopped, and the day set to a very large value if the velocity + ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 + ! to stop if there is any truncation of velocities. +ENERGYSAVEDAYS = 10.0 ! [days] default = 1.0 + ! The interval in units of TIMEUNIT between saves of the energies of the run and + ! other globally summed diagnostics. + +! === module ocean_stochastics_init === + +! === module MOM_surface_forcing === +BUOY_CONFIG = "data_override" ! default = "zero" + ! The character string that indicates how buoyancy forcing is specified. Valid + ! options include (file), (data_override), (zero), (const), (linear), (MESO), + ! (SCM_CVmix_tests), (BFB), (dumbbell), (USER) and (NONE). +WIND_CONFIG = "data_override" ! default = "zero" + ! The character string that indicates how wind forcing is specified. Valid + ! options include (file), (data_override), (2gyre), (1gyre), (gyres), (zero), + ! (const), (Neverworld), (scurves), (ideal_hurr), (SCM_ideal_hurr), + ! (SCM_CVmix_tests) and (USER). +READ_GUST_2D = True ! [Boolean] default = False + ! If true, use a 2-dimensional gustiness supplied from an input file +GUST_2D_FILE = "forcing_monthly.nc" ! + ! The file in which the wind gustiness is found in variable gustiness. + +! === module MOM_main (MOM_driver) === +DAYMAX = 365.0 ! [days] + ! The final time of the whole simulation, in units of TIMEUNIT seconds. This + ! also sets the potential end time of the present run segment if the end time is + ! not set via ocean_solo_nml in input.nml. +RESTART_CONTROL = 0 ! default = 1 + ! An integer whose bits encode which restart files are written. Add 2 (bit 1) + ! for a time-stamped file, and odd (bit 0) for a non-time-stamped file. A + ! non-time-stamped restart file is saved at the end of the run segment for any + ! non-negative value. +RESTINT = 3650.0 ! [days] default = 0.0 + ! The interval between saves of the restart file in units of TIMEUNIT. Use 0 + ! (the default) to not save incremental restart files at all. + +! === module MOM_write_cputime === +MAXCPU = 2.88E+04 ! [wall-clock seconds] default = -1.0 + ! The maximum amount of cpu time per processor for which MOM should run before + ! saving a restart file and quitting with a return value that indicates that a + ! further run is required to complete the simulation. If automatic restarts are + ! not desired, use a negative value for MAXCPU. MAXCPU has units of wall-clock + ! seconds, so the actual CPU time used is larger by a factor of the number of + ! processors used. diff --git a/ocean_only/single_column/EPBL_diagscalar-histogram/data_table b/ocean_only/single_column/EPBL_diagscalar-histogram/data_table new file mode 120000 index 0000000000..e0e40d76fc --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar-histogram/data_table @@ -0,0 +1 @@ +../EPBL_diagscalar/data_table \ No newline at end of file diff --git a/ocean_only/single_column/EPBL_diagscalar-histogram/diag_table b/ocean_only/single_column/EPBL_diagscalar-histogram/diag_table new file mode 120000 index 0000000000..d6a3946702 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar-histogram/diag_table @@ -0,0 +1 @@ +../EPBL_diagscalar/diag_table \ No newline at end of file diff --git a/ocean_only/single_column/EPBL_diagscalar-histogram/input.nml b/ocean_only/single_column/EPBL_diagscalar-histogram/input.nml new file mode 120000 index 0000000000..154340b5dd --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar-histogram/input.nml @@ -0,0 +1 @@ +../EPBL_diagscalar/input.nml \ No newline at end of file diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/.gitignore b/ocean_only/single_column/EPBL_diagscalar/INPUT/.gitignore new file mode 100644 index 0000000000..03865c2906 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/.gitignore @@ -0,0 +1,2 @@ +# Undo *.nc in top-level .gitignore +!*.nc diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/ICs.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/ICs.nc new file mode 100644 index 0000000000..ec68eb738f Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/ICs.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/MOM_override b/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/MOM_override new file mode 100644 index 0000000000..9a71089d17 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = 3.76437e-05 +INPUTDIR = "INPUT/Arabian" diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/WOA_column.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/WOA_column.nc new file mode 100644 index 0000000000..9b58389bb5 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/WOA_column.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/forcing.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/forcing.nc new file mode 100644 index 0000000000..960cdce34a Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/forcing.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/forcing_monthly.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/forcing_monthly.nc new file mode 100644 index 0000000000..76e61190b0 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/forcing_monthly.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/itides.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/itides.nc new file mode 100644 index 0000000000..2e49c4b147 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Arabian/itides.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/ICs.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/ICs.nc new file mode 100644 index 0000000000..d1b854c2c3 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/ICs.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/MOM_override b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/MOM_override new file mode 100644 index 0000000000..875579f76d --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = 7.59943e-05 +INPUTDIR = "INPUT/BATS" diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/WOA_column.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/WOA_column.nc new file mode 100644 index 0000000000..2ddf27d6e7 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/WOA_column.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/forcing.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/forcing.nc new file mode 100644 index 0000000000..2bd97d8d34 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/forcing.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/forcing_monthly.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/forcing_monthly.nc new file mode 100644 index 0000000000..8bc6f82f9d Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/forcing_monthly.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/itides.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/itides.nc new file mode 100644 index 0000000000..fba01f0968 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/itides.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/targetlayers_rho0.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/targetlayers_rho0.nc new file mode 100644 index 0000000000..5bdc2bde46 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/targetlayers_rho0.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/targetlayers_scalar.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/targetlayers_scalar.nc new file mode 100644 index 0000000000..cbe3461eea Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/BATS/targetlayers_scalar.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/ICs.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/ICs.nc new file mode 100644 index 0000000000..74323b3772 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/ICs.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/MOM_override b/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/MOM_override new file mode 100644 index 0000000000..e30fb54728 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = 0 +INPUTDIR = "INPUT/COARE" diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/WOA_column.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/WOA_column.nc new file mode 100644 index 0000000000..97e27a8900 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/WOA_column.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/forcing.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/forcing.nc new file mode 100644 index 0000000000..cbd28238a2 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/forcing.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/forcing_monthly.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/forcing_monthly.nc new file mode 100644 index 0000000000..2d46a063e7 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/forcing_monthly.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/itides.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/itides.nc new file mode 100644 index 0000000000..9690151724 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/COARE/itides.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/ICs.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/ICs.nc new file mode 100644 index 0000000000..37f9a96e1c Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/ICs.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/MOM_override b/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/MOM_override new file mode 100644 index 0000000000..618ad4e764 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = -1.5203e-05 +INPUTDIR = "INPUT/Chagos" diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/WOA_column.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/WOA_column.nc new file mode 100644 index 0000000000..a648211d05 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/WOA_column.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/forcing.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/forcing.nc new file mode 100644 index 0000000000..3ac59ecb58 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/forcing.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/forcing_monthly.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/forcing_monthly.nc new file mode 100644 index 0000000000..d74cdf1ff9 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/forcing_monthly.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/itides.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/itides.nc new file mode 100644 index 0000000000..c7de20af1f Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Chagos/itides.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/ICs.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/ICs.nc new file mode 100644 index 0000000000..02297cd5eb Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/ICs.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/MOM_override b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/MOM_override new file mode 100644 index 0000000000..5746e92a74 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = -0.000113031 +INPUTDIR = "INPUT/Kerguelen" diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/WOA_column.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/WOA_column.nc new file mode 100644 index 0000000000..bac68e71f3 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/WOA_column.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/forcing.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/forcing.nc new file mode 100644 index 0000000000..95af17cfcd Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/forcing.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/forcing_monthly.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/forcing_monthly.nc new file mode 100644 index 0000000000..7aef662ec7 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/forcing_monthly.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/itides.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/itides.nc new file mode 100644 index 0000000000..06b22eefbd Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kerguelen/itides.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/ICs.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/ICs.nc new file mode 100644 index 0000000000..c386eed9c6 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/ICs.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/MOM_override b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/MOM_override new file mode 100644 index 0000000000..cdfec862df --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = 7.27221e-05 +INPUTDIR = "INPUT/Kuroshio" diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/WOA_column.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/WOA_column.nc new file mode 100644 index 0000000000..18c7a3e8b9 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/WOA_column.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/forcing.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/forcing.nc new file mode 100644 index 0000000000..3ce2eff6a7 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/forcing.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/forcing_monthly.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/forcing_monthly.nc new file mode 100644 index 0000000000..72fcf46f6a Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/forcing_monthly.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/itides.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/itides.nc new file mode 100644 index 0000000000..fa34f4fd25 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Kuroshio/itides.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/ICs.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/ICs.nc new file mode 100644 index 0000000000..f5f5dcb249 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/ICs.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/MOM_override b/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/MOM_override new file mode 100644 index 0000000000..422f9e1c4a --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = 0.000127208 +INPUTDIR = "INPUT/Labrador" diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/WOA_column.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/WOA_column.nc new file mode 100644 index 0000000000..0d23b5aad9 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/WOA_column.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/forcing.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/forcing.nc new file mode 100644 index 0000000000..810a6c078e Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/forcing.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/forcing_monthly.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/forcing_monthly.nc new file mode 100644 index 0000000000..4739301c9d Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/forcing_monthly.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/itides.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/itides.nc new file mode 100644 index 0000000000..bed988763c Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/itides.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/targetlayers_scalar.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/targetlayers_scalar.nc new file mode 100644 index 0000000000..7d13682bee Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Labrador/targetlayers_scalar.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/ICs.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/ICs.nc new file mode 100644 index 0000000000..9c4daef2fb Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/ICs.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/MOM_override b/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/MOM_override new file mode 100644 index 0000000000..77e2386481 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = 3.27178e-05 +INPUTDIR = "INPUT/Mariana" diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/WOA_column.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/WOA_column.nc new file mode 100644 index 0000000000..5f94caede8 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/WOA_column.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/forcing.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/forcing.nc new file mode 100644 index 0000000000..58e5b5fd40 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/forcing.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/forcing_monthly.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/forcing_monthly.nc new file mode 100644 index 0000000000..0fe6574dcb Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/forcing_monthly.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/itides.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/itides.nc new file mode 100644 index 0000000000..516da337f0 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Mariana/itides.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/ICs.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/ICs.nc new file mode 100644 index 0000000000..69e3c103a6 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/ICs.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/MOM_override b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/MOM_override new file mode 100644 index 0000000000..22a8aa6483 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = 4.97448e-05 +INPUTDIR = "INPUT/Nazca" diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/WOA_column.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/WOA_column.nc new file mode 100644 index 0000000000..6a76ef0a2d Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/WOA_column.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/forcing.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/forcing.nc new file mode 100644 index 0000000000..0eb2570fce Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/forcing.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/forcing_monthly.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/forcing_monthly.nc new file mode 100644 index 0000000000..961b873199 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/forcing_monthly.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/itides.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/itides.nc new file mode 100644 index 0000000000..8ba1e867d6 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nazca/itides.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/ICs.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/ICs.nc new file mode 100644 index 0000000000..3da6623546 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/ICs.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/MOM_override b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/MOM_override new file mode 100644 index 0000000000..91dbac4f91 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = 0 +INPUTDIR = "INPUT/Nino" diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/WOA_column.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/WOA_column.nc new file mode 100644 index 0000000000..f380a05886 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/WOA_column.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/forcing.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/forcing.nc new file mode 100644 index 0000000000..de2f8660d3 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/forcing.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/forcing_monthly.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/forcing_monthly.nc new file mode 100644 index 0000000000..801d4dd5e0 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/forcing_monthly.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/itides.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/itides.nc new file mode 100644 index 0000000000..b470bef27d Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Nino/itides.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/ICs.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/ICs.nc new file mode 100644 index 0000000000..0cdb208abe Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/ICs.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/MOM_override b/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/MOM_override new file mode 100644 index 0000000000..954d5ee852 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = 0.000140488 +INPUTDIR = "INPUT/Norwegian" diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/WOA_column.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/WOA_column.nc new file mode 100644 index 0000000000..a79b9d3491 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/WOA_column.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/forcing.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/forcing.nc new file mode 100644 index 0000000000..9ed0004484 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/forcing.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/forcing_monthly.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/forcing_monthly.nc new file mode 100644 index 0000000000..e1f6c70c97 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/forcing_monthly.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/itides.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/itides.nc new file mode 100644 index 0000000000..0dcca59d79 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/itides.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/targetlayers_scalar.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/targetlayers_scalar.nc new file mode 100644 index 0000000000..3cd48c0355 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Norwegian/targetlayers_scalar.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/ICs.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/ICs.nc new file mode 100644 index 0000000000..eb7fe278c0 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/ICs.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/MOM_override b/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/MOM_override new file mode 100644 index 0000000000..131fefbe36 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = 0.000113031 +INPUTDIR = "INPUT/PAPA" diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/WOA_column.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/WOA_column.nc new file mode 100644 index 0000000000..cc8d1c8d0b Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/WOA_column.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/forcing.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/forcing.nc new file mode 100644 index 0000000000..14a16243e3 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/forcing.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/forcing_monthly.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/forcing_monthly.nc new file mode 100644 index 0000000000..2c9e3e6971 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/forcing_monthly.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/itides.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/itides.nc new file mode 100644 index 0000000000..5d1c4a30da Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/PAPA/itides.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/ICs.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/ICs.nc new file mode 100644 index 0000000000..96c3b32df8 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/ICs.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/MOM_override b/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/MOM_override new file mode 100644 index 0000000000..a4ddec9a5b --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = 0 +INPUTDIR = "INPUT/St_Peter_Rock" diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/WOA_column.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/WOA_column.nc new file mode 100644 index 0000000000..430c3c828c Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/WOA_column.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/forcing.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/forcing.nc new file mode 100644 index 0000000000..9bef344408 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/forcing.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/forcing_monthly.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/forcing_monthly.nc new file mode 100644 index 0000000000..2d7f6f75b4 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/forcing_monthly.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/itides.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/itides.nc new file mode 100644 index 0000000000..d577b201e1 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/St_Peter_Rock/itides.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/ICs.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/ICs.nc new file mode 100644 index 0000000000..ac98f6df95 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/ICs.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/MOM_override b/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/MOM_override new file mode 100644 index 0000000000..4e87057512 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = -6.14673e-05 +INPUTDIR = "INPUT/Walvis" diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/WOA_column.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/WOA_column.nc new file mode 100644 index 0000000000..1adbe6f078 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/WOA_column.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/forcing.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/forcing.nc new file mode 100644 index 0000000000..ebaf0cbb14 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/forcing.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/forcing_monthly.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/forcing_monthly.nc new file mode 100644 index 0000000000..f518c60370 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/forcing_monthly.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/itides.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/itides.nc new file mode 100644 index 0000000000..75213a712c Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Walvis/itides.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/ICs.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/ICs.nc new file mode 100644 index 0000000000..f9f137529a Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/ICs.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/MOM_override b/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/MOM_override new file mode 100644 index 0000000000..08fcdcabc4 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = -0.00013981 +INPUTDIR = "INPUT/Weddell" diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/WOA_column.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/WOA_column.nc new file mode 100644 index 0000000000..bc0331f22d Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/WOA_column.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/forcing.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/forcing.nc new file mode 100644 index 0000000000..79bdc27f17 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/forcing.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/forcing_monthly.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/forcing_monthly.nc new file mode 100644 index 0000000000..891abc615f Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/forcing_monthly.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/itides.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/itides.nc new file mode 100644 index 0000000000..b938d01214 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/itides.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/targetlayers_scalar.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/targetlayers_scalar.nc new file mode 100644 index 0000000000..5a9dfa9585 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/Weddell/targetlayers_scalar.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/create_data.m b/ocean_only/single_column/EPBL_diagscalar/INPUT/create_data.m new file mode 100644 index 0000000000..e10c16bb5a --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/create_data.m @@ -0,0 +1,624 @@ +function [] = create_data() + +name='Arabian'; x=66; y=15; doall(x,y,name) +name='BATS'; x=-63.5; y=31.5; doall(x,y,name) +name='Chagos'; x=-284; y=-6; doall(x,y,name) +name='COARE'; x=-180; y=0; doall(x,y,name) +name='Kerguelen'; x=-284; y=-51; doall(x,y,name) +name='Kuroshio'; x=-210; y=30; doall(x,y,name) +name='Labrador'; x=-58; y=61; doall(x,y,name) +name='Mariana'; x=-215; y=13; doall(x,y,name) +name='Nazca'; x=-90; y=20; doall(x,y,name) +name='Nino'; x=-119; y=0; doall(x,y,name) +name='Norwegian'; x=-7; y=75; doall(x,y,name) +name='PAPA'; x=-150; y=51; doall(x,y,name) +name='St_Peter_Rock'; x=-29; y=0; doall(x,y,name) +name='Walvis'; x=5; y=-25; doall(x,y,name) +name='Weddell'; x=-54; y=-74; doall(x,y,name) + +% ============================================================================== + +function [] = doall(x,y,name) + +[success,msg,msgid]=mkdir(name); +%create_override(x,y,name) +%grab_forcing(x,y,name) +%grab_forcing_m(x,y,name) +%grab_initconds(x,y,name) +%grab_tides(x,y,name) +grab_woa(x,y,name) +%grab_coords(x,y,name) + +% ============================================================================== + +function [] = create_override(x,y,name) + +disp(['Creating MOM_override for ' name]) +f=4*pi/86400*sin(y*pi/180); +fid=fopen( sprintf('%s/MOM_override',name), 'wt' ); +fprintf(fid,'! Generated by create_data.m\n'); +fprintf(fid,'#override define F_0 %g\n',f); +fprintf(fid,'#override define INPUTDIR "INPUT/%s"\n',name); +fclose(fid); + +% ============================================================================== + +function [] = grab_forcing(x,y,name) + +disp(['Creating forcing.nc for ' name]) +rtpth='/archive/gold/datasets/global/omsk/INPUT/'; +evap=mycdf([rtpth 'am2p10_evap_HIM_1995.nc']); +precip=mycdf([rtpth 'am2p10_precip_HIM_1995.nc']); +snow=mycdf([rtpth 'am2p10_snow_HIM_1995.nc']); +shflx=mycdf([rtpth 'am2p10_shflx_HIM_1995.nc']); +lwdn_sfc=mycdf([rtpth 'am2p10_lwdn_sfc_HIM_1995.nc']); +lwup_sfc=mycdf([rtpth 'am2p10_lwup_sfc_HIM_1995.nc']); +swdn_sfc=mycdf([rtpth 'am2p10_swdn_sfc_HIM_1995.nc']); +swup_sfc=mycdf([rtpth 'am2p10_swup_sfc_HIM_1995.nc']); +stress=mycdf([rtpth 'omip.nc']); + +X=evap{'gridlon_t'}(:); +Y=evap{'gridlat_t'}(:); + +i=findi(X,x); +j=round( interp1(Y,0.5:length(Y),y) ); +if ymax(X) + xx=xx-360; +end +i=round( interp1(X,0.5:length(X),xx) ); diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/grid_spec.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/grid_spec.nc new file mode 100644 index 0000000000..8683c3cead Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/grid_spec.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/isopyc_coords.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/isopyc_coords.nc new file mode 100644 index 0000000000..04159188f1 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/isopyc_coords.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/vgrid_cm4.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/vgrid_cm4.nc new file mode 100644 index 0000000000..599d9919de Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/vgrid_cm4.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/vgrid_cm4_10.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/vgrid_cm4_10.nc new file mode 100644 index 0000000000..37248231d8 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/vgrid_cm4_10.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/vgrid_cm4_4.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/vgrid_cm4_4.nc new file mode 100644 index 0000000000..df591ead1f Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/vgrid_cm4_4.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/zgrid.cdl b/ocean_only/single_column/EPBL_diagscalar/INPUT/zgrid.cdl new file mode 100644 index 0000000000..3fba71bcd7 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/INPUT/zgrid.cdl @@ -0,0 +1,30 @@ +netcdf zgrid { +dimensions: + zt = 60 ; + zw = 61 ; +variables: + double zt(zt) ; + zt:long_name = "Depth of Level Center" ; + zt:units = "m" ; + zt:positive = "down" ; + double zw(zw) ; + zw:long_name = "Depth of edges" ; + zw:units = "m" ; + zw:positive = "down" ; + +// global attributes: + :filename = "zgrid.nc" ; +data: + + zt = 5, 15, 25, 35, 45, 55, 65, 75, 85, 95, 105, 115, 125, 135, 145, 155, + 165, 175, 185, 195, 205, 215, 225, 235, 245, 255, 265, 275, 285, 295, + 305, 315, 325, 335, 345, 355, 365, 375, 385, 395, 405, 415, 425, 435, + 445, 455, 465, 475, 485, 495, 510, 530, 550, 570, 590, 625, 675, 725, + 775, 850 ; + + zw = 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, + 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, + 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410, 420, 430, + 440, 450, 460, 470, 480, 490, 500, 520, 540, 560, 580, 600, 650, 700, + 750, 800, 900 ; +} diff --git a/ocean_only/single_column/EPBL_diagscalar/INPUT/zgrid.nc b/ocean_only/single_column/EPBL_diagscalar/INPUT/zgrid.nc new file mode 100644 index 0000000000..19a58dbce1 Binary files /dev/null and b/ocean_only/single_column/EPBL_diagscalar/INPUT/zgrid.nc differ diff --git a/ocean_only/single_column/EPBL_diagscalar/MOM_input b/ocean_only/single_column/EPBL_diagscalar/MOM_input new file mode 100644 index 0000000000..24b98f4539 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/MOM_input @@ -0,0 +1,418 @@ +! This input file provides the adjustable run-time parameters for version 6 of the Modular Ocean Model (MOM6). +! Where appropriate, parameters use usually given in MKS units. + +! This particular file is for the example in single_column/EPBL. + +! This MOM_input file typically contains only the non-default values that are needed to reproduce this example. +! A full list of parameters for this example can be found in the corresponding MOM_parameter_doc.all file +! which is generated by the model at run-time. + +! === module MOM_domains === +REENTRANT_Y = True ! [Boolean] default = False + ! If true, the domain is meridionally reentrant. +NIGLOBAL = 2 ! + ! The total number of thickness grid points in the x-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +NJGLOBAL = 2 ! + ! The total number of thickness grid points in the y-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +NIHALO = 2 ! default = 4 + ! The number of halo points on each side in the x-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. +NJHALO = 2 ! default = 4 + ! The number of halo points on each side in the y-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. +! LAYOUT = 1, 1 ! + ! The processor layout that was actually used. + +! === module MOM === +SPLIT = False ! [Boolean] default = True + ! Use the split time stepping if true. +USE_REGRIDDING = True ! [Boolean] default = False + ! If True, use the ALE algorithm (regridding/remapping). If False, use the + ! layered isopycnal algorithm. +DT = 3600.0 ! [s] + ! The (baroclinic) dynamics time step. The time-step that is actually used will + ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode + ! or the coupling timestep in coupled mode.) +FRAZIL = True ! [Boolean] default = False + ! If true, water freezes if it gets too cold, and the accumulated heat deficit + ! is returned in the surface state. FRAZIL is only used if + ! ENABLE_THERMODYNAMICS is true. +C_P = 3925.0 ! [J kg-1 K-1] default = 3991.86795711963 + ! The heat capacity of sea water, approximated as a constant. This is only used + ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 + ! definition of conservative temperature. +SAVE_INITIAL_CONDS = True ! [Boolean] default = False + ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. + +! === module MOM_fixed_initialization === + +! === module MOM_grid_init === +GRID_CONFIG = "cartesian" ! + ! A character string that determines the method for defining the horizontal + ! grid. Current options are: + ! mosaic - read the grid from a mosaic (supergrid) + ! file set by GRID_FILE. + ! cartesian - use a (flat) Cartesian grid. + ! spherical - use a simple spherical grid. + ! mercator - use a Mercator spherical grid. +SOUTHLAT = 30.0 ! [degrees] + ! The southern latitude of the domain or the equivalent starting value for the + ! y-axis. +LENLAT = 1.0 ! [degrees] + ! The latitudinal or y-direction length of the domain. +LENLON = 1.0 ! [degrees] + ! The longitudinal or x-direction length of the domain. +TOPO_CONFIG = "flat" ! + ! This specifies how bathymetry is specified: + ! file - read bathymetric information from the file + ! specified by (TOPO_FILE). + ! flat - flat bottom set to MAXIMUM_DEPTH. + ! bowl - an analytically specified bowl-shaped basin + ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. + ! spoon - a similar shape to 'bowl', but with an vertical + ! wall at the southern face. + ! halfpipe - a zonally uniform channel with a half-sine + ! profile in the meridional direction. + ! bbuilder - build topography from list of functions. + ! benchmark - use the benchmark test case topography. + ! Neverworld - use the Neverworld test case topography. + ! DOME - use a slope and channel configuration for the + ! DOME sill-overflow test case. + ! ISOMIP - use a slope and channel configuration for the + ! ISOMIP test case. + ! DOME2D - use a shelf and slope configuration for the + ! DOME2D gravity current/overflow test case. + ! Kelvin - flat but with rotated land mask. + ! seamount - Gaussian bump for spontaneous motion test case. + ! dumbbell - Sloshing channel with reservoirs on both ends. + ! shelfwave - exponential slope for shelfwave test case. + ! Phillips - ACC-like idealized topography used in the Phillips config. + ! dense - Denmark Strait-like dense water formation and overflow. + ! USER - call a user modified routine. +MINIMUM_DEPTH = 0.5 ! [m] default = 0.0 + ! The minimum depth of the ocean. +MAXIMUM_DEPTH = 6000.0 ! [m] + ! The maximum depth of the ocean. +ROTATION = "betaplane" ! default = "2omegasinlat" + ! This specifies how the Coriolis parameter is specified: + ! 2omegasinlat - Use twice the planetary rotation rate + ! times the sine of latitude. + ! betaplane - Use a beta-plane or f-plane. + ! USER - call a user modified routine. + +! === module MOM_verticalGrid === +! Parameters providing information about the vertical grid. +NK = 75 ! [nondim] + ! The number of model layers. + +! === module MOM_EOS === + +! === module MOM_tracer_flow_control === + +! === module MOM_coord_initialization === +REGRIDDING_COORDINATE_MODE = "Z*" ! default = "LAYER" + ! Coordinate mode for vertical regridding. Choose among the following + ! possibilities: LAYER - Isopycnal or stacked shallow water layers + ! ZSTAR, Z* - stretched geopotential z* + ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf + ! SIGMA - terrain following coordinates + ! RHO - continuous isopycnal + ! HYCOM1 - HyCOM-like hybrid coordinate + ! SLIGHT - stretched coordinates above continuous isopycnal + ! ADAPTIVE - optimize for smooth neutral density surfaces +ALE_COORDINATE_CONFIG = "FILE:./INPUT/vgrid_cm4.nc,dz" ! default = "UNIFORM" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter ALE_RESOLUTION + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +!ALE_RESOLUTION = 4*2.0, 2*2.01, 2*2.02, 2.05, 2.07, 2.09, 2.13, 2.18, 2.24, 2.3, 2.4, 2.5, 2.62, 2.78, 2.95, 3.17, 3.42, 3.71, 4.07, 4.48, 4.97, 5.55, 6.23, 7.04, 7.99, 9.11, 10.43, 11.98, 13.8, 15.94, 18.42, 21.32, 24.66, 28.51, 32.91, 37.92, 43.56, 49.87, 56.88, 64.55, 72.91, 81.87, 91.4, 101.39, 111.73, 122.29, 132.93, 143.47, 153.78, 163.7, 173.07, 181.78, 189.76, 196.89, 203.17, 208.58, 213.14, 216.87, 219.87, 222.19, 223.94, 225.18, 226.04, 226.59, 226.9, 227.07, 227.14, 2*227.16, 227.17 ! [m] + ! The distribution of vertical resolution for the target + ! grid used for Eulerian-like coordinates. For example, + ! in z-coordinate mode, the parameter is a list of level + ! thicknesses (in m). In sigma-coordinate mode, the list + ! is of non-dimensional fractions of the water column. + +! === module MOM_state_initialization === +INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False + ! If true, initialize the layer thicknesses, temperatures, and salinities from a + ! Z-space file on a latitude-longitude grid. + +! === module MOM_initialize_layers_from_Z === +TEMP_SALT_Z_INIT_FILE = "WOA_column.nc" ! default = "temp_salt_z.nc" + ! The name of the z-space input file used to initialize temperatures (T) and + ! salinities (S). If T and S are not in the same file, TEMP_Z_INIT_FILE and + ! SALT_Z_INIT_FILE must be set. +Z_INIT_FILE_PTEMP_VAR = "PTEMP" ! default = "ptemp" + ! The name of the potential temperature variable in TEMP_Z_INIT_FILE. +Z_INIT_FILE_SALT_VAR = "SALT" ! default = "salt" + ! The name of the salinity variable in SALT_Z_INIT_FILE. +Z_INIT_HOMOGENIZE = True ! [Boolean] default = False + ! If True, then horizontally homogenize the interpolated initial conditions. +Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False + ! If True, then remap straight to model coordinate from file. + +! === module MOM_diag_mediator === +NUM_DIAG_COORDS = 1 ! default = 1 + ! The number of diagnostic vertical coordinates to use. For each coordinate, an + ! entry in DIAG_COORDS must be provided. +DIAG_COORDS = "scalar SCALAR SCALAR" ! + ! A list of string tuples associating diag_table modules to a coordinate + ! definition used for diagnostics. Each string is of the form + ! "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME". +DIAG_COORD_P_REF_SCALAR = 0.0 +DIAG_COORD_NEEDS_SORTING_SCALAR = False +DIAG_COORD_DEF_SCALAR = "FILE:targetlayers_scalar_broad.nc,interfaces=interfaces" ! default = "WOA09" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter DIAG_COORD_RES_RHO2 + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +DIAG_COORD_INTERP_SCHEME_SCALAR = "P1M_H2" ! default = "PPM_H4" + ! This sets the interpolation scheme to use to determine the new grid. These + ! parameters are only relevant when REGRIDDING_COORDINATE_MODE is set to a + ! function of state. Otherwise, it is not used. It can be one of the following + ! schemes: + ! P1M_H2 (2nd-order accurate) + ! P1M_H4 (2nd-order accurate) + ! P1M_IH4 (2nd-order accurate) + ! PLM (2nd-order accurate) + ! PPM_CW (3rd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! P3M_IH4IH3 (4th-order accurate) + ! P3M_IH6IH5 (4th-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) + +! === module MOM_lateral_mixing_coeffs === + +! === module MOM_set_visc === +HBBL = 10.0 ! [m] + ! The thickness of a bottom boundary layer with a viscosity of KVBBL if + ! BOTTOMDRAGLAW is not defined, or the thickness over which near-bottom + ! velocities are averaged for the drag law if BOTTOMDRAGLAW is defined but + ! LINEAR_DRAG is not. +CDRAG = 0.0 ! [nondim] default = 0.003 + ! CDRAG is the drag coefficient relating the magnitude of the velocity field to + ! the bottom stress. CDRAG is only used if BOTTOMDRAGLAW is defined. +DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 + ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an + ! unresolved velocity that is combined with the resolved velocity to estimate + ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is + ! defined. +BBL_THICK_MIN = 0.1 ! [m] default = 0.0 + ! The minimum bottom boundary layer thickness that can be used with + ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum + ! near-bottom viscosity. +KV = 1.0E-04 ! [m2 s-1] + ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 + ! m2 s-1, may be used. + +! === module MOM_thickness_diffuse === + +! === module MOM_dynamics_unsplit === + +! === module MOM_continuity === + +! === module MOM_continuity_PPM === +UPWIND_1ST_CONTINUITY = True ! [Boolean] default = False + ! If true, CONTINUITY_PPM becomes a 1st-order upwind continuity solver. This + ! scheme is highly diffusive but may be useful for debugging or in single-column + ! mode where its minimal stencil is useful. +ETA_TOLERANCE = 1.0E-06 ! [m] default = 3.75E-09 + ! The tolerance for the differences between the barotropic and baroclinic + ! estimates of the sea surface height due to the fluxes through each face. The + ! total tolerance for SSH is 4 times this value. The default is + ! 0.5*NK*ANGSTROM, and this should not be set less than about + ! 10^-15*MAXIMUM_DEPTH. +ETA_TOLERANCE_AUX = 0.001 ! [m] default = 1.0E-06 + ! The tolerance for free-surface height discrepancies between the barotropic + ! solution and the sum of the layer thicknesses when calculating the auxiliary + ! corrected velocities. By default, this is the same as ETA_TOLERANCE, but can + ! be made larger for efficiency. + +! === module MOM_CoriolisAdv === +CORIOLIS_EN_DIS = True ! [Boolean] default = False + ! If true, two estimates of the thickness fluxes are used to estimate the + ! Coriolis term, and the one that dissipates energy relative to the other one is + ! used. +BOUND_CORIOLIS = True ! [Boolean] default = False + ! If true, the Coriolis terms at u-points are bounded by the four estimates of + ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This + ! option is always effectively false with CORIOLIS_EN_DIS defined and + ! CORIOLIS_SCHEME set to SADOURNY75_ENERGY. + +! === module MOM_PressureForce === + +! === module MOM_PressureForce_AFV === + +! === module MOM_hor_visc === +BIHARMONIC = False ! [Boolean] default = True + ! If true, use a biharmonic horizontal viscosity. BIHARMONIC may be used with + ! LAPLACIAN. + +! === module MOM_vert_friction === +HARMONIC_VISC = True ! [Boolean] default = False + ! If true, use the harmonic mean thicknesses for calculating the vertical + ! viscosity. +HMIX_FIXED = 0.01 ! [m] + ! The prescribed depth over which the near-surface viscosity and diffusivity are + ! elevated when the bulk mixed layer is not used. +KVML = 0.0 ! [m2 s-1] default = 1.0E-04 + ! The kinematic viscosity in the mixed layer. A typical value is ~1e-2 m2 s-1. + ! KVML is not used if BULKMIXEDLAYER is true. The default is set by KV. +MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 + ! The maximum velocity allowed before the velocity components are truncated. +VEL_UNDERFLOW = 1.0E-30 ! [m s-1] default = 0.0 + ! A negligibly small velocity magnitude below which velocity components are set + ! to 0. A reasonable value might be 1e-30 m/s, which is less than an Angstrom + ! divided by the age of the universe. + +! === module MOM_diagnostics === + +! === module MOM_diabatic_driver === +! The following parameters are used for diabatic processes. +ENERGETICS_SFC_PBL = True ! [Boolean] default = False + ! If true, use an implied energetics planetary boundary layer scheme to + ! determine the diffusivity and viscosity in the surface boundary layer. + +! === module MOM_CVMix_KPP === +! This is the MOM wrapper to CVMix:KPP +! See http://cvmix.github.io/ +USE_KPP = True ! [Boolean] default = False + ! If true, turns on the [CVMix] KPP scheme of Large et al., 1994, to calculate + ! diffusivities and non-local transport in the OBL. +KPP% +PASSIVE = True ! [Boolean] default = False + ! If True, puts KPP into a passive-diagnostic mode. +%KPP + +! === module MOM_set_diffusivity === +ML_RADIATION = True ! [Boolean] default = False + ! If true, allow a fraction of TKE available from wind work to penetrate below + ! the base of the mixed layer with a vertical decay scale determined by the + ! minimum of: (1) The depth of the mixed layer, (2) an Ekman length scale. +TKE_DECAY = 10.0 ! [nondim] default = 2.5 + ! The ratio of the natural Ekman depth to the TKE decay scale. +ML_OMEGA_FRAC = 1.0 ! [nondim] default = 0.0 + ! When setting the decay scale for turbulence, use this fraction of the absolute + ! rotation rate blended with the local value of f, as sqrt((1-of)*f^2 + + ! of*4*omega^2). + +! === module MOM_bkgnd_mixing === +! Adding static vertical background mixing coefficients +KD = 2.0E-05 ! [m2 s-1] default = 0.0 + ! The background diapycnal diffusivity of density in the interior. Zero or the + ! molecular value, ~1e-7 m2 s-1, may be used. +KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 + ! The minimum diapycnal diffusivity. + +! === module MOM_kappa_shear === +! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 +USE_JACKSON_PARAM = True ! [Boolean] default = False + ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing + ! parameterization. +MAX_RINO_IT = 25 ! [nondim] default = 50 + ! The maximum number of iterations that may be used to estimate the Richardson + ! number driven mixing. + +! === module MOM_diabatic_aux === +! The following parameters are used for auxiliary diabatic processes. +RECLAIM_FRAZIL = False ! [Boolean] default = True + ! If true, try to use any frazil heat deficit to cool any overlying layers down + ! to the freezing point, thereby avoiding the creation of thin ice when the SST + ! is above the freezing point. +VAR_PEN_SW = True ! [Boolean] default = False + ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine + ! the e-folding depth of incoming short wave radiation. +CHL_FILE = "forcing_monthly.nc" ! + ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It + ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. + +! === module MOM_energetic_PBL === +USE_MLD_ITERATION = False ! [Boolean] default = True + ! A logical that specifies whether or not to use the distance to the bottom of + ! the actively turbulent boundary layer to help set the EPBL length scale. + +! === module MOM_opacity === +PEN_SW_NBANDS = 3 ! default = 1 + ! The number of bands of penetrating shortwave radiation. + +! === module MOM_tracer_advect === + +! === module MOM_tracer_hor_diff === +KHTR = 600.0 ! [m2 s-1] default = 0.0 + ! The background along-isopycnal tracer diffusivity. + +! === module MOM_sum_output === +MAXTRUNC = 5000 ! [truncations save_interval-1] default = 0 + ! The run will be stopped, and the day set to a very large value if the velocity + ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 + ! to stop if there is any truncation of velocities. +ENERGYSAVEDAYS = 10.0 ! [days] default = 1.0 + ! The interval in units of TIMEUNIT between saves of the energies of the run and + ! other globally summed diagnostics. + +! === module MOM_surface_forcing === +BUOY_CONFIG = "data_override" ! default = "zero" + ! The character string that indicates how buoyancy forcing is specified. Valid + ! options include (file), (zero), (linear), (USER), (BFB) and (NONE). +WIND_CONFIG = "data_override" ! default = "zero" + ! The character string that indicates how wind forcing is specified. Valid + ! options include (file), (2gyre), (1gyre), (gyres), (zero), and (USER). +READ_GUST_2D = True ! [Boolean] default = False + ! If true, use a 2-dimensional gustiness supplied from an input file +GUST_2D_FILE = "forcing_monthly.nc" ! + ! The file in which the wind gustiness is found in variable gustiness. + +! === module MOM_main (MOM_driver) === +DAYMAX = 365.0 ! [days] + ! The final time of the whole simulation, in units of TIMEUNIT seconds. This + ! also sets the potential end time of the present run segment if the end time is + ! not set via ocean_solo_nml in input.nml. +RESTART_CONTROL = 0 ! default = 1 + ! An integer whose bits encode which restart files are written. Add 2 (bit 1) + ! for a time-stamped file, and odd (bit 0) for a non-time-stamped file. A + ! non-time-stamped restart file is saved at the end of the run segment for any + ! non-negative value. +RESTINT = 3650.0 ! [days] default = 0.0 + ! The interval between saves of the restart file in units of TIMEUNIT. Use 0 + ! (the default) to not save incremental restart files at all. + +! === module MOM_write_cputime === +MAXCPU = 2.88E+04 ! [wall-clock seconds] default = -1.0 + ! The maximum amount of cpu time per processor for which MOM should run before + ! saving a restart file and quitting with a return value that indicates that a + ! further run is required to complete the simulation. If automatic restarts are + ! not desired, use a negative value for MAXCPU. MAXCPU has units of wall-clock + ! seconds, so the actual CPU time used is larger by a factor of the number of + ! processors used. + +! Debugging parameters set to non-default values +U_TRUNC_FILE = "U_velocity_truncations" ! default = "" + ! The absolute path to a file into which the accelerations leading to zonal + ! velocity truncations are written. Undefine this for efficiency if this + ! diagnostic is not needed. +V_TRUNC_FILE = "V_velocity_truncations" ! default = "" + ! The absolute path to a file into which the accelerations leading to meridional + ! velocity truncations are written. Undefine this for efficiency if this + ! diagnostic is not needed. diff --git a/ocean_only/single_column/EPBL_diagscalar/MOM_override b/ocean_only/single_column/EPBL_diagscalar/MOM_override new file mode 100644 index 0000000000..875579f76d --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/MOM_override @@ -0,0 +1,3 @@ +! Generated by create_data.m +F_0 = 7.59943e-05 +INPUTDIR = "INPUT/BATS" diff --git a/ocean_only/single_column/EPBL_diagscalar/MOM_override2 b/ocean_only/single_column/EPBL_diagscalar/MOM_override2 new file mode 100644 index 0000000000..94a755f0f1 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/MOM_override2 @@ -0,0 +1,4 @@ +! Generated by run_suite.csh +!#override DAYMAX = 365 +!#override ALE_COORDINATE_CONFIG = "FILE:INPUT/vgrid_cm4_4.nc,dz" ! 4 meter surface +!#override ALE_COORDINATE_CONFIG = "FILE:INPUT/vgrid_cm4.nc,dz" ! 2 meter surface diff --git a/ocean_only/single_column/EPBL_diagscalar/MOM_parameter_doc.all b/ocean_only/single_column/EPBL_diagscalar/MOM_parameter_doc.all new file mode 100644 index 0000000000..b947af1b50 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/MOM_parameter_doc.all @@ -0,0 +1,1805 @@ +! This file was written by the model and records all non-layout or debugging parameters used at run-time. + +! === module MOM === +SPLIT = False ! [Boolean] default = True + ! Use the split time stepping if true. +USE_RK2 = False ! [Boolean] default = False + ! If true, use RK2 instead of RK3 in the unsplit time stepping. +CALC_RHO_FOR_SEA_LEVEL = False ! [Boolean] default = False + ! If true, the in-situ density is used to calculate the effective sea level that + ! is returned to the coupler. If false, the Boussinesq parameter RHO_0 is used. +ENABLE_THERMODYNAMICS = True ! [Boolean] default = True + ! If true, Temperature and salinity are used as state variables. +USE_EOS = True ! [Boolean] default = True + ! If true, density is calculated from temperature and salinity with an equation + ! of state. If USE_EOS is true, ENABLE_THERMODYNAMICS must be true as well. +DIABATIC_FIRST = False ! [Boolean] default = False + ! If true, apply diabatic and thermodynamic processes, including buoyancy + ! forcing and mass gain or loss, before stepping the dynamics forward. +USE_CONTEMP_ABSSAL = False ! [Boolean] default = False + ! If true, the prognostics T&S are the conservative temperature and absolute + ! salinity. Care should be taken to convert them to potential temperature and + ! practical salinity before exchanging them with the coupler and/or reporting + ! T&S diagnostics. +ADIABATIC = False ! [Boolean] default = False + ! There are no diapycnal mass fluxes if ADIABATIC is true. This assumes that KD + ! = 0.0 and that there is no buoyancy forcing, but makes the model faster by + ! eliminating subroutine calls. +DO_DYNAMICS = True ! [Boolean] default = True + ! If False, skips the dynamics calls that update u & v, as well as the gravity + ! wave adjustment to h. This may be a fragile feature, but can be useful during + ! development +OFFLINE_TRACER_MODE = False ! [Boolean] default = False + ! If true, barotropic and baroclinic dynamics, thermodynamics are all bypassed + ! with all the fields necessary to integrate the tracer advection and diffusion + ! equation are read in from files stored from a previous integration of the + ! prognostic model. NOTE: This option only used in the ocean_solo_driver. +USE_REGRIDDING = True ! [Boolean] default = False + ! If True, use the ALE algorithm (regridding/remapping). If False, use the + ! layered isopycnal algorithm. +REMAP_AUXILIARY_VARS = False ! [Boolean] default = False + ! If true, apply ALE remapping to all of the auxiliary 3-dimensional variables + ! that are needed to reproduce across restarts, similarly to what is already + ! being done with the primary state variables. The default should be changed to + ! true. +BULKMIXEDLAYER = False ! [Boolean] default = False + ! If true, use a Kraus-Turner-like bulk mixed layer with transitional buffer + ! layers. Layers 1 through NKML+NKBL have variable densities. There must be at + ! least NKML+NKBL+1 layers if BULKMIXEDLAYER is true. BULKMIXEDLAYER can not be + ! used with USE_REGRIDDING. The default is influenced by ENABLE_THERMODYNAMICS. +THICKNESSDIFFUSE = False ! [Boolean] default = False + ! If true, isopycnal surfaces are diffused with a Laplacian coefficient of KHTH. +APPLY_INTERFACE_FILTER = False ! [Boolean] default = False + ! If true, model interface heights are subjected to a grid-scale dependent + ! spatial smoothing, often with biharmonic filter. +USE_POROUS_BARRIER = True ! [Boolean] default = True + ! If true, use porous barrier to constrain the widths and face areas at the + ! edges of the grid cells. +BATHYMETRY_AT_VEL = False ! [Boolean] default = False + ! If true, there are separate values for the basin depths at velocity points. + ! Otherwise the effects of topography are entirely determined from thickness + ! points. +DT = 3600.0 ! [s] + ! The (baroclinic) dynamics time step. The time-step that is actually used will + ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode + ! or the coupling timestep in coupled mode.) +DT_THERM = 3600.0 ! [s] default = 3600.0 + ! The thermodynamic and tracer advection time step. Ideally DT_THERM should be + ! an integer multiple of DT and less than the forcing or coupling time-step, + ! unless THERMO_SPANS_COUPLING is true, in which case DT_THERM can be an integer + ! multiple of the coupling timestep. By default DT_THERM is set to DT. +THERMO_SPANS_COUPLING = False ! [Boolean] default = False + ! If true, the MOM will take thermodynamic and tracer timesteps that can be + ! longer than the coupling timestep. The actual thermodynamic timestep that is + ! used in this case is the largest integer multiple of the coupling timestep + ! that is less than or equal to DT_THERM. +HMIX_SFC_PROP = 1.0 ! [m] default = 1.0 + ! If BULKMIXEDLAYER is false, HMIX_SFC_PROP is the depth over which to average + ! to find surface properties like SST and SSS or density (but not surface + ! velocities). +HMIX_UV_SFC_PROP = 0.0 ! [m] default = 0.0 + ! If BULKMIXEDLAYER is false, HMIX_UV_SFC_PROP is the depth over which to + ! average to find surface flow properties, SSU, SSV. A non-positive value + ! indicates no averaging. +HFREEZE = -1.0 ! [m] default = -1.0 + ! If HFREEZE > 0, melt potential will be computed. The actual depth over which + ! melt potential is computed will be min(HFREEZE, OBLD), where OBLD is the + ! boundary layer depth. If HFREEZE <= 0 (default), melt potential will not be + ! computed. +INTERPOLATE_P_SURF = False ! [Boolean] default = False + ! If true, linearly interpolate the surface pressure over the coupling time + ! step, using the specified value at the end of the step. +FRAZIL = True ! [Boolean] default = False + ! If true, water freezes if it gets too cold, and the accumulated heat deficit + ! is returned in the surface state. FRAZIL is only used if + ! ENABLE_THERMODYNAMICS is true. +DO_GEOTHERMAL = False ! [Boolean] default = False + ! If true, apply geothermal heating. +BOUND_SALINITY = False ! [Boolean] default = False + ! If true, limit salinity to being positive. (The sea-ice model may ask for more + ! salt than is available and drive the salinity negative otherwise.) +SALINITY_UNDERFLOW = 0.0 ! [PPT] default = 0.0 + ! A tiny value of salinity below which the it is set to 0. For reference, one + ! molecule of salt per square meter of ocean is of order 1e-29 ppt. +TEMPERATURE_UNDERFLOW = 0.0 ! [degC] default = 0.0 + ! A tiny magnitude of temperatures below which they are set to 0. +C_P = 3925.0 ! [J kg-1 K-1] default = 3991.86795711963 + ! The heat capacity of sea water, approximated as a constant. This is only used + ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 + ! definition of conservative temperature. +USE_PSURF_IN_EOS = True ! [Boolean] default = True + ! If true, always include the surface pressure contributions in equation of + ! state calculations. +P_REF = 2.0E+07 ! [Pa] default = 2.0E+07 + ! The pressure that is used for calculating the coordinate density. (1 Pa = 1e4 + ! dbar, so 2e7 is commonly used.) This is only used if USE_EOS and + ! ENABLE_THERMODYNAMICS are true. +FIRST_DIRECTION = 0 ! default = 0 + ! An integer that indicates which direction goes first in parts of the code that + ! use directionally split updates, with even numbers (or 0) used for x- first + ! and odd numbers used for y-first. +ALTERNATE_FIRST_DIRECTION = False ! [Boolean] default = False + ! If true, after every dynamic timestep alternate whether the x- or y- direction + ! updates occur first in directionally split parts of the calculation. If this + ! is true, FIRST_DIRECTION applies at the start of a new run or if the next + ! first direction can not be found in the restart file. +CHECK_BAD_SURFACE_VALS = False ! [Boolean] default = False + ! If true, check the surface state for ridiculous values. +DEFAULT_ANSWER_DATE = 99991231 ! default = 99991231 + ! This sets the default value for the various _ANSWER_DATE parameters. +DEFAULT_2018_ANSWERS = False ! [Boolean] default = False + ! This sets the default value for the various _2018_ANSWERS parameters. +SURFACE_2018_ANSWERS = False ! [Boolean] default = False + ! If true, use expressions for the surface properties that recover the answers + ! from the end of 2018. Otherwise, use more appropriate expressions that differ + ! at roundoff for non-Boussinesq cases. +SURFACE_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the expressions for the surface properties. Values below + ! 20190101 recover the answers from the end of 2018, while higher values use + ! updated and more robust forms of the same expressions. If both + ! SURFACE_2018_ANSWERS and SURFACE_ANSWER_DATE are specified, the latter takes + ! precedence. +USE_DIABATIC_TIME_BUG = False ! [Boolean] default = False + ! If true, uses the wrong calendar time for diabatic processes, as was done in + ! MOM6 versions prior to February 2018. This is not recommended. +SAVE_INITIAL_CONDS = True ! [Boolean] default = False + ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. +IC_OUTPUT_FILE = "MOM_IC" ! default = "MOM_IC" + ! The file into which to write the initial conditions. +WRITE_GEOM = 1 ! default = 1 + ! If =0, never write the geometry and vertical grid files. If =1, write the + ! geometry and vertical grid files only for a new simulation. If =2, always + ! write the geometry and vertical grid files. Other values are invalid. +USE_DBCLIENT = False ! [Boolean] default = False + ! If true, initialize a client to a remote database that can be used for online + ! analysis and machine-learning inference. +ICE_SHELF = False ! [Boolean] default = False + ! If true, enables the ice shelf model. +USE_PARTICLES = False ! [Boolean] default = False + ! If true, use the particles package. +ENSEMBLE_OCEAN = False ! [Boolean] default = False + ! If False, The model is being run in serial mode as a single realization. If + ! True, The current model realization is part of a larger ensemble and at the + ! end of step MOM, we will perform a gather of the ensemble members for + ! statistical evaluation and/or data assimilation. +HOMOGENIZE_FORCINGS = False ! [Boolean] default = False + ! If True, homogenize the forces and fluxes. + +! === module MOM_domains === +REENTRANT_X = True ! [Boolean] default = True + ! If true, the domain is zonally reentrant. +REENTRANT_Y = True ! [Boolean] default = False + ! If true, the domain is meridionally reentrant. +TRIPOLAR_N = False ! [Boolean] default = False + ! Use tripolar connectivity at the northern edge of the domain. With + ! TRIPOLAR_N, NIGLOBAL must be even. +NIGLOBAL = 2 ! + ! The total number of thickness grid points in the x-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +NJGLOBAL = 2 ! + ! The total number of thickness grid points in the y-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +NIHALO = 2 ! default = 4 + ! The number of halo points on each side in the x-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. +NJHALO = 2 ! default = 4 + ! The number of halo points on each side in the y-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. + +! === module MOM_hor_index === +! Sets the horizontal array index types. + +! === module MOM_grid === +! Parameters providing information about the lateral grid. +REFERENCE_HEIGHT = 0.0 ! [m] default = 0.0 + ! A reference value for geometric height fields, such as bathyT. + +! === module MOM_fixed_initialization === +INPUTDIR = "INPUT/BATS" ! default = "." + ! The directory in which input files are found. + +! === module MOM_grid_init === +GRID_CONFIG = "cartesian" ! + ! A character string that determines the method for defining the horizontal + ! grid. Current options are: + ! mosaic - read the grid from a mosaic (supergrid) + ! file set by GRID_FILE. + ! cartesian - use a (flat) Cartesian grid. + ! spherical - use a simple spherical grid. + ! mercator - use a Mercator spherical grid. +AXIS_UNITS = "degrees" ! default = "degrees" + ! The units for the Cartesian axes. Valid entries are: + ! degrees - degrees of latitude and longitude + ! m or meter(s) - meters + ! k or km or kilometer(s) - kilometers +SOUTHLAT = 30.0 ! [degrees] + ! The southern latitude of the domain or the equivalent starting value for the + ! y-axis. +LENLAT = 1.0 ! [degrees] + ! The latitudinal or y-direction length of the domain. +WESTLON = 0.0 ! [degrees] default = 0.0 + ! The western longitude of the domain or the equivalent starting value for the + ! x-axis. +LENLON = 1.0 ! [degrees] + ! The longitudinal or x-direction length of the domain. +RAD_EARTH = 6.378E+06 ! [m] default = 6.378E+06 + ! The radius of the Earth. +TOPO_CONFIG = "flat" ! + ! This specifies how bathymetry is specified: + ! file - read bathymetric information from the file + ! specified by (TOPO_FILE). + ! flat - flat bottom set to MAXIMUM_DEPTH. + ! bowl - an analytically specified bowl-shaped basin + ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. + ! spoon - a similar shape to 'bowl', but with an vertical + ! wall at the southern face. + ! halfpipe - a zonally uniform channel with a half-sine + ! profile in the meridional direction. + ! bbuilder - build topography from list of functions. + ! benchmark - use the benchmark test case topography. + ! Neverworld - use the Neverworld test case topography. + ! DOME - use a slope and channel configuration for the + ! DOME sill-overflow test case. + ! ISOMIP - use a slope and channel configuration for the + ! ISOMIP test case. + ! DOME2D - use a shelf and slope configuration for the + ! DOME2D gravity current/overflow test case. + ! Kelvin - flat but with rotated land mask. + ! seamount - Gaussian bump for spontaneous motion test case. + ! dumbbell - Sloshing channel with reservoirs on both ends. + ! shelfwave - exponential slope for shelfwave test case. + ! Phillips - ACC-like idealized topography used in the Phillips config. + ! dense - Denmark Strait-like dense water formation and overflow. + ! USER - call a user modified routine. +MINIMUM_DEPTH = 0.5 ! [m] default = 0.0 + ! The minimum depth of the ocean. +MAXIMUM_DEPTH = 6000.0 ! [m] + ! The maximum depth of the ocean. + +! === module MOM_open_boundary === +! Controls where open boundaries are located, what kind of boundary condition to impose, and what data to apply, +! if any. +OBC_NUMBER_OF_SEGMENTS = 0 ! default = 0 + ! The number of open boundary segments. +MASKING_DEPTH = -9999.0 ! [m] default = -9999.0 + ! The depth below which to mask points as land points, for which all fluxes are + ! zeroed out. MASKING_DEPTH is ignored if it has the special default value. +CHANNEL_CONFIG = "none" ! default = "none" + ! A parameter that determines which set of channels are + ! restricted to specific widths. Options are: + ! none - All channels have the grid width. + ! global_1deg - Sets 16 specific channels appropriate + ! for a 1-degree model, as used in CM2G. + ! list - Read the channel locations and widths from a + ! text file, like MOM_channel_list in the MOM_SIS + ! test case. + ! file - Read open face widths everywhere from a + ! NetCDF file on the model grid. +SUBGRID_TOPO_AT_VEL = False ! [Boolean] default = False + ! If true, use variables from TOPO_AT_VEL_FILE as parameters for porous barrier. +ROTATION = "betaplane" ! default = "2omegasinlat" + ! This specifies how the Coriolis parameter is specified: + ! 2omegasinlat - Use twice the planetary rotation rate + ! times the sine of latitude. + ! betaplane - Use a beta-plane or f-plane. + ! USER - call a user modified routine. +F_0 = 7.59943E-05 ! [s-1] default = 0.0 + ! The reference value of the Coriolis parameter with the betaplane option. +BETA = 0.0 ! [m-1 s-1] default = 0.0 + ! The northward gradient of the Coriolis parameter with the betaplane option. +BETA_LAT_REF = 0.0 ! [degrees] default = 0.0 + ! The reference latitude (origin) of the beta-plane +GRID_ROTATION_ANGLE_BUGS = False ! [Boolean] default = False + ! If true, use an older algorithm to calculate the sine and cosines needed + ! rotate between grid-oriented directions and true north and east. Differences + ! arise at the tripolar fold. + +! === module MOM_verticalGrid === +! Parameters providing information about the vertical grid. +G_EARTH = 9.8 ! [m s-2] default = 9.8 + ! The gravitational acceleration of the Earth. +RHO_0 = 1035.0 ! [kg m-3] default = 1035.0 + ! The mean ocean density used with BOUSSINESQ true to calculate accelerations + ! and the mass for conservation properties, or with BOUSSINSEQ false to convert + ! some parameters from vertical units of m to kg m-2. +BOUSSINESQ = True ! [Boolean] default = True + ! If true, make the Boussinesq approximation. +ANGSTROM = 1.0E-10 ! [m] default = 1.0E-10 + ! The minimum layer thickness, usually one-Angstrom. +H_TO_M = 1.0 ! [m H-1] default = 1.0 + ! A constant that translates the model's internal units of thickness into m. +NK = 75 ! [nondim] + ! The number of model layers. + +! === module MOM_tracer_registry === + +! === module MOM_EOS === +EQN_OF_STATE = "WRIGHT" ! default = "WRIGHT" + ! EQN_OF_STATE determines which ocean equation of state should be used. + ! Currently, the valid choices are "LINEAR", "UNESCO", "WRIGHT", "NEMO" and + ! "TEOS10". This is only used if USE_EOS is true. +EOS_QUADRATURE = False ! [Boolean] default = False + ! If true, always use the generic (quadrature) code code for the integrals of + ! density. +TFREEZE_FORM = "LINEAR" ! default = "LINEAR" + ! TFREEZE_FORM determines which expression should be used for the freezing + ! point. Currently, the valid choices are "LINEAR", "MILLERO_78", "TEOS10" +TFREEZE_S0_P0 = 0.0 ! [deg C] default = 0.0 + ! When TFREEZE_FORM=LINEAR, this is the freezing potential temperature at S=0, + ! P=0. +DTFREEZE_DS = -0.054 ! [deg C PSU-1] default = -0.054 + ! When TFREEZE_FORM=LINEAR, this is the derivative of the freezing potential + ! temperature with salinity. +DTFREEZE_DP = 0.0 ! [deg C Pa-1] default = 0.0 + ! When TFREEZE_FORM=LINEAR, this is the derivative of the freezing potential + ! temperature with pressure. + +! === module MOM_restart === +PARALLEL_RESTARTFILES = False ! [Boolean] default = False + ! If true, the IO layout is used to group processors that write to the same + ! restart file or each processor writes its own (numbered) restart file. If + ! false, a single restart file is generated combining output from all PEs. +RESTARTFILE = "MOM.res" ! default = "MOM.res" + ! The name-root of the restart file. +MAX_FIELDS = 100 ! default = 100 + ! The maximum number of restart fields that can be used. +RESTART_CHECKSUMS_REQUIRED = True ! [Boolean] default = True + ! If true, require the restart checksums to match and error out otherwise. Users + ! may want to avoid this comparison if for example the restarts are made from a + ! run with a different mask_table than the current run, in which case the + ! checksums will not match and cause crash. + +! === module MOM_tracer_flow_control === +USE_USER_TRACER_EXAMPLE = False ! [Boolean] default = False + ! If true, use the USER_tracer_example tracer package. +USE_DOME_TRACER = False ! [Boolean] default = False + ! If true, use the DOME_tracer tracer package. +USE_ISOMIP_TRACER = False ! [Boolean] default = False + ! If true, use the ISOMIP_tracer tracer package. +USE_RGC_TRACER = False ! [Boolean] default = False + ! If true, use the RGC_tracer tracer package. +USE_IDEAL_AGE_TRACER = False ! [Boolean] default = False + ! If true, use the ideal_age_example tracer package. +USE_REGIONAL_DYES = False ! [Boolean] default = False + ! If true, use the regional_dyes tracer package. +USE_OIL_TRACER = False ! [Boolean] default = False + ! If true, use the oil_tracer tracer package. +USE_ADVECTION_TEST_TRACER = False ! [Boolean] default = False + ! If true, use the advection_test_tracer tracer package. +USE_OCMIP2_CFC = False ! [Boolean] default = False + ! If true, use the MOM_OCMIP2_CFC tracer package. +USE_CFC_CAP = False ! [Boolean] default = False + ! If true, use the MOM_CFC_cap tracer package. +USE_generic_tracer = False ! [Boolean] default = False + ! If true and _USE_GENERIC_TRACER is defined as a preprocessor macro, use the + ! MOM_generic_tracer packages. +USE_PSEUDO_SALT_TRACER = False ! [Boolean] default = False + ! If true, use the pseudo salt tracer, typically run as a diagnostic. +USE_BOUNDARY_IMPULSE_TRACER = False ! [Boolean] default = False + ! If true, use the boundary impulse tracer. +USE_DYED_OBC_TRACER = False ! [Boolean] default = False + ! If true, use the dyed_obc_tracer tracer package. +USE_NW2_TRACERS = False ! [Boolean] default = False + ! If true, use the NeverWorld2 tracers. + +! === module MOM_coord_initialization === +COORD_CONFIG = "none" ! default = "none" + ! This specifies how layers are to be defined: + ! ALE or none - used to avoid defining layers in ALE mode + ! file - read coordinate information from the file + ! specified by (COORD_FILE). + ! BFB - Custom coords for buoyancy-forced basin case + ! based on SST_S, T_BOT and DRHO_DT. + ! linear - linear based on interfaces not layers + ! layer_ref - linear based on layer densities + ! ts_ref - use reference temperature and salinity + ! ts_range - use range of temperature and salinity + ! (T_REF and S_REF) to determine surface density + ! and GINT calculate internal densities. + ! gprime - use reference density (RHO_0) for surface + ! density and GINT calculate internal densities. + ! ts_profile - use temperature and salinity profiles + ! (read from COORD_FILE) to set layer densities. + ! USER - call a user modified routine. +GFS = 9.8 ! [m s-2] default = 9.8 + ! The reduced gravity at the free surface. +REMAP_UV_USING_OLD_ALG = False ! [Boolean] default = False + ! If true, uses the old remapping-via-a-delta-z method for remapping u and v. If + ! false, uses the new method that remaps between grids described by an old and + ! new thickness. +REGRIDDING_COORDINATE_MODE = "Z*" ! default = "LAYER" + ! Coordinate mode for vertical regridding. Choose among the following + ! possibilities: LAYER - Isopycnal or stacked shallow water layers + ! ZSTAR, Z* - stretched geopotential z* + ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf + ! SIGMA - terrain following coordinates + ! RHO - continuous isopycnal + ! SCALAR - any scalar variable ** for diagnostic grids only ** + ! HYCOM1 - HyCOM-like hybrid coordinate + ! HYBGEN - Hybrid coordinate from the Hycom hybgen code + ! SLIGHT - stretched coordinates above continuous isopycnal + ! ADAPTIVE - optimize for smooth neutral density surfaces +REGRIDDING_COORDINATE_UNITS = "m" ! default = "m" + ! Units of the regridding coordinate. +ALE_COORDINATE_CONFIG = "FILE:./INPUT/vgrid_cm4.nc,dz" ! default = "UNIFORM" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter ALE_RESOLUTION + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +!ALE_RESOLUTION = 4*2.0, 2*2.01, 2*2.02, 2.05, 2.07, 2.09, 2.13, 2.18, 2.24, 2.3, 2.4, 2.5, 2.62, 2.78, 2.95, 3.17, 3.42, 3.71, 4.07, 4.48, 4.97, 5.55, 6.23, 7.04, 7.99, 9.11, 10.43, 11.98, 13.8, 15.94, 18.42, 21.32, 24.66, 28.51, 32.91, 37.92, 43.56, 49.87, 56.88, 64.55, 72.91, 81.87, 91.4, 101.39, 111.73, 122.29, 132.93, 143.47, 153.78, 163.7, 173.07, 181.78, 189.76, 196.89, 203.17, 208.58, 213.14, 216.87, 219.87, 222.19, 223.94, 225.18, 226.04, 226.59, 226.9, 227.07, 227.14, 2*227.16, 227.17 ! [m] + ! The distribution of vertical resolution for the target + ! grid used for Eulerian-like coordinates. For example, + ! in z-coordinate mode, the parameter is a list of level + ! thicknesses (in m). In sigma-coordinate mode, the list + ! is of non-dimensional fractions of the water column. +MIN_THICKNESS = 0.001 ! [m] default = 0.001 + ! When regridding, this is the minimum layer thickness allowed. +REMAPPING_SCHEME = "PLM" ! default = "PLM" + ! This sets the reconstruction scheme used for vertical remapping for all + ! variables. It can be one of the following schemes: + ! PCM (1st-order accurate) + ! PLM (2nd-order accurate) + ! PLM_HYBGEN (2nd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! PPM_HYBGEN (3rd-order accurate) + ! WENO_HYBGEN (3rd-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) +VELOCITY_REMAPPING_SCHEME = "PLM" ! default = "PLM" + ! This sets the reconstruction scheme used for vertical remapping of velocities. + ! By default it is the same as REMAPPING_SCHEME. It can be one of the following + ! schemes: + ! PCM (1st-order accurate) + ! PLM (2nd-order accurate) + ! PLM_HYBGEN (2nd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! PPM_HYBGEN (3rd-order accurate) + ! WENO_HYBGEN (3rd-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) +FATAL_CHECK_RECONSTRUCTIONS = False ! [Boolean] default = False + ! If true, cell-by-cell reconstructions are checked for consistency and if + ! non-monotonicity or an inconsistency is detected then a FATAL error is issued. +FATAL_CHECK_REMAPPING = False ! [Boolean] default = False + ! If true, the results of remapping are checked for conservation and new extrema + ! and if an inconsistency is detected then a FATAL error is issued. +REMAP_BOUND_INTERMEDIATE_VALUES = False ! [Boolean] default = False + ! If true, the values on the intermediate grid used for remapping are forced to + ! be bounded, which might not be the case due to round off. +REMAP_BOUNDARY_EXTRAP = False ! [Boolean] default = False + ! If true, values at the interfaces of boundary cells are extrapolated instead + ! of piecewise constant +REMAPPING_2018_ANSWERS = False ! [Boolean] default = False + ! If true, use the order of arithmetic and expressions that recover the answers + ! from the end of 2018. Otherwise, use updated and more robust forms of the + ! same expressions. +REMAPPING_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the expressions and order of arithmetic to use for remapping. + ! Values below 20190101 result in the use of older, less accurate expressions + ! that were in use at the end of 2018. Higher values result in the use of more + ! robust and accurate forms of mathematically equivalent expressions. If both + ! REMAPPING_2018_ANSWERS and REMAPPING_ANSWER_DATE are specified, the latter + ! takes precedence. +PARTIAL_CELL_VELOCITY_REMAP = False ! [Boolean] default = False + ! If true, use partial cell thicknesses at velocity points that are masked out + ! where they extend below the shallower of the neighboring bathymetry for + ! remapping velocity. +REMAP_AFTER_INITIALIZATION = True ! [Boolean] default = True + ! If true, applies regridding and remapping immediately after initialization so + ! that the state is ALE consistent. This is a legacy step and should not be + ! needed if the initialization is consistent with the coordinate mode. +REGRID_TIME_SCALE = 0.0 ! [s] default = 0.0 + ! The time-scale used in blending between the current (old) grid and the target + ! (new) grid. A short time-scale favors the target grid (0. or anything less + ! than DT_THERM) has no memory of the old grid. A very long time-scale makes the + ! model more Lagrangian. +REGRID_FILTER_SHALLOW_DEPTH = 0.0 ! [m] default = 0.0 + ! The depth above which no time-filtering is applied. Above this depth final + ! grid exactly matches the target (new) grid. +REGRID_FILTER_DEEP_DEPTH = 0.0 ! [m] default = 0.0 + ! The depth below which full time-filtering is applied with time-scale + ! REGRID_TIME_SCALE. Between depths REGRID_FILTER_SHALLOW_DEPTH and + ! REGRID_FILTER_SHALLOW_DEPTH the filter weights adopt a cubic profile. +REMAP_VEL_MASK_BBL_THICK = -0.001 ! [m] default = -0.001 + ! A thickness of a bottom boundary layer below which velocities in thin layers + ! are zeroed out after remapping, following practice with Hybgen remapping, or a + ! negative value to avoid such filtering altogether. + +! === module MOM_state_initialization === +FATAL_INCONSISTENT_RESTART_TIME = False ! [Boolean] default = False + ! If true and a time_in value is provided to MOM_initialize_state, verify that + ! the time read from a restart file is the same as time_in, and issue a fatal + ! error if it is not. Otherwise, simply set the time to time_in if present. +INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False + ! If true, initialize the layer thicknesses, temperatures, and salinities from a + ! Z-space file on a latitude-longitude grid. + +! === module MOM_initialize_layers_from_Z === +TEMP_SALT_Z_INIT_FILE = "WOA_column.nc" ! default = "temp_salt_z.nc" + ! The name of the z-space input file used to initialize temperatures (T) and + ! salinities (S). If T and S are not in the same file, TEMP_Z_INIT_FILE and + ! SALT_Z_INIT_FILE must be set. +TEMP_Z_INIT_FILE = "WOA_column.nc" ! default = "WOA_column.nc" + ! The name of the z-space input file used to initialize temperatures, only. +SALT_Z_INIT_FILE = "WOA_column.nc" ! default = "WOA_column.nc" + ! The name of the z-space input file used to initialize temperatures, only. +Z_INIT_FILE_PTEMP_VAR = "PTEMP" ! default = "ptemp" + ! The name of the potential temperature variable in TEMP_Z_INIT_FILE. +Z_INIT_FILE_SALT_VAR = "SALT" ! default = "salt" + ! The name of the salinity variable in SALT_Z_INIT_FILE. +Z_INIT_HOMOGENIZE = True ! [Boolean] default = False + ! If True, then horizontally homogenize the interpolated initial conditions. +Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False + ! If True, then remap straight to model coordinate from file. +Z_INIT_REMAPPING_SCHEME = "PPM_IH4" ! default = "PPM_IH4" + ! The remapping scheme to use if using Z_INIT_ALE_REMAPPING is True. +Z_INIT_REMAP_GENERAL = False ! [Boolean] default = False + ! If false, only initializes to z* coordinates. If true, allows initialization + ! directly to general coordinates. +Z_INIT_REMAP_FULL_COLUMN = False ! [Boolean] default = False + ! If false, only reconstructs profiles for valid data points. If true, inserts + ! vanished layers below the valid data. +Z_INIT_REMAP_OLD_ALG = False ! [Boolean] default = False + ! If false, uses the preferred remapping algorithm for initialization. If true, + ! use an older, less robust algorithm for remapping. +TEMP_SALT_INIT_VERTICAL_REMAP_ONLY = False ! [Boolean] default = False + ! If true, initial conditions are on the model horizontal grid. Extrapolation + ! over missing ocean values is done using an ICE-9 procedure with vertical ALE + ! remapping . +HOR_REGRID_2018_ANSWERS = False ! [Boolean] default = False + ! If true, use the order of arithmetic for horizontal regridding that recovers + ! the answers from the end of 2018. Otherwise, use rotationally symmetric forms + ! of the same expressions. +HOR_REGRID_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic for horizontal regridding. Dates + ! before 20190101 give the same answers as the code did in late 2018, while + ! later versions add parentheses for rotational symmetry. Dates after 20230101 + ! use reproducing sums for global averages. If both HOR_REGRID_2018_ANSWERS and + ! HOR_REGRID_ANSWER_DATE are specified, the latter takes precedence. +LAND_FILL_TEMP = 0.0 ! [degC] default = 0.0 + ! A value to use to fill in ocean temperatures on land points. +LAND_FILL_SALIN = 35.0 ! [1e-3] default = 35.0 + ! A value to use to fill in ocean salinities on land points. +HORIZ_INTERP_TOL_TEMP = 0.001 ! [degC] default = 0.001 + ! The tolerance in temperature changes between iterations when interpolating + ! from an input dataset using horiz_interp_and_extrap_tracer. This routine + ! converges slowly, so an overly small tolerance can get expensive. +HORIZ_INTERP_TOL_SALIN = 0.001 ! [1e-3] default = 0.001 + ! The tolerance in salinity changes between iterations when interpolating from + ! an input dataset using horiz_interp_and_extrap_tracer. This routine converges + ! slowly, so an overly small tolerance can get expensive. +DEPRESS_INITIAL_SURFACE = False ! [Boolean] default = False + ! If true, depress the initial surface to avoid huge tsunamis when a large + ! surface pressure is applied. +TRIM_IC_FOR_P_SURF = False ! [Boolean] default = False + ! If true, cuts way the top of the column for initial conditions at the depth + ! where the hydrostatic pressure matches the imposed surface pressure which is + ! read from file. +VELOCITY_CONFIG = "zero" ! default = "zero" + ! A string that determines how the initial velocities are specified for a new + ! run: + ! file - read velocities from the file specified + ! by (VELOCITY_FILE). + ! zero - the fluid is initially at rest. + ! uniform - the flow is uniform (determined by + ! parameters INITIAL_U_CONST and INITIAL_V_CONST). + ! rossby_front - a mixed layer front in thermal wind balance. + ! soliton - Equatorial Rossby soliton. + ! USER - call a user modified routine. +CONVERT_THICKNESS_UNITS = False ! [Boolean] default = False + ! If true, convert the thickness initial conditions from units of m to kg m-2 + ! or vice versa, depending on whether BOUSSINESQ is defined. This does not apply + ! if a restart file is read. +REGRID_ACCELERATE_INIT = False ! [Boolean] default = False + ! If true, runs REGRID_ACCELERATE_ITERATIONS iterations of the regridding + ! algorithm to push the initial grid to be consistent with the initial + ! condition. Useful only for state-based and iterative coordinates. +ODA_INCUPD = False ! [Boolean] default = False + ! If true, oda incremental updates will be applied everywhere in the domain. +SPONGE = False ! [Boolean] default = False + ! If true, sponges may be applied anywhere in the domain. The exact location and + ! properties of those sponges are specified via SPONGE_CONFIG. + +! === module MOM_diag_mediator === +NUM_DIAG_COORDS = 1 ! default = 1 + ! The number of diagnostic vertical coordinates to use. For each coordinate, an + ! entry in DIAG_COORDS must be provided. +USE_GRID_SPACE_DIAGNOSTIC_AXES = False ! [Boolean] default = False + ! If true, use a grid index coordinate convention for diagnostic axes. +DIAG_COORDS = "scalar SCALAR SCALAR" ! default = "z Z ZSTAR" + ! A list of string tuples associating diag_table modules to a coordinate + ! definition used for diagnostics. Each string is of the form "MODULE_SUFFIX + ! PARAMETER_SUFFIX COORDINATE_NAME". +DIAG_MISVAL = 1.0E+20 ! [various] default = 1.0E+20 + ! Set the default missing value to use for diagnostics. +DIAG_AS_CHKSUM = False ! [Boolean] default = False + ! Instead of writing diagnostics to the diag manager, write a text file + ! containing the checksum (bitcount) of the array. +AVAILABLE_DIAGS_FILE = "available_diags.000000" ! default = "available_diags.000000" + ! A file into which to write a list of all available ocean diagnostics that can + ! be included in a diag_table. +INTERPOLATION_SCHEME = "P1M_H2" ! default = "PPM_H4" + ! This sets the interpolation scheme to use to determine the new grid. These + ! parameters are only relevant when REGRIDDING_COORDINATE_MODE is set to a + ! function of state. Otherwise, it is not used. It can be one of the following + ! schemes: + ! P1M_H2 (2nd-order accurate) + ! P1M_H4 (2nd-order accurate) + ! P1M_IH4 (2nd-order accurate) + ! PLM (2nd-order accurate) + ! PPM_CW (3rd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! P3M_IH4IH3 (4th-order accurate) + ! P3M_IH6IH5 (4th-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) +DIAG_COORD_DEF_SCALAR = "FILE:targetlayers_scalar.nc,interfaces=interfaces" ! default = "WOA09" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter DIAG_COORD_RES_SCALAR + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +DIAG_COORD_P_REF_SCALAR = 0.0 ! [Pa] default = 2.0E+07 + ! The pressure that is used for calculating the diagnostic coordinate density. + ! (1 Pa = 1e4 dbar, so 2e7 is commonly used.) This is only used for the RHO + ! coordinate. +DIAG_COORD_REGRID_COMPRESSIBILITY_FRACTION_SCALAR = 0.0 ! [nondim] default = 0.0 + ! When interpolating potential density profiles we can add some artificial + ! compressibility solely to make homogeneous regions appear stratified. +DIAG_COORD_NEEDS_SORTING_SCALAR = False ! [Boolean] default = False + ! Specifies whether the variable from which the coordinate is derived (e.g. + ! density) should be vertically sorted (to be monotonically increasing) prior to + ! regridding. The sorting is carried over to all remapped fields. + +! === module MOM_MEKE === +USE_MEKE = False ! [Boolean] default = False + ! If true, turns on the MEKE scheme which calculates a sub-grid mesoscale eddy + ! kinetic energy budget. + +! === module MOM_lateral_mixing_coeffs === +USE_VARIABLE_MIXING = False ! [Boolean] default = False + ! If true, the variable mixing code will be called. This allows diagnostics to + ! be created even if the scheme is not used. If KHTR_SLOPE_CFF>0 or + ! KhTh_Slope_Cff>0, this is set to true regardless of what is in the parameter + ! file. +USE_VISBECK = False ! [Boolean] default = False + ! If true, use the Visbeck et al. (1997) formulation for + ! thickness diffusivity. +RESOLN_SCALED_KH = False ! [Boolean] default = False + ! If true, the Laplacian lateral viscosity is scaled away when the first + ! baroclinic deformation radius is well resolved. +DEPTH_SCALED_KHTH = False ! [Boolean] default = False + ! If true, KHTH is scaled away when the depth is shallowerthan a reference + ! depth: KHTH = MIN(1,H/H0)**N * KHTH, where H0 is a reference depth, controlled + ! via DEPTH_SCALED_KHTH_H0, and the exponent (N) is controlled via + ! DEPTH_SCALED_KHTH_EXP. +RESOLN_SCALED_KHTH = False ! [Boolean] default = False + ! If true, the interface depth diffusivity is scaled away when the first + ! baroclinic deformation radius is well resolved. +RESOLN_SCALED_KHTR = False ! [Boolean] default = False + ! If true, the epipycnal tracer diffusivity is scaled away when the first + ! baroclinic deformation radius is well resolved. +RESOLN_USE_EBT = False ! [Boolean] default = False + ! If true, uses the equivalent barotropic wave speed instead of first baroclinic + ! wave for calculating the resolution fn. +KHTH_USE_EBT_STRUCT = False ! [Boolean] default = False + ! If true, uses the equivalent barotropic structure as the vertical structure of + ! thickness diffusivity. +KD_GL90_USE_EBT_STRUCT = False ! [Boolean] default = False + ! If true, uses the equivalent barotropic structure as the vertical structure of + ! diffusivity in the GL90 scheme. +KHTH_SLOPE_CFF = 0.0 ! [nondim] default = 0.0 + ! The nondimensional coefficient in the Visbeck formula for the interface depth + ! diffusivity +KHTR_SLOPE_CFF = 0.0 ! [nondim] default = 0.0 + ! The nondimensional coefficient in the Visbeck formula for the epipycnal tracer + ! diffusivity +USE_STORED_SLOPES = False ! [Boolean] default = False + ! If true, the isopycnal slopes are calculated once and stored for re-use. This + ! uses more memory but avoids calling the equation of state more times than + ! should be necessary. +VERY_SMALL_FREQUENCY = 1.0E-17 ! [s-1] default = 1.0E-17 + ! A miniscule frequency that is used to avoid division by 0. The default value + ! is roughly (pi / (the age of the universe)). +USE_STANLEY_ISO = False ! [Boolean] default = False + ! If true, turn on Stanley SGS T variance parameterization in isopycnal slope + ! code. +USE_QG_LEITH_GM = False ! [Boolean] default = False + ! If true, use the QG Leith viscosity as the GM coefficient. + +! === module MOM_set_visc === +SET_VISC_2018_ANSWERS = False ! [Boolean] default = False + ! If true, use the order of arithmetic and expressions that recover the answers + ! from the end of 2018. Otherwise, use updated and more robust forms of the + ! same expressions. +SET_VISC_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the set viscosity + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. + ! If both SET_VISC_2018_ANSWERS and SET_VISC_ANSWER_DATE are specified, the + ! latter takes precedence. +BOTTOMDRAGLAW = True ! [Boolean] default = True + ! If true, the bottom stress is calculated with a drag law of the form + ! c_drag*|u|*u. The velocity magnitude may be an assumed value or it may be + ! based on the actual velocity in the bottommost HBBL, depending on LINEAR_DRAG. +DRAG_AS_BODY_FORCE = False ! [Boolean] default = False + ! If true, the bottom stress is imposed as an explicit body force applied over a + ! fixed distance from the bottom, rather than as an implicit calculation based + ! on an enhanced near-bottom viscosity. The thickness of the bottom boundary + ! layer is HBBL. +CHANNEL_DRAG = False ! [Boolean] default = False + ! If true, the bottom drag is exerted directly on each layer proportional to the + ! fraction of the bottom it overlies. +LINEAR_DRAG = False ! [Boolean] default = False + ! If LINEAR_DRAG and BOTTOMDRAGLAW are defined the drag law is + ! cdrag*DRAG_BG_VEL*u. +PRANDTL_TURB = 1.0 ! [nondim] default = 1.0 + ! The turbulent Prandtl number applied to shear instability. +DYNAMIC_VISCOUS_ML = False ! [Boolean] default = False + ! If true, use a bulk Richardson number criterion to determine the mixed layer + ! thickness for viscosity. +OMEGA = 7.2921E-05 ! [s-1] default = 7.2921E-05 + ! The rotation rate of the earth. +HBBL = 10.0 ! [m] + ! The thickness of a bottom boundary layer with a viscosity increased by + ! KV_EXTRA_BBL if BOTTOMDRAGLAW is not defined, or the thickness over which + ! near-bottom velocities are averaged for the drag law if BOTTOMDRAGLAW is + ! defined but LINEAR_DRAG is not. +CDRAG = 0.0 ! [nondim] default = 0.003 + ! CDRAG is the drag coefficient relating the magnitude of the velocity field to + ! the bottom stress. CDRAG is only used if BOTTOMDRAGLAW is defined. +BBL_USE_TIDAL_BG = False ! [Boolean] default = False + ! Flag to use the tidal RMS amplitude in place of constant background velocity + ! for computing u* in the BBL. This flag is only used when BOTTOMDRAGLAW is true + ! and LINEAR_DRAG is false. +DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 + ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an + ! unresolved velocity that is combined with the resolved velocity to estimate + ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is + ! defined. +BBL_USE_EOS = True ! [Boolean] default = True + ! If true, use the equation of state in determining the properties of the bottom + ! boundary layer. Otherwise use the layer target potential densities. The + ! default of this parameter is the value of USE_EOS. +BBL_THICK_MIN = 0.1 ! [m] default = 0.0 + ! The minimum bottom boundary layer thickness that can be used with + ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum + ! near-bottom viscosity. +HTBL_SHELF_MIN = 0.1 ! [m] default = 0.1 + ! The minimum top boundary layer thickness that can be used with BOTTOMDRAGLAW. + ! This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum near-top + ! viscosity. +HTBL_SHELF = 10.0 ! [m] default = 10.0 + ! The thickness over which near-surface velocities are averaged for the drag law + ! under an ice shelf. By default this is the same as HBBL +KV = 1.0E-04 ! [m2 s-1] + ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 + ! m2 s-1, may be used. +KV_BBL_MIN = 1.0E-04 ! [m2 s-1] default = 1.0E-04 + ! The minimum viscosities in the bottom boundary layer. +KV_TBL_MIN = 1.0E-04 ! [m2 s-1] default = 1.0E-04 + ! The minimum viscosities in the top boundary layer. +CORRECT_BBL_BOUNDS = False ! [Boolean] default = False + ! If true, uses the correct bounds on the BBL thickness and viscosity so that + ! the bottom layer feels the intended drag. + +! === module MOM_thickness_diffuse === +KHTH = 0.0 ! [m2 s-1] default = 0.0 + ! The background horizontal thickness diffusivity. +READ_KHTH = False ! [Boolean] default = False + ! If true, read a file (given by KHTH_FILE) containing the spatially varying + ! horizontal isopycnal height diffusivity. +KHTH_MIN = 0.0 ! [m2 s-1] default = 0.0 + ! The minimum horizontal thickness diffusivity. +KHTH_MAX = 0.0 ! [m2 s-1] default = 0.0 + ! The maximum horizontal thickness diffusivity. +KHTH_MAX_CFL = 0.8 ! [nondimensional] default = 0.8 + ! The maximum value of the local diffusive CFL ratio that is permitted for the + ! thickness diffusivity. 1.0 is the marginally unstable value in a pure layered + ! model, but much smaller numbers (e.g. 0.1) seem to work better for ALE-based + ! models. +KH_ETA_CONST = 0.0 ! [m2 s-1] default = 0.0 + ! The background horizontal diffusivity of the interface heights (without + ! considering the layer density structure). If diffusive CFL limits are + ! encountered, the diffusivities of the isopycnals and the interfaces heights + ! are scaled back proportionately. +KH_ETA_VEL_SCALE = 0.0 ! [m s-1] default = 0.0 + ! A velocity scale that is multiplied by the grid spacing to give a contribution + ! to the horizontal diffusivity of the interface heights (without considering + ! the layer density structure). +DETANGLE_INTERFACES = False ! [Boolean] default = False + ! If defined add 3-d structured enhanced interface height diffusivities to + ! horizontally smooth jagged layers. +KHTH_SLOPE_MAX = 0.01 ! [nondim] default = 0.01 + ! A slope beyond which the calculated isopycnal slope is not reliable and is + ! scaled away. +KD_SMOOTH = 1.0E-06 ! [m2 s-1] default = 1.0E-06 + ! A diapycnal diffusivity that is used to interpolate more sensible values of T + ! & S into thin layers. +KHTH_USE_FGNV_STREAMFUNCTION = False ! [Boolean] default = False + ! If true, use the streamfunction formulation of Ferrari et al., 2010, which + ! effectively emphasizes graver vertical modes by smoothing in the vertical. +USE_STANLEY_GM = False ! [Boolean] default = False + ! If true, turn on Stanley SGS T variance parameterization in GM code. +MEKE_GM_SRC_ALT = False ! [Boolean] default = False + ! If true, use the GM energy conversion form S^2*N^2*kappa rather than the + ! streamfunction for the GM source term. +MEKE_GEOMETRIC = False ! [Boolean] default = False + ! If true, uses the GM coefficient formulation from the GEOMETRIC framework + ! (Marshall et al., 2012). +USE_KH_IN_MEKE = False ! [Boolean] default = False + ! If true, uses the thickness diffusivity calculated here to diffuse MEKE. +USE_GME = False ! [Boolean] default = False + ! If true, use the GM+E backscatter scheme in association with the Gent and + ! McWilliams parameterization. +USE_GM_WORK_BUG = False ! [Boolean] default = False + ! If true, compute the top-layer work tendency on the u-grid with the incorrect + ! sign, for legacy reproducibility. +STOCH_EOS = False ! [Boolean] default = False + ! If true, stochastic perturbations are applied to the EOS in the PGF. +STANLEY_COEFF = -1.0 ! [nondim] default = -1.0 + ! Coefficient correlating the temperature gradient and SGS T variance. + +! === module MOM_porous_barriers === +PORBAR_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the porous barrier weight function calculations. Values below + ! 20220806 recover the old answers in which the layer averaged weights are not + ! strictly limited by an upper-bound of 1.0 . +PORBAR_MASKING_DEPTH = 0.0 ! [m] default = 0.0 + ! If the effective average depth at the velocity cell is shallower than this + ! number, then porous barrier is not applied at that location. + ! PORBAR_MASKING_DEPTH is assumed to be positive below the sea surface. +PORBAR_ETA_INTERP = "MAX" ! default = "MAX" + ! A string describing the method that decides how the interface heights at the + ! velocity points are calculated. Valid values are: + ! MAX (the default) - maximum of the adjacent cells + ! MIN - minimum of the adjacent cells + ! ARITHMETIC - arithmetic mean of the adjacent cells + ! HARMONIC - harmonic mean of the adjacent cells + +! === module MOM_dynamics_unsplit === +FIX_UNSPLIT_DT_VISC_BUG = True ! [Boolean] default = True + ! If true, use the correct timestep in the viscous terms applied in the first + ! predictor step with the unsplit time stepping scheme, and in the calculation + ! of the turbulent mixed layer properties for viscosity with unsplit or + ! unsplit_RK2. +TIDES = False ! [Boolean] default = False + ! If true, apply tidal momentum forcing. + +! === module MOM_continuity === +CONTINUITY_SCHEME = "PPM" ! default = "PPM" + ! CONTINUITY_SCHEME selects the discretization for the continuity solver. The + ! only valid value currently is: + ! PPM - use a positive-definite (or monotonic) + ! piecewise parabolic reconstruction solver. + +! === module MOM_continuity_PPM === +MONOTONIC_CONTINUITY = False ! [Boolean] default = False + ! If true, CONTINUITY_PPM uses the Colella and Woodward monotonic limiter. The + ! default (false) is to use a simple positive definite limiter. +SIMPLE_2ND_PPM_CONTINUITY = False ! [Boolean] default = False + ! If true, CONTINUITY_PPM uses a simple 2nd order (arithmetic mean) + ! interpolation of the edge values. This may give better PV conservation + ! properties. While it formally reduces the accuracy of the continuity solver + ! itself in the strongly advective limit, it does not reduce the overall order + ! of accuracy of the dynamic core. +UPWIND_1ST_CONTINUITY = True ! [Boolean] default = False + ! If true, CONTINUITY_PPM becomes a 1st-order upwind continuity solver. This + ! scheme is highly diffusive but may be useful for debugging or in single-column + ! mode where its minimal stencil is useful. +ETA_TOLERANCE = 1.0E-06 ! [m] default = 3.75E-09 + ! The tolerance for the differences between the barotropic and baroclinic + ! estimates of the sea surface height due to the fluxes through each face. The + ! total tolerance for SSH is 4 times this value. The default is + ! 0.5*NK*ANGSTROM, and this should not be set less than about + ! 10^-15*MAXIMUM_DEPTH. +VELOCITY_TOLERANCE = 3.0E+08 ! [m s-1] default = 3.0E+08 + ! The tolerance for barotropic velocity discrepancies between the barotropic + ! solution and the sum of the layer thicknesses. +CONT_PPM_AGGRESS_ADJUST = False ! [Boolean] default = False + ! If true, allow the adjusted velocities to have a relative CFL change up to + ! 0.5. +CONT_PPM_VOLUME_BASED_CFL = False ! [Boolean] default = False + ! If true, use the ratio of the open face lengths to the tracer cell areas when + ! estimating CFL numbers. The default is set by CONT_PPM_AGGRESS_ADJUST. +CONTINUITY_CFL_LIMIT = 0.5 ! [nondim] default = 0.5 + ! The maximum CFL of the adjusted velocities. +CONT_PPM_BETTER_ITER = True ! [Boolean] default = True + ! If true, stop corrective iterations using a velocity based criterion and only + ! stop if the iteration is better than all predecessors. +CONT_PPM_USE_VISC_REM_MAX = True ! [Boolean] default = True + ! If true, use more appropriate limiting bounds for corrections in strongly + ! viscous columns. +CONT_PPM_MARGINAL_FACE_AREAS = True ! [Boolean] default = True + ! If true, use the marginal face areas from the continuity solver for use as the + ! weights in the barotropic solver. Otherwise use the transport averaged areas. + +! === module MOM_CoriolisAdv === +NOSLIP = False ! [Boolean] default = False + ! If true, no slip boundary conditions are used; otherwise free slip boundary + ! conditions are assumed. The implementation of the free slip BCs on a C-grid is + ! much cleaner than the no slip BCs. The use of free slip BCs is strongly + ! encouraged, and no slip BCs are not used with the biharmonic viscosity. +CORIOLIS_EN_DIS = True ! [Boolean] default = False + ! If true, two estimates of the thickness fluxes are used to estimate the + ! Coriolis term, and the one that dissipates energy relative to the other one is + ! used. +CORIOLIS_SCHEME = "SADOURNY75_ENERGY" ! default = "SADOURNY75_ENERGY" + ! CORIOLIS_SCHEME selects the discretization for the Coriolis terms. Valid + ! values are: + ! SADOURNY75_ENERGY - Sadourny, 1975; energy cons. + ! ARAKAWA_HSU90 - Arakawa & Hsu, 1990 + ! SADOURNY75_ENSTRO - Sadourny, 1975; enstrophy cons. + ! ARAKAWA_LAMB81 - Arakawa & Lamb, 1981; En. + Enst. + ! ARAKAWA_LAMB_BLEND - A blend of Arakawa & Lamb with + ! Arakawa & Hsu and Sadourny energy +BOUND_CORIOLIS = True ! [Boolean] default = False + ! If true, the Coriolis terms at u-points are bounded by the four estimates of + ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This + ! option is always effectively false with CORIOLIS_EN_DIS defined and + ! CORIOLIS_SCHEME set to SADOURNY75_ENERGY. +KE_SCHEME = "KE_ARAKAWA" ! default = "KE_ARAKAWA" + ! KE_SCHEME selects the discretization for acceleration due to the kinetic + ! energy gradient. Valid values are: + ! KE_ARAKAWA, KE_SIMPLE_GUDONOV, KE_GUDONOV +PV_ADV_SCHEME = "PV_ADV_CENTERED" ! default = "PV_ADV_CENTERED" + ! PV_ADV_SCHEME selects the discretization for PV advection. Valid values are: + ! PV_ADV_CENTERED - centered (aka Sadourny, 75) + ! PV_ADV_UPWIND1 - upwind, first order + +! === module MOM_PressureForce === +ANALYTIC_FV_PGF = True ! [Boolean] default = True + ! If true the pressure gradient forces are calculated with a finite volume form + ! that analytically integrates the equations of state in pressure to avoid any + ! possibility of numerical thermobaric instability, as described in Adcroft et + ! al., O. Mod. (2008). + +! === module MOM_PressureForce_FV === +MASS_WEIGHT_IN_PRESSURE_GRADIENT = False ! [Boolean] default = False + ! If true, use mass weighting when interpolating T/S for integrals near the + ! bathymetry in FV pressure gradient calculations. +USE_INACCURATE_PGF_RHO_ANOM = False ! [Boolean] default = False + ! If true, use a form of the PGF that uses the reference density in an + ! inaccurate way. This is not recommended. +RECONSTRUCT_FOR_PRESSURE = True ! [Boolean] default = True + ! If True, use vertical reconstruction of T & S within the integrals of the FV + ! pressure gradient calculation. If False, use the constant-by-layer algorithm. + ! The default is set by USE_REGRIDDING. +PRESSURE_RECONSTRUCTION_SCHEME = 1 ! default = 1 + ! Order of vertical reconstruction of T/S to use in the integrals within the FV + ! pressure gradient calculation. + ! 0: PCM or no reconstruction. + ! 1: PLM reconstruction. + ! 2: PPM reconstruction. +BOUNDARY_EXTRAPOLATION_PRESSURE = True ! [Boolean] default = True + ! If true, the reconstruction of T & S for pressure in boundary cells is + ! extrapolated, rather than using PCM in these cells. If true, the same order + ! polynomial is used as is used for the interior cells. +USE_STANLEY_PGF = False ! [Boolean] default = False + ! If true, turn on Stanley SGS T variance parameterization in PGF code. + +! === module MOM_hor_visc === +HOR_VISC_2018_ANSWERS = False ! [Boolean] default = False + ! If true, use the order of arithmetic and expressions that recover the answers + ! from the end of 2018. Otherwise, use updated and more robust forms of the + ! same expressions. +HOR_VISC_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the horizontal + ! viscosity calculations. Values below 20190101 recover the answers from the + ! end of 2018, while higher values use updated and more robust forms of the same + ! expressions. If both HOR_VISC_2018_ANSWERS and HOR_VISC_ANSWER_DATE are + ! specified, the latter takes precedence. +LAPLACIAN = False ! [Boolean] default = False + ! If true, use a Laplacian horizontal viscosity. +BIHARMONIC = False ! [Boolean] default = True + ! If true, use a biharmonic horizontal viscosity. BIHARMONIC may be used with + ! LAPLACIAN. +USE_LAND_MASK_FOR_HVISC = True ! [Boolean] default = True + ! If true, use the land mask for the computation of thicknesses at velocity + ! locations. This eliminates the dependence on arbitrary values over land or + ! outside of the domain. + +! === module MOM_vert_friction === +VERT_FRICTION_2018_ANSWERS = False ! [Boolean] default = False + ! If true, use the order of arithmetic and expressions that recover the answers + ! from the end of 2018. Otherwise, use expressions that do not use an arbitrary + ! hard-coded maximum viscous coupling coefficient between layers. +VERT_FRICTION_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the viscous + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use expressions that do not use an arbitrary hard-coded + ! maximum viscous coupling coefficient between layers. If both + ! VERT_FRICTION_2018_ANSWERS and VERT_FRICTION_ANSWER_DATE are specified, the + ! latter takes precedence. +DIRECT_STRESS = False ! [Boolean] default = False + ! If true, the wind stress is distributed over the topmost HMIX_STRESS of fluid + ! (like in HYCOM), and an added mixed layer viscosity or a physically based + ! boundary layer turbulence parameterization is not needed for stability. +FIXED_DEPTH_LOTW_ML = False ! [Boolean] default = False + ! If true, use a Law-of-the-wall prescription for the mixed layer viscosity + ! within a boundary layer that is the lesser of HMIX_FIXED and the total depth + ! of the ocean in a column. +LOTW_VISCOUS_ML_FLOOR = False ! [Boolean] default = False + ! If true, use a Law-of-the-wall prescription to set a lower bound on the + ! viscous coupling between layers within the surface boundary layer, based the + ! distance of interfaces from the surface. This only acts when there are large + ! changes in the thicknesses of successive layers or when the viscosity is set + ! externally and the wind stress has subsequently increased. +VON_KARMAN_CONST = 0.41 ! [nondim] default = 0.41 + ! The value the von Karman constant as used for mixed layer viscosity. +HARMONIC_VISC = True ! [Boolean] default = False + ! If true, use the harmonic mean thicknesses for calculating the vertical + ! viscosity. +HARMONIC_BL_SCALE = 0.0 ! [nondim] default = 0.0 + ! A scale to determine when water is in the boundary layers based solely on + ! harmonic mean thicknesses for the purpose of determining the extent to which + ! the thicknesses used in the viscosities are upwinded. +HMIX_FIXED = 0.01 ! [m] + ! The prescribed depth over which the near-surface viscosity and diffusivity are + ! elevated when the bulk mixed layer is not used. +USE_GL90_IN_SSW = False ! [Boolean] default = False + ! If true, use simpler method to calculate 1/N^2 in GL90 vertical viscosity + ! coefficient. This method is valid in stacked shallow water mode. +KV_ML_INVZ2 = 0.0 ! [m2 s-1] default = 0.0 + ! An extra kinematic viscosity in a mixed layer of thickness HMIX_FIXED, with + ! the actual viscosity scaling as 1/(z*HMIX_FIXED)^2, where z is the distance + ! from the surface, to allow for finite wind stresses to be transmitted through + ! infinitesimally thin surface layers. This is an older option for numerical + ! convenience without a strong physical basis, and its use is now discouraged. +MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 + ! The maximum velocity allowed before the velocity components are truncated. +CFL_BASED_TRUNCATIONS = True ! [Boolean] default = True + ! If true, base truncations on the CFL number, and not an absolute speed. +CFL_TRUNCATE = 0.5 ! [nondim] default = 0.5 + ! The value of the CFL number that will cause velocity components to be + ! truncated; instability can occur past 0.5. +CFL_REPORT = 0.5 ! [nondim] default = 0.5 + ! The value of the CFL number that causes accelerations to be reported; the + ! default is CFL_TRUNCATE. +CFL_TRUNCATE_RAMP_TIME = 0.0 ! [s] default = 0.0 + ! The time over which the CFL truncation value is ramped up at the beginning of + ! the run. +CFL_TRUNCATE_START = 0.0 ! [nondim] default = 0.0 + ! The start value of the truncation CFL number used when ramping up CFL_TRUNC. +STOKES_MIXING_COMBINED = False ! [Boolean] default = False + ! Flag to use Stokes drift Mixing via the Lagrangian current (Eulerian plus + ! Stokes drift). Still needs work and testing, so not recommended for use. +VEL_UNDERFLOW = 1.0E-30 ! [m s-1] default = 0.0 + ! A negligibly small velocity magnitude below which velocity components are set + ! to 0. A reasonable value might be 1e-30 m/s, which is less than an Angstrom + ! divided by the age of the universe. + +! === module MOM_mixed_layer_restrat === +MIXEDLAYER_RESTRAT = False ! [Boolean] default = False + ! If true, a density-gradient dependent re-stratifying flow is imposed in the + ! mixed layer. Can be used in ALE mode without restriction but in layer mode can + ! only be used if BULKMIXEDLAYER is true. + +! === module MOM_diagnostics === +DIAG_EBT_MONO_N2_COLUMN_FRACTION = 0.0 ! [nondim] default = 0.0 + ! The lower fraction of water column over which N2 is limited as monotonic for + ! the purposes of calculating the equivalent barotropic wave speed. +DIAG_EBT_MONO_N2_DEPTH = -1.0 ! [m] default = -1.0 + ! The depth below which N2 is limited as monotonic for the purposes of + ! calculating the equivalent barotropic wave speed. +INTERNAL_WAVE_SPEED_TOL = 0.001 ! [nondim] default = 0.001 + ! The fractional tolerance for finding the wave speeds. +INTERNAL_WAVE_SPEED_MIN = 0.0 ! [m s-1] default = 0.0 + ! A floor in the first mode speed below which 0 used instead. +INTERNAL_WAVE_SPEED_BETTER_EST = True ! [Boolean] default = True + ! If true, use a more robust estimate of the first mode wave speed as the + ! starting point for iterations. + +! === module MOM_diabatic_driver === +! The following parameters are used for diabatic processes. +USE_LEGACY_DIABATIC_DRIVER = True ! [Boolean] default = True + ! If true, use a legacy version of the diabatic subroutine. This is temporary + ! and is needed to avoid change in answers. +ENERGETICS_SFC_PBL = True ! [Boolean] default = False + ! If true, use an implied energetics planetary boundary layer scheme to + ! determine the diffusivity and viscosity in the surface boundary layer. +EPBL_IS_ADDITIVE = True ! [Boolean] default = True + ! If true, the diffusivity from ePBL is added to all other diffusivities. + ! Otherwise, the larger of kappa-shear and ePBL diffusivities are used. +PRANDTL_EPBL = 1.0 ! [nondim] default = 1.0 + ! The Prandtl number used by ePBL to convert vertical diffusivities into + ! viscosities. +INTERNAL_TIDES = False ! [Boolean] default = False + ! If true, use the code that advances a separate set of equations for the + ! internal tide energy density. +MASSLESS_MATCH_TARGETS = True ! [Boolean] default = True + ! If true, the temperature and salinity of massless layers are kept consistent + ! with their target densities. Otherwise the properties of massless layers + ! evolve diffusively to match massive neighboring layers. +AGGREGATE_FW_FORCING = True ! [Boolean] default = True + ! If true, the net incoming and outgoing fresh water fluxes are combined and + ! applied as either incoming or outgoing depending on the sign of the net. If + ! false, the net incoming fresh water flux is added to the model and thereafter + ! the net outgoing is removed from the topmost non-vanished layers of the + ! updated state. +MIX_BOUNDARY_TRACERS = True ! [Boolean] default = True + ! If true, mix the passive tracers in massless layers at the bottom into the + ! interior as though a diffusivity of KD_MIN_TR were operating. +MIX_BOUNDARY_TRACER_ALE = False ! [Boolean] default = False + ! If true and in ALE mode, mix the passive tracers in massless layers at the + ! bottom into the interior as though a diffusivity of KD_MIN_TR were operating. +KD_MIN_TR = 2.0E-06 ! [m2 s-1] default = 2.0E-06 + ! A minimal diffusivity that should always be applied to tracers, especially in + ! massless layers near the bottom. The default is 0.1*KD. +KD_BBL_TR = 0.0 ! [m2 s-1] default = 0.0 + ! A bottom boundary layer tracer diffusivity that will allow for explicitly + ! specified bottom fluxes. The entrainment at the bottom is at least + ! sqrt(Kd_BBL_tr*dt) over the same distance. +TRACER_TRIDIAG = False ! [Boolean] default = False + ! If true, use the passive tracer tridiagonal solver for T and S +MINIMUM_FORCING_DEPTH = 0.001 ! [m] default = 0.001 + ! The smallest depth over which forcing can be applied. This only takes effect + ! when near-surface layers become thin relative to this scale, in which case the + ! forcing tendencies scaled down by distributing the forcing over this depth + ! scale. +EVAP_CFL_LIMIT = 0.8 ! [nondim] default = 0.8 + ! The largest fraction of a layer than can be lost to forcing (e.g. evaporation, + ! sea-ice formation) in one time-step. The unused mass loss is passed down + ! through the column. +MLD_EN_VALS = 3*0.0 ! [J/m2] default = 0.0 + ! The energy values used to compute MLDs. If not set (or all set to 0.), the + ! default will overwrite to 25., 2500., 250000. +DIAG_MLD_DENSITY_DIFF = 0.1 ! [kg/m3] default = 0.1 + ! The density difference used to determine a diagnostic mixed layer depth, + ! MLD_user, following the definition of Levitus 1982. The MLD is the depth at + ! which the density is larger than the surface density by the specified amount. +DIAG_DEPTH_SUBML_N2 = 50.0 ! [m] default = 50.0 + ! The distance over which to calculate a diagnostic of the stratification at the + ! base of the mixed layer. + +! === module MOM_CVMix_KPP === +! This is the MOM wrapper to CVMix:KPP +! See http://cvmix.github.io/ +USE_KPP = True ! [Boolean] default = False + ! If true, turns on the [CVMix] KPP scheme of Large et al., 1994, to calculate + ! diffusivities and non-local transport in the OBL. +KPP% +PASSIVE = True ! [Boolean] default = False + ! If True, puts KPP into a passive-diagnostic mode. +APPLY_NONLOCAL_TRANSPORT = False ! [Boolean] default = False + ! If True, applies the non-local transport to all tracers. If False, calculates + ! the non-local transport and tendencies but purely for diagnostic purposes. +N_SMOOTH = 0 ! default = 0 + ! The number of times the 1-1-4-1-1 Laplacian filter is applied on OBL depth. +RI_CRIT = 0.3 ! [nondim] default = 0.3 + ! Critical bulk Richardson number used to define depth of the surface Ocean + ! Boundary Layer (OBL). +VON_KARMAN = 0.4 ! [nondim] default = 0.4 + ! von Karman constant. +ENHANCE_DIFFUSION = True ! [Boolean] default = True + ! If True, adds enhanced diffusion at the based of the boundary layer. +INTERP_TYPE = "quadratic" ! default = "quadratic" + ! Type of interpolation to determine the OBL depth. + ! Allowed types are: linear, quadratic, cubic. +INTERP_TYPE2 = "LMD94" ! default = "LMD94" + ! Type of interpolation to compute diff and visc at OBL_depth. + ! Allowed types are: linear, quadratic, cubic or LMD94. +COMPUTE_EKMAN = False ! [Boolean] default = False + ! If True, limit OBL depth to be no deeper than Ekman depth. +COMPUTE_MONIN_OBUKHOV = False ! [Boolean] default = False + ! If True, limit the OBL depth to be no deeper than Monin-Obukhov depth. +CS = 98.96 ! [nondim] default = 98.96 + ! Parameter for computing velocity scale function. +CS2 = 6.32739901508 ! [nondim] default = 6.32739901508 + ! Parameter for computing non-local term. +DEEP_OBL_OFFSET = 0.0 ! [m] default = 0.0 + ! If non-zero, the distance above the bottom to which the OBL is clipped if it + ! would otherwise reach the bottom. The smaller of this and 0.1D is used. +FIXED_OBLDEPTH = False ! [Boolean] default = False + ! If True, fix the OBL depth to FIXED_OBLDEPTH_VALUE rather than using the OBL + ! depth from CVMix. This option is just for testing purposes. +FIXED_OBLDEPTH_VALUE = 30.0 ! [m] default = 30.0 + ! Value for the fixed OBL depth when fixedOBLdepth==True. This parameter is for + ! just for testing purposes. It will over-ride the OBLdepth computed from CVMix. +SURF_LAYER_EXTENT = 0.1 ! [nondim] default = 0.1 + ! Fraction of OBL depth considered in the surface layer. +MINIMUM_OBL_DEPTH = 0.0 ! [m] default = 0.0 + ! If non-zero, a minimum depth to use for KPP OBL depth. Independent of this + ! parameter, the OBL depth is always at least as deep as the first layer. +MINIMUM_VT2 = 1.0E-10 ! [m2/s2] default = 1.0E-10 + ! Min of the unresolved velocity Vt2 used in Rib CVMix calculation. + ! Scaling: MINIMUM_VT2 = const1*d*N*ws, with d=1m, N=1e-5/s, ws=1e-6 m/s. +NLT_SHAPE = "CVMix" ! default = "CVMix" + ! MOM6 method to set nonlocal transport profile. Over-rides the result from + ! CVMix. Allowed values are: + ! CVMix - Uses the profiles from CVMix specified by MATCH_TECHNIQUE + ! LINEAR - A linear profile, 1-sigma + ! PARABOLIC - A parablic profile, (1-sigma)^2 + ! CUBIC - A cubic profile, (1-sigma)^2(1+2*sigma) + ! CUBIC_LMD - The original KPP profile +MATCH_TECHNIQUE = "SimpleShapes" ! default = "SimpleShapes" + ! CVMix method to set profile function for diffusivity and NLT, as well as + ! matching across OBL base. Allowed values are: + ! SimpleShapes = sigma*(1-sigma)^2 for both diffusivity and NLT + ! MatchGradient = sigma*(1-sigma)^2 for NLT; diffusivity profile from + ! matching + ! MatchBoth = match gradient for both diffusivity and NLT + ! ParabolicNonLocal = sigma*(1-sigma)^2 for diffusivity; (1-sigma)^2 for NLT +KPP_ZERO_DIFFUSIVITY = False ! [Boolean] default = False + ! If True, zeroes the KPP diffusivity and viscosity; for testing purpose. +KPP_IS_ADDITIVE = True ! [Boolean] default = True + ! If true, adds KPP diffusivity to diffusivity from other schemes. + ! If false, KPP is the only diffusivity wherever KPP is non-zero. +KPP_SHORTWAVE_METHOD = "MXL_SW" ! default = "MXL_SW" + ! Determines contribution of shortwave radiation to KPP surface buoyancy flux. + ! Options include: + ! ALL_SW: use total shortwave radiation + ! MXL_SW: use shortwave radiation absorbed by mixing layer + ! LV1_SW: use shortwave radiation absorbed by top model layer +CVMix_ZERO_H_WORK_AROUND = 0.0 ! [m] default = 0.0 + ! A minimum thickness used to avoid division by small numbers in the vicinity of + ! vanished layers. This is independent of MIN_THICKNESS used in other parts of + ! MOM. +USE_KPP_LT_K = False ! [Boolean] default = False + ! Flag for Langmuir turbulence enhancement of turbulentmixing coefficient. +STOKES_MIXING = False ! [Boolean] default = False + ! Flag for Langmuir turbulence enhancement of turbulentmixing coefficient. +USE_KPP_LT_VT2 = False ! [Boolean] default = False + ! Flag for Langmuir turbulence enhancement of Vt2in Bulk Richardson Number. +%KPP + +! === module MOM_CVMix_conv === +! Parameterization of enhanced mixing due to convection via CVMix +USE_CVMix_CONVECTION = False ! [Boolean] default = False + ! If true, turns on the enhanced mixing due to convection via CVMix. This scheme + ! increases diapycnal diffs./viscs. at statically unstable interfaces. Relevant + ! parameters are contained in the CVMix_CONVECTION% parameter block. + +! === module MOM_set_diffusivity === +FLUX_RI_MAX = 0.2 ! [nondim] default = 0.2 + ! The flux Richardson number where the stratification is large enough that N2 > + ! omega2. The full expression for the Flux Richardson number is usually + ! FLUX_RI_MAX*N2/(N2+OMEGA2). +SET_DIFF_2018_ANSWERS = False ! [Boolean] default = False + ! If true, use the order of arithmetic and expressions that recover the answers + ! from the end of 2018. Otherwise, use updated and more robust forms of the + ! same expressions. +SET_DIFF_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the set diffusivity + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. + ! If both SET_DIFF_2018_ANSWERS and SET_DIFF_ANSWER_DATE are specified, the + ! latter takes precedence. + +! === module MOM_tidal_mixing === +! Vertical Tidal Mixing Parameterization +USE_CVMix_TIDAL = False ! [Boolean] default = False + ! If true, turns on tidal mixing via CVMix +INT_TIDE_DISSIPATION = False ! [Boolean] default = False + ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, + ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). +ML_RADIATION = True ! [Boolean] default = False + ! If true, allow a fraction of TKE available from wind work to penetrate below + ! the base of the mixed layer with a vertical decay scale determined by the + ! minimum of: (1) The depth of the mixed layer, (2) an Ekman length scale. +ML_RAD_EFOLD_COEFF = 0.2 ! [nondim] default = 0.2 + ! A coefficient that is used to scale the penetration depth for turbulence below + ! the base of the mixed layer. This is only used if ML_RADIATION is true. +ML_RAD_BUG = False ! [Boolean] default = False + ! If true use code with a bug that reduces the energy available in the + ! transition layer by a factor of the inverse of the energy deposition + ! lenthscale (in m). +ML_RAD_KD_MAX = 0.001 ! [m2 s-1] default = 0.001 + ! The maximum diapycnal diffusivity due to turbulence radiated from the base of + ! the mixed layer. This is only used if ML_RADIATION is true. +ML_RAD_COEFF = 0.2 ! [nondim] default = 0.2 + ! The coefficient which scales MSTAR*USTAR^3 to obtain the energy available for + ! mixing below the base of the mixed layer. This is only used if ML_RADIATION is + ! true. +ML_RAD_APPLY_TKE_DECAY = True ! [Boolean] default = True + ! If true, apply the same exponential decay to ML_rad as is applied to the other + ! surface sources of TKE in the mixed layer code. This is only used if + ! ML_RADIATION is true. +MSTAR = 1.2 ! [nondim] default = 1.2 + ! The ratio of the friction velocity cubed to the TKE input to the mixed layer. +TKE_DECAY = 10.0 ! [nondim] default = 2.5 + ! The ratio of the natural Ekman depth to the TKE decay scale. +ML_OMEGA_FRAC = 1.0 ! [nondim] default = 0.0 + ! When setting the decay scale for turbulence, use this fraction of the absolute + ! rotation rate blended with the local value of f, as sqrt((1-of)*f^2 + + ! of*4*omega^2). +BBL_EFFIC = 0.2 ! [nondim] default = 0.2 + ! The efficiency with which the energy extracted by bottom drag drives BBL + ! diffusion. This is only used if BOTTOMDRAGLAW is true. +BBL_MIXING_MAX_DECAY = 200.0 ! [m] default = 200.0 + ! The maximum decay scale for the BBL diffusion, or 0 to allow the mixing to + ! penetrate as far as stratification and rotation permit. The default for now + ! is 200 m. This is only used if BOTTOMDRAGLAW is true. +BBL_MIXING_AS_MAX = True ! [Boolean] default = True + ! If true, take the maximum of the diffusivity from the BBL mixing and the other + ! diffusivities. Otherwise, diffusivity from the BBL_mixing is simply added. +USE_LOTW_BBL_DIFFUSIVITY = False ! [Boolean] default = False + ! If true, uses a simple, imprecise but non-coordinate dependent, model of BBL + ! mixing diffusivity based on Law of the Wall. Otherwise, uses the original BBL + ! scheme. +SIMPLE_TKE_TO_KD = False ! [Boolean] default = False + ! If true, uses a simple estimate of Kd/TKE that will work for arbitrary + ! vertical coordinates. If false, calculates Kd/TKE and bounds based on exact + ! energetics for an isopycnal layer-formulation. + +! === module MOM_bkgnd_mixing === +! Adding static vertical background mixing coefficients +KD = 2.0E-05 ! [m2 s-1] default = 0.0 + ! The background diapycnal diffusivity of density in the interior. Zero or the + ! molecular value, ~1e-7 m2 s-1, may be used. +KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 + ! The minimum diapycnal diffusivity. +BRYAN_LEWIS_DIFFUSIVITY = False ! [Boolean] default = False + ! If true, use a Bryan & Lewis (JGR 1979) like tanh profile of background + ! diapycnal diffusivity with depth. This is done via CVMix. +HORIZ_VARYING_BACKGROUND = False ! [Boolean] default = False + ! If true, apply vertically uniform, latitude-dependent background diffusivity, + ! as described in Danabasoglu et al., 2012 +PRANDTL_BKGND = 1.0 ! [nondim] default = 1.0 + ! Turbulent Prandtl number used to convert vertical background diffusivities + ! into viscosities. +HENYEY_IGW_BACKGROUND = False ! [Boolean] default = False + ! If true, use a latitude-dependent scaling for the near surface background + ! diffusivity, as described in Harrison & Hallberg, JPO 2008. +KD_TANH_LAT_FN = False ! [Boolean] default = False + ! If true, use a tanh dependence of Kd_sfc on latitude, like CM2.1/CM2M. There + ! is no physical justification for this form, and it can not be used with + ! HENYEY_IGW_BACKGROUND. +KD_MAX = -1.0 ! [m2 s-1] default = -1.0 + ! The maximum permitted increment for the diapycnal diffusivity from TKE-based + ! parameterizations, or a negative value for no limit. +KD_ADD = 0.0 ! [m2 s-1] default = 0.0 + ! A uniform diapycnal diffusivity that is added everywhere without any filtering + ! or scaling. +USER_CHANGE_DIFFUSIVITY = False ! [Boolean] default = False + ! If true, call user-defined code to change the diffusivity. +DISSIPATION_MIN = 0.0 ! [W m-3] default = 0.0 + ! The minimum dissipation by which to determine a lower bound of Kd (a floor). +DISSIPATION_N0 = 0.0 ! [W m-3] default = 0.0 + ! The intercept when N=0 of the N-dependent expression used to set a minimum + ! dissipation by which to determine a lower bound of Kd (a floor): A in eps_min + ! = A + B*N. +DISSIPATION_N1 = 0.0 ! [J m-3] default = 0.0 + ! The coefficient multiplying N, following Gargett, used to set a minimum + ! dissipation by which to determine a lower bound of Kd (a floor): B in eps_min + ! = A + B*N +DISSIPATION_KD_MIN = 0.0 ! [m2 s-1] default = 0.0 + ! The minimum vertical diffusivity applied as a floor. +DOUBLE_DIFFUSION = False ! [Boolean] default = False + ! If true, increase diffusivites for temperature or salinity based on the + ! double-diffusive parameterization described in Large et al. (1994). + +! === module MOM_kappa_shear === +! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 +USE_JACKSON_PARAM = True ! [Boolean] default = False + ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing + ! parameterization. +VERTEX_SHEAR = False ! [Boolean] default = False + ! If true, do the calculations of the shear-driven mixing at the cell vertices + ! (i.e., the vorticity points). +RINO_CRIT = 0.25 ! [nondim] default = 0.25 + ! The critical Richardson number for shear mixing. +SHEARMIX_RATE = 0.089 ! [nondim] default = 0.089 + ! A nondimensional rate scale for shear-driven entrainment. Jackson et al find + ! values in the range of 0.085-0.089. +MAX_RINO_IT = 25 ! [nondim] default = 50 + ! The maximum number of iterations that may be used to estimate the Richardson + ! number driven mixing. +KD_KAPPA_SHEAR_0 = 2.0E-05 ! [m2 s-1] default = 2.0E-05 + ! The background diffusivity that is used to smooth the density and shear + ! profiles before solving for the diffusivities. The default is the greater of + ! KD and 1e-7 m2 s-1. +KD_SEED_KAPPA_SHEAR = 1.0 ! [m2 s-1] default = 1.0 + ! A moderately large seed value of diapycnal diffusivity that is used as a + ! starting turbulent diffusivity in the iterations to find an energetically + ! constrained solution for the shear-driven diffusivity. +KD_TRUNC_KAPPA_SHEAR = 2.0E-07 ! [m2 s-1] default = 2.0E-07 + ! The value of shear-driven diffusivity that is considered negligible and is + ! rounded down to 0. The default is 1% of KD_KAPPA_SHEAR_0. +FRI_CURVATURE = -0.97 ! [nondim] default = -0.97 + ! The nondimensional curvature of the function of the Richardson number in the + ! kappa source term in the Jackson et al. scheme. +TKE_N_DECAY_CONST = 0.24 ! [nondim] default = 0.24 + ! The coefficient for the decay of TKE due to stratification (i.e. proportional + ! to N*tke). The values found by Jackson et al. are 0.24-0.28. +TKE_SHEAR_DECAY_CONST = 0.14 ! [nondim] default = 0.14 + ! The coefficient for the decay of TKE due to shear (i.e. proportional to + ! |S|*tke). The values found by Jackson et al. are 0.14-0.12. +KAPPA_BUOY_SCALE_COEF = 0.82 ! [nondim] default = 0.82 + ! The coefficient for the buoyancy length scale in the kappa equation. The + ! values found by Jackson et al. are in the range of 0.81-0.86. +KAPPA_N_OVER_S_SCALE_COEF2 = 0.0 ! [nondim] default = 0.0 + ! The square of the ratio of the coefficients of the buoyancy and shear scales + ! in the diffusivity equation, Set this to 0 (the default) to eliminate the + ! shear scale. This is only used if USE_JACKSON_PARAM is true. +KAPPA_SHEAR_TOL_ERR = 0.1 ! [nondim] default = 0.1 + ! The fractional error in kappa that is tolerated. Iteration stops when changes + ! between subsequent iterations are smaller than this everywhere in a column. + ! The peak diffusivities usually converge most rapidly, and have much smaller + ! errors than this. +TKE_BACKGROUND = 0.0 ! [m2 s-2] default = 0.0 + ! A background level of TKE used in the first iteration of the kappa equation. + ! TKE_BACKGROUND could be 0. +KAPPA_SHEAR_ELIM_MASSLESS = True ! [Boolean] default = True + ! If true, massless layers are merged with neighboring massive layers in this + ! calculation. The default is true and I can think of no good reason why it + ! should be false. This is only used if USE_JACKSON_PARAM is true. +MAX_KAPPA_SHEAR_IT = 13 ! default = 13 + ! The maximum number of iterations that may be used to estimate the + ! time-averaged diffusivity. +KAPPA_SHEAR_MAX_KAP_SRC_CHG = 10.0 ! [nondim] default = 10.0 + ! The maximum permitted increase in the kappa source within an iteration + ! relative to the local source; this must be greater than 1. The lower limit + ! for the permitted fractional decrease is (1 - 0.5/kappa_src_max_chg). These + ! limits could perhaps be made dynamic with an improved iterative solver. +KAPPA_SHEAR_ITER_BUG = False ! [Boolean] default = False + ! If true, use an older, dimensionally inconsistent estimate of the derivative + ! of diffusivity with energy in the Newton's method iteration. The bug causes + ! undercorrections when dz > 1 m. +KAPPA_SHEAR_ALL_LAYER_TKE_BUG = False ! [Boolean] default = False + ! If true, report back the latest estimate of TKE instead of the time average + ! TKE when there is mass in all layers. Otherwise always report the time + ! averaged TKE, as is currently done when there are some massless layers. +USE_RESTRICTIVE_TOLERANCE_CHECK = False ! [Boolean] default = False + ! If true, uses the more restrictive tolerance check to determine if a timestep + ! is acceptable for the KS_it outer iteration loop. False uses the original + ! less restrictive check. + +! === module MOM_CVMix_shear === +! Parameterization of shear-driven turbulence via CVMix (various options) +USE_LMD94 = False ! [Boolean] default = False + ! If true, use the Large-McWilliams-Doney (JGR 1994) shear mixing + ! parameterization. +USE_PP81 = False ! [Boolean] default = False + ! If true, use the Pacanowski and Philander (JPO 1981) shear mixing + ! parameterization. + +! === module MOM_CVMix_ddiff === +! Parameterization of mixing due to double diffusion processes via CVMix +USE_CVMIX_DDIFF = False ! [Boolean] default = False + ! If true, turns on double diffusive processes via CVMix. Note that double + ! diffusive processes on viscosity are ignored in CVMix, see + ! http://cvmix.github.io/ for justification. + +! === module MOM_diabatic_aux === +! The following parameters are used for auxiliary diabatic processes. +RECLAIM_FRAZIL = False ! [Boolean] default = True + ! If true, try to use any frazil heat deficit to cool any overlying layers down + ! to the freezing point, thereby avoiding the creation of thin ice when the SST + ! is above the freezing point. +SALT_EXTRACTION_LIMIT = 0.9999 ! [nondim] default = 0.9999 + ! An upper limit on the fraction of the salt in a layer that can be lost to the + ! net surface salt fluxes within a timestep. +PRESSURE_DEPENDENT_FRAZIL = False ! [Boolean] default = False + ! If true, use a pressure dependent freezing temperature when making frazil. The + ! default is false, which will be faster but is inappropriate with ice-shelf + ! cavities. +IGNORE_FLUXES_OVER_LAND = False ! [Boolean] default = False + ! If true, the model does not check if fluxes are being applied over land + ! points. This is needed when the ocean is coupled with ice shelves and sea ice, + ! since the sea ice mask needs to be different than the ocean mask to avoid sea + ! ice formation under ice shelves. This flag only works when use_ePBL = True. +DO_RIVERMIX = False ! [Boolean] default = False + ! If true, apply additional mixing wherever there is runoff, so that it is mixed + ! down to RIVERMIX_DEPTH if the ocean is that deep. +USE_RIVER_HEAT_CONTENT = False ! [Boolean] default = False + ! If true, use the fluxes%runoff_Hflx field to set the heat carried by runoff, + ! instead of using SST*CP*liq_runoff. +USE_CALVING_HEAT_CONTENT = False ! [Boolean] default = False + ! If true, use the fluxes%calving_Hflx field to set the heat carried by runoff, + ! instead of using SST*CP*froz_runoff. +VAR_PEN_SW = True ! [Boolean] default = False + ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine + ! the e-folding depth of incoming short wave radiation. +CHL_FROM_FILE = True ! [Boolean] default = True + ! If true, chl_a is read from a file. +CHL_FILE = "forcing_monthly.nc" ! + ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It + ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. +CHL_VARNAME = "CHL_A" ! default = "CHL_A" + ! Name of CHL_A variable in CHL_FILE. + +! === module MOM_energetic_PBL === +EKMAN_SCALE_COEF = 1.0 ! [nondim] default = 1.0 + ! A nondimensional scaling factor controlling the inhibition of the diffusive + ! length scale by rotation. Making this larger decreases the PBL diffusivity. +EPBL_2018_ANSWERS = False ! [Boolean] default = False + ! If true, use the order of arithmetic and expressions that recover the answers + ! from the end of 2018. Otherwise, use updated and more robust forms of the + ! same expressions. +EPBL_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the energetic PBL + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. + ! If both EPBL_2018_ANSWERS and EPBL_ANSWER_DATE are specified, the latter takes + ! precedence. +EPBL_ORIGINAL_PE_CALC = True ! [Boolean] default = True + ! If true, the ePBL code uses the original form of the potential energy change + ! code. Otherwise, the newer version that can work with successive increments + ! to the diffusivity in upward or downward passes is used. +MKE_TO_TKE_EFFIC = 0.0 ! [nondim] default = 0.0 + ! The efficiency with which mean kinetic energy released by mechanically forced + ! entrainment of the mixed layer is converted to turbulent kinetic energy. +EPBL_MSTAR_SCHEME = "CONSTANT" ! default = "CONSTANT" + ! EPBL_MSTAR_SCHEME selects the method for setting mstar. Valid values are: + ! CONSTANT - Use a fixed mstar given by MSTAR + ! OM4 - Use L_Ekman/L_Obukhov in the stabilizing limit, as in OM4 + ! REICHL_H18 - Use the scheme documented in Reichl & Hallberg, 2018. +NSTAR = 0.2 ! [nondim] default = 0.2 + ! The portion of the buoyant potential energy imparted by surface fluxes that is + ! available to drive entrainment at the base of mixed layer when that energy is + ! positive. +MSTAR_CONV_ADJ = 0.0 ! [nondim] default = 0.0 + ! Coefficient used for reducing mstar during convection due to reduction of + ! stable density gradient. +USE_MLD_ITERATION = False ! [Boolean] default = True + ! A logical that specifies whether or not to use the distance to the bottom of + ! the actively turbulent boundary layer to help set the EPBL length scale. +EPBL_TRANSITION_SCALE = 0.1 ! [nondim] default = 0.1 + ! A scale for the mixing length in the transition layer at the edge of the + ! boundary layer as a fraction of the boundary layer thickness. +EPBL_MIN_MIX_LEN = 0.0 ! [meter] default = 0.0 + ! The minimum mixing length scale that will be used by ePBL. The default (0) + ! does not set a minimum. +MIX_LEN_EXPONENT = 2.0 ! [nondim] default = 2.0 + ! The exponent applied to the ratio of the distance to the MLD and the MLD depth + ! which determines the shape of the mixing length. This is only used if + ! USE_MLD_ITERATION is True. +EPBL_VEL_SCALE_SCHEME = "CUBE_ROOT_TKE" ! default = "CUBE_ROOT_TKE" + ! Selects the method for translating TKE into turbulent velocities. Valid values + ! are: + ! CUBE_ROOT_TKE - A constant times the cube root of remaining TKE. + ! REICHL_H18 - Use the scheme based on a combination of w* and v* as + ! documented in Reichl & Hallberg, 2018. +WSTAR_USTAR_COEF = 1.0 ! [nondim] default = 1.0 + ! A ratio relating the efficiency with which convectively released energy is + ! converted to a turbulent velocity, relative to mechanically forced TKE. Making + ! this larger increases the BL diffusivity +EPBL_VEL_SCALE_FACTOR = 1.0 ! [nondim] default = 1.0 + ! An overall nondimensional scaling factor for wT. Making this larger increases + ! the PBL diffusivity. +VSTAR_SURF_FAC = 1.2 ! [nondim] default = 1.2 + ! The proportionality times ustar to set vstar at the surface. +USE_LA_LI2016 = False ! [Boolean] default = False + ! A logical to use the Li et al. 2016 (submitted) formula to determine the + ! Langmuir number. +EPBL_LT = False ! [Boolean] default = False + ! A logical to use a LT parameterization. +!EPBL_USTAR_MIN = 1.45842E-18 ! [m s-1] + ! The (tiny) minimum friction velocity used within the ePBL code, derived from + ! OMEGA and ANGSTROM. + +! === module MOM_regularize_layers === +REGULARIZE_SURFACE_LAYERS = False ! [Boolean] default = False + ! If defined, vertically restructure the near-surface layers when they have too + ! much lateral variations to allow for sensible lateral barotropic transports. + +! === module MOM_opacity === +OPACITY_SCHEME = "MANIZZA_05" ! default = "MANIZZA_05" + ! This character string specifies how chlorophyll concentrations are translated + ! into opacities. Currently valid options include: + ! MANIZZA_05 - Use Manizza et al., GRL, 2005. + ! MOREL_88 - Use Morel, JGR, 1988. +BLUE_FRAC_SW = 0.5 ! [nondim] default = 0.5 + ! The fraction of the penetrating shortwave radiation that is in the blue band. +PEN_SW_NBANDS = 3 ! default = 1 + ! The number of bands of penetrating shortwave radiation. +OPTICS_2018_ANSWERS = False ! [Boolean] default = False + ! If true, use the order of arithmetic and expressions that recover the answers + ! from the end of 2018. Otherwise, use updated expressions for handling the + ! absorption of small remaining shortwave fluxes. +OPTICS_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the optics + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. + ! If both OPTICS_2018_ANSWERS and OPTICS_ANSWER_DATE are specified, the latter + ! takes precedence. +PEN_SW_FLUX_ABSORB = 2.5E-11 ! [degC m s-1] default = 2.5E-11 + ! A minimum remaining shortwave heating rate that will be simply absorbed in the + ! next sufficiently thick layers for computational efficiency, instead of + ! continuing to penetrate. The default, 2.5e-11 degC m s-1, is about 1e-4 W m-2 + ! or 0.08 degC m century-1, but 0 is also a valid value. +PEN_SW_ABSORB_MINTHICK = 1.0 ! [m] default = 1.0 + ! A thickness that is used to absorb the remaining penetrating shortwave heat + ! flux when it drops below PEN_SW_FLUX_ABSORB. +OPACITY_LAND_VALUE = 10.0 ! [m-1] default = 10.0 + ! The value to use for opacity over land. The default is 10 m-1 - a value for + ! muddy water. + +! === module MOM_tracer_advect === +TRACER_ADVECTION_SCHEME = "PLM" ! default = "PLM" + ! The horizontal transport scheme for tracers: + ! PLM - Piecewise Linear Method + ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) + ! PPM - Piecewise Parabolic Method (Colella-Woodward) + +! === module MOM_tracer_hor_diff === +KHTR = 600.0 ! [m2 s-1] default = 0.0 + ! The background along-isopycnal tracer diffusivity. +KHTR_MIN = 0.0 ! [m2 s-1] default = 0.0 + ! The minimum along-isopycnal tracer diffusivity. +KHTR_MAX = 0.0 ! [m2 s-1] default = 0.0 + ! The maximum along-isopycnal tracer diffusivity. +KHTR_PASSIVITY_COEFF = 0.0 ! [nondim] default = 0.0 + ! The coefficient that scales deformation radius over grid-spacing in passivity, + ! where passivity is the ratio between along isopycnal mixing of tracers to + ! thickness mixing. A non-zero value enables this parameterization. +KHTR_PASSIVITY_MIN = 0.5 ! [nondim] default = 0.5 + ! The minimum passivity which is the ratio between along isopycnal mixing of + ! tracers to thickness mixing. +DIFFUSE_ML_TO_INTERIOR = False ! [Boolean] default = False + ! If true, enable epipycnal mixing between the surface boundary layer and the + ! interior. +CHECK_DIFFUSIVE_CFL = False ! [Boolean] default = False + ! If true, use enough iterations the diffusion to ensure that the diffusive + ! equivalent of the CFL limit is not violated. If false, always use the greater + ! of 1 or MAX_TR_DIFFUSION_CFL iteration. +MAX_TR_DIFFUSION_CFL = -1.0 ! [nondim] default = -1.0 + ! If positive, locally limit the along-isopycnal tracer diffusivity to keep the + ! diffusive CFL locally at or below this value. The number of diffusive + ! iterations is often this value or the next greater integer. +RECALC_NEUTRAL_SURF = False ! [Boolean] default = False + ! If true, then recalculate the neutral surfaces if the + ! diffusive CFL is exceeded. If false, assume that the + ! positions of the surfaces do not change + +! === module MOM_neutral_diffusion === +! This module implements neutral diffusion of tracers +USE_NEUTRAL_DIFFUSION = False ! [Boolean] default = False + ! If true, enables the neutral diffusion module. + +! === module MOM_lateral_boundary_diffusion === +! This module implements lateral diffusion of tracers near boundaries +USE_LATERAL_BOUNDARY_DIFFUSION = False ! [Boolean] default = False + ! If true, enables the lateral boundary tracer's diffusion module. +OBSOLETE_DIAGNOSTIC_IS_FATAL = True ! [Boolean] default = True + ! If an obsolete diagnostic variable appears in the diag_table, cause a FATAL + ! error rather than issue a WARNING. + +! === module MOM_sum_output === +CALCULATE_APE = True ! [Boolean] default = True + ! If true, calculate the available potential energy of the interfaces. Setting + ! this to false reduces the memory footprint of high-PE-count models + ! dramatically. +WRITE_STOCKS = True ! [Boolean] default = True + ! If true, write the integrated tracer amounts to stdout when the energy files + ! are written. +MAXTRUNC = 5000 ! [truncations save_interval-1] default = 0 + ! The run will be stopped, and the day set to a very large value if the velocity + ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 + ! to stop if there is any truncation of velocities. +MAX_ENERGY = 0.0 ! [m2 s-2] default = 0.0 + ! The maximum permitted average energy per unit mass; the model will be stopped + ! if there is more energy than this. If zero or negative, this is set to + ! 10*MAXVEL^2. +ENERGYFILE = "ocean.stats" ! default = "ocean.stats" + ! The file to use to write the energies and globally summed diagnostics. +DATE_STAMPED_STDOUT = True ! [Boolean] default = True + ! If true, use dates (not times) in messages to stdout +TIMEUNIT = 8.64E+04 ! [s] default = 8.64E+04 + ! The time unit in seconds a number of input fields +READ_DEPTH_LIST = False ! [Boolean] default = False + ! Read the depth list from a file if it exists or create that file otherwise. +DEPTH_LIST_MIN_INC = 1.0E-10 ! [m] default = 1.0E-10 + ! The minimum increment between the depths of the entries in the depth-list + ! file. +ENERGYSAVEDAYS = 10.0 ! [days] default = 1.0 + ! The interval in units of TIMEUNIT between saves of the energies of the run and + ! other globally summed diagnostics. +ENERGYSAVEDAYS_GEOMETRIC = 0.0 ! [days] default = 0.0 + ! The starting interval in units of TIMEUNIT for the first call to save the + ! energies of the run and other globally summed diagnostics. The interval + ! increases by a factor of 2. after each call to write_energy. + +! === module ocean_stochastics_init === +DO_SPPT = False ! [Boolean] default = False + ! If true, then stochastically perturb the thermodynamic tendemcies of T,S, amd + ! h. Amplitude and correlations are controlled by the nam_stoch namelist in the + ! UFS model only. +PERT_EPBL = False ! [Boolean] default = False + ! If true, then stochastically perturb the kinetic energy production and + ! dissipation terms. Amplitude and correlations are controlled by the nam_stoch + ! namelist in the UFS model only. + +! === module MOM_surface_forcing === +VARIABLE_WINDS = True ! [Boolean] default = True + ! If true, the winds vary in time after the initialization. +VARIABLE_BUOYFORCE = True ! [Boolean] default = True + ! If true, the buoyancy forcing varies in time after the initialization of the + ! model. +BUOY_CONFIG = "data_override" ! default = "zero" + ! The character string that indicates how buoyancy forcing is specified. Valid + ! options include (file), (data_override), (zero), (const), (linear), (MESO), + ! (SCM_CVmix_tests), (BFB), (dumbbell), (USER) and (NONE). +WIND_CONFIG = "data_override" ! default = "zero" + ! The character string that indicates how wind forcing is specified. Valid + ! options include (file), (data_override), (2gyre), (1gyre), (gyres), (zero), + ! (const), (Neverworld), (scurves), (ideal_hurr), (SCM_ideal_hurr), + ! (SCM_CVmix_tests) and (USER). +RESTOREBUOY = False ! [Boolean] default = False + ! If true, the buoyancy fluxes drive the model back toward some specified + ! surface state with a rate given by FLUXCONST. +LATENT_HEAT_FUSION = 3.34E+05 ! [J/kg] default = 3.34E+05 + ! The latent heat of fusion. +LATENT_HEAT_VAPORIZATION = 2.5E+06 ! [J/kg] default = 2.5E+06 + ! The latent heat of fusion. +GUST_CONST = 0.0 ! [Pa] default = 0.0 + ! The background gustiness in the winds. +FIX_USTAR_GUSTLESS_BUG = True ! [Boolean] default = True + ! If true correct a bug in the time-averaging of the gustless wind friction + ! velocity +READ_GUST_2D = True ! [Boolean] default = False + ! If true, use a 2-dimensional gustiness supplied from an input file +GUST_2D_FILE = "forcing_monthly.nc" ! + ! The file in which the wind gustiness is found in variable gustiness. + +! === module MOM_restart === +USE_WAVES = False ! [Boolean] default = False + ! If true, enables surface wave modules. + +! === module MOM_main (MOM_driver) === +DT_FORCING = 3600.0 ! [s] default = 3600.0 + ! The time step for changing forcing, coupling with other components, or + ! potentially writing certain diagnostics. The default value is given by DT. +DAYMAX = 365.0 ! [days] + ! The final time of the whole simulation, in units of TIMEUNIT seconds. This + ! also sets the potential end time of the present run segment if the end time is + ! not set via ocean_solo_nml in input.nml. +SINGLE_STEPPING_CALL = True ! [Boolean] default = True + ! If true, advance the state of MOM with a single step including both dynamics + ! and thermodynamics. If false the two phases are advanced with separate calls. +RESTART_CONTROL = 0 ! default = 1 + ! An integer whose bits encode which restart files are written. Add 2 (bit 1) + ! for a time-stamped file, and odd (bit 0) for a non-time-stamped file. A + ! non-time-stamped restart file is saved at the end of the run segment for any + ! non-negative value. +RESTINT = 3650.0 ! [days] default = 0.0 + ! The interval between saves of the restart file in units of TIMEUNIT. Use 0 + ! (the default) to not save incremental restart files at all. +WRITE_CPU_STEPS = 1000 ! default = 1000 + ! The number of coupled timesteps between writing the cpu time. If this is not + ! positive, do not check cpu time, and the segment run-length can not be set via + ! an elapsed CPU time. + +! === module MOM_write_cputime === +MAXCPU = 2.88E+04 ! [wall-clock seconds] default = -1.0 + ! The maximum amount of cpu time per processor for which MOM should run before + ! saving a restart file and quitting with a return value that indicates that a + ! further run is required to complete the simulation. If automatic restarts are + ! not desired, use a negative value for MAXCPU. MAXCPU has units of wall-clock + ! seconds, so the actual CPU time used is larger by a factor of the number of + ! processors used. +CPU_TIME_FILE = "CPU_stats" ! default = "CPU_stats" + ! The file into which CPU time is written. + +! === module MOM_file_parser === +SEND_LOG_TO_STDOUT = False ! [Boolean] default = False + ! If true, all log messages are also sent to stdout. +DOCUMENT_FILE = "MOM_parameter_doc" ! default = "MOM_parameter_doc" + ! The basename for files where run-time parameters, their settings, units and + ! defaults are documented. Blank will disable all parameter documentation. +COMPLETE_DOCUMENTATION = True ! [Boolean] default = True + ! If true, all run-time parameters are documented in MOM_parameter_doc.all . +MINIMAL_DOCUMENTATION = True ! [Boolean] default = True + ! If true, non-default run-time parameters are documented in + ! MOM_parameter_doc.short . diff --git a/ocean_only/single_column/EPBL_diagscalar/MOM_parameter_doc.debugging b/ocean_only/single_column/EPBL_diagscalar/MOM_parameter_doc.debugging new file mode 100644 index 0000000000..1511991097 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/MOM_parameter_doc.debugging @@ -0,0 +1,83 @@ +! This file was written by the model and records the debugging parameters used at run-time. + +! === module MOM_unit_scaling === +! Parameters for doing unit scaling of variables. +Z_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! depths and heights. Valid values range from -300 to 300. +L_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! lateral distances. Valid values range from -300 to 300. +T_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! time. Valid values range from -300 to 300. +R_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! density. Valid values range from -300 to 300. +Q_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! heat content. Valid values range from -300 to 300. +C_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! temperature. Valid values range from -300 to 300. +S_RESCALE_POWER = 0 ! default = 0 + ! An integer power of 2 that is used to rescale the model's internal units of + ! salinity. Valid values range from -300 to 300. + +! === module MOM === +VERBOSITY = 2 ! default = 2 + ! Integer controlling level of messaging + ! 0 = Only FATAL messages + ! 2 = Only FATAL, WARNING, NOTE [default] + ! 9 = All) +DO_UNIT_TESTS = False ! [Boolean] default = False + ! If True, exercises unit tests at model start up. +DEBUG = False ! [Boolean] default = False + ! If true, write out verbose debugging data. +DEBUG_TRUNCATIONS = False ! [Boolean] default = False + ! If true, calculate all diagnostics that are useful for debugging truncations. +ROTATE_INDEX = False ! [Boolean] default = False + ! Enable rotation of the horizontal indices. +DEBUG_CHKSUMS = False ! [Boolean] default = False + ! If true, checksums are performed on arrays in the various vec_chksum routines. +DEBUG_REDUNDANT = False ! [Boolean] default = False + ! If true, debug redundant data points during calls to the various vec_chksum + ! routines. + +! === module MOM_verticalGrid === +! Parameters providing information about the vertical grid. +H_RESCALE_POWER = 0 ! [nondim] default = 0 + ! An integer power of 2 that is used to rescale the model's intenal units of + ! thickness. Valid values range from -300 to 300. + +! === module MOM_vert_friction === +U_TRUNC_FILE = "U_velocity_truncations" ! default = "" + ! The absolute path to a file into which the accelerations leading to zonal + ! velocity truncations are written. Undefine this for efficiency if this + ! diagnostic is not needed. +V_TRUNC_FILE = "V_velocity_truncations" ! default = "" + ! The absolute path to a file into which the accelerations leading to meridional + ! velocity truncations are written. Undefine this for efficiency if this + ! diagnostic is not needed. + +! === module MOM_PointAccel === +MAX_TRUNC_FILE_SIZE_PER_PE = 50 ! default = 50 + ! The maximum number of columns of truncations that any PE will write out during + ! a run. +DEBUG_FULL_COLUMN = False ! [Boolean] default = False + ! If true, write out the accelerations in all massive layers; otherwise just + ! document the ones with large velocities. + +! === module MOM_diabatic_driver === +! The following parameters are used for diabatic processes. +DEBUG_CONSERVATION = False ! [Boolean] default = False + ! If true, monitor conservation and extrema. + +! === module MOM_kappa_shear === +! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 + +! === module MOM_file_parser === +REPORT_UNUSED_PARAMS = True ! [Boolean] default = True + ! If true, report any parameter lines that are not used in the run. +FATAL_UNUSED_PARAMS = False ! [Boolean] default = False + ! If true, kill the run if there are any unused parameters. diff --git a/ocean_only/single_column/EPBL_diagscalar/MOM_parameter_doc.layout b/ocean_only/single_column/EPBL_diagscalar/MOM_parameter_doc.layout new file mode 100644 index 0000000000..d0bf972496 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/MOM_parameter_doc.layout @@ -0,0 +1,56 @@ +! This file was written by the model and records the layout parameters used at run-time. + +! === module MOM === +GLOBAL_INDEXING = False ! [Boolean] default = False + ! If true, use a global lateral indexing convention, so that corresponding + ! points on different processors have the same index. This does not work with + ! static memory. + +! === module MOM_domains === +!SYMMETRIC_MEMORY_ = True ! [Boolean] + ! If defined, the velocity point data domain includes every face of the + ! thickness points. In other words, some arrays are larger than others, + ! depending on where they are on the staggered grid. Also, the starting index + ! of the velocity-point arrays is usually 0, not 1. This can only be set at + ! compile time. +NONBLOCKING_UPDATES = False ! [Boolean] default = False + ! If true, non-blocking halo updates may be used. +THIN_HALO_UPDATES = True ! [Boolean] default = True + ! If true, optional arguments may be used to specify the width of the halos that + ! are updated with each call. +!STATIC_MEMORY_ = False ! [Boolean] + ! If STATIC_MEMORY_ is defined, the principle variables will have sizes that are + ! statically determined at compile time. Otherwise the sizes are not determined + ! until run time. The STATIC option is substantially faster, but does not allow + ! the PE count to be changed at run time. This can only be set at compile time. +MASKTABLE = "MOM_mask_table" ! default = "MOM_mask_table" + ! A text file to specify n_mask, layout and mask_list. This feature masks out + ! processors that contain only land points. The first line of mask_table is the + ! number of regions to be masked out. The second line is the layout of the model + ! and must be consistent with the actual model layout. The following (n_mask) + ! lines give the logical positions of the processors that are masked out. The + ! mask_table can be created by tools like check_mask. The following example of + ! mask_table masks out 2 processors, (1,2) and (3,6), out of the 24 in a 4x6 + ! layout: + ! 2 + ! 4,6 + ! 1,2 + ! 3,6 +NIPROC = 1 ! + ! The number of processors in the x-direction. With STATIC_MEMORY_ this is set + ! in MOM_memory.h at compile time. +NJPROC = 1 ! + ! The number of processors in the y-direction. With STATIC_MEMORY_ this is set + ! in MOM_memory.h at compile time. +LAYOUT = 1, 1 ! + ! The processor layout that was actually used. +IO_LAYOUT = 1, 1 ! default = 1 + ! The processor layout to be used, or 0,0 to automatically set the io_layout to + ! be the same as the layout. + +! === module MOM_grid === +! Parameters providing information about the lateral grid. +NIBLOCK = 1 ! default = 1 + ! The number of blocks in the x-direction on each processor (for openmp). +NJBLOCK = 1 ! default = 1 + ! The number of blocks in the y-direction on each processor (for openmp). diff --git a/ocean_only/single_column/EPBL_diagscalar/MOM_parameter_doc.short b/ocean_only/single_column/EPBL_diagscalar/MOM_parameter_doc.short new file mode 100644 index 0000000000..56e3de3f6d --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/MOM_parameter_doc.short @@ -0,0 +1,403 @@ +! This file was written by the model and records the non-default parameters used at run-time. + +! === module MOM === +SPLIT = False ! [Boolean] default = True + ! Use the split time stepping if true. +USE_REGRIDDING = True ! [Boolean] default = False + ! If True, use the ALE algorithm (regridding/remapping). If False, use the + ! layered isopycnal algorithm. +DT = 3600.0 ! [s] + ! The (baroclinic) dynamics time step. The time-step that is actually used will + ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode + ! or the coupling timestep in coupled mode.) +FRAZIL = True ! [Boolean] default = False + ! If true, water freezes if it gets too cold, and the accumulated heat deficit + ! is returned in the surface state. FRAZIL is only used if + ! ENABLE_THERMODYNAMICS is true. +C_P = 3925.0 ! [J kg-1 K-1] default = 3991.86795711963 + ! The heat capacity of sea water, approximated as a constant. This is only used + ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 + ! definition of conservative temperature. +SAVE_INITIAL_CONDS = True ! [Boolean] default = False + ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. + +! === module MOM_domains === +REENTRANT_Y = True ! [Boolean] default = False + ! If true, the domain is meridionally reentrant. +NIGLOBAL = 2 ! + ! The total number of thickness grid points in the x-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +NJGLOBAL = 2 ! + ! The total number of thickness grid points in the y-direction in the physical + ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. +NIHALO = 2 ! default = 4 + ! The number of halo points on each side in the x-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. +NJHALO = 2 ! default = 4 + ! The number of halo points on each side in the y-direction. How this is set + ! varies with the calling component and static or dynamic memory configuration. + +! === module MOM_fixed_initialization === +INPUTDIR = "INPUT/BATS" ! default = "." + ! The directory in which input files are found. + +! === module MOM_grid_init === +GRID_CONFIG = "cartesian" ! + ! A character string that determines the method for defining the horizontal + ! grid. Current options are: + ! mosaic - read the grid from a mosaic (supergrid) + ! file set by GRID_FILE. + ! cartesian - use a (flat) Cartesian grid. + ! spherical - use a simple spherical grid. + ! mercator - use a Mercator spherical grid. +SOUTHLAT = 30.0 ! [degrees] + ! The southern latitude of the domain or the equivalent starting value for the + ! y-axis. +LENLAT = 1.0 ! [degrees] + ! The latitudinal or y-direction length of the domain. +LENLON = 1.0 ! [degrees] + ! The longitudinal or x-direction length of the domain. +TOPO_CONFIG = "flat" ! + ! This specifies how bathymetry is specified: + ! file - read bathymetric information from the file + ! specified by (TOPO_FILE). + ! flat - flat bottom set to MAXIMUM_DEPTH. + ! bowl - an analytically specified bowl-shaped basin + ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. + ! spoon - a similar shape to 'bowl', but with an vertical + ! wall at the southern face. + ! halfpipe - a zonally uniform channel with a half-sine + ! profile in the meridional direction. + ! bbuilder - build topography from list of functions. + ! benchmark - use the benchmark test case topography. + ! Neverworld - use the Neverworld test case topography. + ! DOME - use a slope and channel configuration for the + ! DOME sill-overflow test case. + ! ISOMIP - use a slope and channel configuration for the + ! ISOMIP test case. + ! DOME2D - use a shelf and slope configuration for the + ! DOME2D gravity current/overflow test case. + ! Kelvin - flat but with rotated land mask. + ! seamount - Gaussian bump for spontaneous motion test case. + ! dumbbell - Sloshing channel with reservoirs on both ends. + ! shelfwave - exponential slope for shelfwave test case. + ! Phillips - ACC-like idealized topography used in the Phillips config. + ! dense - Denmark Strait-like dense water formation and overflow. + ! USER - call a user modified routine. +MINIMUM_DEPTH = 0.5 ! [m] default = 0.0 + ! The minimum depth of the ocean. +MAXIMUM_DEPTH = 6000.0 ! [m] + ! The maximum depth of the ocean. +ROTATION = "betaplane" ! default = "2omegasinlat" + ! This specifies how the Coriolis parameter is specified: + ! 2omegasinlat - Use twice the planetary rotation rate + ! times the sine of latitude. + ! betaplane - Use a beta-plane or f-plane. + ! USER - call a user modified routine. +F_0 = 7.59943E-05 ! [s-1] default = 0.0 + ! The reference value of the Coriolis parameter with the betaplane option. + +! === module MOM_verticalGrid === +! Parameters providing information about the vertical grid. +NK = 75 ! [nondim] + ! The number of model layers. + +! === module MOM_EOS === + +! === module MOM_tracer_flow_control === + +! === module MOM_coord_initialization === +REGRIDDING_COORDINATE_MODE = "Z*" ! default = "LAYER" + ! Coordinate mode for vertical regridding. Choose among the following + ! possibilities: LAYER - Isopycnal or stacked shallow water layers + ! ZSTAR, Z* - stretched geopotential z* + ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf + ! SIGMA - terrain following coordinates + ! RHO - continuous isopycnal + ! SCALAR - any scalar variable ** for diagnostic grids only ** + ! HYCOM1 - HyCOM-like hybrid coordinate + ! HYBGEN - Hybrid coordinate from the Hycom hybgen code + ! SLIGHT - stretched coordinates above continuous isopycnal + ! ADAPTIVE - optimize for smooth neutral density surfaces +ALE_COORDINATE_CONFIG = "FILE:./INPUT/vgrid_cm4.nc,dz" ! default = "UNIFORM" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter ALE_RESOLUTION + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +!ALE_RESOLUTION = 4*2.0, 2*2.01, 2*2.02, 2.05, 2.07, 2.09, 2.13, 2.18, 2.24, 2.3, 2.4, 2.5, 2.62, 2.78, 2.95, 3.17, 3.42, 3.71, 4.07, 4.48, 4.97, 5.55, 6.23, 7.04, 7.99, 9.11, 10.43, 11.98, 13.8, 15.94, 18.42, 21.32, 24.66, 28.51, 32.91, 37.92, 43.56, 49.87, 56.88, 64.55, 72.91, 81.87, 91.4, 101.39, 111.73, 122.29, 132.93, 143.47, 153.78, 163.7, 173.07, 181.78, 189.76, 196.89, 203.17, 208.58, 213.14, 216.87, 219.87, 222.19, 223.94, 225.18, 226.04, 226.59, 226.9, 227.07, 227.14, 2*227.16, 227.17 ! [m] + ! The distribution of vertical resolution for the target + ! grid used for Eulerian-like coordinates. For example, + ! in z-coordinate mode, the parameter is a list of level + ! thicknesses (in m). In sigma-coordinate mode, the list + ! is of non-dimensional fractions of the water column. + +! === module MOM_state_initialization === +INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False + ! If true, initialize the layer thicknesses, temperatures, and salinities from a + ! Z-space file on a latitude-longitude grid. + +! === module MOM_initialize_layers_from_Z === +TEMP_SALT_Z_INIT_FILE = "WOA_column.nc" ! default = "temp_salt_z.nc" + ! The name of the z-space input file used to initialize temperatures (T) and + ! salinities (S). If T and S are not in the same file, TEMP_Z_INIT_FILE and + ! SALT_Z_INIT_FILE must be set. +Z_INIT_FILE_PTEMP_VAR = "PTEMP" ! default = "ptemp" + ! The name of the potential temperature variable in TEMP_Z_INIT_FILE. +Z_INIT_FILE_SALT_VAR = "SALT" ! default = "salt" + ! The name of the salinity variable in SALT_Z_INIT_FILE. +Z_INIT_HOMOGENIZE = True ! [Boolean] default = False + ! If True, then horizontally homogenize the interpolated initial conditions. +Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False + ! If True, then remap straight to model coordinate from file. + +! === module MOM_diag_mediator === +DIAG_COORDS = "scalar SCALAR SCALAR" ! default = "z Z ZSTAR" + ! A list of string tuples associating diag_table modules to a coordinate + ! definition used for diagnostics. Each string is of the form "MODULE_SUFFIX + ! PARAMETER_SUFFIX COORDINATE_NAME". +INTERPOLATION_SCHEME = "P1M_H2" ! default = "PPM_H4" + ! This sets the interpolation scheme to use to determine the new grid. These + ! parameters are only relevant when REGRIDDING_COORDINATE_MODE is set to a + ! function of state. Otherwise, it is not used. It can be one of the following + ! schemes: + ! P1M_H2 (2nd-order accurate) + ! P1M_H4 (2nd-order accurate) + ! P1M_IH4 (2nd-order accurate) + ! PLM (2nd-order accurate) + ! PPM_CW (3rd-order accurate) + ! PPM_H4 (3rd-order accurate) + ! PPM_IH4 (3rd-order accurate) + ! P3M_IH4IH3 (4th-order accurate) + ! P3M_IH6IH5 (4th-order accurate) + ! PQM_IH4IH3 (4th-order accurate) + ! PQM_IH6IH5 (5th-order accurate) +DIAG_COORD_DEF_SCALAR = "FILE:targetlayers_scalar.nc,interfaces=interfaces" ! default = "WOA09" + ! Determines how to specify the coordinate resolution. Valid options are: + ! PARAM - use the vector-parameter DIAG_COORD_RES_SCALAR + ! UNIFORM[:N] - uniformly distributed + ! FILE:string - read from a file. The string specifies + ! the filename and variable name, separated + ! by a comma or space, e.g. FILE:lev.nc,dz + ! or FILE:lev.nc,interfaces=zw + ! WOA09[:N] - the WOA09 vertical grid (approximately) + ! FNC1:string - FNC1:dz_min,H_total,power,precision + ! HYBRID:string - read from a file. The string specifies + ! the filename and two variable names, separated + ! by a comma or space, for sigma-2 and dz. e.g. + ! HYBRID:vgrid.nc,sigma2,dz +DIAG_COORD_P_REF_SCALAR = 0.0 ! [Pa] default = 2.0E+07 + ! The pressure that is used for calculating the diagnostic coordinate density. + ! (1 Pa = 1e4 dbar, so 2e7 is commonly used.) This is only used for the RHO + ! coordinate. + +! === module MOM_lateral_mixing_coeffs === + +! === module MOM_set_visc === +HBBL = 10.0 ! [m] + ! The thickness of a bottom boundary layer with a viscosity increased by + ! KV_EXTRA_BBL if BOTTOMDRAGLAW is not defined, or the thickness over which + ! near-bottom velocities are averaged for the drag law if BOTTOMDRAGLAW is + ! defined but LINEAR_DRAG is not. +CDRAG = 0.0 ! [nondim] default = 0.003 + ! CDRAG is the drag coefficient relating the magnitude of the velocity field to + ! the bottom stress. CDRAG is only used if BOTTOMDRAGLAW is defined. +DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 + ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an + ! unresolved velocity that is combined with the resolved velocity to estimate + ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is + ! defined. +BBL_THICK_MIN = 0.1 ! [m] default = 0.0 + ! The minimum bottom boundary layer thickness that can be used with + ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum + ! near-bottom viscosity. +KV = 1.0E-04 ! [m2 s-1] + ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 + ! m2 s-1, may be used. + +! === module MOM_thickness_diffuse === + +! === module MOM_porous_barriers === + +! === module MOM_dynamics_unsplit === + +! === module MOM_continuity === + +! === module MOM_continuity_PPM === +UPWIND_1ST_CONTINUITY = True ! [Boolean] default = False + ! If true, CONTINUITY_PPM becomes a 1st-order upwind continuity solver. This + ! scheme is highly diffusive but may be useful for debugging or in single-column + ! mode where its minimal stencil is useful. +ETA_TOLERANCE = 1.0E-06 ! [m] default = 3.75E-09 + ! The tolerance for the differences between the barotropic and baroclinic + ! estimates of the sea surface height due to the fluxes through each face. The + ! total tolerance for SSH is 4 times this value. The default is + ! 0.5*NK*ANGSTROM, and this should not be set less than about + ! 10^-15*MAXIMUM_DEPTH. + +! === module MOM_CoriolisAdv === +CORIOLIS_EN_DIS = True ! [Boolean] default = False + ! If true, two estimates of the thickness fluxes are used to estimate the + ! Coriolis term, and the one that dissipates energy relative to the other one is + ! used. +BOUND_CORIOLIS = True ! [Boolean] default = False + ! If true, the Coriolis terms at u-points are bounded by the four estimates of + ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This + ! option is always effectively false with CORIOLIS_EN_DIS defined and + ! CORIOLIS_SCHEME set to SADOURNY75_ENERGY. + +! === module MOM_PressureForce === + +! === module MOM_PressureForce_FV === + +! === module MOM_hor_visc === +BIHARMONIC = False ! [Boolean] default = True + ! If true, use a biharmonic horizontal viscosity. BIHARMONIC may be used with + ! LAPLACIAN. + +! === module MOM_vert_friction === +HARMONIC_VISC = True ! [Boolean] default = False + ! If true, use the harmonic mean thicknesses for calculating the vertical + ! viscosity. +HMIX_FIXED = 0.01 ! [m] + ! The prescribed depth over which the near-surface viscosity and diffusivity are + ! elevated when the bulk mixed layer is not used. +MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 + ! The maximum velocity allowed before the velocity components are truncated. +VEL_UNDERFLOW = 1.0E-30 ! [m s-1] default = 0.0 + ! A negligibly small velocity magnitude below which velocity components are set + ! to 0. A reasonable value might be 1e-30 m/s, which is less than an Angstrom + ! divided by the age of the universe. + +! === module MOM_diagnostics === + +! === module MOM_diabatic_driver === +! The following parameters are used for diabatic processes. +ENERGETICS_SFC_PBL = True ! [Boolean] default = False + ! If true, use an implied energetics planetary boundary layer scheme to + ! determine the diffusivity and viscosity in the surface boundary layer. + +! === module MOM_CVMix_KPP === +! This is the MOM wrapper to CVMix:KPP +! See http://cvmix.github.io/ +USE_KPP = True ! [Boolean] default = False + ! If true, turns on the [CVMix] KPP scheme of Large et al., 1994, to calculate + ! diffusivities and non-local transport in the OBL. +KPP% +PASSIVE = True ! [Boolean] default = False + ! If True, puts KPP into a passive-diagnostic mode. +%KPP + +! === module MOM_set_diffusivity === +ML_RADIATION = True ! [Boolean] default = False + ! If true, allow a fraction of TKE available from wind work to penetrate below + ! the base of the mixed layer with a vertical decay scale determined by the + ! minimum of: (1) The depth of the mixed layer, (2) an Ekman length scale. +TKE_DECAY = 10.0 ! [nondim] default = 2.5 + ! The ratio of the natural Ekman depth to the TKE decay scale. +ML_OMEGA_FRAC = 1.0 ! [nondim] default = 0.0 + ! When setting the decay scale for turbulence, use this fraction of the absolute + ! rotation rate blended with the local value of f, as sqrt((1-of)*f^2 + + ! of*4*omega^2). + +! === module MOM_bkgnd_mixing === +! Adding static vertical background mixing coefficients +KD = 2.0E-05 ! [m2 s-1] default = 0.0 + ! The background diapycnal diffusivity of density in the interior. Zero or the + ! molecular value, ~1e-7 m2 s-1, may be used. +KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 + ! The minimum diapycnal diffusivity. + +! === module MOM_kappa_shear === +! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 +USE_JACKSON_PARAM = True ! [Boolean] default = False + ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing + ! parameterization. +MAX_RINO_IT = 25 ! [nondim] default = 50 + ! The maximum number of iterations that may be used to estimate the Richardson + ! number driven mixing. + +! === module MOM_diabatic_aux === +! The following parameters are used for auxiliary diabatic processes. +RECLAIM_FRAZIL = False ! [Boolean] default = True + ! If true, try to use any frazil heat deficit to cool any overlying layers down + ! to the freezing point, thereby avoiding the creation of thin ice when the SST + ! is above the freezing point. +VAR_PEN_SW = True ! [Boolean] default = False + ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine + ! the e-folding depth of incoming short wave radiation. +CHL_FILE = "forcing_monthly.nc" ! + ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It + ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. + +! === module MOM_energetic_PBL === +USE_MLD_ITERATION = False ! [Boolean] default = True + ! A logical that specifies whether or not to use the distance to the bottom of + ! the actively turbulent boundary layer to help set the EPBL length scale. + +! === module MOM_opacity === +PEN_SW_NBANDS = 3 ! default = 1 + ! The number of bands of penetrating shortwave radiation. + +! === module MOM_tracer_advect === + +! === module MOM_tracer_hor_diff === +KHTR = 600.0 ! [m2 s-1] default = 0.0 + ! The background along-isopycnal tracer diffusivity. + +! === module MOM_sum_output === +MAXTRUNC = 5000 ! [truncations save_interval-1] default = 0 + ! The run will be stopped, and the day set to a very large value if the velocity + ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 + ! to stop if there is any truncation of velocities. +ENERGYSAVEDAYS = 10.0 ! [days] default = 1.0 + ! The interval in units of TIMEUNIT between saves of the energies of the run and + ! other globally summed diagnostics. + +! === module ocean_stochastics_init === + +! === module MOM_surface_forcing === +BUOY_CONFIG = "data_override" ! default = "zero" + ! The character string that indicates how buoyancy forcing is specified. Valid + ! options include (file), (data_override), (zero), (const), (linear), (MESO), + ! (SCM_CVmix_tests), (BFB), (dumbbell), (USER) and (NONE). +WIND_CONFIG = "data_override" ! default = "zero" + ! The character string that indicates how wind forcing is specified. Valid + ! options include (file), (data_override), (2gyre), (1gyre), (gyres), (zero), + ! (const), (Neverworld), (scurves), (ideal_hurr), (SCM_ideal_hurr), + ! (SCM_CVmix_tests) and (USER). +READ_GUST_2D = True ! [Boolean] default = False + ! If true, use a 2-dimensional gustiness supplied from an input file +GUST_2D_FILE = "forcing_monthly.nc" ! + ! The file in which the wind gustiness is found in variable gustiness. + +! === module MOM_main (MOM_driver) === +DAYMAX = 365.0 ! [days] + ! The final time of the whole simulation, in units of TIMEUNIT seconds. This + ! also sets the potential end time of the present run segment if the end time is + ! not set via ocean_solo_nml in input.nml. +RESTART_CONTROL = 0 ! default = 1 + ! An integer whose bits encode which restart files are written. Add 2 (bit 1) + ! for a time-stamped file, and odd (bit 0) for a non-time-stamped file. A + ! non-time-stamped restart file is saved at the end of the run segment for any + ! non-negative value. +RESTINT = 3650.0 ! [days] default = 0.0 + ! The interval between saves of the restart file in units of TIMEUNIT. Use 0 + ! (the default) to not save incremental restart files at all. + +! === module MOM_write_cputime === +MAXCPU = 2.88E+04 ! [wall-clock seconds] default = -1.0 + ! The maximum amount of cpu time per processor for which MOM should run before + ! saving a restart file and quitting with a return value that indicates that a + ! further run is required to complete the simulation. If automatic restarts are + ! not desired, use a negative value for MAXCPU. MAXCPU has units of wall-clock + ! seconds, so the actual CPU time used is larger by a factor of the number of + ! processors used. diff --git a/ocean_only/single_column/EPBL_diagscalar/data_table b/ocean_only/single_column/EPBL_diagscalar/data_table new file mode 100644 index 0000000000..36cb27c2e7 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/data_table @@ -0,0 +1,11 @@ +# gridname, fieldname_code, fieldname_file, file_name, ongrid, factor +"OCN" , "lw", "netlwdn_sfc", "./INPUT/BATS/forcing.nc", .true., 1.0 +"OCN" , "sw", "netswdn_sfc", "./INPUT/BATS/forcing.nc", .true., 1.0 +"OCN" , "rain", "precip", "./INPUT/BATS/forcing.nc", .true., 1.0 +"OCN" , "evap", "evap", "./INPUT/BATS/forcing.nc", .true., 1.0 +"OCN" , "sens", "shflx", "./INPUT/BATS/forcing.nc", .true., 1.0 +"OCN" , "taux", "STRESS_X", "./INPUT/BATS/forcing.nc", .true., 1.0 +"OCN" , "tauy", "STRESS_Y", "./INPUT/BATS/forcing.nc", .true., 1.0 +"OCN" , "snow", "snow", "./INPUT/BATS/forcing.nc", .true., 0.0 +"OCN" , "runoff", "", "" , .true., 0.0 +"OCN" , "calving", "", "" , .true., 0.0 diff --git a/ocean_only/single_column/EPBL_diagscalar/diag_table b/ocean_only/single_column/EPBL_diagscalar/diag_table new file mode 100644 index 0000000000..2afd0bcc6a --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/diag_table @@ -0,0 +1,251 @@ +CONFIG NAME +0001 1 1 0 0 0 + +#==================================================================================================== +# MOM6 +#==================================================================================================== +# MOM6 ocean diagnostics files + +"ocean_natv_thck%4yr_%2mo", 1, "months", 1, "days", "time", 1, "months" +"ocean_natv_heat%4yr_%2mo", 1, "months", 1, "days", "time", 1, "months" +"ocean_natv_salt%4yr_%2mo", 1, "months", 1, "days", "time", 1, "months" +"ocean_natv_snap%4yr_%2mo", 1, "months", 1, "days", "time", 1, "months" +"ocean_sclr_thck%4yr_%2mo", 1, "months", 1, "days", "time", 1, "months" +"ocean_sclr_heat%4yr_%2mo", 1, "months", 1, "days", "time", 1, "months" +"ocean_sclr_salt%4yr_%2mo", 1, "months", 1, "days", "time", 1, "months" +"ocean_sclr_snap%4yr_%2mo", 1, "months", 1, "days", "time", 1, "months" +"ocean_surf%4yr_%2mo", 1, "months", 1, "days", "time", 1, "months" +"ocean_static", -1, "hours", 1, "days", "time" # ocean_static is a protected name. Do not change this line. + +# --------------------------- # +# Static grid variables # +# --------------------------- # +"ocean_model", "areacello", "areacello", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolon", "geolon", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolat", "geolat", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolon_c", "geolon_c", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolat_c", "geolat_c", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolon_u", "geolon_u", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolat_u", "geolat_u", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolon_v", "geolon_v", "ocean_static", "all", "none", "none", 2 +"ocean_model", "geolat_v", "geolat_v", "ocean_static", "all", "none", "none", 2 +"ocean_model", "area_t", "area_t", "ocean_static", "all", "none", "none", 2 +"ocean_model", "area_u", "area_u", "ocean_static", "all", "none", "none", 2 +"ocean_model", "area_v", "area_v", "ocean_static", "all", "none", "none", 2 +"ocean_model", "area_q", "area_q", "ocean_static", "all", "none", "none", 2 +"ocean_model", "depth_ocean", "depth_ocean", "ocean_static", "all", "none", "none", 2 +"ocean_model", "wet", "wet", "ocean_static", "all", "none", "none", 2 +"ocean_model", "wet_c", "wet_c", "ocean_static", "all", "none", "none", 2 +"ocean_model", "wet_u", "wet_u", "ocean_static", "all", "none", "none", 2 +"ocean_model", "wet_v", "wet_v", "ocean_static", "all", "none", "none", 2 +"ocean_model", "Coriolis", "Coriolis", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dxt", "dxt", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dyt", "dyt", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dxCu", "dxCu", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dyCu", "dyCu", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dxCv", "dxCv", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dyCv", "dyCv", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dxCvo", "dxCvo", "ocean_static", "all", "none", "none", 2 +"ocean_model", "dyCuo", "dyCuo", "ocean_static", "all", "none", "none", 2 + +############## +### NATIVE ### +# ------------------------------------------------- # +# Heat + budget terms [get from Andrew Shao github] # +# ------------------------------------------------- # + +# MEAN +"ocean_model", "temp", "temp" "ocean_natv_heat%4yr_%2mo", "all", "mean", "none", 2 + +"ocean_model", "opottemptend", "opottemptend", "ocean_natv_heat%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "opottempdiff", "opottempdiff", "ocean_natv_heat%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "opottemppmdiff", "opottemppmdiff", "ocean_natv_heat%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "boundary_forcing_heat_tendency","boundary_forcing_heat_tendency", "ocean_natv_heat%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "frazil_heat_tendency", "frazil_heat_tendency", "ocean_natv_heat%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "T_advection_xy", "T_advection_xy", "ocean_natv_heat%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "Th_tendency_vert_remap", "Th_tendency_vert_remap", "ocean_natv_heat%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "internal_heat_heat_tendency", "internal_heat_heat_tendency", "ocean_natv_heat%4yr_%2mo", "all", "mean", "none", 1 + +# SNAP +#"ocean_model", "temp", "temp" "ocean_natv_snap%4yr_%2mo", "all", "none", "none", 2 + +# ------------------- # +# Salt + budget terms # +# ------------------- # + +"ocean_model", "salt", "salt", "ocean_natv_salt%4yr_%2mo", "all", "mean", "none", 2 + +"ocean_model", "osalttend", "osalttend", "ocean_natv_salt%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "osaltdiff", "osaltdiff", "ocean_natv_salt%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "osaltpmdiff", "osaltpmdiff", "ocean_natv_salt%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "boundary_forcing_salt_tendency","boundary_forcing_salt_tendency", "ocean_natv_salt%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "S_advection_xy", "S_advection_xy", "ocean_natv_salt%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "Sh_tendency_vert_remap", "Sh_tendency_vert_remap", "ocean_natv_salt%4yr_%2mo", "all", "mean", "none", 1 + +# SNAP +#"ocean_model", "salt", "salt" "ocean_natv_snap%4yr_%2mo", "all", "none", "none", 2 + +# ------------------------------------------------- # +# Thickness + budget terms # +# ------------------------------------------------- # + +# MEAN +"ocean_model", "thkcello", "thkcello", "ocean_natv_thck%4yr_%2mo", "all", "mean", "none", 2 + +"ocean_model", "dhdt", "dhdt", "ocean_natv_thck%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "dynamics_h_tendency", "dynamics_h_tendency", "ocean_natv_thck%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "vert_remap_h_tendency", "vert_remap_h_tendency", "ocean_natv_thck%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "boundary_forcing_h_tendency", "boundary_forcing_h_tendency", "ocean_natv_thck%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model", "internal_heat_h_tendency", "internal_heat_h_tendency", "ocean_natv_thck%4yr_%2mo", "all", "mean", "none", 1 + +# SNAP +#"ocean_model", "thkcello", "thkcello" "ocean_natv_snap%4yr_%2mo", "all", "none", "none", 2 +#"ocean_model", "e", "e" "ocean_natv_snap%4yr_%2mo", "all", "none", "none", 2 + +# ----------------------------------------- # +# Other terms necessary for WMT calculation # +# ----------------------------------------- # + +# MEAN +"ocean_model", "rhoinsitu", "rhoinsitu", "ocean_natv_thck%4yr_%2mo", "all", "mean", "none", 2 +"ocean_model", "rhopot0", "rhopot0", "ocean_natv_thck%4yr_%2mo", "all", "mean", "none", 2 +"ocean_model", "rhopot2", "rhopot2", "ocean_natv_thck%4yr_%2mo", "all", "mean", "none", 2 +"ocean_model", "drho_dT", "drho_dT", "ocean_natv_thck%4yr_%2mo", "all", "mean", "none", 2 +"ocean_model", "drho_dS", "drho_dS", "ocean_natv_thck%4yr_%2mo", "all", "mean", "none", 2 +"ocean_model", "umo", "umo", "ocean_natv_thck%4yr_%2mo", "all", "mean", "none", 2 +"ocean_model", "vmo", "vmo", "ocean_natv_thck%4yr_%2mo", "all", "mean", "none", 2 +"ocean_model", "e", "e", "ocean_natv_thck%4yr_%2mo", "all", "mean", "none", 2 +"ocean_model", "rsdoabsorb", "rsdoabsorb", "ocean_natv_heat%4yr_%2mo", "all", "mean", "none",2 + +# SNAP +#"ocean_model", "rhopot2", "rhopot2" "ocean_natv_snap%4yr_%2mo", "all", "none", "none", 2 + +# -------------- # +# Lateral fluxes # +# -------------- # +# heat and salinity transport by residual mean advection +"ocean_model", "T_adx", "T_adx", "ocean_natv_heat%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "T_ady", "T_ady", "ocean_natv_heat%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "S_adx", "S_adx", "ocean_natv_salt%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "S_ady", "S_ady", "ocean_natv_salt%4yr_%2mo", "all", "mean", "none",2 + +############## +### SCALAR ### +# ------------------------------------------------- # +# Heat + budget terms [get from Andrew Shao github] # +# ------------------------------------------------- # + +# MEAN +"ocean_model_scalar", "temp", "temp" "ocean_sclr_heat%4yr_%2mo", "all", "mean", "none", 2 + +"ocean_model_scalar", "opottemptend", "opottemptend", "ocean_sclr_heat%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "opottempdiff", "opottempdiff", "ocean_sclr_heat%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "opottemppmdiff", "opottemppmdiff", "ocean_sclr_heat%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "boundary_forcing_heat_tendency","boundary_forcing_heat_tendency", "ocean_sclr_heat%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "frazil_heat_tendency", "frazil_heat_tendency", "ocean_sclr_heat%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "T_advection_xy", "T_advection_xy", "ocean_sclr_heat%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "Th_tendency_vert_remap", "Th_tendency_vert_remap", "ocean_sclr_heat%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "internal_heat_heat_tendency", "internal_heat_heat_tendency", "ocean_sclr_heat%4yr_%2mo", "all", "mean", "none", 1 + +# SNAP +#"ocean_model_scalar", "temp", "temp" "ocean_sclr_snap%4yr_%2mo", "all", "none", "none", 2 + +# ------------------- # +# Salt + budget terms # +# ------------------- # + +"ocean_model_scalar", "salt", "salt", "ocean_sclr_salt%4yr_%2mo", "all", "mean", "none", 2 + +"ocean_model_scalar", "osalttend", "osalttend", "ocean_sclr_salt%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "osaltdiff", "osaltdiff", "ocean_sclr_salt%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "osaltpmdiff", "osaltpmdiff", "ocean_sclr_salt%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "boundary_forcing_salt_tendency","boundary_forcing_salt_tendency", "ocean_sclr_salt%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "S_advection_xy", "S_advection_xy", "ocean_sclr_salt%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "Sh_tendency_vert_remap", "Sh_tendency_vert_remap", "ocean_sclr_salt%4yr_%2mo", "all", "mean", "none", 1 + +# SNAP +#"ocean_model_scalar", "salt", "salt" "ocean_sclr_snap%4yr_%2mo", "all", "none", "none", 2 + +# ------------------------ # +# Thickness + budget terms # +# ------------------------ # + +# MEAN +"ocean_model_scalar", "thkcello", "thkcello", "ocean_sclr_thck%4yr_%2mo", "all", "mean", "none", 2 + +"ocean_model_scalar", "dhdt", "dhdt", "ocean_sclr_thck%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "dynamics_h_tendency", "dynamics_h_tendency", "ocean_sclr_thck%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "vert_remap_h_tendency", "vert_remap_h_tendency", "ocean_sclr_thck%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "boundary_forcing_h_tendency", "boundary_forcing_h_tendency", "ocean_sclr_thck%4yr_%2mo", "all", "mean", "none", 1 +"ocean_model_scalar", "internal_heat_h_tendency", "internal_heat_h_tendency", "ocean_sclr_thck%4yr_%2mo", "all", "mean", "none", 1 + +# SNAP +#"ocean_model_scalar", "thkcello", "thkcello" "ocean_sclr_snap%4yr_%2mo", "all", "none", "none", 2 +#"ocean_model_scalar", "e", "e" "ocean_sclr_snap%4yr_%2mo", "all", "none", "none", 2 + +# ----------------------------------------- # +# Other terms necessary for WMT calculation # +# ----------------------------------------- # + +# MEAN +"ocean_model_scalar", "rhoinsitu", "rhoinsitu", "ocean_sclr_thck%4yr_%2mo", "all", "mean", "none", 2 +"ocean_model_scalar", "rhopot0", "rhopot0", "ocean_sclr_thck%4yr_%2mo", "all", "mean", "none", 2 +"ocean_model_scalar", "rhopot2", "rhopot2", "ocean_sclr_thck%4yr_%2mo", "all", "mean", "none", 2 +"ocean_model_scalar", "drho_dT", "drho_dT", "ocean_sclr_thck%4yr_%2mo", "all", "mean", "none", 2 +"ocean_model_scalar", "drho_dS", "drho_dS", "ocean_sclr_thck%4yr_%2mo", "all", "mean", "none", 2 +#"ocean_model_scalar", "umo", "umo", "ocean_sclr_thck%4yr_%2mo", "all", "mean", "none", 2 +#"ocean_model_scalar", "vmo", "vmo", "ocean_sclr_thck%4yr_%2mo", "all", "mean", "none", 2 +"ocean_model_scalar", "e", "e", "ocean_sclr_thck%4yr_%2mo", "all", "mean", "none", 2 +"ocean_model_scalar", "rsdoabsorb", "rsdoabsorb", "ocean_sclr_heat%4yr_%2mo", "all", "mean", "none",2 + +# SNAP +"ocean_model_scalar", "rhopot2", "rhopot2" "ocean_sclr_snap%4yr_%2mo", "all", "none", "none", 2 + + +# -------------- # +# Lateral fluxes # +# -------------- # +# heat and salinity transport by residual mean advection +#"ocean_model_scalar", "T_adx", "T_adx", "ocean_sclr_heat%4yr_%2mo", "all", "mean", "none",2 +#"ocean_model_scalar", "T_ady", "T_ady", "ocean_sclr_heat%4yr_%2mo", "all", "mean", "none",2 +#"ocean_model_scalar", "S_adx", "S_adx", "ocean_sclr_salt%4yr_%2mo", "all", "mean", "none",2 +#"ocean_model_scalar", "S_ady", "S_ady", "ocean_sclr_salt%4yr_%2mo", "all", "mean", "none",2 + +#################################### +### SURFACE VARIABLES AND FLUXES ### + +"ocean_model", "tos", "tos" "ocean_surf%4yr_%2mo", "all", "mean", "none", 2 +"ocean_model", "sos", "sos" "ocean_surf%4yr_%2mo", "all", "mean", "none", 2 + +# MASS +"ocean_model", "prlq", "prlq", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "prsn", "prsn", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "evs", "evs", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "friver", "friver", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "ficeberg", "ficeberg", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "fsitherm", "fsitherm", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "wfo", "wfo", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "net_massout", "net_massout", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "net_massin", "net_massin", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 + +# HEAT +"ocean_model", "hfds", "hfds", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "heat_content_surfwater", "heat_content_surfwater", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "hfrainds", "hfrainds", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "hfevapds", "hfevapds", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "hfrunoffds", "hfrunoffds", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "hfsnthermds", "hfsnthermds", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "hfsifrazil", "hfsifrazil", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "hfsithermds", "hfsithermds", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "hfibthermds", "hfibthermds", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "hfsolidrunoffds", "hfsolidrunoffds", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "rlntds", "rlntds", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "hflso", "hflso", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "hfsso", "hfsso", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +"ocean_model", "rsdo", "rsdo", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 + +# SALT +"ocean_model", "sfdsi", "sfdsi", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 +#"ocean_model", "sfriver", "sfriver", "ocean_surf%4yr_%2mo", "all", "mean", "none",2 + + diff --git a/ocean_only/single_column/EPBL_diagscalar/input.nml b/ocean_only/single_column/EPBL_diagscalar/input.nml new file mode 100644 index 0000000000..ba8b4a5fd2 --- /dev/null +++ b/ocean_only/single_column/EPBL_diagscalar/input.nml @@ -0,0 +1,16 @@ + &MOM_input_nml + output_directory = './', + input_filename = 'n' + restart_input_dir = 'INPUT/', + restart_output_dir = 'RESTART/', + parameter_filename = 'MOM_input', + 'MOM_override', + 'MOM_override2' / + + &diag_manager_nml + / + + &fms_nml + clock_grain = 'LOOP', + domains_stack_size = 710000, + stack_size = 0 / diff --git a/ocean_only/single_column/KPP/diag_table b/ocean_only/single_column/KPP/diag_table index 8079b6d8eb..f42f9562a5 100644 --- a/ocean_only/single_column/KPP/diag_table +++ b/ocean_only/single_column/KPP/diag_table @@ -21,6 +21,7 @@ "ocean_model","e","e","prog","all",.false.,"none",2 "ocean_model","temp","temp","prog","all",.false.,"none",2 "ocean_model","salt","salt","prog","all",.false.,"none",2 +"ocean_model","rhopot0","rhopot0","prog","all",.false.,"none",2 #"ocean_model","Rml","Rml","prog","all",.false.,"none",2 #"ocean_model","h_ML","h_ML","prog","all",.false.,"none",2