diff --git a/boxtree/fmm.py b/boxtree/fmm.py index ba7dbcc7836ce3211c0b10d0bf64a5c1bc73064e..eca9e3e80662102bc919702c1ae6da299cc6fcc8 100644 --- a/boxtree/fmm.py +++ b/boxtree/fmm.py @@ -76,7 +76,7 @@ def drive_fmm(traversal, expansion_wrangler, src_weights): start_parent_box, end_parent_box = \ traversal.level_start_source_parent_box_nrs[lev:lev+2] wrangler.coarsen_multipoles( - traversal.source_parent_boxes, start_parent_box, end_parent_box, + traversal.source_parent_boxes[start_parent_box:end_parent_box], mpole_exps) # mpole_exps is called Phi in [1] @@ -168,8 +168,8 @@ def drive_fmm(traversal, expansion_wrangler, src_weights): start_box, end_box = \ traversal.level_start_target_or_target_parent_box_nrs[lev:lev+2] wrangler.refine_locals( - traversal.target_or_target_parent_boxes, - start_box, end_box, local_exps) + traversal.target_or_target_parent_boxes[start_box:end_box], + local_exps) # }}} @@ -244,9 +244,8 @@ class ExpansionWranglerInterface: All other expansions must be zero. """ - def coarsen_multipoles(self, parent_boxes, start_parent_box, end_parent_box, - mpoles): - """For each box in ``parent_boxes[start_parent_box:end_parent_box]``, + def coarsen_multipoles(self, parent_boxes, mpoles): + """For each box in *parent_boxes*, gather (and translate) the box's children's multipole expansions in *mpole* and add the resulting expansion into the box's multipole expansion in *mpole*. @@ -295,8 +294,8 @@ class ExpansionWranglerInterface: """ pass - def refine_locals(self, child_boxes, start_child_box, end_child_box, local_exps): - """For each box in *child_boxes[start_child_box:end_child_box]*, + def refine_locals(self, child_boxes, local_exps): + """For each box in *child_boxes*, translate the box's parent's local expansion in *local_exps* and add the resulting expansion into the box's local expansion in *local_exps*. diff --git a/boxtree/pyfmmlib_integration.py b/boxtree/pyfmmlib_integration.py index 0942a9690e03a8b1aa4b054c593dce7e88d3fc9d..86c57ad29da6f1769b18a49fdc7bd9d998d8b517 100644 --- a/boxtree/pyfmmlib_integration.py +++ b/boxtree/pyfmmlib_integration.py @@ -102,14 +102,13 @@ class Helmholtz2DExpansionWrangler: return mpoles - def coarsen_multipoles(self, parent_boxes, start_parent_box, end_parent_box, - mpoles): + def coarsen_multipoles(self, parent_boxes, mpoles): tree = self.tree rscale = 1 # FIXME from pyfmmlib import h2dmpmp_vec - for ibox in parent_boxes[start_parent_box:end_parent_box]: + for ibox in parent_boxes: parent_center = tree.box_centers[:, ibox] for child in tree.box_child_ids[:, ibox]: if child: @@ -241,12 +240,12 @@ class Helmholtz2DExpansionWrangler: return local_exps - def refine_locals(self, child_boxes, start_child_box, end_child_box, local_exps): + def refine_locals(self, child_boxes, local_exps): rscale = 1 # FIXME from pyfmmlib import h2dlocloc_vec - for tgt_ibox in child_boxes[start_child_box:end_child_box]: + for tgt_ibox in child_boxes: tgt_center = self.tree.box_centers[:, tgt_ibox] src_ibox = self.tree.box_parent_ids[tgt_ibox] src_center = self.tree.box_centers[:, src_ibox] diff --git a/test/test_fmm.py b/test/test_fmm.py index 66899bfee3f86e3ce3e8a3f516ff81183f06e707..09ef5ebfbfabe4e8c124cb379fd3b81f146d2525 100644 --- a/test/test_fmm.py +++ b/test/test_fmm.py @@ -84,11 +84,10 @@ class ConstantOneExpansionWrangler: return mpoles - def coarsen_multipoles(self, parent_boxes, start_parent_box, end_parent_box, - mpoles): + def coarsen_multipoles(self, parent_boxes, mpoles): tree = self.tree - for ibox in parent_boxes[start_parent_box:end_parent_box]: + for ibox in parent_boxes: for child in tree.box_child_ids[:, ibox]: if child: mpoles[ibox] += mpoles[child] @@ -161,8 +160,8 @@ class ConstantOneExpansionWrangler: return local_exps - def refine_locals(self, child_boxes, start_child_box, end_child_box, local_exps): - for ibox in child_boxes[start_child_box:end_child_box]: + def refine_locals(self, child_boxes, local_exps): + for ibox in child_boxes: local_exps[ibox] += local_exps[self.tree.box_parent_ids[ibox]] return local_exps