Top |
#define | NCM_TYPE_SF_SPHERICAL_HARMONICS |
struct | NcmSFSphericalHarmonicsK |
struct | NcmSFSphericalHarmonics |
struct | NcmSFSphericalHarmonicsP |
#define | NCM_SF_SPHERICAL_HARMONICS_MAX_LEN |
#define | NCM_SF_SPHERICAL_HARMONICS_DEFAULT_ABSTOL |
#define | NCM_SF_SPHERICAL_HARMONICS_ARRAY_DEFAULT_ABSTOL |
#define | NCM_SF_SPHERICAL_HARMONICS_EPS |
#define | NCM_SF_SPHERICAL_HARMONICS_LATERAL_MOVE |
const gdouble | sn_2l0_5 |
const gdouble | snm1_2l0_2 |
const gdouble | sqrt1mx2 |
const gdouble | x |
const gint | l0 |
const gint | m |
const gint | twol0 |
const gint | l0mm |
const gint | l0pm |
const gdouble | Llp1 |
const gdouble | Ll |
const gdouble | Mlp1 |
const gdouble | Ml |
const gdouble | Pl0m |
const gdouble | Pl0p1m |
gdouble | min_Plm |
const gdouble | abs_Plm |
const gint | lmax |
GBoxed ├── NcmSFSphericalHarmonicsY ╰── NcmSFSphericalHarmonicsYArray GObject ╰── NcmSFSphericalHarmonics
Object to compute the spherical harmonics $\bar{Y}_l^m (x)$ and its derivatives $\bar{Y}_{l+1}^m (x)$ and $\bar{Y}_{l+2}^m (x)$, where $x = \cos \theta$.
NcmSFSphericalHarmonicsY * ncm_sf_spherical_harmonics_Y_new (NcmSFSphericalHarmonics *spha
,const gdouble abstol
);
Creates a new NcmSFSphericalHarmonicsY object.
NcmSFSphericalHarmonicsY *
ncm_sf_spherical_harmonics_Y_dup (NcmSFSphericalHarmonicsY *sphaY
);
Duplicates a NcmSFSphericalHarmonicsY object.
void
ncm_sf_spherical_harmonics_Y_free (NcmSFSphericalHarmonicsY *sphaY
);
Frees a NcmSFSphericalHarmonicsY object.
gdouble
ncm_sf_spherical_harmonics_Y_get_lm (NcmSFSphericalHarmonicsY *sphaY
);
gdouble
ncm_sf_spherical_harmonics_Y_get_lp1m (NcmSFSphericalHarmonicsY *sphaY
);
gdouble
ncm_sf_spherical_harmonics_Y_get_x (NcmSFSphericalHarmonicsY *sphaY
);
gint
ncm_sf_spherical_harmonics_Y_get_l (NcmSFSphericalHarmonicsY *sphaY
);
gint
ncm_sf_spherical_harmonics_Y_get_m (NcmSFSphericalHarmonicsY *sphaY
);
void
ncm_sf_spherical_harmonics_Y_next_l (NcmSFSphericalHarmonicsY *sphaY
);
Move the recursion for $x$ to $l = l + 1$.
void ncm_sf_spherical_harmonics_Y_next_l2 (NcmSFSphericalHarmonicsY *sphaY
,gdouble * restrict Yblm
);
Move the recursion for $x$ to $l = l + 2$.
void ncm_sf_spherical_harmonics_Y_next_l4 (NcmSFSphericalHarmonicsY *sphaY
,gdouble * restrict Yblm
);
Move the recursion for $x$ to $l = l + 4$.
void ncm_sf_spherical_harmonics_Y_next_l2pn (NcmSFSphericalHarmonicsY *sphaY
,gdouble * restrict Yblm
,const gint n
);
void
ncm_sf_spherical_harmonics_Y_next_m (NcmSFSphericalHarmonicsY *sphaY
);
Restart the recursion for $x$ at $l = m + 1,\; m = m + 1$. If the value of $Ybll < a$ where $a$ is the absolute tolerance, advance $l$ until the tolerance is reached.
void
ncm_sf_spherical_harmonics_Y_reset (NcmSFSphericalHarmonicsY *sphaY
);
NcmSFSphericalHarmonicsYArray * ncm_sf_spherical_harmonics_Y_array_new (NcmSFSphericalHarmonics *spha
,const gint len
,const gdouble abstol
);
Creates a new NcmSFSphericalHarmonicsYArray object. This object is used to
contain the results of the computation of the spherical harmonics for an
array of angles $\theta_i$ with length len
.
NcmSFSphericalHarmonicsYArray *
ncm_sf_spherical_harmonics_Y_array_dup
(NcmSFSphericalHarmonicsYArray *sphaYa
);
Duplicates a NcmSFSphericalHarmonicsYArray object.
void
ncm_sf_spherical_harmonics_Y_array_free
(NcmSFSphericalHarmonicsYArray *sphaYa
);
Frees a NcmSFSphericalHarmonicsYArray object.
gdouble ncm_sf_spherical_harmonics_Y_array_get_lm (NcmSFSphericalHarmonicsYArray *sphaYa
,const gint len
,const gint i
);
gdouble ncm_sf_spherical_harmonics_Y_array_get_lp1m (NcmSFSphericalHarmonicsYArray *sphaYa
,const gint len
,const gint i
);
gdouble ncm_sf_spherical_harmonics_Y_array_get_x (NcmSFSphericalHarmonicsYArray *sphaYa
,const gint i
);
gint
ncm_sf_spherical_harmonics_Y_array_get_l
(NcmSFSphericalHarmonicsYArray *sphaYa
);
gint
ncm_sf_spherical_harmonics_Y_array_get_m
(NcmSFSphericalHarmonicsYArray *sphaYa
);
void ncm_sf_spherical_harmonics_Y_array_next_l (NcmSFSphericalHarmonicsYArray *sphaYa
,const gint len
);
void ncm_sf_spherical_harmonics_Y_array_next_l2 (NcmSFSphericalHarmonicsYArray *sphaYa
,const gint len
,gdouble * restrict Yblm
);
void ncm_sf_spherical_harmonics_Y_array_next_l4 (NcmSFSphericalHarmonicsYArray *sphaYa
,const gint len
,gdouble * restrict Yblm
);
void ncm_sf_spherical_harmonics_Y_array_next_l2pn (NcmSFSphericalHarmonicsYArray *sphaYa
,const gint len
,gdouble * restrict Yblm
,const gint n
);
void ncm_sf_spherical_harmonics_Y_array_next_m (NcmSFSphericalHarmonicsYArray *sphaYa
,const gint len
);
void ncm_sf_spherical_harmonics_Y_array_reset (NcmSFSphericalHarmonicsYArray *sphaYa
,const gint len
);
NcmSFSphericalHarmonics *
ncm_sf_spherical_harmonics_new (const gint lmax
);
Creates a new NcmSFSphericalHarmonics object.
NcmSFSphericalHarmonics *
ncm_sf_spherical_harmonics_ref (NcmSFSphericalHarmonics *spha
);
Increase the reference of spha
by one.
void
ncm_sf_spherical_harmonics_free (NcmSFSphericalHarmonics *spha
);
Decrease the reference count of spha
by one.
void
ncm_sf_spherical_harmonics_clear (NcmSFSphericalHarmonics **spha
);
Decrease the reference count of spha
by one, and sets the pointer *spha
to
NULL.
void ncm_sf_spherical_harmonics_set_lmax (NcmSFSphericalHarmonics *spha
,const gint lmax
);
Sets the maximum l to lmax
.
guint
ncm_sf_spherical_harmonics_get_lmax (NcmSFSphericalHarmonics *spha
);
Gets the maximum l to lmax
.
void ncm_sf_spherical_harmonics_start_rec (NcmSFSphericalHarmonics *spha
,NcmSFSphericalHarmonicsY *sphaY
,const gdouble theta
);
Start recursion for $\theta$ at $l = 0,\; m = 0$.
void ncm_sf_spherical_harmonics_start_rec_array (NcmSFSphericalHarmonics *spha
,NcmSFSphericalHarmonicsYArray *sphaYa
,const gint len
,const gdouble *theta
);
Start recursion for the array $\theta_i$ at $l = 0,\; m = 0$. The array theta
must have
length len
.
NcmSFSphericalHarmonicsK * ncm_sf_spherical_harmonics_get_Klm (NcmSFSphericalHarmonics *spha
,const gint l0
,const gint m
);
Gets an array of NcmSFSphericalHarmonicsK with the coeficients necessary to move the recurence from $(l_0, m)\; \to\; (l_\mathrm{max}, m)$.
[skip]
a pointer to an array of NcmSFSphericalHarmonicsK.
[array][element-type NcmSFSphericalHarmonicsK]
#define NCM_TYPE_SF_SPHERICAL_HARMONICS (ncm_sf_spherical_harmonics_get_type ())
struct NcmSFSphericalHarmonicsK { gdouble l; gdouble lp1; };
Recurrence coefficients.
struct NcmSFSphericalHarmonicsP { gdouble x; gdouble sqrt1mx2; gdouble l0m; gdouble l0p1m; gdouble lm; gdouble lp1m; };
Boxed P values.
#define NCM_SF_SPHERICAL_HARMONICS_DEFAULT_ABSTOL (1.0e-20)
#define NCM_SF_SPHERICAL_HARMONICS_ARRAY_DEFAULT_ABSTOL (1.0e-40)
const gdouble abs_Plm = fabs (sphaYa->Ylm[NCM_SF_SPHERICAL_HARMONICS_ARRAY_INDEX (i, 0, len)]);