4#include "../species/base_species.h"
7#include "scalar_field_potential.h"
8#include "species_build_context.h"
10class BackgroundModule;
20 static constexpr std::string_view kTypeName =
"scalar_field";
24 std::vector<double> scf_parameters,
26 bool attractor_ic_scf,
28 double phi_prime_ini_scf,
36 const std::vector<double>& scf_parameters()
const {
37 return scf_parameters_;
39 int scf_tuning_index()
const {
40 return scf_tuning_index_;
42 bool attractor_ic_scf()
const {
43 return attractor_ic_scf_;
45 double phi_ini_scf()
const {
48 double phi_prime_ini_scf()
const {
49 return phi_prime_ini_scf_;
60 index_bg_phi_scf_ = index_bg++;
61 index_bg_phi_prime_scf_ = index_bg++;
62 index_bg_V_scf_ = index_bg++;
63 index_bg_dV_scf_ = index_bg++;
64 index_bg_ddV_scf_ = index_bg++;
65 index_bg_rho_ = index_bg++;
66 index_bg_p_ = index_bg++;
67 index_bg_p_prime_scf_ = index_bg++;
71 index_bi_phi_scf_ = index_bi++;
72 index_bi_phi_prime_scf_ = index_bi++;
77 void ComputeBackground(
double a,
const double* pvecback_B,
double* pvecback)
override;
79 void BackgroundDerivs(
double tau,
const double* y,
double* dy,
const double* pvecback)
override;
81 double Rho(
const double* pvecback)
const override {
82 return pvecback[index_bg_rho_];
84 double P(
const double* pvecback)
const override {
85 return pvecback[index_bg_p_];
95 int idx_phi_prime = -1;
99 return std::make_unique<PerturbLayout>();
142 static std::vector<Named> CreateAllForComposite(
const SpeciesBuildContext& ctx,
double beta);
145 std::vector<ShootingTarget> GetShootingTargets()
const override;
147 std::vector<double>& guess,
148 std::vector<double>& dxdy)
const override;
155 const double* pvecback,
160 const PerturbationsModule& mod,
162 TransferColumnSection section = TransferColumnSection::all)
const override;
167 const PerturbationsModule& mod,
172 const double* pvecback_B,
173 const double* pvecback)
const override;
174 void FinalizeBackground(
double a,
double H,
const double* pvecback_B,
double* pvecback)
override;
176 int bi_phi_index()
const {
177 return index_bi_phi_scf_;
179 int bi_phi_prime_index()
const {
180 return index_bi_phi_prime_scf_;
185 int index_bg_phi_prime_scf()
const {
186 return index_bg_phi_prime_scf_;
188 int index_bg_dV_scf()
const {
189 return index_bg_dV_scf_;
193 double V_scf(
double phi)
const;
194 double dV_scf(
double phi)
const;
195 double ddV_scf(
double phi)
const;
200 bool needs_shooting_ =
false;
202 const background& pba_;
203 const BackgroundModule* bgm_ =
nullptr;
204 int index_tp_delta_ = -1;
205 int index_tp_theta_ = -1;
207 int index_bg_phi_scf_ = -1;
208 int index_bg_phi_prime_scf_ = -1;
209 int index_bg_V_scf_ = -1;
210 int index_bg_dV_scf_ = -1;
211 int index_bg_ddV_scf_ = -1;
212 int index_bg_p_prime_scf_ = -1;
213 int index_bi_phi_scf_ = -1;
214 int index_bi_phi_prime_scf_ = -1;
215 double Omega0_scf_ = 0.;
216 std::vector<double> scf_parameters_;
217 int scf_tuning_index_ = 0;
218 bool attractor_ic_scf_ =
true;
219 double phi_ini_scf_ = 1.;
220 double phi_prime_ini_scf_ = 1.;
Definition base_species.h:32
Definition base_species.h:76
Definition perturb_source_context.h:63
Definition scalar_field.h:18
void WriteOutputColumns(PerturbColumnWriter &writer, const PerturbationsModule &mod, file_format fmt, TransferColumnSection section=TransferColumnSection::all) const override
Definition scalar_field.cpp:313
void SetBackgroundInitialConditions(const BackgroundICContext &ctx) override
Definition scalar_field.cpp:39
void RegisterBackgroundIndices(int &index_bg) override
Definition scalar_field.h:59
void RegisterIntegrationIndices(int &index_bi) override
Definition scalar_field.h:70
double PPrime(double a, double H, const double *pvecback_B, const double *pvecback) const override
Definition scalar_field.cpp:108
void ApplyInitialConditions(const BaseSpecies::PerturbLayout &layout, double *y, const PerturbIcContext &ctx) override
Definition scalar_field.cpp:282
void FinalizeBackground(double a, double H, const double *pvecback_B, double *pvecback) override
Definition scalar_field.cpp:117
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 scalar_field.cpp:438
void PerturbSynchronousToNewtonian(const BaseSpecies::PerturbLayout &layout, double *y, const PerturbIcContext &ctx) override
Definition scalar_field.cpp:294
double GetOmega0() const override
Definition scalar_field.h:32
double Rho(const double *pvecback) const override
Definition scalar_field.h:81
void PrintVariables(PerturbColumnWriter &writer, double tau, const double *y, const PerturbationsModule &mod, const perturb_workspace *ppw) const override
Definition scalar_field.cpp:327
void ComputeBackground(double a, const double *pvecback_B, double *pvecback) override
Definition scalar_field.cpp:80
std::unique_ptr< BaseSpecies::PerturbLayout > CreatePerturbLayout() const override
Definition scalar_field.h:98
StressEnergyContribution StressEnergy(const BaseSpecies::PerturbLayout &layout, const perturb_vector *pv, const double *y, const double *pvecback, const perturb_workspace *ppw) const override
Definition scalar_field.cpp:386
void WriteBackgroundColumnTitles(BackgroundColumnWriter &w) const override
Definition scalar_field.cpp:124
void FillSources(const BaseSpecies::PerturbLayout &layout, const double *y, const double *dy, PerturbSourceContext &ctx) const override
Definition scalar_field.cpp:214
void RegisterTransferSourceIndices(int &index_tp, const SourceRequestContext &ctx) override
Definition scalar_field.cpp:147
void SetBackgroundModule(const BackgroundModule *bgm) override
Definition scalar_field.h:56
void WriteBackgroundData(const double *pvecback, BackgroundColumnWriter &w) const override
Definition scalar_field.cpp:135
double P(const double *pvecback) const override
Definition scalar_field.h:84
void PerturbDerivs(const BaseSpecies::PerturbLayout &layout, double tau, const double *y, double *dy, const perturb_parameters_and_workspace &ppaw) const override
Definition scalar_field.cpp:168
void BackgroundDerivs(double tau, const double *y, double *dy, const double *pvecback) override
Definition scalar_field.cpp:95
Definition perturbations.h:250
Definition perturbations.h:344
file_format
Definition precision.h:40
Definition background_ic_context.h:11
Definition base_species.h:89
Definition perturb_source_context.h:125
Definition perturb_source_context.h:103
Definition perturb_source_context.h:159
Definition scalar_field_potential.h:13
Definition shooting_target.h:7
Definition shooting_target.h:14
Definition perturb_source_context.h:48
Definition species_build_context.h:58
Definition perturbations_module.h:341
Definition precision.h:63