CLASSpp Manual
Cosmology reference and developer manual
Loading...
Searching...
No Matches
all_species.h
1#pragma once
9#include <array>
10#include <string_view>
11
12#include "axion_ncdm_species.h"
13#include "baryons.h"
14#include "base_species.h"
15#include "cdm.h"
16#include "dark_radiation_species.h"
17#include "dcdm.h"
18#include "dcdm_dr_species.h"
19#include "dcdm_wdm_species.h"
20#include "dncdm_dr_species.h"
21#include "fluid.h"
22#include "greybody_ncdm_species.h"
23#include "idm_dr.h"
24#include "idm_dr_idr_species.h"
25#include "idm_drmd.h"
26#include "idm_drmd_idr_drmd_species.h"
27#include "idr.h"
28#include "idr_drmd.h"
29#include "lambda.h"
30#include "ncdm_interacting_species.h"
31#include "ncdm_species.h"
32#include "photons.h"
33#include "scalar_field.h"
34#include "species_build_context.h"
35#include "type3_species.h"
36#include "ultra_relativistic.h"
37
39 std::string_view name;
40 std::vector<Named> (*create_all)(const SpeciesBuildContext&);
41};
42
43// NOTE: each entry name is the species' kTypeName (the .ini `type =` value).
44// This is deliberately distinct from a species' collection registration key
45// (CamelCase, e.g. all_species_.at("Lambda")), which lives in each CreateAll.
46inline constexpr std::array kAllSpeciesFactories = {
47 SpeciesFactoryEntry{PhotonsSpecies::kTypeName, &PhotonsSpecies::CreateAll},
48 SpeciesFactoryEntry{BaryonsSpecies::kTypeName, &BaryonsSpecies::CreateAll},
49 SpeciesFactoryEntry{CDMSpecies::kTypeName, &CDMSpecies::CreateAll},
50 SpeciesFactoryEntry{UltraRelativisticSpecies::kTypeName, &UltraRelativisticSpecies::CreateAll},
51 SpeciesFactoryEntry{DCDM_DR_Species::kTypeName, &DCDM_DR_Species::CreateAll},
52 SpeciesFactoryEntry{NCDMSpecies::kTypeName, &NCDMSpecies::CreateAll},
53 SpeciesFactoryEntry{GreyBodyNCDMSpecies::kTypeName, &GreyBodyNCDMSpecies::CreateAll},
54 SpeciesFactoryEntry{AxionNCDMSpecies::kTypeName, &AxionNCDMSpecies::CreateAll},
55 SpeciesFactoryEntry{DNCDMSpecies::kTypeName, &DNCDM_DR_Species::CreateAll},
56 SpeciesFactoryEntry{DCDM_WDM_Species::kTypeName, &DCDM_WDM_Species::CreateAll},
57 SpeciesFactoryEntry{NCDMInteractingSpecies::kTypeName, &NCDMInteractingSpecies::CreateAll},
58 SpeciesFactoryEntry{IDM_DR_IDR_Species::kTypeName, &IDM_DR_IDR_Species::CreateAll},
59 SpeciesFactoryEntry{IDM_DRMD_IDR_DRMD_Species::kTypeName,
60 &IDM_DRMD_IDR_DRMD_Species::CreateAll},
61 SpeciesFactoryEntry{LambdaSpecies::kTypeName, &LambdaSpecies::CreateAll},
62 SpeciesFactoryEntry{FluidSpecies::kTypeName, &FluidSpecies::CreateAll},
63 SpeciesFactoryEntry{ScalarFieldSpecies::kTypeName, &ScalarFieldSpecies::CreateAll},
64 SpeciesFactoryEntry{Type3Species::kTypeName, &Type3Species::CreateAll},
65};
66
68inline constexpr std::string_view ClosureSpeciesName(ClosureSpecies cs) {
69 switch (cs) {
70 case ClosureSpecies::Lambda:
71 return LambdaSpecies::kTypeName;
72 case ClosureSpecies::Fluid:
73 return FluidSpecies::kTypeName;
74 case ClosureSpecies::ScalarField:
75 return ScalarFieldSpecies::kTypeName;
76 case ClosureSpecies::None:
77 return "";
78 }
79 return "";
80}
ClosureSpecies
Definition background.h:37
Definition species_build_context.h:58
Definition all_species.h:38