rdb_ocean_diag_mask Module


Uses

  • module~~rdb_ocean_diag_mask~~UsesGraph module~rdb_ocean_diag_mask rdb_ocean_diag_mask iso_fortran_env iso_fortran_env module~rdb_ocean_diag_mask->iso_fortran_env module~rdb_constants rdb_constants module~rdb_ocean_diag_mask->module~rdb_constants module~rdb_grid rdb_grid module~rdb_ocean_diag_mask->module~rdb_grid module~rdb_mem_report rdb_mem_report module~rdb_ocean_diag_mask->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_diag_mask~~UsedByGraph module~rdb_ocean_diag_mask rdb_ocean_diag_mask module~rdb_ocean_budgets rdb_ocean_budgets module~rdb_ocean_budgets->module~rdb_ocean_diag_mask module~rdb_ocean_diag rdb_ocean_diag module~rdb_ocean_diag->module~rdb_ocean_diag_mask module~rdb_ocean_diag_derived rdb_ocean_diag_derived module~rdb_ocean_diag_derived->module~rdb_ocean_diag module~rdb_ocean_diag_fills rdb_ocean_diag_fills module~rdb_ocean_diag_derived->module~rdb_ocean_diag_fills module~rdb_ocean_state rdb_ocean_state module~rdb_ocean_diag_derived->module~rdb_ocean_state module~rdb_ocean_diag_fills->module~rdb_ocean_diag module~rdb_ocean_diag_fills->module~rdb_ocean_state module~rdb_ocean_diag_netcdf rdb_ocean_diag_netcdf module~rdb_ocean_diag_netcdf->module~rdb_ocean_diag module~rdb_ocean_engine rdb_ocean_engine module~rdb_ocean_engine->module~rdb_ocean_diag module~rdb_ocean_engine->module~rdb_ocean_diag_derived module~rdb_ocean_engine->module~rdb_ocean_diag_fills module~rdb_ocean_engine->module~rdb_ocean_diag_netcdf module~rdb_ocean_engine->module~rdb_ocean_state module~rdb_ocean_setup rdb_ocean_setup module~rdb_ocean_engine->module~rdb_ocean_setup module~rdb_ocean_state->module~rdb_ocean_diag module~rdb_driver rdb_driver module~rdb_driver->module~rdb_ocean_engine module~rdb_driver->module~rdb_ocean_state module~rdb_handle rdb_handle module~rdb_handle->module~rdb_ocean_engine module~rdb_handle->module~rdb_ocean_state module~rdb_ocean_api rdb_ocean_api 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 module~rdb_ocean_api->module~rdb_handle module~rdb_ocean_setup->module~rdb_ocean_state

Derived Types

type, public ::  diag_mask_t

Components

Type Visibility Attributes Name Initial
character(len=64), public :: name = ""

Human-readable identifier (“global”, “tasman_box”, …).

integer, public :: nx = 0

Mask shape — matches the grid’s total extent.

integer, public :: ny = 0

Mask shape — matches the grid’s total extent.

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

Cached nominal Σ weight · dx · dy.

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

Per-cell weight in [0, 1]. 0 = excluded, 1 = full, fractional = partial coverage.

Type-Bound Procedures

procedure, public, non_overridable :: bytes => diag_mask_bytes

Functions

public function diag_mask_bbox(grid, i0, i1, j0, j1, name) result(m)

Index-based bounding box (test-only). Weight = 1 inside the closed interval [i0,i1] × [j0,j1], 0 outside. Indices 1-based and inclusive; ghost cells count if inside the box.

Arguments

Type IntentOptional Attributes Name
type(hgrid_t), intent(in) :: grid
integer, intent(in) :: i0
integer, intent(in) :: i1
integer, intent(in) :: j0
integer, intent(in) :: j1
character(len=*), intent(in), optional :: name

Return Value type(diag_mask_t)

public function diag_mask_global(grid) result(m)

Whole-grid mask — all weights = 1. Equivalent to “no mask”; exists for explicit registration and global-integral tests.

Arguments

Type IntentOptional Attributes Name
type(hgrid_t), intent(in) :: grid

Return Value type(diag_mask_t)

public function diag_mask_h_section(grid, j_row, i0, i1, name) result(m)

Horizontal section (test-only): one cell row at j = j_row, spanning i ∈ [i0,i1]. Integrates transport across a constant-y line (v_face_y_layer at j_row = meridional throughflow).

Arguments

Type IntentOptional Attributes Name
type(hgrid_t), intent(in) :: grid
integer, intent(in) :: j_row
integer, intent(in) :: i0
integer, intent(in) :: i1
character(len=*), intent(in), optional :: name

Return Value type(diag_mask_t)

public function diag_mask_v_section(grid, i_col, j0, j1, name) result(m)

Vertical section (test-only): one cell column at i = i_col, spanning j ∈ [j0,j1]. Mirror of h_section for zonal throughflow.

Arguments

Type IntentOptional Attributes Name
type(hgrid_t), intent(in) :: grid
integer, intent(in) :: i_col
integer, intent(in) :: j0
integer, intent(in) :: j1
character(len=*), intent(in), optional :: name

Return Value type(diag_mask_t)

private pure function diag_mask_bytes(this) result(nbytes)

Counted allocatable footprint of one region mask (0 when unallocated). weight is device-mapped by ocean_diag_enter_data_impl, so it must carry a term — see diag_var_bytes, which folds this in per masked diagnostic.

Arguments

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

Return Value integer(kind=int64)


Subroutines

public subroutine diag_mask_destroy(this)

Arguments

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

private subroutine recompute_total_area(this, dx, dy)

Arguments

Type IntentOptional Attributes Name
type(diag_mask_t), intent(inout) :: this
real(kind=wp), intent(in) :: dx
real(kind=wp), intent(in) :: dy