rdb_ocean_obc Module

Parent-state ingestion + interpolation state for nesting a regional ocean run inside a global/basin parent. Distinct from coastal BC_NESTED: parent state on a coarser mesh (ingest + remap onto our vertical grid), tides composed in via rdb_ocean_tides, mandatory T/S clamp, and a Flow-Relaxation-Scheme (FRS) zone of nrelax cells rather than a hard clamp. Scaffold (kernels not yet implemented).


Uses

  • module~~rdb_ocean_obc~~UsesGraph module~rdb_ocean_obc rdb_ocean_obc iso_fortran_env iso_fortran_env module~rdb_ocean_obc->iso_fortran_env module~rdb_constants rdb_constants module~rdb_ocean_obc->module~rdb_constants module~rdb_grid rdb_grid module~rdb_ocean_obc->module~rdb_grid module~rdb_mem_report rdb_mem_report module~rdb_ocean_obc->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_ocean_obc~~UsedByGraph module~rdb_ocean_obc rdb_ocean_obc module~rdb_ocean_state rdb_ocean_state module~rdb_ocean_state->module~rdb_ocean_obc module~rdb_driver rdb_driver 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_ocean_diag_derived rdb_ocean_diag_derived module~rdb_ocean_diag_derived->module~rdb_ocean_state module~rdb_ocean_diag_fills rdb_ocean_diag_fills 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_state 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_setup->module~rdb_ocean_state module~rdb_ocean_api rdb_ocean_api 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_api->module~rdb_ocean_engine

Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: OBC_EDGE_EAST = 2
integer, public, parameter :: OBC_EDGE_NORTH = 4
integer, public, parameter :: OBC_EDGE_SOUTH = 3
integer, public, parameter :: OBC_EDGE_WEST = 1

Derived Types

type, public ::  ocean_obc_t

Components

Type Visibility Attributes Name Initial
logical, public :: clamp_tracers = .true.

Apply the FRS clamp to T, S (not just SSH/UV).

real(kind=wp), public :: dt_ingest = 3600.0_wp

Cadence at which the next parent slab is read (s).

logical, public :: enabled = .false.

Master OBC switch. Falls back to coastal BCs if false.

logical, public :: is_init = .false.

True between init and destroy (tracks GPU device attachment).

integer, public :: nrelax = 8

Width (in cells) of the Flow-Relaxation zone.

real(kind=wp), public, allocatable :: parent_S_east(:,:,:)
real(kind=wp), public, allocatable :: parent_S_north(:,:,:)
real(kind=wp), public, allocatable :: parent_S_south(:,:,:)
real(kind=wp), public, allocatable :: parent_S_west(:,:,:)
real(kind=wp), public, allocatable :: parent_T_east(:,:,:)
real(kind=wp), public, allocatable :: parent_T_north(:,:,:)
real(kind=wp), public, allocatable :: parent_T_south(:,:,:)
real(kind=wp), public, allocatable :: parent_T_west(:,:,:)
real(kind=wp), public, allocatable :: parent_eta_east(:,:)
real(kind=wp), public, allocatable :: parent_eta_north(:,:)
real(kind=wp), public, allocatable :: parent_eta_south(:,:)
real(kind=wp), public, allocatable :: parent_eta_west(:,:)
real(kind=wp), public, allocatable :: parent_u_east(:,:,:)
real(kind=wp), public, allocatable :: parent_u_west(:,:,:)
real(kind=wp), public, allocatable :: parent_v_north(:,:,:)
real(kind=wp), public, allocatable :: parent_v_south(:,:,:)
real(kind=wp), public :: relax_inner = 0.0_wp

Relaxation timescale (1/s) at the interior edge of FRS.

real(kind=wp), public :: relax_outer = 1.0_wp/600.0_wp

Relaxation timescale at the outer (boundary) edge.

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

Type-Bound Procedures

procedure, public, non_overridable :: bytes => ocean_obc_bytes
procedure, public, non_overridable :: destroy => ocean_obc_destroy
procedure, public, non_overridable :: init => ocean_obc_init

Functions

private pure function ocean_obc_bytes(this) result(nbytes)

Counted allocatable footprint of the open boundary condition slot (0 when unallocated).

Arguments

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

Return Value integer(kind=int64)


Subroutines

private subroutine ocean_obc_destroy(this)

Arguments

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

private subroutine ocean_obc_init(this, grid)

Arguments

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