changeset 165:9fc9167e9a4c boundary_conditions

Factor out function for geting the region of an index
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 21 May 2019 11:40:21 +0200
parents 6b633624703a
children 89b63bdf1ea8
files index.jl
diffstat 1 files changed, 13 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/index.jl	Tue May 21 10:46:39 2019 +0200
+++ b/index.jl	Tue May 21 11:40:21 2019 +0200
@@ -26,15 +26,7 @@
 Base.Int(I::Index) = I.i
 
 function Index(i::Integer, boundary_width::Integer, dim_size::Integer)
-    if 0 < i <= boundary_width
-        return Index{Lower}(i)
-    elseif boundary_width < i <= dim_size-boundary_width
-        return Index{Interior}(i)
-    elseif dim_size-boundary_width < i <= dim_size
-        return Index{Upper}(i)
-    else
-        error("Bounds error") # TODO: Make this more standard
-    end
+    return Index{getregion(i,boundary_width,dim_size)}(i)
 end
 
 IndexTuple(t::Vararg{Tuple{T, DataType}}) where T<:Integer = Index.(t)
@@ -52,6 +44,18 @@
     return CartesianIndices(regions)
 end
 
+function getregion(i::Integer, boundary_width::Integer, dim_size::Integer)
+	if 0 < i <= boundary_width
+        return Lower
+    elseif boundary_width < i <= dim_size-boundary_width
+        return Interior
+    elseif dim_size-boundary_width < i <= dim_size
+        return Upper
+    else
+        error("Bounds error") # TODO: Make this more standard
+    end
+end
+
 function getrange(gridsize::Integer, closuresize::Integer, region::DataType)
     if region == Lower
         r = 1:closuresize