CLASSpp Manual
Cosmology reference and developer manual
Loading...
Searching...
No Matches
BaseSpecies Class Referenceabstract

#include <base_species.h>

+ Inheritance diagram for BaseSpecies:

Data Structures

struct  PerturbLayout
 
struct  StressEnergyContribution
 

Public Types

enum class  EnergyType
 

Public Member Functions

virtual std::unique_ptr< PerturbLayoutCreatePerturbLayout () const
 
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 RegisterBackgroundIndices (int &index_bg)=0
 
virtual void RegisterIntegrationIndices (int &index_bi)
 
virtual void SetBackgroundInitialConditions (const BackgroundICContext &ctx)
 
virtual void ComputeBackground (double a, const double *pvecback_B, double *pvecback)=0
 
virtual void BackgroundDerivs (double tau, const double *y, double *dy, const double *pvecback)
 
virtual double Rho (const double *pvecback) const =0
 
virtual double P (const double *pvecback) const =0
 
virtual double PPrime (double a, double H, const double *pvecback_B, const double *pvecback) const
 
virtual void FinalizeBackground (double a, double H, const double *pvecback_B, double *pvecback)
 
virtual bool IsFreestreaming () const
 
virtual double FreestreamingRho (const double *pvecback) const
 
bool IsPresent () const
 
virtual void WriteBackgroundColumnTitles (BackgroundColumnWriter &) const
 
virtual void WriteBackgroundData (const double *, BackgroundColumnWriter &) const
 
virtual void ProcessBackgroundTable (const double *, int, int, const double *)
 
virtual void RegisterTransferSourceIndices (int &, const SourceRequestContext &)
 
virtual void PerturbDerivs (const PerturbLayout &layout, double tau, const double *y, double *dy, const perturb_parameters_and_workspace &ppaw) const =0
 
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 StressEnergyContribution StressEnergy (const PerturbLayout &layout, const perturb_vector *pv, const double *y, const double *pvecback, const perturb_workspace *ppw) const =0
 
virtual void WriteOutputColumns (PerturbColumnWriter &, const PerturbationsModule &, file_format, TransferColumnSection=TransferColumnSection::all) const
 
virtual void PrintVariables (PerturbColumnWriter &, double, const double *, const PerturbationsModule &, const perturb_workspace *) const
 
virtual void FillSources (const PerturbLayout &, const double *, const double *, PerturbSourceContext &) const
 
virtual void ApplyInitialConditions (const PerturbLayout &, double *, const PerturbIcContext &)
 
virtual void CopyPerturbationsAcrossSwitch (const PerturbLayout &, const PerturbLayout &, const double *, double *, const PerturbSwitchContext &) const
 
virtual double RhoDotOverRho (const double *pvecback, double a_prime_over_a) const
 
virtual void PerturbSynchronousToNewtonian (const PerturbLayout &, double *, const PerturbIcContext &)
 
virtual void MarkUsedInSources (const PerturbLayout &, const perturb_workspace *, int *) const
 
virtual double GetOmega0 () const =0
 
virtual double GetRadiationOmega0 () 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
 

Protected Member Functions

void ApplyFluidLikeNewtonianShift (double *y, int idx_delta, int idx_theta, const double *pvecback, const PerturbIcContext &ctx) const
 

Friends

class SpeciesCollection
 

Detailed Description

Abstract base class for all cosmological species.

Each species:

  • claims slots in the background vector (pvecback) and integration vector (y) by implementing Register*Indices()
  • computes its background density/pressure in ComputeBackground()
  • optionally provides ODE contributions in BackgroundDerivs()
  • provides perturbation equations in PerturbDerivs()
  • exposes StressEnergy for the Einstein equations

The collection in BaseModule is a const SpeciesCollection&. Use .at("CDM") (throws if absent) or .find("CDM") (returns pointer-or-nullptr); iterate with for (auto& sp : all_species_) and use sp.key / sp->name() as needed.

Member Enumeration Documentation

◆ EnergyType

enum class BaseSpecies::EnergyType
strong

Classification used by background_functions() to accumulate rho_r, rho_m, etc.

Member Function Documentation

◆ CreatePerturbLayout()

virtual std::unique_ptr< PerturbLayout > BaseSpecies::CreatePerturbLayout ( ) const
inlinevirtual

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 in BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, FluidSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, LambdaSpecies, NCDMBaseSpecies, PhotonsSpecies, PpfFluid, ScalarFieldSpecies, and UltraRelativisticSpecies.

◆ SetBackgroundModule()

virtual void BaseSpecies::SetBackgroundModule ( const BackgroundModule *  )
inlinevirtual

Called by BackgroundModule after construction to provide access to its indices (index_bg_a_, index_bg_H_, etc.) and background state. Species that need it override this; default is no-op.

Reimplemented in AxionEDEFluid, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DCDM_DR_Species, DCDM_WDM_Species, DNCDM_DR_Species, FluidSpecies, NCDMBaseSpecies, and ScalarFieldSpecies.

◆ SetThermodynamicsModule()

virtual void BaseSpecies::SetThermodynamicsModule ( const ThermodynamicsModule *  )
inlinevirtual

Called by PerturbationsModule during construction to provide access to the thermodynamics module (pvecthermo indices, etc.). Default: no-op.

Reimplemented in BaryonsSpecies, CompositeSpecies, IDRSpecies, and PhotonsSpecies.

◆ SetPerturbs()

virtual void BaseSpecies::SetPerturbs ( const perturbs )
inlinevirtual

Called by PerturbationsModule during construction to provide access to the perturbs struct (alpha_idm_dr, gauge, etc.). Default: no-op.

Reimplemented in BaryonsSpecies, CompositeSpecies, IDM_DR_IDR_Species, IDRSpecies, NCDMBaseSpecies, and PhotonsSpecies.

◆ GetParam()

virtual std::optional< double > BaseSpecies::GetParam ( const std::string &  ) const
inlinevirtual

Generic species-param accessor for the Python wrapper layer and cross-module readers that don't want to downcast. Each species may opt in by overriding this and returning the named param; default is std::nullopt.

Reimplemented in GreyBodyNCDMSpecies, and IDM_DR_IDR_Species.

◆ RegisterBackgroundIndices()

virtual void BaseSpecies::RegisterBackgroundIndices ( int &  index_bg)
pure virtual

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.

Implemented in BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DNCDMSpecies, FluidSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, LambdaSpecies, PhotonsSpecies, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.

◆ RegisterIntegrationIndices()

virtual void BaseSpecies::RegisterIntegrationIndices ( int &  index_bi)
inlinevirtual

Claim slots in the ODE integration vector y. Called during background_indices(). Default: no integrated variables (analytic species do not need this).

Reimplemented in CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DNCDMSpecies, FluidSpecies, ScalarFieldSpecies, and WdmDecayProductSpecies.

◆ SetBackgroundInitialConditions()

virtual void BaseSpecies::SetBackgroundInitialConditions ( const BackgroundICContext ctx)
inlinevirtual

Set initial conditions for ODE-integrated background variables.

Parameters
ctxBackground initial-condition context (a_ini, rho_rad, and the integration vector to fill).

Reimplemented in CompositeSpecies, DCDMSpecies, DCDM_DR_Species, DNCDM_DR_Species, DNCDMSpecies, FluidSpecies, ScalarFieldSpecies, and WdmDecayProductSpecies.

◆ ComputeBackground()

virtual void BaseSpecies::ComputeBackground ( double  a,
const double *  pvecback_B,
double *  pvecback 
)
pure virtual

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.

Implemented in BaryonsSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, PhotonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DCDM_WDM_Species, DNCDMSpecies, FluidSpecies, LambdaSpecies, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.

◆ BackgroundDerivs()

virtual void BaseSpecies::BackgroundDerivs ( double  tau,
const double *  y,
double *  dy,
const double *  pvecback 
)
inlinevirtual

Contribute to dy/dtau for species with ODE-integrated background variables. pvecback already contains all evaluated background quantities. Default: nothing (species with analytic rho(a) don't override this).

Reimplemented in CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DCDM_DR_Species, DCDM_WDM_Species, DNCDM_DR_Species, DNCDMSpecies, FluidSpecies, and ScalarFieldSpecies.

◆ Rho()

virtual double BaseSpecies::Rho ( const double *  pvecback) const
pure virtual

◆ P()

virtual double BaseSpecies::P ( const double *  pvecback) const
pure virtual

◆ PPrime()

virtual double BaseSpecies::PPrime ( double  a,
double  H,
const double *  pvecback_B,
const double *  pvecback 
) const
inlinevirtual

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 in DarkRadiationSpecies, DNCDMSpecies, IDRSpecies, IDR_DRMDSpecies, PhotonsSpecies, CompositeSpecies, FluidSpecies, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.

◆ FinalizeBackground()

virtual void BaseSpecies::FinalizeBackground ( double  a,
double  H,
const double *  pvecback_B,
double *  pvecback 
)
inlinevirtual

Post-Friedmann. Write this species' H-dependent owned output slots. H passed explicitly so the hook need not re-read it. Default no-op.

Reimplemented in CompositeSpecies, and ScalarFieldSpecies.

◆ IsFreestreaming()

virtual bool BaseSpecies::IsFreestreaming ( ) const
inlinevirtual

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 in DarkRadiationSpecies, DNCDMSpecies, IDRSpecies, IDR_DRMDSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.

◆ FreestreamingRho()

virtual double BaseSpecies::FreestreamingRho ( const double *  pvecback) const
inlinevirtual

Free-streaming radiation density contributed by this species at the current background state. Plain species derive this from IsFreestreaming(); composites override it to sum over their children.

Reimplemented in CompositeSpecies.

◆ IsPresent()

bool BaseSpecies::IsPresent ( ) const
inline

Returns true if this species is present (has registered its background indices). For top-level species use all_species_.count(); IsPresent() is for sub-components of composites where all_species_.count() is unavailable.

◆ WriteBackgroundColumnTitles()

virtual void BaseSpecies::WriteBackgroundColumnTitles ( BackgroundColumnWriter ) const
inlinevirtual

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 in BaryonsSpecies, CDMSpecies, DCDM_DR_Species, DCDM_WDM_Species, DNCDM_DR_Species, DNCDMSpecies, FluidSpecies, IDM_DR_IDR_Species, LambdaSpecies, PhotonsSpecies, ScalarFieldSpecies, Type3Species, UltraRelativisticSpecies, and WdmDecayProductSpecies.

◆ WriteBackgroundData()

virtual void BaseSpecies::WriteBackgroundData ( const double *  ,
BackgroundColumnWriter  
) const
inlinevirtual

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 in BaryonsSpecies, CDMSpecies, DCDM_DR_Species, DCDM_WDM_Species, DNCDM_DR_Species, DNCDMSpecies, FluidSpecies, IDM_DR_IDR_Species, LambdaSpecies, PhotonsSpecies, ScalarFieldSpecies, Type3Species, UltraRelativisticSpecies, and WdmDecayProductSpecies.

◆ ProcessBackgroundTable()

virtual void BaseSpecies::ProcessBackgroundTable ( const double *  ,
int  ,
int  ,
const double *   
)
inlinevirtual

Called once after the full background table is built. Lets a species run table-scope analysis over its own columns. Default no-op.

◆ RegisterTransferSourceIndices()

virtual void BaseSpecies::RegisterTransferSourceIndices ( int &  ,
const SourceRequestContext  
)
inlinevirtual

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 in BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, FluidSpecies, IDM_DR_IDR_Species, NCDMBaseSpecies, PhotonsSpecies, ScalarFieldSpecies, and UltraRelativisticSpecies.

◆ PerturbDerivs()

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

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.

Implemented in LambdaSpecies, BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DNCDMSpecies, FluidSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, PhotonsSpecies, PpfFluid, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.

◆ PerturbVectorDerivs()

virtual void BaseSpecies::PerturbVectorDerivs ( const PerturbLayout ,
double  ,
const double *  ,
double *  ,
const perturb_parameters_and_workspace  
) const
inlinevirtual

Contribute to dy for the vector perturbation ODE. Default: no-op.

Reimplemented in PhotonsSpecies.

◆ PerturbTensorDerivs()

virtual void BaseSpecies::PerturbTensorDerivs ( const PerturbLayout ,
double  ,
const double *  ,
double *  ,
const perturb_parameters_and_workspace  
) const
inlinevirtual

Contribute to dy for the tensor perturbation ODE. Default: no-op.

Reimplemented in DNCDM_DR_Species, NCDMBaseSpecies, and PhotonsSpecies.

◆ WriteTensorOutputColumnTitles()

virtual void BaseSpecies::WriteTensorOutputColumnTitles ( std::string &  ) const
inlinevirtual

Write this species' tensor-mode output column titles. Default: no-op.

◆ ContributeTensorGwSource()

virtual void BaseSpecies::ContributeTensorGwSource ( const PerturbLayout ,
double  ,
const double *  ,
perturb_workspace  
) const
inlinevirtual

Contribute to the gravitational-wave source term (anisotropic stress) for tensor mode. Called after perturb_workspace::gw_source is reset to zero. Default: no-op. The layout is this species' PerturbLayout slot (ppw->pv->species_layouts[i]).

Reimplemented in NCDMBaseSpecies.

◆ StressEnergy()

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

◆ WriteOutputColumns()

virtual void BaseSpecies::WriteOutputColumns ( PerturbColumnWriter ,
const PerturbationsModule &  ,
file_format  ,
TransferColumnSection  = TransferColumnSection::all 
) const
inlinevirtual

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 in BaryonsSpecies, CDMSpecies, DCDMSpecies, DCDM_DR_Species, DCDM_WDM_Species, DNCDM_DR_Species, FluidSpecies, IDM_DR_IDR_Species, PhotonsSpecies, ScalarFieldSpecies, Type3Species, UltraRelativisticSpecies, and WdmDecayProductSpecies.

◆ PrintVariables()

virtual void BaseSpecies::PrintVariables ( PerturbColumnWriter ,
double  ,
const double *  ,
const PerturbationsModule &  ,
const perturb_workspace  
) const
inlinevirtual

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 in BaryonsSpecies, CDMSpecies, DCDMSpecies, FluidSpecies, IDM_DR_IDR_Species, PhotonsSpecies, PpfFluid, ScalarFieldSpecies, Type3Species, and UltraRelativisticSpecies.

◆ FillSources()

virtual void BaseSpecies::FillSources ( const PerturbLayout ,
const double *  ,
const double *  ,
PerturbSourceContext  
) const
inlinevirtual

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 in BaryonsSpecies, CDMSpecies, CompositeSpecies, DCDM_DR_Species, DCDM_WDM_Species, DNCDM_DR_Species, FluidSpecies, IDM_DR_IDR_Species, PhotonsSpecies, PpfFluid, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.

◆ ApplyInitialConditions()

virtual void BaseSpecies::ApplyInitialConditions ( const PerturbLayout ,
double *  ,
const PerturbIcContext  
)
inlinevirtual

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 in AxionEDEFluid, BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DNCDMSpecies, FluidSpecies, IDM_DR_IDR_Species, PhotonsSpecies, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.

◆ CopyPerturbationsAcrossSwitch()

virtual void BaseSpecies::CopyPerturbationsAcrossSwitch ( const PerturbLayout ,
const PerturbLayout ,
const double *  ,
double *  ,
const PerturbSwitchContext  
) const
inlinevirtual

Copy perturbation state from one layout to another across an approximation switch. Called when the perturbation vector is reallocated (e.g., NCDM FA collapse from full Boltzmann hierarchy to fluid variables delta/theta/shear). Default: no-op. Most species have no approximation switches.

Reimplemented in BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, FluidSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, NCDMBaseSpecies, PhotonsSpecies, PpfFluid, ScalarFieldSpecies, and UltraRelativisticSpecies.

◆ RhoDotOverRho()

virtual double BaseSpecies::RhoDotOverRho ( const double *  pvecback,
double  a_prime_over_a 
) const
inlinevirtual

Log conformal-time derivative of the background density, ρ̇/ρ (ρ̇ ≡ dρ̄/dτ). Single source of truth for the density-contrast gauge shift; mirrors the continuity equation used in BackgroundDerivs. Default: ρ̇/ρ = -3ℋ(Rho+P)/Rho. Species with extra source/sink terms (e.g. decay) override this.

Parameters
pvecbackCurrent background-quantity vector.
a_prime_over_aℋ = a'/a (base does not store H/a indices).

Reimplemented in DCDMSpecies, and WdmDecayProductSpecies.

◆ PerturbSynchronousToNewtonian()

virtual void BaseSpecies::PerturbSynchronousToNewtonian ( const PerturbLayout ,
double *  ,
const PerturbIcContext  
)
inlinevirtual

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 in WdmDecayProductSpecies, BaryonsSpecies, CDMSpecies, CompositeSpecies, DCDMSpecies, DCDM_DR_Species, DNCDM_DR_Species, FluidSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, NCDMBaseSpecies, PhotonsSpecies, ScalarFieldSpecies, and UltraRelativisticSpecies.

◆ MarkUsedInSources()

virtual void BaseSpecies::MarkUsedInSources ( const PerturbLayout ,
const perturb_workspace ,
int *   
) const
inlinevirtual

Mark which source slots this species writes during FillSources. Called to build the used_in_sources bitmask/index list. ppw is supplied so species can consult their approximation flags. Default: no-op. Sources-writing species override to flag their tp indices.

Reimplemented in IDM_DR_IDR_Species, NCDMBaseSpecies, PhotonsSpecies, and UltraRelativisticSpecies.

◆ GetOmega0()

virtual double BaseSpecies::GetOmega0 ( ) const
pure virtual

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.

Implemented in BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DCDM_WDM_Species, DNCDM_DR_Species, FluidSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, LambdaSpecies, NCDMBaseSpecies, PhotonsSpecies, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.

◆ GetRadiationOmega0()

virtual double BaseSpecies::GetRadiationOmega0 ( ) const
inlinevirtual

Relativistic (radiation-like) Omega0 contribution at early times. Default 0; ultra-relativistic and interacting-dark-radiation species override.

Reimplemented in CompositeSpecies, IDRSpecies, IDR_DRMDSpecies, and UltraRelativisticSpecies.

◆ DarkRadiationRhoToday()

virtual double BaseSpecies::DarkRadiationRhoToday ( const double *  ) const
inlinevirtual

Dark-radiation energy density today, read from the integrated background vector. Default 0; DarkRadiationSpecies returns its own; composites sum.

Reimplemented in CompositeSpecies, and DarkRadiationSpecies.

◆ NeutrinoOmega0()

virtual double BaseSpecies::NeutrinoOmega0 ( ) const
inlinevirtual

This species' contribution to Omega0 of the neutrino/NCDM sector (fnu). Default 0; NCDM returns GetOmega0(); composites sum children.

Reimplemented in CompositeSpecies, NCDMBaseSpecies, and WdmDecayProductSpecies.

◆ NeffContribution()

virtual double BaseSpecies::NeffContribution ( double  ) const
inlinevirtual

Contribution to N_eff at redshift z. Default 0; NCDM returns GetNeff(z); composites sum children.

Reimplemented in CompositeSpecies, NCDMBaseSpecies, and WdmDecayProductSpecies.

◆ PrintNeffInfo()

virtual void BaseSpecies::PrintNeffInfo ( ) const
inlinevirtual

Verbose N_eff line (background_verbose). Default no-op; NCDM prints; composites forward to children.

Reimplemented in CompositeSpecies, NCDMBaseSpecies, and WdmDecayProductSpecies.

◆ PrintMassInfo()

virtual void BaseSpecies::PrintMassInfo ( ) const
inlinevirtual

Verbose mass/omega line (background_verbose). Default no-op; NCDM prints; composites forward to children.

Reimplemented in CompositeSpecies, NCDMBaseSpecies, and WdmDecayProductSpecies.

◆ TensorMasslessRelativisticRho()

virtual double BaseSpecies::TensorMasslessRelativisticRho ( const double *  ) const
inlinevirtual

Contribution to the tensor-mode "relativistic" density in the massless approximation. Default 0; NCDM returns 3*P; composites sum.

Reimplemented in CompositeSpecies, and NCDMBaseSpecies.

◆ CheckUltraRelativisticAtIc()

virtual void BaseSpecies::CheckUltraRelativisticAtIc ( const double *  ,
double   
) const
inlinevirtual

Initial-time ultra-relativistic check (throws via class_test on failure). Default no-op; NCDM checks |w-1/3|; composites forward to children.

Reimplemented in WdmDecayProductSpecies, CompositeSpecies, and NCDMBaseSpecies.

◆ IsUltraRelativisticAtIc()

virtual bool BaseSpecies::IsUltraRelativisticAtIc ( const double *  ,
double   
) const
inlinevirtual

Initial-time ultra-relativistic predicate. Default true; NCDM checks |w-1/3| <= tol; composites AND over children.

Reimplemented in WdmDecayProductSpecies, CompositeSpecies, and NCDMBaseSpecies.

◆ WarnIfTooHeavyForHalofit()

virtual void BaseSpecies::WarnIfTooHeavyForHalofit ( double  ) const
inlinevirtual

Warn (stdout) if this species is too heavy for Halofit/HMcode. The policy threshold is passed by the nonlinear module. Default no-op; NCDM compares its mass; composites forward.

Reimplemented in CompositeSpecies, and NCDMBaseSpecies.

◆ BackgroundAIni()

virtual double BaseSpecies::BackgroundAIni ( double  a_proposed,
double   
) const
inlinevirtual

Earliest scale factor this species needs integration to start from. Default: returns a_proposed unchanged. NCDM species may pull it earlier.

Reimplemented in CompositeSpecies, NCDMBaseSpecies, and WdmDecayProductSpecies.

◆ ClustersAsMatterCached()

bool BaseSpecies::ClustersAsMatterCached ( ) const
inline

Cached counterparts of ClustersAsMatter()/IsColdMatterSpecies(), valid after FinalizeMatterClassification(). The hot-path tally reads these.

◆ FinalizeMatterClassification()

virtual void BaseSpecies::FinalizeMatterClassification ( )
inlinevirtual

Stamp the cached classification from the (virtual) predicates. Called once by SpeciesCollection::freeze() after every species and its children are built. CompositeSpecies overrides to also recurse into children.

Reimplemented in CompositeSpecies.

◆ ClustersAsMatter()

virtual bool BaseSpecies::ClustersAsMatter ( ) const
inlinevirtual

True iff this species' clustering participates in the total matter tally (delta_m / theta_m and the P_m(k) source). This is the axis-2 (perturbation) counterpart to EnergyType, which only drives the axis-1 background rho_r/rho_m split: a quintessence scalar field is EnergyType::Other (radiation-like early, so the background needs its rho-3P split) yet does NOT cluster as matter, so it must stay out of P_m(k). A member's contribution is computed generically (its matter density is rho-3P and its density perturbation is delta_rho-3*delta_p), so this predicate only governs membership, not the value. Default: cold matter (energy_type==Matter). Overrides: NCDM/DNCDM (warm matter) return true; composites scan children; a clustering scalar-field dark-matter model would override to true.

Reimplemented in CompositeSpecies, and NCDMBaseSpecies.

◆ IsColdMatterSpecies()

virtual bool BaseSpecies::IsColdMatterSpecies ( ) const
inlinevirtual

True iff this sector participates in the cold-matter tally (delta_cb, theta_cb). Cold matter excludes NCDM/DNCDM (which are "warm" matter). Default: energy_type_ == EnergyType::Matter. Overrides: NCDMBaseSpecies returns false; composites scan children.

Reimplemented in CompositeSpecies, and NCDMBaseSpecies.

◆ HasWarmMatter()

virtual bool BaseSpecies::HasWarmMatter ( ) const
inlinevirtual

True iff this species contributes WARM matter: it clusters in the total matter tally (delta_m / P_m) but stays out of the cold tally (delta_cb / P_cb). This is exactly the condition under which P_cb differs from P_m, so it gates the cb sources and spectra (has_source_delta_cb, has_pk_cb_). Default: derived from the two predicates above. Override: composites scan children (their own two predicates OR over children, so e.g. a cold parent + warm daughter composite would wrongly read as cold).

Reimplemented in CompositeSpecies.

◆ ApplyFluidLikeNewtonianShift()

void BaseSpecies::ApplyFluidLikeNewtonianShift ( double *  y,
int  idx_delta,
int  idx_theta,
const double *  pvecback,
const PerturbIcContext ctx 
) const
inlineprotected

Universal fluid-like gauge shift: delta += (ρ̇/ρ)·alpha ; theta += k²·alpha (shear, l3 and higher moments are gauge-invariant). Fluid-like species call this from PerturbSynchronousToNewtonian, supplying their own delta/theta slots.


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