CartesianDomains.haloedge_regionsMethod
haloedge_regions(domain::CartesianIndices{N}, axis::Int, nhalo::Int, nedge::Int) where {N}

Extract the halo regions along the edges of domain with a width of nhalo and corresponding edge regions of size nedge from the interior of the domain. This will provide an edge region with a size nedge elements along axis. As an example, say you have a halo region of 2 elements, but you only want the outermost edge that is adjacent to the halo region. Calling haloedge_regions(domain, 3, 2, 1) will give you a halo region 2 elements thick on the third axis, but the edge region will only be 1 element thick.

Example

julia> A = [i for i in 1:10];

julia> full = CartesianIndices(A) # this is the entire "domain"
CartesianIndices((10,))

julia> halo, edge = haloedge_regions(full, 1, 2, 1) # this uses a halo region of 2 and edge of 1
(
  halo = (lo = CartesianIndices((1:2,)), hi = CartesianIndices((9:10,))), 
  edge = (lo = CartesianIndices((3:3,)), hi = CartesianIndices((8:8,)))
)
CartesianDomains.haloedge_regionsMethod
haloedge_regions(domain::CartesianIndices{N}, axis::Int, nhalo::Int) where {N}

Extract the halo regions along the edges of domain with a width of nhalo and corresponding edge regions from the interior of the domain. This will create and edge region of the same dimension as the halo region.

Example

julia> A = [i for i in 1:10];

julia> full = CartesianIndices(A) # this is the entire "domain"
CartesianIndices((10,))

julia> halo, edge = haloedge_regions(full, 1, 2)
(
  halo = (lo = CartesianIndices((1:2,)), hi = CartesianIndices((9:10,))), 
  edge = (lo = CartesianIndices((3:4,)), hi = CartesianIndices((7:8,)))
)
CartesianDomains.lower_boundary_indicesMethod

Take a given CartesianIndices and extract only the lower boundary indices at an offset of n along a given axis.

Example

julia> domain = CartesianIndices((1:10, 4:8))
CartesianIndices((1:10, 4:8))

julia> lower_boundary_indices(domain, 2, 0) # select the first index on axis 2
CartesianIndices((1:10, 4:4))
CartesianDomains.shiftMethod
shift(I::CartesianIndex, axis::Int, n::Int)

Shift a single CartesianIndex by n on a given axis

CartesianDomains.shiftMethod
shift(domain::CartesianIndices, axis::Int, n::Int)

Shift a CartesianIndices domain by n on a given axis

CartesianDomains.tileMethod
tile(domain, fraction)

Split domain up by fraction into smaller chunks. This is designed to split a CartesianIndex into subdomains. fraction can be a single Int or a NTuple{Int}

CartesianDomains.upper_boundary_indicesMethod

Take a given CartesianIndices and extract only the upper boundary indices at an offset of n along a given axis.

Example

julia> domain = CartesianIndices((1:10, 4:8))
CartesianIndices((1:10, 4:8))

julia> upper_boundary_indices(domain, 2, 1)
CartesianIndices((1:10, 8:8))
CartesianDomains.δMethod

Apply a delta function to the cartesian index on a specified axis. For example, δ(3, CartesianIndex(1,2,3)) will give CartesianIndex(0,0,1).