|
CLASSpp Manual
Cosmology reference and developer manual
|
#include <base_species.h>
Inheritance diagram for BaseSpecies:Data Structures | |
| struct | PerturbLayout |
| struct | StressEnergyContribution |
Public Types | |
| enum class | EnergyType |
Public Member Functions | |
| virtual std::unique_ptr< PerturbLayout > | CreatePerturbLayout () const |
| virtual void | SetBackgroundModule (const BackgroundModule *) |
| virtual void | SetThermodynamicsModule (const ThermodynamicsModule *) |
| virtual void | SetPerturbs (const perturbs *) |
| virtual std::optional< double > | GetParam (const std::string &) const |
| virtual void | RegisterBackgroundIndices (int &index_bg)=0 |
| virtual void | RegisterIntegrationIndices (int &index_bi) |
| virtual void | SetBackgroundInitialConditions (const BackgroundICContext &ctx) |
| virtual void | ComputeBackground (double a, const double *pvecback_B, double *pvecback)=0 |
| virtual void | BackgroundDerivs (double tau, const double *y, double *dy, const double *pvecback) |
| virtual double | Rho (const double *pvecback) const =0 |
| virtual double | P (const double *pvecback) const =0 |
| virtual double | PPrime (double a, double H, const double *pvecback_B, const double *pvecback) const |
| virtual void | FinalizeBackground (double a, double H, const double *pvecback_B, double *pvecback) |
| virtual bool | IsFreestreaming () const |
| virtual double | FreestreamingRho (const double *pvecback) const |
| bool | IsPresent () const |
| virtual void | WriteBackgroundColumnTitles (BackgroundColumnWriter &) const |
| virtual void | WriteBackgroundData (const double *, BackgroundColumnWriter &) const |
| virtual void | ProcessBackgroundTable (const double *, int, int, const double *) |
| virtual void | RegisterTransferSourceIndices (int &, const SourceRequestContext &) |
| virtual void | PerturbDerivs (const PerturbLayout &layout, double tau, const double *y, double *dy, const perturb_parameters_and_workspace &ppaw) const =0 |
| virtual void | PerturbVectorDerivs (const PerturbLayout &, double, const double *, double *, const perturb_parameters_and_workspace &) const |
| virtual void | PerturbTensorDerivs (const PerturbLayout &, double, const double *, double *, const perturb_parameters_and_workspace &) const |
| virtual void | WriteTensorOutputColumnTitles (std::string &) const |
| virtual void | ContributeTensorGwSource (const PerturbLayout &, double, const double *, perturb_workspace *) const |
| virtual StressEnergyContribution | StressEnergy (const PerturbLayout &layout, const perturb_vector *pv, const double *y, const double *pvecback, const perturb_workspace *ppw) const =0 |
| virtual void | WriteOutputColumns (PerturbColumnWriter &, const PerturbationsModule &, file_format, TransferColumnSection=TransferColumnSection::all) const |
| virtual void | PrintVariables (PerturbColumnWriter &, double, const double *, const PerturbationsModule &, const perturb_workspace *) const |
| virtual void | FillSources (const PerturbLayout &, const double *, const double *, PerturbSourceContext &) const |
| virtual void | ApplyInitialConditions (const PerturbLayout &, double *, const PerturbIcContext &) |
| virtual void | CopyPerturbationsAcrossSwitch (const PerturbLayout &, const PerturbLayout &, const double *, double *, const PerturbSwitchContext &) const |
| virtual double | RhoDotOverRho (const double *pvecback, double a_prime_over_a) const |
| virtual void | PerturbSynchronousToNewtonian (const PerturbLayout &, double *, const PerturbIcContext &) |
| virtual void | MarkUsedInSources (const PerturbLayout &, const perturb_workspace *, int *) const |
| virtual double | GetOmega0 () const =0 |
| virtual double | GetRadiationOmega0 () const |
| virtual double | DarkRadiationRhoToday (const double *) const |
| virtual double | NeutrinoOmega0 () const |
| virtual double | NeffContribution (double) const |
| virtual void | PrintNeffInfo () const |
| virtual void | PrintMassInfo () const |
| virtual double | TensorMasslessRelativisticRho (const double *) const |
| virtual void | CheckUltraRelativisticAtIc (const double *, double) const |
| virtual bool | IsUltraRelativisticAtIc (const double *, double) const |
| virtual void | WarnIfTooHeavyForHalofit (double) const |
| virtual double | BackgroundAIni (double a_proposed, double) const |
| bool | ClustersAsMatterCached () const |
| virtual void | FinalizeMatterClassification () |
| virtual bool | ClustersAsMatter () const |
| virtual bool | IsColdMatterSpecies () const |
| virtual bool | HasWarmMatter () const |
Protected Member Functions | |
| void | ApplyFluidLikeNewtonianShift (double *y, int idx_delta, int idx_theta, const double *pvecback, const PerturbIcContext &ctx) const |
Friends | |
| class | SpeciesCollection |
Abstract base class for all cosmological species.
Each species:
The collection in BaseModule is a const SpeciesCollection&. Use .at("CDM") (throws if absent) or .find("CDM") (returns pointer-or-nullptr); iterate with for (auto& sp : all_species_) and use sp.key / sp->name() as needed.
|
strong |
Classification used by background_functions() to accumulate rho_r, rho_m, etc.
|
inlinevirtual |
Produce a fresh layout for this species. Called once per pv during perturb_vector_init, before Register*PerturbationIndices. Default: empty base PerturbLayout (suitable for species with no perturbation slots, or as a placeholder during migration).
Reimplemented in BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, FluidSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, LambdaSpecies, NCDMBaseSpecies, PhotonsSpecies, PpfFluid, ScalarFieldSpecies, and UltraRelativisticSpecies.
|
inlinevirtual |
Called by BackgroundModule after construction to provide access to its indices (index_bg_a_, index_bg_H_, etc.) and background state. Species that need it override this; default is no-op.
Reimplemented in AxionEDEFluid, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DCDM_DR_Species, DCDM_WDM_Species, DNCDM_DR_Species, FluidSpecies, NCDMBaseSpecies, and ScalarFieldSpecies.
|
inlinevirtual |
Called by PerturbationsModule during construction to provide access to the thermodynamics module (pvecthermo indices, etc.). Default: no-op.
Reimplemented in BaryonsSpecies, CompositeSpecies, IDRSpecies, and PhotonsSpecies.
|
inlinevirtual |
Called by PerturbationsModule during construction to provide access to the perturbs struct (alpha_idm_dr, gauge, etc.). Default: no-op.
Reimplemented in BaryonsSpecies, CompositeSpecies, IDM_DR_IDR_Species, IDRSpecies, NCDMBaseSpecies, and PhotonsSpecies.
|
inlinevirtual |
Generic species-param accessor for the Python wrapper layer and cross-module readers that don't want to downcast. Each species may opt in by overriding this and returning the named param; default is std::nullopt.
Reimplemented in GreyBodyNCDMSpecies, and IDM_DR_IDR_Species.
|
pure virtual |
Claim consecutive slots in pvecback. Called once during background_indices(). Implementation must assign index_bg_rho_ (and any other needed indices) and increment index_bg accordingly.
Implemented in BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DNCDMSpecies, FluidSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, LambdaSpecies, PhotonsSpecies, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Claim slots in the ODE integration vector y. Called during background_indices(). Default: no integrated variables (analytic species do not need this).
Reimplemented in CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DNCDMSpecies, FluidSpecies, ScalarFieldSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Set initial conditions for ODE-integrated background variables.
| ctx | Background initial-condition context (a_ini, rho_rad, and the integration vector to fill). |
Reimplemented in CompositeSpecies, DCDMSpecies, DCDM_DR_Species, DNCDM_DR_Species, DNCDMSpecies, FluidSpecies, ScalarFieldSpecies, and WdmDecayProductSpecies.
|
pure virtual |
Compute species background quantities at scale factor a. pvecback_B is the current ODE integration vector. Write density (and any other owned quantities) into pvecback.
Implemented in BaryonsSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, PhotonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DCDM_WDM_Species, DNCDMSpecies, FluidSpecies, LambdaSpecies, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Contribute to dy/dtau for species with ODE-integrated background variables. pvecback already contains all evaluated background quantities. Default: nothing (species with analytic rho(a) don't override this).
Reimplemented in CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DCDM_DR_Species, DCDM_WDM_Species, DNCDM_DR_Species, DNCDMSpecies, FluidSpecies, and ScalarFieldSpecies.
|
pure virtual |
Energy density at current background state.
Implemented in BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DNCDMSpecies, FluidSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, LambdaSpecies, PhotonsSpecies, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.
|
pure virtual |
Pressure at current background state.
Implemented in BaryonsSpecies, IDM_DRSpecies, IDM_DRMDSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DNCDMSpecies, FluidSpecies, IDRSpecies, IDR_DRMDSpecies, LambdaSpecies, PhotonsSpecies, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Post-Friedmann. This species' conformal-time pressure derivative p' (a' / a = a*H). pvecback_B is the ODE state (IN); pvecback is fully populated through H. Default 0 (matter / Lambda).
Reimplemented in DarkRadiationSpecies, DNCDMSpecies, IDRSpecies, IDR_DRMDSpecies, PhotonsSpecies, CompositeSpecies, FluidSpecies, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Post-Friedmann. Write this species' H-dependent owned output slots. H passed explicitly so the hook need not re-read it. Default no-op.
Reimplemented in CompositeSpecies, and ScalarFieldSpecies.
|
inlinevirtual |
True for species that are free-streaming and massless at IC time (deep radiation domination). Used to accumulate rho_nu / fracnu in perturbation IC setup. Static at construction time. Default: false.
Reimplemented in DarkRadiationSpecies, DNCDMSpecies, IDRSpecies, IDR_DRMDSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Free-streaming radiation density contributed by this species at the current background state. Plain species derive this from IsFreestreaming(); composites override it to sum over their children.
Reimplemented in CompositeSpecies.
|
inline |
Returns true if this species is present (has registered its background indices). For top-level species use all_species_.count(); IsPresent() is for sub-components of composites where all_species_.count() is unavailable.
|
inlinevirtual |
Write this species' background column titles into writer. Called by BackgroundModule::background_output_titles(). Default: no-op (species with no background output need not override).
Reimplemented in BaryonsSpecies, CDMSpecies, DCDM_DR_Species, DCDM_WDM_Species, DNCDM_DR_Species, DNCDMSpecies, FluidSpecies, IDM_DR_IDR_Species, LambdaSpecies, PhotonsSpecies, ScalarFieldSpecies, Type3Species, UltraRelativisticSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Write this species' background data values into writer. pvecback is the full background vector at the current time step. Called by BackgroundModule::background_output_data(). Default: no-op.
Reimplemented in BaryonsSpecies, CDMSpecies, DCDM_DR_Species, DCDM_WDM_Species, DNCDM_DR_Species, DNCDMSpecies, FluidSpecies, IDM_DR_IDR_Species, LambdaSpecies, PhotonsSpecies, ScalarFieldSpecies, Type3Species, UltraRelativisticSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Called once after the full background table is built. Lets a species run table-scope analysis over its own columns. Default no-op.
|
inlinevirtual |
Register this species' transfer-source (index_tp) slots. Set once in perturb_indices_of_perturbs() before the k-loop; mirrors RegisterBackgroundIndices (k-independent, cached in a plain species member). Takes no PerturbLayout — that absence marks it as non-per-k state. Default: no-op (species that emit no transfer functions).
Reimplemented in BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, FluidSpecies, IDM_DR_IDR_Species, NCDMBaseSpecies, PhotonsSpecies, ScalarFieldSpecies, and UltraRelativisticSpecies.
|
pure virtual |
Contribute to dy for the scalar perturbation ODE at conformal time tau. The PerturbScalarContext inside ppaw->ppw has pre-computed metric terms, cross-species state (delta_g, theta_g, theta_b, ...), and approximation flags. The layout is this species' PerturbLayout slot (ppw->pv->species_layouts[i]); composites receive their own layout and pass nested sub-layouts to children.
Implemented in LambdaSpecies, BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DNCDMSpecies, FluidSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, PhotonsSpecies, PpfFluid, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Contribute to dy for the vector perturbation ODE. Default: no-op.
Reimplemented in PhotonsSpecies.
|
inlinevirtual |
Contribute to dy for the tensor perturbation ODE. Default: no-op.
Reimplemented in DNCDM_DR_Species, NCDMBaseSpecies, and PhotonsSpecies.
|
inlinevirtual |
Write this species' tensor-mode output column titles. Default: no-op.
|
inlinevirtual |
Contribute to the gravitational-wave source term (anisotropic stress) for tensor mode. Called after perturb_workspace::gw_source is reset to zero. Default: no-op. The layout is this species' PerturbLayout slot (ppw->pv->species_layouts[i]).
Reimplemented in NCDMBaseSpecies.
|
pure virtual |
All scalar stress-energy perturbations in one call.
Implemented in LambdaSpecies, BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DNCDMSpecies, FluidSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, PhotonsSpecies, ScalarFieldSpecies, Type3Species, UltraRelativisticSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Append this species' output columns (delta, theta) to writer. Called from perturb_output_titles (title mode) and perturb_output_data (data mode). In class_format, the module may call this separately for density and velocity sections to preserve the historical transfer-column ordering. Use writer.Add(title, mod.index_tp_XXX_, active) — writer looks up tk[tp_index].
Reimplemented in BaryonsSpecies, CDMSpecies, DCDMSpecies, DCDM_DR_Species, DCDM_WDM_Species, DNCDM_DR_Species, FluidSpecies, IDM_DR_IDR_Species, PhotonsSpecies, ScalarFieldSpecies, Type3Species, UltraRelativisticSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Append this species' time-evolution variables to writer. Called from perturb_prepare_k_output (title mode, tau=0/y=nullptr/ppw=nullptr) and perturb_print_variables_member (data mode). Guard computation behind: if (!writer.IsTitleMode()) { ... compute ... } Use writer.Add(title, computed_value, active).
Reimplemented in BaryonsSpecies, CDMSpecies, DCDMSpecies, FluidSpecies, IDM_DR_IDR_Species, PhotonsSpecies, PpfFluid, ScalarFieldSpecies, Type3Species, and UltraRelativisticSpecies.
|
inlinevirtual |
Write per-k, per-tau source values for this species into the source table. Called in perturb_sources_member() after metric/temperature sources are set. Use ctx.p_mod->SetSourceValue(ctx.index_md, ctx.index_ic, ctx.p_mod->index_tp_XXX_, ctx.index_tau, ctx.index_k, value). All addressing (index_md, index_ic, index_k, index_tau) is in ctx. Default: no-op.
Reimplemented in BaryonsSpecies, CDMSpecies, CompositeSpecies, DCDM_DR_Species, DCDM_WDM_Species, DNCDM_DR_Species, FluidSpecies, IDM_DR_IDR_Species, PhotonsSpecies, PpfFluid, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Write synchronous-gauge initial conditions for this species into y[]. y[] == ppw->pv->y. The module pre-computes ctx.delta_g_ic, ctx.delta_ur, etc. Guard each IC type: if (ctx.index_ic == ctx.p_mod->index_ic_ad_) { ... } Newtonian gauge transformation is handled by the module after this loop. Default: no-op.
Reimplemented in AxionEDEFluid, BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DNCDMSpecies, FluidSpecies, IDM_DR_IDR_Species, PhotonsSpecies, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Copy perturbation state from one layout to another across an approximation switch. Called when the perturbation vector is reallocated (e.g., NCDM FA collapse from full Boltzmann hierarchy to fluid variables delta/theta/shear). Default: no-op. Most species have no approximation switches.
Reimplemented in BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, FluidSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, NCDMBaseSpecies, PhotonsSpecies, PpfFluid, ScalarFieldSpecies, and UltraRelativisticSpecies.
|
inlinevirtual |
Log conformal-time derivative of the background density, ρ̇/ρ (ρ̇ ≡ dρ̄/dτ). Single source of truth for the density-contrast gauge shift; mirrors the continuity equation used in BackgroundDerivs. Default: ρ̇/ρ = -3ℋ(Rho+P)/Rho. Species with extra source/sink terms (e.g. decay) override this.
| pvecback | Current background-quantity vector. |
| a_prime_over_a | ℋ = a'/a (base does not store H/a indices). |
Reimplemented in DCDMSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Transform this species' own perturbation variables from synchronous to Newtonian gauge, in place in y[]. Called by the module after alpha is known (ctx.alpha / ctx.alpha_prime filled). The synchronous IC is already in y[] (ApplyInitialConditions runs in both gauges), so this is a pure shift/re-seed. Default: no-op (species with no perturbed variables, e.g. cosmological constant).
Reimplemented in WdmDecayProductSpecies, BaryonsSpecies, CDMSpecies, CompositeSpecies, DCDMSpecies, DCDM_DR_Species, DNCDM_DR_Species, FluidSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, NCDMBaseSpecies, PhotonsSpecies, ScalarFieldSpecies, and UltraRelativisticSpecies.
|
inlinevirtual |
Mark which source slots this species writes during FillSources. Called to build the used_in_sources bitmask/index list. ppw is supplied so species can consult their approximation flags. Default: no-op. Sources-writing species override to flag their tp indices.
Reimplemented in IDM_DR_IDR_Species, NCDMBaseSpecies, PhotonsSpecies, and UltraRelativisticSpecies.
|
pure virtual |
Returns the species' contribution to Omega0 (used for budget closure during construction). For composites, this defaults to summing children. For decay-product species starting at zero, override returning 0.
Implemented in BaryonsSpecies, CDMSpecies, CompositeSpecies, DarkRadiationSpecies, DCDMSpecies, DCDM_WDM_Species, DNCDM_DR_Species, FluidSpecies, IDM_DRSpecies, IDM_DRMDSpecies, IDRSpecies, IDR_DRMDSpecies, LambdaSpecies, NCDMBaseSpecies, PhotonsSpecies, ScalarFieldSpecies, UltraRelativisticSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Relativistic (radiation-like) Omega0 contribution at early times. Default 0; ultra-relativistic and interacting-dark-radiation species override.
Reimplemented in CompositeSpecies, IDRSpecies, IDR_DRMDSpecies, and UltraRelativisticSpecies.
|
inlinevirtual |
Dark-radiation energy density today, read from the integrated background vector. Default 0; DarkRadiationSpecies returns its own; composites sum.
Reimplemented in CompositeSpecies, and DarkRadiationSpecies.
|
inlinevirtual |
This species' contribution to Omega0 of the neutrino/NCDM sector (fnu). Default 0; NCDM returns GetOmega0(); composites sum children.
Reimplemented in CompositeSpecies, NCDMBaseSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Contribution to N_eff at redshift z. Default 0; NCDM returns GetNeff(z); composites sum children.
Reimplemented in CompositeSpecies, NCDMBaseSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Verbose N_eff line (background_verbose). Default no-op; NCDM prints; composites forward to children.
Reimplemented in CompositeSpecies, NCDMBaseSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Verbose mass/omega line (background_verbose). Default no-op; NCDM prints; composites forward to children.
Reimplemented in CompositeSpecies, NCDMBaseSpecies, and WdmDecayProductSpecies.
|
inlinevirtual |
Contribution to the tensor-mode "relativistic" density in the massless approximation. Default 0; NCDM returns 3*P; composites sum.
Reimplemented in CompositeSpecies, and NCDMBaseSpecies.
|
inlinevirtual |
Initial-time ultra-relativistic check (throws via class_test on failure). Default no-op; NCDM checks |w-1/3|; composites forward to children.
Reimplemented in WdmDecayProductSpecies, CompositeSpecies, and NCDMBaseSpecies.
|
inlinevirtual |
Initial-time ultra-relativistic predicate. Default true; NCDM checks |w-1/3| <= tol; composites AND over children.
Reimplemented in WdmDecayProductSpecies, CompositeSpecies, and NCDMBaseSpecies.
|
inlinevirtual |
Warn (stdout) if this species is too heavy for Halofit/HMcode. The policy threshold is passed by the nonlinear module. Default no-op; NCDM compares its mass; composites forward.
Reimplemented in CompositeSpecies, and NCDMBaseSpecies.
|
inlinevirtual |
Earliest scale factor this species needs integration to start from. Default: returns a_proposed unchanged. NCDM species may pull it earlier.
Reimplemented in CompositeSpecies, NCDMBaseSpecies, and WdmDecayProductSpecies.
|
inline |
Cached counterparts of ClustersAsMatter()/IsColdMatterSpecies(), valid after FinalizeMatterClassification(). The hot-path tally reads these.
|
inlinevirtual |
Stamp the cached classification from the (virtual) predicates. Called once by SpeciesCollection::freeze() after every species and its children are built. CompositeSpecies overrides to also recurse into children.
Reimplemented in CompositeSpecies.
|
inlinevirtual |
True iff this species' clustering participates in the total matter tally (delta_m / theta_m and the P_m(k) source). This is the axis-2 (perturbation) counterpart to EnergyType, which only drives the axis-1 background rho_r/rho_m split: a quintessence scalar field is EnergyType::Other (radiation-like early, so the background needs its rho-3P split) yet does NOT cluster as matter, so it must stay out of P_m(k). A member's contribution is computed generically (its matter density is rho-3P and its density perturbation is delta_rho-3*delta_p), so this predicate only governs membership, not the value. Default: cold matter (energy_type==Matter). Overrides: NCDM/DNCDM (warm matter) return true; composites scan children; a clustering scalar-field dark-matter model would override to true.
Reimplemented in CompositeSpecies, and NCDMBaseSpecies.
|
inlinevirtual |
True iff this sector participates in the cold-matter tally (delta_cb, theta_cb). Cold matter excludes NCDM/DNCDM (which are "warm" matter). Default: energy_type_ == EnergyType::Matter. Overrides: NCDMBaseSpecies returns false; composites scan children.
Reimplemented in CompositeSpecies, and NCDMBaseSpecies.
|
inlinevirtual |
True iff this species contributes WARM matter: it clusters in the total matter tally (delta_m / P_m) but stays out of the cold tally (delta_cb / P_cb). This is exactly the condition under which P_cb differs from P_m, so it gates the cb sources and spectra (has_source_delta_cb, has_pk_cb_). Default: derived from the two predicates above. Override: composites scan children (their own two predicates OR over children, so e.g. a cold parent + warm daughter composite would wrongly read as cold).
Reimplemented in CompositeSpecies.
|
inlineprotected |
Universal fluid-like gauge shift: delta += (ρ̇/ρ)·alpha ; theta += k²·alpha (shear, l3 and higher moments are gauge-invariant). Fluid-like species call this from PerturbSynchronousToNewtonian, supplying their own delta/theta slots.