Skip to content

Commit 41db4f4

Browse files
committed
api: fix evaluation with different time dims
1 parent ca50531 commit 41db4f4

3 files changed

Lines changed: 16 additions & 2 deletions

File tree

devito/types/basic.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -762,7 +762,7 @@ def __new__(cls, *args, **kwargs):
762762
# Initialization. The following attributes must be available
763763
# when executing __init_finalize__
764764
newobj._name = name
765-
newobj._dimensions = dimensions
765+
newobj._dimensions = DimensionTuple(*dimensions, getters=dimensions)
766766
newobj._shape = cls.__shape_setup__(**kwargs)
767767
newobj._dtype = cls.__dtype_setup__(**kwargs)
768768

devito/types/dense.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1128,7 +1128,8 @@ def _eval_at(self, func):
11281128
for d in self.dimensions:
11291129
try:
11301130
if self.indices_ref[d] is not func.indices_ref[d]:
1131-
mapper[self.indices_ref[d]] = func.indices_ref[d]
1131+
f_idx = func.indices_ref[d]._subs(func.dimensions[d], d)
1132+
mapper[self.indices_ref[d]] = f_idx
11321133
except KeyError:
11331134
pass
11341135

tests/test_staggered_utils.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,3 +187,16 @@ def test_staggered_rebuild(stagg):
187187
assert f2.indices[nd] == nd + nd.spacing / 2
188188
else:
189189
assert f2.indices[nd] == nd
190+
191+
192+
def test_eval_at_different_dim():
193+
grid = Grid(shape=(31, 17, 25))
194+
nt = 5
195+
x, _, _ = grid.dimensions
196+
197+
v = TimeFunction(name="v", grid=grid, staggered=x)
198+
tau = TimeFunction(name="tau", grid=grid, save=nt)
199+
200+
eq = Eq(tau.forward, v).evaluate
201+
202+
assert grid.time_dim not in eq.rhs.free_symbols

0 commit comments

Comments
 (0)