`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`

— Method`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_regions`

— Method`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_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`

— Method`shift(I::CartesianIndex, axis::Int, n::Int)`

Shift a single `CartesianIndex`

by `n`

on a given `axis`

`CartesianDomains.shift`

— Method`shift(domain::CartesianIndices, axis::Int, n::Int)`

Shift a `CartesianIndices`

domain by `n`

on a given `axis`

`CartesianDomains.tile`

— Method`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_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)`

.