Skip to content

Commit ddb2459

Browse files
authored
Merge pull request #2927 from devitocodes/interp-inject-coeff
api: fix injection expression indices
2 parents 91d8596 + a0b7fc0 commit ddb2459

1 file changed

Lines changed: 4 additions & 13 deletions

File tree

devito/operations/interpolators.py

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ def _positions(self, implicit_dims):
307307
return [Eq(v, INT(floor(k)), implicit_dims=implicit_dims)
308308
for k, v in self.sfunction._position_map.items()]
309309

310-
def _interp_idx(self, variables, implicit_dims=None, pos_only=(), subdomain=None):
310+
def _interp_idx(self, variables, implicit_dims=None, subdomain=None):
311311
"""
312312
Generate interpolation indices for the DiscreteFunctions in ``variables``.
313313
"""
@@ -331,16 +331,6 @@ def _interp_idx(self, variables, implicit_dims=None, pos_only=(), subdomain=None
331331

332332
idx_subs = {v: v.subs(subs) for v in variables}
333333

334-
# Position only replacement, not radius dependent.
335-
# E.g src.inject(vp(x)*src) needs to use vp[posx] at all points
336-
# not vp[posx + rx]
337-
idx_subs.update({
338-
v: v.subs({
339-
k: p
340-
for (k, p) in zip(mapper, pos, strict=True)
341-
}) for v in pos_only
342-
})
343-
344334
return idx_subs, temps
345335

346336
@check_radius
@@ -479,8 +469,9 @@ def _inject(self, field, expr, implicit_dims=None):
479469
self._rdim(subdomain=subdomain))
480470

481471
# List of indirection indices for all adjacent grid points
482-
idx_subs, temps = self._interp_idx(fields, implicit_dims=implicit_dims,
483-
pos_only=variables, subdomain=subdomain)
472+
finterp = fields + as_tuple(variables)
473+
idx_subs, temps = self._interp_idx(finterp, implicit_dims=implicit_dims,
474+
subdomain=subdomain)
484475

485476
# Substitute coordinate base symbols into the interpolation coefficients
486477
eqns = [Inc(_field.xreplace(idx_subs),

0 commit comments

Comments
 (0)