CLASSpp Manual
Cosmology reference and developer manual
Loading...
Searching...
No Matches
lambda.h
1#pragma once
2
3#include <memory>
4#include <string_view>
5
6#include "base_species.h"
7#include "species_build_context.h"
8
9struct background;
10
18class LambdaSpecies : public BaseSpecies {
19 public:
20 static constexpr std::string_view kTypeName = "lambda";
21
22 explicit LambdaSpecies(const background& pba, double omega0_lambda);
23
24 double GetOmega0() const override {
25 return Omega0_lambda_;
26 }
27
28 // ── Perturbation Layout ────────────────────────────────────────────────────
29 // Lambda has no perturbation slots; the layout is empty.
30 struct PerturbLayout : BaseSpecies::PerturbLayout {};
31
32 std::unique_ptr<BaseSpecies::PerturbLayout> CreatePerturbLayout() const override {
33 return std::make_unique<PerturbLayout>();
34 }
35
36 // ── Background ─────────────────────────────────────────────────────────────
37 void RegisterBackgroundIndices(int& index_bg) override;
39 void WriteBackgroundData(const double* pvecback, BackgroundColumnWriter& w) const override;
40 void ComputeBackground(double a, const double* pvecback_B, double* pvecback) override;
41 double Rho(const double* pvecback) const override;
42 double P(const double* pvecback) const override;
43
44 static std::vector<Named> CreateAll(const SpeciesBuildContext& ctx);
45
46 // ── Perturbations (Lambda is homogeneous: everything vanishes) ────────────
48 const perturb_vector* /*pv*/,
49 const double* /*y*/,
50 const double* pvecback,
51 const perturb_workspace* /*ppw*/) const override {
53 se.rho = Rho(pvecback);
54 se.p = P(pvecback);
55 // All perturbation fields are zero (Lambda is homogeneous).
56 return se;
57 }
58
60 double /*tau*/,
61 const double* /*y*/,
62 double* /*dy*/,
63 const perturb_parameters_and_workspace& /*ppaw*/) const override {}
64
65 private:
66 double Omega0_lambda_;
67 double H0_;
68
69 int index_bg_rho_lambda_ = -1;
70};
Definition base_species.h:32
Definition base_species.h:76
Definition lambda.h:18
void WriteBackgroundData(const double *pvecback, BackgroundColumnWriter &w) const override
Definition lambda.cpp:31
double P(const double *pvecback) const override
Definition lambda.cpp:23
std::unique_ptr< BaseSpecies::PerturbLayout > CreatePerturbLayout() const override
Definition lambda.h:32
StressEnergyContribution StressEnergy(const BaseSpecies::PerturbLayout &, const perturb_vector *, const double *, const double *pvecback, const perturb_workspace *) const override
Definition lambda.h:47
void WriteBackgroundColumnTitles(BackgroundColumnWriter &w) const override
Definition lambda.cpp:27
double Rho(const double *pvecback) const override
Definition lambda.cpp:19
void RegisterBackgroundIndices(int &index_bg) override
Definition lambda.cpp:8
double GetOmega0() const override
Definition lambda.h:24
void ComputeBackground(double a, const double *pvecback_B, double *pvecback) override
Definition lambda.cpp:13
void PerturbDerivs(const BaseSpecies::PerturbLayout &, double, const double *, double *, const perturb_parameters_and_workspace &) const override
Definition lambda.h:59
Definition perturbations.h:250
Definition perturbations.h:344
Definition base_species.h:89
Definition base_species.h:332
Definition species_build_context.h:58
Definition perturbations_module.h:341