tree_d_3d.kernels.fmm_m2l.fmm_m2l_numpy
The version of the fmm_m2l kernel for machines without Pyccel.
There is no vectorized form (the translation of each pair is a short loop over the expansion order): this is the algorithm of
fmm_m2l_pyccel.py, run by the Python interpreter.
Functions
| Name | Description |
|---|---|
fmm_m2l | Add each pair's multipole of one cell to the other's local expansion. |
fmm_m2lfunction#
Re-exported from
tree_d_3d.kernels.fmm_m2l.fmm_m2l_pyccelView sourcedef fmm_m2l(pairs: int64[:, :], count: int, node_center: float[:, :], moment_re: float[:, :], moment_im: float[:, :], binomial: float[:, :], symmetric: int, inv_re: float[:], inv_im: float[:], local_re: float[:, :], local_im: float[:, :]) -> NoneAdd each pair’s multipole of one cell to the other’s local expansion.
symmetric nonzero truncates the translated series by total degree
(k + l <= p, Dehnen’s symmetric truncation) instead of k <= p and
l <= p: the pair interaction then depends on z_i - z_j only, so the
forces of a mutual pair are exactly antisymmetric. inv_re/inv_im are
scratch buffers of length 2 p + 2.