@@ -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