FastMultipole

Documentation for FastMultipole.

FastMultipole.ElementType
type ::Element

Instances of ::Element contain the following properties:

  • position: a vector of length 3 describing the Cartesian coordinates of the element position
  • strength: a vector of length 4 whose first index describes the source potential, and whose final 3 indices represent the vector source
  • potential: a vector of length 4 whose first index is the scalar potential, and whose final 3 indices represent a vector potential
  • velocity: a vector of length 3 describing the induced velocity, obtained as the negative gradient of the scalar potential plus curl of the vector potential
  • jacobian: a 3x4 matrix containing the concatenated spatial Jacobians of the scalar and vector potentials
  • hessian: a 3x3x3 array containing the spatial Hessian of the vector potential
source
FastMultipole.MultiTreeType

bodies[indexlist] is the same sort operation as performed by the tree sortedbodies[inverseindexlist] undoes the sort operation performed by the tree

source
FastMultipole.fmm!Method
fmm!(target_systems, source_systems; kwargs...)

Apply all interactions of source_systems acting on target_systems using the fast multipole method. Assumes compatibility functions have been overloaded for both source and target systems.

Arguments

  • target_systems: either

    • a system object for which compatibility functions have been overloaded, or
    • a tuple of system objects for which compatibility functions have been overloaded
  • source_systems: either

    • a system object for which compatibility functions have been overloaded, or
    • a tuple of system objects for which compatibility functions have been overloaded

Optional Arguments

  • expansion_order::Int: the expansion order to be used
  • n_per_branch_source::Int: maximum number of bodies from source_systems allowed in a leaf-level branch
  • n_per_branch_target::Int: maximum number of bodies from target_systems allowed in a leaf-level branch
  • multipole_acceptance_criterion::Float64: number between 0 and 1 (often denoted theta in [0,1]) controls the accuracy by determining the non-dimensional distance after which multipoles are used; 0 means an infinite distance (no error, high cost), and 1 means barely convergent (high error, low cost)
source