SphericalMonomials
-
class SphericalMonomials : public SphericalBase
Public Functions
-
SphericalMonomials(unsigned L_degree)
Sets up class for monomial basis on sphere up to degree L. The basis then consists of N = L.
- Parameters:
L_degree – maximum degree of spherical harmonics basis, 0 <= L <= 1000 (upper bound due to numerical stability)
-
SphericalMonomials(unsigned L_degree, unsigned short spatialDim)
Sets up class for monomial basis on sphere up to degree L. The basis then consists of N = L.
- Parameters:
L_degree – maximum degree of spherical harmonics basis, 0 <= L <= 1000 (upper bound due to numerical stability)
spatialDim – spatial dimensioniality of the simulation
-
virtual Vector ComputeSphericalBasis(double my, double phi, double r = 1.0) override
Computes all N = L² +2L basis functions at point (my, phi)
- Parameters:
my – cos(theta) - spherical coordinate, -1 <= x <= 1
phi – spherical coordinate, 0 <= phi <= 2*pi
r – radius of sphere, default is 1, i.e. unit sphere
- Returns:
vector of basis functions at point (my, phi) with size N = L² +2L
-
virtual Vector ComputeSphericalBasisKarthesian(double x, double y, double z) override
Computes all N = L² +2L basis functions at point (x, y, z) on the unit sphere.
- Parameters:
x – = coordinates on sphere
y – = coordinates on sphere
z – = coordinates on sphere
- Returns:
vector of basis functions at point (x,y,z) with size N = L² +2L
-
virtual unsigned GetBasisSize() override
Computes the length of the basis vector for a given max degree and spatial dimension dim. len of a single oder: (degree + _spatialDim -1) over (degree)
- Returns:
lenght of whole basis
-
virtual unsigned GetCurrDegreeSize(unsigned currDegreeL) override
Computes the amount of lin. independent monomials of degree currDegreeL and spatial dimension dim. len of a single oder: (currDegreeL + _spatialDim -1) over (currDegreeL)
- Parameters:
currDegreeL – = degree of polynomials that are counted
- Returns:
lenght of a single dimension
-
virtual unsigned GetGlobalIndexBasis(int l_degree, int k_order) override
Computes global index of basis vector depending on order k and degree l.
- Parameters:
l_degree – degree of polynomials l = 0,1,2,3,…
k_order – order of element of degree l. 0 <=k <=GetCurrDegreeSize(l)
Private Functions
-
unsigned Factorial(unsigned n)
Function to compute factorial of n (n!) in recursive manner.
-
double Omega_x(double my, double phi, double r = 1.0)
Function to compute first component of spherical unit vector Omega_x = r* sqrt(1-my*my)*cos(phi)
- Returns:
first component of spherical unit vector
-
double Omega_y(double my, double phi, double r = 1.0)
Function to compute first component of spherical unit vector Omega_x = r* sqrt(1-my*my)*sin(phi)
- Returns:
first component of spherical unit vector
-
double Omega_z(double my, double r = 1.0)
Function to compute first component of spherical unit vector Omega_z = r* my.
- Returns:
first component of spherical unit vector
-
double Power(double basis, unsigned exponent)
Helper Function to compute basis^exponent.
-
Vector ComputeSphericalBasis1D(double my, double r = 1.0)
Helper to compute the basis in 1D, 2D or 3D, depending on choice of _spatialDim.
Only Z achsis of the 3D case
-
Vector ComputeSphericalBasis2D(double my, double phi, double r = 1.0)
Only X and Y achsis of the 3D case.
Private Members
-
Vector _YBasis
spherical monomial basis function vector of degree 0 <= l <= L length : COmputed with ComputeBasisSize
-
SphericalMonomials(unsigned L_degree)