Skip to content

Commit

Permalink
dsl: Rework SubDimension types for better inheritance
Browse files Browse the repository at this point in the history
  • Loading branch information
EdCaunt committed Oct 18, 2024
1 parent 1360b6e commit 821f336
Showing 1 changed file with 15 additions and 16 deletions.
31 changes: 15 additions & 16 deletions devito/types/dimension.py
Original file line number Diff line number Diff line change
Expand Up @@ -639,16 +639,8 @@ def __init_finalize__(self, name, parent, thickness, **kwargs):

@cached_property
def _interval(self):
if self.thickness.right.value is None: # Left SubDimension
left = self.parent.symbolic_min
right = self.parent.symbolic_min + self.ltkn - 1
elif self.thickness.left.value is None: # Right SubDimension
left = self.parent.symbolic_max - self.rtkn + 1
right = self.parent.symbolic_max
else: # Middle SubDimension
left = self.parent.symbolic_min + self.ltkn
right = self.parent.symbolic_max - self.rtkn

left = self.parent.symbolic_min + self.ltkn
right = self.parent.symbolic_max - self.rtkn
return sympy.Interval(left, right)

@memoized_meth
Expand Down Expand Up @@ -771,6 +763,19 @@ def _symbolic_thickness(self, thickness=None):
return Thickness(*[SubDimensionThickness(name=n, side=s, value=t, **kwargs)
for n, s, t in zip(names, (LEFT, RIGHT), thickness)])

@cached_property
def _interval(self):
if self.thickness.right.value is None: # Left SubDimension
left = self.parent.symbolic_min
right = self.parent.symbolic_min + self.ltkn - 1
elif self.thickness.left.value is None: # Right SubDimension
left = self.parent.symbolic_max - self.rtkn + 1
right = self.parent.symbolic_max
else: # Middle SubDimension
return super()._interval

return sympy.Interval(left, right)

@property
def local(self):
return self._local
Expand Down Expand Up @@ -827,12 +832,6 @@ def __init_finalize__(self, name, parent, thickness, functions=None,
self.bounds_indices = bounds_indices
self.implicit_dimension = implicit_dimension

@cached_property
def _interval(self):
left = self.parent.symbolic_min + self.ltkn
right = self.parent.symbolic_max - self.rtkn
return sympy.Interval(left, right)

@cached_property
def bound_symbols(self):
return self.parent.bound_symbols
Expand Down

0 comments on commit 821f336

Please sign in to comment.