6#include "base_species.h"
30 delegates_tally_ =
true;
37 std::vector<std::unique_ptr<BaseSpecies::PerturbLayout>> child_layouts;
54 const double* pvecback,
59 const double* pvecback,
90 for (
const auto& c : children_)
91 sum += c->GetOmega0();
100 std::vector<BudgetLine>& out)
const {
101 for (
const auto& c : children_)
102 out.push_back({c->name(), c->Rho(pvecback_today) / rho_crit, BudgetBucketOf(*c)});
109 for (
const auto& c : children_)
110 sum += c->GetRadiationOmega0();
117 for (
const auto& c : children_)
118 sum += c->DarkRadiationRhoToday(pvecback_integration);
125 for (
const auto& c : children_)
126 sum += c->NeutrinoOmega0();
133 for (
const auto& c : children_)
134 sum += c->NeffContribution(z);
139 for (
const auto& c : children_)
143 for (
const auto& c : children_)
149 for (
const auto& c : children_)
150 sum += c->TensorMasslessRelativisticRho(pvecback);
154 for (
const auto& c : children_)
155 c->CheckUltraRelativisticAtIc(pvecback, tol);
158 for (
const auto& c : children_)
159 if (!c->IsUltraRelativisticAtIc(pvecback, tol))
164 for (
const auto& c : children_)
165 c->WarnIfTooHeavyForHalofit(m_ev_threshold);
171 for (
const auto& c : children_)
172 a_proposed = c->BackgroundAIni(a_proposed, tol);
177 void SetBackgroundModule(
const BackgroundModule* bgm)
override;
178 void SetThermodynamicsModule(
const ThermodynamicsModule* thm)
override;
179 void SetPerturbs(
const perturbs* ppt)
override;
181 void ComputeBackground(
double a,
const double* pvecback_B,
double* pvecback)
override;
182 void BackgroundDerivs(
double tau,
const double* y,
double* dy,
const double* pvecback)
override;
183 void FinalizeBackground(
double a,
double H,
const double* pvecback_B,
double* pvecback)
override;
184 double Rho(
const double* pvecback)
const override;
185 double P(
const double* pvecback)
const override;
186 double PPrime(
double a,
188 const double* pvecback_B,
189 const double* pvecback)
const override;
190 double FreestreamingRho(
const double* pvecback)
const override;
193 bool ClustersAsMatter()
const override;
194 bool IsColdMatterSpecies()
const override;
195 bool HasWarmMatter()
const override;
196 void FinalizeMatterClassification()
override;
199 std::vector<std::unique_ptr<BaseSpecies>> children_;
206 virtual void AddCouplingDerivs(
double tau,
Definition base_species.h:76
EnergyType
Definition base_species.h:79
Definition composite_species.h:26
void PrintMassInfo() const override
Definition composite_species.h:142
void CheckUltraRelativisticAtIc(const double *pvecback, double tol) const override
Definition composite_species.h:153
void RegisterIntegrationIndices(int &index_bi) override
Definition composite_species.cpp:10
std::unique_ptr< BaseSpecies::PerturbLayout > CreatePerturbLayout() const override
Definition composite_species.cpp:93
void WarnIfTooHeavyForHalofit(double m_ev_threshold) const override
Definition composite_species.h:163
double BackgroundAIni(double a_proposed, double tol) const override
Definition composite_species.h:170
void RegisterTransferSourceIndices(int &index_tp, const SourceRequestContext &ctx) override
Definition composite_species.cpp:15
double NeutrinoOmega0() const override
Definition composite_species.h:123
void PerturbSynchronousToNewtonian(const BaseSpecies::PerturbLayout &layout, double *y, const PerturbIcContext &ctx) override
Definition composite_species.cpp:173
void RegisterBackgroundIndices(int &index_bg) override
Definition composite_species.cpp:5
bool IsUltraRelativisticAtIc(const double *pvecback, double tol) const override
Definition composite_species.h:157
void PrintNeffInfo() const override
Definition composite_species.h:138
void CopyPerturbationsAcrossSwitch(const BaseSpecies::PerturbLayout &old_layout, const BaseSpecies::PerturbLayout &new_layout, const double *old_y, double *new_y, const PerturbSwitchContext &ctx) const override
Definition composite_species.cpp:181
double DarkRadiationRhoToday(const double *pvecback_integration) const override
Definition composite_species.h:115
double GetRadiationOmega0() const override
Definition composite_species.h:107
void FillSources(const BaseSpecies::PerturbLayout &layout, const double *y, const double *dy, PerturbSourceContext &ctx) const override
Definition composite_species.cpp:164
double GetOmega0() const override
Definition composite_species.h:88
StressEnergyContribution StressEnergy(const BaseSpecies::PerturbLayout &layout, const perturb_vector *pv, const double *y, const double *pvecback, const perturb_workspace *ppw) const override
Definition composite_species.cpp:120
void PerturbDerivs(const BaseSpecies::PerturbLayout &layout, double tau, const double *y, double *dy, const perturb_parameters_and_workspace &ppaw) const override
Definition composite_species.cpp:153
void AppendBudgetLines(const double *pvecback_today, double rho_crit, std::vector< BudgetLine > &out) const
Definition composite_species.h:98
double TensorMasslessRelativisticRho(const double *pvecback) const override
Definition composite_species.h:147
double NeffContribution(double z) const override
Definition composite_species.h:131
void ApplyInitialConditions(const BaseSpecies::PerturbLayout &layout, double *y, const PerturbIcContext &ctx) override
Definition composite_species.cpp:112
Definition perturbations.h:250
Definition perturbations.h:344
Definition perturbations.h:100
Definition background_ic_context.h:11
Definition base_species.h:89
Definition base_species.h:332
Definition composite_species.h:36
Definition perturb_source_context.h:125
Definition perturb_source_context.h:103
Definition perturb_source_context.h:159
Definition perturb_source_context.h:48
Definition perturbations_module.h:341
Definition precision.h:63