Set the physical-domain-edge flags from a decomposition descriptor.
Called once by the driver after configure_ocean_bc so kernels can
gate wall / BC / periodic closures on physical edges (a subdomain
seam is never a wall), and re-derives the rank-local north_fold
(the fold is applied only by the rank that owns the north edge).
Default .true. keeps single-rank bit-identity.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(ocean_bc_state_t), | intent(inout) | :: | this | |||
| logical, | intent(in) | :: | has_west |
True when the west edge is a physical domain edge, false at an MPI seam. |
||
| logical, | intent(in) | :: | has_east |
True when the east edge is a physical domain edge, false at an MPI seam. |
||
| logical, | intent(in) | :: | has_south |
True when the south edge is a physical domain edge, false at an MPI seam. |
||
| logical, | intent(in) | :: | has_north |
True when the north edge is a physical domain edge, false at an MPI seam. |
pure subroutine ocean_bc_state_set_edges(this, has_west, has_east, has_south, has_north) !! Set the physical-domain-edge flags from a decomposition descriptor. !! Called once by the driver after configure_ocean_bc so kernels can !! gate wall / BC / periodic closures on physical edges (a subdomain !! seam is never a wall), and re-derives the rank-local `north_fold` !! (the fold is applied only by the rank that owns the north edge). !! Default .true. keeps single-rank bit-identity. type(ocean_bc_state_t), intent(inout) :: this logical, intent(in) :: has_west !! True when the west edge is a physical domain edge, false at an MPI seam. logical, intent(in) :: has_east !! True when the east edge is a physical domain edge, false at an MPI seam. logical, intent(in) :: has_south !! True when the south edge is a physical domain edge, false at an MPI seam. logical, intent(in) :: has_north !! True when the north edge is a physical domain edge, false at an MPI seam. this%has_west = has_west this%has_east = has_east this%has_south = has_south this%has_north = has_north ! The tripolar fold is a north-EDGE operation: a rank whose north edge ! is an MPI seam must not fold (see `north_fold`). this%north_fold = (this%north%bc_type == OBC_TRIPOLAR_FOLD) .and. has_north end subroutine ocean_bc_state_set_edges