rdb_ocean_ghost_poison Module


Uses

  • module~~rdb_ocean_ghost_poison~~UsesGraph module~rdb_ocean_ghost_poison rdb_ocean_ghost_poison ieee_arithmetic ieee_arithmetic module~rdb_ocean_ghost_poison->ieee_arithmetic module~rdb_barotropic_workstate rdb_barotropic_workstate module~rdb_ocean_ghost_poison->module~rdb_barotropic_workstate module~rdb_constants rdb_constants module~rdb_ocean_ghost_poison->module~rdb_constants module~rdb_grid rdb_grid module~rdb_ocean_ghost_poison->module~rdb_grid module~rdb_multilayer_state rdb_multilayer_state module~rdb_ocean_ghost_poison->module~rdb_multilayer_state module~rdb_ocean_surface_stress rdb_ocean_surface_stress module~rdb_ocean_ghost_poison->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_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_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_scratch_3d rdb_scratch_3d module~rdb_ocean_surface_stress->module~rdb_scratch_3d module~rdb_efp->ieee_arithmetic module~rdb_efp->iso_fortran_env 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_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

Used by

  • module~~rdb_ocean_ghost_poison~~UsedByGraph module~rdb_ocean_ghost_poison rdb_ocean_ghost_poison module~rdb_ocean_dyn rdb_ocean_dyn module~rdb_ocean_dyn->module~rdb_ocean_ghost_poison 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

Subroutines

public subroutine ocean_poison_ghost_bands(grid, ms, bt_work, ss, poison_w, poison_e, poison_s, poison_n)

Sentinel-NaN the exchange-covered ghost bands of all multilayer prognostic fields and the BT workstate fields. Called at the TOP of each outer step (before any exchange or kernel) so that any kernel consuming an unexchanged ghost produces a loud NaN at the offending step.

Read more…

Arguments

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

Horizontal grid (carries nx_total, ny_total, nx_phys, ny_phys, nghost).

type(multilayer_state_t), intent(inout) :: ms

Multilayer C-grid state whose exchange-covered ghost bands are poisoned.

type(barotropic_workstate_t), intent(inout) :: bt_work

BT workstate whose exchange-covered ghost bands are poisoned.

type(ocean_surface_stress_t), intent(inout) :: ss

Surface-stress slot. Its tau_x/tau_y bands became exchange-owned with the forcing-halo fix, so they are poisoned here too — see the block at the end of the body.

logical, intent(in) :: poison_w

Poison west ghost band. .true. iff the west edge is exchange-owned (MPI seam or periodic-x).

logical, intent(in) :: poison_e

Poison east ghost band. .true. iff the east edge is exchange-owned.

logical, intent(in) :: poison_s

Poison south ghost band. .true. iff the south edge is exchange-owned.

logical, intent(in) :: poison_n

Poison north ghost band. .true. iff the north edge is exchange-owned.

private subroutine poison_centre_2d(fld, nxl, nyl, ng, qnan, pw, pe, ps, pn)

Poison centre-type 2D ghost bands.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(inout) :: fld(nxl+2*ng,nyl+2*ng)
integer, intent(in) :: nxl
integer, intent(in) :: nyl
integer, intent(in) :: ng
real(kind=wp), intent(in) :: qnan
logical, intent(in) :: pw
logical, intent(in) :: pe
logical, intent(in) :: ps
logical, intent(in) :: pn

private subroutine poison_centre_3d(fld, nxl, nyl, ng, nz, qnan, pw, pe, ps, pn)

Poison centre-type 3D ghost bands.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(inout) :: fld(nxl+2*ng,nyl+2*ng,nz)
integer, intent(in) :: nxl
integer, intent(in) :: nyl
integer, intent(in) :: ng
integer, intent(in) :: nz
real(kind=wp), intent(in) :: qnan
logical, intent(in) :: pw
logical, intent(in) :: pe
logical, intent(in) :: ps
logical, intent(in) :: pn

private subroutine poison_face_x_2d(fld, nxl, nyl, ng, qnan, pw, pe, ps, pn)

Poison x-face 2D ghost bands. fld has shape (nx_total+1, ny_total) = (nxl+2ng+1, nyl+2ng). NEVER poison i = ng+1 (west seam face) or i = ng+nxl+1 (east seam face): these carry ownership/wrap-direction asymmetries that make it unsafe to overwrite them. West ghost faces: i = 1..ng. East ghost faces: i = ng+nxl+2..nx_face. Y-bands centre-type.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(inout) :: fld(nxl+2*ng+1,nyl+2*ng)
integer, intent(in) :: nxl
integer, intent(in) :: nyl
integer, intent(in) :: ng
real(kind=wp), intent(in) :: qnan
logical, intent(in) :: pw
logical, intent(in) :: pe
logical, intent(in) :: ps
logical, intent(in) :: pn

private subroutine poison_face_x_3d(fld, nxl, nyl, ng, nz, qnan, pw, pe, ps, pn)

Poison x-face 3D ghost bands. Seam-face exclusion: see poison_face_x_2d.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(inout) :: fld(nxl+2*ng+1,nyl+2*ng,nz)
integer, intent(in) :: nxl
integer, intent(in) :: nyl
integer, intent(in) :: ng
integer, intent(in) :: nz
real(kind=wp), intent(in) :: qnan
logical, intent(in) :: pw
logical, intent(in) :: pe
logical, intent(in) :: ps
logical, intent(in) :: pn

private subroutine poison_face_y_2d(fld, nxl, nyl, ng, qnan, pw, pe, ps, pn)

Poison y-face 2D ghost bands. fld has shape (nx_total, ny_total+1) = (nxl+2ng, nyl+2ng+1). NEVER poison j = ng+1 (south seam face) or j = ng+nyl+1 (north seam face). South ghost faces: j = 1..ng. North ghost faces: j = ng+nyl+2..ny_face. X-bands are centre-type: i = 1..ng and i = ng+nxl+1..nx_total.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(inout) :: fld(nxl+2*ng,nyl+2*ng+1)
integer, intent(in) :: nxl
integer, intent(in) :: nyl
integer, intent(in) :: ng
real(kind=wp), intent(in) :: qnan
logical, intent(in) :: pw
logical, intent(in) :: pe
logical, intent(in) :: ps
logical, intent(in) :: pn

private subroutine poison_face_y_3d(fld, nxl, nyl, ng, nz, qnan, pw, pe, ps, pn)

Poison y-face 3D ghost bands. Seam-face exclusion: see poison_face_y_2d.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(inout) :: fld(nxl+2*ng,nyl+2*ng+1,nz)
integer, intent(in) :: nxl
integer, intent(in) :: nyl
integer, intent(in) :: ng
integer, intent(in) :: nz
real(kind=wp), intent(in) :: qnan
logical, intent(in) :: pw
logical, intent(in) :: pe
logical, intent(in) :: ps
logical, intent(in) :: pn