volumential.geometry#
Geometry construction for volume FMM evaluations.
This module owns the bounding-box and box-FMM geometry factories that turn a
box mesh into the tree, traversal and quadrature data a volume FMM run needs.
BoundingBoxFactory decides the root box; BoxFMMGeometryFactory
drives the mesh generator and tree builders and hands back an immutable
BoxFMMGeometryData container.
- class volumential.geometry.BoundingBoxFactory(dim: int, center: ndarray | None = None, radius: float | None = None, dtype: dtype | type = <class 'float'>)[source]#
Bases:
objectProduces the root bounding box of a box FMM geometry.
The box is either fully prescribed by center and radius, or adapted to a mesh at call time. Calling the factory materializes
lboundsandubounds, which downstream code reads directly.
- class volumential.geometry.BoxFMMGeometryFactory(cl_ctx, dim: int, order: int, nlevels: int, bbox_getter: BoundingBoxFactory, quadrature_formula=None, expand_to_hold_mesh=None, mesh_padding_factor: float = 0.05)[source]#
Bases:
objectBuilds the geometry information needed for performing volume FMM. The objects of this class is designed to be “interactive”, i.e., be manipulated repeatedly and on demand, produce a series of desired
BoxFMMGeometryDataobjects.- cl_context#
- A :class:`pyopencl.Context` object.
- quadrature_formula#
- The quadrature formula, a :class:`modepy.quadrature.Quadrature` object.
- order#
- The quadrature order.
- nlevels#
- The number of (initial) levels.
- bbox_getter#
- A :class:`volumential.geometry.BoundingBoxFactory` object.
- engine#
- Box mesh generator that implements the
- :class:`volumential.meshgen.MeshGenBase` interface.