Multipole expansion classes and methods. More...
Classes | |
class | Y |
Class for spherical harmonic functions. More... | |
class | Yre |
Class for real spherical harmonic functions. More... | |
class | Coeff< GReal_t > |
Class for real spherical harmonic (Yre) expansion coefficients. More... | |
class | Coeff< GComplex_t > |
Class for complex spherical harmonic (Y) expansion coefficients. More... | |
class | ScalarFieldMP< GReal_t > |
Class for real scalar fields on sphere. More... | |
class | ScalarFieldMP< GComplex_t > |
Class for complex scalar fields on sphere. More... | |
Functions | |
Coeff< GReal_t > | operator* (const GReal_t, const Yre &) |
Tensor product of a number and an Yre. | |
Coeff< GReal_t > | operator* (const Yre &, const GReal_t) |
Coeff< GReal_t > | operator/ (const Yre &, const GReal_t) |
Tensor quotient of a number and an Yre. | |
Coeff< GReal_t > | operator* (const GReal_t, const Coeff< GReal_t > &) |
Multiply a coefficient by a number. | |
Coeff< GReal_t > | operator* (const Coeff< GReal_t > &, const GReal_t) |
Coeff< GReal_t > | operator/ (const Coeff< GReal_t > &, const GReal_t) |
Divide a coefficient by a number. | |
Coeff< GReal_t > | operator- (const Yre &) |
Negative of a coefficient. | |
Coeff< GReal_t > | operator- (const Coeff< GReal_t > &) |
Coeff< GComplex_t > | operator* (const GReal_t, const Y &) |
Tensor product of a number and an Y. | |
Coeff< GComplex_t > | operator* (const Y &, const GReal_t) |
Coeff< GComplex_t > | operator* (const GComplex_t &, const Y &) |
Coeff< GComplex_t > | operator* (const Y &, const GComplex_t &) |
Coeff< GComplex_t > | operator/ (const Y &, const GReal_t) |
Tensor quotient of a number and an Y. | |
Coeff< GComplex_t > | operator/ (const Y &, const GComplex_t &) |
Coeff< GComplex_t > | operator* (const GReal_t, const Coeff< GComplex_t > &) |
Multiply a coefficient by a number. | |
Coeff< GComplex_t > | operator* (const Coeff< GComplex_t > &, const GReal_t) |
Coeff< GComplex_t > | operator* (const GComplex_t &, const Coeff< GComplex_t > &) |
Coeff< GComplex_t > | operator* (const Coeff< GComplex_t > &, const GComplex_t &) |
Coeff< GComplex_t > | operator/ (const Coeff< GComplex_t > &, const GReal_t) |
Divide a coefficient by a number. | |
Coeff< GComplex_t > | operator/ (const Coeff< GComplex_t > &, const GComplex_t &) |
Coeff< GComplex_t > | operator- (const Y &) |
Negative of a coefficient. | |
Coeff< GComplex_t > | operator- (const Coeff< GComplex_t > &) |
Coeff< GComplex_t > | conj (const Y &) |
Complex conjugate a coefficient. | |
Coeff< GComplex_t > | conj (const Coeff< GComplex_t > &) |
GReal_t | YYY_coupling (const int l1, const int l2, const int l3, const int m1, const int m2, const int m3) |
The ![]() | |
bool | YYY_coupling_zeros (const int l1, const int l2, const int l3, const int m1, const int m2, const int m3) |
Returns true if the Gaunt coefficient of given index is known to be zero. | |
unsigned int | YYY_coupling_size () |
Show table size currently used in YYY_coupling. | |
GReal_t | YreYreYre_coupling (const int l1, const int l2, const int l3, const int m1, const int m2, const int m3) |
The same coupling for Yre basis. | |
GComplex_t | YYreY_coupling (const int l1, const int l2, const int l3, const int m1, const int m2, const int m3) |
Similar coupling for Y and Yre basis. | |
GReal_t | intYl1ExpMIPhi (const int l) |
Calculation of ![]() | |
GReal_t | ExpPmIPhiYY_coupling (const int l1, const int m1, const int l2, const int sign) |
The overlap integrals ![]() | |
unsigned int | ExpPmIPhiYY_coupling_size () |
Show table size currently used in ExpPmIPhiYY_coupling. | |
GReal_t | intYl0 (const int l, const GReal_t theta) |
Calculation of ![]() | |
GReal_t | intBarYl1mYl2m (const int l1, const int l2, const int m, const GReal_t theta, tvector< tvector< tvector< GReal_t > > > *coeffstorage) |
Calculation of ![]() | |
GReal_t | SobolevConstantS2 (const int m) |
The minimal Sobolev constant in the inequality over the sphere: ![]() | |
GReal_t | tailSumS2 (const int mup, const int mu, const int L) |
The sum ![]() | |
ScalarFieldMP< GReal_t > | operator+ (const ScalarFieldMP< GReal_t > &, const ScalarFieldMP< GReal_t > &) |
ScalarFieldMP<GReal_t> algebraic operators. | |
ScalarFieldMP< GReal_t > | operator- (const ScalarFieldMP< GReal_t > &, const ScalarFieldMP< GReal_t > &) |
ScalarFieldMP< GReal_t > | operator- (const ScalarFieldMP< GReal_t > &) |
ScalarFieldMP< GReal_t > | operator* (const ScalarFieldMP< GReal_t > &, const GReal_t) |
ScalarFieldMP< GReal_t > | operator* (const GReal_t, const ScalarFieldMP< GReal_t > &) |
ScalarFieldMP< GReal_t > | operator* (const ScalarFieldMP< GReal_t > &, const ScalarFieldMP< GReal_t > &) |
ScalarFieldMP< GReal_t > | operator/ (const ScalarFieldMP< GReal_t > &, const GReal_t) |
GReal_t | L2S2 (const ScalarFieldMP< GReal_t > &, const ScalarFieldMP< GReal_t > &) |
L^2 scalarproduct of two fields on sphere. | |
GReal_t | H2S2 (const ScalarFieldMP< GReal_t > &, const ScalarFieldMP< GReal_t > &, const int mu) |
![]() | |
ScalarFieldMP< GReal_t > | reflect (const ScalarFieldMP< GReal_t > &) |
Reflect with respect to origin (parity operator). | |
ScalarFieldMP< GReal_t > | mulCosTheta (const ScalarFieldMP< GReal_t > &) |
Multiplication operator by ![]() | |
ScalarFieldMP< GReal_t > | mulCosThetaSqr (const ScalarFieldMP< GReal_t > &) |
Multiplication operator by ![]() | |
ScalarFieldMP< GReal_t > | mulSinThetaSqr (const ScalarFieldMP< GReal_t > &) |
Multiplication operator by ![]() | |
ScalarFieldMP< GReal_t > | partial_phi (const ScalarFieldMP< GReal_t > &) |
![]() | |
ScalarFieldMP< GReal_t > | Sqr_partial_phi (const ScalarFieldMP< GReal_t > &) |
Second ![]() | |
ScalarFieldMP< GReal_t > | sinTheta_partial_theta (const ScalarFieldMP< GReal_t > &) |
![]() | |
ScalarFieldMP< GReal_t > | partial_x (const ScalarFieldMP< GReal_t > &) |
( ![]() | |
ScalarFieldMP< GReal_t > | LaplaceS2 (const ScalarFieldMP< GReal_t > &) |
Laplace operator on unit sphere for real scalar field. | |
GReal_t | normBoundNeumann (const GReal_t a00, const GReal_t H2S2aa) |
Upper estimate of the ![]() ![]() | |
GReal_t | optimalScalingNeumann (const GReal_t a00, const GReal_t H2S2aa) |
Scaling factor ![]() ![]() ![]() | |
ScalarFieldMP< GReal_t > | divideByNeumann (const ScalarFieldMP< GReal_t > &a, const ScalarFieldMP< GReal_t > &f, const GReal_t norm, const GReal_t errortolerance) |
Division of a real field by a real field, using Neumann series. | |
GReal_t | tailErrorBoundS2 (const ScalarFieldMP< GReal_t > &, const int mup, const int mu, int *lmax, int *mmax) |
An upper bound for the tail sum in ![]() ![]() | |
ScalarFieldMP< GComplex_t > | operator+ (const ScalarFieldMP< GComplex_t > &, const ScalarFieldMP< GComplex_t > &) |
ScalarFieldMP<GComplex_t> algebraic operators. | |
ScalarFieldMP< GComplex_t > | operator+ (const ScalarFieldMP< GComplex_t > &, const ScalarFieldMP< GReal_t > &) |
ScalarFieldMP< GComplex_t > | operator+ (const ScalarFieldMP< GReal_t > &, const ScalarFieldMP< GComplex_t > &) |
ScalarFieldMP< GComplex_t > | operator- (const ScalarFieldMP< GComplex_t > &, const ScalarFieldMP< GComplex_t > &) |
ScalarFieldMP< GComplex_t > | operator- (const ScalarFieldMP< GComplex_t > &, const ScalarFieldMP< GReal_t > &) |
ScalarFieldMP< GComplex_t > | operator- (const ScalarFieldMP< GReal_t > &, const ScalarFieldMP< GComplex_t > &) |
ScalarFieldMP< GComplex_t > | operator- (const ScalarFieldMP< GComplex_t > &) |
ScalarFieldMP< GComplex_t > | operator* (const ScalarFieldMP< GComplex_t > &, const GReal_t) |
ScalarFieldMP< GComplex_t > | operator* (const GReal_t, const ScalarFieldMP< GComplex_t > &) |
ScalarFieldMP< GComplex_t > | operator* (const ScalarFieldMP< GComplex_t > &, const GComplex_t &) |
ScalarFieldMP< GComplex_t > | operator* (const GComplex_t &, const ScalarFieldMP< GComplex_t > &) |
ScalarFieldMP< GComplex_t > | operator* (const ScalarFieldMP< GReal_t > &, const GComplex_t &) |
ScalarFieldMP< GComplex_t > | operator* (const GComplex_t &, const ScalarFieldMP< GReal_t > &) |
ScalarFieldMP< GComplex_t > | operator* (const ScalarFieldMP< GComplex_t > &, const ScalarFieldMP< GComplex_t > &) |
ScalarFieldMP< GComplex_t > | operator* (const ScalarFieldMP< GComplex_t > &, const ScalarFieldMP< GReal_t > &) |
ScalarFieldMP< GComplex_t > | operator* (const ScalarFieldMP< GReal_t > &, const ScalarFieldMP< GComplex_t > &) |
ScalarFieldMP< GComplex_t > | operator/ (const ScalarFieldMP< GComplex_t > &, const GReal_t) |
ScalarFieldMP< GComplex_t > | operator/ (const ScalarFieldMP< GComplex_t > &, const GComplex_t &) |
ScalarFieldMP< GComplex_t > | operator/ (const ScalarFieldMP< GReal_t > &, const GComplex_t &) |
ScalarFieldMP< GComplex_t > | conj (const ScalarFieldMP< GComplex_t > &) |
Complex conjugate a scalarfield on sphere. | |
ScalarFieldMP< GReal_t > | real (const ScalarFieldMP< GComplex_t > &) |
Real part of a scalarfield on sphere. | |
ScalarFieldMP< GReal_t > | imag (const ScalarFieldMP< GComplex_t > &) |
Imaginary part of a scalarfield on sphere. | |
GComplex_t | L2S2 (const ScalarFieldMP< GComplex_t > &, const ScalarFieldMP< GReal_t > &) |
L^2 scalarproduct of fields. | |
GComplex_t | L2S2 (const ScalarFieldMP< GReal_t > &, const ScalarFieldMP< GComplex_t > &) |
GComplex_t | L2S2 (const ScalarFieldMP< GComplex_t > &, const ScalarFieldMP< GComplex_t > &) |
GComplex_t | H2S2 (const ScalarFieldMP< GComplex_t > &, const ScalarFieldMP< GReal_t > &, const int mu) |
![]() | |
GComplex_t | H2S2 (const ScalarFieldMP< GReal_t > &, const ScalarFieldMP< GComplex_t > &, const int mu) |
GComplex_t | H2S2 (const ScalarFieldMP< GComplex_t > &, const ScalarFieldMP< GComplex_t > &, const int mu) |
GComplex_t | L2S2limited (const ScalarFieldMP< GComplex_t > &, const ScalarFieldMP< GComplex_t > &, const GReal_t theta, tvector< tvector< tvector< GReal_t > > > *coeffstorage) |
![]() ![]() | |
ScalarFieldMP< GComplex_t > | reflect (const ScalarFieldMP< GComplex_t > &) |
Reflect with respect to origin (parity operator). | |
ScalarFieldMP< GComplex_t > | stepping (const ScalarFieldMP< GComplex_t > &, const int upOrDown) |
Stepping up and down operators. | |
ScalarFieldMP< GComplex_t > | mulCosTheta (const ScalarFieldMP< GComplex_t > &) |
Multiplication operator by ![]() | |
ScalarFieldMP< GComplex_t > | mulCosThetaSqr (const ScalarFieldMP< GComplex_t > &) |
Multiplication operator by ![]() | |
ScalarFieldMP< GComplex_t > | mulSinThetaSqr (const ScalarFieldMP< GComplex_t > &) |
Multiplication operator by ![]() | |
ScalarFieldMP< GComplex_t > | mulExpPmIPhi (const ScalarFieldMP< GComplex_t > &, const int sign) |
Multiplication operator by ![]() | |
ScalarFieldMP< GComplex_t > | partial_phi (const ScalarFieldMP< GComplex_t > &) |
![]() | |
ScalarFieldMP< GComplex_t > | Sqr_partial_phi (const ScalarFieldMP< GComplex_t > &) |
Second ![]() | |
ScalarFieldMP< GComplex_t > | sinTheta_partial_theta (const ScalarFieldMP< GComplex_t > &) |
![]() | |
ScalarFieldMP< GComplex_t > | partial_theta (const ScalarFieldMP< GComplex_t > &) |
![]() | |
ScalarFieldMP< GComplex_t > | partial_x (const ScalarFieldMP< GComplex_t > &) |
![]() | |
ScalarFieldMP< GComplex_t > | LaplaceS2 (const ScalarFieldMP< GComplex_t > &) |
Laplace operator on unit sphere for complex scalar field. | |
GReal_t | normBoundNeumann (const GComplex_t &a00, const GComplex_t &H2S2aa) |
Upper estimate of the ![]() ![]() | |
GComplex_t | optimalScalingNeumann (const GComplex_t &a00, const GComplex_t &H2S2aa) |
Scaling factor ![]() ![]() | |
ScalarFieldMP< GComplex_t > | divideByNeumann (const ScalarFieldMP< GComplex_t > &a, const ScalarFieldMP< GReal_t > &f, const GReal_t norm, const GReal_t errortolerance) |
Division of a complex field by a complex field, using Neumann series. | |
ScalarFieldMP< GComplex_t > | divideByNeumann (const ScalarFieldMP< GReal_t > &a, const ScalarFieldMP< GComplex_t > &f, const GReal_t norm, const GReal_t errortolerance) |
ScalarFieldMP< GComplex_t > | divideByNeumann (const ScalarFieldMP< GComplex_t > &a, const ScalarFieldMP< GComplex_t > &f, const GReal_t norm, const GReal_t errortolerance) |
GReal_t | tailErrorBoundS2 (const ScalarFieldMP< GComplex_t > &a, const int mup, const int mu, int *lmax, int *mmax) |
An upper bound for the tail sum in the ![]() ![]() | |
void | maxEval (const unsigned int) |
Integration error tolerance parameters for functional field expansion by AGM routine. | |
unsigned int | maxEval () |
void | reqAbsError (const GReal_t) |
GReal_t | reqAbsError () |
void | reqRelError (const GReal_t) |
GReal_t | reqRelError () |
Variables | |
const int | SobolevOrderS2 = 1000000 |
Maximal series expansion order for the numerical calculation of Sobolev related constants over the sphere. |
Multipole expansion classes and methods.
Coeff<GComplex_t> gridripper::multipole::conj | ( | const Y & | ) |
Complex conjugate a coefficient.
ScalarFieldMP<GComplex_t> gridripper::multipole::conj | ( | const ScalarFieldMP< GComplex_t > & | ) |
Complex conjugate a scalarfield on sphere.
Based on: .
ScalarFieldMP<GComplex_t> gridripper::multipole::divideByNeumann | ( | const ScalarFieldMP< GComplex_t > & | a, | |
const ScalarFieldMP< GReal_t > & | f, | |||
const GReal_t | norm, | |||
const GReal_t | errortolerance | |||
) |
Division of a complex field by a complex field, using Neumann series.
Based on: , where
is the identity operator and
is such an operator that
. Specially, if
is continuous, then it is absolute convergent if and only if
, furthermore
. If
is a multiplication by a measurable function
, then equality holds instead of inequality, and
.
a | : the field, which is in the nominator | |
f | : the field to be divided | |
norm | : an estimate for the essential supremum of ![]() | |
tolerance | : an error tolarance |
ScalarFieldMP<GReal_t> gridripper::multipole::divideByNeumann | ( | const ScalarFieldMP< GReal_t > & | a, | |
const ScalarFieldMP< GReal_t > & | f, | |||
const GReal_t | norm, | |||
const GReal_t | errortolerance | |||
) |
Division of a real field by a real field, using Neumann series.
Based on: same rule as for complex.
GReal_t gridripper::multipole::ExpPmIPhiYY_coupling | ( | const int | l1, | |
const int | m1, | |||
const int | l2, | |||
const int | sign | |||
) |
The overlap integrals .
Based on: idea from J. Phys. A31 (1998) 1101, and J. Phys. A32 (1999) 2601, and J. Phys. A35 (2002) 4187. Namely, on expanding of products of Y-s by Gaunt coefficients .
. This quantity is zero for: 1)
or
, 2)
or
, 3)
even.
Numerically verified using a Maple code.
unsigned int gridripper::multipole::ExpPmIPhiYY_coupling_size | ( | ) |
Show table size currently used in ExpPmIPhiYY_coupling.
ScalarFieldMP<GReal_t> gridripper::multipole::imag | ( | const ScalarFieldMP< GComplex_t > & | ) |
Imaginary part of a scalarfield on sphere.
GReal_t gridripper::multipole::intBarYl1mYl2m | ( | const int | l1, | |
const int | l2, | |||
const int | m, | |||
const GReal_t | theta, | |||
tvector< tvector< tvector< GReal_t > > > * | coeffstorage | |||
) |
Calculation of .
Based on: expansion of product by using Gaunt coefficients. Result:
,
being the Gaunt coefficients.
To avoid expensive evaluation, a table is stored (appended) to 'coeffstorage'. Initially should be empty, and should be different for every ' '. If the pointer to 'coeffstorage' is NULL, the coefficients are not stored, but calculated each time.
Numerically verified using Maple.
GReal_t gridripper::multipole::intYl0 | ( | const int | l, | |
const GReal_t | theta | |||
) |
Calculation of .
Based on: (from Journal of Modern Optics 36 (1989) 685, but may be easily verified from Rodriguez formula). Result is:
.
Numerically verified using Maple.
GReal_t gridripper::multipole::intYl1ExpMIPhi | ( | const int | l | ) |
Calculation of .
Based on: formula in J. Phys. A32 (1999) 2601. Namely: delivers final result (which is zero for even
). Thus:
delivers final result (which is zero for even
).
Numerically verified using a Maple and Mathematica code.
GComplex_t gridripper::multipole::L2S2 | ( | const ScalarFieldMP< GComplex_t > & | , | |
const ScalarFieldMP< GReal_t > & | ||||
) |
L^2 scalarproduct of fields.
Based on: .
GReal_t gridripper::multipole::L2S2 | ( | const ScalarFieldMP< GReal_t > & | , | |
const ScalarFieldMP< GReal_t > & | ||||
) |
L^2 scalarproduct of two fields on sphere.
Based on: .
GComplex_t gridripper::multipole::L2S2limited | ( | const ScalarFieldMP< GComplex_t > & | , | |
const ScalarFieldMP< GComplex_t > & | , | |||
const GReal_t | theta, | |||
tvector< tvector< tvector< GReal_t > > > * | coeffstorage | |||
) |
scalarproduct of fields, with limited integration domain to
.
Based on the Gaunt expansion of spherical harmonic products. (See Gaunt.h and Gaunt.cxx.) The necessary coefficient matrix is stored (appended) to 'coeffstorage', for a given ' '. Should be empty initially for a given '
'. If the pointer to 'coeffstorage' is NULL, the coefficient matrix is not stored in table, but calculated every time.
ScalarFieldMP<GReal_t> gridripper::multipole::LaplaceS2 | ( | const ScalarFieldMP< GReal_t > & | ) |
Laplace operator on unit sphere for real scalar field.
Based on: .
ScalarFieldMP<GComplex_t> gridripper::multipole::LaplaceS2 | ( | const ScalarFieldMP< GComplex_t > & | ) |
Laplace operator on unit sphere for complex scalar field.
Based on: .
ScalarFieldMP<GComplex_t> gridripper::multipole::mulCosTheta | ( | const ScalarFieldMP< GComplex_t > & | ) |
Multiplication operator by .
Based on: . Numerically verified by a C++ code.
ScalarFieldMP<GReal_t> gridripper::multipole::mulCosTheta | ( | const ScalarFieldMP< GReal_t > & | ) |
Multiplication operator by .
Based on the rule for Y basis. Numerically verified using a C++ code.
ScalarFieldMP<GComplex_t> gridripper::multipole::mulCosThetaSqr | ( | const ScalarFieldMP< GComplex_t > & | ) |
Multiplication operator by .
Based on: . Numerically verified by a C++ code.
ScalarFieldMP<GReal_t> gridripper::multipole::mulCosThetaSqr | ( | const ScalarFieldMP< GReal_t > & | ) |
Multiplication operator by .
Based on the rule for Y basis. Numerically verified using a C++ code.
ScalarFieldMP<GComplex_t> gridripper::multipole::mulExpPmIPhi | ( | const ScalarFieldMP< GComplex_t > & | , | |
const int | sign | |||
) |
Multiplication operator by .
Based on: matrix elements is Gaunt.h, Gaunt.cxx. Numerically verified by a Maple code.
ScalarFieldMP<GComplex_t> gridripper::multipole::mulSinThetaSqr | ( | const ScalarFieldMP< GComplex_t > & | ) |
Multiplication operator by .
Based on: . Numerically verified by a C++ code.
ScalarFieldMP<GReal_t> gridripper::multipole::mulSinThetaSqr | ( | const ScalarFieldMP< GReal_t > & | ) |
Multiplication operator by .
Based on: . Numerically verified using a C++ code.
GReal_t gridripper::multipole::normBoundNeumann | ( | const GComplex_t & | a00, | |
const GComplex_t & | H2S2aa | |||
) |
Upper estimate of the norm of
a complex field for Neumann series.
Based on: the Sobolev inequality, namely .
a00 | : the (0, 0) multipole component of the field | |
H2S2aa | : the ![]() |
GReal_t gridripper::multipole::normBoundNeumann | ( | const GReal_t | a00, | |
const GReal_t | H2S2aa | |||
) |
Upper estimate of the norm of
a real field for Neumann series expansion.
Based on: the Sobolev inequality, namely
.
a00 | : the (0, 0) multipole component of the field | |
H2S2aa | : the ![]() |
Coeff<GReal_t> gridripper::multipole::operator* | ( | const | GReal_t, | |
const Coeff< GReal_t > & | ||||
) |
Multiply a coefficient by a number.
Coeff<GReal_t> gridripper::multipole::operator* | ( | const | GReal_t, | |
const Yre & | ||||
) |
Tensor product of a number and an Yre.
Coeff<GComplex_t> gridripper::multipole::operator* | ( | const | GReal_t, | |
const Y & | ||||
) |
Tensor product of a number and an Y.
Coeff<GComplex_t> gridripper::multipole::operator* | ( | const | GReal_t, | |
const Coeff< GComplex_t > & | ||||
) |
Multiply a coefficient by a number.
ScalarFieldMP<GReal_t> gridripper::multipole::operator+ | ( | const ScalarFieldMP< GReal_t > & | , | |
const ScalarFieldMP< GReal_t > & | ||||
) |
ScalarFieldMP<GReal_t> algebraic operators.
ScalarFieldMP<GComplex_t> gridripper::multipole::operator+ | ( | const ScalarFieldMP< GComplex_t > & | , | |
const ScalarFieldMP< GComplex_t > & | ||||
) |
ScalarFieldMP<GComplex_t> algebraic operators.
Coeff<GReal_t> gridripper::multipole::operator- | ( | const Yre & | ) |
Negative of a coefficient.
Coeff<GComplex_t> gridripper::multipole::operator- | ( | const Y & | ) |
Negative of a coefficient.
Coeff<GComplex_t> gridripper::multipole::operator/ | ( | const Coeff< GComplex_t > & | , | |
const | GReal_t | |||
) |
Divide a coefficient by a number.
Coeff<GReal_t> gridripper::multipole::operator/ | ( | const Yre & | , | |
const | GReal_t | |||
) |
Tensor quotient of a number and an Yre.
Coeff<GReal_t> gridripper::multipole::operator/ | ( | const Coeff< GReal_t > & | , | |
const | GReal_t | |||
) |
Divide a coefficient by a number.
Coeff<GComplex_t> gridripper::multipole::operator/ | ( | const Y & | , | |
const | GReal_t | |||
) |
Tensor quotient of a number and an Y.
GReal_t gridripper::multipole::optimalScalingNeumann | ( | const GReal_t | a00, | |
const GReal_t | H2S2aa | |||
) |
Scaling factor , with which
is minimized for a real field
on sphere.
It is: .
a00 | : the (0, 0) multipole component of the field | |
H2S2aa | : the ![]() |
GComplex_t gridripper::multipole::optimalScalingNeumann | ( | const GComplex_t & | a00, | |
const GComplex_t & | H2S2aa | |||
) |
Scaling factor , with which
is minimized for a complex field $A$ on sphere.
It is: .
a00 | : the (0, 0) multipole component of the field | |
H2S2aa | : the ![]() |
ScalarFieldMP<GReal_t> gridripper::multipole::partial_phi | ( | const ScalarFieldMP< GReal_t > & | ) |
derivative on sphere for real scalar field.
Based on: .
ScalarFieldMP<GComplex_t> gridripper::multipole::partial_phi | ( | const ScalarFieldMP< GComplex_t > & | ) |
derivative on sphere for complex scalar field.
Based on: .
ScalarFieldMP<GComplex_t> gridripper::multipole::partial_theta | ( | const ScalarFieldMP< GComplex_t > & | ) |
derivative on sphere for complex field.
Based on the stepping operators and on the matrix elements of the multiplication operator by (Gaunt.h and Gaunt.cxx). Numerically verified by a Maple code.
ScalarFieldMP<GComplex_t> gridripper::multipole::partial_x | ( | const ScalarFieldMP< GComplex_t > & | ) |
derivative on sphere for complex scalar field.
(' '-derivative,
.) From Journal of Modern Optics 36 (1989) 685:
(easily verified from Rodriguez formula). Thus:
. Thus:
. Not implemented for
. Not even all
is in its domain in the
sense. Numerically verified using a C++ code.
ScalarFieldMP<GReal_t> gridripper::multipole::partial_x | ( | const ScalarFieldMP< GReal_t > & | ) |
( derivative on sphere for real scalar field.
(' '-derivative,
.) Based on the rule for Y basis. Not implemented for
. Not even all
is in its domain in the L^2 sense if
. Numerically verified using a C++ code.
ScalarFieldMP<GReal_t> gridripper::multipole::real | ( | const ScalarFieldMP< GComplex_t > & | ) |
Real part of a scalarfield on sphere.
ScalarFieldMP<GReal_t> gridripper::multipole::reflect | ( | const ScalarFieldMP< GReal_t > & | ) |
Reflect with respect to origin (parity operator).
Based on: .
ScalarFieldMP<GComplex_t> gridripper::multipole::reflect | ( | const ScalarFieldMP< GComplex_t > & | ) |
Reflect with respect to origin (parity operator).
Based on: .
ScalarFieldMP<GComplex_t> gridripper::multipole::sinTheta_partial_theta | ( | const ScalarFieldMP< GComplex_t > & | ) |
derivative on sphere for complex scalar field.
Based on: . Numerically verified using a C++ code.
ScalarFieldMP<GReal_t> gridripper::multipole::sinTheta_partial_theta | ( | const ScalarFieldMP< GReal_t > & | ) |
derivative on sphere for real scalar field.
Based on the rule for Y basis. Numerically verified using a C++ code.
GReal_t gridripper::multipole::SobolevConstantS2 | ( | const int | m | ) |
The minimal Sobolev constant in the inequality over the sphere: .
It is the sum .
ScalarFieldMP<GReal_t> gridripper::multipole::Sqr_partial_phi | ( | const ScalarFieldMP< GReal_t > & | ) |
Second derivative on sphere for real scalar field.
Based on: .
ScalarFieldMP<GComplex_t> gridripper::multipole::Sqr_partial_phi | ( | const ScalarFieldMP< GComplex_t > & | ) |
Second derivative on sphere for complex scalar field.
Based on: .
ScalarFieldMP<GComplex_t> gridripper::multipole::stepping | ( | const ScalarFieldMP< GComplex_t > & | , | |
const int | upOrDown | |||
) |
Stepping up and down operators.
Based on: (stepping up,
operator).
(stepping down,
operator).
Numerically verified using a C++ code.
GReal_t gridripper::multipole::tailErrorBoundS2 | ( | const ScalarFieldMP< GReal_t > & | , | |
const int | mup, | |||
const int | mu, | |||
int * | lmax, | |||
int * | mmax | |||
) |
An upper bound for the tail sum in norm, assuming that the field is in the space
.
Based on: same rule for complex.
GReal_t gridripper::multipole::tailErrorBoundS2 | ( | const ScalarFieldMP< GComplex_t > & | a, | |
const int | mup, | |||
const int | mu, | |||
int * | lmax, | |||
int * | mmax | |||
) |
An upper bound for the tail sum in the norm, assuming that the field is in the space
.
In this case, its multipole coefficients may be bound by the sequence . By adjusting
to the stored coefficients, and by summing up the tail of this bound in the
norm, one gets an upper estimate for the
norm of the tail error.
GReal_t gridripper::multipole::YreYreYre_coupling | ( | const int | l1, | |
const int | l2, | |||
const int | l3, | |||
const int | m1, | |||
const int | m2, | |||
const int | m3 | |||
) |
The same coupling for Yre basis.
They are real valued as Yre -s are real valued. Zero if not: 1) and
and
, and 2)
and
and
, and 3)
and
, and 4) only zero or two of the
are negative, and 5)
. See Bases.h for definition of Yre basis.
Not tested numerically. Not used so far in multiplication operator.
GComplex_t gridripper::multipole::YYreY_coupling | ( | const int | l1, | |
const int | l2, | |||
const int | l3, | |||
const int | m1, | |||
const int | m2, | |||
const int | m3 | |||
) |
GReal_t gridripper::multipole::YYY_coupling | ( | const int | l1, | |
const int | l2, | |||
const int | l3, | |||
const int | m1, | |||
const int | m2, | |||
const int | m3 | |||
) |
The spherical harmonic function Gaunt coefficient calculator routine.
Zero if not: 1) and
and
, and 2)
and
and
, and 3)
and
, and 4)
, and 5)
. Thus, by 4), they are real valued, which is not obvious otherwise. See Bases.h for definition of Y basis.
Numerically verified using Maple.
unsigned int gridripper::multipole::YYY_coupling_size | ( | ) |
Show table size currently used in YYY_coupling.
bool gridripper::multipole::YYY_coupling_zeros | ( | const int | l1, | |
const int | l2, | |||
const int | l3, | |||
const int | m1, | |||
const int | m2, | |||
const int | m3 | |||
) |
Returns true if the Gaunt coefficient of given index is known to be zero.
I.e. returns true if the output of YYY_coupling is not needed to be stored, as it will be zero anyway.
Numerically verified using Maple.