BipolarSphericalHarmonics
Documentation for BipolarSphericalHarmonics.
BipolarSphericalHarmonics.BSHCache
BipolarSphericalHarmonics.biposh
BipolarSphericalHarmonics.biposh!
BipolarSphericalHarmonics.biposh_flippoints
BipolarSphericalHarmonics.cache
BipolarSphericalHarmonics.kronindex
BipolarSphericalHarmonics.kronindex
BipolarSphericalHarmonics.monopolarharmonics
BipolarSphericalHarmonics.monopolarharmonics!
BipolarSphericalHarmonics.BSHCache
— TypeBSHCache
Wrapper around monopolar harmonics that are coupled to evaluate the bipolar harmonics. The cache may be constructed using cache
.
BipolarSphericalHarmonics.biposh
— Functionbiposh(SHT, θ1, ϕ1, θ2, ϕ2, j, m, j1, j2)
Evaluate the bipolar harmonic $Y_{jm}^{j_1, j_2}((\theta_1, \phi_1), (\theta_2, \phi_2))$. SHT
may be one of SH()
, GSH()
and VSH(YT(), B())
where YT
and B
are vector harmonic and basis types offered by VectorSphericalHarmonics.jl
.
biposh(SHT, θ1, ϕ1, θ2, ϕ2, j, m, j1j2modes)
Evaluate the bipolar harmonic $Y_{jm}^{j_1, j_2}((\theta_1, \phi_1), (\theta_2, \phi_2))$ for all (j1,j2)
in j1j2modes
.
biposh(SHT, θ1, ϕ1, θ2, ϕ2, jmcoll::SphericalHarmonicModes.LM, j1j2...)
Evaluate the bipolar harmonics $Y_{jm}^{j_1, j_2}((\theta_1, \phi_1), (\theta_2, \phi_2))$ for all (j,m)
in jmcoll
, where j1j2
may be either a 2-Tuple (j1,j2)
or a collection of 2-Tuples.
BipolarSphericalHarmonics.biposh!
— Functionbiposh!(Y12::AbstractVetor, B::BSHCache, θ1, ϕ1, θ2, ϕ2, j, m, j1, j2)
Evaluate the bipolar harmonic $Y_{jm}^{j_1, j_2}((\theta_1, \phi_1), (\theta_2, \phi_2))$ and store the result in Y12
. The cache B
determines the type of harmonic evaluated.
BipolarSphericalHarmonics.biposh_flippoints
— Functionbiposh_flippoints(SHT, θ1, ϕ1, θ2, ϕ2, j, m, j1, j2)
Evaluate the bipolar harmonics $Y_{jm}^{j_1, j_2}((\theta_1, \phi_1), (\theta_2, \phi_2))$ and $Y_{jm}^{j_1, j_2}((\theta_2, \phi_2), (\theta_1, \phi_1))$ in one pass, utilizing symmetries of the Clebsch-Gordean coefficients.
BipolarSphericalHarmonics.cache
— Methodcache(SHT, T::Type, j12max)
Allocate the arrays required to evaluate the monopolar harmonics for all modes 0 ≤ j1, j2 ≤ j12max
. SHT
may be one of SH()
, GSH()
, or VSH(YT(), B())
where YT
and B
are vector harmonic and basis types offered by VectorSphericalHarmonics.jl
. T
is a real type that determines the precision of the monopolar harmonics.
The monopolar harmonics must be initialized by calling monopolarharmonics!
before the cache is used.
BipolarSphericalHarmonics.kronindex
— Methodkronindex(::GSH, ind1, ind2)
Given the indices of each GSH
vector, return the corresponding index of the bipolar spherical harmonic. The indices ind1
and ind2
must lie within -1
and 1
.
BipolarSphericalHarmonics.kronindex
— Methodkronindex(::VSH, ind11, ind12, ind21, ind22)
Given the indices of each VSH
matrix, return the corresponding index of the bipolar spherical harmonic. Note that the indices correspond to ℓ - j
for the Irreducible
vector spherical harmonic $\mathbf{Y}^{\ell}_{jm}(\hat{n})$.
BipolarSphericalHarmonics.monopolarharmonics!
— Methodmonopolarharmonics!(B::BSHCache, θ1, ϕ1, θ2, ϕ2, j1, j2)
Update B
with the monopolar harmonics $Y_{j_1,m_1}(\theta_1, \phi_1)$ and $Y_{j_2,m_2}(\theta_2, \phi_2)$, where $Y$ may either be a scalar or a vector harmonic depending on B
.
BipolarSphericalHarmonics.monopolarharmonics
— Methodmonopolarharmonics(SHT, θ1, ϕ1, θ2, ϕ2, j1, j2)
Evaluate the monopolar harmonics $Y_{j_1,m_1}(\theta_1, \phi_1)$ and $Y_{j_2,m_2}(\theta_2, \phi_2)$, where $Y$ may either be a scalar or a vector harmonic depending on SHT
, which may be one of SH()
, GSH()
, or VSH(YT(), B())
where YT
and B
are vector harmonic and basis types offered by VectorSphericalHarmonics.jl
.