diff src/SbpOperators/volumeops/derivatives/dissipation.jl @ 1034:ed19c549c506 feature/dissipation_operators

Implement undevided dissipation operators
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 22 Mar 2022 12:33:58 +0100
parents 0cb4c6b15d8e
children ceda69b8f27a
line wrap: on
line diff
--- a/src/SbpOperators/volumeops/derivatives/dissipation.jl	Tue Mar 22 11:27:45 2022 +0100
+++ b/src/SbpOperators/volumeops/derivatives/dissipation.jl	Tue Mar 22 12:33:58 2022 +0100
@@ -1,11 +1,26 @@
-function dissipation(g::EquidistantGrid, p, direction)
-    h_inv = inverse_spacing(g)[direction]
+function undevided_dissipation(g::EquidistantGrid, p, direction)
+    T = eltype(g)
+    interior_weights = T.(dissipation_interior_weights(p))
 
-    # D = volume_operator(g,CenteredStencil(1),(CenteredStencil(1)), )
-    return nothing, nothing
+    D  = stencil_operator_distinct_closures(
+        g,
+        dissipation_interior_stencil(interior_weights),
+        dissipation_lower_closure_stencils(interior_weights),
+        dissipation_upper_closure_stencils(interior_weights),
+        direction,
+    )
+    Dᵀ = stencil_operator_distinct_closures(
+        g,
+        dissipation_transpose_interior_stencil(interior_weights),
+        dissipation_transpose_lower_closure_stencils(interior_weights),
+        dissipation_transpose_upper_closure_stencils(interior_weights),
+        direction,
+    )
+
+    return D, Dᵀ
 end
 
-dissipation(g::EquidistantGrid{1}, p) = dissipation(g, p, 1)
+undevided_dissipation(g::EquidistantGrid{1}, p) = undevided_dissipation(g, p, 1)
 
 function dissipation_interior_weights(p)
    if p == 0