print_bt_budget walks the per-kernel slow-tendency arrays before
they sum into F_slow_u/v, decomposes the BT-mode work rate by
source term (PGF, Coriolis-adv, hvisc, bottom drag, surface
stress), splits the basin into a N/S region triple (subpolar / jet
/ subtropical for double_gyre), and prints a tabular per-region
snapshot. Diagnoses which slow-term over/under-energizes a gyre.
Gated by bt_work%debug_bt_budget (namelist ocean_debug_bt_budget).
Default off ⇒ existing runs unchanged. Best paired with serial
multicore builds so prints land in causal order.
module~~rdb_ocean_bt_budget_probe~~UsesGraph
module~rdb_ocean_bt_budget_probe
rdb_ocean_bt_budget_probe
module~rdb_barotropic_workstate
rdb_barotropic_workstate
module~rdb_ocean_bt_budget_probe->module~rdb_barotropic_workstate
module~rdb_constants
rdb_constants
module~rdb_ocean_bt_budget_probe->module~rdb_constants
module~rdb_coriolis_adv
rdb_coriolis_adv
module~rdb_ocean_bt_budget_probe->module~rdb_coriolis_adv
module~rdb_grid
rdb_grid
module~rdb_ocean_bt_budget_probe->module~rdb_grid
module~rdb_multilayer_state
rdb_multilayer_state
module~rdb_ocean_bt_budget_probe->module~rdb_multilayer_state
module~rdb_ocean_bottom_drag
rdb_ocean_bottom_drag
module~rdb_ocean_bt_budget_probe->module~rdb_ocean_bottom_drag
module~rdb_ocean_horizontal_viscosity
rdb_ocean_horizontal_viscosity
module~rdb_ocean_bt_budget_probe->module~rdb_ocean_horizontal_viscosity
module~rdb_ocean_pressure_force
rdb_ocean_pressure_force
module~rdb_ocean_bt_budget_probe->module~rdb_ocean_pressure_force
module~rdb_ocean_surface_stress
rdb_ocean_surface_stress
module~rdb_ocean_bt_budget_probe->module~rdb_ocean_surface_stress
module~rdb_barotropic_workstate->module~rdb_constants
module~rdb_barotropic_workstate->module~rdb_grid
iso_fortran_env
iso_fortran_env
module~rdb_barotropic_workstate->iso_fortran_env
module~rdb_mem_report
rdb_mem_report
module~rdb_barotropic_workstate->module~rdb_mem_report
pic_types
pic_types
module~rdb_constants->pic_types
module~rdb_coriolis_adv->module~rdb_constants
module~rdb_coriolis_adv->module~rdb_grid
module~rdb_coriolis_adv->module~rdb_multilayer_state
module~rdb_coriolis_adv->iso_fortran_env
module~rdb_barotropic_state
rdb_barotropic_state
module~rdb_coriolis_adv->module~rdb_barotropic_state
module~rdb_coriolis_adv->module~rdb_mem_report
module~rdb_ocean_metrics
rdb_ocean_metrics
module~rdb_coriolis_adv->module~rdb_ocean_metrics
module~rdb_ocean_porous
rdb_ocean_porous
module~rdb_coriolis_adv->module~rdb_ocean_porous
module~rdb_scratch_3d
rdb_scratch_3d
module~rdb_coriolis_adv->module~rdb_scratch_3d
module~rdb_grid->module~rdb_constants
module~rdb_multilayer_state->module~rdb_constants
module~rdb_multilayer_state->module~rdb_grid
module~rdb_multilayer_state->iso_fortran_env
module~rdb_efp
rdb_efp
module~rdb_multilayer_state->module~rdb_efp
module~rdb_error_ring
rdb_error_ring
module~rdb_multilayer_state->module~rdb_error_ring
module~rdb_multilayer_state->module~rdb_mem_report
module~rdb_tracer
rdb_tracer
module~rdb_multilayer_state->module~rdb_tracer
pic_logger
pic_logger
module~rdb_multilayer_state->pic_logger
module~rdb_ocean_bottom_drag->module~rdb_constants
module~rdb_ocean_bottom_drag->module~rdb_grid
module~rdb_ocean_bottom_drag->module~rdb_multilayer_state
module~rdb_ocean_bottom_drag->iso_fortran_env
module~rdb_ocean_bottom_drag->module~rdb_mem_report
module~rdb_ocean_bottom_drag->module~rdb_ocean_metrics
module~rdb_ocean_bottom_drag->module~rdb_scratch_3d
module~rdb_ocean_horizontal_viscosity->module~rdb_constants
module~rdb_ocean_horizontal_viscosity->module~rdb_grid
module~rdb_ocean_horizontal_viscosity->module~rdb_multilayer_state
module~rdb_ocean_horizontal_viscosity->iso_fortran_env
module~rdb_ocean_horizontal_viscosity->module~rdb_mem_report
module~rdb_ocean_lateral_mix
rdb_ocean_lateral_mix
module~rdb_ocean_horizontal_viscosity->module~rdb_ocean_lateral_mix
module~rdb_ocean_horizontal_viscosity->module~rdb_ocean_metrics
module~rdb_ocean_horizontal_viscosity->module~rdb_scratch_3d
module~rdb_ocean_pressure_force->module~rdb_constants
module~rdb_ocean_pressure_force->module~rdb_grid
module~rdb_ocean_pressure_force->module~rdb_multilayer_state
module~rdb_ocean_pressure_force->iso_fortran_env
module~rdb_eos
rdb_eos
module~rdb_ocean_pressure_force->module~rdb_eos
module~rdb_ocean_pressure_force->module~rdb_mem_report
module~rdb_ocean_pressure_force->module~rdb_ocean_metrics
module~rdb_ocean_pgf_reconstruct
rdb_ocean_pgf_reconstruct
module~rdb_ocean_pressure_force->module~rdb_ocean_pgf_reconstruct
module~rdb_ocean_pressure_force->module~rdb_scratch_3d
module~rdb_ocean_surface_stress->module~rdb_constants
module~rdb_ocean_surface_stress->module~rdb_grid
module~rdb_ocean_surface_stress->module~rdb_multilayer_state
module~rdb_ocean_surface_stress->iso_fortran_env
module~rdb_ocean_surface_stress->module~rdb_mem_report
module~rdb_ocean_surface_stress->module~rdb_scratch_3d
module~rdb_barotropic_state->module~rdb_constants
module~rdb_barotropic_state->module~rdb_grid
module~rdb_barotropic_state->iso_fortran_env
module~rdb_barotropic_state->module~rdb_mem_report
module~rdb_efp->iso_fortran_env
ieee_arithmetic
ieee_arithmetic
module~rdb_efp->ieee_arithmetic
module~rdb_eos->module~rdb_constants
module~rdb_eos->module~rdb_grid
module~rdb_error_ring->pic_logger
module~rdb_mem_report->module~rdb_constants
module~rdb_mem_report->iso_fortran_env
module~rdb_mem_report->pic_logger
pic_strings
pic_strings
module~rdb_mem_report->pic_strings
module~rdb_ocean_lateral_mix->module~rdb_constants
module~rdb_ocean_lateral_mix->module~rdb_grid
module~rdb_ocean_lateral_mix->module~rdb_multilayer_state
module~rdb_ocean_lateral_mix->iso_fortran_env
module~rdb_ocean_lateral_mix->module~rdb_mem_report
module~rdb_ocean_lateral_mix->module~rdb_ocean_metrics
module~rdb_ocean_lateral_mix->module~rdb_scratch_3d
module~rdb_ocean_metrics->module~rdb_constants
module~rdb_ocean_metrics->module~rdb_grid
module~rdb_ocean_metrics->iso_fortran_env
module~rdb_ocean_metrics->module~rdb_error_ring
module~rdb_ocean_metrics->module~rdb_mem_report
module~rdb_ocean_metrics->pic_logger
module~rdb_io_netcdf
rdb_io_netcdf
module~rdb_ocean_metrics->module~rdb_io_netcdf
module~rdb_ocean_bipolar
rdb_ocean_bipolar
module~rdb_ocean_metrics->module~rdb_ocean_bipolar
module~rdb_ocean_fold
rdb_ocean_fold
module~rdb_ocean_metrics->module~rdb_ocean_fold
module~rdb_ocean_status
rdb_ocean_status
module~rdb_ocean_metrics->module~rdb_ocean_status
netcdf
netcdf
module~rdb_ocean_metrics->netcdf
module~rdb_ocean_metrics->pic_strings
module~rdb_ocean_pgf_reconstruct->module~rdb_constants
module~rdb_ocean_pgf_reconstruct->module~rdb_eos
module~rdb_ocean_porous->module~rdb_constants
module~rdb_ocean_porous->ieee_arithmetic
module~rdb_scratch_3d->module~rdb_constants
module~rdb_scratch_3d->iso_fortran_env
module~rdb_scratch_3d->module~rdb_mem_report
module~rdb_tracer->module~rdb_constants
module~rdb_tracer->module~rdb_grid
module~rdb_tracer->iso_fortran_env
module~rdb_tracer->module~rdb_mem_report
module~rdb_io_netcdf->module~rdb_constants
module~rdb_io_netcdf->iso_fortran_env
module~rdb_io_netcdf->module~rdb_error_ring
module~rdb_io_netcdf->pic_logger
module~rdb_io_netcdf->netcdf
module~rdb_io_netcdf->pic_strings
iso_c_binding
iso_c_binding
module~rdb_io_netcdf->iso_c_binding
module~rdb_ocean_bipolar->module~rdb_constants
module~rdb_ocean_fold->module~rdb_constants
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_bt_budget_probe~~UsedByGraph
module~rdb_ocean_bt_budget_probe
rdb_ocean_bt_budget_probe
module~rdb_ocean_dyn
rdb_ocean_dyn
module~rdb_ocean_dyn->module~rdb_ocean_bt_budget_probe
module~rdb_driver
rdb_driver
module~rdb_driver->module~rdb_ocean_dyn
module~rdb_ocean_engine
rdb_ocean_engine
module~rdb_driver->module~rdb_ocean_engine
module~rdb_ocean_state
rdb_ocean_state
module~rdb_driver->module~rdb_ocean_state
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_handle
rdb_handle
module~rdb_ocean_api->module~rdb_handle
module~rdb_ocean_diag_derived
rdb_ocean_diag_derived
module~rdb_ocean_api->module~rdb_ocean_diag_derived
module~rdb_ocean_diag_fills
rdb_ocean_diag_fills
module~rdb_ocean_api->module~rdb_ocean_diag_fills
module~rdb_ocean_engine->module~rdb_ocean_dyn
module~rdb_ocean_setup
rdb_ocean_setup
module~rdb_ocean_engine->module~rdb_ocean_setup
module~rdb_ocean_engine->module~rdb_ocean_state
module~rdb_ocean_engine->module~rdb_ocean_diag_derived
module~rdb_ocean_engine->module~rdb_ocean_diag_fills
module~rdb_ocean_setup->module~rdb_ocean_dyn
module~rdb_ocean_setup->module~rdb_ocean_state
module~rdb_ocean_state->module~rdb_ocean_dyn
module~rdb_handle->module~rdb_ocean_engine
module~rdb_handle->module~rdb_ocean_state
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_state
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.
Subroutines
Compute + print the per-region BT-mode budget snapshot.
Read more…
Arguments
Type
Intent Optional Attributes
Name
type(hgrid_t ),
intent(in)
::
grid
type(multilayer_state_t ),
intent(in)
::
ms
type(barotropic_workstate_t ),
intent(in)
::
bt_work
type(ocean_pressure_force_t ),
intent(in)
::
pgf
type(coriolis_adv_t ),
intent(in)
::
cor
type(ocean_horizontal_viscosity_t ),
intent(in)
::
hv
type(ocean_bottom_drag_t ),
intent(in)
::
bd
type(ocean_surface_stress_t ),
intent(in)
::
ss
real(kind=wp),
intent(in)
::
t_value
character(len=*),
intent(in)
::
t_unit
character(len=*),
intent(in)
::
stage_tag
logical,
intent(in)
::
header
Arguments
Type
Intent Optional Attributes
Name
real(kind=wp),
intent(in)
::
t_value
character(len=*),
intent(in)
::
t_unit
character(len=*),
intent(in)
::
stage_tag
character(len=*),
intent(in)
::
region_tag
real(kind=wp),
intent(in)
::
ke
real(kind=wp),
intent(in)
::
eta_min
real(kind=wp),
intent(in)
::
eta_max
real(kind=wp),
intent(in)
::
usurf
real(kind=wp),
intent(in)
::
ubed
real(kind=wp),
intent(in)
::
vsurf
real(kind=wp),
intent(in)
::
vbed
real(kind=wp),
intent(in)
::
p_pgf
real(kind=wp),
intent(in)
::
p_cor
real(kind=wp),
intent(in)
::
p_hv
real(kind=wp),
intent(in)
::
p_bd
real(kind=wp),
intent(in)
::
p_ss
Walk cells (interior x-range, j in [j_lo, j_hi]); collect
η extremes, |u|/|v| extremes at surface + bed, and the
cell-area-averaged BT KE.
Arguments
Type
Intent Optional Attributes
Name
type(hgrid_t ),
intent(in)
::
grid
type(multilayer_state_t ),
intent(in)
::
ms
type(barotropic_workstate_t ),
intent(in)
::
bt_work
integer,
intent(in)
::
j_lo
integer,
intent(in)
::
j_hi
real(kind=wp),
intent(out)
::
eta_min
real(kind=wp),
intent(out)
::
eta_max
real(kind=wp),
intent(out)
::
usurf_max
real(kind=wp),
intent(out)
::
ubed_max
real(kind=wp),
intent(out)
::
vsurf_max
real(kind=wp),
intent(out)
::
vbed_max
real(kind=wp),
intent(out)
::
ke_mean
Cell-centred BT power per region: P = ⟨u_bt·F_u + v_bt·F_v⟩.
F_u_3d is per-layer at u-faces, shape (nx+1, ny, nz).
Depth-averages with the centred face thickness as weight to
get the BT-mode contribution, then dots with bt_ubt/bt_vbt
at the same face, then averages east+west (north+south) into
the cell.
Arguments
Type
Intent Optional Attributes
Name
type(hgrid_t ),
intent(in)
::
grid
type(multilayer_state_t ),
intent(in)
::
ms
type(barotropic_workstate_t ),
intent(in)
::
bt_work
real(kind=wp),
intent(in)
::
F_u_3d (:,:,:)
real(kind=wp),
intent(in)
::
F_v_3d (:,:,:)
integer,
intent(in)
::
j_lo
integer,
intent(in)
::
j_hi
real(kind=wp),
intent(out)
::
p_mean
Bottom drag in implicit mode: the slow tendency for u at a
face is −rate_u(i,j,k)·u_face_layer(i,j,k) (1/s × m/s
→ m/s²). We construct that on the fly, depth-mean by
face thickness, dot with bt_ubt (and v counterpart),
sum the cell-centred result over the region. Sign comes
out negative: drag removes BT-mode energy.
Arguments
Type
Intent Optional Attributes
Name
type(hgrid_t ),
intent(in)
::
grid
type(multilayer_state_t ),
intent(in)
::
ms
type(barotropic_workstate_t ),
intent(in)
::
bt_work
real(kind=wp),
intent(in)
::
rate_u (:,:,:)
real(kind=wp),
intent(in)
::
rate_v (:,:,:)
integer,
intent(in)
::
j_lo
integer,
intent(in)
::
j_hi
real(kind=wp),
intent(out)
::
p_mean