Mercurial > repos > public > sbplib_julia
diff src/SbpOperators/volumeops/derivatives/second_derivative.jl @ 2080:0f949681d3d3 refactor/sbp_operators/direction_check tip
Check that direction of first/second derivative operators is within the dimension of the grid. Add 1D functions for first/second derivative operators that take a direction.
| author | Vidar Stiernström <vidar.stiernstrom@gmail.com> |
|---|---|
| date | Fri, 20 Feb 2026 12:01:05 +0100 |
| parents | 08f06bfacd5c |
| children |
line wrap: on
line diff
--- a/src/SbpOperators/volumeops/derivatives/second_derivative.jl Wed Feb 18 21:33:00 2026 +0100 +++ b/src/SbpOperators/volumeops/derivatives/second_derivative.jl Fri Feb 20 12:01:05 2026 +0100 @@ -1,5 +1,6 @@ """ - second_derivative(g::EquidistantGrid, stencil_set, direction) +second_derivative(g::TensorGrid, stencil_set, direction) +second_derivative(g::EquidistantGrid, stencil_set, direction) Creates the second derivative operator `D2` as a `LazyTensor` @@ -9,10 +10,17 @@ See also: [`VolumeOperator`](@ref), [`LazyTensors.inflate`](@ref). """ function second_derivative(g::TensorGrid, stencil_set, direction) + if direction ā Interval(0, ndims(g)) + throw(DomainError(direction, "Direction must be inside [0, $(ndims(g))].")) + end Dā = second_derivative(g.grids[direction], stencil_set) return LazyTensors.inflate(Dā, size(g), direction) end +function second_derivative(g::EquidistantGrid, stencil_set::StencilSet, direction) + return second_derivative(TensorGrid(g), stencil_set, direction) +end + """ second_derivative(g::EquidistantGrid, stencil_set::::StencilSet)
