flatironinstitute / FMM3D

Flatiron Institute Fast Multipole Libraries --- This codebase is a set of libraries to compute N-body interactions governed by the Laplace and Helmholtz equations, to a specified precision, in three dimensions, on a multi-core shared-memory machine.
https://fmm3d.readthedocs.io
Other
100 stars 38 forks source link

ldc and nterms arguments used in Laplace translation operator #34

Closed lu1and10 closed 1 year ago

lu1and10 commented 1 year ago

When we are implementing Laplace FMM mps, we may need to call L2L operator translating from high order local expansion to a low order local expansion if the input expansion order from the user is lower than the expansion order we used inside FMM algorithm. For example, in the local to center step as in,

The current l3dlocloc produces high error with the following test,

The above test passes if we make the following changes,

There are still some arguments differences between h3d translation operators and l3d translation operators when calling rotation subroutines, e.g., Lines and

I may need @mrachh to confirm and help to make the l3d and h3d translation operators more consistent when calling rotation subroutines.

lu1and10 commented 1 year ago

Thanks @mrachh, the issue is fixed with commit 0d4afe1d2d8ba858b4f1774f57030910d33e8cfc and commit b83b6ec950c98c13fbb1991a9ab0d116e23600a6. It works like a charm!