changeset 930:ba5f4a0ec879 feature/variable_derivatives

Fix type stability for 2d operator
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 21 Feb 2022 12:57:58 +0100
parents e9dd43cbd127
children 720b1358e06d
files src/SbpOperators/volumeops/derivatives/second_derivative_variable.jl
diffstat 1 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/SbpOperators/volumeops/derivatives/second_derivative_variable.jl	Mon Feb 21 10:34:48 2022 +0100
+++ b/src/SbpOperators/volumeops/derivatives/second_derivative_variable.jl	Mon Feb 21 12:57:58 2022 +0100
@@ -112,9 +112,18 @@
     dir = derivative_direction(op)
 
     i = I[dir]
-    r = getregion(i, closure_size(op), op.size[dir])
 
     I = map(i->Index(i, Interior), I)
-    I = Base.setindex(I, Index(i, r), dir)
-    return LazyTensors.apply(op, v, I...)
+    if 0 < i <= closure_size(op)
+        I = Base.setindex(I, Index(i, Lower), dir)
+        return LazyTensors.apply(op, v, I...)
+    elseif closure_size(op) < i <= op.size[dir]-closure_size(op)
+        I = Base.setindex(I, Index(i, Interior), dir)
+        return LazyTensors.apply(op, v, I...)
+    elseif op.size[dir]-closure_size(op) < i <= op.size[dir]
+        I = Base.setindex(I, Index(i, Upper), dir)
+        return LazyTensors.apply(op, v, I...)
+    else
+        error("Bounds error") # TODO: Make this more standard
+    end
 end