rdb_tracer Module

Per-tracer state and config for the layered ocean solver.

Holds the prognostic field hTr (= h * Tr), the RK2 save buffer hTr0, and all scalar config the kernels consume (initial value, BC inflow value, physical clamp bounds, vertical/horizontal background diffusivities, and a linear-EOS contribution eos_coeff * (Tr - eos_ref)).

Lets the solver iterate do it = 1, size(state%tracers) and dispatch the generic ml_*_tracer kernels per element. Special-shape physics (surface heat/salt flux, sediment) indexes by name instead.


Uses

  • module~~rdb_tracer~~UsesGraph module~rdb_tracer rdb_tracer iso_fortran_env iso_fortran_env module~rdb_tracer->iso_fortran_env module~rdb_constants rdb_constants module~rdb_tracer->module~rdb_constants module~rdb_grid rdb_grid module~rdb_tracer->module~rdb_grid module~rdb_mem_report rdb_mem_report module~rdb_tracer->module~rdb_mem_report pic_types pic_types module~rdb_constants->pic_types module~rdb_grid->module~rdb_constants module~rdb_mem_report->iso_fortran_env module~rdb_mem_report->module~rdb_constants pic_logger pic_logger module~rdb_mem_report->pic_logger pic_strings pic_strings module~rdb_mem_report->pic_strings

Used by

  • module~~rdb_tracer~~UsedByGraph module~rdb_tracer rdb_tracer module~rdb_continuity rdb_continuity module~rdb_continuity->module~rdb_tracer module~rdb_multilayer_state rdb_multilayer_state module~rdb_continuity->module~rdb_multilayer_state module~rdb_ocean_fold_apply rdb_ocean_fold_apply module~rdb_continuity->module~rdb_ocean_fold_apply module~rdb_ocean_gm rdb_ocean_gm module~rdb_continuity->module~rdb_ocean_gm module~rdb_ocean_mle rdb_ocean_mle module~rdb_continuity->module~rdb_ocean_mle module~rdb_ocean_periodic rdb_ocean_periodic module~rdb_continuity->module~rdb_ocean_periodic module~rdb_ocean_halo rdb_ocean_halo module~rdb_continuity->module~rdb_ocean_halo module~rdb_multilayer_state->module~rdb_tracer module~rdb_ocean_hdiff_tracer rdb_ocean_hdiff_tracer module~rdb_ocean_hdiff_tracer->module~rdb_tracer module~rdb_ocean_hdiff_tracer->module~rdb_multilayer_state module~rdb_ocean_redi rdb_ocean_redi module~rdb_ocean_redi->module~rdb_tracer module~rdb_ocean_redi->module~rdb_multilayer_state module~rdb_ocean_remap rdb_ocean_remap module~rdb_ocean_remap->module~rdb_tracer module~rdb_ocean_remap->module~rdb_multilayer_state module~rdb_ocean_vdiff rdb_ocean_vdiff module~rdb_ocean_vdiff->module~rdb_tracer module~rdb_ocean_vdiff->module~rdb_multilayer_state module~rdb_ocean_vertical_advection rdb_ocean_vertical_advection module~rdb_ocean_vertical_advection->module~rdb_tracer module~rdb_ocean_vertical_advection->module~rdb_multilayer_state module~rdb_state rdb_state module~rdb_state->module~rdb_tracer module~rdb_config rdb_config module~rdb_state->module~rdb_config module~rdb_barotropic_coupling rdb_barotropic_coupling module~rdb_barotropic_coupling->module~rdb_multilayer_state module~rdb_coriolis_adv rdb_coriolis_adv module~rdb_barotropic_coupling->module~rdb_coriolis_adv module~rdb_ocean_bottom_drag rdb_ocean_bottom_drag module~rdb_barotropic_coupling->module~rdb_ocean_bottom_drag module~rdb_ocean_horizontal_viscosity rdb_ocean_horizontal_viscosity module~rdb_barotropic_coupling->module~rdb_ocean_horizontal_viscosity module~rdb_ocean_pressure_force rdb_ocean_pressure_force module~rdb_barotropic_coupling->module~rdb_ocean_pressure_force module~rdb_ocean_surface_stress rdb_ocean_surface_stress module~rdb_barotropic_coupling->module~rdb_ocean_surface_stress module~rdb_ocean_top_drag rdb_ocean_top_drag module~rdb_barotropic_coupling->module~rdb_ocean_top_drag module~rdb_coriolis_adv->module~rdb_multilayer_state module~rdb_ice_basal_flux rdb_ice_basal_flux module~rdb_ice_basal_flux->module~rdb_multilayer_state module~rdb_ocean_surface_flux rdb_ocean_surface_flux module~rdb_ice_basal_flux->module~rdb_ocean_surface_flux module~rdb_ice_evp rdb_ice_evp module~rdb_ice_evp->module~rdb_multilayer_state module~rdb_ice_evp->module~rdb_ocean_periodic module~rdb_ice_evp->module~rdb_ocean_halo module~rdb_ice_frazil rdb_ice_frazil module~rdb_ice_frazil->module~rdb_multilayer_state module~rdb_ice_frazil->module~rdb_ocean_surface_flux module~rdb_ice_frazil_uptake rdb_ice_frazil_uptake module~rdb_ice_frazil_uptake->module~rdb_multilayer_state module~rdb_ice_init rdb_ice_init module~rdb_ice_init->module~rdb_multilayer_state module~rdb_ice_itd rdb_ice_itd module~rdb_ice_itd->module~rdb_multilayer_state module~rdb_ice_thermo_driver rdb_ice_thermo_driver module~rdb_ice_thermo_driver->module~rdb_multilayer_state module~rdb_ice_transport rdb_ice_transport module~rdb_ice_transport->module~rdb_continuity module~rdb_ice_transport->module~rdb_multilayer_state module~rdb_ice_transport->module~rdb_ice_itd module~rdb_ocean_halo_state rdb_ocean_halo_state module~rdb_ice_transport->module~rdb_ocean_halo_state module~rdb_ice_transport->module~rdb_ocean_halo module~rdb_ocean_bottom_drag->module~rdb_multilayer_state module~rdb_ocean_bt_budget_probe rdb_ocean_bt_budget_probe module~rdb_ocean_bt_budget_probe->module~rdb_multilayer_state module~rdb_ocean_bt_budget_probe->module~rdb_coriolis_adv 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_budget_probe->module~rdb_ocean_surface_stress module~rdb_ocean_budgets rdb_ocean_budgets module~rdb_ocean_budgets->module~rdb_multilayer_state module~rdb_ocean_cavity_flux rdb_ocean_cavity_flux module~rdb_ocean_cavity_flux->module~rdb_multilayer_state module~rdb_ocean_cavity_flux->module~rdb_ocean_surface_flux module~rdb_ocean_chksum rdb_ocean_chksum module~rdb_ocean_chksum->module~rdb_multilayer_state module~rdb_ocean_console_stats rdb_ocean_console_stats module~rdb_ocean_console_stats->module~rdb_multilayer_state module~rdb_ocean_dyn rdb_ocean_dyn module~rdb_ocean_dyn->module~rdb_continuity module~rdb_ocean_dyn->module~rdb_multilayer_state module~rdb_ocean_dyn->module~rdb_ocean_hdiff_tracer module~rdb_ocean_dyn->module~rdb_ocean_redi module~rdb_ocean_dyn->module~rdb_ocean_remap module~rdb_ocean_dyn->module~rdb_ocean_vdiff module~rdb_ocean_dyn->module~rdb_ocean_vertical_advection module~rdb_ocean_dyn->module~rdb_barotropic_coupling module~rdb_ocean_dyn->module~rdb_coriolis_adv module~rdb_ocean_dyn->module~rdb_ocean_bottom_drag module~rdb_ocean_dyn->module~rdb_ocean_bt_budget_probe module~rdb_ocean_dyn->module~rdb_ocean_cavity_flux module~rdb_ocean_dyn->module~rdb_ocean_chksum 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_dyn->module~rdb_ocean_fold_apply module~rdb_ocean_geothermal rdb_ocean_geothermal module~rdb_ocean_dyn->module~rdb_ocean_geothermal module~rdb_ocean_ghost_poison rdb_ocean_ghost_poison module~rdb_ocean_dyn->module~rdb_ocean_ghost_poison module~rdb_ocean_dyn->module~rdb_ocean_gm module~rdb_ocean_dyn->module~rdb_ocean_halo_state 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_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_dyn->module~rdb_ocean_periodic module~rdb_ocean_dyn->module~rdb_ocean_pressure_force module~rdb_ocean_sponge rdb_ocean_sponge 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_tidal_mixing rdb_ocean_tidal_mixing module~rdb_ocean_dyn->module~rdb_ocean_tidal_mixing 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_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_dyn->module~rdb_ocean_halo module~rdb_barotropic_substep rdb_barotropic_substep module~rdb_ocean_dyn->module~rdb_barotropic_substep module~rdb_ocean_bt_wide rdb_ocean_bt_wide module~rdb_ocean_dyn->module~rdb_ocean_bt_wide module~rdb_ocean_engine rdb_ocean_engine module~rdb_ocean_engine->module~rdb_state module~rdb_ocean_engine->module~rdb_ice_basal_flux module~rdb_ocean_engine->module~rdb_ice_evp module~rdb_ocean_engine->module~rdb_ice_frazil module~rdb_ocean_engine->module~rdb_ice_frazil_uptake module~rdb_ocean_engine->module~rdb_ice_init module~rdb_ocean_engine->module~rdb_ice_itd module~rdb_ocean_engine->module~rdb_ice_thermo_driver module~rdb_ocean_engine->module~rdb_ice_transport module~rdb_ocean_engine->module~rdb_ocean_cavity_flux module~rdb_ocean_engine->module~rdb_ocean_dyn module~rdb_ocean_engine->module~rdb_ocean_fold_apply module~rdb_ocean_engine->module~rdb_ocean_geothermal module~rdb_ocean_engine->module~rdb_ocean_halo_state 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_engine->module~rdb_ocean_sponge module~rdb_ocean_state rdb_ocean_state module~rdb_ocean_engine->module~rdb_ocean_state module~rdb_ocean_engine->module~rdb_ocean_surface_flux module~rdb_ocean_engine->module~rdb_ocean_surface_stress module~rdb_ocean_engine->module~rdb_config module~rdb_ice_ocean_coupler rdb_ice_ocean_coupler module~rdb_ocean_engine->module~rdb_ice_ocean_coupler module~rdb_ocean_data_forcing rdb_ocean_data_forcing module~rdb_ocean_engine->module~rdb_ocean_data_forcing 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_engine->module~rdb_ocean_halo module~rdb_decomp rdb_decomp module~rdb_ocean_engine->module~rdb_decomp module~rdb_ocean_data_input rdb_ocean_data_input module~rdb_ocean_engine->module~rdb_ocean_data_input module~rdb_ocean_stability_audit rdb_ocean_stability_audit module~rdb_ocean_engine->module~rdb_ocean_stability_audit module~rdb_ocean_eos_compute->module~rdb_multilayer_state module~rdb_ocean_epbl->module~rdb_multilayer_state module~rdb_ocean_epbl->module~rdb_ocean_surface_flux module~rdb_ocean_epbl->module~rdb_ocean_surface_stress module~rdb_ocean_fold_apply->module~rdb_multilayer_state module~rdb_ocean_geothermal->module~rdb_multilayer_state module~rdb_ocean_geothermal->module~rdb_ocean_surface_flux module~rdb_ocean_ghost_poison->module~rdb_multilayer_state module~rdb_ocean_ghost_poison->module~rdb_ocean_surface_stress module~rdb_ocean_gm->module~rdb_multilayer_state module~rdb_ocean_gm->module~rdb_ocean_isopycnal_slopes module~rdb_ocean_halo_state->module~rdb_multilayer_state module~rdb_ocean_halo_state->module~rdb_ocean_fold_apply 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_ocean_halo module~rdb_ocean_horizontal_viscosity->module~rdb_multilayer_state module~rdb_ocean_horizontal_viscosity->module~rdb_ocean_lateral_mix module~rdb_ocean_ideal_age->module~rdb_multilayer_state module~rdb_ocean_isopycnal_slopes->module~rdb_multilayer_state module~rdb_ocean_kappa_shear->module~rdb_multilayer_state module~rdb_ocean_ke_probe->module~rdb_multilayer_state module~rdb_ocean_ke_probe->module~rdb_coriolis_adv module~rdb_ocean_lateral_mix->module~rdb_multilayer_state 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_multilayer_state module~rdb_ocean_mle->module~rdb_multilayer_state module~rdb_ocean_mle->module~rdb_ocean_epbl module~rdb_ocean_mle->module~rdb_ocean_surface_stress module~rdb_ocean_obc_baroclinic->module~rdb_multilayer_state module~rdb_ocean_periodic->module~rdb_multilayer_state module~rdb_ocean_pressure_force->module~rdb_multilayer_state module~rdb_ocean_pseudo_salt rdb_ocean_pseudo_salt module~rdb_ocean_pseudo_salt->module~rdb_multilayer_state module~rdb_ocean_setup->module~rdb_ocean_vdiff module~rdb_ocean_setup->module~rdb_coriolis_adv module~rdb_ocean_setup->module~rdb_ocean_bottom_drag module~rdb_ocean_setup->module~rdb_ocean_dyn module~rdb_ocean_setup->module~rdb_ocean_epbl module~rdb_ocean_setup->module~rdb_ocean_fold_apply module~rdb_ocean_setup->module~rdb_ocean_geothermal module~rdb_ocean_setup->module~rdb_ocean_halo_state 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_pressure_force module~rdb_ocean_setup->module~rdb_ocean_sponge module~rdb_ocean_setup->module~rdb_ocean_state 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_top_drag module~rdb_ocean_setup->module~rdb_ocean_vmix module~rdb_ocean_setup->module~rdb_config module~rdb_ocean_setup->module~rdb_ocean_halo module~rdb_ocean_setup->module~rdb_decomp module~rdb_ocean_sponge->module~rdb_multilayer_state module~rdb_ocean_state->module~rdb_continuity module~rdb_ocean_state->module~rdb_multilayer_state module~rdb_ocean_state->module~rdb_ocean_hdiff_tracer module~rdb_ocean_state->module~rdb_ocean_redi module~rdb_ocean_state->module~rdb_ocean_vdiff module~rdb_ocean_state->module~rdb_ocean_vertical_advection module~rdb_ocean_state->module~rdb_coriolis_adv module~rdb_ocean_state->module~rdb_ocean_bottom_drag module~rdb_ocean_state->module~rdb_ocean_cavity_flux module~rdb_ocean_state->module~rdb_ocean_dyn module~rdb_ocean_state->module~rdb_ocean_epbl module~rdb_ocean_state->module~rdb_ocean_gm 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_state->module~rdb_ocean_periodic 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_sponge 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_tidal_mixing module~rdb_ocean_state->module~rdb_ocean_top_drag module~rdb_ocean_state->module~rdb_ocean_varmix 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_state->module~rdb_config module~rdb_ocean_state->module~rdb_ocean_data_forcing module~rdb_ocean_state->module~rdb_decomp module~rdb_ocean_state->module~rdb_ocean_data_input module~rdb_ocean_surface_flux->module~rdb_multilayer_state module~rdb_ocean_surface_stress->module~rdb_multilayer_state module~rdb_ocean_tidal_mixing->module~rdb_multilayer_state module~rdb_ocean_top_drag->module~rdb_multilayer_state 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_vmix->module~rdb_multilayer_state module~rdb_ocean_vmix->module~rdb_ocean_surface_flux module~rdb_ocean_vmix->module~rdb_ocean_surface_stress module~rdb_ocean_wave_speed->module~rdb_multilayer_state module~rdb_ocean_z_init->module~rdb_multilayer_state module~rdb_ocean_z_init->module~rdb_config module~rdb_config->module~rdb_ice_init module~rdb_driver rdb_driver module~rdb_driver->module~rdb_ocean_console_stats module~rdb_driver->module~rdb_ocean_dyn module~rdb_driver->module~rdb_ocean_engine module~rdb_driver->module~rdb_ocean_state module~rdb_driver->module~rdb_config module~rdb_handle rdb_handle module~rdb_handle->module~rdb_ocean_engine module~rdb_handle->module~rdb_ocean_state module~rdb_handle->module~rdb_config module~rdb_ice_ocean_coupler->module~rdb_ocean_halo_state module~rdb_ice_ocean_coupler->module~rdb_ocean_surface_flux module~rdb_ice_ocean_coupler->module~rdb_ocean_surface_stress module~rdb_ocean_api rdb_ocean_api module~rdb_ocean_api->module~rdb_ocean_dyn module~rdb_ocean_api->module~rdb_ocean_engine module~rdb_ocean_api->module~rdb_ocean_eos_compute module~rdb_ocean_api->module~rdb_ocean_fold_apply module~rdb_ocean_api->module~rdb_ocean_periodic module~rdb_ocean_api->module~rdb_config module~rdb_ocean_api->module~rdb_handle module~rdb_ocean_api->module~rdb_ocean_diag_derived module~rdb_ocean_api->module~rdb_ocean_diag_fills module~rdb_ocean_halo_width rdb_ocean_halo_width module~rdb_ocean_api->module~rdb_ocean_halo_width module~rdb_ocean_data_forcing->module~rdb_ocean_halo_state 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->module~rdb_config module~rdb_ocean_data_forcing->module~rdb_ocean_data_input module~rdb_ocean_diag_derived->module~rdb_ocean_state module~rdb_ocean_diag_derived->module~rdb_ocean_diag_fills module~rdb_ocean_diag_fills->module~rdb_ocean_pseudo_salt module~rdb_ocean_diag_fills->module~rdb_ocean_state module~rdb_ocean_halo->module~rdb_ocean_periodic module~rdb_ocean_halo->module~rdb_decomp module~rdb_ocean_halo_width->module~rdb_coriolis_adv proc~validate_config validate_config proc~validate_config->module~rdb_coriolis_adv proc~validate_config->module~rdb_ocean_bottom_drag proc~validate_config->module~rdb_ocean_horizontal_viscosity proc~validate_config->module~rdb_ocean_lateral_mix proc~validate_config->module~rdb_ocean_pressure_force proc~validate_config->module~rdb_ocean_pseudo_salt proc~validate_config->module~rdb_ocean_surface_flux proc~validate_config->module~rdb_ocean_tidal_mixing proc~validate_config->module~rdb_ocean_top_drag proc~validate_config->module~rdb_ocean_vmix module~rdb_barotropic_substep->module~rdb_ocean_halo module~rdb_config_schema rdb_config_schema module~rdb_config_schema->module~rdb_config module~rdb_decomp->module~rdb_config module~rdb_ocean_bt_wide->module~rdb_ocean_halo module~rdb_ocean_bt_wide->module~rdb_barotropic_substep module~rdb_ocean_data_input->module~rdb_config module~rdb_ocean_stability_audit->module~rdb_config module~rdb_halo rdb_halo module~rdb_halo->module~rdb_decomp module~rdb_ocean_fold_exchange rdb_ocean_fold_exchange module~rdb_ocean_fold_exchange->module~rdb_decomp module~rdb_ocean_restart_io rdb_ocean_restart_io module~rdb_ocean_restart_io->module~rdb_decomp

Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: TRACER_BUDGET_HEAT = 1

Tracer feeds the OCEAN path’s heat_budget_* accumulators.

integer, public, parameter :: TRACER_BUDGET_NONE = 0

No conservation-budget contributor slot (passive tracers, ideal age, pseudo-salt).

integer, public, parameter :: TRACER_BUDGET_SALT = 2

Tracer feeds the OCEAN path’s salt_budget_* accumulators.


Derived Types

type, public ::  tracer_t

Components

Type Visibility Attributes Name Initial
integer, public :: budget_id = TRACER_BUDGET_NONE

Which conservation-budget contributor slot this tracer’s kernels fill on the OCEAN path: NONE (no budget — passive tracers, ideal age, pseudo-salt), HEAT (heat_budget_*) or SALT (salt_budget_*). Read HOST-side only, at the seven budget dispatch blocks; never dereferenced inside a device loop. Unused on the coastal paths (no budget slots there) — left at NONE.

logical, public :: do_clamp = .true.
logical, public :: do_horizontal_advection = .true.
logical, public :: do_horizontal_diffusion = .true.
logical, public :: do_vertical_diffusion = .true.
logical, public :: do_vertical_exchange = .true.
real(kind=wp), public :: eos_coeff = 0.0_wp
real(kind=wp), public :: eos_ref = 0.0_wp
real(kind=wp), public, allocatable :: hTr(:,:,:)
real(kind=wp), public, allocatable :: hTr0(:,:,:)
real(kind=wp), public :: hdiff_kappa = 0.0_wp

Horizontal Laplacian diffusivity (m^2/s)

real(kind=wp), public :: kappa_bg = 0.0_wp

Background vertical diffusivity (m^2/s)

character(len=64), public :: long_name = ""
character(len=32), public :: name = ""
character(len=64), public :: standard_name = ""

CF-1.11 standard_name (e.g. “sea_water_salinity”). Empty string => no standard_name attribute is written.

real(kind=wp), public :: tr_inflow = 0.0_wp

BC inflow concentration for BC_INFLOW / BC_DISCHARGE

real(kind=wp), public :: tr_init = 0.0_wp

Uniform initial concentration (set by init from cfg)

real(kind=wp), public :: tr_max = huge(1.0_wp)

Physical upper clamp bound

real(kind=wp), public :: tr_min = -huge(1.0_wp)

Physical lower clamp bound

character(len=16), public :: units = ""

Type-Bound Procedures

procedure, public, non_overridable :: bytes => tracer_bytes
procedure, public, non_overridable :: destroy => tracer_destroy
procedure, public, non_overridable :: init => tracer_init

Functions

private pure function tracer_bytes(this) result(nbytes)

Counted allocatable footprint of one tracer (hTr + RK2 save).

Arguments

Type IntentOptional Attributes Name
class(tracer_t), intent(in) :: this

Return Value integer(kind=int64)


Subroutines

private subroutine tracer_destroy(this)

Arguments

Type IntentOptional Attributes Name
class(tracer_t), intent(inout) :: this

private subroutine tracer_init(this, grid, nz)

Allocate hTr / hTr0 at the multilayer grid size, zero-filled. Caller is responsible for populating the prognostic field (e.g. hTr = h_layer * tr_init) after layer thicknesses are set.

Arguments

Type IntentOptional Attributes Name
class(tracer_t), intent(inout) :: this
type(hgrid_t), intent(in) :: grid
integer, intent(in) :: nz