rdb_ocean_engine Module

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).


Uses

  • 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

Used by

  • 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

Derived Types

type, public ::  ocean_engine_t

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

public pure function diag_vgrid_from_name(name) result(vgrid)

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 IntentOptional Attributes Name
character(len=*), intent(in) :: name

Return Value integer

private pure function setup_failed(ierr) result(bad)

.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 IntentOptional Attributes Name
integer, intent(in), optional :: ierr

Return Value logical

private pure function uniform_diag_levels(nz) result(levels)

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 IntentOptional Attributes Name
integer, intent(in) :: nz

Return Value real(kind=wp), (max(nz,1))


Subroutines

public subroutine engine_enter_data(engine, cfg)

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 IntentOptional Attributes Name
type(ocean_engine_t), intent(inout) :: engine
type(config_t), intent(in) :: cfg

public subroutine engine_exit_data(engine)

Unwind device residency. Idempotent-adjacent: caller checks device_mapped (mirrors rdb_handle’s ocean_handle_t).

Arguments

Type IntentOptional Attributes Name
type(ocean_engine_t), intent(inout) :: engine

public subroutine engine_setup(engine, cfg, ierr, compute_rank, compute_size, mpi_rank, restart_file, t_restart, step_restart, validate_only)

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 IntentOptional 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..

public subroutine engine_step(engine, dt, t, ierr)

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 IntentOptional 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

public subroutine engine_step_finalize(engine, dt, t, 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 IntentOptional 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

public subroutine engine_step_ice(engine, cfg, dt, t, 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 IntentOptional 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.

public subroutine engine_teardown(engine)

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 IntentOptional Attributes Name
type(ocean_engine_t), intent(inout) :: engine

private subroutine engine_configure_diag(cfg, state, mpi_rank, decomp, ierr, open_stream_file)

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 IntentOptional 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..