Divergence free vector field interpolant for 2D and 3D cases. Described in [1], relies on radial basis functions [2]. The current implementation works as expected, but does not scale well, an improvement would be to implement a multilevel approach [3], but implementing a thinning algorithm [4] proved to be challenging.
pip install Divergence-Free-Interpolant
pip install pyvista matplotlib
import numpy as np
import Divergence_Free_Interpolant as dfi
initialized_interpolant = dfi.interpolant(nu = 5, k = 3, dim = 3)
nu
- Radial basis function parameter: int
, default value 5
,
in most cases does not have to be changed
k
- Radial basis function parameter: int
, default value 3
,
in most cases does not have to be changed
dim
- Dimensionality of space to interpolate: int
, default value 3
,
currently only supports 2
and 3
, can be expanded indefinitely.
positions = np.random(3, 10)
vectorfield = np.random(3, 10)
initialized_interpolant.condition(positions, vectorfield, support_radius = 0.2, method = 'linsolve')
positions
- vector field coordinates: np.ndarray
, shape = (dim, N)
vectorfield
- vector field values: np.ndarray
, shape = (dim, N)
support_radius
- kernel radius: float
, default value 1
method
- method to use for solving the linear system: str
, default value linsolve
,
accepts SVD, penrose, linsolve, lstsq
x, y, z = 0.3, 0.4, 0.6
vector = initialized_interpolant(x, y, z)
x
- x coordinates at which to interpolate: array_like
y
- y coordinates at which to interpolate: array_like
z
- z coordinates at which to interpolate: array_like
vector
- interoplated vector values at the given points: np.ndarray
, shape = (..., dim)
__call__
is vectorized
if dim == 2
will not accept the z
component
See tests/test_case_2D.py
and tests/test_case_3D.py
for more detailed examples.
[1] Fuselier, Edward J. “Sobolev-Type Approximation Rates for Divergence-Free and Curl-Free RBF Interpolants.” Mathematics of Computation, vol. 77, no. 263, 2008, pp. 1407–23. http://www.jstor.org/stable/40234564
[2] Wendland, H. Piecewise polynomial, positive definite and compactly supported radial functions of minimal degree. Adv Comput Math 4, 389–396 (1995). https://doi.org/10.1007/BF02123482
[3] Patricio Farrell, Kathryn Gillow, Holger Wendland, Multilevel interpolation of divergence-free vector fields, IMA Journal of Numerical Analysis, Volume 37, Issue 1, January 2017, Pages 332–353, https://doi.org/10.1093/imanum/drw006
[4] Floater M. S. Iske A. Thinning algorithms for scattered data interpolation . BIT , 38 , 705 –720 . (1998)