Modules ======== Box Mesh Generation ------------------- The volume FMM operates over a box-shaped mesh generated by :py:mod:`volumential.meshgen`. It consists of two backends: a Python one that only generates uniform mesh, and a C++ one that is capable of performing adaptive mesh refinement. .. automodule:: volumential.meshgen Singular Integrals ------------------ Transform Method **************** (2D only) use Duffy-type transforms to desingularize the integrands. Good at special kernel types (specifically ``1/r``). The main downside of this method is its complicated control flow (inefficient to parallelize). Thus it only supports CPU multi-threading, and extra dependency ``dill`` is needed for it. .. automodule:: volumential.singular_integral_2d Droste Method ************* Use recursive brick-shaped subdivision, combined with simple bilinear transforms. The implementation is for 2/3D, written in ``loopy`` and is optimized to take advantage of symmetries. .. automodule:: volumential.droste Near-Field Tabulation --------------------- Symmetry Discovery ****************** The set of symmetry operations that can be used to speed up precomputation depends on the dimension and symmetry properties of the kernel (e.g., is it a fundamental solution kernel or one of its derivatives?). .. automodule:: volumential.list1_symmetry :members: Interaction Enumeration *********************** This module enumerates the set of interaction cases that could possibly happen in *list1*. .. automodule:: volumential.list1_gallery Table Lookup (Deprecated) ************************* This module produces table lookup schemes given information about the kernel and the table data format. The module is deprecated in favor of :py:mod:`volumential.nearfield_potential_table` and :py:mod:`volumential.table_manager`. .. automodule:: volumential.list1 :members: .. warning:: Use :py:mod:`volumential.nearfield_potential_table` and :py:mod:`volumential.table_manager` instead! :py:mod:`volumential.list1` is deprecated and will be removed in the future. Table and Table Manager *********************** The tables are stored in ``hdf5`` format and managed through :class:`NearFieldInteractionTableManager`. .. automodule:: volumential.nearfield_potential_table :members: .. automodule:: volumential.table_manager Multipole/Local Expansions -------------------------- .. automodule:: volumential.expansion_wrangler_interface .. automodule:: volumential.expansion_wrangler_fpnd :members: Volume FMM ---------- The volume potential obtained from the volume FMM is over the internal box mesh. To obtain the values on your own mesh points, an interpolation method is provided. Although the interpolation is :math:`O(N log N)`, it is almost always indistinguishable from :math:`O(N)` in practice as the geometry lookup usually takes up a very small fraction of the total runtime. .. automodule:: volumential.volume_fmm .. automodule:: volumential.list1 Function Extension ------------------ The :py:mod:`volumential.function_extension` module provides helper functions to perform source density extensions using layer potentials. .. automodule:: volumential.function_extension Miscellaneous Tools ------------------- .. automodule:: volumential.tools :members: