@@ -164,21 +164,19 @@ class Injection(UnevaluatedSparseOperation):
164164
165165 __rargs__ = ('field' , 'expr' , 'implicit_dims' ) + UnevaluatedSparseOperation .__rargs__
166166
167- def __new__ (cls , field , expr , implicit_dims , interpolator , interp_expr = False ):
167+ def __new__ (cls , field , expr , implicit_dims , interpolator ):
168168 obj = super ().__new__ (cls , interpolator )
169169
170170 # TODO: unused now, but will be necessary to compute the adjoint
171171 obj .field = field
172172 obj .expr = expr
173173 obj .implicit_dims = implicit_dims
174- obj .interp_expr = interp_expr
175174
176175 return obj
177176
178177 def operation (self , ** kwargs ):
179178 return self .interpolator ._inject (expr = self .expr , field = self .field ,
180- implicit_dims = self .implicit_dims ,
181- interp_expr = self .interp_expr )
179+ implicit_dims = self .implicit_dims )
182180
183181 def __repr__ (self ):
184182 return f"Injection({ repr (self .expr )} into { repr (self .field )} )"
@@ -309,7 +307,7 @@ def _positions(self, implicit_dims):
309307 return [Eq (v , INT (floor (k )), implicit_dims = implicit_dims )
310308 for k , v in self .sfunction ._position_map .items ()]
311309
312- def _interp_idx (self , variables , implicit_dims = None , pos_only = (), subdomain = None ):
310+ def _interp_idx (self , variables , implicit_dims = None , subdomain = None ):
313311 """
314312 Generate interpolation indices for the DiscreteFunctions in ``variables``.
315313 """
@@ -333,16 +331,6 @@ def _interp_idx(self, variables, implicit_dims=None, pos_only=(), subdomain=None
333331
334332 idx_subs = {v : v .subs (subs ) for v in variables }
335333
336- # Position only replacement, not radius dependent.
337- # E.g src.inject(vp(x)*src) needs to use vp[posx] at all points
338- # not vp[posx + rx]
339- idx_subs .update ({
340- v : v .subs ({
341- k : p
342- for (k , p ) in zip (mapper , pos , strict = True )
343- }) for v in pos_only
344- })
345-
346334 return idx_subs , temps
347335
348336 @check_radius
@@ -368,7 +356,7 @@ def interpolate(self, expr, increment=False, self_subs=None, implicit_dims=None)
368356
369357 @check_radius
370358 @check_coords
371- def inject (self , field , expr , implicit_dims = None , interp_expr = False ):
359+ def inject (self , field , expr , implicit_dims = None ):
372360 """
373361 Generate equations injecting an arbitrary expression into a field.
374362
@@ -383,7 +371,7 @@ def inject(self, field, expr, implicit_dims=None, interp_expr=False):
383371 injection expression, but that should be honored when constructing
384372 the operator.
385373 """
386- return Injection (field , expr , implicit_dims , self , interp_expr = interp_expr )
374+ return Injection (field , expr , implicit_dims , self )
387375
388376 def _interpolate (self , expr , increment = False , self_subs = None , implicit_dims = None ):
389377 """
@@ -435,7 +423,7 @@ def _interpolate(self, expr, increment=False, self_subs=None, implicit_dims=None
435423
436424 return temps + summands + last
437425
438- def _inject (self , field , expr , implicit_dims = None , interp_expr = False ):
426+ def _inject (self , field , expr , implicit_dims = None ):
439427 """
440428 Generate equations injecting an arbitrary expression into a field.
441429
@@ -481,10 +469,9 @@ def _inject(self, field, expr, implicit_dims=None, interp_expr=False):
481469 self ._rdim (subdomain = subdomain ))
482470
483471 # List of indirection indices for all adjacent grid points
484- finterp = fields + as_tuple (variables ) if interp_expr else fields
485- pos_only = () if interp_expr else variables
472+ finterp = fields + as_tuple (variables )
486473 idx_subs , temps = self ._interp_idx (finterp , implicit_dims = implicit_dims ,
487- pos_only = pos_only , subdomain = subdomain )
474+ subdomain = subdomain )
488475
489476 # Substitute coordinate base symbols into the interpolation coefficients
490477 eqns = [Inc (_field .xreplace (idx_subs ),
0 commit comments