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

#include <idr.h>

+ Inheritance diagram for IDRSpecies:

Data Structures

struct  PerturbLayout
 

Public Member Functions

void SetThermodynamicsModule (const ThermodynamicsModule *thm) override
 
void SetPerturbs (const perturbs *ppt) override
 
double GetOmega0 () const override
 
double GetRadiationOmega0 () const override
 
bool IsFreestreaming () const override
 
void RegisterBackgroundIndices (int &index_bg) override
 
void ComputeBackground (double a, const double *, 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 *, const double *pvecback) const override
 
std::unique_ptr< BaseSpecies::PerturbLayoutCreatePerturbLayout () const override
 
double TcaShearIdr (const PerturbLayout &layout, const double *y, const perturb_workspace *ppw) const
 
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 PerturbSynchronousToNewtonian (const BaseSpecies::PerturbLayout &layout, double *y, const PerturbIcContext &ctx) 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
 
- Public Member Functions inherited from BaseSpecies
virtual void SetBackgroundModule (const BackgroundModule *)
 
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 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 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 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 double RhoDotOverRho (const double *pvecback, double a_prime_over_a) const
 
virtual void MarkUsedInSources (const PerturbLayout &, const perturb_workspace *, int *) 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

IDR: Interacting Dark Radiation. Coupled to IDM_DR.

Member Function Documentation

◆ SetThermodynamicsModule()

void IDRSpecies::SetThermodynamicsModule ( const ThermodynamicsModule *  )
inlineoverridevirtual

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

Reimplemented from BaseSpecies.

◆ SetPerturbs()

void IDRSpecies::SetPerturbs ( const perturbs )
inlineoverridevirtual

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

Reimplemented from BaseSpecies.

◆ GetOmega0()

double IDRSpecies::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 IDRSpecies::GetRadiationOmega0 ( ) const
inlineoverridevirtual

IDR is dark radiation: contributes its Omega0 to the early-time radiation density.

Reimplemented from BaseSpecies.

◆ IsFreestreaming()

bool IDRSpecies::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.

◆ RegisterBackgroundIndices()

void IDRSpecies::RegisterBackgroundIndices ( int &  index_bg)
inlineoverridevirtual

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 IDRSpecies::ComputeBackground ( double  a,
const double *  pvecback_B,
double *  pvecback 
)
inlineoverridevirtual

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 IDRSpecies::Rho ( const double *  pvecback) const
inlineoverridevirtual

Energy density at current background state.

Implements BaseSpecies.

◆ P()

double IDRSpecies::P ( const double *  pvecback) const
inlineoverridevirtual

Pressure at current background state.

Implements BaseSpecies.

◆ PPrime()

double IDRSpecies::PPrime ( double  a,
double  H,
const double *  pvecback_B,
const double *  pvecback 
) const
inlineoverridevirtual

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.

◆ CreatePerturbLayout()

std::unique_ptr< BaseSpecies::PerturbLayout > IDRSpecies::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.

◆ TcaShearIdr()

double IDRSpecies::TcaShearIdr ( const PerturbLayout layout,
const double *  y,
const perturb_workspace ppw 
) const

IDR shear under TCA with IDM_DR. Returns the TCA shear prediction if all TCA guards are satisfied; otherwise returns 0. Called by StressEnergy (when shear_idr is not in the y-vector) and by external code that needs the TCA shear (perturb_vector_init, IDM_DR_IDR_Species::PrintVariables).

layout must be the IDR child's PerturbLayout (nested inside the IDM_DR_IDR composite layout). We read layout.idx_shear / layout.idx_theta to drive the "shear not in y" detection and the theta_idr value.

◆ PerturbDerivs()

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

◆ PerturbSynchronousToNewtonian()

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

◆ CopyPerturbationsAcrossSwitch()

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

Copy IDR perturbations from old layout to new layout across an approximation switch. Handles RSA (rsa_idr off->on) and TCA (tca_idm_dr on->off) transitions. The TCA on->off switch seeds shear_idr from TcaShearIdr; that special case is handled by the module (Task 23/25) since it needs IDM_DR_IDR_Species context. This method covers the simpler slot-by-slot copies (RSA and UFA transitions).

Reimplemented from BaseSpecies.


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