CLASSpp Manual
Cosmology reference and developer manual
Loading...
Searching...
No Matches
UltraRelativisticSpecies Class Reference

#include <ultra_relativistic.h>

+ Inheritance diagram for UltraRelativisticSpecies:

Data Structures

struct  PerturbLayout
 

Public Member Functions

double GetOmega0 () const override
 
double GetRadiationOmega0 () const override
 
void RegisterBackgroundIndices (int &index_bg) override
 
void ComputeBackground (double a, const double *pvecback_B, double *pvecback) override
 
double Rho (const double *pvecback) const override
 
double P (const double *pvecback) const override
 
double PPrime (double a, double H, const double *pvecback_B, const double *pvecback) const override
 
bool IsFreestreaming () const override
 
void WriteBackgroundColumnTitles (BackgroundColumnWriter &w) const override
 
void WriteBackgroundData (const double *pvecback, BackgroundColumnWriter &w) const override
 
void RegisterTransferSourceIndices (int &index_tp, const SourceRequestContext &ctx) override
 
std::unique_ptr< BaseSpecies::PerturbLayoutCreatePerturbLayout () const override
 
void RegisterPerturbationIndices (BaseSpecies::PerturbLayout &layout, perturb_vector *pv, const precision *ppr, int &index_pt, const perturb_workspace *ppw, int gauge) override
 
void PerturbDerivs (const BaseSpecies::PerturbLayout &layout, double tau, const double *y, double *dy, const perturb_parameters_and_workspace &ppaw) const override
 
StressEnergyContribution StressEnergy (const BaseSpecies::PerturbLayout &layout, const perturb_vector *pv, const double *y, const double *pvecback, const perturb_workspace *ppw) const override
 
void FillSources (const BaseSpecies::PerturbLayout &layout, const double *y, const double *dy, PerturbSourceContext &ctx) const override
 
void ApplyInitialConditions (const BaseSpecies::PerturbLayout &layout, double *y, const PerturbIcContext &ctx) override
 
void PerturbSynchronousToNewtonian (const BaseSpecies::PerturbLayout &layout, double *y, const PerturbIcContext &ctx) override
 
void MarkUsedInSources (const BaseSpecies::PerturbLayout &layout, const perturb_workspace *ppw, int *used_in_sources) const override
 
void CopyPerturbationsAcrossSwitch (const BaseSpecies::PerturbLayout &old_layout, const BaseSpecies::PerturbLayout &new_layout, const double *old_y, double *new_y, const PerturbSwitchContext &ctx) const override
 
void WriteOutputColumns (PerturbColumnWriter &writer, const PerturbationsModule &mod, file_format fmt, TransferColumnSection section=TransferColumnSection::all) const override
 
void PrintVariables (PerturbColumnWriter &writer, double tau, const double *y, const PerturbationsModule &mod, const perturb_workspace *ppw) const override
 
- Public Member Functions inherited from BaseSpecies
virtual void SetBackgroundModule (const BackgroundModule *)
 
virtual void SetThermodynamicsModule (const ThermodynamicsModule *)
 
virtual void SetPerturbs (const perturbs *)
 
virtual std::optional< double > GetParam (const std::string &) const
 
virtual void RegisterIntegrationIndices (int &index_bi)
 
virtual void SetBackgroundInitialConditions (const BackgroundICContext &ctx)
 
virtual void BackgroundDerivs (double tau, const double *y, double *dy, const double *pvecback)
 
virtual void FinalizeBackground (double a, double H, const double *pvecback_B, double *pvecback)
 
virtual double FreestreamingRho (const double *pvecback) const
 
bool IsPresent () const
 
virtual void ProcessBackgroundTable (const double *, int, int, const double *)
 
virtual void PerturbVectorDerivs (const PerturbLayout &, double, const double *, double *, const perturb_parameters_and_workspace &) const
 
virtual void PerturbTensorDerivs (const PerturbLayout &, double, const double *, double *, const perturb_parameters_and_workspace &) const
 
virtual void WriteTensorOutputColumnTitles (std::string &) const
 
virtual void ContributeTensorGwSource (const PerturbLayout &, double, const double *, perturb_workspace *) const
 
virtual double RhoDotOverRho (const double *pvecback, double a_prime_over_a) const
 
virtual double DarkRadiationRhoToday (const double *) const
 
virtual double NeutrinoOmega0 () const
 
virtual double NeffContribution (double) const
 
virtual void PrintNeffInfo () const
 
virtual void PrintMassInfo () const
 
virtual double TensorMasslessRelativisticRho (const double *) const
 
virtual void CheckUltraRelativisticAtIc (const double *, double) const
 
virtual bool IsUltraRelativisticAtIc (const double *, double) const
 
virtual void WarnIfTooHeavyForHalofit (double) const
 
virtual double BackgroundAIni (double a_proposed, double) const
 
bool ClustersAsMatterCached () const
 
virtual void FinalizeMatterClassification ()
 
virtual bool ClustersAsMatter () const
 
virtual bool IsColdMatterSpecies () const
 
virtual bool HasWarmMatter () const
 

Additional Inherited Members

- Public Types inherited from BaseSpecies
enum class  EnergyType
 
- Protected Member Functions inherited from BaseSpecies
void ApplyFluidLikeNewtonianShift (double *y, int idx_delta, int idx_theta, const double *pvecback, const PerturbIcContext &ctx) const
 

Detailed Description

Ultra-relativistic neutrinos / relics (UR) species.

Background: rho_ur = Omega0_ur * H0^2 / a^4, p_ur = rho_ur / 3, dp/dloga = -4/3 * rho_ur. Perturbations: full Boltzmann hierarchy in l (delta, theta, shear, l3..l_max). Supports UFA (fluid approximation) and RSA (radiation streaming). Non-standard ceff2_ur and cvis2_ur terms from ppt->three_ceff2_ur etc.

Member Function Documentation

◆ GetOmega0()

double UltraRelativisticSpecies::GetOmega0 ( ) const
inlineoverridevirtual

Returns the species' contribution to Omega0 (used for budget closure during construction). For composites, this defaults to summing children. For decay-product species starting at zero, override returning 0.

Implements BaseSpecies.

◆ GetRadiationOmega0()

double UltraRelativisticSpecies::GetRadiationOmega0 ( ) const
inlineoverridevirtual

UR is radiation: its Omega0 seeds the early-time radiation density.

Reimplemented from BaseSpecies.

◆ RegisterBackgroundIndices()

void UltraRelativisticSpecies::RegisterBackgroundIndices ( int &  index_bg)
overridevirtual

Claim consecutive slots in pvecback. Called once during background_indices(). Implementation must assign index_bg_rho_ (and any other needed indices) and increment index_bg accordingly.

Implements BaseSpecies.

◆ ComputeBackground()

void UltraRelativisticSpecies::ComputeBackground ( double  a,
const double *  pvecback_B,
double *  pvecback 
)
overridevirtual

Compute species background quantities at scale factor a. pvecback_B is the current ODE integration vector. Write density (and any other owned quantities) into pvecback.

Implements BaseSpecies.

◆ Rho()

double UltraRelativisticSpecies::Rho ( const double *  pvecback) const
overridevirtual

Energy density at current background state.

Implements BaseSpecies.

◆ P()

double UltraRelativisticSpecies::P ( const double *  pvecback) const
overridevirtual

Pressure at current background state.

Implements BaseSpecies.

◆ PPrime()

double UltraRelativisticSpecies::PPrime ( double  a,
double  H,
const double *  pvecback_B,
const double *  pvecback 
) const
overridevirtual

Post-Friedmann. This species' conformal-time pressure derivative p' (a' / a = a*H). pvecback_B is the ODE state (IN); pvecback is fully populated through H. Default 0 (matter / Lambda).

Reimplemented from BaseSpecies.

◆ IsFreestreaming()

bool UltraRelativisticSpecies::IsFreestreaming ( ) const
inlineoverridevirtual

True for species that are free-streaming and massless at IC time (deep radiation domination). Used to accumulate rho_nu / fracnu in perturbation IC setup. Static at construction time. Default: false.

Reimplemented from BaseSpecies.

◆ WriteBackgroundColumnTitles()

void UltraRelativisticSpecies::WriteBackgroundColumnTitles ( BackgroundColumnWriter ) const
overridevirtual

Write this species' background column titles into writer. Called by BackgroundModule::background_output_titles(). Default: no-op (species with no background output need not override).

Reimplemented from BaseSpecies.

◆ WriteBackgroundData()

void UltraRelativisticSpecies::WriteBackgroundData ( const double *  ,
BackgroundColumnWriter  
) const
overridevirtual

Write this species' background data values into writer. pvecback is the full background vector at the current time step. Called by BackgroundModule::background_output_data(). Default: no-op.

Reimplemented from BaseSpecies.

◆ RegisterTransferSourceIndices()

void UltraRelativisticSpecies::RegisterTransferSourceIndices ( int &  ,
const SourceRequestContext  
)
overridevirtual

Register this species' transfer-source (index_tp) slots. Set once in perturb_indices_of_perturbs() before the k-loop; mirrors RegisterBackgroundIndices (k-independent, cached in a plain species member). Takes no PerturbLayout — that absence marks it as non-per-k state. Default: no-op (species that emit no transfer functions).

Reimplemented from BaseSpecies.

◆ CreatePerturbLayout()

std::unique_ptr< BaseSpecies::PerturbLayout > UltraRelativisticSpecies::CreatePerturbLayout ( ) const
inlineoverridevirtual

Produce a fresh layout for this species. Called once per pv during perturb_vector_init, before Register*PerturbationIndices. Default: empty base PerturbLayout (suitable for species with no perturbation slots, or as a placeholder during migration).

Reimplemented from BaseSpecies.

◆ RegisterPerturbationIndices()

void UltraRelativisticSpecies::RegisterPerturbationIndices ( BaseSpecies::PerturbLayout layout,
perturb_vector pv,
const precision ppr,
int &  index_pt,
const perturb_workspace ppw,
int  gauge 
)
overridevirtual

Registers delta_ur, theta_ur, shear_ur, and (when UFA is off) l3..l_max_ur.

Reimplemented from BaseSpecies.

◆ PerturbDerivs()

void UltraRelativisticSpecies::PerturbDerivs ( const BaseSpecies::PerturbLayout layout,
double  tau,
const double *  y,
double *  dy,
const perturb_parameters_and_workspace ppaw 
) const
overridevirtual

Contribute to dy for the scalar perturbation ODE at conformal time tau. The PerturbScalarContext inside ppaw->ppw has pre-computed metric terms, cross-species state (delta_g, theta_g, theta_b, ...), and approximation flags. The layout is this species' PerturbLayout slot (ppw->pv->species_layouts[i]); composites receive their own layout and pass nested sub-layouts to children.

Implements BaseSpecies.

◆ StressEnergy()

BaseSpecies::StressEnergyContribution UltraRelativisticSpecies::StressEnergy ( const BaseSpecies::PerturbLayout layout,
const perturb_vector pv,
const double *  y,
const double *  pvecback,
const perturb_workspace ppw 
) const
overridevirtual

All scalar stress-energy perturbations in one call.

Implements BaseSpecies.

◆ FillSources()

void UltraRelativisticSpecies::FillSources ( const BaseSpecies::PerturbLayout ,
const double *  ,
const double *  ,
PerturbSourceContext  
) const
overridevirtual

Write per-k, per-tau source values for this species into the source table. Called in perturb_sources_member() after metric/temperature sources are set. Use ctx.p_mod->SetSourceValue(ctx.index_md, ctx.index_ic, ctx.p_mod->index_tp_XXX_, ctx.index_tau, ctx.index_k, value). All addressing (index_md, index_ic, index_k, index_tau) is in ctx. Default: no-op.

Reimplemented from BaseSpecies.

◆ ApplyInitialConditions()

void UltraRelativisticSpecies::ApplyInitialConditions ( const BaseSpecies::PerturbLayout ,
double *  ,
const PerturbIcContext  
)
overridevirtual

Write synchronous-gauge initial conditions for this species into y[]. y[] == ppw->pv->y. The module pre-computes ctx.delta_g_ic, ctx.delta_ur, etc. Guard each IC type: if (ctx.index_ic == ctx.p_mod->index_ic_ad_) { ... } Newtonian gauge transformation is handled by the module after this loop. Default: no-op.

Reimplemented from BaseSpecies.

◆ PerturbSynchronousToNewtonian()

void UltraRelativisticSpecies::PerturbSynchronousToNewtonian ( const BaseSpecies::PerturbLayout ,
double *  ,
const PerturbIcContext  
)
overridevirtual

Transform this species' own perturbation variables from synchronous to Newtonian gauge, in place in y[]. Called by the module after alpha is known (ctx.alpha / ctx.alpha_prime filled). The synchronous IC is already in y[] (ApplyInitialConditions runs in both gauges), so this is a pure shift/re-seed. Default: no-op (species with no perturbed variables, e.g. cosmological constant).

Reimplemented from BaseSpecies.

◆ MarkUsedInSources()

void UltraRelativisticSpecies::MarkUsedInSources ( const BaseSpecies::PerturbLayout layout,
const perturb_workspace ppw,
int *  used_in_sources 
) const
overridevirtual

Scalar mode: UR l>=3 multipoles not needed in sources when both rsa and ufa are off.

Reimplemented from BaseSpecies.

◆ CopyPerturbationsAcrossSwitch()

void UltraRelativisticSpecies::CopyPerturbationsAcrossSwitch ( const BaseSpecies::PerturbLayout old_layout,
const BaseSpecies::PerturbLayout new_layout,
const double *  old_y,
double *  new_y,
const PerturbSwitchContext ctx 
) const
overridevirtual

Copy UR perturbations across an approximation switch (UFA on/off transition).

Reimplemented from BaseSpecies.

◆ WriteOutputColumns()

void UltraRelativisticSpecies::WriteOutputColumns ( PerturbColumnWriter ,
const PerturbationsModule &  ,
file_format  ,
BaseSpecies::TransferColumnSection  = TransferColumnSection::all 
) const
overridevirtual

Append this species' output columns (delta, theta) to writer. Called from perturb_output_titles (title mode) and perturb_output_data (data mode). In class_format, the module may call this separately for density and velocity sections to preserve the historical transfer-column ordering. Use writer.Add(title, mod.index_tp_XXX_, active) — writer looks up tk[tp_index].

Reimplemented from BaseSpecies.

◆ PrintVariables()

void UltraRelativisticSpecies::PrintVariables ( PerturbColumnWriter ,
double  ,
const double *  ,
const PerturbationsModule &  ,
const perturb_workspace  
) const
overridevirtual

Append this species' time-evolution variables to writer. Called from perturb_prepare_k_output (title mode, tau=0/y=nullptr/ppw=nullptr) and perturb_print_variables_member (data mode). Guard computation behind: if (!writer.IsTitleMode()) { ... compute ... } Use writer.Add(title, computed_value, active).

Reimplemented from BaseSpecies.


The documentation for this class was generated from the following files: