rdb_barotropic_state Module

Depth-integrated state on an Arakawa C-grid for the ocean dynamical core. C-grid layout: * Scalars (h, b, flux divergence) at cell centres, (nx_total, ny_total). * x-velocity/momentum at east faces, (nx_total+1, ny_total). * y-velocity/momentum at north faces, (nx_total, ny_total+1). Lives at ocean_state%barotropic for sim_type='ocean'.


Uses

  • module~~rdb_barotropic_state~~UsesGraph module~rdb_barotropic_state rdb_barotropic_state iso_fortran_env iso_fortran_env module~rdb_barotropic_state->iso_fortran_env module~rdb_constants rdb_constants module~rdb_barotropic_state->module~rdb_constants module~rdb_grid rdb_grid module~rdb_barotropic_state->module~rdb_grid module~rdb_mem_report rdb_mem_report module~rdb_barotropic_state->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_barotropic_state~~UsedByGraph module~rdb_barotropic_state rdb_barotropic_state module~rdb_continuity rdb_continuity module~rdb_continuity->module~rdb_barotropic_state module~rdb_coriolis_adv rdb_coriolis_adv module~rdb_coriolis_adv->module~rdb_barotropic_state module~rdb_ocean_dyn rdb_ocean_dyn module~rdb_ocean_dyn->module~rdb_barotropic_state module~rdb_ocean_dyn->module~rdb_continuity module~rdb_ocean_dyn->module~rdb_coriolis_adv module~rdb_barotropic_coupling rdb_barotropic_coupling module~rdb_ocean_dyn->module~rdb_barotropic_coupling module~rdb_ocean_bt_budget_probe rdb_ocean_bt_budget_probe module~rdb_ocean_dyn->module~rdb_ocean_bt_budget_probe module~rdb_ocean_ke_probe rdb_ocean_ke_probe module~rdb_ocean_dyn->module~rdb_ocean_ke_probe module~rdb_ocean_state rdb_ocean_state module~rdb_ocean_state->module~rdb_barotropic_state module~rdb_ocean_state->module~rdb_continuity module~rdb_ocean_state->module~rdb_coriolis_adv module~rdb_ocean_state->module~rdb_ocean_dyn module~rdb_barotropic_coupling->module~rdb_coriolis_adv module~rdb_driver rdb_driver module~rdb_driver->module~rdb_ocean_dyn module~rdb_driver->module~rdb_ocean_state module~rdb_ocean_engine rdb_ocean_engine module~rdb_driver->module~rdb_ocean_engine module~rdb_handle rdb_handle module~rdb_handle->module~rdb_ocean_state module~rdb_handle->module~rdb_ocean_engine module~rdb_ice_transport rdb_ice_transport module~rdb_ice_transport->module~rdb_continuity module~rdb_ocean_api rdb_ocean_api module~rdb_ocean_api->module~rdb_ocean_dyn 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_api->module~rdb_ocean_engine module~rdb_ocean_halo_width rdb_ocean_halo_width module~rdb_ocean_api->module~rdb_ocean_halo_width module~rdb_ocean_bt_budget_probe->module~rdb_coriolis_adv 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 module~rdb_ocean_engine->module~rdb_ocean_dyn module~rdb_ocean_engine->module~rdb_ocean_state module~rdb_ocean_engine->module~rdb_ice_transport module~rdb_ocean_engine->module~rdb_ocean_diag_derived module~rdb_ocean_engine->module~rdb_ocean_diag_fills module~rdb_ocean_setup rdb_ocean_setup module~rdb_ocean_engine->module~rdb_ocean_setup module~rdb_ocean_halo_width->module~rdb_coriolis_adv module~rdb_ocean_ke_probe->module~rdb_coriolis_adv module~rdb_ocean_setup->module~rdb_coriolis_adv module~rdb_ocean_setup->module~rdb_ocean_dyn module~rdb_ocean_setup->module~rdb_ocean_state proc~validate_config validate_config proc~validate_config->module~rdb_coriolis_adv

Derived Types

type, public ::  barotropic_state_t

Depth-integrated state on an Arakawa C-grid (face-located velocities as continuity-PPM produces/consumes; cell-centred h-update by flux div).

Components

Type Visibility Attributes Name Initial
real(kind=wp), public, allocatable :: b(:,:)

Reference column DEPTH at cell centre (m, positive down): a 4000 m deep cell holds b = +4000, land holds b = 0, and a cell is land iff b < LAND_DEPTH_THRESHOLD (2 m, rdb_constants). Fixed by the SSH identity eta = sum_k h_layer - b (rdb_ocean_diag_fills.F90:157) and by barotropic%h = b + eta (rdb_ocean_state.F90:2482).

Read more…
real(kind=wp), public :: coriolis_f = 0.0_wp

Beta-plane / f-plane Coriolis parameter (1/s).

real(kind=wp), public, allocatable :: flux_h(:,:)
real(kind=wp), public, allocatable :: h(:,:)

Water depth at cell centre (m), shape (nx_total, ny_total)

real(kind=wp), public, allocatable :: h0(:,:)
real(kind=wp), public, allocatable :: hu_face_x(:,:)

Face-thickness x momentum h*u (m^2/s)

real(kind=wp), public, allocatable :: hv_face_y(:,:)

Face-thickness y momentum h*v (m^2/s)

logical, public :: is_init = .false.

True between init and destroy. Prefer to allocated(...) — it also tracks GPU device attachment, which allocated cannot see.

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

Manning roughness for shelf-side bottom drag.

real(kind=wp), public, allocatable :: mass_flux_x(:,:)
real(kind=wp), public, allocatable :: mass_flux_y(:,:)
real(kind=wp), public, allocatable :: u_face_x(:,:)

x-velocity at east face of each cell (m/s)

real(kind=wp), public, allocatable :: u_face_x0(:,:)
real(kind=wp), public, allocatable :: v_face_y(:,:)

y-velocity at north face of each cell (m/s)

real(kind=wp), public, allocatable :: v_face_y0(:,:)

Type-Bound Procedures

procedure, public, non_overridable :: bytes => barotropic_state_bytes
procedure, public, non_overridable :: destroy => barotropic_state_destroy
procedure, public, non_overridable :: enter_data => barotropic_state_enter_data
procedure, public, non_overridable :: exit_data => barotropic_state_exit_data
procedure, public, non_overridable :: init => barotropic_state_init

Functions

private pure function barotropic_state_bytes(this) result(nbytes)

Counted allocatable footprint of the ocean C-grid barotropic slot.

Arguments

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

Return Value integer(kind=int64)


Subroutines

private subroutine barotropic_state_destroy(this)

Tear down host allocations. Call exit_data first — destroying a still-device-mapped state leaks device memory silently.

Arguments

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

private subroutine barotropic_state_enter_data(this)

Attach the C-grid barotropic allocatables to the device. The parent struct is mapped by the orchestrating routine. Read+write fields use copyin; pure-workspace fields use create.

Arguments

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

private subroutine barotropic_state_enter_data_impl(this)

Arguments

Type IntentOptional Attributes Name
type(barotropic_state_t), intent(inout) :: this

private subroutine barotropic_state_exit_data(this)

Reverse of enter_data — copy out prognostic fields, drop scratch. Caller detaches the parent struct after this returns.

Arguments

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

private subroutine barotropic_state_exit_data_impl(this)

Arguments

Type IntentOptional Attributes Name
type(barotropic_state_t), intent(inout) :: this

private subroutine barotropic_state_init(this, grid)

Allocate every C-grid barotropic array zero-filled. East-face arrays are (nx+1, ny), north-face (nx, ny+1). Scalars (manning_n, coriolis_f) are populated by state_init_from_config afterwards.

Arguments

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