:py:mod:`bempp.api.fmm.exafmm` ============================== .. py:module:: bempp.api.fmm.exafmm .. autoapi-nested-parse:: Main interface class to ExaFMM. Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: bempp.api.fmm.exafmm.ExafmmInterface Functions ~~~~~~~~~ .. autoapisummary:: bempp.api.fmm.exafmm.cleanup_fmm_tmp Attributes ~~~~~~~~~~ .. autoapisummary:: bempp.api.fmm.exafmm.FMM_TMP_DIR .. py:data:: FMM_TMP_DIR .. py:function:: cleanup_fmm_tmp() Clean up the FMM tmp directory. .. py:class:: ExafmmInterface(source_points, target_points, mode, wavenumber=None, depth=4, expansion_order=5, ncrit=400, precision='double', singular_correction=None) Bases: :py:obj:`object` Interface to Exafmm. .. py:property:: number_of_source_points Return number of source points. .. py:property:: number_of_target_points Return number of target points. .. py:method:: evaluate(vec, apply_singular_correction=True) Evalute the Fmm. .. py:method:: as_matrix() Return matrix representation of Fmm. .. py:method:: from_grid(source_grid, mode, wavenumber=None, target_grid=None, precision='double', parameters=None, device_interface=None) :classmethod: Initialise an Exafmm instance from a given source and target grid. Parameters ---------- source_grid : Grid object Grid for the source points. mode: string Fmm mode. One of 'laplace', 'helmholtz', or 'modified_helmholtz' wavenumber : real number For Helmholtz or modified Helmholtz the wavenumber. target_grid : Grid object An optional target grid. If not provided the source and target grid are assumed to be identical. precision : string Either 'single' or 'double'. Currently, the Fmm is always executed in double precision. parameters : object A bempp parameters object. If not provided, the GLOBAL_PARAMETERS will be used. device_interface : string Either 'numba' or 'opencl'. If not provided, the DEFAULT_DEVICE_INTERFACE will be used for the calculation of local interactions.