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

#include <dncdm_dr_species.h>

+ Inheritance diagram for DNCDM_DR_Species:

Public Member Functions

void SetBackgroundModule (const BackgroundModule *bgm) override
 
void SetBackgroundInitialConditions (const BackgroundICContext &ctx) override
 
void BackgroundDerivs (double tau, const double *y, double *dy, const double *pvecback) override
 
void WriteBackgroundColumnTitles (BackgroundColumnWriter &w) const override
 
void WriteBackgroundData (const double *pvecback, BackgroundColumnWriter &w) const override
 
double GetOmega0 () const override
 
void PerturbTensorDerivs (const BaseSpecies::PerturbLayout &layout, double tau, const double *y, double *dy, const perturb_parameters_and_workspace &ppaw) const override
 
void PerturbSynchronousToNewtonian (const BaseSpecies::PerturbLayout &layout, double *y, const PerturbIcContext &ctx) override
 
void FillSources (const BaseSpecies::PerturbLayout &layout, const double *y, const double *dy, PerturbSourceContext &ctx) const override
 
void WriteOutputColumns (PerturbColumnWriter &writer, const PerturbationsModule &mod, file_format fmt, TransferColumnSection section=TransferColumnSection::all) const override
 
- Public Member Functions inherited from CompositeSpecies
std::unique_ptr< BaseSpecies::PerturbLayoutCreatePerturbLayout () const override
 
void ApplyInitialConditions (const BaseSpecies::PerturbLayout &layout, double *y, const PerturbIcContext &ctx) override
 
StressEnergyContribution StressEnergy (const BaseSpecies::PerturbLayout &layout, const perturb_vector *pv, const double *y, const double *pvecback, const perturb_workspace *ppw) const override
 
void PerturbDerivs (const BaseSpecies::PerturbLayout &layout, double tau, const double *y, double *dy, const perturb_parameters_and_workspace &ppaw) 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 RegisterBackgroundIndices (int &index_bg) override
 
void RegisterIntegrationIndices (int &index_bi) override
 
void RegisterTransferSourceIndices (int &index_tp, const SourceRequestContext &ctx) override
 
void AppendBudgetLines (const double *pvecback_today, double rho_crit, std::vector< BudgetLine > &out) const
 
double GetRadiationOmega0 () const override
 
double DarkRadiationRhoToday (const double *pvecback_integration) const override
 
double NeutrinoOmega0 () const override
 
double NeffContribution (double z) const override
 
void PrintNeffInfo () const override
 
void PrintMassInfo () const override
 
double TensorMasslessRelativisticRho (const double *pvecback) const override
 
void CheckUltraRelativisticAtIc (const double *pvecback, double tol) const override
 
bool IsUltraRelativisticAtIc (const double *pvecback, double tol) const override
 
void WarnIfTooHeavyForHalofit (double m_ev_threshold) const override
 
double BackgroundAIni (double a_proposed, double tol) const override
 
void SetThermodynamicsModule (const ThermodynamicsModule *thm) override
 
void SetPerturbs (const perturbs *ppt) override
 
void ComputeBackground (double a, const double *pvecback_B, double *pvecback) override
 
void FinalizeBackground (double a, double H, 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
 
double FreestreamingRho (const double *pvecback) const override
 
bool ClustersAsMatter () const override
 
bool IsColdMatterSpecies () const override
 
bool HasWarmMatter () const override
 
void FinalizeMatterClassification () override
 
- Public Member Functions inherited from BaseSpecies
virtual std::optional< double > GetParam (const std::string &) const
 
virtual bool IsFreestreaming () 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 WriteTensorOutputColumnTitles (std::string &) const
 
virtual void ContributeTensorGwSource (const PerturbLayout &, double, const double *, perturb_workspace *) const
 
virtual void PrintVariables (PerturbColumnWriter &, double, const double *, const PerturbationsModule &, const perturb_workspace *) const
 
virtual double RhoDotOverRho (const double *pvecback, double a_prime_over_a) const
 
virtual void MarkUsedInSources (const PerturbLayout &, const perturb_workspace *, int *) const
 
bool ClustersAsMatterCached () const
 

Protected Member Functions

void AddCouplingDerivs (double tau, const double *y, double *dy, const perturb_parameters_and_workspace &ppaw) const override
 
- Protected Member Functions inherited from BaseSpecies
void ApplyFluidLikeNewtonianShift (double *y, int idx_delta, int idx_theta, const double *pvecback, const PerturbIcContext &ctx) const
 

Additional Inherited Members

- Public Types inherited from BaseSpecies
enum class  EnergyType
 

Detailed Description

DNCDM_DR_Species: composite for one flavor of Decaying Non-Cold Dark Matter + its decay radiation.

Member Function Documentation

◆ SetBackgroundModule()

void DNCDM_DR_Species::SetBackgroundModule ( const BackgroundModule *  )
overridevirtual

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 from CompositeSpecies.

◆ SetBackgroundInitialConditions()

void DNCDM_DR_Species::SetBackgroundInitialConditions ( const BackgroundICContext ctx)
overridevirtual

Set initial conditions for ODE-integrated background variables.

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

Reimplemented from CompositeSpecies.

◆ BackgroundDerivs()

void DNCDM_DR_Species::BackgroundDerivs ( double  tau,
const double *  y,
double *  dy,
const double *  pvecback 
)
overridevirtual

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 from CompositeSpecies.

◆ WriteBackgroundColumnTitles()

void DNCDM_DR_Species::WriteBackgroundColumnTitles ( BackgroundColumnWriter ) const
inlineoverridevirtual

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 DNCDM_DR_Species::WriteBackgroundData ( const double *  ,
BackgroundColumnWriter  
) const
inlineoverridevirtual

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.

◆ GetOmega0()

double DNCDM_DR_Species::GetOmega0 ( ) const
overridevirtual

Total density fraction of the whole decaying sector today (matter + decay radiation) = the closure-reserved Omega_dncdmdr. Mirrors DCDMSpecies::GetOmega0(). Surfaces the pinned/shot combined rather than summing children, because at Pass-1 closure time the emergent DR is not yet integrated.

Reimplemented from CompositeSpecies.

◆ PerturbTensorDerivs()

void DNCDM_DR_Species::PerturbTensorDerivs ( const BaseSpecies::PerturbLayout ,
double  ,
const double *  ,
double *  ,
const perturb_parameters_and_workspace  
) const
overridevirtual

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

Reimplemented from BaseSpecies.

◆ PerturbSynchronousToNewtonian()

void DNCDM_DR_Species::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 CompositeSpecies.

◆ FillSources()

void DNCDM_DR_Species::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 CompositeSpecies.

◆ WriteOutputColumns()

void DNCDM_DR_Species::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.

◆ AddCouplingDerivs()

void DNCDM_DR_Species::AddCouplingDerivs ( double  tau,
const double *  y,
double *  dy,
const perturb_parameters_and_workspace ppaw 
) const
overrideprotectedvirtual

Override in concrete subclasses to add coupling terms to dy after all children have written their free-streaming contributions. Default: no-op.

Reimplemented from CompositeSpecies.


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