Skip to content

Commit e1f66f0

Browse files
committed
Drop sumpy.kernel.DirectionalTargetDerivative
Closes gh-228
1 parent 1d9cc09 commit e1f66f0

5 files changed

Lines changed: 4 additions & 97 deletions

File tree

examples/curve-pot.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,6 @@ def process_kernel(knl, what_operator):
3737
elif what_operator == "D":
3838
from sumpy.kernel import DirectionalSourceDerivative
3939
source_knl = DirectionalSourceDerivative(knl)
40-
# DirectionalTargetDerivative (temporarily?) removed
41-
# elif what_operator == "S'":
42-
# from sumpy.kernel import DirectionalTargetDerivative
43-
# knl = DirectionalTargetDerivative(knl)
4440
else:
4541
raise RuntimeError(f"unrecognized operator '{what_operator}'")
4642

sumpy/expansion/multipole.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,9 @@ def evaluate(self, kernel, coeffs, bvec, rscale, sac=None):
101101
rscale = 1
102102

103103
base_taker = kernel.get_derivative_taker(bvec, rscale, sac)
104-
# Following is a no-op, but AxisTargetDerivative.postprocess_at_target and
105-
# DirectionalTargetDerivative.postprocess_at_target only handles
106-
# DifferentiatedExprDerivativeTaker and sympy expressions, so we need to
107-
# make the taker a DifferentitatedExprDerivativeTaker instance.
104+
# Following is a no-op, but AxisTargetDerivative.postprocess_at_target
105+
# only handles DifferentiatedExprDerivativeTaker and sympy expressions,
106+
# so we need to make the taker a DifferentitatedExprDerivativeTaker instance.
108107
base_taker = DifferentiatedExprDerivativeTaker(base_taker,
109108
{tuple([0]*self.dim): 1})
110109
taker = kernel.postprocess_at_target(base_taker, bvec)

sumpy/kernel.py

Lines changed: 0 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,6 @@
130130
.. autoclass:: DirectionalSourceDerivative
131131
:show-inheritance:
132132
:members: mapper_method,directional_kind
133-
.. autoclass:: DirectionalTargetDerivative
134-
:show-inheritance:
135-
:undoc-members:
136-
:members: mapper_method,directional_kind,target_array_name
137133
138134
Transforming kernels
139135
--------------------
@@ -1351,86 +1347,6 @@ def replace_inner_kernel(self, new_inner_kernel: Kernel) -> Kernel:
13511347
return type(self)(new_inner_kernel, dir_vec_name=self.dir_vec_name)
13521348

13531349

1354-
class DirectionalTargetDerivative(DirectionalDerivative):
1355-
mapper_method: ClassVar[str] = "map_directional_target_derivative"
1356-
directional_kind: ClassVar[Literal["src", "tgt"]] = "tgt"
1357-
target_array_name: ClassVar[str] = "targets"
1358-
1359-
@override
1360-
def get_code_transformer(self) -> Callable[[Expression], Expression]:
1361-
from sumpy.codegen import VectorComponentRewriter
1362-
vcr = VectorComponentRewriter(frozenset([self.dir_vec_name]))
1363-
via = _VectorIndexAdder(self.dir_vec_name, (prim.Variable("itgt"),))
1364-
1365-
inner_transform = self.inner_kernel.get_code_transformer()
1366-
1367-
def transform(expr: Expression) -> Expression:
1368-
return via(vcr(inner_transform(expr)))
1369-
1370-
return transform
1371-
1372-
@overload
1373-
def postprocess_at_target(
1374-
self, expr: sym.Expr, bvec: sp.Matrix,
1375-
) -> sym.Expr: ...
1376-
1377-
@overload
1378-
def postprocess_at_target(
1379-
self, expr: ExprDerivativeTaker, bvec: sp.Matrix,
1380-
) -> DifferentiatedExprDerivativeTaker: ...
1381-
1382-
@override
1383-
def postprocess_at_target(
1384-
self, expr: sym.Expr | ExprDerivativeTaker, bvec: sp.Matrix,
1385-
) -> sym.Expr | DifferentiatedExprDerivativeTaker:
1386-
dir_vec = sym.make_sym_vector(self.dir_vec_name, self.dim)
1387-
target_vec = sym.make_sym_vector(self.target_array_name, self.dim)
1388-
1389-
inner_expr = self.inner_kernel.postprocess_at_target(expr, bvec)
1390-
1391-
# bvec = tgt - center
1392-
if not isinstance(inner_expr, DifferentiatedExprDerivativeTaker):
1393-
result = 0
1394-
for axis in range(self.dim):
1395-
# Since `bvec` and `tgt` are two different symbolic variables
1396-
# need to differentiate by both to get the correct answer
1397-
result += (
1398-
(inner_expr.diff(bvec[axis]) + inner_expr.diff(target_vec[axis]))
1399-
* dir_vec[axis])
1400-
1401-
assert isinstance(result, sym.Expr)
1402-
return result
1403-
1404-
new_transformation: DerivativeCoeffDict = defaultdict(lambda: 0)
1405-
for axis in range(self.dim):
1406-
axis_transformation = diff_derivative_coeff_dict(
1407-
inner_expr.derivative_coeff_dict, axis, target_vec)
1408-
for mi, coeff in axis_transformation.items():
1409-
new_transformation[mi] += coeff * dir_vec[axis]
1410-
1411-
return DifferentiatedExprDerivativeTaker(
1412-
inner_expr.taker, dict(new_transformation))
1413-
1414-
@override
1415-
def get_args(self) -> Sequence[KernelArgument]:
1416-
return [
1417-
KernelArgument(
1418-
loopy_arg=lp.GlobalArg(
1419-
self.dir_vec_name,
1420-
None,
1421-
shape=(self.dim, "ntargets"),
1422-
offset=lp.auto
1423-
),
1424-
),
1425-
*self.inner_kernel.get_args()
1426-
]
1427-
1428-
@override
1429-
def prepare_loopy_kernel(self, loopy_knl: lp.TranslationUnit) -> lp.TranslationUnit:
1430-
loopy_knl = self.inner_kernel.prepare_loopy_kernel(loopy_knl)
1431-
return lp.tag_array_axes(loopy_knl, self.dir_vec_name, "sep,C")
1432-
1433-
14341350
class DirectionalSourceDerivative(DirectionalDerivative):
14351351
mapper_method: ClassVar[str] = "map_directional_source_derivative"
14361352
directional_kind: ClassVar[Literal["src", "tgt"]] = "src"

sumpy/qbx.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,6 @@ def find_jump_term(kernel, arg_provider):
516516
AxisTargetDerivative,
517517
DerivativeBase,
518518
DirectionalSourceDerivative,
519-
DirectionalTargetDerivative,
520519
)
521520

522521
tgt_derivatives = []
@@ -526,9 +525,6 @@ def find_jump_term(kernel, arg_provider):
526525
if isinstance(kernel, AxisTargetDerivative):
527526
tgt_derivatives.append(kernel.axis)
528527
kernel = kernel.kernel
529-
elif isinstance(kernel, DirectionalTargetDerivative):
530-
tgt_derivatives.append(kernel.dir_vec_name)
531-
kernel = kernel.kernel
532528
elif isinstance(kernel, AxisSourceDerivative):
533529
src_derivatives.append(kernel.axis)
534530
kernel = kernel.kernel

sumpy/tools.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ def __init__(self, ctx: cl.Context,
320320
device: Any | None = None) -> None:
321321
"""
322322
:arg target_kernels: list of :class:`~sumpy.kernel.Kernel` instances,
323-
with :class:`sumpy.kernel.DirectionalTargetDerivative` as
323+
with :class:`sumpy.kernel.AxisTargetDerivative` as
324324
the outermost kernel wrappers, if present.
325325
:arg source_kernels: list of :class:`~sumpy.kernel.Kernel` instances
326326
with :class:`~sumpy.kernel.DirectionalSourceDerivative` as the

0 commit comments

Comments
 (0)