CLASSpp Manual
Cosmology reference and developer manual
Loading...
Searching...
No Matches
greybody_ncdm_species.h
1#pragma once
2#include <optional>
3#include <string>
4#include <string_view>
5#include <vector>
6
7#include "../species/ncdm_species.h"
8#include "../species/species_build_context.h"
9
10namespace greybody {
11
17 public:
18 static GreyBodyParams FromDirect(double alpha, double x, double q0);
19 static GreyBodyParams FromMoments(double r, double M2, double M3);
20
21 double alpha() const {
22 return alpha_;
23 }
24 double x() const {
25 return x_;
26 }
27 double q0() const {
28 return q0_;
29 }
30 double x_times_alpha() const {
31 return x_times_alpha_;
32 }
33 double alpham1_logq0() const {
34 return alpham1_logq0_;
35 }
36
38 void moments(double& M2, double& M3, double& M4) const;
39
40 private:
41 GreyBodyParams() = default;
42 double alpha_ = 1.;
43 double x_ = 1.;
44 double q0_ = 1.;
45 double x_times_alpha_ = 1.;
46 double alpham1_logq0_ = 0.;
47};
48
49} // namespace greybody
50
55class GreyBodyNCDMSpecies : public NCDMSpecies {
56 public:
57 static constexpr std::string_view kTypeName = "ncdm_greybody";
58
60 const std::string& instance_name,
61 const NcdmSettings& settings,
62 const background* pba,
63 const BackgroundModule* bgm);
64
65 static std::vector<Named> CreateAll(const SpeciesBuildContext& ctx);
66
67 // Per-species derived parameters surfaced via BackgroundModule::GetSpeciesParam.
68 std::optional<double> GetParam(const std::string& name) const override;
69
70 protected:
71 double EvaluatePsdAnalytic(double q) const override;
72 quadrature_method DefaultQuadratureStrategy() const override;
73 void FillQuadratureParams(GBQuadParams& p) const override;
74
75 private:
76 // Computes the species' dimensionless moments from its own quadrature.
77 void GreyBodyMoments(double& M2, double& M3, double& M4) const;
78
79 greybody::GreyBodyParams gb_ = greybody::GreyBodyParams::FromDirect(1., 1., 1.);
80 bool gb_ready_ = false;
81};
Definition parser.h:21
Definition greybody_ncdm_species.h:55
double EvaluatePsdAnalytic(double q) const override
Definition greybody_ncdm_species.cpp:221
std::optional< double > GetParam(const std::string &name) const override
Definition greybody_ncdm_species.cpp:267
quadrature_method DefaultQuadratureStrategy() const override
Definition greybody_ncdm_species.cpp:238
void FillQuadratureParams(GBQuadParams &p) const override
Definition greybody_ncdm_species.cpp:242
Definition greybody_ncdm_species.h:16
void moments(double &M2, double &M3, double &M4) const
Definition greybody_ncdm_species.cpp:150
Definition quadrature.h:30
Definition species_build_context.h:58