rdb_ocean_halo_state Module


Uses

  • module~~rdb_ocean_halo_state~~UsesGraph module~rdb_ocean_halo_state rdb_ocean_halo_state module~rdb_constants rdb_constants module~rdb_ocean_halo_state->module~rdb_constants module~rdb_grid rdb_grid module~rdb_ocean_halo_state->module~rdb_grid module~rdb_ice_state rdb_ice_state module~rdb_ocean_halo_state->module~rdb_ice_state module~rdb_multilayer_state rdb_multilayer_state module~rdb_ocean_halo_state->module~rdb_multilayer_state module~rdb_ocean_boundary_types rdb_ocean_boundary_types module~rdb_ocean_halo_state->module~rdb_ocean_boundary_types module~rdb_ocean_fold_apply rdb_ocean_fold_apply module~rdb_ocean_halo_state->module~rdb_ocean_fold_apply module~rdb_ocean_halo rdb_ocean_halo module~rdb_ocean_halo_state->module~rdb_ocean_halo module~rdb_ocean_halo_counters rdb_ocean_halo_counters module~rdb_ocean_halo_state->module~rdb_ocean_halo_counters module~rdb_ocean_periodic rdb_ocean_periodic module~rdb_ocean_halo_state->module~rdb_ocean_periodic module~rdb_ocean_surface_stress rdb_ocean_surface_stress module~rdb_ocean_halo_state->module~rdb_ocean_surface_stress module~rdb_profiler rdb_profiler module~rdb_ocean_halo_state->module~rdb_profiler pic_types pic_types module~rdb_constants->pic_types module~rdb_grid->module~rdb_constants module~rdb_ice_state->module~rdb_constants module~rdb_ice_state->module~rdb_grid iso_fortran_env iso_fortran_env module~rdb_ice_state->iso_fortran_env module~rdb_ice_column rdb_ice_column module~rdb_ice_state->module~rdb_ice_column module~rdb_ice_enthalpy rdb_ice_enthalpy module~rdb_ice_state->module~rdb_ice_enthalpy module~rdb_mem_report rdb_mem_report module~rdb_ice_state->module~rdb_mem_report 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_boundary_types->module~rdb_constants module~rdb_ocean_boundary_types->module~rdb_grid module~rdb_ocean_boundary_types->iso_fortran_env module~rdb_ocean_boundary_types->module~rdb_mem_report module~rdb_ocean_status rdb_ocean_status module~rdb_ocean_boundary_types->module~rdb_ocean_status module~rdb_ocean_tide_astro rdb_ocean_tide_astro module~rdb_ocean_boundary_types->module~rdb_ocean_tide_astro pic_ascii pic_ascii module~rdb_ocean_boundary_types->pic_ascii module~rdb_ocean_boundary_types->pic_logger module~rdb_ocean_fold_apply->module~rdb_constants module~rdb_ocean_fold_apply->module~rdb_grid module~rdb_ocean_fold_apply->module~rdb_multilayer_state module~rdb_ocean_fold_apply->module~rdb_ocean_boundary_types module~rdb_ocean_fold rdb_ocean_fold module~rdb_ocean_fold_apply->module~rdb_ocean_fold module~rdb_ocean_fold_exchange rdb_ocean_fold_exchange module~rdb_ocean_fold_apply->module~rdb_ocean_fold_exchange module~rdb_ocean_halo->module~rdb_constants module~rdb_ocean_halo->module~rdb_ocean_halo_counters module~rdb_ocean_halo->module~rdb_ocean_periodic module~rdb_comm_env rdb_comm_env module~rdb_ocean_halo->module~rdb_comm_env module~rdb_decomp rdb_decomp module~rdb_ocean_halo->module~rdb_decomp module~rdb_ocean_halo->module~rdb_error_ring module~rdb_ocean_halo->module~rdb_ocean_status module~rdb_ocean_halo->pic_logger pic_mpi_lib pic_mpi_lib module~rdb_ocean_halo->pic_mpi_lib pic_strings pic_strings module~rdb_ocean_halo->pic_strings module~rdb_ocean_halo_counters->iso_fortran_env module~rdb_ocean_halo_counters->pic_strings module~rdb_ocean_periodic->module~rdb_constants module~rdb_ocean_periodic->module~rdb_grid module~rdb_ocean_periodic->module~rdb_multilayer_state module~rdb_ocean_periodic->module~rdb_ocean_boundary_types 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_profiler->iso_fortran_env module~rdb_profiler->pic_logger module~rdb_comm_env->module~rdb_constants module~rdb_comm_env->iso_fortran_env module~rdb_comm_env->pic_mpi_lib module~rdb_config rdb_config module~rdb_decomp->module~rdb_config module~rdb_efp->iso_fortran_env ieee_arithmetic ieee_arithmetic module~rdb_efp->ieee_arithmetic module~rdb_error_ring->pic_logger module~rdb_ice_column->module~rdb_constants module~rdb_ice_column->module~rdb_ice_enthalpy module~rdb_ice_mass rdb_ice_mass module~rdb_ice_column->module~rdb_ice_mass module~rdb_ice_optics rdb_ice_optics module~rdb_ice_column->module~rdb_ice_optics module~rdb_ice_enthalpy->module~rdb_constants module~rdb_mem_report->module~rdb_constants module~rdb_mem_report->iso_fortran_env module~rdb_mem_report->pic_logger module~rdb_mem_report->pic_strings module~rdb_ocean_fold->module~rdb_constants module~rdb_ocean_fold_exchange->module~rdb_constants module~rdb_ocean_fold_exchange->module~rdb_comm_env module~rdb_ocean_fold_exchange->module~rdb_decomp module~rdb_ocean_fold_exchange->module~rdb_error_ring module~rdb_ocean_fold_exchange->module~rdb_ocean_fold module~rdb_ocean_fold_exchange->module~rdb_ocean_status module~rdb_ocean_fold_exchange->pic_logger module~rdb_ocean_fold_exchange->pic_mpi_lib module~rdb_ocean_fold_exchange->pic_strings module~rdb_ocean_fold_plan rdb_ocean_fold_plan module~rdb_ocean_fold_exchange->module~rdb_ocean_fold_plan module~rdb_ocean_tide_astro->module~rdb_constants module~rdb_ocean_tide_astro->iso_fortran_env 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_config->module~rdb_constants module~rdb_config->module~rdb_error_ring module~rdb_config->module~rdb_ice_enthalpy module~rdb_config->module~rdb_ocean_status module~rdb_config->pic_ascii module~rdb_config->pic_logger module~rdb_config->pic_strings module~rdb_ice_init rdb_ice_init module~rdb_config->module~rdb_ice_init module~rdb_nml_schema rdb_nml_schema module~rdb_config->module~rdb_nml_schema module~rdb_ice_mass->module~rdb_constants module~rdb_ice_mass->module~rdb_ice_enthalpy module~rdb_ice_optics->module~rdb_constants module~rdb_ice_optics->module~rdb_ice_enthalpy module~rdb_ice_init->module~rdb_constants module~rdb_ice_init->module~rdb_grid module~rdb_ice_init->module~rdb_ice_state module~rdb_ice_init->module~rdb_multilayer_state module~rdb_ice_init->module~rdb_ice_column module~rdb_ice_init->module~rdb_ice_enthalpy module~rdb_ocean_metrics rdb_ocean_metrics module~rdb_ice_init->module~rdb_ocean_metrics module~rdb_nml_schema->module~rdb_constants module~rdb_nml_schema->module~rdb_error_ring module~rdb_nml_schema->pic_logger

Used by

  • module~~rdb_ocean_halo_state~~UsedByGraph module~rdb_ocean_halo_state rdb_ocean_halo_state module~rdb_ice_ocean_coupler rdb_ice_ocean_coupler module~rdb_ice_ocean_coupler->module~rdb_ocean_halo_state module~rdb_ice_transport rdb_ice_transport module~rdb_ice_transport->module~rdb_ocean_halo_state module~rdb_ocean_data_forcing rdb_ocean_data_forcing module~rdb_ocean_data_forcing->module~rdb_ocean_halo_state module~rdb_ocean_dyn rdb_ocean_dyn module~rdb_ocean_dyn->module~rdb_ocean_halo_state module~rdb_ocean_engine rdb_ocean_engine module~rdb_ocean_engine->module~rdb_ocean_halo_state module~rdb_ocean_engine->module~rdb_ice_ocean_coupler module~rdb_ocean_engine->module~rdb_ice_transport module~rdb_ocean_engine->module~rdb_ocean_data_forcing 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_state rdb_ocean_state module~rdb_ocean_engine->module~rdb_ocean_state module~rdb_ocean_diag_derived rdb_ocean_diag_derived module~rdb_ocean_engine->module~rdb_ocean_diag_derived module~rdb_ocean_diag_fills rdb_ocean_diag_fills module~rdb_ocean_engine->module~rdb_ocean_diag_fills module~rdb_ocean_setup->module~rdb_ocean_halo_state module~rdb_ocean_setup->module~rdb_ocean_dyn module~rdb_ocean_setup->module~rdb_ocean_state module~rdb_driver rdb_driver module~rdb_driver->module~rdb_ocean_dyn 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_dyn module~rdb_ocean_api->module~rdb_ocean_engine 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_state->module~rdb_ocean_data_forcing module~rdb_ocean_state->module~rdb_ocean_dyn 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_halo_exchange_ice_fluxes(ice, grid, bc, device_resident)

Seam ghosts of the three per-cell ice->ocean flux diagnostics the couplers hand to the ocean — salt_flux_diag, heat_flux_diag, sw_thru_diag — one two-pass centre exchange each.

Read more…

Arguments

Type IntentOptional Attributes Name
type(ocean_sea_ice_t), intent(inout) :: ice

Live sea-ice slot (ice%is_init); a no-op otherwise.

type(hgrid_t), intent(in) :: grid
type(ocean_bc_state_t), intent(in) :: bc

Supplies north_fold + the grid metrics the fold kernels need.

logical, intent(in), optional :: device_resident

Forwarded to the halo primitives.

public subroutine ocean_halo_exchange_ice_state(ice, grid, bc, device_resident)

Make the sea-ice CATEGORY state valid in every ghost cell (X1 of the sea-ice MPI plan): part_size, m_ice, m_snow, enth_ice, sal_ice, enth_snow, one two-pass centre exchange each, all categories (and ice layers) in one message per direction, THEN the tripolar north fold of each (added with the fold-seam fix below).

Read more…

Arguments

Type IntentOptional Attributes Name
type(ocean_sea_ice_t), intent(inout) :: ice

Live sea-ice slot (ice%is_init); a no-op otherwise.

type(hgrid_t), intent(in) :: grid
type(ocean_bc_state_t), intent(in) :: bc

Supplies north_fold + the grid metrics the fold kernels need.

logical, intent(in), optional :: device_resident

Forwarded to the halo primitives; .false. for the host-side configure-time call.

public subroutine ocean_halo_exchange_ice_transport(ice, grid, bc, device_resident)

X4 of the sea-ice MPI plan: the seam ghosts every advective substep of ice_transport_step reads — the cell-averaged category masses mca_ice/mca_snow (the PPM donors, 5-point stencil) and the riding intensive tracers m_ice, enth_ice, sal_ice, enth_snow (the PCM donors). mca_* ghosts are zeroed by the IST->CAS conversion and the ride/mass updates leave the ghost band one substep old, so this runs at the top of EVERY substep. On one rank with a periodic axis the primitives wrap. Also carries the tripolar north fold of the same six fields (plain-copy scalar contract) — without it the fold-seam row’s advective stencil read a stale/unrelated mirror cell every substep, which is how ice piled up without bound on that row.

Arguments

Type IntentOptional Attributes Name
type(ocean_sea_ice_t), intent(inout) :: ice

Live sea-ice slot (ice%is_init); a no-op otherwise.

type(hgrid_t), intent(in) :: grid
type(ocean_bc_state_t), intent(in) :: bc

Supplies north_fold + the grid metrics the fold kernels need.

logical, intent(in), optional :: device_resident

Forwarded to the halo primitives.

public subroutine ocean_halo_exchange_ml_state(ms, device_resident)

Exchange ghost cells for the four multilayer prognostic field kinds via the O1 halo primitives:

Read more…

Arguments

Type IntentOptional Attributes Name
type(multilayer_state_t), intent(inout) :: ms

Multilayer C-grid state whose ghost bands are to be filled.

logical, intent(in), optional :: device_resident

Forwarded to every primitive call. Pass .false. for init-time host-side exchanges that occur before ocean_state_enter_data. Default (.true.) is the normal device-resident path.

public subroutine ocean_seam_refresh_surface_stress(ss, grid, bc, device_resident)

Make the surface-stress pair valid in every ghost cell, then re-derive stress_mag from it.

Read more…

Arguments

Type IntentOptional Attributes Name
type(ocean_surface_stress_t), intent(inout) :: ss

Stress slot whose tau_x/tau_y ghosts are to be filled and whose stress_mag is then refreshed.

type(hgrid_t), intent(in) :: grid
type(ocean_bc_state_t), intent(in) :: bc

Supplies periodic_x/periodic_y/north_fold.

logical, intent(in), optional :: device_resident

Forwarded to the halo primitives; .false. for host-side configure-time calls.

private subroutine ice_halo_centre_flat(fld, nxt, nyt, nz, device_resident)

Explicit-shape seam: a contiguous ice array of any rank (0:ncat third bound, rank-4 category x layer) is handed in by sequence association and exchanged as one (nxt, nyt, nz) centre field. The generic ocean_halo_centre resolves on the DUMMY’s rank, so the rank-4 actuals cannot call it directly.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(inout) :: fld(nxt,nyt,nz)
integer, intent(in) :: nxt
integer, intent(in) :: nyt
integer, intent(in) :: nz
logical, intent(in), optional :: device_resident