Closed JGLee6 closed 3 years ago
This is basically closed. Would be good to write method from translationSpeed.py example into a function so as to apply in each q2q, q2Q, and Q2Q translations. The method is as much as ~5x faster for L=10, ~15x for L=20, ~50x for L=40.
Multipole translations scale poorly with larger order, L, ~O(L^4), where moments are mixed both between order (l->l') and "index" (m->m'). Things can be sped up using a "Point-and-Shoot" method by combining rotations with translations only along the z-axis, ~O(L^3). The coaxial translations along the z-axis do not mix index (m'=m) and can be done recursively. The linked paper gives a simple formula for those coaxial translation matrices but has a different normalization for their moments. Such an improvement should allow for calculations at much higher order.