|
CLASSpp Manual
Cosmology reference and developer manual
|
#include <dcdm_wdm_species.h>
Inheritance diagram for DCDM_WDM_Species:Public Member Functions | |
| DCDM_WDM_Species (std::unique_ptr< WdmDecayProductSpecies > wdm, const background *pba, const BackgroundModule *bgm, double omega0_combined, double Omega_ini_dcdm) | |
| void | SetBackgroundModule (const BackgroundModule *bgm) override |
| void | ComputeBackground (double a, const double *pvecback_B, double *pvecback) override |
| void | BackgroundDerivs (double tau, const double *y, double *dy, const double *pvecback) override |
| void | WriteBackgroundColumnTitles (BackgroundColumnWriter &w) const override |
| void | WriteBackgroundData (const double *pvecback, BackgroundColumnWriter &w) const override |
| double | GetOmega0 () const override |
| void | FillSources (const BaseSpecies::PerturbLayout &layout, const double *y, const double *dy, PerturbSourceContext &ctx) const override |
| void | WriteOutputColumns (PerturbColumnWriter &writer, const PerturbationsModule &mod, file_format fmt, TransferColumnSection section=TransferColumnSection::all) const override |
Public Member Functions inherited from CompositeSpecies | |
| std::unique_ptr< BaseSpecies::PerturbLayout > | CreatePerturbLayout () const override |
| void | ApplyInitialConditions (const BaseSpecies::PerturbLayout &layout, double *y, const PerturbIcContext &ctx) override |
| StressEnergyContribution | StressEnergy (const BaseSpecies::PerturbLayout &layout, const perturb_vector *pv, const double *y, const double *pvecback, const perturb_workspace *ppw) const override |
| void | PerturbDerivs (const BaseSpecies::PerturbLayout &layout, double tau, const double *y, double *dy, const perturb_parameters_and_workspace &ppaw) 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 |
| void | RegisterBackgroundIndices (int &index_bg) override |
| void | RegisterIntegrationIndices (int &index_bi) override |
| void | RegisterTransferSourceIndices (int &index_tp, const SourceRequestContext &ctx) override |
| void | AppendBudgetLines (const double *pvecback_today, double rho_crit, std::vector< BudgetLine > &out) const |
| double | GetRadiationOmega0 () const override |
| double | DarkRadiationRhoToday (const double *pvecback_integration) const override |
| double | NeutrinoOmega0 () const override |
| double | NeffContribution (double z) const override |
| void | PrintNeffInfo () const override |
| void | PrintMassInfo () 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 |
| double | BackgroundAIni (double a_proposed, double tol) const override |
| void | SetThermodynamicsModule (const ThermodynamicsModule *thm) override |
| void | SetPerturbs (const perturbs *ppt) override |
| void | SetBackgroundInitialConditions (const BackgroundICContext &ctx) override |
| void | FinalizeBackground (double a, double H, const double *pvecback_B, double *pvecback) override |
| double | Rho (const double *pvecback) const override |
| double | P (const double *pvecback) const override |
| double | PPrime (double a, double H, const double *pvecback_B, const double *pvecback) const override |
| double | FreestreamingRho (const double *pvecback) const override |
| bool | ClustersAsMatter () const override |
| bool | IsColdMatterSpecies () const override |
| bool | HasWarmMatter () const override |
| void | FinalizeMatterClassification () override |
Public Member Functions inherited from BaseSpecies | |
| virtual std::optional< double > | GetParam (const std::string &) const |
| virtual bool | IsFreestreaming () const |
| bool | IsPresent () const |
| virtual void | ProcessBackgroundTable (const double *, int, int, const double *) |
| 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 void | PrintVariables (PerturbColumnWriter &, double, const double *, const PerturbationsModule &, const perturb_workspace *) const |
| virtual double | RhoDotOverRho (const double *pvecback, double a_prime_over_a) const |
| virtual void | MarkUsedInSources (const PerturbLayout &, const perturb_workspace *, int *) const |
| bool | ClustersAsMatterCached () const |
Protected Member Functions | |
| void | AddCouplingDerivs (double tau, const double *y, double *dy, const perturb_parameters_and_workspace &ppaw) const override |
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 |
DCDM_WDM_Species: composite for cold dark matter decaying to two identical massive daughters (arXiv:2606.14849). Children: DCDMSpecies parent (index kDcdm) + WdmDecayProductSpecies daughter (kWdm).
EnergyType::Other so the background loop splits rho correctly: rho_m += rho - 3p, rho_r += 3p.
Background wiring: ComputeBackground writes the daughter's injection columns after the child loop (needs rho_dcdm); BackgroundDerivs adds df_i/dtau = J_i and dg_i/dtau = dJ_i/dlnq. AddCouplingDerivs adds the perturbation injection source J_i * delta_dcdm to the daughter's psi_0 bins.
Synchronous gauge only (guard in CreateAll). The l=1 parent-velocity source is omitted: theta_dcdm == 0 identically in synchronous gauge.
| DCDM_WDM_Species::DCDM_WDM_Species | ( | std::unique_ptr< WdmDecayProductSpecies > | wdm, |
| const background * | pba, | ||
| const BackgroundModule * | bgm, | ||
| double | omega0_combined, | ||
| double | Omega_ini_dcdm | ||
| ) |
Takes ownership of a pre-built daughter (from CreateAll).
|
overridevirtual |
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 CompositeSpecies.
|
overridevirtual |
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.
Reimplemented from CompositeSpecies.
|
overridevirtual |
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 from CompositeSpecies.
|
overridevirtual |
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 from BaseSpecies.
|
overridevirtual |
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 from BaseSpecies.
|
overridevirtual |
Combined sector density today (pinned/shot Omega_dcdmwdm), mirroring DNCDM_DR_Species::GetOmega0: at closure time the daughter's density is not yet integrated, so the child sum alone would under-reserve.
Reimplemented from CompositeSpecies.
|
overridevirtual |
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 from CompositeSpecies.
|
overridevirtual |
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 from BaseSpecies.
|
overrideprotectedvirtual |
Override in concrete subclasses to add coupling terms to dy after all children have written their free-streaming contributions. Default: no-op.
Reimplemented from CompositeSpecies.