diff --git a/requirements.txt b/requirements.txt index 8e48bc1c8b0da2b4d81682839c688c0ac69637d5..8bd95658503f678c6e7fad9beed86c60ea8dad95 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,3 +6,4 @@ git+https://github.com/inducer/pyopencl git+https://gitlab.tiker.net/inducer/boxtree git+https://github.com/inducer/loopy git+https://github.com/inducer/pyfmmlib +git+https://github.com/inducer/pytools diff --git a/sumpy/expansion/multipole.py b/sumpy/expansion/multipole.py index 7bcd0ed5628a15536fa9f1dfc2e35aeae4a13c51..4f6ffe3e0de7c57353b635b4ea387ca9e601698f 100644 --- a/sumpy/expansion/multipole.py +++ b/sumpy/expansion/multipole.py @@ -29,6 +29,7 @@ from sumpy.symbolic import vector_xreplace from sumpy.expansion import ( ExpansionBase, VolumeTaylorExpansion, LaplaceConformingVolumeTaylorExpansion, HelmholtzConformingVolumeTaylorExpansion) +from pytools import cartesian_product import logging logger = logging.getLogger(__name__) @@ -47,17 +48,6 @@ class MultipoleExpansionBase(ExpansionBase): pass -def cartesian_product(*args): - if len(args) == 1: - for arg in args[0]: - yield (arg,) - return - first = args[:-1] - for prod in cartesian_product(*first): - for i in args[-1]: - yield prod + (i,) - - # {{{ volume taylor class VolumeTaylorMultipoleExpansionBase(MultipoleExpansionBase):