view src/SbpOperators/boundaryops/normal_derivative.jl @ 877:dd2ab001a7b6 feature/equidistant_grid/refine

Implement refine function, move exports to the top of the file, change location of constuctors. The constructors were changed have only one inner constructor and simpler outer constructors.
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 14 Feb 2022 09:39:58 +0100
parents 5eb1edef8a7b
children 86776d06b883
line wrap: on
line source

"""
    normal_derivative(grid::EquidistantGrid, closure_stencil::Stencil, boundary::CartesianBoundary)
    normal_derivative(grid::EquidistantGrid{1}, closure_stencil::Stencil, region::Region)

Creates the normal derivative boundary operator `d` as a `TensorMapping`

`d` is the normal derivative of a grid function at the boundary specified by `boundary` or `region` using some `closure_stencil`.
`d'` is the prolongation of the normal derivative of a grid function to the whole grid using the same `closure_stencil`.
On a one-dimensional `grid`, `d` is a `BoundaryOperator`. On a multi-dimensional `grid`, `d` is the inflation of
a `BoundaryOperator`. Also see the documentation of `SbpOperators.boundary_operator(...)` for more details.
"""
function normal_derivative(grid::EquidistantGrid, closure_stencil, boundary::CartesianBoundary)
    direction = dim(boundary)
    h_inv = inverse_spacing(grid)[direction]
    return SbpOperators.boundary_operator(grid, scale(closure_stencil,h_inv), boundary)
end
normal_derivative(grid::EquidistantGrid{1}, closure_stencil, region::Region) = normal_derivative(grid, closure_stencil, CartesianBoundary{1,typeof(region)}())
export normal_derivative