7#include "../species/ncdm_base_species.h"
8#include "../species/species_build_context.h"
12class BackgroundModule;
16 static constexpr std::string_view kTypeName =
"ncdm_standard";
20 const std::string& instance_name,
21 const NcdmSettings& settings,
22 const background* pba,
23 const BackgroundModule* bgm);
34 void ComputeBackground(
double a,
const double* pvecback_B,
double* pvecback)
override;
35 void BackgroundDerivs(
double tau,
const double* y,
double* dy,
const double* pvecback)
override;
37 double Rho(
const double* pvecback)
const override {
38 return pvecback[index_bg_rho_];
40 double P(
const double* pvecback)
const override {
41 return pvecback[index_bg_p_];
46 const double* pvecback)
const override {
47 return a * H * (pvecback[index_bg_pseudo_p_] - 5. * pvecback[index_bg_p_]);
83 const double* pvecback,
96 const PerturbationsModule&,
98 TransferColumnSection)
const override;
102 const PerturbationsModule&,
106 int bg_number_index()
const {
107 return index_bg_number_;
109 int bg_pseudo_p_index()
const {
110 return index_bg_pseudo_p_;
117 const std::string& instance_name,
118 const NcdmSettings& settings,
119 const background* pba,
120 const BackgroundModule* bgm,
125 void ResolveMassOmegaClosure(
const NcdmSettings& settings);
127 double GetDlnf0Dlnq(
int iq,
const double* )
const override {
128 return dlnf0_dlnq_[iq];
131 const background* pba_;
133 int index_bg_number_ = -1;
134 int index_bg_pseudo_p_ = -1;
135 int index_pt_psi0_ = -1;
Definition base_species.h:32
virtual void BackgroundDerivs(double tau, const double *y, double *dy, const double *pvecback)
Definition base_species.h:175
virtual void ApplyInitialConditions(const PerturbLayout &, double *, const PerturbIcContext &)
Definition base_species.h:449
virtual double PPrime(double a, double H, const double *pvecback_B, const double *pvecback) const
Definition base_species.h:188
virtual void FillSources(const PerturbLayout &, const double *, const double *, PerturbSourceContext &) const
Definition base_species.h:435
virtual void PrintVariables(PerturbColumnWriter &, double, const double *, const PerturbationsModule &, const perturb_workspace *) const
Definition base_species.h:419
virtual void RegisterIntegrationIndices(int &index_bi)
Definition base_species.h:154
virtual void ComputeBackground(double a, const double *pvecback_B, double *pvecback)=0
virtual void WriteBackgroundData(const double *, BackgroundColumnWriter &) const
Definition base_species.h:244
virtual void WriteBackgroundColumnTitles(BackgroundColumnWriter &) const
Definition base_species.h:236
virtual double P(const double *pvecback) const =0
virtual bool IsFreestreaming() const
Definition base_species.h:209
virtual void WriteOutputColumns(PerturbColumnWriter &, const PerturbationsModule &, file_format, TransferColumnSection=TransferColumnSection::all) const
Definition base_species.h:406
virtual void PerturbDerivs(const PerturbLayout &layout, double tau, const double *y, double *dy, const perturb_parameters_and_workspace &ppaw) const =0
virtual void RegisterBackgroundIndices(int &index_bg)=0
virtual double Rho(const double *pvecback) const =0
virtual void WriteTensorOutputColumnTitles(std::string &) const
Definition base_species.h:319
virtual StressEnergyContribution StressEnergy(const PerturbLayout &layout, const perturb_vector *pv, const double *y, const double *pvecback, const perturb_workspace *ppw) const =0
Definition ncdm_base_species.h:42
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 ncdm_base_species.cpp:729
virtual double GetDlnf0Dlnq(int iq, const double *pvecback) const =0
Definition ncdm_base_species.h:238
Definition perturb_source_context.h:63
Definition perturbations.h:250
Definition perturbations.h:344
file_format
Definition precision.h:40
Definition base_species.h:89
Definition perturb_source_context.h:125
Definition perturb_source_context.h:103
Definition perturb_source_context.h:159
Definition species_build_context.h:58
Definition perturbations_module.h:341
Definition precision.h:63