Skip to content

Enable Omega time stepping with diagnostic computations#392

Merged
mark-petersen merged 6 commits intoE3SM-Project:developfrom
hyungyukang:omega/add-compute-diag-aux
May 4, 2026
Merged

Enable Omega time stepping with diagnostic computations#392
mark-petersen merged 6 commits intoE3SM-Project:developfrom
hyungyukang:omega/add-compute-diag-aux

Conversation

@hyungyukang
Copy link
Copy Markdown

@hyungyukang hyungyukang commented Apr 20, 2026

This PR enables time stepping in Omega by adding the diagnostic computations needed to evaluate the auxiliary diagnostic state required by the momentum equation.

  • Added computeMomDiagAux to AuxiliaryState.cpp to compute the diagnostic variables needed for time stepping in Omega.
  • Removed some diagnostic variable computations before the PGF tendency to avoid duplicate work in computeMomDiagAux.
  • Added calls to computeMomDiagAux at the appropriate points during time stepping.
  • Reordered the computational sequence in the Forward-Backward time stepper.
  • AuxiliaryStateTest was slightly updated to avoid an error caused by calling Eos in computeMomDiagAux. Although Eos is not directly tested in AuxiliaryStateTest, it still needs to be initialized for the test to run properly.
  • Note: SurfacePressure is currently handled temporarily in VertCoord.

Checklist

  • Linting
  • Building
    • CMake build does not produce any new warnings from changes in this PR
  • Testing
    • Add a comment to the PR titled Testing with the following:
      • Which machines CTest unit tests
        have been run on and indicate that are all passing.
      • The Polaris omega_pr test suite
        has passed, using the Polaris e3sm_submodules/Omega baseline
      • Document machine(s), compiler(s), and the build path(s) used for -p for both the baseline (Polaris e3sm_submodules/Omega) and the PR build
      • Indicate "All tests passed" or document failing tests

@hyungyukang
Copy link
Copy Markdown
Author

Testing

CTest unit tests

  • Machine: frontier
  • Compiler: craygnu,craygnu-mphipcc
  • Build type: Release
  • Result: All tests passed

Polaris omega_pr regression suite

  • Baseline build (-p): /lustre/orion/cli115/proj-shared/hgkang/E3SM/OMEGA/Polaris/Polaris_main_260418/e3sm_submodules/Omega
  • Baseline workdir (-w): /lustre/orion/cli115/proj-shared/hgkang/E3SM/OMEGA/Polaris/work/pr_suite/260420_timeStep_PR/baseline_omega
  • PR build (-p): /lustre/orion/cli115/proj-shared/hgkang/E3SM/OMEGA/Polaris/Polaris_main_260418/e3sm_submodules/Omega_hyun_timeStep_PR
  • PR workdir (-w): /lustre/orion/cli115/proj-shared/hgkang/E3SM/OMEGA/Polaris/work/pr_suite/260420_timeStep_PR/branch_omega
  • Machine/partition: frontier
  • Compiler/build type: craygnu, Release
  • Result: All tests passed
  • Logs (if applicable): /lustre/orion/cli115/proj-shared/hgkang/E3SM/OMEGA/Polaris/work/pr_suite/260420_timeStep_PR/branch_omega/polaris_omega_pr.o4431814

@hyungyukang
Copy link
Copy Markdown
Author

hyungyukang commented Apr 20, 2026

Since this PR enables time stepping in Omega, more complex tests have been performed and compared with MPAS-O.

  • Please note that a few code changes were made in MPAS-O to make it as close to Omega as possible. These changes were made only for the tests below and are not meant for general use. I will provide the details later in a comment.

  • LayerThickness in the initial condition is currently provided as GeometricThickness. Since Omega requires PseudoThickness, I temporarily added code in OceanInit.cpp to convert GeometricThickness to PseudoThickness. I will share the details later in a comment, along with the namelists used for both models.

Baroclinic channel test (4 km):
image

image

Namelist used:

Omega
Omega:
  Timing:
    Level: 2
    AutoFence: true
    TimingBarriers: false
    PrintAllRanks: false
  TimeIntegration:
    CalendarType: No Leap
    TimeStepper: RungeKutta4
    TimeStep: 0000_00:00:20
    StartTime: 0001-01-01_00:00:00
    StopTime: none
    RunDuration: 0030_00:00:00
  Decomp:
    HaloWidth: 3
    DecompMethod: MetisKWay
  IO:
    IOTasks: 1
    IOStride: 1
    IOBaseTask: 0
    IORearranger: box
    IODefaultFormat: pnetcdf
  State:
    NTimeLevels: 2
  Advection:
    Coef3rdOrder: 0.25
    FluxThicknessType: Center
    HorzTracerFluxOrder: 2
    FluxTracerType: Center
    VerticalTracerFluxLimiterEnable: false
    VerticalTracerFluxOrder: 3
  WindStress:
    InterpType: Isotropic
  SurfaceRestoring:
    TracersToRestore: [Temperature, Salinity]
    PistonVelocity: 1.585e-5
  VertCoord:
    MovementWeightType: Uniform
  PressureGrad:
    PressureGradType: Centered
  Tendencies:
    ThicknessFluxTendencyEnable: true
    PVTendencyEnable: true
    KETendencyEnable: true
    SSHTendencyEnable: false
    VelDiffTendencyEnable: true
    ViscDel2: 10.0
    VelHyperDiffTendencyEnable: false
    ViscDel4: 1.2e11
    DivFactor: 1.0
    WindForcingTendencyEnable: false
    SurfaceTracerRestoringEnable: false
    BottomDragTendencyEnable: false
    BottomDragCoeff: 0.0
    TracerHorzAdvTendencyEnable: true
    TracerDiffTendencyEnable: false
    EddyDiff2: 10.0
    TracerHyperDiffTendencyEnable: false
    EddyDiff4: 0.0
    UseCustomTendency: false
    ManufacturedSolutionTendency: false
    ThicknessVertAdvTendencyEnable: true
    VelocityVertAdvTendencyEnable: true
    TracerVertAdvTendencyEnable: true
    PressureGradTendencyEnable: true
  Tracers:
    Base: [Temperature, Salinity]
  Eos:
    EosType: linear
    Linear:
      DRhoDT: -0.2
      DRhoDS: 0.8
      RhoT0S0: 1000.0
  VertMix:
    Background:
      Diffusivity: 1.0e-5
      Viscosity: 1.0e-4
    Convective:
      Enable: false
      Diffusivity: 1.0
      TriggerBVF: 0.0
    Shear:
      Enable: false
      NuZero: 0.005
      Alpha: 5.0
      Exponent: 2.0
  ManufacturedSolution:
    WavelengthX: 5.0e6
    WavelengthY: 4.33013e6
    Amplitude: 1.0
  IOStreams:
    InitialVertCoord:
      UsePointerFile: false
      Filename: init.nc
      Mode: read
      Precision: double
      Freq: 1
      FreqUnits: OnStartup
      UseStartEnd: false
      Contents:
      - InitVertCoord
    # InitialState should only be used when starting from scratch.
    # For restart runs, the frequency units should be changed from
    # "OnStartup" to "never" so that the initial state file is not read.
    InitialState:
      UsePointerFile: false
      Filename: init.nc
      Mode: read
      Precision: double
      Freq: 1
      FreqUnits: OnStartup
      UseStartEnd: false
      Contents:
      - State
      - Tracers
    RestartRead:
      UsePointerFile: true
      PointerFilename: ocn.pointer
      Mode: read
      Precision: double
      Freq: 1
      FreqUnits: OnStartup
      UseStartEnd: true
      StartTime: 0001-01-01_00:00:01
      EndTime: 99999-12-31_00:00:00
      Contents:
      - Restart
    RestartWrite:
      UsePointerFile: true
      PointerFilename: ocn.pointer
      Filename: ocn.restart.$Y-$M-$D_$h.$m.$s
      Mode: write
      IfExists: replace
      Precision: double
      Freq: 6
      FreqUnits: Years
      UseStartEnd: false
      Contents:
      - Restart
    History:
      UsePointerFile: false
      Filename: output/ocn.hist.$Y-$M-$D_$h.$m.$s
      Mode: write
      IfExists: replace
      Precision: double
      Freq: 2
      FreqUnits: Hours
      FileFreq: 2
      FileFreqUnits: Hours
      UseStartEnd: false
      Contents:
      - State
      - Tracers
      - KineticEnergyCell
MPAS-O
&run_modes
    config_ocean_run_mode = 'forward'
/
&time_management
    config_do_restart = .false.
    config_restart_timestamp_name = 'Restart_timestamp'
    config_start_time = '0001-01-01_00:00:00'
    config_stop_time = 'none'
    config_run_duration = '0030_00:00:00'
    config_calendar_type = 'noleap'
    config_output_reference_time = '0001-01-01_00:00:00'
/
&io
    config_write_output_on_startup = .false.
    config_pio_num_iotasks = 0
    config_pio_stride = 1
/
&decomposition
    config_num_halos = 3
    config_block_decomp_file_prefix = 'graph.info.part.'
    config_number_of_blocks = 0
    config_explicit_proc_decomp = .false.
    config_proc_decomp_file_prefix = 'graph.info.part.'
/
&time_integration
    config_dt = '00:00:20'
    config_time_integrator = 'RK4'
    config_number_of_time_levels = 2
/
&hmix
    config_hmix_scaleWithMesh = .false.
    config_maxMeshDensity = -1.0
    config_hmix_use_ref_cell_width = .false.
    config_hmix_ref_cell_width = 30.0e3
    config_apvm_scale_factor = 0.0
/
&hmix_del2
    config_use_mom_del2 = .true.
    config_mom_del2 = 10.0
    config_use_tracer_del2 = .false.
    config_tracer_del2 = 10.0
/
&hmix_del4
    config_use_mom_del4 = .false.
    config_mom_del4 = 1.2e11
    config_mom_del4_div_factor = 1.0
    config_use_tracer_del4 = .false.
    config_tracer_del4 = 0.0
/
&hmix_Leith
    config_use_Leith_del2 = .false.
    config_Leith_parameter = 1.0
    config_Leith_dx = 15000.0
    config_Leith_visc2_max = 2.5e3
/
&Redi_isopycnal_mixing
    config_use_Redi = .false.
    config_Redi_closure = 'constant'
    config_Redi_constant_kappa = 600.0
    config_Redi_maximum_slope = 0.3
    config_Redi_use_slope_taper = .true.
    config_Redi_use_surface_taper = .true.
    config_Redi_limit_term1 = .true.
    config_Redi_use_quasi_monotone_limiter = .true.
    config_Redi_quasi_monotone_safety_factor = 0.9
    config_Redi_min_layers_diag_terms = 6
    config_Redi_horizontal_taper = 'ramp'
    config_Redi_horizontal_ramp_min = 20e3
    config_Redi_horizontal_ramp_max = 30e3
/
&submesoscale_eddy_parameterization
    config_submesoscale_enable = .false.
    config_submesoscale_tau = 172800
    config_submesoscale_Ce = 0.06
    config_submesoscale_Lfmin = 1000.0
    config_submesoscale_ds_max = 100000.0
/
&GM_eddy_parameterization
    config_use_GM = .false.
    config_GM_closure = 'EdenGreatbatch'
    config_GM_constant_kappa = 600.0
    config_GM_constant_bclModeSpeed = 0.3
    config_GM_minBclModeSpeed_method = 'constant'
    config_GM_spatially_variable_min_kappa = 300.0
    config_GM_spatially_variable_max_kappa = 1800.0
    config_GM_spatially_variable_baroclinic_mode = 1.0
    config_GM_Visbeck_alpha = 0.005
    config_GM_Visbeck_max_depth = 1000.0
    config_GM_EG_riMin = 200.0
    config_GM_EG_kappa_factor = 3.0
    config_GM_EG_Rossby_factor = 2.0
    config_GM_EG_Rhines_factor = 0.3
    config_GM_horizontal_taper = 'ramp'
    config_GM_horizontal_ramp_min = 20e3
    config_GM_horizontal_ramp_max = 30e3
    config_GMRedi_Rossby_ramp_min = 0.5
    config_GMRedi_Rossby_ramp_max = 3.0
/
&eddy_kinetic_energy_correction
    config_eke_correction_enable = .false.
    config_eke_alpha = -2.9e-3
    config_eke_beta = 0.008
/
&eddy_parameterization
    config_eddyMLD_dens_threshold = 0.03
    config_eddyMLD_reference_depth = 10
    config_eddyMLD_reference_pressure = 1.0e5
    config_eddyMLD_use_old = .true.
/
&cvmix
    config_use_cvmix = .false.
    config_cvmix_prandtl_number = 1.0
    config_cvmix_background_scheme = 'constant'
    config_cvmix_background_diffusion = 1.0e-5
    config_cvmix_background_diffusion_passive = 1.0e-5
    config_cvmix_background_diffusion_passive_enable = .false.
    config_cvmix_background_viscosity = 0.0001
    config_cvmix_BryanLewis_bl1 = 8.0e-5
    config_cvmix_BryanLewis_bl2 = 1.05E-4
    config_cvmix_BryanLewis_transitionDepth = 2500
    config_cvmix_BryanLewis_transitionWidth = 222.
    config_use_cvmix_convection = .false.
    config_cvmix_convective_diffusion = 1.0
    config_cvmix_convective_viscosity = 1.0
    config_cvmix_convective_basedOnBVF = .false.
    config_cvmix_convective_triggerBVF = 0.0
    config_use_cvmix_shear = .false.
    config_cvmix_num_ri_smooth_loops = 2
    config_cvmix_use_BLD_smoothing = .false.
    config_cvmix_shear_mixing_scheme = 'PP'
    config_cvmix_shear_PP_nu_zero = 0.005
    config_cvmix_shear_PP_alpha = 5.0
    config_cvmix_shear_PP_exp = 2.0
    config_cvmix_shear_KPP_nu_zero = 0.005
    config_cvmix_shear_KPP_Ri_zero = 0.7
    config_cvmix_shear_KPP_exp = 3
    config_use_cvmix_tidal_mixing = .false.
    config_use_cvmix_double_diffusion = .false.
    config_use_cvmix_kpp = .false.
    config_use_cvmix_fixed_boundary_layer = .false.
    config_cvmix_kpp_boundary_layer_depth = 30.0
    config_cvmix_kpp_criticalBulkRichardsonNumber = 0.25
    config_cvmix_kpp_matching = 'SimpleShapes'
    config_cvmix_kpp_EkmanOBL = .false.
    config_cvmix_kpp_MonObOBL = .false.
    config_cvmix_kpp_interpolationOMLType = 'quadratic'
    config_cvmix_kpp_surface_layer_extent = 0.1
    config_cvmix_kpp_surface_layer_averaging = 5.0
    configure_cvmix_kpp_minimum_OBL_under_sea_ice = 10.0
    config_cvmix_kpp_stop_OBL_search = 100.0
    config_cvmix_kpp_use_enhanced_diff = .true.
    config_cvmix_kpp_nonlocal_with_implicit_mix = .false.
    config_cvmix_kpp_use_theory_wave = .false.
    config_cvmix_kpp_langmuir_mixing_opt = 'NONE'
    config_cvmix_kpp_langmuir_entrainment_opt = 'NONE'
    config_cvmix_kpp_use_active_wave = .false.
/
&wave_coupling
    config_use_active_wave = .false.
    config_n_stokes_drift_wavenumber_partitions = 6
/
&gotm
    config_use_gotm = .false.
    config_gotm_namelist_file = 'gotmturb.nml'
    config_gotm_constant_surface_roughness_length = 0.02
    config_gotm_constant_bottom_roughness_length = 0.0015
    config_gotm_constant_bottom_drag_coeff = 1.e-3
/
&forcing
    config_use_variable_drag = .false.
    config_use_bulk_wind_stress = .false.
    config_bulk_wind_stress_interp_isotropic = .false.
    config_use_bulk_thickness_flux = .false.
    config_flux_attenuation_coefficient = 0.001
    config_flux_attenuation_coefficient_runoff = 0.001
    config_subglacial_runoff_mode = 'off'
    config_flux_attenuation_coefficient_subglacial_runoff = 0.001
    config_sgr_flux_vertical_location = 'bottom'
    config_use_sgr_opt_kpp = .false.
    config_use_sgr_opt_temp_prescribed = .false.
    config_use_sgr_opt_salt_prescribed = .false.
    config_sgr_temperature_prescribed = 0.0
    config_sgr_salinity_prescribed = 0.0
/
&precip_scaling
    config_use_precip_scaling = .false.
    config_precip_scaling_mode = 'constant'
    config_precip_scaling_initial_factor = 1.0
    config_precip_scaling_constant_factor = 1.0
    config_precip_scaling_history_years = 1
    config_precip_scaling_write_to_logfile = .false.
/
&time_varying_forcing
    config_use_time_varying_atmospheric_forcing = .false.
    config_time_varying_atmospheric_forcing_type = 'WINDPRES'
    config_time_varying_atmospheric_forcing_start_time = '0001-01-01_00:00:00'
    config_time_varying_atmospheric_forcing_reference_time = '0001-01-01_00:00:00'
    config_time_varying_atmospheric_forcing_cycle_start = '0001-01-01_00:00:00'
    config_time_varying_atmospheric_forcing_cycle_duration = '2-00-00_00:00:00'
    config_time_varying_atmospheric_forcing_interval = '01:00:00'
    config_time_varying_atmospheric_forcing_ramp = 10.0
    config_time_varying_atmospheric_forcing_ramp_delay = 0.0
    config_use_time_varying_land_ice_forcing = .false.
    config_time_varying_land_ice_forcing_start_time = '0001-01-01_00:00:00'
    config_time_varying_land_ice_forcing_reference_time = '0001-01-01_00:00:00'
    config_time_varying_land_ice_forcing_cycle_start = '0001-01-01_00:00:00'
    config_time_varying_land_ice_forcing_cycle_duration = '2-00-00_00:00:00'
    config_time_varying_land_ice_forcing_interval = '01:00:00'
/
&coupling
    config_remove_ais_river_runoff = .false.
    config_remove_ais_ice_runoff = .false.
    config_scale_dismf_by_removed_ice_runoff = .false.
    config_ais_ice_runoff_history_days = 731
    config_n_glc_z_levels = 0
    config_glc_thermal_forcing_coupling_mode = 'off'
/
&shortwaveRadiation
    config_sw_absorption_type = 'none'
    config_jerlov_water_type = 3
    config_surface_buoyancy_depth = 1
    config_enable_shortwave_energy_fixer = .false.
/
&tidal_forcing
    config_use_tidal_forcing = .false.
    config_use_tidal_forcing_tau = 10000
    config_tidal_forcing_type = 'off'
    config_tidal_forcing_model = 'off'
    config_tidal_forcing_monochromatic_amp = 2.0
    config_tidal_forcing_monochromatic_period = 0.5
    config_tidal_forcing_monochromatic_phaseLag = 0.0
    config_tidal_forcing_monochromatic_baseline = 0.0
    config_tidal_forcing_linear_baseline = 0.0
    config_tidal_forcing_linear_min = -1.0
    config_tidal_forcing_linear_rate = -8.0
/
&self_attraction_loading
    config_use_self_attraction_loading = .false.
    config_self_attraction_loading_depth_cutoff = 10.0
    config_mpas_to_grid_weights_file = 'mpas_to_grid.nc'
    config_grid_to_mpas_weights_file = 'grid_to_mpas.nc'
    config_self_attraction_loading_compute_interval = '0000-00-00_00:30:00'
    config_nLatitude = 128
    config_nLongitude = 256
    config_use_parallel_self_attraction_loading = .false.
    config_parallel_self_attraction_loading_order = 10
    config_parallel_self_attraction_loading_n_cells_per_block = 600
    config_parallel_self_attraction_loading_bfb = .false.
/
&tidal_potential_forcing
    config_use_tidal_potential_forcing = .false.
    config_tidal_potential_reference_time = '0001-01-01_00:00:00'
    config_use_tidal_potential_forcing_M2 = .true.
    config_use_tidal_potential_forcing_S2 = .true.
    config_use_tidal_potential_forcing_N2 = .true.
    config_use_tidal_potential_forcing_K2 = .true.
    config_use_tidal_potential_forcing_K1 = .true.
    config_use_tidal_potential_forcing_O1 = .true.
    config_use_tidal_potential_forcing_Q1 = .true.
    config_use_tidal_potential_forcing_P1 = .true.
    config_tidal_potential_ramp = 10.0
    config_self_attraction_and_loading_beta = 0.09
/
&frazil_ice
    config_use_frazil_ice_formation = .false.
    config_frazil_in_open_ocean = .true.
    config_frazil_under_land_ice = .false.
    config_frazil_heat_of_fusion = 3.34e5
    config_use_frazil_ice_porosity = .false.
    config_frazil_ice_density = 1000.0
    config_frazil_ice_porosity = 1.0
    config_frazil_fractional_thickness_limit = 0.1
    config_specific_heat_sea_water = 3985.0
    config_frazil_maximum_depth = 100.0
    config_frazil_sea_ice_reference_salinity = 4.0
    config_frazil_maximum_freezing_temperature = 0.0
    config_frazil_use_surface_pressure = .true.
/
&land_ice
    config_land_ice_draft_mode = 'pressure-dependent'
    config_land_ice_rho_ocean = 1028.0
/
&land_ice_fluxes
    config_land_ice_flux_mode = 'off'
    config_land_ice_flux_formulation = 'Jenkins'
    config_land_ice_flux_useHollandJenkinsAdvDiff = .false.
    config_land_ice_flux_attenuation_coefficient = 10.0
    config_land_ice_flux_boundaryLayerThickness = 10.0
    config_land_ice_flux_boundaryLayerNeighborWeight = 0.0
    config_land_ice_flux_cp_ice = 2.009e3
    config_land_ice_flux_rho_ice = 918
    config_land_ice_flux_explicit_topDragCoeff = 2.5e-3
    config_land_ice_flux_ISOMIP_gammaT = 1e-4
    config_land_ice_flux_jenkins_heat_transfer_coefficient = 0.011
    config_land_ice_flux_jenkins_salt_transfer_coefficient = 3.1e-4
    config_land_ice_flux_tidal_Jourdain_alpha = 1
    config_land_ice_flux_tidal_Jourdain_A0 = 0
    config_land_ice_flux_tidal_Jourdain_U0 = 5e-2
/
&advection
    config_vert_advection_method = 'flux-form'
    config_vert_remap_order = 2
    config_vert_remap_interval = 0
    config_vert_tracer_adv_flux_order = 3
    config_horiz_tracer_adv_order = 2
    config_coef_3rd_order = 0.25
    config_flux_limiter = 'none'
    config_remap_limiter = 'none'
    config_thickness_flux_type = 'centered'
    config_use_spatially_variable_upwind = .false.
    config_spatially_variable_upwind_hmin = 5.0
    config_spatially_variable_upwind_hmax = 10.0
/
&bottom_drag
    config_bottom_drag_mode = 'explicit'
    config_implicit_bottom_drag_type = 'constant'
    config_implicit_constant_bottom_drag_coeff = 0.0
    config_use_implicit_top_drag = .false.
    config_implicit_top_drag_coeff = 0.0
    config_loglaw_bottom_roughness = 0.0
    config_loglaw_layer_depth_max = 10.0
    config_loglaw_bottom_drag_min = 0.0
    config_loglaw_bottom_drag_max = 0.0
    config_explicit_bottom_drag_coeff = 0.0
    config_use_topographic_wave_drag = .false.
    config_topographic_wave_drag_scheme = 'ZAE'
    config_topographic_wave_drag_coeff = 0.0
    config_thickness_drag_type = 'centered'
    config_topographic_wave_drag_cutoff_depth = 500
    config_topographic_wave_drag_cutoff_width = 10
/
&Rayleigh_damping
    config_Rayleigh_damping_coeff = 1.0e-4
    config_Rayleigh_damping_depth_variable = .false.
    config_Rayleigh_bottom_friction = .false.
    config_Rayleigh_bottom_damping_coeff = 1.0e-4
/
&vegetation_drag
    config_use_vegetation_drag = .false.
    config_vegetation_drag_coefficient = 1.09
/
&wetting_drying
    config_use_wetting_drying = .false.
    config_prevent_drying = .false.
    config_drying_min_cell_height = 1.0e-3
    config_zero_drying_velocity = .false.
    config_zero_drying_velocity_ramp = .false.
    config_zero_drying_velocity_ramp_hmin = 1e-3
    config_zero_drying_velocity_ramp_hmax = 2e-3
    config_verify_not_dry = .false.
    config_drying_safety_height = 1.0e-10
    config_use_subgrid_wetting_drying = .false.
    config_use_ssh_gradient_wetting_drying = .false.
/
&ocean_constants
    config_density0 = 1026.0
/
&lts
    config_dt_scaling_LTS = 1
/
&forward_backward
    config_fb_weight_1 = 0.531
    config_fb_weight_2 = 0.531
    config_fb_weight_3 = 0.313
/
&pressure_gradient
    config_pressure_gradient_type = 'pressure_and_zmid'
    config_common_level_weight = 0.5
    config_zonal_ssh_grad = 0.0
    config_meridional_ssh_grad = 0.0
/
&eos
    config_eos_type = 'linear'
    config_open_ocean_freezing_temperature_coeff_0 = 0.0
    config_open_ocean_freezing_temperature_coeff_S = 0.0
    config_open_ocean_freezing_temperature_coeff_p = 0.0
    config_open_ocean_freezing_temperature_coeff_pS = 0.0
    config_open_ocean_freezing_temperature_coeff_mushy_az1_liq = -18.48
    config_land_ice_cavity_freezing_temperature_coeff_0 = 6.22e-2
    config_land_ice_cavity_freezing_temperature_coeff_S = -5.63e-2
    config_land_ice_cavity_freezing_temperature_coeff_p = -7.43e-8
    config_land_ice_cavity_freezing_temperature_coeff_pS = -1.74e-10
/
&eos_linear
    config_eos_linear_alpha = 0.2
    config_eos_linear_beta = 0.8
    config_eos_linear_Tref = 0.0
    config_eos_linear_Sref = 0.0
    config_eos_linear_densityref = 1000.0
/
&eos_wright
    config_eos_wright_ref_pressure = 0.0
/
&split_timestep_share
    config_n_ts_iter = 2
    config_n_bcl_iter_beg = 1
    config_n_bcl_iter_mid = 2
    config_n_bcl_iter_end = 2
/
&split_explicit_ts
    config_btr_dt = '00:00:15'
    config_n_btr_cor_iter = 2
    config_vel_correction = .true.
    config_btr_subcycle_loop_factor = 2
    config_btr_gam1_velWt1 = 0.5333
    config_btr_gam2_SSHWt1 = 0.5333
    config_btr_gam3_velWt2 = 1.0
    config_btr_solve_SSH2 = .false.
/
&split_implicit_ts
    config_btr_si_preconditioner = 'ras'
    config_btr_si_tolerance = 1.0e-9
    config_n_btr_si_large_iter = 1
    config_btr_si_partition_match_mode = .false.
/
&ALE_vertical_grid
    config_vert_coord_movement = 'uniform_stretching'
    config_ALE_thickness_proportionality = 'restingThickness_times_weights'
    config_vert_taper_weight_depth_1 = 250.0
    config_vert_taper_weight_depth_2 = 500.0
    config_use_min_max_thickness = .false.
    config_min_thickness = 1.0
    config_max_thickness_factor = 6.0
    config_dzdk_positive = .false.
/
&ALE_frequency_filtered_thickness
    config_use_freq_filtered_thickness = .false.
    config_thickness_filter_timescale = 5.0
    config_use_highFreqThick_restore = .false.
    config_highFreqThick_restore_time = 30.0
    config_use_highFreqThick_del2 = .false.
    config_highFreqThick_del2 = 100.0
/
&debug
    config_check_zlevel_consistency = .false.
    config_check_ssh_consistency = .false.
    config_filter_btr_mode = .false.
    config_prescribe_velocity = .false.
    config_prescribe_thickness = .false.
    config_include_KE_vertex = .false.
    config_check_tracer_monotonicity = .false.
    config_compute_active_tracer_budgets = .false.
    config_disable_thick_all_tend = .false.
    config_disable_thick_hadv = .false.
    config_disable_thick_vadv = .false.
    config_disable_thick_sflux = .true.
    config_disable_vel_all_tend = .false.
    config_disable_vel_hadv = .false.
    config_disable_vel_coriolis = .false.
    config_disable_vel_pgrad = .false.
    config_disable_vel_hmix = .false.
    config_disable_vel_surface_stress = .true.
    config_disable_vel_topographic_wave_drag = .true.
    config_disable_vel_explicit_bottom_drag = .true.
    config_disable_vel_vmix = .true.
    config_disable_vel_vadv = .false.
    config_disable_tr_all_tend = .false.
    config_disable_tr_adv = .false.
    config_disable_tr_hmix = .false.
    config_disable_tr_vmix = .true.
    config_disable_tr_sflux = .true.
    config_disable_tr_nonlocalflux = .true.
    config_disable_redi_k33 = .false.
    config_read_nearest_restart = .false.
/
&testing
    config_conduct_tests = .false.
    config_test_tensors = .false.
    config_tensor_test_function = 'sph_uCosCos'
/
&transport_tests
    config_transport_tests_vert_levels = 3
    config_transport_tests_temperature = 15.0
    config_transport_tests_salinity = 35.0
    config_transport_tests_flow_id = 0
/
&init_mode_vert_levels
    config_vert_levels = -1
/
&manufactured_solution
    config_use_manufactured_solution = .false.
    config_manufactured_solution_wavelength_x = 2000000.0
    config_manufactured_solution_wavelength_y = 2000000.0
    config_manufactured_solution_amplitude = 1
/
&init_mode_subgrid
    config_subgrid_table_levels = -1
/
&tracer_forcing_activeTracers
    config_use_activeTracers = .true.
    config_use_activeTracers_surface_bulk_forcing = .false.
    config_use_activeTracers_surface_restoring = .false.
    config_use_activeTracers_interior_restoring = .false.
    config_use_activeTracers_exponential_decay = .false.
    config_use_activeTracers_idealAge_forcing = .false.
    config_use_activeTracers_ttd_forcing = .false.
    config_use_surface_salinity_monthly_restoring = .false.
    config_surface_salinity_monthly_restoring_compute_interval = 'dt'
    config_salinity_restoring_constant_piston_velocity = 1.585e-5
    config_salinity_restoring_max_difference = 100.0
    config_salinity_restoring_under_sea_ice = .true.
/
&tracer_forcing_debugTracers
    config_use_debugTracers = .false.
    config_reset_debugTracers_near_surface = .false.
    config_reset_debugTracers_top_nLayers = 20
    config_use_debugTracers_surface_bulk_forcing = .false.
    config_use_debugTracers_surface_restoring = .false.
    config_use_debugTracers_interior_restoring = .false.
    config_use_debugTracers_exponential_decay = .false.
    config_use_debugTracers_idealAge_forcing = .false.
    config_use_debugTracers_ttd_forcing = .false.
/
&tracer_forcing_ecosysTracers
    config_use_ecosysTracers = .false.
    config_ecosys_atm_co2_option = 'none'
    config_ecosys_atm_alt_co2_option = 'none'
    config_ecosys_atm_alt_co2_use_eco = .true.
    config_ecosys_atm_co2_constant_value = 379.0
    config_use_ecosysTracers_surface_bulk_forcing = .false.
    config_use_ecosysTracers_surface_restoring = .false.
    config_use_ecosysTracers_interior_restoring = .false.
    config_use_ecosysTracers_exponential_decay = .false.
    config_use_ecosysTracers_idealAge_forcing = .false.
    config_use_ecosysTracers_ttd_forcing = .false.
    config_use_ecosysTracers_surface_value = .false.
    config_use_ecosysTracers_river_inputs_from_coupler = .false.
    config_use_ecosys_frazil_tendencies = .false.
    config_use_ecosysTracers_sea_ice_coupling = .false.
    config_ecosysTracers_diagnostic_fields_level1 = .false.
    config_ecosysTracers_diagnostic_fields_level2 = .false.
    config_ecosysTracers_diagnostic_fields_level3 = .false.
    config_ecosysTracers_diagnostic_fields_level4 = .false.
    config_ecosysTracers_diagnostic_fields_level5 = .false.
/
&tracer_forcing_freshwaterTracers
    config_use_freshwaterTracers = .false.
    config_use_freshwaterTracers_surface_bulk_forcing = .true.
    config_use_freshwaterTracers_surface_restoring = .false.
    config_use_freshwaterTracers_interior_restoring = .false.
    config_use_freshwaterTracers_exponential_decay = .false.
    config_use_freshwaterTracers_idealAge_forcing = .false.
    config_use_freshwaterTracers_ttd_forcing = .false.
    config_use_freshwaterTracers_surface_value = .false.
    config_use_freshwaterTracers_rainFlux = .true.
    config_use_freshwaterTracers_snowFlux = .true.
    config_use_freshwaterTracers_iceRunoffFlux = .true.
    config_use_freshwaterTracers_riverRunoffFlux = .true.
    config_use_freshwaterTracers_subglacialRunoffFlux = .false.
    config_use_freshwaterTracers_seaIceFreshWaterFlux = .true.
    config_use_freshwaterTracers_icebergFreshWaterFlux = .false.
    config_use_freshwaterTracers_landIceFreshwaterFlux = .false.
/
&tracer_forcing_DMSTracers
    config_use_DMSTracers = .false.
    config_use_DMSTracers_surface_bulk_forcing = .false.
    config_use_DMSTracers_surface_restoring = .false.
    config_use_DMSTracers_interior_restoring = .false.
    config_use_DMSTracers_exponential_decay = .false.
    config_use_DMSTracers_idealAge_forcing = .false.
    config_use_DMSTracers_ttd_forcing = .false.
    config_use_DMSTracers_surface_value = .false.
    config_use_DMSTracers_sea_ice_coupling = .false.
/
&tracer_forcing_MacroMoleculesTracers
    config_use_MacroMoleculesTracers = .false.
    config_use_MacroMoleculesTracers_surface_bulk_forcing = .false.
    config_use_MacroMoleculesTracers_surface_restoring = .false.
    config_use_MacroMoleculesTracers_interior_restoring = .false.
    config_use_MacroMoleculesTracers_exponential_decay = .false.
    config_use_MacroMoleculesTracers_idealAge_forcing = .false.
    config_use_MacroMoleculesTracers_ttd_forcing = .false.
    config_use_MacroMoleculesTracers_surface_value = .false.
    config_use_MacroMoleculesTracers_sea_ice_coupling = .false.
/
&tracer_forcing_idealAgeTracers
    config_use_idealAgeTracers = .false.
    config_use_idealAgeTracers_surface_bulk_forcing = .false.
    config_use_idealAgeTracers_surface_restoring = .false.
    config_use_idealAgeTracers_interior_restoring = .false.
    config_use_idealAgeTracers_exponential_decay = .false.
    config_use_idealAgeTracers_idealAge_forcing = .true.
    config_use_idealAgeTracers_ttd_forcing = .false.
/
&tracer_forcing_CFCTracers
    config_use_CFCTracers = .false.
    config_use_CFCTracers_surface_bulk_forcing = .false.
    config_use_CFCTracers_surface_restoring = .false.
    config_use_CFCTracers_interior_restoring = .false.
    config_use_CFCTracers_exponential_decay = .false.
    config_use_CFCTracers_idealAge_forcing = .false.
    config_use_CFCTracers_ttd_forcing = .false.
    config_use_CFC11 = .true.
    config_use_CFC12 = .true.
/
&AM_globalStats
    config_AM_globalStats_enable = .false.
    config_AM_globalStats_compute_interval = 'output_interval'
    config_AM_globalStats_compute_on_startup = .false.
    config_AM_globalStats_write_on_startup = .false.
    config_AM_globalStats_text_file = .false.
    config_AM_globalStats_directory = 'analysis_members'
    config_AM_globalStats_output_stream = 'globalStatsOutput'
/
&AM_surfaceAreaWeightedAverages
    config_AM_surfaceAreaWeightedAverages_enable = .false.
    config_AM_surfaceAreaWeightedAverages_compute_on_startup = .true.
    config_AM_surfaceAreaWeightedAverages_write_on_startup = .true.
    config_AM_surfaceAreaWeightedAverages_compute_interval = 'output_interval'
    config_AM_surfaceAreaWeightedAverages_output_stream = 'surfaceAreaWeightedAveragesOutput'
/
&AM_waterMassCensus
    config_AM_waterMassCensus_enable = .false.
    config_AM_waterMassCensus_compute_interval = 'output_interval'
    config_AM_waterMassCensus_output_stream = 'waterMassCensusOutput'
    config_AM_waterMassCensus_compute_on_startup = .false.
    config_AM_waterMassCensus_write_on_startup = .false.
    config_AM_waterMassCensus_minTemperature = -2.0
    config_AM_waterMassCensus_maxTemperature = 30.0
    config_AM_waterMassCensus_minSalinity = 32.0
    config_AM_waterMassCensus_maxSalinity = 37.0
    config_AM_waterMassCensus_compute_predefined_regions = .true.
    config_AM_waterMassCensus_region_group = ''
/
&AM_layerVolumeWeightedAverage
    config_AM_layerVolumeWeightedAverage_enable = .false.
    config_AM_layerVolumeWeightedAverage_compute_interval = 'output_interval'
    config_AM_layerVolumeWeightedAverage_compute_on_startup = .false.
    config_AM_layerVolumeWeightedAverage_write_on_startup = .false.
    config_AM_layerVolumeWeightedAverage_output_stream = 'layerVolumeWeightedAverageOutput'
/
&AM_zonalMean
    config_AM_zonalMean_enable = .false.
    config_AM_zonalMean_compute_on_startup = .true.
    config_AM_zonalMean_write_on_startup = .true.
    config_AM_zonalMean_compute_interval = 'output_interval'
    config_AM_zonalMean_output_stream = 'zonalMeanOutput'
    config_AM_zonalMean_num_bins = 180
    config_AM_zonalMean_min_bin = -1.0e34
    config_AM_zonalMean_max_bin = -1.0e34
/
&AM_okuboWeiss
    config_AM_okuboWeiss_enable = .false.
    config_AM_okuboWeiss_compute_on_startup = .true.
    config_AM_okuboWeiss_write_on_startup = .true.
    config_AM_okuboWeiss_compute_interval = 'output_interval'
    config_AM_okuboWeiss_output_stream = 'okuboWeissOutput'
    config_AM_okuboWeiss_directory = 'analysis_members'
    config_AM_okuboWeiss_threshold_value = -0.2
    config_AM_okuboWeiss_normalization = 1e-10
    config_AM_okuboWeiss_lambda2_normalization = 1e-10
    config_AM_okuboWeiss_use_lat_lon_coords = .true.
    config_AM_okuboWeiss_compute_eddy_census = .true.
    config_AM_okuboWeiss_eddy_min_cells = 20
/
&AM_meridionalHeatTransport
    config_AM_meridionalHeatTransport_enable = .false.
    config_AM_meridionalHeatTransport_compute_interval = 'output_interval'
    config_AM_meridionalHeatTransport_compute_on_startup = .true.
    config_AM_meridionalHeatTransport_write_on_startup = .true.
    config_AM_meridionalHeatTransport_output_stream = 'meridionalHeatTransportOutput'
    config_AM_meridionalHeatTransport_num_bins = 180
    config_AM_meridionalHeatTransport_min_bin = -1.0e34
    config_AM_meridionalHeatTransport_max_bin = -1.0e34
    config_AM_meridionalHeatTransport_region_group = ''
/
&AM_testComputeInterval
    config_AM_testComputeInterval_enable = .false.
    config_AM_testComputeInterval_compute_interval = '00-00-01_00:00:00'
    config_AM_testComputeInterval_compute_on_startup = .true.
    config_AM_testComputeInterval_write_on_startup = .true.
    config_AM_testComputeInterval_output_stream = 'testComputeIntervalOutput'
/
&AM_highFrequencyOutput
    config_AM_highFrequencyOutput_enable = .false.
    config_AM_highFrequencyOutput_compute_interval = 'output_interval'
    config_AM_highFrequencyOutput_output_stream = 'highFrequencyOutput'
    config_AM_highFrequencyOutput_compute_on_startup = .true.
    config_AM_highFrequencyOutput_write_on_startup = .true.
/
&AM_timeFilters
    config_AM_timeFilters_enable = .false.
    config_AM_timeFilters_compute_interval = 'dt'
    config_AM_timeFilters_output_stream = 'timeFiltersOutput'
    config_AM_timeFilters_restart_stream = 'timeFiltersRestart'
    config_AM_timeFilters_compute_on_startup = .true.
    config_AM_timeFilters_write_on_startup = .true.
    config_AM_timeFilters_initialize_filters = .true.
    config_AM_timeFilters_tau = '90_00:00:00'
    config_AM_timeFilters_compute_cell_centered_values = .true.
/
&AM_lagrPartTrack
    config_AM_lagrPartTrack_enable = .false.
    config_AM_lagrPartTrack_compute_interval = 'dt'
    config_AM_lagrPartTrack_compute_on_startup = .false.
    config_AM_lagrPartTrack_output_stream = 'lagrPartTrackOutput'
    config_AM_lagrPartTrack_restart_stream = 'lagrPartTrackRestart'
    config_AM_lagrPartTrack_input_stream = 'lagrPartTrackInput'
    config_AM_lagrPartTrack_write_on_startup = .true.
    config_AM_lagrPartTrack_filter_number = 0
    config_AM_lagrPartTrack_timeIntegration = 2
    config_AM_lagrPartTrack_reset_criteria = 'none'
    config_AM_lagrPartTrack_reset_global_timestamp = '0000_00:00:00'
    config_AM_lagrPartTrack_region_stream = 'lagrPartTrackRegions'
    config_AM_lagrPartTrack_reset_if_outside_region = .false.
    config_AM_lagrPartTrack_reset_if_inside_region = .false.
    config_AM_lagrPartTrack_sample_horizontal_interp = .true.
    config_AM_lagrPartTrack_sample_temperature = .true.
    config_AM_lagrPartTrack_sample_salinity = .true.
    config_AM_lagrPartTrack_sample_DIC = .false.
    config_AM_lagrPartTrack_sample_ALK = .false.
    config_AM_lagrPartTrack_sample_PO4 = .false.
    config_AM_lagrPartTrack_sample_NO3 = .false.
    config_AM_lagrPartTrack_sample_SiO3 = .false.
    config_AM_lagrPartTrack_sample_NH4 = .false.
    config_AM_lagrPartTrack_sample_Fe = .false.
    config_AM_lagrPartTrack_sample_O2 = .false.
/
&AM_eliassenPalm
    config_AM_eliassenPalm_enable = .false.
    config_AM_eliassenPalm_compute_interval = 'output_interval'
    config_AM_eliassenPalm_output_stream = 'eliassenPalmOutput'
    config_AM_eliassenPalm_restart_stream = 'eliassenPalmRestart'
    config_AM_eliassenPalm_compute_on_startup = .true.
    config_AM_eliassenPalm_write_on_startup = .true.
    config_AM_eliassenPalm_debug = .false.
    config_AM_eliassenPalm_nBuoyancyLayers = 45
    config_AM_eliassenPalm_rhomin_buoycoor = 900
    config_AM_eliassenPalm_rhomax_buoycoor = 1080
/
&AM_mixedLayerDepths
    config_AM_mixedLayerDepths_enable = .false.
    config_AM_mixedLayerDepths_compute_interval = 'output_interval'
    config_AM_mixedLayerDepths_output_stream = 'mixedLayerDepthsOutput'
    config_AM_mixedLayerDepths_write_on_startup = .true.
    config_AM_mixedLayerDepths_compute_on_startup = .true.
    config_AM_mixedLayerDepths_Tthreshold = .true.
    config_AM_mixedLayerDepths_crit_temp_threshold = 0.2
    config_AM_mixedLayerDepths_reference_pressure = 1.0E5
    config_AM_mixedLayerDepths_Tgradient = .false.
    config_AM_mixedLayerDepths_Dgradient = .false.
    config_AM_mixedLayerDepths_temp_gradient_threshold = 5E-7
    config_AM_mixedLayerDepths_den_gradient_threshold = 5E-8
    config_AM_mixedLayerDepths_interp_method = 1
/
&AM_regionalStatsDaily
    config_AM_regionalStatsDaily_enable = .false.
    config_AM_regionalStatsDaily_compute_on_startup = .false.
    config_AM_regionalStatsDaily_write_on_startup = .false.
    config_AM_regionalStatsDaily_compute_interval = 'output_interval'
    config_AM_regionalStatsDaily_output_stream = 'regionalStatsDailyOutput'
    config_AM_regionalStatsDaily_restart_stream = 'regionalMasksInput'
    config_AM_regionalStatsDaily_input_stream = 'regionalMasksInput'
    config_AM_regionalStatsDaily_operation = 'avg'
    config_AM_regionalStatsDaily_region_type = 'cell'
    config_AM_regionalStatsDaily_region_group = 'all'
    config_AM_regionalStatsDaily_1d_weighting_function = 'mul'
    config_AM_regionalStatsDaily_2d_weighting_function = 'mul'
    config_AM_regionalStatsDaily_1d_weighting_field = 'areaCell'
    config_AM_regionalStatsDaily_2d_weighting_field = 'volumeCell'
    config_AM_regionalStatsDaily_vertical_mask = 'cellMask'
    config_AM_regionalStatsDaily_vertical_dimension = 'nVertLevels'
/
&AM_regionalStatsWeekly
    config_AM_regionalStatsWeekly_enable = .false.
    config_AM_regionalStatsWeekly_compute_on_startup = .false.
    config_AM_regionalStatsWeekly_write_on_startup = .false.
    config_AM_regionalStatsWeekly_compute_interval = 'output_interval'
    config_AM_regionalStatsWeekly_output_stream = 'regionalStatsWeeklyOutput'
    config_AM_regionalStatsWeekly_restart_stream = 'regionalMasksInput'
    config_AM_regionalStatsWeekly_input_stream = 'regionalMasksInput'
    config_AM_regionalStatsWeekly_operation = 'avg'
    config_AM_regionalStatsWeekly_region_type = 'cell'
    config_AM_regionalStatsWeekly_region_group = 'all'
    config_AM_regionalStatsWeekly_1d_weighting_function = 'mul'
    config_AM_regionalStatsWeekly_2d_weighting_function = 'mul'
    config_AM_regionalStatsWeekly_1d_weighting_field = 'areaCell'
    config_AM_regionalStatsWeekly_2d_weighting_field = 'volumeCell'
    config_AM_regionalStatsWeekly_vertical_mask = 'cellMask'
    config_AM_regionalStatsWeekly_vertical_dimension = 'nVertLevels'
/
&AM_regionalStatsMonthly
    config_AM_regionalStatsMonthly_enable = .false.
    config_AM_regionalStatsMonthly_compute_on_startup = .false.
    config_AM_regionalStatsMonthly_write_on_startup = .false.
    config_AM_regionalStatsMonthly_compute_interval = 'output_interval'
    config_AM_regionalStatsMonthly_output_stream = 'regionalStatsMonthlyOutput'
    config_AM_regionalStatsMonthly_restart_stream = 'regionalMasksInput'
    config_AM_regionalStatsMonthly_input_stream = 'regionalMasksInput'
    config_AM_regionalStatsMonthly_operation = 'avg'
    config_AM_regionalStatsMonthly_region_type = 'cell'
    config_AM_regionalStatsMonthly_region_group = 'all'
    config_AM_regionalStatsMonthly_1d_weighting_function = 'mul'
    config_AM_regionalStatsMonthly_2d_weighting_function = 'mul'
    config_AM_regionalStatsMonthly_1d_weighting_field = 'areaCell'
    config_AM_regionalStatsMonthly_2d_weighting_field = 'volumeCell'
    config_AM_regionalStatsMonthly_vertical_mask = 'cellMask'
    config_AM_regionalStatsMonthly_vertical_dimension = 'nVertLevels'
/
&AM_regionalStatsCustom
    config_AM_regionalStatsCustom_enable = .false.
    config_AM_regionalStatsCustom_compute_on_startup = .false.
    config_AM_regionalStatsCustom_write_on_startup = .false.
    config_AM_regionalStatsCustom_compute_interval = 'output_interval'
    config_AM_regionalStatsCustom_output_stream = 'regionalStatsCustomOutput'
    config_AM_regionalStatsCustom_restart_stream = 'regionalMasksInput'
    config_AM_regionalStatsCustom_input_stream = 'regionalMasksInput'
    config_AM_regionalStatsCustom_operation = 'avg'
    config_AM_regionalStatsCustom_region_type = 'cell'
    config_AM_regionalStatsCustom_region_group = 'all'
    config_AM_regionalStatsCustom_1d_weighting_function = 'mul'
    config_AM_regionalStatsCustom_2d_weighting_function = 'mul'
    config_AM_regionalStatsCustom_1d_weighting_field = 'areaCell'
    config_AM_regionalStatsCustom_2d_weighting_field = 'volumeCell'
    config_AM_regionalStatsCustom_vertical_mask = 'cellMask'
    config_AM_regionalStatsCustom_vertical_dimension = 'nVertLevels'
/
&AM_timeSeriesStatsDaily
    config_AM_timeSeriesStatsDaily_enable = .false.
    config_AM_timeSeriesStatsDaily_compute_on_startup = .false.
    config_AM_timeSeriesStatsDaily_write_on_startup = .false.
    config_AM_timeSeriesStatsDaily_compute_interval = '00-00-00_01:00:00'
    config_AM_timeSeriesStatsDaily_output_stream = 'timeSeriesStatsDailyOutput'
    config_AM_timeSeriesStatsDaily_restart_stream = 'timeSeriesStatsDailyRestart'
    config_AM_timeSeriesStatsDaily_operation = 'avg'
    config_AM_timeSeriesStatsDaily_reference_times = 'initial_time'
    config_AM_timeSeriesStatsDaily_duration_intervals = 'repeat_interval'
    config_AM_timeSeriesStatsDaily_repeat_intervals = 'reset_interval'
    config_AM_timeSeriesStatsDaily_reset_intervals = '00-00-01_00:00:00'
    config_AM_timeSeriesStatsDaily_backward_output_offset = '00-00-01_00:00:00'
/
&AM_timeSeriesStatsMonthly
    config_AM_timeSeriesStatsMonthly_enable = .false.
    config_AM_timeSeriesStatsMonthly_compute_on_startup = .false.
    config_AM_timeSeriesStatsMonthly_write_on_startup = .false.
    config_AM_timeSeriesStatsMonthly_compute_interval = '00-00-00_01:00:00'
    config_AM_timeSeriesStatsMonthly_output_stream = 'timeSeriesStatsMonthlyOutput'
    config_AM_timeSeriesStatsMonthly_restart_stream = 'timeSeriesStatsMonthlyRestart'
    config_AM_timeSeriesStatsMonthly_operation = 'avg'
    config_AM_timeSeriesStatsMonthly_reference_times = 'initial_time'
    config_AM_timeSeriesStatsMonthly_duration_intervals = 'repeat_interval'
    config_AM_timeSeriesStatsMonthly_repeat_intervals = 'reset_interval'
    config_AM_timeSeriesStatsMonthly_reset_intervals = '00-01-00_00:00:00'
    config_AM_timeSeriesStatsMonthly_backward_output_offset = '00-01-00_00:00:00'
/
&AM_timeSeriesStatsClimatology
    config_AM_timeSeriesStatsClimatology_enable = .false.
    config_AM_timeSeriesStatsClimatology_compute_on_startup = .false.
    config_AM_timeSeriesStatsClimatology_write_on_startup = .false.
    config_AM_timeSeriesStatsClimatology_compute_interval = '00-00-00_01:00:00'
    config_AM_timeSeriesStatsClimatology_output_stream = 'timeSeriesStatsClimatologyOutput'
    config_AM_timeSeriesStatsClimatology_restart_stream = 'timeSeriesStatsClimatologyRestart'
    config_AM_timeSeriesStatsClimatology_operation = 'avg'
    config_AM_timeSeriesStatsClimatology_reference_times = '00-03-01_00:00:00;00-06-01_00:00:00;00-09-01_00:00:00;00-12-01_00:00:00'
    config_AM_timeSeriesStatsClimatology_duration_intervals = '00-03-00_00:00:00;00-03-00_00:00:00;00-03-00_00:00:00;00-03-00_00:00:00'
    config_AM_timeSeriesStatsClimatology_repeat_intervals = '01-00-00_00:00:00;01-00-00_00:00:00;01-00-00_00:00:00;01-00-00_00:00:00'
    config_AM_timeSeriesStatsClimatology_reset_intervals = '1000-00-00_00:00:00;1000-00-00_00:00:00;1000-00-00_00:00:00;1000-00-00_00:00:00'
    config_AM_timeSeriesStatsClimatology_backward_output_offset = '00-03-00_00:00:00'
/
&AM_timeSeriesStatsMonthlyMax
    config_AM_timeSeriesStatsMonthlyMax_enable = .false.
    config_AM_timeSeriesStatsMonthlyMax_compute_on_startup = .false.
    config_AM_timeSeriesStatsMonthlyMax_write_on_startup = .false.
    config_AM_timeSeriesStatsMonthlyMax_compute_interval = '00-00-00_01:00:00'
    config_AM_timeSeriesStatsMonthlyMax_output_stream = 'timeSeriesStatsMonthlyMaxOutput'
    config_AM_timeSeriesStatsMonthlyMax_restart_stream = 'timeSeriesStatsMonthlyMaxRestart'
    config_AM_timeSeriesStatsMonthlyMax_operation = 'max'
    config_AM_timeSeriesStatsMonthlyMax_reference_times = 'initial_time'
    config_AM_timeSeriesStatsMonthlyMax_duration_intervals = 'repeat_interval'
    config_AM_timeSeriesStatsMonthlyMax_repeat_intervals = 'reset_interval'
    config_AM_timeSeriesStatsMonthlyMax_reset_intervals = '00-01-00_00:00:00'
    config_AM_timeSeriesStatsMonthlyMax_backward_output_offset = '00-01-00_00:00:00'
/
&AM_timeSeriesStatsMonthlyMin
    config_AM_timeSeriesStatsMonthlyMin_enable = .false.
    config_AM_timeSeriesStatsMonthlyMin_compute_on_startup = .false.
    config_AM_timeSeriesStatsMonthlyMin_write_on_startup = .false.
    config_AM_timeSeriesStatsMonthlyMin_compute_interval = '00-00-00_01:00:00'
    config_AM_timeSeriesStatsMonthlyMin_output_stream = 'timeSeriesStatsMonthlyMinOutput'
    config_AM_timeSeriesStatsMonthlyMin_restart_stream = 'timeSeriesStatsMonthlyMinRestart'
    config_AM_timeSeriesStatsMonthlyMin_operation = 'min'
    config_AM_timeSeriesStatsMonthlyMin_reference_times = 'initial_time'
    config_AM_timeSeriesStatsMonthlyMin_duration_intervals = 'repeat_interval'
    config_AM_timeSeriesStatsMonthlyMin_repeat_intervals = 'reset_interval'
    config_AM_timeSeriesStatsMonthlyMin_reset_intervals = '00-01-00_00:00:00'
    config_AM_timeSeriesStatsMonthlyMin_backward_output_offset = '00-01-00_00:00:00'
/
&AM_timeSeriesStatsCustom
    config_AM_timeSeriesStatsCustom_enable = .false.
    config_AM_timeSeriesStatsCustom_compute_on_startup = .false.
    config_AM_timeSeriesStatsCustom_write_on_startup = .false.
    config_AM_timeSeriesStatsCustom_compute_interval = '00-00-00_01:00:00'
    config_AM_timeSeriesStatsCustom_output_stream = 'timeSeriesStatsCustomOutput'
    config_AM_timeSeriesStatsCustom_restart_stream = 'timeSeriesStatsCustomRestart'
    config_AM_timeSeriesStatsCustom_operation = 'avg'
    config_AM_timeSeriesStatsCustom_reference_times = 'initial_time'
    config_AM_timeSeriesStatsCustom_duration_intervals = 'repeat_interval'
    config_AM_timeSeriesStatsCustom_repeat_intervals = 'reset_interval'
    config_AM_timeSeriesStatsCustom_reset_intervals = '00-00-07_00:00:00'
    config_AM_timeSeriesStatsCustom_backward_output_offset = '00-00-01_00:00:00'
/
&AM_pointwiseStats
    config_AM_pointwiseStats_enable = .false.
    config_AM_pointwiseStats_compute_interval = 'output_interval'
    config_AM_pointwiseStats_output_stream = 'pointwiseStatsOutput'
    config_AM_pointwiseStats_compute_on_startup = .true.
    config_AM_pointwiseStats_write_on_startup = .true.
/
&AM_debugDiagnostics
    config_AM_debugDiagnostics_enable = .false.
    config_AM_debugDiagnostics_compute_interval = 'output_interval'
    config_AM_debugDiagnostics_output_stream = 'debugDiagnosticsOutput'
    config_AM_debugDiagnostics_compute_on_startup = .true.
    config_AM_debugDiagnostics_write_on_startup = .true.
    config_AM_debugDiagnostics_check_state = .false.
/
&AM_rpnCalculator
    config_AM_rpnCalculator_enable = .false.
    config_AM_rpnCalculator_compute_on_startup = .true.
    config_AM_rpnCalculator_write_on_startup = .false.
    config_AM_rpnCalculator_compute_interval = '0010-00-00_00:00:00'
    config_AM_rpnCalculator_output_stream = 'none'
    config_AM_rpnCalculator_variable_a = 'layerThickness'
    config_AM_rpnCalculator_variable_b = 'areaCell'
    config_AM_rpnCalculator_variable_c = 'none'
    config_AM_rpnCalculator_variable_d = 'none'
    config_AM_rpnCalculator_variable_e = 'none'
    config_AM_rpnCalculator_variable_f = 'none'
    config_AM_rpnCalculator_variable_g = 'none'
    config_AM_rpnCalculator_variable_h = 'none'
    config_AM_rpnCalculator_expression_1 = 'a b *'
    config_AM_rpnCalculator_expression_2 = 'none'
    config_AM_rpnCalculator_expression_3 = 'none'
    config_AM_rpnCalculator_expression_4 = 'none'
    config_AM_rpnCalculator_output_name_1 = 'volumeCell'
    config_AM_rpnCalculator_output_name_2 = 'none'
    config_AM_rpnCalculator_output_name_3 = 'none'
    config_AM_rpnCalculator_output_name_4 = 'none'
/
&AM_transectTransport
    config_AM_transectTransport_enable = .false.
    config_AM_transectTransport_compute_interval = 'output_interval'
    config_AM_transectTransport_output_stream = 'transectTransportOutput'
    config_AM_transectTransport_compute_on_startup = .true.
    config_AM_transectTransport_write_on_startup = .true.
    config_AM_transectTransport_transect_group = 'all'
/
&AM_eddyProductVariables
    config_AM_eddyProductVariables_enable = .false.
    config_AM_eddyProductVariables_compute_interval = 'dt'
    config_AM_eddyProductVariables_output_stream = 'eddyProductVariablesOutput'
    config_AM_eddyProductVariables_compute_on_startup = .true.
    config_AM_eddyProductVariables_write_on_startup = .false.
/
&AM_mocStreamfunction
    config_AM_mocStreamfunction_enable = .false.
    config_AM_mocStreamfunction_compute_interval = 'output_interval'
    config_AM_mocStreamfunction_output_stream = 'mocStreamfunctionOutput'
    config_AM_mocStreamfunction_compute_on_startup = .true.
    config_AM_mocStreamfunction_write_on_startup = .true.
    config_AM_mocStreamfunction_min_bin = -1.0e34
    config_AM_mocStreamfunction_max_bin = -1.0e34
    config_AM_mocStreamfunction_num_bins = 180
    config_AM_mocStreamfunction_region_group = 'all'
    config_AM_mocStreamfunction_transect_group = 'all'
/
&AM_oceanHeatContent
    config_AM_oceanHeatContent_enable = .false.
    config_AM_oceanHeatContent_compute_interval = 'output_interval'
    config_AM_oceanHeatContent_output_stream = 'oceanHeatContentOutput'
    config_AM_oceanHeatContent_compute_on_startup = .true.
    config_AM_oceanHeatContent_write_on_startup = .true.
/
&AM_mixedLayerHeatBudget
    config_AM_mixedLayerHeatBudget_enable = .false.
    config_AM_mixedLayerHeatBudget_compute_interval = 'output_interval'
    config_AM_mixedLayerHeatBudget_output_stream = 'mixedLayerHeatBudgetOutput'
    config_AM_mixedLayerHeatBudget_compute_on_startup = .true.
    config_AM_mixedLayerHeatBudget_write_on_startup = .true.
/
&AM_sedimentFluxIndex
    config_AM_sedimentFluxIndex_enable = .false.
    config_AM_sedimentFluxIndex_compute_on_startup = .true.
    config_AM_sedimentFluxIndex_write_on_startup = .true.
    config_AM_sedimentFluxIndex_compute_interval = 'output_interval'
    config_AM_sedimentFluxIndex_output_stream = 'sedimentFluxIndexOutput'
    config_AM_sedimentFluxIndex_directory = 'analysis_members'
    config_AM_sedimentFluxIndex_use_lat_lon_coords = .true.
/
&AM_sedimentTransport
    config_AM_sedimentTransport_enable = .false.
    config_AM_sedimentTransport_compute_on_startup = .true.
    config_AM_sedimentTransport_write_on_startup = .true.
    config_AM_sedimentTransport_compute_interval = 'output_interval'
    config_AM_sedimentTransport_output_stream = 'sedimentTransportOutput'
    config_AM_sedimentTransport_directory = 'analysis_members'
    config_AM_sedimentTransport_grain_size = 2.5e-4
    config_AM_sedimentTransport_ws_formula = 'VanRijn1993'
    config_AM_sedimentTransport_bedld_formula = 'Soulsby-Damgaard'
    config_AM_sedimentTransport_SSC_ref_formula = 'Lee2004'
    config_AM_sedimentTransport_drag_coefficient = 2.5e-3
    config_AM_sedimentTransport_erate = 5.0e-4
    config_AM_sedimentTransport_tau_ce = 0.1
    config_AM_sedimentTransport_tau_cd = 0.1
    config_AM_sedimentTransport_Manning_coef = 0.022
    config_AM_sedimentTransport_grain_porosity = 0.5
    config_AM_sedimentTransport_water_density = 1020
    config_AM_sedimentTransport_grain_density = 2650
    config_AM_sedimentTransport_alpha = 1e-2
    config_AM_sedimentTransport_kinematic_viscosity = 1e-6
    config_AM_sedimentTransport_vertical_diffusion_coefficient = 1e-2
    config_AM_sedimentTransport_bedload = .true.
    config_AM_sedimentTransport_suspended = .true.
    config_AM_sedimentTransport_use_lat_lon_coords = .true.
/
&AM_harmonicAnalysis
    config_AM_harmonicAnalysis_enable = .false.
    config_AM_harmonicAnalysis_compute_interval = 'output_interval'
    config_AM_harmonicAnalysis_start_delay = 20
    config_AM_harmonicAnalysis_duration = 90
    config_AM_harmonicAnalysis_output_stream = 'harmonicAnalysisOutput'
    config_AM_harmonicAnalysis_restart_stream = 'harmonicAnalysisRestart'
    config_AM_harmonicAnalysis_compute_on_startup = .false.
    config_AM_harmonicAnalysis_write_on_startup = .false.
    config_AM_harmonicAnalysis_use_M2 = .true.
    config_AM_harmonicAnalysis_use_S2 = .true.
    config_AM_harmonicAnalysis_use_N2 = .true.
    config_AM_harmonicAnalysis_use_K2 = .true.
    config_AM_harmonicAnalysis_use_K1 = .true.
    config_AM_harmonicAnalysis_use_O1 = .true.
    config_AM_harmonicAnalysis_use_Q1 = .true.
    config_AM_harmonicAnalysis_use_P1 = .true.
/
&AM_conservationCheck
    config_AM_conservationCheck_enable = .false.
    config_AM_conservationCheck_compute_interval = 'dt'
    config_AM_conservationCheck_output_stream = 'conservationCheckOutput'
    config_AM_conservationCheck_compute_on_startup = .false.
    config_AM_conservationCheck_write_on_startup = .false.
    config_AM_conservationCheck_write_to_logfile = .true.
    config_AM_conservationCheck_restart_stream = 'conservationCheckRestart'
/

@hyungyukang
Copy link
Copy Markdown
Author

hyungyukang commented Apr 20, 2026

Overflow test:
image
image

Namelist used:

Omega
Omega:
  Timing:
    Level: 2
    AutoFence: true
    TimingBarriers: false
    PrintAllRanks: false
  TimeIntegration:
    CalendarType: No Leap
    TimeStepper: RungeKutta4
    TimeStep: 0000_00:00:15
    StartTime: 0001-01-01_00:00:00
    StopTime: none
    RunDuration: 0010_00:00:00
  Decomp:
    HaloWidth: 3
    DecompMethod: MetisKWay
  IO:
    IOTasks: 1
    IOStride: 1
    IOBaseTask: 0
    IORearranger: box
    IODefaultFormat: pnetcdf
  State:
    NTimeLevels: 2
  Advection:
    Coef3rdOrder: 0.25
    FluxThicknessType: Center
    HorzTracerFluxOrder: 2
    VerticalTracerFluxLimiterEnable: true
    VerticalTracerFluxOrder: 3
  WindStress:
    InterpType: Isotropic
  SurfaceRestoring:
    TracersToRestore: [Temperature, Salinity]
    PistonVelocity: 1.585e-5
  VertCoord:
    MovementWeightType: Uniform
  PressureGrad:
    PressureGradType: Centered
  Tendencies:
    ThicknessFluxTendencyEnable: true
    PVTendencyEnable: true
    KETendencyEnable: true
    SSHTendencyEnable: false
    VelDiffTendencyEnable: true
    ViscDel2: 1000.0
    VelHyperDiffTendencyEnable: false
    ViscDel4: 1.2e11
    DivFactor: 1.0
    WindForcingTendencyEnable: false
    SurfaceTracerRestoringEnable: false
    BottomDragTendencyEnable: false
    BottomDragCoeff: 0.0
    TracerHorzAdvTendencyEnable: true
    TracerDiffTendencyEnable: false
    EddyDiff2: 10.0
    TracerHyperDiffTendencyEnable: false
    EddyDiff4: 0.0
    UseCustomTendency: false
    ManufacturedSolutionTendency: false
    ThicknessVertAdvTendencyEnable: true
    VelocityVertAdvTendencyEnable: true
    TracerVertAdvTendencyEnable: true
    PressureGradTendencyEnable: true
  Tracers:
    Base: [Temperature, Salinity]
  Eos:
    EosType: linear
    Linear:
      DRhoDT: -0.2
      DRhoDS: 0.8
      RhoT0S0: 973.0
  VertMix:
    Background:
      Diffusivity: 0.0
      Viscosity: 0.0
    Convective:
      Enable: false
      Diffusivity: 1.0
      TriggerBVF: 0.0
    Shear:
      Enable: false
      NuZero: 0.005
      Alpha: 5.0
      Exponent: 2.0
  ManufacturedSolution:
    WavelengthX: 5.0e6
    WavelengthY: 4.33013e6
    Amplitude: 1.0
  IOStreams:
    InitialVertCoord:
      UsePointerFile: false
      Filename: init.nc
      Mode: read
      Precision: double
      Freq: 1
      FreqUnits: OnStartup
      UseStartEnd: false
      Contents:
      - InitVertCoord
    # InitialState should only be used when starting from scratch.
    # For restart runs, the frequency units should be changed from
    # "OnStartup" to "never" so that the initial state file is not read.
    InitialState:
      UsePointerFile: false
      Filename: init.nc
      Mode: read
      Precision: double
      Freq: 1
      FreqUnits: OnStartup
      UseStartEnd: false
      Contents:
      - State
      - Tracers
    RestartRead:
      UsePointerFile: true
      PointerFilename: ocn.pointer
      Mode: read
      Precision: double
      Freq: 1
      FreqUnits: OnStartup
      UseStartEnd: true
      StartTime: 0001-01-01_00:00:01
      EndTime: 99999-12-31_00:00:00
      Contents:
      - Restart
    RestartWrite:
      UsePointerFile: true
      PointerFilename: ocn.pointer
      Filename: restart/ocn.restart.$Y-$M-$D_$h.$m.$s
      Mode: write
      IfExists: replace
      Precision: double
      Freq: 1
      FreqUnits: Days
      UseStartEnd: false
      Contents:
      - Restart
    History:
      UsePointerFile: false
      Filename: output/ocn.hist.$Y-$M-$D_$h.$m.$s
      Mode: write
      IfExists: replace
      Precision: double
      Freq: 1
      FreqUnits: Hours
      FileFreq: 1
      FileFreqUnits: Hours
      UseStartEnd: false
      Contents:
      - State
      - Temperature
      - VertCoord
      - KineticEnergyCell
MPAS-Ocean
&run_modes
    config_ocean_run_mode = 'forward'
/
&time_management
    config_do_restart = .false.
    config_restart_timestamp_name = 'Restart_timestamp'
    config_start_time = '0001-01-01_00:00:00'
    config_stop_time = 'none'
    config_run_duration = '0010_00:00:00'
    config_calendar_type = 'noleap'
    config_output_reference_time = '0001-01-01_00:00:00'
/
&io
    config_write_output_on_startup = .false.
    config_pio_num_iotasks = 0
    config_pio_stride = 1
/
&decomposition
    config_num_halos = 3
    config_block_decomp_file_prefix = 'graph.info.part.'
    config_number_of_blocks = 0
    config_explicit_proc_decomp = .false.
    config_proc_decomp_file_prefix = 'graph.info.part.'
/
&time_integration
    config_dt = '00:00:15'
    config_time_integrator = 'RK4'
    config_number_of_time_levels = 2
/
&hmix
    config_hmix_scaleWithMesh = .false.
    config_maxMeshDensity = -1.0
    config_hmix_use_ref_cell_width = .false.
    config_hmix_ref_cell_width = 30.0e3
    config_apvm_scale_factor = 0.0
/
&hmix_del2
    config_use_mom_del2 = .true.
    config_mom_del2 = 1000.0
    config_use_tracer_del2 = .false.
    config_tracer_del2 = 10.0
/
&hmix_del4
    config_use_mom_del4 = .false.
    config_mom_del4 = 1.2e11
    config_mom_del4_div_factor = 1.0
    config_use_tracer_del4 = .false.
    config_tracer_del4 = 0.0
/
&hmix_Leith
    config_use_Leith_del2 = .false.
    config_Leith_parameter = 1.0
    config_Leith_dx = 15000.0
    config_Leith_visc2_max = 2.5e3
/
&Redi_isopycnal_mixing
    config_use_Redi = .false.
    config_Redi_closure = 'constant'
    config_Redi_constant_kappa = 600.0
    config_Redi_maximum_slope = 0.3
    config_Redi_use_slope_taper = .true.
    config_Redi_use_surface_taper = .true.
    config_Redi_limit_term1 = .true.
    config_Redi_use_quasi_monotone_limiter = .true.
    config_Redi_quasi_monotone_safety_factor = 0.9
    config_Redi_min_layers_diag_terms = 6
    config_Redi_horizontal_taper = 'ramp'
    config_Redi_horizontal_ramp_min = 20e3
    config_Redi_horizontal_ramp_max = 30e3
/
&submesoscale_eddy_parameterization
    config_submesoscale_enable = .false.
    config_submesoscale_tau = 172800
    config_submesoscale_Ce = 0.06
    config_submesoscale_Lfmin = 1000.0
    config_submesoscale_ds_max = 100000.0
/
&GM_eddy_parameterization
    config_use_GM = .false.
    config_GM_closure = 'EdenGreatbatch'
    config_GM_constant_kappa = 600.0
    config_GM_constant_bclModeSpeed = 0.3
    config_GM_minBclModeSpeed_method = 'constant'
    config_GM_spatially_variable_min_kappa = 300.0
    config_GM_spatially_variable_max_kappa = 1800.0
    config_GM_spatially_variable_baroclinic_mode = 1.0
    config_GM_Visbeck_alpha = 0.005
    config_GM_Visbeck_max_depth = 1000.0
    config_GM_EG_riMin = 200.0
    config_GM_EG_kappa_factor = 3.0
    config_GM_EG_Rossby_factor = 2.0
    config_GM_EG_Rhines_factor = 0.3
    config_GM_horizontal_taper = 'ramp'
    config_GM_horizontal_ramp_min = 20e3
    config_GM_horizontal_ramp_max = 30e3
    config_GMRedi_Rossby_ramp_min = 0.5
    config_GMRedi_Rossby_ramp_max = 3.0
/
&eddy_kinetic_energy_correction
    config_eke_correction_enable = .false.
    config_eke_alpha = -2.9e-3
    config_eke_beta = 0.008
/
&eddy_parameterization
    config_eddyMLD_dens_threshold = 0.03
    config_eddyMLD_reference_depth = 10
    config_eddyMLD_reference_pressure = 1.0e5
    config_eddyMLD_use_old = .true.
/
&cvmix
    config_use_cvmix = .false.
    config_cvmix_prandtl_number = 1.0
    config_cvmix_background_scheme = 'constant'
    config_cvmix_background_diffusion = 1.0e-5
    config_cvmix_background_diffusion_passive = 1.0e-5
    config_cvmix_background_diffusion_passive_enable = .false.
    config_cvmix_background_viscosity = 0.0001
    config_cvmix_BryanLewis_bl1 = 8.0e-5
    config_cvmix_BryanLewis_bl2 = 1.05E-4
    config_cvmix_BryanLewis_transitionDepth = 2500
    config_cvmix_BryanLewis_transitionWidth = 222.
    config_use_cvmix_convection = .false.
    config_cvmix_convective_diffusion = 1.0
    config_cvmix_convective_viscosity = 1.0
    config_cvmix_convective_basedOnBVF = .false.
    config_cvmix_convective_triggerBVF = 0.0
    config_use_cvmix_shear = .false.
    config_cvmix_num_ri_smooth_loops = 2
    config_cvmix_use_BLD_smoothing = .false.
    config_cvmix_shear_mixing_scheme = 'PP'
    config_cvmix_shear_PP_nu_zero = 0.005
    config_cvmix_shear_PP_alpha = 5.0
    config_cvmix_shear_PP_exp = 2.0
    config_cvmix_shear_KPP_nu_zero = 0.005
    config_cvmix_shear_KPP_Ri_zero = 0.7
    config_cvmix_shear_KPP_exp = 3
    config_use_cvmix_tidal_mixing = .false.
    config_use_cvmix_double_diffusion = .false.
    config_use_cvmix_kpp = .false.
    config_use_cvmix_fixed_boundary_layer = .false.
    config_cvmix_kpp_boundary_layer_depth = 30.0
    config_cvmix_kpp_criticalBulkRichardsonNumber = 0.25
    config_cvmix_kpp_matching = 'SimpleShapes'
    config_cvmix_kpp_EkmanOBL = .false.
    config_cvmix_kpp_MonObOBL = .false.
    config_cvmix_kpp_interpolationOMLType = 'quadratic'
    config_cvmix_kpp_surface_layer_extent = 0.1
    config_cvmix_kpp_surface_layer_averaging = 5.0
    configure_cvmix_kpp_minimum_OBL_under_sea_ice = 10.0
    config_cvmix_kpp_stop_OBL_search = 100.0
    config_cvmix_kpp_use_enhanced_diff = .true.
    config_cvmix_kpp_nonlocal_with_implicit_mix = .false.
    config_cvmix_kpp_use_theory_wave = .false.
    config_cvmix_kpp_langmuir_mixing_opt = 'NONE'
    config_cvmix_kpp_langmuir_entrainment_opt = 'NONE'
    config_cvmix_kpp_use_active_wave = .false.
/
&wave_coupling
    config_use_active_wave = .false.
    config_n_stokes_drift_wavenumber_partitions = 6
/
&gotm
    config_use_gotm = .false.
    config_gotm_namelist_file = 'gotmturb.nml'
    config_gotm_constant_surface_roughness_length = 0.02
    config_gotm_constant_bottom_roughness_length = 0.0015
    config_gotm_constant_bottom_drag_coeff = 1.e-3
/
&forcing
    config_use_variable_drag = .false.
    config_use_bulk_wind_stress = .false.
    config_bulk_wind_stress_interp_isotropic = .false.
    config_use_bulk_thickness_flux = .false.
    config_flux_attenuation_coefficient = 0.001
    config_flux_attenuation_coefficient_runoff = 0.001
    config_subglacial_runoff_mode = 'off'
    config_flux_attenuation_coefficient_subglacial_runoff = 0.001
    config_sgr_flux_vertical_location = 'bottom'
    config_use_sgr_opt_kpp = .false.
    config_use_sgr_opt_temp_prescribed = .false.
    config_use_sgr_opt_salt_prescribed = .false.
    config_sgr_temperature_prescribed = 0.0
    config_sgr_salinity_prescribed = 0.0
/
&precip_scaling
    config_use_precip_scaling = .false.
    config_precip_scaling_mode = 'constant'
    config_precip_scaling_initial_factor = 1.0
    config_precip_scaling_constant_factor = 1.0
    config_precip_scaling_history_years = 1
    config_precip_scaling_write_to_logfile = .false.
/
&time_varying_forcing
    config_use_time_varying_atmospheric_forcing = .false.
    config_time_varying_atmospheric_forcing_type = 'WINDPRES'
    config_time_varying_atmospheric_forcing_start_time = '0001-01-01_00:00:00'
    config_time_varying_atmospheric_forcing_reference_time = '0001-01-01_00:00:00'
    config_time_varying_atmospheric_forcing_cycle_start = '0001-01-01_00:00:00'
    config_time_varying_atmospheric_forcing_cycle_duration = '2-00-00_00:00:00'
    config_time_varying_atmospheric_forcing_interval = '01:00:00'
    config_time_varying_atmospheric_forcing_ramp = 10.0
    config_time_varying_atmospheric_forcing_ramp_delay = 0.0
    config_use_time_varying_land_ice_forcing = .false.
    config_time_varying_land_ice_forcing_start_time = '0001-01-01_00:00:00'
    config_time_varying_land_ice_forcing_reference_time = '0001-01-01_00:00:00'
    config_time_varying_land_ice_forcing_cycle_start = '0001-01-01_00:00:00'
    config_time_varying_land_ice_forcing_cycle_duration = '2-00-00_00:00:00'
    config_time_varying_land_ice_forcing_interval = '01:00:00'
/
&coupling
    config_remove_ais_river_runoff = .false.
    config_remove_ais_ice_runoff = .false.
    config_scale_dismf_by_removed_ice_runoff = .false.
    config_ais_ice_runoff_history_days = 731
    config_n_glc_z_levels = 0
    config_glc_thermal_forcing_coupling_mode = 'off'
/
&shortwaveRadiation
    config_sw_absorption_type = 'none'
    config_jerlov_water_type = 3
    config_surface_buoyancy_depth = 1
    config_enable_shortwave_energy_fixer = .false.
/
&tidal_forcing
    config_use_tidal_forcing = .false.
    config_use_tidal_forcing_tau = 10000
    config_tidal_forcing_type = 'off'
    config_tidal_forcing_model = 'off'
    config_tidal_forcing_monochromatic_amp = 2.0
    config_tidal_forcing_monochromatic_period = 0.5
    config_tidal_forcing_monochromatic_phaseLag = 0.0
    config_tidal_forcing_monochromatic_baseline = 0.0
    config_tidal_forcing_linear_baseline = 0.0
    config_tidal_forcing_linear_min = -1.0
    config_tidal_forcing_linear_rate = -8.0
/
&self_attraction_loading
    config_use_self_attraction_loading = .false.
    config_self_attraction_loading_depth_cutoff = 10.0
    config_mpas_to_grid_weights_file = 'mpas_to_grid.nc'
    config_grid_to_mpas_weights_file = 'grid_to_mpas.nc'
    config_self_attraction_loading_compute_interval = '0000-00-00_00:30:00'
    config_nLatitude = 128
    config_nLongitude = 256
    config_use_parallel_self_attraction_loading = .false.
    config_parallel_self_attraction_loading_order = 10
    config_parallel_self_attraction_loading_n_cells_per_block = 600
    config_parallel_self_attraction_loading_bfb = .false.
/
&tidal_potential_forcing
    config_use_tidal_potential_forcing = .false.
    config_tidal_potential_reference_time = '0001-01-01_00:00:00'
    config_use_tidal_potential_forcing_M2 = .true.
    config_use_tidal_potential_forcing_S2 = .true.
    config_use_tidal_potential_forcing_N2 = .true.
    config_use_tidal_potential_forcing_K2 = .true.
    config_use_tidal_potential_forcing_K1 = .true.
    config_use_tidal_potential_forcing_O1 = .true.
    config_use_tidal_potential_forcing_Q1 = .true.
    config_use_tidal_potential_forcing_P1 = .true.
    config_tidal_potential_ramp = 10.0
    config_self_attraction_and_loading_beta = 0.09
/
&frazil_ice
    config_use_frazil_ice_formation = .false.
    config_frazil_in_open_ocean = .true.
    config_frazil_under_land_ice = .false.
    config_frazil_heat_of_fusion = 3.34e5
    config_use_frazil_ice_porosity = .false.
    config_frazil_ice_density = 1000.0
    config_frazil_ice_porosity = 1.0
    config_frazil_fractional_thickness_limit = 0.1
    config_specific_heat_sea_water = 3985.0
    config_frazil_maximum_depth = 100.0
    config_frazil_sea_ice_reference_salinity = 4.0
    config_frazil_maximum_freezing_temperature = 0.0
    config_frazil_use_surface_pressure = .true.
/
&land_ice
    config_land_ice_draft_mode = 'pressure-dependent'
    config_land_ice_rho_ocean = 1028.0
/
&land_ice_fluxes
    config_land_ice_flux_mode = 'off'
    config_land_ice_flux_formulation = 'Jenkins'
    config_land_ice_flux_useHollandJenkinsAdvDiff = .false.
    config_land_ice_flux_attenuation_coefficient = 10.0
    config_land_ice_flux_boundaryLayerThickness = 10.0
    config_land_ice_flux_boundaryLayerNeighborWeight = 0.0
    config_land_ice_flux_cp_ice = 2.009e3
    config_land_ice_flux_rho_ice = 918
    config_land_ice_flux_explicit_topDragCoeff = 2.5e-3
    config_land_ice_flux_ISOMIP_gammaT = 1e-4
    config_land_ice_flux_jenkins_heat_transfer_coefficient = 0.011
    config_land_ice_flux_jenkins_salt_transfer_coefficient = 3.1e-4
    config_land_ice_flux_tidal_Jourdain_alpha = 1
    config_land_ice_flux_tidal_Jourdain_A0 = 0
    config_land_ice_flux_tidal_Jourdain_U0 = 5e-2
/
&advection
    config_vert_advection_method = 'flux-form'
    config_vert_remap_order = 2
    config_vert_remap_interval = 0
    config_vert_tracer_adv_flux_order = 3
    config_horiz_tracer_adv_order = 2
    config_coef_3rd_order = 0.25
    config_flux_limiter = 'monotonic'
    config_remap_limiter = 'monotonic'
    config_thickness_flux_type = 'centered'
    config_use_spatially_variable_upwind = .false.
    config_spatially_variable_upwind_hmin = 5.0
    config_spatially_variable_upwind_hmax = 10.0
/
&bottom_drag
    config_bottom_drag_mode = 'explicit'
    config_implicit_bottom_drag_type = 'constant'
    config_implicit_constant_bottom_drag_coeff = 0.0
    config_use_implicit_top_drag = .false.
    config_implicit_top_drag_coeff = 0.0
    config_loglaw_bottom_roughness = 0.0
    config_loglaw_layer_depth_max = 10.0
    config_loglaw_bottom_drag_min = 0.0
    config_loglaw_bottom_drag_max = 0.0
    config_explicit_bottom_drag_coeff = 0.0
    config_use_topographic_wave_drag = .false.
    config_topographic_wave_drag_scheme = 'ZAE'
    config_topographic_wave_drag_coeff = 0.0
    config_thickness_drag_type = 'centered'
    config_topographic_wave_drag_cutoff_depth = 500
    config_topographic_wave_drag_cutoff_width = 10
/
&Rayleigh_damping
    config_Rayleigh_damping_coeff = 1.0e-4
    config_Rayleigh_damping_depth_variable = .false.
    config_Rayleigh_bottom_friction = .false.
    config_Rayleigh_bottom_damping_coeff = 1.0e-4
/
&vegetation_drag
    config_use_vegetation_drag = .false.
    config_vegetation_drag_coefficient = 1.09
/
&wetting_drying
    config_use_wetting_drying = .false.
    config_prevent_drying = .false.
    config_drying_min_cell_height = 1.0e-3
    config_zero_drying_velocity = .false.
    config_zero_drying_velocity_ramp = .false.
    config_zero_drying_velocity_ramp_hmin = 1e-3
    config_zero_drying_velocity_ramp_hmax = 2e-3
    config_verify_not_dry = .false.
    config_drying_safety_height = 1.0e-10
    config_use_subgrid_wetting_drying = .false.
    config_use_ssh_gradient_wetting_drying = .false.
/
&ocean_constants
    config_density0 = 1026.0
/
&lts
    config_dt_scaling_LTS = 1
/
&forward_backward
    config_fb_weight_1 = 0.531
    config_fb_weight_2 = 0.531
    config_fb_weight_3 = 0.313
/
&pressure_gradient
    config_pressure_gradient_type = 'pressure_and_zmid'
    config_common_level_weight = 0.5
    config_zonal_ssh_grad = 0.0
    config_meridional_ssh_grad = 0.0
/
&eos
    config_eos_type = 'linear'
    config_open_ocean_freezing_temperature_coeff_0 = 0.0
    config_open_ocean_freezing_temperature_coeff_S = 0.0
    config_open_ocean_freezing_temperature_coeff_p = 0.0
    config_open_ocean_freezing_temperature_coeff_pS = 0.0
    config_open_ocean_freezing_temperature_coeff_mushy_az1_liq = -18.48
    config_land_ice_cavity_freezing_temperature_coeff_0 = 6.22e-2
    config_land_ice_cavity_freezing_temperature_coeff_S = -5.63e-2
    config_land_ice_cavity_freezing_temperature_coeff_p = -7.43e-8
    config_land_ice_cavity_freezing_temperature_coeff_pS = -1.74e-10
/
&eos_linear
    config_eos_linear_alpha = 0.2
    config_eos_linear_beta = 0.8
    config_eos_linear_Tref = 0.0
    config_eos_linear_Sref = 0.0
    config_eos_linear_densityref = 973.0
/
&eos_wright
    config_eos_wright_ref_pressure = 0.0
/
&split_timestep_share
    config_n_ts_iter = 2
    config_n_bcl_iter_beg = 1
    config_n_bcl_iter_mid = 2
    config_n_bcl_iter_end = 2
/
&split_explicit_ts
    config_btr_dt = '00:00:15'
    config_n_btr_cor_iter = 2
    config_vel_correction = .true.
    config_btr_subcycle_loop_factor = 2
    config_btr_gam1_velWt1 = 0.5333
    config_btr_gam2_SSHWt1 = 0.5333
    config_btr_gam3_velWt2 = 1.0
    config_btr_solve_SSH2 = .false.
/
&split_implicit_ts
    config_btr_si_preconditioner = 'ras'
    config_btr_si_tolerance = 1.0e-9
    config_n_btr_si_large_iter = 1
    config_btr_si_partition_match_mode = .false.
/
&ALE_vertical_grid
    config_vert_coord_movement = 'uniform_stretching'
    config_ALE_thickness_proportionality = 'restingThickness_times_weights'
    config_vert_taper_weight_depth_1 = 250.0
    config_vert_taper_weight_depth_2 = 500.0
    config_use_min_max_thickness = .false.
    config_min_thickness = 1.0
    config_max_thickness_factor = 6.0
    config_dzdk_positive = .false.
/
&ALE_frequency_filtered_thickness
    config_use_freq_filtered_thickness = .false.
    config_thickness_filter_timescale = 5.0
    config_use_highFreqThick_restore = .false.
    config_highFreqThick_restore_time = 30.0
    config_use_highFreqThick_del2 = .false.
    config_highFreqThick_del2 = 100.0
/
&debug
    config_check_zlevel_consistency = .false.
    config_check_ssh_consistency = .false.
    config_filter_btr_mode = .false.
    config_prescribe_velocity = .false.
    config_prescribe_thickness = .false.
    config_include_KE_vertex = .false.
    config_check_tracer_monotonicity = .false.
    config_compute_active_tracer_budgets = .false.
    config_disable_thick_all_tend = .false.
    config_disable_thick_hadv = .false.
    config_disable_thick_vadv = .false.
    config_disable_thick_sflux = .true.
    config_disable_vel_all_tend = .false.
    config_disable_vel_hadv = .false.
    config_disable_vel_coriolis = .false.
    config_disable_vel_pgrad = .false.
    config_disable_vel_hmix = .false.
    config_disable_vel_surface_stress = .true.
    config_disable_vel_topographic_wave_drag = .true.
    config_disable_vel_explicit_bottom_drag = .true.
    config_disable_vel_vmix = .true.
    config_disable_vel_vadv = .false.
    config_disable_tr_all_tend = .false.
    config_disable_tr_adv = .false.
    config_disable_tr_hmix = .false.
    config_disable_tr_vmix = .true.
    config_disable_tr_sflux = .true.
    config_disable_tr_nonlocalflux = .true.
    config_disable_redi_k33 = .false.
    config_read_nearest_restart = .false.
/
&testing
    config_conduct_tests = .false.
    config_test_tensors = .false.
    config_tensor_test_function = 'sph_uCosCos'
/
&transport_tests
    config_transport_tests_vert_levels = 3
    config_transport_tests_temperature = 15.0
    config_transport_tests_salinity = 35.0
    config_transport_tests_flow_id = 0
/
&init_mode_vert_levels
    config_vert_levels = -1
/
&manufactured_solution
    config_use_manufactured_solution = .false.
    config_manufactured_solution_wavelength_x = 2000000.0
    config_manufactured_solution_wavelength_y = 2000000.0
    config_manufactured_solution_amplitude = 1
/
&init_mode_subgrid
    config_subgrid_table_levels = -1
/
&tracer_forcing_activeTracers
    config_use_activeTracers = .true.
    config_use_activeTracers_surface_bulk_forcing = .false.
    config_use_activeTracers_surface_restoring = .false.
    config_use_activeTracers_interior_restoring = .false.
    config_use_activeTracers_exponential_decay = .false.
    config_use_activeTracers_idealAge_forcing = .false.
    config_use_activeTracers_ttd_forcing = .false.
    config_use_surface_salinity_monthly_restoring = .false.
    config_surface_salinity_monthly_restoring_compute_interval = 'dt'
    config_salinity_restoring_constant_piston_velocity = 1.585e-5
    config_salinity_restoring_max_difference = 100.0
    config_salinity_restoring_under_sea_ice = .true.
/
&tracer_forcing_debugTracers
    config_use_debugTracers = .false.
    config_reset_debugTracers_near_surface = .false.
    config_reset_debugTracers_top_nLayers = 20
    config_use_debugTracers_surface_bulk_forcing = .false.
    config_use_debugTracers_surface_restoring = .false.
    config_use_debugTracers_interior_restoring = .false.
    config_use_debugTracers_exponential_decay = .false.
    config_use_debugTracers_idealAge_forcing = .false.
    config_use_debugTracers_ttd_forcing = .false.
/
&tracer_forcing_ecosysTracers
    config_use_ecosysTracers = .false.
    config_ecosys_atm_co2_option = 'none'
    config_ecosys_atm_alt_co2_option = 'none'
    config_ecosys_atm_alt_co2_use_eco = .true.
    config_ecosys_atm_co2_constant_value = 379.0
    config_use_ecosysTracers_surface_bulk_forcing = .false.
    config_use_ecosysTracers_surface_restoring = .false.
    config_use_ecosysTracers_interior_restoring = .false.
    config_use_ecosysTracers_exponential_decay = .false.
    config_use_ecosysTracers_idealAge_forcing = .false.
    config_use_ecosysTracers_ttd_forcing = .false.
    config_use_ecosysTracers_surface_value = .false.
    config_use_ecosysTracers_river_inputs_from_coupler = .false.
    config_use_ecosys_frazil_tendencies = .false.
    config_use_ecosysTracers_sea_ice_coupling = .false.
    config_ecosysTracers_diagnostic_fields_level1 = .false.
    config_ecosysTracers_diagnostic_fields_level2 = .false.
    config_ecosysTracers_diagnostic_fields_level3 = .false.
    config_ecosysTracers_diagnostic_fields_level4 = .false.
    config_ecosysTracers_diagnostic_fields_level5 = .false.
/
&tracer_forcing_freshwaterTracers
    config_use_freshwaterTracers = .false.
    config_use_freshwaterTracers_surface_bulk_forcing = .true.
    config_use_freshwaterTracers_surface_restoring = .false.
    config_use_freshwaterTracers_interior_restoring = .false.
    config_use_freshwaterTracers_exponential_decay = .false.
    config_use_freshwaterTracers_idealAge_forcing = .false.
    config_use_freshwaterTracers_ttd_forcing = .false.
    config_use_freshwaterTracers_surface_value = .false.
    config_use_freshwaterTracers_rainFlux = .true.
    config_use_freshwaterTracers_snowFlux = .true.
    config_use_freshwaterTracers_iceRunoffFlux = .true.
    config_use_freshwaterTracers_riverRunoffFlux = .true.
    config_use_freshwaterTracers_subglacialRunoffFlux = .false.
    config_use_freshwaterTracers_seaIceFreshWaterFlux = .true.
    config_use_freshwaterTracers_icebergFreshWaterFlux = .false.
    config_use_freshwaterTracers_landIceFreshwaterFlux = .false.
/
&tracer_forcing_DMSTracers
    config_use_DMSTracers = .false.
    config_use_DMSTracers_surface_bulk_forcing = .false.
    config_use_DMSTracers_surface_restoring = .false.
    config_use_DMSTracers_interior_restoring = .false.
    config_use_DMSTracers_exponential_decay = .false.
    config_use_DMSTracers_idealAge_forcing = .false.
    config_use_DMSTracers_ttd_forcing = .false.
    config_use_DMSTracers_surface_value = .false.
    config_use_DMSTracers_sea_ice_coupling = .false.
/
&tracer_forcing_MacroMoleculesTracers
    config_use_MacroMoleculesTracers = .false.
    config_use_MacroMoleculesTracers_surface_bulk_forcing = .false.
    config_use_MacroMoleculesTracers_surface_restoring = .false.
    config_use_MacroMoleculesTracers_interior_restoring = .false.
    config_use_MacroMoleculesTracers_exponential_decay = .false.
    config_use_MacroMoleculesTracers_idealAge_forcing = .false.
    config_use_MacroMoleculesTracers_ttd_forcing = .false.
    config_use_MacroMoleculesTracers_surface_value = .false.
    config_use_MacroMoleculesTracers_sea_ice_coupling = .false.
/
&tracer_forcing_idealAgeTracers
    config_use_idealAgeTracers = .false.
    config_use_idealAgeTracers_surface_bulk_forcing = .false.
    config_use_idealAgeTracers_surface_restoring = .false.
    config_use_idealAgeTracers_interior_restoring = .false.
    config_use_idealAgeTracers_exponential_decay = .false.
    config_use_idealAgeTracers_idealAge_forcing = .true.
    config_use_idealAgeTracers_ttd_forcing = .false.
/
&tracer_forcing_CFCTracers
    config_use_CFCTracers = .false.
    config_use_CFCTracers_surface_bulk_forcing = .false.
    config_use_CFCTracers_surface_restoring = .false.
    config_use_CFCTracers_interior_restoring = .false.
    config_use_CFCTracers_exponential_decay = .false.
    config_use_CFCTracers_idealAge_forcing = .false.
    config_use_CFCTracers_ttd_forcing = .false.
    config_use_CFC11 = .true.
    config_use_CFC12 = .true.
/
&AM_globalStats
    config_AM_globalStats_enable = .false.
    config_AM_globalStats_compute_interval = 'output_interval'
    config_AM_globalStats_compute_on_startup = .false.
    config_AM_globalStats_write_on_startup = .false.
    config_AM_globalStats_text_file = .false.
    config_AM_globalStats_directory = 'analysis_members'
    config_AM_globalStats_output_stream = 'globalStatsOutput'
/
&AM_surfaceAreaWeightedAverages
    config_AM_surfaceAreaWeightedAverages_enable = .false.
    config_AM_surfaceAreaWeightedAverages_compute_on_startup = .true.
    config_AM_surfaceAreaWeightedAverages_write_on_startup = .true.
    config_AM_surfaceAreaWeightedAverages_compute_interval = 'output_interval'
    config_AM_surfaceAreaWeightedAverages_output_stream = 'surfaceAreaWeightedAveragesOutput'
/
&AM_waterMassCensus
    config_AM_waterMassCensus_enable = .false.
    config_AM_waterMassCensus_compute_interval = 'output_interval'
    config_AM_waterMassCensus_output_stream = 'waterMassCensusOutput'
    config_AM_waterMassCensus_compute_on_startup = .false.
    config_AM_waterMassCensus_write_on_startup = .false.
    config_AM_waterMassCensus_minTemperature = -2.0
    config_AM_waterMassCensus_maxTemperature = 30.0
    config_AM_waterMassCensus_minSalinity = 32.0
    config_AM_waterMassCensus_maxSalinity = 37.0
    config_AM_waterMassCensus_compute_predefined_regions = .true.
    config_AM_waterMassCensus_region_group = ''
/
&AM_layerVolumeWeightedAverage
    config_AM_layerVolumeWeightedAverage_enable = .false.
    config_AM_layerVolumeWeightedAverage_compute_interval = 'output_interval'
    config_AM_layerVolumeWeightedAverage_compute_on_startup = .false.
    config_AM_layerVolumeWeightedAverage_write_on_startup = .false.
    config_AM_layerVolumeWeightedAverage_output_stream = 'layerVolumeWeightedAverageOutput'
/
&AM_zonalMean
    config_AM_zonalMean_enable = .false.
    config_AM_zonalMean_compute_on_startup = .true.
    config_AM_zonalMean_write_on_startup = .true.
    config_AM_zonalMean_compute_interval = 'output_interval'
    config_AM_zonalMean_output_stream = 'zonalMeanOutput'
    config_AM_zonalMean_num_bins = 180
    config_AM_zonalMean_min_bin = -1.0e34
    config_AM_zonalMean_max_bin = -1.0e34
/
&AM_okuboWeiss
    config_AM_okuboWeiss_enable = .false.
    config_AM_okuboWeiss_compute_on_startup = .true.
    config_AM_okuboWeiss_write_on_startup = .true.
    config_AM_okuboWeiss_compute_interval = 'output_interval'
    config_AM_okuboWeiss_output_stream = 'okuboWeissOutput'
    config_AM_okuboWeiss_directory = 'analysis_members'
    config_AM_okuboWeiss_threshold_value = -0.2
    config_AM_okuboWeiss_normalization = 1e-10
    config_AM_okuboWeiss_lambda2_normalization = 1e-10
    config_AM_okuboWeiss_use_lat_lon_coords = .true.
    config_AM_okuboWeiss_compute_eddy_census = .true.
    config_AM_okuboWeiss_eddy_min_cells = 20
/
&AM_meridionalHeatTransport
    config_AM_meridionalHeatTransport_enable = .false.
    config_AM_meridionalHeatTransport_compute_interval = 'output_interval'
    config_AM_meridionalHeatTransport_compute_on_startup = .true.
    config_AM_meridionalHeatTransport_write_on_startup = .true.
    config_AM_meridionalHeatTransport_output_stream = 'meridionalHeatTransportOutput'
    config_AM_meridionalHeatTransport_num_bins = 180
    config_AM_meridionalHeatTransport_min_bin = -1.0e34
    config_AM_meridionalHeatTransport_max_bin = -1.0e34
    config_AM_meridionalHeatTransport_region_group = ''
/
&AM_testComputeInterval
    config_AM_testComputeInterval_enable = .false.
    config_AM_testComputeInterval_compute_interval = '00-00-01_00:00:00'
    config_AM_testComputeInterval_compute_on_startup = .true.
    config_AM_testComputeInterval_write_on_startup = .true.
    config_AM_testComputeInterval_output_stream = 'testComputeIntervalOutput'
/
&AM_highFrequencyOutput
    config_AM_highFrequencyOutput_enable = .false.
    config_AM_highFrequencyOutput_compute_interval = 'output_interval'
    config_AM_highFrequencyOutput_output_stream = 'highFrequencyOutput'
    config_AM_highFrequencyOutput_compute_on_startup = .true.
    config_AM_highFrequencyOutput_write_on_startup = .true.
/
&AM_timeFilters
    config_AM_timeFilters_enable = .false.
    config_AM_timeFilters_compute_interval = 'dt'
    config_AM_timeFilters_output_stream = 'timeFiltersOutput'
    config_AM_timeFilters_restart_stream = 'timeFiltersRestart'
    config_AM_timeFilters_compute_on_startup = .true.
    config_AM_timeFilters_write_on_startup = .true.
    config_AM_timeFilters_initialize_filters = .true.
    config_AM_timeFilters_tau = '90_00:00:00'
    config_AM_timeFilters_compute_cell_centered_values = .true.
/
&AM_lagrPartTrack
    config_AM_lagrPartTrack_enable = .false.
    config_AM_lagrPartTrack_compute_interval = 'dt'
    config_AM_lagrPartTrack_compute_on_startup = .false.
    config_AM_lagrPartTrack_output_stream = 'lagrPartTrackOutput'
    config_AM_lagrPartTrack_restart_stream = 'lagrPartTrackRestart'
    config_AM_lagrPartTrack_input_stream = 'lagrPartTrackInput'
    config_AM_lagrPartTrack_write_on_startup = .true.
    config_AM_lagrPartTrack_filter_number = 0
    config_AM_lagrPartTrack_timeIntegration = 2
    config_AM_lagrPartTrack_reset_criteria = 'none'
    config_AM_lagrPartTrack_reset_global_timestamp = '0000_00:00:00'
    config_AM_lagrPartTrack_region_stream = 'lagrPartTrackRegions'
    config_AM_lagrPartTrack_reset_if_outside_region = .false.
    config_AM_lagrPartTrack_reset_if_inside_region = .false.
    config_AM_lagrPartTrack_sample_horizontal_interp = .true.
    config_AM_lagrPartTrack_sample_temperature = .true.
    config_AM_lagrPartTrack_sample_salinity = .true.
    config_AM_lagrPartTrack_sample_DIC = .false.
    config_AM_lagrPartTrack_sample_ALK = .false.
    config_AM_lagrPartTrack_sample_PO4 = .false.
    config_AM_lagrPartTrack_sample_NO3 = .false.
    config_AM_lagrPartTrack_sample_SiO3 = .false.
    config_AM_lagrPartTrack_sample_NH4 = .false.
    config_AM_lagrPartTrack_sample_Fe = .false.
    config_AM_lagrPartTrack_sample_O2 = .false.
/
&AM_eliassenPalm
    config_AM_eliassenPalm_enable = .false.
    config_AM_eliassenPalm_compute_interval = 'output_interval'
    config_AM_eliassenPalm_output_stream = 'eliassenPalmOutput'
    config_AM_eliassenPalm_restart_stream = 'eliassenPalmRestart'
    config_AM_eliassenPalm_compute_on_startup = .true.
    config_AM_eliassenPalm_write_on_startup = .true.
    config_AM_eliassenPalm_debug = .false.
   config_AM_eliassenPalm_nBuoyancyLayers = 45
    config_AM_eliassenPalm_rhomin_buoycoor = 900
    config_AM_eliassenPalm_rhomax_buoycoor = 1080
/
&AM_mixedLayerDepths
    config_AM_mixedLayerDepths_enable = .false.
    config_AM_mixedLayerDepths_compute_interval = 'output_interval'
    config_AM_mixedLayerDepths_output_stream = 'mixedLayerDepthsOutput'
    config_AM_mixedLayerDepths_write_on_startup = .true.
    config_AM_mixedLayerDepths_compute_on_startup = .true.
    config_AM_mixedLayerDepths_Tthreshold = .true.
    config_AM_mixedLayerDepths_crit_temp_threshold = 0.2
    config_AM_mixedLayerDepths_reference_pressure = 1.0E5
    config_AM_mixedLayerDepths_Tgradient = .false.
    config_AM_mixedLayerDepths_Dgradient = .false.
    config_AM_mixedLayerDepths_temp_gradient_threshold = 5E-7
    config_AM_mixedLayerDepths_den_gradient_threshold = 5E-8
    config_AM_mixedLayerDepths_interp_method = 1
/
&AM_regionalStatsDaily
    config_AM_regionalStatsDaily_enable = .false.
    config_AM_regionalStatsDaily_compute_on_startup = .false.
    config_AM_regionalStatsDaily_write_on_startup = .false.
    config_AM_regionalStatsDaily_compute_interval = 'output_interval'
    config_AM_regionalStatsDaily_output_stream = 'regionalStatsDailyOutput'
    config_AM_regionalStatsDaily_restart_stream = 'regionalMasksInput'
    config_AM_regionalStatsDaily_input_stream = 'regionalMasksInput'
    config_AM_regionalStatsDaily_operation = 'avg'
    config_AM_regionalStatsDaily_region_type = 'cell'
    config_AM_regionalStatsDaily_region_group = 'all'
    config_AM_regionalStatsDaily_1d_weighting_function = 'mul'
    config_AM_regionalStatsDaily_2d_weighting_function = 'mul'
    config_AM_regionalStatsDaily_1d_weighting_field = 'areaCell'
    config_AM_regionalStatsDaily_2d_weighting_field = 'volumeCell'
    config_AM_regionalStatsDaily_vertical_mask = 'cellMask'
    config_AM_regionalStatsDaily_vertical_dimension = 'nVertLevels'
/
&AM_regionalStatsWeekly
    config_AM_regionalStatsWeekly_enable = .false.
    config_AM_regionalStatsWeekly_compute_on_startup = .false.
    config_AM_regionalStatsWeekly_write_on_startup = .false.
    config_AM_regionalStatsWeekly_compute_interval = 'output_interval'
    config_AM_regionalStatsWeekly_output_stream = 'regionalStatsWeeklyOutput'
    config_AM_regionalStatsWeekly_restart_stream = 'regionalMasksInput'
    config_AM_regionalStatsWeekly_input_stream = 'regionalMasksInput'
    config_AM_regionalStatsWeekly_operation = 'avg'
    config_AM_regionalStatsWeekly_region_type = 'cell'
    config_AM_regionalStatsWeekly_region_group = 'all'
    config_AM_regionalStatsWeekly_1d_weighting_function = 'mul'
    config_AM_regionalStatsWeekly_2d_weighting_function = 'mul'
    config_AM_regionalStatsWeekly_1d_weighting_field = 'areaCell'
    config_AM_regionalStatsWeekly_2d_weighting_field = 'volumeCell'
    config_AM_regionalStatsWeekly_vertical_mask = 'cellMask'
    config_AM_regionalStatsWeekly_vertical_dimension = 'nVertLevels'
/
&AM_regionalStatsMonthly
    config_AM_regionalStatsMonthly_enable = .false.
    config_AM_regionalStatsMonthly_compute_on_startup = .false.
    config_AM_regionalStatsMonthly_write_on_startup = .false.
    config_AM_regionalStatsMonthly_compute_interval = 'output_interval'
    config_AM_regionalStatsMonthly_output_stream = 'regionalStatsMonthlyOutput'
    config_AM_regionalStatsMonthly_restart_stream = 'regionalMasksInput'
    config_AM_regionalStatsMonthly_input_stream = 'regionalMasksInput'
    config_AM_regionalStatsMonthly_operation = 'avg'
    config_AM_regionalStatsMonthly_region_type = 'cell'
    config_AM_regionalStatsMonthly_region_group = 'all'
    config_AM_regionalStatsMonthly_1d_weighting_function = 'mul'
    config_AM_regionalStatsMonthly_2d_weighting_function = 'mul'
    config_AM_regionalStatsMonthly_1d_weighting_field = 'areaCell'
    config_AM_regionalStatsMonthly_2d_weighting_field = 'volumeCell'
    config_AM_regionalStatsMonthly_vertical_mask = 'cellMask'
    config_AM_regionalStatsMonthly_vertical_dimension = 'nVertLevels'
/
&AM_regionalStatsCustom
    config_AM_regionalStatsCustom_enable = .false.
    config_AM_regionalStatsCustom_compute_on_startup = .false.
    config_AM_regionalStatsCustom_write_on_startup = .false.
    config_AM_regionalStatsCustom_compute_interval = 'output_interval'
    config_AM_regionalStatsCustom_output_stream = 'regionalStatsCustomOutput'
    config_AM_regionalStatsCustom_restart_stream = 'regionalMasksInput'
    config_AM_regionalStatsCustom_input_stream = 'regionalMasksInput'
    config_AM_regionalStatsCustom_operation = 'avg'
    config_AM_regionalStatsCustom_region_type = 'cell'
    config_AM_regionalStatsCustom_region_group = 'all'
    config_AM_regionalStatsCustom_1d_weighting_function = 'mul'
    config_AM_regionalStatsCustom_2d_weighting_function = 'mul'
    config_AM_regionalStatsCustom_1d_weighting_field = 'areaCell'
    config_AM_regionalStatsCustom_2d_weighting_field = 'volumeCell'
    config_AM_regionalStatsCustom_vertical_mask = 'cellMask'
    config_AM_regionalStatsCustom_vertical_dimension = 'nVertLevels'
/
&AM_timeSeriesStatsDaily
    config_AM_timeSeriesStatsDaily_enable = .false.
    config_AM_timeSeriesStatsDaily_compute_on_startup = .false.
    config_AM_timeSeriesStatsDaily_write_on_startup = .false.
    config_AM_timeSeriesStatsDaily_compute_interval = '00-00-00_01:00:00'
    config_AM_timeSeriesStatsDaily_output_stream = 'timeSeriesStatsDailyOutput'
    config_AM_timeSeriesStatsDaily_restart_stream = 'timeSeriesStatsDailyRestart'
    config_AM_timeSeriesStatsDaily_operation = 'avg'
    config_AM_timeSeriesStatsDaily_reference_times = 'initial_time'
    config_AM_timeSeriesStatsDaily_duration_intervals = 'repeat_interval'
    config_AM_timeSeriesStatsDaily_repeat_intervals = 'reset_interval'
    config_AM_timeSeriesStatsDaily_reset_intervals = '00-00-01_00:00:00'
    config_AM_timeSeriesStatsDaily_backward_output_offset = '00-00-01_00:00:00'
/
&AM_timeSeriesStatsMonthly
    config_AM_timeSeriesStatsMonthly_enable = .false.
    config_AM_timeSeriesStatsMonthly_compute_on_startup = .false.
    config_AM_timeSeriesStatsMonthly_write_on_startup = .false.
    config_AM_timeSeriesStatsMonthly_compute_interval = '00-00-00_01:00:00'
    config_AM_timeSeriesStatsMonthly_output_stream = 'timeSeriesStatsMonthlyOutput'
    config_AM_timeSeriesStatsMonthly_restart_stream = 'timeSeriesStatsMonthlyRestart'
    config_AM_timeSeriesStatsMonthly_operation = 'avg'
    config_AM_timeSeriesStatsMonthly_reference_times = 'initial_time'
    config_AM_timeSeriesStatsMonthly_duration_intervals = 'repeat_interval'
    config_AM_timeSeriesStatsMonthly_repeat_intervals = 'reset_interval'
    config_AM_timeSeriesStatsMonthly_reset_intervals = '00-01-00_00:00:00'
    config_AM_timeSeriesStatsMonthly_backward_output_offset = '00-01-00_00:00:00'
/
&AM_timeSeriesStatsClimatology
    config_AM_timeSeriesStatsClimatology_enable = .false.
    config_AM_timeSeriesStatsClimatology_compute_on_startup = .false.
    config_AM_timeSeriesStatsClimatology_write_on_startup = .false.
    config_AM_timeSeriesStatsClimatology_compute_interval = '00-00-00_01:00:00'
    config_AM_timeSeriesStatsClimatology_output_stream = 'timeSeriesStatsClimatologyOutput'
    config_AM_timeSeriesStatsClimatology_restart_stream = 'timeSeriesStatsClimatologyRestart'
    config_AM_timeSeriesStatsClimatology_operation = 'avg'
    config_AM_timeSeriesStatsClimatology_reference_times = '00-03-01_00:00:00;00-06-01_00:00:00;00-09-01_00:00:00;00-12-01_00:00:00'
    config_AM_timeSeriesStatsClimatology_duration_intervals = '00-03-00_00:00:00;00-03-00_00:00:00;00-03-00_00:00:00;00-03-00_00:00:00'
    config_AM_timeSeriesStatsClimatology_repeat_intervals = '01-00-00_00:00:00;01-00-00_00:00:00;01-00-00_00:00:00;01-00-00_00:00:00'
    config_AM_timeSeriesStatsClimatology_reset_intervals = '1000-00-00_00:00:00;1000-00-00_00:00:00;1000-00-00_00:00:00;1000-00-00_00:00:00'
    config_AM_timeSeriesStatsClimatology_backward_output_offset = '00-03-00_00:00:00'
/
&AM_timeSeriesStatsMonthlyMax
    config_AM_timeSeriesStatsMonthlyMax_enable = .false.
    config_AM_timeSeriesStatsMonthlyMax_compute_on_startup = .false.
    config_AM_timeSeriesStatsMonthlyMax_write_on_startup = .false.
    config_AM_timeSeriesStatsMonthlyMax_compute_interval = '00-00-00_01:00:00'
    config_AM_timeSeriesStatsMonthlyMax_output_stream = 'timeSeriesStatsMonthlyMaxOutput'
    config_AM_timeSeriesStatsMonthlyMax_restart_stream = 'timeSeriesStatsMonthlyMaxRestart'
    config_AM_timeSeriesStatsMonthlyMax_operation = 'max'
    config_AM_timeSeriesStatsMonthlyMax_reference_times = 'initial_time'
    config_AM_timeSeriesStatsMonthlyMax_duration_intervals = 'repeat_interval'
    config_AM_timeSeriesStatsMonthlyMax_repeat_intervals = 'reset_interval'
    config_AM_timeSeriesStatsMonthlyMax_reset_intervals = '00-01-00_00:00:00'
    config_AM_timeSeriesStatsMonthlyMax_backward_output_offset = '00-01-00_00:00:00'
/
&AM_timeSeriesStatsMonthlyMin
    config_AM_timeSeriesStatsMonthlyMin_enable = .false.
    config_AM_timeSeriesStatsMonthlyMin_compute_on_startup = .false.
    config_AM_timeSeriesStatsMonthlyMin_write_on_startup = .false.
    config_AM_timeSeriesStatsMonthlyMin_compute_interval = '00-00-00_01:00:00'
    config_AM_timeSeriesStatsMonthlyMin_output_stream = 'timeSeriesStatsMonthlyMinOutput'
    config_AM_timeSeriesStatsMonthlyMin_restart_stream = 'timeSeriesStatsMonthlyMinRestart'
    config_AM_timeSeriesStatsMonthlyMin_operation = 'min'
    config_AM_timeSeriesStatsMonthlyMin_reference_times = 'initial_time'
    config_AM_timeSeriesStatsMonthlyMin_duration_intervals = 'repeat_interval'
    config_AM_timeSeriesStatsMonthlyMin_repeat_intervals = 'reset_interval'
    config_AM_timeSeriesStatsMonthlyMin_reset_intervals = '00-01-00_00:00:00'
    config_AM_timeSeriesStatsMonthlyMin_backward_output_offset = '00-01-00_00:00:00'
/
&AM_timeSeriesStatsCustom
    config_AM_timeSeriesStatsCustom_enable = .false.
    config_AM_timeSeriesStatsCustom_compute_on_startup = .false.
    config_AM_timeSeriesStatsCustom_write_on_startup = .false.
    config_AM_timeSeriesStatsCustom_compute_interval = '00-00-00_01:00:00'
    config_AM_timeSeriesStatsCustom_output_stream = 'timeSeriesStatsCustomOutput'
    config_AM_timeSeriesStatsCustom_restart_stream = 'timeSeriesStatsCustomRestart'
    config_AM_timeSeriesStatsCustom_operation = 'avg'
    config_AM_timeSeriesStatsCustom_reference_times = 'initial_time'
    config_AM_timeSeriesStatsCustom_duration_intervals = 'repeat_interval'
    config_AM_timeSeriesStatsCustom_repeat_intervals = 'reset_interval'
    config_AM_timeSeriesStatsCustom_reset_intervals = '00-00-07_00:00:00'
    config_AM_timeSeriesStatsCustom_backward_output_offset = '00-00-01_00:00:00'
/
&AM_pointwiseStats
    config_AM_pointwiseStats_enable = .false.
    config_AM_pointwiseStats_compute_interval = 'output_interval'
    config_AM_pointwiseStats_output_stream = 'pointwiseStatsOutput'
    config_AM_pointwiseStats_compute_on_startup = .true.
    config_AM_pointwiseStats_write_on_startup = .true.
/
&AM_debugDiagnostics
    config_AM_debugDiagnostics_enable = .false.
    config_AM_debugDiagnostics_compute_interval = 'output_interval'
    config_AM_debugDiagnostics_output_stream = 'debugDiagnosticsOutput'
    config_AM_debugDiagnostics_compute_on_startup = .true.
    config_AM_debugDiagnostics_write_on_startup = .true.
    config_AM_debugDiagnostics_check_state = .false.
/
&AM_rpnCalculator
    config_AM_rpnCalculator_enable = .false.
    config_AM_rpnCalculator_compute_on_startup = .true.
    config_AM_rpnCalculator_write_on_startup = .false.
    config_AM_rpnCalculator_compute_interval = '0010-00-00_00:00:00'
    config_AM_rpnCalculator_output_stream = 'none'
    config_AM_rpnCalculator_variable_a = 'layerThickness'
    config_AM_rpnCalculator_variable_b = 'areaCell'
    config_AM_rpnCalculator_variable_c = 'none'
    config_AM_rpnCalculator_variable_d = 'none'
    config_AM_rpnCalculator_variable_e = 'none'
    config_AM_rpnCalculator_variable_f = 'none'
    config_AM_rpnCalculator_variable_g = 'none'
    config_AM_rpnCalculator_variable_h = 'none'
    config_AM_rpnCalculator_expression_1 = 'a b *'
    config_AM_rpnCalculator_expression_2 = 'none'
    config_AM_rpnCalculator_expression_3 = 'none'
    config_AM_rpnCalculator_expression_4 = 'none'
    config_AM_rpnCalculator_output_name_1 = 'volumeCell'
    config_AM_rpnCalculator_output_name_2 = 'none'
    config_AM_rpnCalculator_output_name_3 = 'none'
    config_AM_rpnCalculator_output_name_4 = 'none'
/
&AM_transectTransport
    config_AM_transectTransport_enable = .false.
    config_AM_transectTransport_compute_interval = 'output_interval'
    config_AM_transectTransport_output_stream = 'transectTransportOutput'
    config_AM_transectTransport_compute_on_startup = .true.
    config_AM_transectTransport_write_on_startup = .true.
    config_AM_transectTransport_transect_group = 'all'
/
&AM_eddyProductVariables
    config_AM_eddyProductVariables_enable = .false.
    config_AM_eddyProductVariables_compute_interval = 'dt'
    config_AM_eddyProductVariables_output_stream = 'eddyProductVariablesOutput'
    config_AM_eddyProductVariables_compute_on_startup = .true.
    config_AM_eddyProductVariables_write_on_startup = .false.
/
&AM_mocStreamfunction
    config_AM_mocStreamfunction_enable = .false.
    config_AM_mocStreamfunction_compute_interval = 'output_interval'
    config_AM_mocStreamfunction_output_stream = 'mocStreamfunctionOutput'
    config_AM_mocStreamfunction_compute_on_startup = .true.
    config_AM_mocStreamfunction_write_on_startup = .true.
    config_AM_mocStreamfunction_min_bin = -1.0e34
    config_AM_mocStreamfunction_max_bin = -1.0e34
    config_AM_mocStreamfunction_num_bins = 180
    config_AM_mocStreamfunction_region_group = 'all'
    config_AM_mocStreamfunction_transect_group = 'all'
/
&AM_oceanHeatContent
    config_AM_oceanHeatContent_enable = .false.
    config_AM_oceanHeatContent_compute_interval = 'output_interval'
    config_AM_oceanHeatContent_output_stream = 'oceanHeatContentOutput'
    config_AM_oceanHeatContent_compute_on_startup = .true.
    config_AM_oceanHeatContent_write_on_startup = .true.
/
&AM_mixedLayerHeatBudget
    config_AM_mixedLayerHeatBudget_enable = .false.
    config_AM_mixedLayerHeatBudget_compute_interval = 'output_interval'
    config_AM_mixedLayerHeatBudget_output_stream = 'mixedLayerHeatBudgetOutput'
    config_AM_mixedLayerHeatBudget_compute_on_startup = .true.
    config_AM_mixedLayerHeatBudget_write_on_startup = .true.
/
&AM_sedimentFluxIndex
    config_AM_sedimentFluxIndex_enable = .false.
    config_AM_sedimentFluxIndex_compute_on_startup = .true.
    config_AM_sedimentFluxIndex_write_on_startup = .true.
    config_AM_sedimentFluxIndex_compute_interval = 'output_interval'
    config_AM_sedimentFluxIndex_output_stream = 'sedimentFluxIndexOutput'
    config_AM_sedimentFluxIndex_directory = 'analysis_members'
    config_AM_sedimentFluxIndex_use_lat_lon_coords = .true.
/
&AM_sedimentTransport
    config_AM_sedimentTransport_enable = .false.
    config_AM_sedimentTransport_compute_on_startup = .true.
    config_AM_sedimentTransport_write_on_startup = .true.
    config_AM_sedimentTransport_compute_interval = 'output_interval'
    config_AM_sedimentTransport_output_stream = 'sedimentTransportOutput'
    config_AM_sedimentTransport_directory = 'analysis_members'
    config_AM_sedimentTransport_grain_size = 2.5e-4
    config_AM_sedimentTransport_ws_formula = 'VanRijn1993'
    config_AM_sedimentTransport_bedld_formula = 'Soulsby-Damgaard'
    config_AM_sedimentTransport_SSC_ref_formula = 'Lee2004'
    config_AM_sedimentTransport_drag_coefficient = 2.5e-3
    config_AM_sedimentTransport_erate = 5.0e-4
    config_AM_sedimentTransport_tau_ce = 0.1
    config_AM_sedimentTransport_tau_cd = 0.1
    config_AM_sedimentTransport_Manning_coef = 0.022
    config_AM_sedimentTransport_grain_porosity = 0.5
    config_AM_sedimentTransport_water_density = 1020
    config_AM_sedimentTransport_grain_density = 2650
    config_AM_sedimentTransport_alpha = 1e-2
    config_AM_sedimentTransport_kinematic_viscosity = 1e-6
    config_AM_sedimentTransport_vertical_diffusion_coefficient = 1e-2
    config_AM_sedimentTransport_bedload = .true.
    config_AM_sedimentTransport_suspended = .true.
    config_AM_sedimentTransport_use_lat_lon_coords = .true.
/
&AM_harmonicAnalysis
    config_AM_harmonicAnalysis_enable = .false.
    config_AM_harmonicAnalysis_compute_interval = 'output_interval'
    config_AM_harmonicAnalysis_start_delay = 20
    config_AM_harmonicAnalysis_duration = 90
    config_AM_harmonicAnalysis_output_stream = 'harmonicAnalysisOutput'
    config_AM_harmonicAnalysis_restart_stream = 'harmonicAnalysisRestart'
    config_AM_harmonicAnalysis_compute_on_startup = .false.
    config_AM_harmonicAnalysis_write_on_startup = .false.
    config_AM_harmonicAnalysis_use_M2 = .true.
    config_AM_harmonicAnalysis_use_S2 = .true.
    config_AM_harmonicAnalysis_use_N2 = .true.
    config_AM_harmonicAnalysis_use_K2 = .true.
    config_AM_harmonicAnalysis_use_K1 = .true.
    config_AM_harmonicAnalysis_use_O1 = .true.
    config_AM_harmonicAnalysis_use_Q1 = .true.
    config_AM_harmonicAnalysis_use_P1 = .true.
/
&AM_conservationCheck
    config_AM_conservationCheck_enable = .false.
    config_AM_conservationCheck_compute_interval = 'dt'
    config_AM_conservationCheck_output_stream = 'conservationCheckOutput'
    config_AM_conservationCheck_compute_on_startup = .false.
    config_AM_conservationCheck_write_on_startup = .false.
    config_AM_conservationCheck_write_to_logfile = .true.
    config_AM_conservationCheck_restart_stream = 'conservationCheckRestart'
/

@hyungyukang
Copy link
Copy Markdown
Author

hyungyukang commented Apr 20, 2026

Convergence test of time steppers

  • Baroclinic channel test (10 km)
  • Reference solution: $$\Delta t = 1\ s$$ for each time stepper
  • Error (l2 norm of 3D temperature b/t test and reference) evaluated after 1 hour of integration
image

@xylar
Copy link
Copy Markdown

xylar commented Apr 20, 2026

@hyungyukang, this is really fantastic!

Could you make issues for each of the temporary fixes you added here so we don't lose track of them, and assign them to an appropriate person?

@hyungyukang
Copy link
Copy Markdown
Author

hyungyukang commented Apr 20, 2026

The results are identical across CPU core counts and across GPUs after merging #388. The CPU and GPU results differ slightly, as expected.

Below are the domain-integrated KE values at day 10 of the overflow test on Perlmutter:

pm-cpu
80 cores: 97996299733833.11
49 cores: 97996299733833.11

pm-gpu
 1 GPU :  97996303354396.72
12 GPUs:  97996303354396.72

@hyungyukang
Copy link
Copy Markdown
Author

hyungyukang commented Apr 20, 2026

@hyungyukang, this is really fantastic!

Could you make issues for each of the temporary fixes you added here so we don't lose track of them, and assign them to an appropriate person?

@xylar , Thanks! The changes I made were only meant for the tests above. The code I added in OceanInit.cpp to convert geometric thickness to pseudo thickness is also a temporary implementation. As I understand it, this capability will be implemented in Polaris, correct?

For MPAS-Ocean, the changes I made are not intended for general use. Other than the bug in the RK4 time stepper in MPAS-Ocean, they were used only for this test. I plan to open a PR for that bug in E3SM soon.

I’ll provide all the details here soon.

@sbrus89 sbrus89 requested review from brian-oneill and mwarusz April 20, 2026 20:04
@hyungyukang
Copy link
Copy Markdown
Author

Below is the workaround code I added separately at line 212 in OceanInit.cpp to convert GeometricThickness to PseudoThickness:


   // For initial GeometricThick -> PseudoThick
   HorzMesh *Mesh = HorzMesh::getDefault();
   VertCoord *VCoord = VertCoord::getDefault();
   Eos *EosInstance = Eos::getInstance();

   // get temperature and salinity
   I4 ConservTempIdx;
   I4 AbsSalinityIdx;
   Array3DReal TracerArray = Tracers::getAll(0);

   Tracers::getIndex(ConservTempIdx, "Temperature");
   Tracers::getIndex(AbsSalinityIdx, "Salinity");

   const auto ConservTemp =
       Kokkos::subview(TracerArray, ConservTempIdx, Kokkos::ALL, Kokkos::ALL);
   const auto AbsSalinity =
       Kokkos::subview(TracerArray, AbsSalinityIdx, Kokkos::ALL, Kokkos::ALL);

   Array2DReal PressureMidDbar("PressureMidDbar", VCoord->PressureMid.layout());
   deepCopy(PressureMidDbar, 0.0);
   EosInstance->computeSpecVol(ConservTemp, AbsSalinity, PressureMidDbar);
   const auto &SpecVol  = EosInstance->SpecVol;

   // get layer thickness
   Array2DReal LayerThickCell = DefState->getLayerThickness(0);
   OMEGA_SCOPE(LocMinLayerCell, VCoord->MinLayerCell);
   OMEGA_SCOPE(LocMaxLayerCell, VCoord->MaxLayerCell);
   OMEGA_SCOPE(LocNCellsAll, Mesh->NCellsAll);

   parallelForOuter(
       “GtoP", {LocNCellsAll},
       KOKKOS_LAMBDA(int ICell, const TeamMember &Team) {
          const int KMin   = LocMinLayerCell(ICell);
          const int KMax   = LocMaxLayerCell(ICell);
          const int KRange = vertRange(KMin, KMax);
          parallelForInner(
              Team, KRange, INNER_LAMBDA(int KChunk) {
                 const int K               = KMin + KChunk;
                 LayerThickCell(ICell,K) = LayerThickCell(ICell,K) / (SpecVol(ICell,K)*1026.0);

              });
       });

@hyungyukang
Copy link
Copy Markdown
Author

A long-term solution for the initial pseudo thickness from the Polaris will be provided through this Polaris PR: E3SM-Project/polaris#460

I tested the Polaris PR in combination with this time stepping PR using the overflow test, and the results are shown in this comment: E3SM-Project/polaris#460 (comment)

Copy link
Copy Markdown
Member

@mwarusz mwarusz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hyungyukang Thanks ! This looks pretty good. Just a couple of comments.

Comment thread components/omega/src/ocn/AuxiliaryState.h
Comment thread components/omega/src/ocn/Tendencies.cpp Outdated
Comment thread components/omega/src/ocn/Tendencies.cpp
@hyungyukang
Copy link
Copy Markdown
Author

For reference, here are the changes I made on the MPAS-O side to match Omega as closely as possible:

  1. Fixed a bug in mpas-ocean/src/mode_forward/mpas_ocn_time_integration_rk4.F (will open a PR in E3SM soon)
1358       call ocn_diagnostic_solve(dt, provisStatePool, forcingPool, meshPool, verticalMeshPool, scratchPool, provisTracersPool, 1)
  • Changed tracersPool -> provisTracersPool
  1. Modified mpas-ocean/src/shared/mpas_ocn_diagnostics.F so that velocity divergence is included only in the vertical velocity computation
3200       do iCell = 1,nCells
3201          vertAleTransportTop(1,iCell) = 0.0_RKIND
3202          vertAleTransportTop(maxLevelCell(iCell)+1,iCell) = 0.0_RKIND
3203          do k = maxLevelCell(iCell), minLevelCell(iCell)+1, -1
3204             vertAleTransportTop(k,iCell) = &
3205                 vertAleTransportTop(k+1,iCell) - div_hu(k,iCell)
3206 !                    - (ALE_Thickness(k,iCell) - &
3207 !                       oldLayerThickness(k,iCell))/dt
3208          end do
3209       end do
  1. Disabled the horizontal tracer FCT in mpas-ocean/src/shared/mpas_ocn_tracer_advection_mono.F, since this has not yet been implemented in Omega
 541            do k = minLevelCell(iCell), maxLevelCell(iCell)
 542               ! workTend  on RHS is total horiz advection tendency
 543               ! tracerCur on LHS is provisional tracer after
 544               !                     horizontal fluxes only.
 545 !             tracerCur(k,iCell) = (tracerCur(k,iCell)* &
 546 !                                   layerThickness(k,iCell) &
 547 !                                   + dt*workTend(k,iCell)) &
 548 !                                * hProvInv(k,iCell)
 549               tend(iTracer,k,iCell) = tend(iTracer,k,iCell) &
 550                                     + workTend(k,iCell)
 551            end do

@cbegeman
Copy link
Copy Markdown

2. Modified `mpas-ocean/src/shared/mpas_ocn_diagnostics.F` so that velocity divergence is included only in the vertical velocity computation
3200       do iCell = 1,nCells
3201          vertAleTransportTop(1,iCell) = 0.0_RKIND
3202          vertAleTransportTop(maxLevelCell(iCell)+1,iCell) = 0.0_RKIND
3203          do k = maxLevelCell(iCell), minLevelCell(iCell)+1, -1
3204             vertAleTransportTop(k,iCell) = &
3205                 vertAleTransportTop(k+1,iCell) - div_hu(k,iCell)
3206 !                    - (ALE_Thickness(k,iCell) - &
3207 !                       oldLayerThickness(k,iCell))/dt
3208          end do
3209       end do

@hyungyukang I think you might be able to achieve this with using config_vert_coord_movement = 'impermeable_interfaces'. Have you tried this? I ask partly because it would be good to be able to compare MPAS-O and Omega by using config options with polaris.

@cbegeman
Copy link
Copy Markdown

3. Disabled the horizontal tracer FCT in `mpas-ocean/src/shared/mpas_ocn_tracer_advection_mono.F`, since this has not yet been implemented in Omega
 541            do k = minLevelCell(iCell), maxLevelCell(iCell)
 542               ! workTend  on RHS is total horiz advection tendency
 543               ! tracerCur on LHS is provisional tracer after
 544               !                     horizontal fluxes only.
 545 !             tracerCur(k,iCell) = (tracerCur(k,iCell)* &
 546 !                                   layerThickness(k,iCell) &
 547 !                                   + dt*workTend(k,iCell)) &
 548 !                                * hProvInv(k,iCell)
 549               tend(iTracer,k,iCell) = tend(iTracer,k,iCell) &
 550                                     + workTend(k,iCell)
 551            end do

@hyungyukang Can this be achieved with config_flux_limiter = 'none'?

@hyungyukang hyungyukang force-pushed the omega/add-compute-diag-aux branch from 00c3696 to c6edc1d Compare April 24, 2026 01:35
@hyungyukang
Copy link
Copy Markdown
Author

hyungyukang commented Apr 24, 2026

@hyungyukang I think you might be able to achieve this with using config_vert_coord_movement = 'impermeable_interfaces'. Have you tried this? I ask partly because it would be good to be able to compare MPAS-O and Omega by using config options with polaris.

@cbegeman , I tried that before, but both the overflow test and the QU240 spin-down test blew up with that option in MPAS-O. And as far as I know, it is also not available in Omega (correct me if I'm wrong). For now, the best option for making the two models as close as possible was to use MovementWeightType: Uniform in Omega and config_vert_coord_movement='uniform_stretching' in MPAS-O, together with vertical velocity computation matching.

@hyungyukang
Copy link
Copy Markdown
Author

@hyungyukang Can this be achieved with config_flux_limiter = 'none'?

@cbegeman , yes, but in MPAS-Ocean it influences both horizontal and vertical advection, while in Omega it affects only vertical advection. Since horizontal FCT has not yet been implemented in Omega, I had to disable it in MPAS-O.

If vertical FCT is turned off in both models, both the overflow test and the QU240 spin-down test blow up.

@cbegeman
Copy link
Copy Markdown

@hyungyukang I think you might be able to achieve this with using config_vert_coord_movement = 'impermeable_interfaces'. Have you tried this? I ask partly because it would be good to be able to compare MPAS-O and Omega by using config options with polaris.

@cbegeman , I tried that before, but both the overflow test and the QU240 spin-down test blew up with that option in MPAS-O. And as far as I know, it is also not available in Omega (correct me if I'm wrong). For now, the best option for making the two models as close as possible was to use MovementWeightType: Uniform in Omega and config_vert_coord_movement='uniform_stretching' in MPAS-O, together with vertical velocity computation matching.

What about the fixed option? That seems to be present in both models but I don't know if it has the same meaning.

@cbegeman
Copy link
Copy Markdown

@hyungyukang Can this be achieved with config_flux_limiter = 'none'?

@cbegeman , yes, but in MPAS-Ocean it influences both horizontal and vertical advection, while in Omega it affects only vertical advection. Since horizontal FCT has not yet been implemented in Omega, I had to disable it in MPAS-O.

If vertical FCT is turned off in both models, both the overflow test and the QU240 spin-down test blow up.

Thanks for clarifying. I didn't realize that you needed vertical FCT for these cases.

@xylar
Copy link
Copy Markdown

xylar commented Apr 27, 2026

Just making a note that my understanding is that we won't try to hook up p* in this PR. We'll get this in, I'll do the renaming PR (#327), and then we'll hook up p*.

Comment thread components/omega/src/ocn/VertAdv.cpp Outdated
@mark-petersen
Copy link
Copy Markdown
Collaborator

Passes all cTests on Perlmutter with gnu on both CPU and GPUs.

Copy link
Copy Markdown

@brian-oneill brian-oneill left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved. Remaining energy conservation concerns with 3rd and 4th order HorzAdv seem unrelated to this PR. Successfully passes ctests on Frontier CPU & GPU, as well as Improv.

Copy link
Copy Markdown
Collaborator

@mark-petersen mark-petersen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving based on testing above - both comparisons with MPAS-O and convergence tests, which are the gold standard. Note that the overflow test above is the first instance where vertical advection is a leading-order term, and it was successful in comparison to MPAS-Ocean.

@mark-petersen mark-petersen self-assigned this Apr 30, 2026
- Added computeMomDiagAux to AuxiliaryState.cpp to compute the
  diagnostic variables required for time stepping in Omega.

- Removed some diagnostic variable computations before the PGF
  tendency to avoid duplicate work in computeDiagnosticAux.

- Called computeMomDiag at the appropriate points during time stepping.

- NOTE: SurfacePressure is currently handled temporarily in
  VertCoord.
- Reordered the computational procedures in Forward-Backward
This commit refactors momentum auxiliary state computation.
- Renamed computeMomDiagAux to computeMomVertAux for clarity
- Consolidated vertical auxiliary computations by calling
  computeMomVertAux within computeMomAux
- Updated computeMomAux signature to accept TracerArray parameter
This commit restores the computational sequence in computeAllTendencies
to its original order.

- No changes to the computational sequence in computeAllTendencies are
  needed in this PR.
@hyungyukang hyungyukang force-pushed the omega/add-compute-diag-aux branch from 82ed710 to 3ecb506 Compare April 30, 2026 16:10
Copy link
Copy Markdown
Collaborator

@sbrus89 sbrus89 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Passes all omega_pr tests on pm-cpu with a local merge into develop. Thanks for the great work @hyungyukang!

Polaris omega_pr suite

  • Baseline workdir: /global/homes/s/sbrus/scratch/polaris_v1_timestepping_omega_pr_baseline/
  • Baseline build: /global/homes/s/sbrus/scratch/polaris_v1_timestepping_omega_pr_baseline/build
  • PR build: /global/homes/s/sbrus/scratch/polaris_v1_timestepping_omega_pr/build
  • PR workdir: /global/homes/s/sbrus/scratch/polaris_v1_timestepping_omega_pr
  • Machine: pm-cpu
  • Compiler: gnu
  • Build type: Release
  • Log: not found
  • Result: All tests passed

@cbegeman
Copy link
Copy Markdown

@hyungyukang Just a reminder to update the checklist in the PR description when you have a chance

@hyungyukang
Copy link
Copy Markdown
Author

@hyungyukang Just a reminder to update the checklist in the PR description when you have a chance

@cbegeman , Thanks for pointing that out. I just finished it.

@hyungyukang
Copy link
Copy Markdown
Author

What about the fixed option? That seems to be present in both models but I don't know if it has the same meaning.

@cbegeman , The fixed option seems to work, but the results are not as close as those from using Uniform together with the vertical velocity change in MPAS-O.
image

Thanks for clarifying. I didn't realize that you needed vertical FCT for these cases.

For now, it looks like the QU240 spin-down test can run without FCT if stronger del2 and del4 viscosity are used. However, the overflow test still seems to require at least vertical FCT.

Copy link
Copy Markdown

@cbegeman cbegeman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving on the basis of successful testing of the omega_pr suite with a baseline of polaris's Omega submodule and a 1.5-day run on the overflow test case from E3SM-Project/polaris#572:
image

@mark-petersen mark-petersen merged commit d40e462 into E3SM-Project:develop May 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants