CartesianDomains.expand
— MethodExpand the CartesianIndices
by n
indices on axis
CartesianDomains.expand
— MethodExpand the CartesianIndices
by n
indices on all axes
CartesianDomains.expand_lower
— MethodExpand the CartesianIndices starting index by -n
on all axes
CartesianDomains.expand_lower
— MethodExpand the CartesianIndices starting index by -n
on all axes
CartesianDomains.expand_upper
— MethodExpand the CartesianIndices upper index by n
on axis
CartesianDomains.expand_upper
— MethodExpand the CartesianIndices ending index by n
on all axes
CartesianDomains.extract_from_lower
— MethodExtract a subdomain from the lower boundary of domain
along axis
with a width of n
(along axis
)
CartesianDomains.extract_from_upper
— MethodExtract a subdomain from the upper boundary of domain
along axis
with a width of n
(along axis
)
CartesianDomains.haloedge_regions
— Methodhaloedge_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_regions
— Methodhaloedge_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_indices
— MethodTake 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.shift
— Methodshift(I::CartesianIndex, axis::Int, n::Int)
Shift a single CartesianIndex
by n
on a given axis
CartesianDomains.shift
— Methodshift(domain::CartesianIndices, axis::Int, n::Int)
Shift a CartesianIndices
domain by n
on a given axis
CartesianDomains.tile
— Methodtile(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_indices
— MethodTake 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.δ
— MethodApply a delta function to the cartesian index on a specified axis. For example, δ(3, CartesianIndex(1,2,3))
will give CartesianIndex(0,0,1)
.