|
CLASSpp Manual
Cosmology reference and developer manual
|
#include <ncdm_base_species.h>
Inheritance diagram for NCDMBaseSpecies:Data Structures | |
| struct | DeferInit |
| struct | PerturbLayout |
Public Member Functions | |
| std::unique_ptr< BaseSpecies::PerturbLayout > | CreatePerturbLayout () const override |
| double | GetOmega0 () const override |
| bool | ClustersAsMatter () const override |
| bool | IsColdMatterSpecies () const override |
| double | BackgroundAIni (double a_proposed, double tol) const override |
| void | PrintNeffInfo () const override |
| void | PrintMassInfo () const override |
| double | NeutrinoOmega0 () const override |
| double | NeffContribution (double z) const override |
| double | TensorMasslessRelativisticRho (const double *pvecback) const override |
| void | CheckUltraRelativisticAtIc (const double *pvecback, double tol) const override |
| bool | IsUltraRelativisticAtIc (const double *pvecback, double tol) const override |
| void | WarnIfTooHeavyForHalofit (double m_ev_threshold) const override |
| void | SetBackgroundModule (const BackgroundModule *bgm) override |
| void | SetPerturbs (const perturbs *ppt) override |
| void | RegisterTransferSourceIndices (int &index_tp, const SourceRequestContext &ctx) override |
| void | PerturbTensorDerivs (const BaseSpecies::PerturbLayout &layout, double tau, const double *y, double *dy, const perturb_parameters_and_workspace &ppaw) const override |
| void | ContributeTensorGwSource (const BaseSpecies::PerturbLayout &layout, double a, const double *y, perturb_workspace *ppw) const override |
| void | MarkUsedInSources (const BaseSpecies::PerturbLayout &layout, const perturb_workspace *ppw, int *used_in_sources) const override |
| void | PerturbSynchronousToNewtonian (const BaseSpecies::PerturbLayout &layout, double *y, const PerturbIcContext &ctx) override |
| void | CopyPerturbationsAcrossSwitch (const BaseSpecies::PerturbLayout &old_layout, const BaseSpecies::PerturbLayout &new_layout, const double *old_y, double *new_y, const PerturbSwitchContext &ctx) const override |
Public Member Functions inherited from BaseSpecies | |
| virtual void | SetThermodynamicsModule (const ThermodynamicsModule *) |
| 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 | 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 | WriteTensorOutputColumnTitles (std::string &) 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 double | RhoDotOverRho (const double *pvecback, double a_prime_over_a) const |
| virtual double | GetRadiationOmega0 () const |
| virtual double | DarkRadiationRhoToday (const double *) const |
| bool | ClustersAsMatterCached () const |
| virtual void | FinalizeMatterClassification () |
| virtual bool | HasWarmMatter () const |
Protected Member Functions | |
| virtual double | GetDlnf0Dlnq (int iq, const double *pvecback) const =0 |
| virtual double | GetW0ForGwSource (int iq, const double *pvecback) const |
| virtual double | EvaluatePsdAnalytic (double q) const |
| virtual quadrature_method | DefaultQuadratureStrategy () const |
| virtual void | FillQuadratureParams (GBQuadParams &) const |
| void | BuildQuadratureAndMass (const NcdmSettings &settings) |
Protected Member Functions inherited from BaseSpecies | |
| void | ApplyFluidLikeNewtonianShift (double *y, int idx_delta, int idx_theta, const double *pvecback, const PerturbIcContext &ctx) const |
Additional Inherited Members | |
Public Types inherited from BaseSpecies | |
| enum class | EnergyType |
Abstract base for all NCDM flavors. Owns per-species quadrature, distribution function, and thermodynamic parameters. Subclasses implement the perturbation interface.
| struct NCDMBaseSpecies::DeferInit |
Tag type selecting the deferred-init constructor: reads parameters but does NOT build quadrature or mass, so a subclass can set up an overridden PSD first and then call BuildQuadratureAndMass itself.
|
inlineoverridevirtual |
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 from BaseSpecies.
|
overridevirtual |
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.
Implements BaseSpecies.
Reimplemented in WdmDecayProductSpecies.
|
inlineoverridevirtual |
NCDM (and DNCDM) are "warm" matter — they participate in delta_m but NOT in the delta_cb cold-matter tally. EnergyType::Other → both base defaults would return false, so both explicit overrides are needed.
Reimplemented from BaseSpecies.
|
inlineoverridevirtual |
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 from BaseSpecies.
|
inlineoverridevirtual |
NCDM may need to start integration earlier so it is relativistic at a_ini.
Reimplemented from BaseSpecies.
Reimplemented in WdmDecayProductSpecies.
|
overridevirtual |
Verbose N_eff line (background_verbose). Default no-op; NCDM prints; composites forward to children.
Reimplemented from BaseSpecies.
Reimplemented in WdmDecayProductSpecies.
|
overridevirtual |
Verbose mass/omega line (background_verbose). Default no-op; NCDM prints; composites forward to children.
Reimplemented from BaseSpecies.
Reimplemented in WdmDecayProductSpecies.
|
inlineoverridevirtual |
This species' contribution to Omega0 of the neutrino/NCDM sector (fnu). Default 0; NCDM returns GetOmega0(); composites sum children.
Reimplemented from BaseSpecies.
Reimplemented in WdmDecayProductSpecies.
|
inlineoverridevirtual |
Contribution to N_eff at redshift z. Default 0; NCDM returns GetNeff(z); composites sum children.
Reimplemented from BaseSpecies.
Reimplemented in WdmDecayProductSpecies.
|
inlineoverridevirtual |
Contribution to the tensor-mode "relativistic" density in the massless approximation. Default 0; NCDM returns 3*P; composites sum.
Reimplemented from BaseSpecies.
|
overridevirtual |
Initial-time ultra-relativistic check (throws via class_test on failure). Default no-op; NCDM checks |w-1/3|; composites forward to children.
Reimplemented from BaseSpecies.
Reimplemented in WdmDecayProductSpecies.
|
overridevirtual |
Initial-time ultra-relativistic predicate. Default true; NCDM checks |w-1/3| <= tol; composites AND over children.
Reimplemented from BaseSpecies.
Reimplemented in WdmDecayProductSpecies.
|
overridevirtual |
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 from BaseSpecies.
|
inlineoverridevirtual |
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 from BaseSpecies.
|
inlineoverridevirtual |
Called by PerturbationsModule during construction to provide access to the perturbs struct (alpha_idm_dr, gauge, etc.). Default: no-op.
Reimplemented from BaseSpecies.
|
overridevirtual |
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 from BaseSpecies.
|
overridevirtual |
Tensor-mode Boltzmann hierarchy for NCDM species. Subclasses must provide GetDlnf0Dlnq to specialise the driving term (static table for NCDMSpecies; pvecback array for DNCDMSpecies).
Reimplemented from BaseSpecies.
|
overridevirtual |
Contributes this species' anisotropic-stress integral to ppw->gw_source. Uses the species's per-pv NCDMBaseSpecies::PerturbLayout slot.
Reimplemented from BaseSpecies.
|
overridevirtual |
NCDM multipoles l > 2 do not enter source functions.
Reimplemented from BaseSpecies.
|
overridevirtual |
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 from BaseSpecies.
Reimplemented in WdmDecayProductSpecies.
|
overridevirtual |
Layout-shape-preserving slot-by-slot copy across a vector reallocation. Default for NCDM-family species with no approximation switches of their own: the vector is still reallocated (zero-initialized) whenever any OTHER species' approximation flips (TCA/RSA/...), so every species must migrate its slots or lose its hierarchy mid-integration (#372). Subclasses whose layout shape can change across a switch must override (NCDMSpecies' fluid-approximation collapse).
Reimplemented from BaseSpecies.
|
protectedpure virtual |
Return d ln f_0 / d ln q for momentum bin iq. NCDMSpecies reads a static table; DNCDMSpecies reads pvecback. Used by PerturbTensorDerivs.
Implemented in DNCDMSpecies, and WdmDecayProductSpecies.
|
protectedvirtual |
Return the quadrature weight w_0[iq] for the GW source integral. NCDMBaseSpecies returns the static w_[iq]; DNCDMSpecies overrides.
Reimplemented in DNCDMSpecies.
|
protectedvirtual |
Analytic PSD f0(q) for the non-file case. Base: Fermi-Dirac with chemical potential ksi_. GreyBodyNCDMSpecies overrides this.
Reimplemented in AxionNCDMSpecies, and GreyBodyNCDMSpecies.
|
inlineprotectedvirtual |
Default quadrature strategy when the user leaves quadrature_strategy_ at qm_auto. Base: qm_auto (unchanged). GreyBodyNCDMSpecies returns a GB-specific method. Wired into InitQuadrature in Task 5.1; not consulted yet.
Reimplemented in GreyBodyNCDMSpecies.
|
inlineprotectedvirtual |
Populate grey-body quadrature parameters. Base: leaves p.active == false.
Reimplemented in GreyBodyNCDMSpecies.
|
protected |
Build perturbation/background quadrature and the dimensionless mass M_. Calls InitQuadrature (which dispatches the virtual PSD) then computes M_ from m_in_eV_. Call once, after the object is fully constructed.