|
10 | 10 |
|
11 | 11 | from devito.types import Array, CompositeObject, Indexed, Symbol, LocalObject |
12 | 12 | from devito.types.basic import IndexedData |
13 | | -from devito.tools import CustomDtype, Pickable, frozendict |
| 13 | +from devito.tools import CustomDtype, Pickable, as_tuple, frozendict |
14 | 14 |
|
15 | 15 | __all__ = ['Timer', 'Pointer', 'VolatileInt', 'FIndexed', 'Wildcard', 'Fence', |
16 | 16 | 'Global', 'Hyperplane', 'Indirection', 'Temp', 'TempArray', 'Jump', |
@@ -235,12 +235,25 @@ class TempArray(Array): |
235 | 235 |
|
236 | 236 | is_autopaddable = True |
237 | 237 |
|
| 238 | + __rkwargs__ = (Array.__rkwargs__ + ('shift',)) |
| 239 | + |
| 240 | + def __init_finalize__(self, *args, shift=None, **kwargs): |
| 241 | + super().__init_finalize__(*args, **kwargs) |
| 242 | + |
| 243 | + # An integer for each Dimension representing the shift applied to the halo |
| 244 | + # for homogeneity reasons |
| 245 | + self._shift = as_tuple(shift) |
| 246 | + |
238 | 247 | def __padding_setup__(self, **kwargs): |
239 | 248 | padding = kwargs.pop('padding', None) |
240 | 249 | if padding is None: |
241 | 250 | padding = self.__padding_setup_smart__(**kwargs) |
242 | 251 | return super().__padding_setup__(padding=padding, **kwargs) |
243 | 252 |
|
| 253 | + @property |
| 254 | + def shift(self): |
| 255 | + return self._shift |
| 256 | + |
244 | 257 |
|
245 | 258 | class Fence: |
246 | 259 |
|
|
0 commit comments