diff src/SbpOperators/volumeops/derivatives/second_derivative.jl @ 2096:5af7534e5b3c feature/sbp_operators/laplace_curvilinear tip

Merge default
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 02 Mar 2026 15:58:27 +0100
parents e21c295fb2da
children
line wrap: on
line diff
--- a/src/SbpOperators/volumeops/derivatives/second_derivative.jl	Wed Feb 25 14:33:42 2026 +0100
+++ b/src/SbpOperators/volumeops/derivatives/second_derivative.jl	Mon Mar 02 15:58:27 2026 +0100
@@ -1,16 +1,19 @@
 """
-    second_derivative(g::EquidistantGrid, stencil_set, direction)
+    second_derivative(g::TensorGrid, stencil_set, dim)
 
 Creates the second derivative operator `D2` as a `LazyTensor`
 
 `D2` approximates the second-derivative d²/dξ² on `g` along the coordinate
-dimension specified by `direction`.
+dimension specified by `dim`.
 
 See also: [`VolumeOperator`](@ref), [`LazyTensors.inflate`](@ref).
 """
-function second_derivative(g::TensorGrid, stencil_set, direction)
-    D₂ = second_derivative(g.grids[direction], stencil_set)
-    return LazyTensors.inflate(D₂, size(g), direction)
+function second_derivative(g::TensorGrid, stencil_set, dim)
+    if dim ∉ 1:ndims(g)
+        throw(DomainError(dim, "Derivative direction must be in 1:$(ndims(g))."))
+    end
+    D₂ = second_derivative(g.grids[dim], stencil_set)
+    return LazyTensors.inflate(D₂, size(g), dim)
 end
 
 """
@@ -25,6 +28,13 @@
     return second_derivative(g, inner_stencil, closure_stencils)
 end
 
+function second_derivative(g::EquidistantGrid, stencil_set::StencilSet, dim)
+    if dim != 1
+        throw(DomainError(dim, "Derivative direction must be 1."))
+    end
+    return second_derivative(g, stencil_set)
+end
+
 """
     second_derivative(g::EquidistantGrid, inner_stencil::Stencil, closure_stencils)