Before this module, there were THREE copies of the ocean setup
sequence: driver_run_ocean ran 21 configure_ocean_*-family
stages, rdb_ocean_create_from_string ran 9, and bench_ocean
ran 9 (mirroring the API). Twelve stages — configure_ocean_bc,
configure_ocean_diag, configure_ocean_hdiff,
configure_ocean_porous, configure_ocean_p_surf,
configure_ocean_sponge, configure_ocean_tides,
configure_ocean_tracers, configure_ocean_wave_drag,
configure_ocean_wetdry, ocean_data_forcing_configure,
ocean_halo_init — were parsed, validated and silently INERT on
the API path: a Python caller could set a boundary condition, a
tide, a sponge, wet/dry, porous barriers, tracer hdiff, surface
pressure, wave drag or file-backed forcing and none of it would
take effect. engine_setup below is driver_run_ocean’s exact
21-stage sequence, in its exact order — order is load-bearing
and heavily commented at each site; see the per-stage comments
carried over from the driver.
ocean_engine_t owns the god state (ocean_state_t) plus the
setup products that are NOT state slots and used to be driver
stack locals: grid, geo (geothermal), bc_source (constant
boundary-data backend), decomp, evp_params (sea-ice EVP),
ic_par (sea-ice IC), cfl_vtol (console-stats CFL-vanish
tolerance) — exactly the things the API path silently lacked a
place to put. n_inner (resolved barotropic substep count) and
diag_enabled (latched cfg%ocean%diag%enabled, so engine_step
does not need cfg) are new fields the engine itself needs to
function; device_mapped/is_setup are idempotency guards
mirroring rdb_handle’s ocean_handle_t.
engine_step + engine_step_finalize are intentionally more
than a bare ocean_dyn_step_split call: because engine_setup
now reaches configure_ocean_bc/_porous/_diag/
ocean_data_forcing_configure for every caller, the matching
PER-STEP halves of those stages (bc_source%update,
ocean_porous_refresh, the file-forcing update_all/apply
pair, ocean_surface_flux_assemble, ocean_diag_t%step) must
run too, or those stages would be “configured but not executed”
for API/bench callers — precisely the class of bug this module
exists to close. The two calls are split (not one) because the
driver’s own sea-ice block sits, in driver_run_ocean’s
sequence, between the dyn-core advance and
ocean_surface_flux_assemble — see engine_step’s docstring.
What stays OUT of both, by design: t_current/n_steps
bookkeeping, status/restart cadence, and console_stats (the
caller latches its own mass0/salt0/heat0/ke0 reference on
first call — see driver_run_ocean).
P2.4b closed the sea-ice gap P2.4 left open. engine_step_ice
below is driver_run_ocean’s former inline sea-ice per-step block
(frazil/EVP/thermo-driver/transport), transcribed verbatim —
same call order, same gates (ice%enable, ice%dynamics, the
thermo cadence via is_thermo_step(), &ocean_ice_nml transport),
same “MANDATED ORDER” contract documented at its own call sites.
A caller with sea ice enabled calls engine_step, then
engine_step_ice, then engine_step_finalize — exactly
driver_run_ocean’s sequence (both the driver and the C ABI’s
rdb_ocean_step do this now). It is engine_step_ice, not
engine_step, precisely because it must run BETWEEN the dyn-core
advance and ocean_surface_flux_assemble: the assembler reads the
salt/heat components the ice block writes. engine_step_ice
itself is a no-op (returns immediately) when
&ocean_ice_nml enable = .false. — bit-identical to before this
phase for every non-ice caller/config. A caller with sea ice
enabled via engine_setup who never calls engine_step_ice is
back to the P2.4 gap (configured, not advanced) — that is now a
caller bug, not a library one.
NetCDF is optional (RDB_ENABLE_NETCDF/RDB_NO_NETCDF).
This module compiles unconditionally (the API’s core_objs
target requires it even in a NetCDF-free configure), so every
NetCDF-only piece — the diag NetCDF stream, file-backed forcing,
and restart I/O’s filename resolution (output_rank_filename,
rdb_io_netcdf) — is #ifndef RDB_NO_NETCDF-guarded, with an
#else fail() if a caller actually asks for one of those
features in a build that cannot provide it (previously an
impossible combination: rdb_driver.F90 itself was excluded from
the NetCDF-free build, so no code path could reach this
contradiction; reachable via the API today).
module~~rdb_ocean_engine~~UsesGraph
module~rdb_ocean_engine
rdb_ocean_engine
iso_fortran_env
iso_fortran_env
module~rdb_ocean_engine->iso_fortran_env
module~rdb_config
rdb_config
module~rdb_ocean_engine->module~rdb_config
module~rdb_constants
rdb_constants
module~rdb_ocean_engine->module~rdb_constants
module~rdb_decomp
rdb_decomp
module~rdb_ocean_engine->module~rdb_decomp
module~rdb_error_ring
rdb_error_ring
module~rdb_ocean_engine->module~rdb_error_ring
module~rdb_grid
rdb_grid
module~rdb_ocean_engine->module~rdb_grid
module~rdb_halo
rdb_halo
module~rdb_ocean_engine->module~rdb_halo
module~rdb_ice_atm_forcing
rdb_ice_atm_forcing
module~rdb_ocean_engine->module~rdb_ice_atm_forcing
module~rdb_ice_basal_flux
rdb_ice_basal_flux
module~rdb_ocean_engine->module~rdb_ice_basal_flux
module~rdb_ice_evp
rdb_ice_evp
module~rdb_ocean_engine->module~rdb_ice_evp
module~rdb_ice_frazil
rdb_ice_frazil
module~rdb_ocean_engine->module~rdb_ice_frazil
module~rdb_ice_frazil_uptake
rdb_ice_frazil_uptake
module~rdb_ocean_engine->module~rdb_ice_frazil_uptake
module~rdb_ice_init
rdb_ice_init
module~rdb_ocean_engine->module~rdb_ice_init
module~rdb_ice_itd
rdb_ice_itd
module~rdb_ocean_engine->module~rdb_ice_itd
module~rdb_ice_ocean_coupler
rdb_ice_ocean_coupler
module~rdb_ocean_engine->module~rdb_ice_ocean_coupler
module~rdb_ice_snow
rdb_ice_snow
module~rdb_ocean_engine->module~rdb_ice_snow
module~rdb_ice_thermo_driver
rdb_ice_thermo_driver
module~rdb_ocean_engine->module~rdb_ice_thermo_driver
module~rdb_ice_transport
rdb_ice_transport
module~rdb_ocean_engine->module~rdb_ice_transport
module~rdb_io_netcdf
rdb_io_netcdf
module~rdb_ocean_engine->module~rdb_io_netcdf
module~rdb_ocean_boundary_data
rdb_ocean_boundary_data
module~rdb_ocean_engine->module~rdb_ocean_boundary_data
module~rdb_ocean_boundary_types
rdb_ocean_boundary_types
module~rdb_ocean_engine->module~rdb_ocean_boundary_types
module~rdb_ocean_cavity_flux
rdb_ocean_cavity_flux
module~rdb_ocean_engine->module~rdb_ocean_cavity_flux
module~rdb_ocean_data_forcing
rdb_ocean_data_forcing
module~rdb_ocean_engine->module~rdb_ocean_data_forcing
module~rdb_ocean_data_input
rdb_ocean_data_input
module~rdb_ocean_engine->module~rdb_ocean_data_input
module~rdb_ocean_diag
rdb_ocean_diag
module~rdb_ocean_engine->module~rdb_ocean_diag
module~rdb_ocean_diag_derived
rdb_ocean_diag_derived
module~rdb_ocean_engine->module~rdb_ocean_diag_derived
module~rdb_ocean_diag_fills
rdb_ocean_diag_fills
module~rdb_ocean_engine->module~rdb_ocean_diag_fills
module~rdb_ocean_diag_netcdf
rdb_ocean_diag_netcdf
module~rdb_ocean_engine->module~rdb_ocean_diag_netcdf
module~rdb_ocean_dyn
rdb_ocean_dyn
module~rdb_ocean_engine->module~rdb_ocean_dyn
module~rdb_ocean_fold_apply
rdb_ocean_fold_apply
module~rdb_ocean_engine->module~rdb_ocean_fold_apply
module~rdb_ocean_fold_exchange
rdb_ocean_fold_exchange
module~rdb_ocean_engine->module~rdb_ocean_fold_exchange
module~rdb_ocean_geothermal
rdb_ocean_geothermal
module~rdb_ocean_engine->module~rdb_ocean_geothermal
module~rdb_ocean_halo
rdb_ocean_halo
module~rdb_ocean_engine->module~rdb_ocean_halo
module~rdb_ocean_halo_state
rdb_ocean_halo_state
module~rdb_ocean_engine->module~rdb_ocean_halo_state
module~rdb_ocean_metrics
rdb_ocean_metrics
module~rdb_ocean_engine->module~rdb_ocean_metrics
module~rdb_ocean_periodic
rdb_ocean_periodic
module~rdb_ocean_engine->module~rdb_ocean_periodic
module~rdb_ocean_setup
rdb_ocean_setup
module~rdb_ocean_engine->module~rdb_ocean_setup
module~rdb_ocean_sponge
rdb_ocean_sponge
module~rdb_ocean_engine->module~rdb_ocean_sponge
module~rdb_ocean_stability_audit
rdb_ocean_stability_audit
module~rdb_ocean_engine->module~rdb_ocean_stability_audit
module~rdb_ocean_state
rdb_ocean_state
module~rdb_ocean_engine->module~rdb_ocean_state
module~rdb_ocean_status
rdb_ocean_status
module~rdb_ocean_engine->module~rdb_ocean_status
module~rdb_ocean_surface_flux
rdb_ocean_surface_flux
module~rdb_ocean_engine->module~rdb_ocean_surface_flux
module~rdb_ocean_surface_stress
rdb_ocean_surface_stress
module~rdb_ocean_engine->module~rdb_ocean_surface_stress
module~rdb_ocean_vcoord
rdb_ocean_vcoord
module~rdb_ocean_engine->module~rdb_ocean_vcoord
module~rdb_profiler
rdb_profiler
module~rdb_ocean_engine->module~rdb_profiler
module~rdb_state
rdb_state
module~rdb_ocean_engine->module~rdb_state
module~rdb_vcoord
rdb_vcoord
module~rdb_ocean_engine->module~rdb_vcoord
pic_logger
pic_logger
module~rdb_ocean_engine->pic_logger
pic_strings
pic_strings
module~rdb_ocean_engine->pic_strings
module~rdb_config->module~rdb_constants
module~rdb_config->module~rdb_error_ring
module~rdb_config->module~rdb_ice_init
module~rdb_config->module~rdb_ocean_status
module~rdb_config->pic_logger
module~rdb_config->pic_strings
module~rdb_ice_enthalpy
rdb_ice_enthalpy
module~rdb_config->module~rdb_ice_enthalpy
module~rdb_nml_schema
rdb_nml_schema
module~rdb_config->module~rdb_nml_schema
pic_ascii
pic_ascii
module~rdb_config->pic_ascii
pic_types
pic_types
module~rdb_constants->pic_types
module~rdb_decomp->module~rdb_config
module~rdb_error_ring->pic_logger
module~rdb_grid->module~rdb_constants
module~rdb_halo->iso_fortran_env
module~rdb_halo->module~rdb_constants
module~rdb_halo->module~rdb_decomp
module~rdb_halo->pic_logger
module~rdb_comm_env
rdb_comm_env
module~rdb_halo->module~rdb_comm_env
module~rdb_efp
rdb_efp
module~rdb_halo->module~rdb_efp
pic_mpi_lib
pic_mpi_lib
module~rdb_halo->pic_mpi_lib
module~rdb_ice_atm_forcing->module~rdb_constants
module~rdb_ice_state
rdb_ice_state
module~rdb_ice_atm_forcing->module~rdb_ice_state
module~rdb_ice_basal_flux->module~rdb_constants
module~rdb_ice_basal_flux->module~rdb_grid
module~rdb_ice_basal_flux->module~rdb_ocean_surface_flux
module~rdb_eos
rdb_eos
module~rdb_ice_basal_flux->module~rdb_eos
module~rdb_ice_column
rdb_ice_column
module~rdb_ice_basal_flux->module~rdb_ice_column
module~rdb_ice_basal_flux->module~rdb_ice_state
module~rdb_multilayer_state
rdb_multilayer_state
module~rdb_ice_basal_flux->module~rdb_multilayer_state
module~rdb_ice_evp->module~rdb_constants
module~rdb_ice_evp->module~rdb_grid
module~rdb_ice_evp->module~rdb_ocean_boundary_types
module~rdb_ice_evp->module~rdb_ocean_halo
module~rdb_ice_evp->module~rdb_ocean_metrics
module~rdb_ice_evp->module~rdb_ocean_periodic
module~rdb_ice_evp->module~rdb_ice_column
module~rdb_ice_evp->module~rdb_ice_state
module~rdb_ice_evp->module~rdb_multilayer_state
module~rdb_ice_frazil->module~rdb_constants
module~rdb_ice_frazil->module~rdb_grid
module~rdb_ice_frazil->module~rdb_ocean_surface_flux
module~rdb_ice_frazil->module~rdb_eos
module~rdb_ice_frazil->module~rdb_multilayer_state
module~rdb_ice_frazil_uptake->module~rdb_constants
module~rdb_ice_frazil_uptake->module~rdb_grid
module~rdb_ice_frazil_uptake->module~rdb_eos
module~rdb_ice_frazil_uptake->module~rdb_ice_column
module~rdb_ice_frazil_uptake->module~rdb_ice_enthalpy
module~rdb_ice_mass
rdb_ice_mass
module~rdb_ice_frazil_uptake->module~rdb_ice_mass
module~rdb_ice_frazil_uptake->module~rdb_ice_state
module~rdb_ice_frazil_uptake->module~rdb_multilayer_state
module~rdb_ice_init->module~rdb_constants
module~rdb_ice_init->module~rdb_grid
module~rdb_ice_init->module~rdb_ocean_metrics
module~rdb_ice_init->module~rdb_ice_column
module~rdb_ice_init->module~rdb_ice_enthalpy
module~rdb_ice_init->module~rdb_ice_state
module~rdb_ice_init->module~rdb_multilayer_state
module~rdb_ice_itd->module~rdb_constants
module~rdb_ice_itd->module~rdb_grid
module~rdb_ice_itd->module~rdb_ice_state
module~rdb_ice_itd->module~rdb_multilayer_state
module~rdb_ice_ocean_coupler->module~rdb_constants
module~rdb_ice_ocean_coupler->module~rdb_grid
module~rdb_ice_ocean_coupler->module~rdb_ocean_boundary_types
module~rdb_ice_ocean_coupler->module~rdb_ocean_halo_state
module~rdb_ice_ocean_coupler->module~rdb_ocean_metrics
module~rdb_ice_ocean_coupler->module~rdb_ocean_surface_flux
module~rdb_ice_ocean_coupler->module~rdb_ocean_surface_stress
module~rdb_ice_ocean_coupler->module~rdb_ice_state
module~rdb_ice_snow->module~rdb_constants
module~rdb_ice_snow->module~rdb_grid
module~rdb_ice_snow->module~rdb_ice_enthalpy
module~rdb_ice_snow->module~rdb_ice_state
module~rdb_ice_thermo_driver->module~rdb_constants
module~rdb_ice_thermo_driver->module~rdb_grid
module~rdb_ice_thermo_driver->module~rdb_eos
module~rdb_ice_thermo_driver->module~rdb_ice_column
module~rdb_ice_thermo_driver->module~rdb_ice_state
module~rdb_ice_thermo_driver->module~rdb_multilayer_state
module~rdb_ice_transport->module~rdb_constants
module~rdb_ice_transport->module~rdb_grid
module~rdb_ice_transport->module~rdb_halo
module~rdb_ice_transport->module~rdb_ice_itd
module~rdb_ice_transport->module~rdb_ocean_boundary_types
module~rdb_ice_transport->module~rdb_ocean_halo
module~rdb_ice_transport->module~rdb_ocean_halo_state
module~rdb_ice_transport->module~rdb_ocean_metrics
module~rdb_continuity
rdb_continuity
module~rdb_ice_transport->module~rdb_continuity
module~rdb_ice_transport->module~rdb_ice_column
module~rdb_ice_transport->module~rdb_ice_state
module~rdb_ice_transport->module~rdb_multilayer_state
module~rdb_io_netcdf->iso_fortran_env
module~rdb_io_netcdf->module~rdb_constants
module~rdb_io_netcdf->module~rdb_error_ring
module~rdb_io_netcdf->pic_logger
module~rdb_io_netcdf->pic_strings
iso_c_binding
iso_c_binding
module~rdb_io_netcdf->iso_c_binding
netcdf
netcdf
module~rdb_io_netcdf->netcdf
module~rdb_ocean_boundary_data->module~rdb_constants
module~rdb_ocean_boundary_data->module~rdb_ocean_boundary_types
module~rdb_ocean_boundary_types->iso_fortran_env
module~rdb_ocean_boundary_types->module~rdb_constants
module~rdb_ocean_boundary_types->module~rdb_grid
module~rdb_ocean_boundary_types->module~rdb_ocean_status
module~rdb_ocean_boundary_types->pic_logger
module~rdb_mem_report
rdb_mem_report
module~rdb_ocean_boundary_types->module~rdb_mem_report
module~rdb_ocean_tide_astro
rdb_ocean_tide_astro
module~rdb_ocean_boundary_types->module~rdb_ocean_tide_astro
module~rdb_ocean_boundary_types->pic_ascii
module~rdb_ocean_cavity_flux->iso_fortran_env
module~rdb_ocean_cavity_flux->module~rdb_constants
module~rdb_ocean_cavity_flux->module~rdb_grid
module~rdb_ocean_cavity_flux->module~rdb_ocean_metrics
module~rdb_ocean_cavity_flux->module~rdb_ocean_surface_flux
module~rdb_ocean_cavity_flux->module~rdb_eos
module~rdb_ocean_cavity_flux->module~rdb_mem_report
module~rdb_ocean_cavity_flux->module~rdb_multilayer_state
module~rdb_ocean_cavity_melt
rdb_ocean_cavity_melt
module~rdb_ocean_cavity_flux->module~rdb_ocean_cavity_melt
module~rdb_ocean_data_forcing->module~rdb_config
module~rdb_ocean_data_forcing->module~rdb_constants
module~rdb_ocean_data_forcing->module~rdb_error_ring
module~rdb_ocean_data_forcing->module~rdb_grid
module~rdb_ocean_data_forcing->module~rdb_ocean_boundary_types
module~rdb_ocean_data_forcing->module~rdb_ocean_data_input
module~rdb_ocean_data_forcing->module~rdb_ocean_halo_state
module~rdb_ocean_data_forcing->module~rdb_ocean_status
module~rdb_ocean_data_forcing->module~rdb_ocean_surface_flux
module~rdb_ocean_data_forcing->module~rdb_ocean_surface_stress
module~rdb_ocean_data_forcing->pic_logger
module~rdb_ocean_data_forcing->pic_strings
module~rdb_ocean_data_input->iso_fortran_env
module~rdb_ocean_data_input->module~rdb_config
module~rdb_ocean_data_input->module~rdb_constants
module~rdb_ocean_data_input->module~rdb_error_ring
module~rdb_ocean_data_input->module~rdb_grid
module~rdb_ocean_data_input->module~rdb_io_netcdf
module~rdb_ocean_data_input->module~rdb_ocean_status
module~rdb_ocean_data_input->pic_logger
module~rdb_ocean_data_input->pic_strings
module~rdb_ocean_data_input->module~rdb_mem_report
module~rdb_ocean_data_input->netcdf
module~rdb_ocean_data_input->pic_ascii
module~rdb_ocean_diag->iso_fortran_env
module~rdb_ocean_diag->module~rdb_constants
module~rdb_ocean_diag->module~rdb_error_ring
module~rdb_ocean_diag->module~rdb_grid
module~rdb_ocean_diag->module~rdb_ocean_status
module~rdb_ocean_diag->pic_logger
ieee_arithmetic
ieee_arithmetic
module~rdb_ocean_diag->ieee_arithmetic
module~rdb_ocean_diag->module~rdb_mem_report
module~rdb_ocean_diag_mask
rdb_ocean_diag_mask
module~rdb_ocean_diag->module~rdb_ocean_diag_mask
module~rdb_ocean_diag_derived->module~rdb_constants
module~rdb_ocean_diag_derived->module~rdb_error_ring
module~rdb_ocean_diag_derived->module~rdb_ocean_diag
module~rdb_ocean_diag_derived->module~rdb_ocean_diag_fills
module~rdb_ocean_diag_derived->module~rdb_ocean_state
module~rdb_ocean_diag_derived->pic_logger
module~rdb_ocean_diag_derived->ieee_arithmetic
module~rdb_ocean_diag_fills->module~rdb_constants
module~rdb_ocean_diag_fills->module~rdb_ocean_diag
module~rdb_ocean_diag_fills->module~rdb_ocean_state
module~rdb_ocean_diag_fills->module~rdb_ocean_vcoord
module~rdb_ocean_diag_fills->ieee_arithmetic
module~rdb_ocean_diag_fills->module~rdb_eos
module~rdb_ocean_diag_fills->module~rdb_ice_column
module~rdb_ocean_pseudo_salt
rdb_ocean_pseudo_salt
module~rdb_ocean_diag_fills->module~rdb_ocean_pseudo_salt
module~rdb_remap_column
rdb_remap_column
module~rdb_ocean_diag_fills->module~rdb_remap_column
module~rdb_ocean_diag_netcdf->iso_fortran_env
module~rdb_ocean_diag_netcdf->module~rdb_constants
module~rdb_ocean_diag_netcdf->module~rdb_io_netcdf
module~rdb_ocean_diag_netcdf->module~rdb_ocean_diag
module~rdb_ocean_diag_netcdf->module~rdb_ocean_status
module~rdb_ocean_diag_netcdf->pic_logger
module~rdb_ocean_diag_netcdf->netcdf
module~rdb_ocean_dyn->iso_fortran_env
module~rdb_ocean_dyn->module~rdb_constants
module~rdb_ocean_dyn->module~rdb_grid
module~rdb_ocean_dyn->module~rdb_ocean_boundary_types
module~rdb_ocean_dyn->module~rdb_ocean_cavity_flux
module~rdb_ocean_dyn->module~rdb_ocean_fold_apply
module~rdb_ocean_dyn->module~rdb_ocean_geothermal
module~rdb_ocean_dyn->module~rdb_ocean_halo
module~rdb_ocean_dyn->module~rdb_ocean_halo_state
module~rdb_ocean_dyn->module~rdb_ocean_metrics
module~rdb_ocean_dyn->module~rdb_ocean_periodic
module~rdb_ocean_dyn->module~rdb_ocean_sponge
module~rdb_ocean_dyn->module~rdb_ocean_surface_flux
module~rdb_ocean_dyn->module~rdb_ocean_surface_stress
module~rdb_ocean_dyn->module~rdb_ocean_vcoord
module~rdb_ocean_dyn->module~rdb_profiler
module~rdb_ocean_dyn->pic_logger
module~rdb_ocean_dyn->pic_strings
module~rdb_ocean_dyn->ieee_arithmetic
module~rdb_barotropic_coupling
rdb_barotropic_coupling
module~rdb_ocean_dyn->module~rdb_barotropic_coupling
module~rdb_barotropic_state
rdb_barotropic_state
module~rdb_ocean_dyn->module~rdb_barotropic_state
module~rdb_barotropic_substep
rdb_barotropic_substep
module~rdb_ocean_dyn->module~rdb_barotropic_substep
module~rdb_barotropic_workstate
rdb_barotropic_workstate
module~rdb_ocean_dyn->module~rdb_barotropic_workstate
module~rdb_ocean_dyn->module~rdb_continuity
module~rdb_coriolis_adv
rdb_coriolis_adv
module~rdb_ocean_dyn->module~rdb_coriolis_adv
module~rdb_ocean_dyn->module~rdb_efp
module~rdb_ocean_dyn->module~rdb_eos
module~rdb_ocean_dyn->module~rdb_mem_report
module~rdb_ocean_dyn->module~rdb_multilayer_state
module~rdb_ocean_bottom_drag
rdb_ocean_bottom_drag
module~rdb_ocean_dyn->module~rdb_ocean_bottom_drag
module~rdb_ocean_bt_budget_probe
rdb_ocean_bt_budget_probe
module~rdb_ocean_dyn->module~rdb_ocean_bt_budget_probe
module~rdb_ocean_bt_wide
rdb_ocean_bt_wide
module~rdb_ocean_dyn->module~rdb_ocean_bt_wide
module~rdb_ocean_chksum
rdb_ocean_chksum
module~rdb_ocean_dyn->module~rdb_ocean_chksum
module~rdb_ocean_console_stats
rdb_ocean_console_stats
module~rdb_ocean_dyn->module~rdb_ocean_console_stats
module~rdb_ocean_eos_compute
rdb_ocean_eos_compute
module~rdb_ocean_dyn->module~rdb_ocean_eos_compute
module~rdb_ocean_epbl
rdb_ocean_epbl
module~rdb_ocean_dyn->module~rdb_ocean_epbl
module~rdb_ocean_ghost_poison
rdb_ocean_ghost_poison
module~rdb_ocean_dyn->module~rdb_ocean_ghost_poison
module~rdb_ocean_gm
rdb_ocean_gm
module~rdb_ocean_dyn->module~rdb_ocean_gm
module~rdb_ocean_hdiff_tracer
rdb_ocean_hdiff_tracer
module~rdb_ocean_dyn->module~rdb_ocean_hdiff_tracer
module~rdb_ocean_horizontal_viscosity
rdb_ocean_horizontal_viscosity
module~rdb_ocean_dyn->module~rdb_ocean_horizontal_viscosity
module~rdb_ocean_ideal_age
rdb_ocean_ideal_age
module~rdb_ocean_dyn->module~rdb_ocean_ideal_age
module~rdb_ocean_isopycnal_slopes
rdb_ocean_isopycnal_slopes
module~rdb_ocean_dyn->module~rdb_ocean_isopycnal_slopes
module~rdb_ocean_kappa_shear
rdb_ocean_kappa_shear
module~rdb_ocean_dyn->module~rdb_ocean_kappa_shear
module~rdb_ocean_ke_probe
rdb_ocean_ke_probe
module~rdb_ocean_dyn->module~rdb_ocean_ke_probe
module~rdb_ocean_lateral_mix
rdb_ocean_lateral_mix
module~rdb_ocean_dyn->module~rdb_ocean_lateral_mix
module~rdb_ocean_meke
rdb_ocean_meke
module~rdb_ocean_dyn->module~rdb_ocean_meke
module~rdb_ocean_min_thickness
rdb_ocean_min_thickness
module~rdb_ocean_dyn->module~rdb_ocean_min_thickness
module~rdb_ocean_mle
rdb_ocean_mle
module~rdb_ocean_dyn->module~rdb_ocean_mle
module~rdb_ocean_obc_baroclinic
rdb_ocean_obc_baroclinic
module~rdb_ocean_dyn->module~rdb_ocean_obc_baroclinic
module~rdb_ocean_p_surf
rdb_ocean_p_surf
module~rdb_ocean_dyn->module~rdb_ocean_p_surf
module~rdb_ocean_porous
rdb_ocean_porous
module~rdb_ocean_dyn->module~rdb_ocean_porous
module~rdb_ocean_pressure_force
rdb_ocean_pressure_force
module~rdb_ocean_dyn->module~rdb_ocean_pressure_force
module~rdb_ocean_redi
rdb_ocean_redi
module~rdb_ocean_dyn->module~rdb_ocean_redi
module~rdb_ocean_remap
rdb_ocean_remap
module~rdb_ocean_dyn->module~rdb_ocean_remap
module~rdb_ocean_tidal_mixing
rdb_ocean_tidal_mixing
module~rdb_ocean_dyn->module~rdb_ocean_tidal_mixing
module~rdb_ocean_tides
rdb_ocean_tides
module~rdb_ocean_dyn->module~rdb_ocean_tides
module~rdb_ocean_top_drag
rdb_ocean_top_drag
module~rdb_ocean_dyn->module~rdb_ocean_top_drag
module~rdb_ocean_varmix
rdb_ocean_varmix
module~rdb_ocean_dyn->module~rdb_ocean_varmix
module~rdb_ocean_vdiff
rdb_ocean_vdiff
module~rdb_ocean_dyn->module~rdb_ocean_vdiff
module~rdb_ocean_vertical_advection
rdb_ocean_vertical_advection
module~rdb_ocean_dyn->module~rdb_ocean_vertical_advection
module~rdb_ocean_vmix
rdb_ocean_vmix
module~rdb_ocean_dyn->module~rdb_ocean_vmix
module~rdb_ocean_wave_speed
rdb_ocean_wave_speed
module~rdb_ocean_dyn->module~rdb_ocean_wave_speed
module~rdb_ocean_fold_apply->module~rdb_constants
module~rdb_ocean_fold_apply->module~rdb_grid
module~rdb_ocean_fold_apply->module~rdb_ocean_boundary_types
module~rdb_ocean_fold_apply->module~rdb_ocean_fold_exchange
module~rdb_ocean_fold_apply->module~rdb_multilayer_state
module~rdb_ocean_fold
rdb_ocean_fold
module~rdb_ocean_fold_apply->module~rdb_ocean_fold
module~rdb_ocean_fold_exchange->module~rdb_constants
module~rdb_ocean_fold_exchange->module~rdb_decomp
module~rdb_ocean_fold_exchange->module~rdb_error_ring
module~rdb_ocean_fold_exchange->module~rdb_ocean_status
module~rdb_ocean_fold_exchange->pic_logger
module~rdb_ocean_fold_exchange->pic_strings
module~rdb_ocean_fold_exchange->module~rdb_comm_env
module~rdb_ocean_fold_exchange->module~rdb_ocean_fold
module~rdb_ocean_fold_plan
rdb_ocean_fold_plan
module~rdb_ocean_fold_exchange->module~rdb_ocean_fold_plan
module~rdb_ocean_fold_exchange->pic_mpi_lib
module~rdb_ocean_geothermal->module~rdb_constants
module~rdb_ocean_geothermal->module~rdb_grid
module~rdb_ocean_geothermal->module~rdb_ocean_surface_flux
module~rdb_ocean_geothermal->module~rdb_multilayer_state
module~rdb_ocean_halo->module~rdb_constants
module~rdb_ocean_halo->module~rdb_decomp
module~rdb_ocean_halo->module~rdb_error_ring
module~rdb_ocean_halo->module~rdb_ocean_periodic
module~rdb_ocean_halo->module~rdb_ocean_status
module~rdb_ocean_halo->pic_logger
module~rdb_ocean_halo->pic_strings
module~rdb_ocean_halo->module~rdb_comm_env
module~rdb_ocean_halo_counters
rdb_ocean_halo_counters
module~rdb_ocean_halo->module~rdb_ocean_halo_counters
module~rdb_ocean_halo->pic_mpi_lib
module~rdb_ocean_halo_state->module~rdb_constants
module~rdb_ocean_halo_state->module~rdb_grid
module~rdb_ocean_halo_state->module~rdb_ocean_boundary_types
module~rdb_ocean_halo_state->module~rdb_ocean_fold_apply
module~rdb_ocean_halo_state->module~rdb_ocean_halo
module~rdb_ocean_halo_state->module~rdb_ocean_periodic
module~rdb_ocean_halo_state->module~rdb_ocean_surface_stress
module~rdb_ocean_halo_state->module~rdb_profiler
module~rdb_ocean_halo_state->module~rdb_ice_state
module~rdb_ocean_halo_state->module~rdb_multilayer_state
module~rdb_ocean_halo_state->module~rdb_ocean_halo_counters
module~rdb_ocean_metrics->iso_fortran_env
module~rdb_ocean_metrics->module~rdb_constants
module~rdb_ocean_metrics->module~rdb_error_ring
module~rdb_ocean_metrics->module~rdb_grid
module~rdb_ocean_metrics->module~rdb_io_netcdf
module~rdb_ocean_metrics->module~rdb_ocean_status
module~rdb_ocean_metrics->pic_logger
module~rdb_ocean_metrics->pic_strings
module~rdb_ocean_metrics->module~rdb_mem_report
module~rdb_ocean_bipolar
rdb_ocean_bipolar
module~rdb_ocean_metrics->module~rdb_ocean_bipolar
module~rdb_ocean_metrics->module~rdb_ocean_fold
module~rdb_ocean_metrics->netcdf
module~rdb_ocean_periodic->module~rdb_constants
module~rdb_ocean_periodic->module~rdb_grid
module~rdb_ocean_periodic->module~rdb_ocean_boundary_types
module~rdb_ocean_periodic->module~rdb_multilayer_state
module~rdb_ocean_setup->module~rdb_config
module~rdb_ocean_setup->module~rdb_constants
module~rdb_ocean_setup->module~rdb_decomp
module~rdb_ocean_setup->module~rdb_error_ring
module~rdb_ocean_setup->module~rdb_grid
module~rdb_ocean_setup->module~rdb_halo
module~rdb_ocean_setup->module~rdb_ocean_boundary_types
module~rdb_ocean_setup->module~rdb_ocean_dyn
module~rdb_ocean_setup->module~rdb_ocean_fold_apply
module~rdb_ocean_setup->module~rdb_ocean_fold_exchange
module~rdb_ocean_setup->module~rdb_ocean_geothermal
module~rdb_ocean_setup->module~rdb_ocean_halo
module~rdb_ocean_setup->module~rdb_ocean_halo_state
module~rdb_ocean_setup->module~rdb_ocean_metrics
module~rdb_ocean_setup->module~rdb_ocean_sponge
module~rdb_ocean_setup->module~rdb_ocean_state
module~rdb_ocean_setup->module~rdb_ocean_status
module~rdb_ocean_setup->module~rdb_ocean_surface_flux
module~rdb_ocean_setup->module~rdb_ocean_surface_stress
module~rdb_ocean_setup->module~rdb_ocean_vcoord
module~rdb_ocean_setup->module~rdb_vcoord
module~rdb_ocean_setup->pic_logger
module~rdb_ocean_setup->pic_strings
module~rdb_ocean_setup->module~rdb_coriolis_adv
module~rdb_ocean_setup->module~rdb_eos
module~rdb_ocean_setup->module~rdb_ocean_bottom_drag
module~rdb_ocean_cavity
rdb_ocean_cavity
module~rdb_ocean_setup->module~rdb_ocean_cavity
module~rdb_ocean_setup->module~rdb_ocean_cavity_melt
module~rdb_ocean_setup->module~rdb_ocean_epbl
module~rdb_ocean_setup->module~rdb_ocean_fold
module~rdb_ocean_setup->module~rdb_ocean_horizontal_viscosity
module~rdb_ocean_setup->module~rdb_ocean_lateral_mix
module~rdb_ocean_setup->module~rdb_ocean_p_surf
module~rdb_ocean_setup->module~rdb_ocean_porous
module~rdb_ocean_setup->module~rdb_ocean_pressure_force
module~rdb_ocean_setup->module~rdb_ocean_tide_astro
module~rdb_ocean_setup->module~rdb_ocean_tides
module~rdb_ocean_setup->module~rdb_ocean_top_drag
module~rdb_ocean_setup->module~rdb_ocean_vdiff
module~rdb_ocean_setup->module~rdb_ocean_vmix
module~rdb_recon_weno
rdb_recon_weno
module~rdb_ocean_setup->module~rdb_recon_weno
module~rdb_ocean_sponge->iso_fortran_env
module~rdb_ocean_sponge->module~rdb_constants
module~rdb_ocean_sponge->module~rdb_grid
module~rdb_ocean_sponge->module~rdb_ocean_boundary_types
module~rdb_ocean_sponge->module~rdb_mem_report
module~rdb_ocean_sponge->module~rdb_multilayer_state
module~rdb_ocean_stability_audit->module~rdb_config
module~rdb_ocean_stability_audit->module~rdb_constants
module~rdb_ocean_stability_audit->module~rdb_error_ring
module~rdb_ocean_stability_audit->module~rdb_grid
module~rdb_ocean_stability_audit->module~rdb_ocean_metrics
module~rdb_ocean_stability_audit->module~rdb_ocean_status
module~rdb_ocean_stability_audit->module~rdb_vcoord
module~rdb_ocean_stability_audit->pic_logger
module~rdb_ocean_stability_audit->pic_strings
module~rdb_ocean_state->iso_fortran_env
module~rdb_ocean_state->module~rdb_config
module~rdb_ocean_state->module~rdb_constants
module~rdb_ocean_state->module~rdb_decomp
module~rdb_ocean_state->module~rdb_error_ring
module~rdb_ocean_state->module~rdb_grid
module~rdb_ocean_state->module~rdb_ocean_boundary_types
module~rdb_ocean_state->module~rdb_ocean_cavity_flux
module~rdb_ocean_state->module~rdb_ocean_data_forcing
module~rdb_ocean_state->module~rdb_ocean_data_input
module~rdb_ocean_state->module~rdb_ocean_diag
module~rdb_ocean_state->module~rdb_ocean_dyn
module~rdb_ocean_state->module~rdb_ocean_metrics
module~rdb_ocean_state->module~rdb_ocean_periodic
module~rdb_ocean_state->module~rdb_ocean_sponge
module~rdb_ocean_state->module~rdb_ocean_status
module~rdb_ocean_state->module~rdb_ocean_surface_flux
module~rdb_ocean_state->module~rdb_ocean_surface_stress
module~rdb_ocean_state->module~rdb_ocean_vcoord
module~rdb_ocean_state->module~rdb_profiler
module~rdb_ocean_state->pic_logger
module~rdb_ocean_state->pic_strings
module~rdb_ocean_state->module~rdb_barotropic_state
module~rdb_bathymetry
rdb_bathymetry
module~rdb_ocean_state->module~rdb_bathymetry
module~rdb_ocean_state->module~rdb_comm_env
module~rdb_ocean_state->module~rdb_continuity
module~rdb_ocean_state->module~rdb_coriolis_adv
module~rdb_ocean_state->module~rdb_eos
module~rdb_ocean_state->module~rdb_ice_state
module~rdb_ocean_state->module~rdb_multilayer_state
module~rdb_ocean_bathymetry_inject
rdb_ocean_bathymetry_inject
module~rdb_ocean_state->module~rdb_ocean_bathymetry_inject
module~rdb_ocean_state->module~rdb_ocean_bottom_drag
module~rdb_ocean_state->module~rdb_ocean_cavity
module~rdb_ocean_state->module~rdb_ocean_epbl
module~rdb_ocean_state->module~rdb_ocean_fold
module~rdb_ocean_state->module~rdb_ocean_gm
module~rdb_ocean_state->module~rdb_ocean_hdiff_tracer
module~rdb_ocean_state->module~rdb_ocean_horizontal_viscosity
module~rdb_ocean_state->module~rdb_ocean_isopycnal_slopes
module~rdb_ocean_state->module~rdb_ocean_kappa_shear
module~rdb_ocean_state->module~rdb_ocean_lateral_mix
module~rdb_ocean_state->module~rdb_ocean_meke
module~rdb_ocean_state->module~rdb_ocean_mle
module~rdb_ocean_obc
rdb_ocean_obc
module~rdb_ocean_state->module~rdb_ocean_obc
module~rdb_ocean_state->module~rdb_ocean_p_surf
module~rdb_ocean_state->module~rdb_ocean_pressure_force
module~rdb_ocean_state->module~rdb_ocean_pseudo_salt
module~rdb_ocean_state->module~rdb_ocean_redi
module~rdb_ocean_restart
rdb_ocean_restart
module~rdb_ocean_state->module~rdb_ocean_restart
module~rdb_ocean_restart_io
rdb_ocean_restart_io
module~rdb_ocean_state->module~rdb_ocean_restart_io
module~rdb_ocean_state->module~rdb_ocean_tidal_mixing
module~rdb_ocean_state->module~rdb_ocean_tides
module~rdb_ocean_state->module~rdb_ocean_top_drag
module~rdb_ocean_state->module~rdb_ocean_varmix
module~rdb_ocean_state->module~rdb_ocean_vdiff
module~rdb_ocean_state->module~rdb_ocean_vertical_advection
module~rdb_ocean_state->module~rdb_ocean_vmix
module~rdb_ocean_state->module~rdb_ocean_wave_speed
module~rdb_ocean_z_init
rdb_ocean_z_init
module~rdb_ocean_state->module~rdb_ocean_z_init
module~rdb_ocean_surface_flux->iso_fortran_env
module~rdb_ocean_surface_flux->module~rdb_constants
module~rdb_ocean_surface_flux->module~rdb_grid
module~rdb_ocean_surface_flux->module~rdb_mem_report
module~rdb_ocean_surface_flux->module~rdb_multilayer_state
module~rdb_ocean_surface_stress->iso_fortran_env
module~rdb_ocean_surface_stress->module~rdb_constants
module~rdb_ocean_surface_stress->module~rdb_grid
module~rdb_ocean_surface_stress->module~rdb_mem_report
module~rdb_ocean_surface_stress->module~rdb_multilayer_state
module~rdb_scratch_3d
rdb_scratch_3d
module~rdb_ocean_surface_stress->module~rdb_scratch_3d
module~rdb_ocean_vcoord->iso_fortran_env
module~rdb_ocean_vcoord->module~rdb_constants
module~rdb_ocean_vcoord->module~rdb_grid
module~rdb_ocean_vcoord->module~rdb_vcoord
module~rdb_ocean_vcoord->module~rdb_eos
module~rdb_ocean_vcoord->module~rdb_mem_report
module~rdb_profiler->iso_fortran_env
module~rdb_profiler->pic_logger
module~rdb_state->module~rdb_config
module~rdb_tracer
rdb_tracer
module~rdb_state->module~rdb_tracer
module~rdb_vcoord->module~rdb_constants
module~rdb_vcoord->pic_logger
module~rdb_vcoord->pic_strings
module~rdb_barotropic_coupling->module~rdb_constants
module~rdb_barotropic_coupling->module~rdb_grid
module~rdb_barotropic_coupling->module~rdb_ocean_boundary_types
module~rdb_barotropic_coupling->module~rdb_ocean_metrics
module~rdb_barotropic_coupling->module~rdb_ocean_surface_stress
module~rdb_barotropic_coupling->ieee_arithmetic
module~rdb_barotropic_coupling->module~rdb_barotropic_workstate
module~rdb_barotropic_coupling->module~rdb_coriolis_adv
module~rdb_barotropic_coupling->module~rdb_multilayer_state
module~rdb_barotropic_coupling->module~rdb_ocean_bottom_drag
module~rdb_barotropic_coupling->module~rdb_ocean_horizontal_viscosity
module~rdb_barotropic_coupling->module~rdb_ocean_pressure_force
module~rdb_barotropic_coupling->module~rdb_ocean_top_drag
module~rdb_barotropic_state->iso_fortran_env
module~rdb_barotropic_state->module~rdb_constants
module~rdb_barotropic_state->module~rdb_grid
module~rdb_barotropic_state->module~rdb_mem_report
module~rdb_barotropic_substep->module~rdb_constants
module~rdb_barotropic_substep->module~rdb_grid
module~rdb_barotropic_substep->module~rdb_ocean_boundary_types
module~rdb_barotropic_substep->module~rdb_ocean_fold_exchange
module~rdb_barotropic_substep->module~rdb_ocean_halo
module~rdb_barotropic_substep->module~rdb_ocean_metrics
module~rdb_barotropic_substep->module~rdb_profiler
module~rdb_barotropic_substep->module~rdb_barotropic_workstate
module~rdb_barotropic_substep->module~rdb_ocean_halo_counters
module~rdb_bt_cont_type
rdb_bt_cont_type
module~rdb_barotropic_substep->module~rdb_bt_cont_type
module~rdb_barotropic_workstate->iso_fortran_env
module~rdb_barotropic_workstate->module~rdb_constants
module~rdb_barotropic_workstate->module~rdb_grid
module~rdb_barotropic_workstate->module~rdb_mem_report
module~rdb_bathymetry->module~rdb_constants
module~rdb_bathymetry->module~rdb_grid
module~rdb_bathymetry->module~rdb_io_netcdf
module~rdb_bathymetry->module~rdb_ocean_status
module~rdb_bathymetry->pic_logger
module~rdb_bathymetry->pic_strings
module~rdb_bathymetry->netcdf
module~rdb_comm_env->iso_fortran_env
module~rdb_comm_env->module~rdb_constants
module~rdb_comm_env->pic_mpi_lib
module~rdb_continuity->iso_fortran_env
module~rdb_continuity->module~rdb_constants
module~rdb_continuity->module~rdb_grid
module~rdb_continuity->module~rdb_ocean_boundary_types
module~rdb_continuity->module~rdb_ocean_fold_apply
module~rdb_continuity->module~rdb_ocean_fold_exchange
module~rdb_continuity->module~rdb_ocean_halo
module~rdb_continuity->module~rdb_ocean_metrics
module~rdb_continuity->module~rdb_ocean_periodic
module~rdb_continuity->module~rdb_profiler
module~rdb_continuity->module~rdb_barotropic_state
module~rdb_continuity->module~rdb_mem_report
module~rdb_continuity->module~rdb_multilayer_state
module~rdb_continuity->module~rdb_ocean_fold
module~rdb_continuity->module~rdb_ocean_gm
module~rdb_continuity->module~rdb_ocean_mle
module~rdb_continuity->module~rdb_recon_weno
module~rdb_continuity->module~rdb_scratch_3d
module~rdb_continuity->module~rdb_tracer
module~rdb_coriolis_adv->iso_fortran_env
module~rdb_coriolis_adv->module~rdb_constants
module~rdb_coriolis_adv->module~rdb_grid
module~rdb_coriolis_adv->module~rdb_ocean_metrics
module~rdb_coriolis_adv->module~rdb_barotropic_state
module~rdb_coriolis_adv->module~rdb_mem_report
module~rdb_coriolis_adv->module~rdb_multilayer_state
module~rdb_coriolis_adv->module~rdb_ocean_porous
module~rdb_coriolis_adv->module~rdb_scratch_3d
module~rdb_efp->iso_fortran_env
module~rdb_efp->ieee_arithmetic
module~rdb_eos->module~rdb_constants
module~rdb_eos->module~rdb_grid
module~rdb_ice_column->module~rdb_constants
module~rdb_ice_column->module~rdb_ice_enthalpy
module~rdb_ice_column->module~rdb_ice_mass
module~rdb_ice_optics
rdb_ice_optics
module~rdb_ice_column->module~rdb_ice_optics
module~rdb_ice_enthalpy->module~rdb_constants
module~rdb_ice_mass->module~rdb_constants
module~rdb_ice_mass->module~rdb_ice_enthalpy
module~rdb_ice_state->iso_fortran_env
module~rdb_ice_state->module~rdb_constants
module~rdb_ice_state->module~rdb_grid
module~rdb_ice_state->module~rdb_ice_column
module~rdb_ice_state->module~rdb_ice_enthalpy
module~rdb_ice_state->module~rdb_mem_report
module~rdb_mem_report->iso_fortran_env
module~rdb_mem_report->module~rdb_constants
module~rdb_mem_report->pic_logger
module~rdb_mem_report->pic_strings
module~rdb_multilayer_state->iso_fortran_env
module~rdb_multilayer_state->module~rdb_constants
module~rdb_multilayer_state->module~rdb_error_ring
module~rdb_multilayer_state->module~rdb_grid
module~rdb_multilayer_state->pic_logger
module~rdb_multilayer_state->module~rdb_efp
module~rdb_multilayer_state->module~rdb_mem_report
module~rdb_multilayer_state->module~rdb_tracer
module~rdb_nml_schema->module~rdb_constants
module~rdb_nml_schema->module~rdb_error_ring
module~rdb_nml_schema->pic_logger
module~rdb_ocean_bathymetry_inject->module~rdb_constants
module~rdb_ocean_bathymetry_inject->module~rdb_error_ring
module~rdb_ocean_bathymetry_inject->module~rdb_grid
module~rdb_ocean_bathymetry_inject->module~rdb_ocean_status
module~rdb_ocean_bathymetry_inject->pic_strings
module~rdb_ocean_bipolar->module~rdb_constants
module~rdb_ocean_bottom_drag->iso_fortran_env
module~rdb_ocean_bottom_drag->module~rdb_constants
module~rdb_ocean_bottom_drag->module~rdb_grid
module~rdb_ocean_bottom_drag->module~rdb_ocean_metrics
module~rdb_ocean_bottom_drag->module~rdb_mem_report
module~rdb_ocean_bottom_drag->module~rdb_multilayer_state
module~rdb_ocean_bottom_drag->module~rdb_scratch_3d
module~rdb_ocean_bt_budget_probe->module~rdb_constants
module~rdb_ocean_bt_budget_probe->module~rdb_grid
module~rdb_ocean_bt_budget_probe->module~rdb_ocean_surface_stress
module~rdb_ocean_bt_budget_probe->module~rdb_barotropic_workstate
module~rdb_ocean_bt_budget_probe->module~rdb_coriolis_adv
module~rdb_ocean_bt_budget_probe->module~rdb_multilayer_state
module~rdb_ocean_bt_budget_probe->module~rdb_ocean_bottom_drag
module~rdb_ocean_bt_budget_probe->module~rdb_ocean_horizontal_viscosity
module~rdb_ocean_bt_budget_probe->module~rdb_ocean_pressure_force
module~rdb_ocean_bt_wide->iso_fortran_env
module~rdb_ocean_bt_wide->module~rdb_constants
module~rdb_ocean_bt_wide->module~rdb_grid
module~rdb_ocean_bt_wide->module~rdb_ocean_boundary_types
module~rdb_ocean_bt_wide->module~rdb_ocean_halo
module~rdb_ocean_bt_wide->module~rdb_ocean_metrics
module~rdb_ocean_bt_wide->module~rdb_profiler
module~rdb_ocean_bt_wide->pic_logger
module~rdb_ocean_bt_wide->module~rdb_barotropic_substep
module~rdb_ocean_bt_wide->module~rdb_barotropic_workstate
module~rdb_ocean_bt_wide->module~rdb_mem_report
module~rdb_ocean_cavity->module~rdb_constants
module~rdb_ocean_cavity->module~rdb_grid
module~rdb_ocean_cavity_melt->module~rdb_constants
module~rdb_ocean_cavity_melt->ieee_arithmetic
module~rdb_ocean_cavity_melt->module~rdb_eos
module~rdb_ocean_chksum->iso_fortran_env
module~rdb_ocean_chksum->module~rdb_constants
module~rdb_ocean_chksum->module~rdb_grid
module~rdb_ocean_chksum->module~rdb_halo
module~rdb_ocean_chksum->module~rdb_barotropic_workstate
module~rdb_ocean_chksum->module~rdb_multilayer_state
module~rdb_ocean_console_stats->iso_fortran_env
module~rdb_ocean_console_stats->module~rdb_constants
module~rdb_ocean_console_stats->module~rdb_grid
module~rdb_ocean_console_stats->module~rdb_halo
module~rdb_ocean_console_stats->module~rdb_ocean_metrics
module~rdb_ocean_console_stats->pic_logger
module~rdb_ocean_console_stats->pic_strings
module~rdb_ocean_console_stats->ieee_arithmetic
module~rdb_ocean_console_stats->module~rdb_efp
module~rdb_ocean_console_stats->module~rdb_ice_column
module~rdb_ocean_console_stats->module~rdb_multilayer_state
module~rdb_ocean_console_stats->module~rdb_ocean_halo_counters
module~rdb_console_stats
rdb_console_stats
module~rdb_ocean_console_stats->module~rdb_console_stats
module~rdb_ocean_diag_mask->iso_fortran_env
module~rdb_ocean_diag_mask->module~rdb_constants
module~rdb_ocean_diag_mask->module~rdb_grid
module~rdb_ocean_diag_mask->module~rdb_mem_report
module~rdb_ocean_eos_compute->module~rdb_eos
module~rdb_ocean_eos_compute->module~rdb_multilayer_state
module~rdb_ocean_epbl->iso_fortran_env
module~rdb_ocean_epbl->module~rdb_constants
module~rdb_ocean_epbl->module~rdb_grid
module~rdb_ocean_epbl->module~rdb_ocean_surface_flux
module~rdb_ocean_epbl->module~rdb_ocean_surface_stress
module~rdb_ocean_epbl->module~rdb_eos
module~rdb_ocean_epbl->module~rdb_mem_report
module~rdb_ocean_epbl->module~rdb_multilayer_state
module~rdb_ocean_epbl->module~rdb_scratch_3d
module~rdb_ocean_fold->module~rdb_constants
module~rdb_ocean_ghost_poison->module~rdb_constants
module~rdb_ocean_ghost_poison->module~rdb_grid
module~rdb_ocean_ghost_poison->module~rdb_ocean_surface_stress
module~rdb_ocean_ghost_poison->ieee_arithmetic
module~rdb_ocean_ghost_poison->module~rdb_barotropic_workstate
module~rdb_ocean_ghost_poison->module~rdb_multilayer_state
module~rdb_ocean_gm->iso_fortran_env
module~rdb_ocean_gm->module~rdb_constants
module~rdb_ocean_gm->module~rdb_grid
module~rdb_ocean_gm->module~rdb_ocean_metrics
module~rdb_ocean_gm->ieee_arithmetic
module~rdb_ocean_gm->module~rdb_mem_report
module~rdb_ocean_gm->module~rdb_multilayer_state
module~rdb_ocean_gm->module~rdb_ocean_isopycnal_slopes
module~rdb_ocean_halo_counters->iso_fortran_env
module~rdb_ocean_halo_counters->pic_strings
module~rdb_ocean_hdiff_tracer->iso_fortran_env
module~rdb_ocean_hdiff_tracer->module~rdb_constants
module~rdb_ocean_hdiff_tracer->module~rdb_grid
module~rdb_ocean_hdiff_tracer->module~rdb_ocean_boundary_types
module~rdb_ocean_hdiff_tracer->module~rdb_ocean_metrics
module~rdb_ocean_hdiff_tracer->module~rdb_mem_report
module~rdb_ocean_hdiff_tracer->module~rdb_multilayer_state
module~rdb_ocean_hdiff_tracer->module~rdb_scratch_3d
module~rdb_ocean_hdiff_tracer->module~rdb_tracer
module~rdb_ocean_horizontal_viscosity->iso_fortran_env
module~rdb_ocean_horizontal_viscosity->module~rdb_constants
module~rdb_ocean_horizontal_viscosity->module~rdb_grid
module~rdb_ocean_horizontal_viscosity->module~rdb_ocean_metrics
module~rdb_ocean_horizontal_viscosity->module~rdb_mem_report
module~rdb_ocean_horizontal_viscosity->module~rdb_multilayer_state
module~rdb_ocean_horizontal_viscosity->module~rdb_ocean_lateral_mix
module~rdb_ocean_horizontal_viscosity->module~rdb_scratch_3d
module~rdb_ocean_ideal_age->module~rdb_constants
module~rdb_ocean_ideal_age->module~rdb_grid
module~rdb_ocean_ideal_age->module~rdb_multilayer_state
module~rdb_ocean_isopycnal_slopes->iso_fortran_env
module~rdb_ocean_isopycnal_slopes->module~rdb_constants
module~rdb_ocean_isopycnal_slopes->module~rdb_grid
module~rdb_ocean_isopycnal_slopes->module~rdb_ocean_metrics
module~rdb_ocean_isopycnal_slopes->module~rdb_eos
module~rdb_ocean_isopycnal_slopes->module~rdb_mem_report
module~rdb_ocean_isopycnal_slopes->module~rdb_multilayer_state
module~rdb_ocean_kappa_shear->iso_fortran_env
module~rdb_ocean_kappa_shear->module~rdb_constants
module~rdb_ocean_kappa_shear->module~rdb_grid
module~rdb_ocean_kappa_shear->ieee_arithmetic
module~rdb_ocean_kappa_shear->module~rdb_eos
module~rdb_ocean_kappa_shear->module~rdb_mem_report
module~rdb_ocean_kappa_shear->module~rdb_multilayer_state
module~rdb_massless
rdb_massless
module~rdb_ocean_kappa_shear->module~rdb_massless
module~rdb_ocean_ke_probe->module~rdb_constants
module~rdb_ocean_ke_probe->module~rdb_grid
module~rdb_ocean_ke_probe->module~rdb_ocean_metrics
module~rdb_ocean_ke_probe->module~rdb_coriolis_adv
module~rdb_ocean_ke_probe->module~rdb_multilayer_state
module~rdb_ocean_lateral_mix->iso_fortran_env
module~rdb_ocean_lateral_mix->module~rdb_constants
module~rdb_ocean_lateral_mix->module~rdb_grid
module~rdb_ocean_lateral_mix->module~rdb_ocean_metrics
module~rdb_ocean_lateral_mix->module~rdb_mem_report
module~rdb_ocean_lateral_mix->module~rdb_multilayer_state
module~rdb_ocean_lateral_mix->module~rdb_scratch_3d
module~rdb_ocean_meke->iso_fortran_env
module~rdb_ocean_meke->module~rdb_constants
module~rdb_ocean_meke->module~rdb_grid
module~rdb_ocean_meke->module~rdb_ocean_metrics
module~rdb_ocean_meke->module~rdb_mem_report
module~rdb_ocean_meke->module~rdb_multilayer_state
module~rdb_ocean_meke->module~rdb_ocean_gm
module~rdb_ocean_meke->module~rdb_ocean_varmix
module~rdb_ocean_meke->module~rdb_ocean_wave_speed
module~rdb_ocean_min_thickness->module~rdb_constants
module~rdb_ocean_min_thickness->module~rdb_grid
module~rdb_ocean_min_thickness->module~rdb_multilayer_state
module~rdb_ocean_min_thickness->module~rdb_remap_column
module~rdb_ocean_mle->iso_fortran_env
module~rdb_ocean_mle->module~rdb_constants
module~rdb_ocean_mle->module~rdb_grid
module~rdb_ocean_mle->module~rdb_ocean_boundary_types
module~rdb_ocean_mle->module~rdb_ocean_metrics
module~rdb_ocean_mle->module~rdb_ocean_surface_stress
module~rdb_ocean_mle->module~rdb_mem_report
module~rdb_ocean_mle->module~rdb_multilayer_state
module~rdb_ocean_mle->module~rdb_ocean_epbl
module~rdb_ocean_obc->iso_fortran_env
module~rdb_ocean_obc->module~rdb_constants
module~rdb_ocean_obc->module~rdb_grid
module~rdb_ocean_obc->module~rdb_mem_report
module~rdb_ocean_obc_baroclinic->module~rdb_constants
module~rdb_ocean_obc_baroclinic->module~rdb_grid
module~rdb_ocean_obc_baroclinic->module~rdb_ocean_boundary_types
module~rdb_ocean_obc_baroclinic->module~rdb_barotropic_workstate
module~rdb_ocean_obc_baroclinic->module~rdb_multilayer_state
module~rdb_ocean_p_surf->iso_fortran_env
module~rdb_ocean_p_surf->module~rdb_constants
module~rdb_ocean_p_surf->module~rdb_grid
module~rdb_ocean_p_surf->module~rdb_mem_report
module~rdb_ocean_porous->module~rdb_constants
module~rdb_ocean_porous->ieee_arithmetic
module~rdb_ocean_pressure_force->iso_fortran_env
module~rdb_ocean_pressure_force->module~rdb_constants
module~rdb_ocean_pressure_force->module~rdb_grid
module~rdb_ocean_pressure_force->module~rdb_ocean_metrics
module~rdb_ocean_pressure_force->module~rdb_eos
module~rdb_ocean_pressure_force->module~rdb_mem_report
module~rdb_ocean_pressure_force->module~rdb_multilayer_state
module~rdb_ocean_pressure_force->module~rdb_scratch_3d
module~rdb_ocean_pgf_reconstruct
rdb_ocean_pgf_reconstruct
module~rdb_ocean_pressure_force->module~rdb_ocean_pgf_reconstruct
module~rdb_ocean_pseudo_salt->module~rdb_constants
module~rdb_ocean_pseudo_salt->module~rdb_error_ring
module~rdb_ocean_pseudo_salt->module~rdb_grid
module~rdb_ocean_pseudo_salt->pic_logger
module~rdb_ocean_pseudo_salt->module~rdb_multilayer_state
module~rdb_ocean_redi->iso_fortran_env
module~rdb_ocean_redi->module~rdb_constants
module~rdb_ocean_redi->module~rdb_grid
module~rdb_ocean_redi->module~rdb_ocean_boundary_types
module~rdb_ocean_redi->module~rdb_ocean_metrics
module~rdb_ocean_redi->module~rdb_eos
module~rdb_ocean_redi->module~rdb_mem_report
module~rdb_ocean_redi->module~rdb_multilayer_state
module~rdb_ocean_redi->module~rdb_tracer
module~rdb_ocean_remap->module~rdb_constants
module~rdb_ocean_remap->module~rdb_grid
module~rdb_ocean_remap->module~rdb_ocean_vcoord
module~rdb_ocean_remap->module~rdb_eos
module~rdb_ocean_remap->module~rdb_multilayer_state
module~rdb_ocean_remap->module~rdb_remap_column
module~rdb_ocean_remap->module~rdb_tracer
module~rdb_ocean_restart->module~rdb_constants
module~rdb_ocean_restart->pic_logger
module~rdb_ocean_restart->pic_strings
module~rdb_ocean_restart_io->module~rdb_constants
module~rdb_ocean_restart_io->module~rdb_decomp
module~rdb_ocean_restart_io->module~rdb_error_ring
module~rdb_ocean_restart_io->module~rdb_io_netcdf
module~rdb_ocean_restart_io->module~rdb_ocean_status
module~rdb_ocean_restart_io->pic_logger
module~rdb_ocean_restart_io->pic_strings
module~rdb_ocean_restart_io->iso_c_binding
module~rdb_ocean_restart_io->module~rdb_ocean_restart
module~rdb_ocean_restart_io->netcdf
module~rdb_ocean_tidal_mixing->iso_fortran_env
module~rdb_ocean_tidal_mixing->module~rdb_constants
module~rdb_ocean_tidal_mixing->module~rdb_grid
module~rdb_ocean_tidal_mixing->module~rdb_eos
module~rdb_ocean_tidal_mixing->module~rdb_mem_report
module~rdb_ocean_tidal_mixing->module~rdb_multilayer_state
module~rdb_ocean_tide_astro->iso_fortran_env
module~rdb_ocean_tide_astro->module~rdb_constants
module~rdb_ocean_tides->iso_fortran_env
module~rdb_ocean_tides->module~rdb_constants
module~rdb_ocean_tides->module~rdb_grid
module~rdb_ocean_tides->module~rdb_mem_report
module~rdb_ocean_tides->module~rdb_ocean_tide_astro
module~rdb_ocean_top_drag->iso_fortran_env
module~rdb_ocean_top_drag->module~rdb_constants
module~rdb_ocean_top_drag->module~rdb_grid
module~rdb_ocean_top_drag->module~rdb_mem_report
module~rdb_ocean_top_drag->module~rdb_multilayer_state
module~rdb_ocean_top_drag->module~rdb_scratch_3d
module~rdb_ocean_varmix->iso_fortran_env
module~rdb_ocean_varmix->module~rdb_constants
module~rdb_ocean_varmix->module~rdb_grid
module~rdb_ocean_varmix->module~rdb_ocean_metrics
module~rdb_ocean_varmix->module~rdb_mem_report
module~rdb_ocean_varmix->module~rdb_multilayer_state
module~rdb_ocean_varmix->module~rdb_ocean_isopycnal_slopes
module~rdb_ocean_varmix->module~rdb_ocean_wave_speed
module~rdb_ocean_vdiff->iso_fortran_env
module~rdb_ocean_vdiff->module~rdb_constants
module~rdb_ocean_vdiff->module~rdb_grid
module~rdb_ocean_vdiff->pic_logger
module~rdb_ocean_vdiff->module~rdb_eos
module~rdb_ocean_vdiff->module~rdb_mem_report
module~rdb_ocean_vdiff->module~rdb_multilayer_state
module~rdb_ocean_vdiff->module~rdb_scratch_3d
module~rdb_ocean_vdiff->module~rdb_tracer
module~rdb_ocean_vertical_advection->iso_fortran_env
module~rdb_ocean_vertical_advection->module~rdb_constants
module~rdb_ocean_vertical_advection->module~rdb_grid
module~rdb_ocean_vertical_advection->module~rdb_mem_report
module~rdb_ocean_vertical_advection->module~rdb_multilayer_state
module~rdb_ocean_vertical_advection->module~rdb_scratch_3d
module~rdb_ocean_vertical_advection->module~rdb_tracer
module~rdb_ocean_vmix->iso_fortran_env
module~rdb_ocean_vmix->module~rdb_constants
module~rdb_ocean_vmix->module~rdb_grid
module~rdb_ocean_vmix->module~rdb_ocean_surface_flux
module~rdb_ocean_vmix->module~rdb_ocean_surface_stress
module~rdb_ocean_vmix->module~rdb_eos
module~rdb_ocean_vmix->module~rdb_mem_report
module~rdb_ocean_vmix->module~rdb_multilayer_state
module~rdb_ocean_wave_speed->iso_fortran_env
module~rdb_ocean_wave_speed->module~rdb_constants
module~rdb_ocean_wave_speed->module~rdb_grid
module~rdb_ocean_wave_speed->module~rdb_ocean_metrics
module~rdb_ocean_wave_speed->module~rdb_mem_report
module~rdb_ocean_wave_speed->module~rdb_multilayer_state
module~rdb_ocean_z_init->module~rdb_config
module~rdb_ocean_z_init->module~rdb_constants
module~rdb_ocean_z_init->module~rdb_error_ring
module~rdb_ocean_z_init->module~rdb_grid
module~rdb_ocean_z_init->module~rdb_io_netcdf
module~rdb_ocean_z_init->module~rdb_ocean_status
module~rdb_ocean_z_init->pic_logger
module~rdb_ocean_z_init->pic_strings
module~rdb_ocean_z_init->module~rdb_multilayer_state
module~rdb_ocean_z_init->netcdf
module~rdb_recon_weno->module~rdb_constants
module~rdb_recon_weno->module~rdb_grid
module~rdb_remap_column->module~rdb_constants
module~rdb_scratch_3d->iso_fortran_env
module~rdb_scratch_3d->module~rdb_constants
module~rdb_scratch_3d->module~rdb_mem_report
module~rdb_tracer->iso_fortran_env
module~rdb_tracer->module~rdb_constants
module~rdb_tracer->module~rdb_grid
module~rdb_tracer->module~rdb_mem_report
module~rdb_bt_cont_type->module~rdb_constants
module~rdb_bt_cont_type->module~rdb_barotropic_workstate
module~rdb_console_stats->module~rdb_constants
module~rdb_console_stats->pic_logger
module~rdb_console_stats->pic_strings
module~rdb_console_stats->ieee_arithmetic
module~rdb_console_stats->module~rdb_efp
module~rdb_ice_optics->module~rdb_constants
module~rdb_ice_optics->module~rdb_ice_enthalpy
module~rdb_massless->module~rdb_constants
module~rdb_ocean_pgf_reconstruct->module~rdb_constants
module~rdb_ocean_pgf_reconstruct->module~rdb_eos
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
module~~rdb_ocean_engine~~UsedByGraph
module~rdb_ocean_engine
rdb_ocean_engine
module~rdb_driver
rdb_driver
module~rdb_driver->module~rdb_ocean_engine
module~rdb_handle
rdb_handle
module~rdb_handle->module~rdb_ocean_engine
module~rdb_ocean_api
rdb_ocean_api
module~rdb_ocean_api->module~rdb_ocean_engine
module~rdb_ocean_api->module~rdb_handle
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Derived Types
One ocean simulation’s setup products, minus the caller-owned
time-loop bookkeeping (t_current/n_steps/status-restart
cadence/console_stats stay with the caller — see the module
docstring).
Components
Type
Visibility Attributes
Name
Initial
type(ocean_boundary_data_constant_t ),
public
::
bc_source
Boundary data source, refreshed once per outer step via
engine_step -> bc_source%update(t, state%bc).
real(kind=wp),
public
::
cfl_vtol
=
0.0_wp
Console-stats MaxCFL vanish tolerance; 0 when off. Consumed
by the caller’s own ocean_console_stats_report, not by
the engine itself.
type(decomp_t ),
public
::
decomp
logical,
public
::
device_mapped
=
.false.
True between engine_enter_data and engine_exit_data.
logical,
public
::
diag_enabled
=
.false.
Latched cfg%ocean%diag%enabled at setup, so engine_step
can gate its state%diag%step call without needing cfg.
type(ice_evp_params_t ),
public
::
evp_params
Sea-ice EVP physical + numerical parameters, built once from
&ocean_ice_nml at setup.
type(ocean_geothermal_t ),
public
::
geo
type(hgrid_t ),
public
::
grid
logical,
public
::
has_staged_topology
=
.false.
True after a topology injection call; staged_periodic_x/y
are only meaningful when this is true.
type(ice_ic_params_t ),
public
::
ic_par
Sea-ice initial-condition parameters, built once from
&ocean_ice_ic_nml at setup.
logical,
public
::
is_setup
=
.false.
True once engine_setup has completed (host-side only;
device mapping is a separate step).
integer,
public
::
n_inner
=
0
Resolved barotropic fast-loop substep count
(cfg%ocean%bt%n_inner, possibly auto-derived by
configure_ocean_bt_split). engine_step dispatches to
the split-RK2 path when n_inner >= 1, else the legacy
unsplit ocean_dyn_step — mirrors driver_run_ocean’s own
dispatch exactly; engine_setup does not itself require
n_inner >= 1 (a caller wanting that guarantee, such as
the C ABI, checks it after engine_setup returns).
real(kind=wp),
public,
allocatable
::
staged_bathymetry (:,:)
Interior-sized (nx_phys, ny_phys) bathymetry, RAW in the
caller’s own sign convention (staged_bathymetry_convention).
Consumed by ocean_state_seed_from_cfg’s injected_b argument,
which overrides cfg%ocean%topo%topo_config entirely.
integer,
public
::
staged_bathymetry_convention
=
0
BATHY_CONVENTION_* (rdb_ocean_bathymetry_inject). Only
meaningful when staged_bathymetry is allocated — no default
(D6.2: sign is the single most dangerous argument here).
real(kind=wp),
public,
allocatable
::
staged_metrics_area (:,:)
In-memory MOM6-style supergrid arrays
(metrics_assemble_from_supergrid_arrays’s sg_x/sg_y/sg_dx/
sg_dy/sg_area). When staged_metrics_x is allocated,
engine_setup assembles metrics directly from these instead of
dispatching on cfg%ocean%grid%grid_config.
real(kind=wp),
public,
allocatable
::
staged_metrics_dx (:,:)
real(kind=wp),
public,
allocatable
::
staged_metrics_dy (:,:)
real(kind=wp),
public,
allocatable
::
staged_metrics_x (:,:)
real(kind=wp),
public,
allocatable
::
staged_metrics_y (:,:)
logical,
public
::
staged_periodic_x
=
.false.
logical,
public
::
staged_periodic_y
=
.false.
Oceananigans-style “the grid owns periodicity”: applied via
ocean_bc_state_set_topology right after configure_ocean_bc,
overriding whatever the namelist edge tags derived.
type(ocean_state_t ),
public
::
state
logical,
public
::
warm_restart
=
.false.
Latched by engine_setup: the prognostic state came from a
checkpoint, ghosts included, so no setup pass may re-derive its
halo (see the init-time wrap in engine_setup).
Functions
Map the &ocean_diag_nml vgrid string to a DIAG_VGRID_* tag.
Unrecognised (schema-validated upstream) falls back to LAYER.
Moved from rdb_driver (P2.4) so engine_configure_diag can
use it without a driver dependency; re-exported by
rdb_driver for any existing caller of that name.
Arguments
Type
Intent Optional Attributes
Name
character(len=*),
intent(in)
::
name
Return Value
integer
.true. iff ierr is present and non-OK — the “shall I
return early” test used after every ierr-threaded call in
engine_setup. When ierr is absent the callee already
error stopped on failure, so this is always .false. here.
Arguments
Type
Intent Optional Attributes
Name
integer,
intent(in),
optional
::
ierr
Return Value
logical
nz uniform cumulative fractions (m/nz, m=1..nz) — the auto
sigma / z* output grid when no explicit levels are configured.
Moved from rdb_driver (P2.4).
Arguments
Type
Intent Optional Attributes
Name
integer,
intent(in)
::
nz
Return Value
real(kind=wp), (max(nz,1))
Subroutines
Map the ocean state onto the device, then (when bt_halo > 0)
allocate + attach the wide-halo BT march-in workspace, then
warm up the device-path halo exchanges (UCX cuda_ipc handle
open, outside any timed region — see driver_run_ocean’s
“Content-safety argument” comment, carried over unchanged).
Arguments
Type
Intent Optional Attributes
Name
type(ocean_engine_t ),
intent(inout)
::
engine
type(config_t ),
intent(in)
::
cfg
Unwind device residency. Idempotent-adjacent: caller checks
device_mapped (mirrors rdb_handle’s ocean_handle_t).
Arguments
Type
Intent Optional Attributes
Name
type(ocean_engine_t ),
intent(inout)
::
engine
Host-side setup: decomposition -> grid -> god state -> IC seed
-> restart (optional) -> the 21 configure_ocean_*-family
stages -> ghost wraps -> halo init -> land mask -> wave
drag/porous -> sea-ice IC. Does NOT map the state onto the
device — call engine_enter_data next. Preserves
driver_run_ocean’s exact stage order; see the per-stage
comments below (carried over from the driver almost verbatim).
Arguments
Type
Intent Optional Attributes
Name
type(ocean_engine_t ),
intent(inout)
::
engine
type(config_t ),
intent(inout)
::
cfg
integer,
intent(out),
optional
::
ierr
Non-zero (rdb_ocean_status code) on a bad config/setup/IC
failure when present; absent behaves as today — the
offending configure_ocean_* stage (or this routine’s own
pre-flight checks) error stops.
integer,
intent(in),
optional
::
compute_rank
This rank’s 0-based compute-rank index. Default 0
(single-rank: the API/bench callers).
integer,
intent(in),
optional
::
compute_size
Total compute-rank count. Default 1.
integer,
intent(in),
optional
::
mpi_rank
Rank used for the restart filename convention
(output_rank_filename). Default = compute_rank (the
ocean path has no separate I/O-server rank).
character(len=*),
intent(in),
optional
::
restart_file
Warm-restart source (file, or a run-directory — see
driver_run_ocean’s .nc-suffix convention). Absent/blank
=> cold start (matches the API/bench callers today).
real(kind=wp),
intent(out),
optional
::
t_restart
Restored simulation time (0 on a cold start).
integer,
intent(out),
optional
::
step_restart
Restored outer-step count (0 on a cold start).
logical,
intent(in),
optional
::
validate_only
rdb --validate-only: run every configure stage (and so every
configure-time refusal) but create no output — the diag
selection is still parsed and checked, the per-rank NetCDF
stream is not opened and its directory is not created.
Default .false..
Advance one outer step at fixed dt, starting from simulation
time t (consumed by tide/astro forcing inside
ocean_dyn_step_split; the caller advances its own
t_current by dt afterwards — see the module docstring for
what stays caller-side). Wraps ocean_dyn_step_split
(rdb_ocean_dyn.F90:1986) plus the per-step halves of the
setup stages that must run BEFORE the dyn-core advance:
file-forcing update/apply, boundary-data refresh, porous-area
refresh.
Read more…
Arguments
Type
Intent Optional Attributes
Name
type(ocean_engine_t ),
intent(inout)
::
engine
real(kind=wp),
intent(in)
::
dt
real(kind=wp),
intent(in)
::
t
integer,
intent(out),
optional
::
ierr
Second half of one outer step: derive Q_heat/Q_salt from
the surface-flux component set (no-op unless
&ocean_forcing_nml enable_components) and, when diagnostics
are configured, run one ocean_diag_t%step. Call immediately
after engine_step and, when sea ice is enabled,
engine_step_ice too — see engine_step’s docstring for why
this is a separate call.
Arguments
Type
Intent Optional Attributes
Name
type(ocean_engine_t ),
intent(inout)
::
engine
real(kind=wp),
intent(in)
::
dt
real(kind=wp),
intent(in)
::
t
Simulation time at the START of the step this finalizes
(the same t passed to the matching engine_step call) —
t + dt is what reaches the diag manager, matching
driver_run_ocean’s post-advance t_current.
integer,
intent(out),
optional
::
ierr
P2.4b: sea-ice per-step physics — ocean-side frazil
accumulation, EVP dynamics (every outer step, independent of
the thermo cadence: the ice’s own fast/slow split) plus the
resulting ice->ocean stress coupling, and, at thermo cadence
(engine%state%dyn%is_thermo_step()), category transport
followed by the atmospheric-forcing / basal-flux /
frazil-uptake / column-thermo / snowfall / brine / heat /
shortwave / ITD chain. Transcribed VERBATIM from
driver_run_ocean’s former inline sea-ice block — the
internal call order is load-bearing (see the “MANDATED ORDER”
comment below, itself carried over unchanged) and is NOT
reordered here. Returns immediately, a no-op, when
&ocean_ice_nml enable = .false. — bit-identical to before
this phase.
Read more…
Arguments
Type
Intent Optional Attributes
Name
type(ocean_engine_t ),
intent(inout)
::
engine
type(config_t ),
intent(in)
::
cfg
real(kind=wp),
intent(in)
::
dt
real(kind=wp),
intent(in)
::
t
Unused today (the sea-ice block has no direct time
dependence — only dt and the therm_dt/thermo-cadence
machinery derived from it); present for signature symmetry
with engine_step/engine_step_finalize.
integer,
intent(out),
optional
::
ierr
Present for signature symmetry; no failure path in this
routine sets it today — ice_transport_step’s
conservation/positivity check still error stops,
matching the pre-existing driver behaviour verbatim.
Close the diag NetCDF stream (if one was opened), release the
process-global ocean-halo and fold-exchange module state, then release host-side
allocations. Call after engine_exit_data.
Arguments
Type
Intent Optional Attributes
Name
type(ocean_engine_t ),
intent(inout)
::
engine
Register the default diag-manager variable set and open the
per-rank NetCDF stream. No-op when diagnostics are disabled.
open_stream_file = .false. (the --validate-only path) runs the
level/selection checks but creates neither the output directory
nor the stream.
Moved verbatim from driver_run_ocean’s private
configure_ocean_diag helper (P2.4) so the API/bench setup
paths can reach it too; F5 residual — now takes optional
ierr instead of error stopping (see rdb_ocean_diag’s
set_output_*_levels for the leaf-level conversions this
threads through).
Arguments
Type
Intent Optional Attributes
Name
type(config_t ),
intent(in)
::
cfg
type(ocean_state_t ),
intent(inout)
::
state
integer,
intent(in)
::
mpi_rank
type(decomp_t ),
intent(in)
::
decomp
integer,
intent(out),
optional
::
ierr
logical,
intent(in),
optional
::
open_stream_file
Default .true..