NcmFftlogSBesselJ

NcmFftlogSBesselJ — Logarithm fast fourier transform for a kernel given by the spatial correlation function multipoles.

Stability Level

Stable, unless otherwise indicated

Functions

Properties

guint ell Read / Write / Construct
double q Read / Write / Construct

Types and Values

Object Hierarchy

    GObject
    ╰── NcmFftlog
        ╰── NcmFftlogSBesselJ

Includes

#include <numcosmo/math/ncm_fftlog_sbessel_j.h>

Description

This object computes the function (see NcmFftlog) $$Y_n = \int_0^\infty t^{\frac{2\pi i n}{L}} K(t) dt,$$ where the kernel are the spherical Bessel function of the first kind multiplied by a power law,

\begin{equation}\label{eq:kerneljl} K(t) = t^q j_{\ell}(t). \end{equation}

Note that the spherical Bessel function's order, $\ell$ (“ell”), must be an integer number.

The spatial correlation function multipoles, $\xi_{\ell}^{(n)}(r)$, can be defined as (see Matsubara (2004) [arXiv])

\begin{equation}\label{eq:xi_multipoles} \xi_{\ell}^{(n)}(r) = \frac{(-1)^{n+\ell}}{r^{2n-\ell}} \int_{0}^{\infty} \frac{\mathrm{d} k}{2\pi^2} \frac{k^2}{k^{2n-\ell}} j_{\ell}(kr) P(k) \,\, . \end{equation} Where, $P(k)$ is the power spectrum (see NcmPowspec).

The multipoles integral can be written in the following format

\begin{equation*} \xi_{\ell}^{(n)}(r) = \frac{(-1)^{n+\ell}}{r^2} \int_{0}^{\infty} \mathrm{d}k \, (kr)^{2-2n+\ell} \, j_{\ell}(kr) P(k) \,\, . \end{equation*}

The object NcmFftlogSBesselJ can be used to evaluate the above integral in several ways. For example, the integral can be evaluated by defining the function (see NcmFftlog for more information) \begin{equation*} F(k) = k^{2-2n+\ell} \, P(k) \end{equation*} and the kernel \begin{equation*} K(t) = j_{\ell}(t) \,\, . \end{equation*} Where, $t=kr$ and $r^{(2-2n+\ell)}$ was taken out of the integral. Comparing this kernel with the one defined in Eq. \eqref{eq:kerneljl}, we have $q=0$.

But instead, one might choose another format for the function, \begin{equation*} F(k) = k^{\ell} \, P(k) \end{equation*} and the kernel \begin{equation*} K(t) = t^{2-2n} \, j_{\ell}(t) \,\, , \end{equation*} which evaluates the same integral, but now with $q=2-2n$, and in this case, the term $r^{\ell}$ was the one taken out of the integral. Therefore, the parameter $q$ is the power of the wavenumber $k$ times the distance $r$, $t=kr$, included to the kernel with the spherical Bessel function. Hereafter, it will be referred to as "spherical Bessel power" (“q”).

In general, $q=0$ is an accurate and fast choice to make, but it is interesting to perform tests to evaluate which kernel format fits best for each type of integral.

The NcmPowspecCorr3d object already evaluates Eq. \eqref{eq:xi_multipoles} for the case of the monopole, $n=\ell=0$, with support for redshift evolution.

Functions

ncm_fftlog_sbessel_j_new ()

NcmFftlogSBesselJ *
ncm_fftlog_sbessel_j_new (guint ell,
                          gdouble lnr0,
                          gdouble lnk0,
                          gdouble Lk,
                          guint N);

Creates a new fftlog Spherical Bessel J object.

Parameters

ell

Spherical Bessel Integer order

 

lnr0

output center $\ln(r_0)$

 

lnk0

input center $\ln(k_0)$

 

Lk

input/output interval size

 

N

number of knots

 

Returns

a new NcmFftlogSBesselJ.

[transfer full]


ncm_fftlog_sbessel_j_set_ell ()

void
ncm_fftlog_sbessel_j_set_ell (NcmFftlogSBesselJ *fftlog_jl,
                              const guint ell);

Sets ell as the Spherical Bessel integer order $\ell$.

Parameters

fftlog_jl

a NcmFftlogSBesselJ

 

ell

Spherical Bessel integer order $\ell$

 

ncm_fftlog_sbessel_j_get_ell ()

guint
ncm_fftlog_sbessel_j_get_ell (NcmFftlogSBesselJ *fftlog_jl);

Parameters

fftlog_jl

a NcmFftlogSBesselJ

 

Returns

the current Spherical Bessel integer order $\ell$.


ncm_fftlog_sbessel_j_set_q ()

void
ncm_fftlog_sbessel_j_set_q (NcmFftlogSBesselJ *fftlog_jl,
                            const gdouble q);

Sets q as the Spherical Bessel power.

Parameters

fftlog_jl

a NcmFftlogSBesselJ

 

q

Spherical Bessel power factor $q$

 

ncm_fftlog_sbessel_j_get_q ()

gdouble
ncm_fftlog_sbessel_j_get_q (NcmFftlogSBesselJ *fftlog_jl);

Parameters

fftlog_jl

a NcmFftlogSBesselJ

 

Returns

the current Spherical Bessel power $q$.


ncm_fftlog_sbessel_j_set_best_lnr0 ()

void
ncm_fftlog_sbessel_j_set_best_lnr0 (NcmFftlogSBesselJ *fftlog_jl);

Sets the value of $\ln(r_0)$ which gives the best results for the transformation based on the current value of $\ln(k_0)$, this is based in the rule of thumb $\mathrm{max}_{x^*}(j_l)$ where $ x^* \approx l + 1$.

Parameters

fftlog_jl

a NcmFftlogSBesselJ

 

ncm_fftlog_sbessel_j_set_best_lnk0 ()

void
ncm_fftlog_sbessel_j_set_best_lnk0 (NcmFftlogSBesselJ *fftlog_jl);

Sets the value of $\ln(k_0)$ which gives the best results for the transformation based on the current value of $\ln(r_0)$, this is based in the rule of thumb $\mathrm{max}_{x^*}(j_l)$ where $ x^* \approx l + 1$.

Parameters

fftlog_jl

a NcmFftlogSBesselJ

 

Types and Values

NCM_TYPE_FFTLOG_SBESSEL_J

#define NCM_TYPE_FFTLOG_SBESSEL_J (ncm_fftlog_sbessel_j_get_type ())

NcmFftlogSBesselJ

typedef struct _NcmFftlogSBesselJ NcmFftlogSBesselJ;

Property Details

The “ell” property

  “ell”                      guint

The spherical Bessel integer order.

Owner: NcmFftlogSBesselJ

Flags: Read / Write / Construct

Default value: 0


The “q” property

  “q”                        double

The spherical Bessel power, i.e., the power of the variable $t=kr$, included to the kernel $K(t)$ multiplying the spherical Bessel function.

Owner: NcmFftlogSBesselJ

Flags: Read / Write / Construct

Default value: 0