-
Notifications
You must be signed in to change notification settings - Fork 32
Covariant theories
This page is the reference for the covariant (full-Lagrangian) scalar-tensor models built into hi_class v3.3.4.4 (built on CLASS v3.3.4): what each model is, how to select it, and what every entry of parameters_smg means.
A covariant model is specified by its full Horndeski Lagrangian — the functions G₂(φ,X), G₃(φ,X), G₄(φ,X), G₅(φ,X) with X = ½(φ′/a)² the kinetic term. hi_class then evolves the scalar field and the Friedmann equations together, so the expansion history is a prediction of the theory: the keys expansion_model / expansion_smg do not apply here. This is in contrast with parametrized models, where you choose the α-functions and must supply an expansion history separately.
hi_class uses the conventions of the code paper (1605.06102, eqs. 2.1–2.5). The action is
S[g_μν, φ] = ∫ d⁴x √(−g) [ Σ(i=2..5) (1/8πG_N) ℒ_i[g_μν, φ] + ℒ_m[g_μν, ψ_M] ]
with the four Horndeski Lagrangians
ℒ₂ = G₂(φ,X)
ℒ₃ = −G₃(φ,X) □φ
ℒ₄ = G₄(φ,X) R + G₄X(φ,X) [ (□φ)² − φ_;μν φ^;μν ]
ℒ₅ = G₅(φ,X) G_μν φ^;μν − (1/6) G₅X(φ,X) [ (□φ)³ + 2 φ_;μ^ν φ_;ν^α φ_;α^μ − 3 φ_;μν φ^;μν □φ ]
where φ_;μ ≡ ∇_μφ, 2X ≡ −∂_μφ ∂^μφ (so X = ½(φ′/a)² on the homogeneous background), R and G_μν are the Ricci scalar and the Einstein tensor, and a subscript φ or X is a partial derivative (G_iX ≡ ∂G_i/∂X). Matter is minimally and universally coupled to g_μν, so the weak equivalence principle holds.
One convention matters when comparing with the literature: the G's already carry the factor 1/8πG_N, which lowers their mass dimension by two. General relativity is G₄ = ½ with the other three functions zero — which is why every G₄ quoted on this page starts from ½ rather than from M_p²/2, and why the code's zero-state macro sets G4 = 1/2 (see Extending hi_class).
The effective Planck mass is built from the same functions,
M*² = 2 ( G₄ − 2X G₄X + X G₅φ − (Hφ′/a) X G₅X )
and it is M*², together with the four α-functions — not the G's themselves — that the perturbation module works with; their definitions are on Parametrized alphas.
Beyond-Horndeski (GLPV) models add two further functions, F₄ and F₅, to ℒ₄ and ℒ₅; they are written out under Beyond Horndeski and DHOST at the end of this page.
Three input keys control the choice of theory:
-
gravity_model— the name of the Lagrangian (accepted strings and aliases below). -
gravity_submodel— documented here for the first time: an optional second key that selects a branch of a model family. It exists for three models:galileon(valuescubic,quartic,quintic),glpv_galileon(valuequartic_cg) andcccg_exp(valuesnormal_branch,canonical). When a submodel is given, part of the Lagrangian coefficients are fixed internally andparameters_smgshrinks to the remaining free entries. When it is omitted, you provide the full internal parameter vector yourself. -
parameters_smg— comma-separated list of the model parameters, in the exact order given below for each model. The number of entries is checked by the code.
To activate the scalar field, set in your .ini:
Omega_Lambda = 0.
Omega_fld = 0.
Omega_smg = -1.
With Omega_smg = -1 the code shoots for the scalar density fraction today: one entry of parameters_smg (selected by tuning_index_smg, with a sensible per-model default listed below) is adjusted until the closure equation ΣᵢΩᵢ = 1 is satisfied. The tuned entry is therefore overwritten — its input value is at most a starting guess. See Running hi_class for the shooting mechanics and Stability and precision for the stability tests mentioned below.
Throughout this page M_p = 1 (reduced Planck mass units) and φ′ denotes the conformal-time derivative.
| Model |
gravity_model (aliases) |
gravity_submodel |
parameters_smg (in order) |
Shipped ini | Main reference |
|---|---|---|---|---|---|
| Brans–Dicke |
brans_dicke (brans dicke, Brans Dicke) |
— | V₀, ω_BD, φ_ini, φ′_ini | brans_dicke.ini |
1303.4330 |
| Monomial quintessence | quintessence_monomial |
— | N, V₀, φ′_ini, φ_ini | quintessence_monomial.ini |
1406.2301 |
| Tracker quintessence | quintessence_tracker |
— | K_ini, P_ini, V₀, n, m, λ | quintessence_tracker.ini |
astro-ph/9910214 |
| α-attractor quintessence | alpha_attractor_canonical |
— | f′_ini, f_ini, α, c², p, n | alpha_attractor_canonical.ini |
1803.00661 |
| Covariant Galileon | galileon |
cubic / quartic / quintic (or none) |
cubic: none; quartic: ξ; quintic: ξ, c₃; no submodel: ξ, c₁, c₂, c₃, c₄, c₅, φ_ini |
galileon_3.ini … galileon_5nu.ini
|
1406.0485 |
| Beyond-Horndeski Galileon (new in this release) | glpv_galileon |
quartic_cg (or none) |
quartic_cg: ξ; no submodel: ξ, c₁, c₂, c₃, c₄, c₅, b₄, b₅, φ_ini |
glpv_galileon_4.ini, glpv_galileon_cg.ini
|
1902.10687 |
| Kinetic gravity braiding |
nkgb (n-kgb, N-KGB, nKGB) |
— | g, n, Rshift0 | nkgb.ini |
1110.3598 |
| Conformally coupled cubic Galileon (new in this release) | cccg_exp |
normal_branch / canonical (or none) |
normal_branch: β, M²_ini, log₁₀Ω_smg_ini; canonical: β, M²_ini, log₁₀Ω_smg_ini, c₃; no submodel: Ω_smg_ini, M*²_ini, c₂, c₃, β, V₀ |
cccg_exp.ini, cccg_exp_canonical.ini
|
2003.06396 |
All example files live in the gravity_models/ directory of the code and run out of the box, e.g. ./class gravity_models/brans_dicke.ini.
Lagrangian: G₂ = (ω_BD/φ)X − 3V₀H₀², G₄ = φ/2. The potential is a constant (a cosmological constant in disguise, stored in units of 3H₀²); the field value sets the effective Planck mass M*² = φ.
parameters_smg = V₀, ω_BD, φ_ini, φ′_ini (4 entries):
| # | Name | Meaning |
|---|---|---|
| 0 | V₀ | constant potential in units of 3H₀². Overwritten: the code replaces your input with the guess 2Ω_smg and then tunes it by shooting (default tuning_index_smg = 0). |
| 1 | ω_BD | the Brans–Dicke parameter, controls the fifth force (α_B, α_M ∝ 1/ω_BD). |
| 2 | φ_ini | initial field value = initial M*². Overwritten if M2_tuning_smg = yes (see below). |
| 3 | φ′_ini | initial field velocity. Set it to 0 to start on the radiation-era attractor: the code then seeds the analytic equilibrium value φ′ = 3a²ρ_m/(2aH(3+2ω_BD)) and refines it by solving φ″ = 0, so the field enters the integration already relaxed. Any nonzero value is used as-is. |
Planck-mass tuning (secondary shooting, specific to Brans–Dicke and cccg_exp):
-
M2_tuning_smg = yesactivates a second shooting dimension that adjusts φ_ini (the secondary tuning index is fixed internally to entry 2) so that the effective Planck mass today matchesM2_today_smg(default 1). -
normalize_G_NR = yes(only withM2_tuning_smg = yes) instead targets M*²(today) = (4+2ω_BD)/(3+2ω_BD), which sets the effective gravitational constant for non-relativistic matter to G_Newton. It overwrites both φ_ini andM2_today_smg. -
param_shoot_M2_smgoptionally sets the starting guess for the secondary shooting parameter.
Numerical settings used in the shipped ini (see the extensively commented gravity_models/brans_dicke.ini): pert_initial_conditions_smg = zero (the default perturbation ICs can spuriously flag a tachyonic instability), a_min_stability_test_smg = 1e-6 (early-time numerical noise), and a_ini_over_a_today_default = 1.e-10 together with a_ini_test_qs_smg = 1.e-10 and pert_ic_ini_z_ref_smg = 1.e9 (starting the background at a = 10⁻¹⁰ instead of the CLASS default 10⁻¹⁴ avoids a near-cancellation in the φ″ equation that makes the stiff evolver extremely slow; the two perturbation-module reference times must move along with it).
References: Avilez & Skordis 2013 (1303.4330), Bellini et al. 2017 (1709.09135).
Lagrangian: G₂ = X − V(φ), G₄ = 1/2, with V = V₀ (H₀/h)² φ^N. (H₀/h)² are CLASS units: V₀ is quoted in units of (100 km/s/Mpc)².
parameters_smg = N, V₀, φ′_ini, φ_ini (4 entries):
| # | Name | Meaning |
|---|---|---|
| 0 | N | exponent of the monomial potential. |
| 1 | V₀ | potential amplitude. Default tuning parameter (tuning_index_smg = 1): overwritten by shooting. Alternatively set tuning_index_smg = 3 to tune φ_ini at fixed V₀. |
| 2 | φ′_ini | initial field velocity (in units of H₀). φ′_ini → 0 causes an artificial instability (α_K → 0); use a small nonzero value or a_min_stability_test_smg. |
| 3 | φ_ini | initial field value. φ cannot cross zero; a small φ_ini fails to reach the required Ω_DE. |
The shipped ini sets a_min_stability_test_smg = 1.e-10.
All quintessence_* models (including the tracker and the α-attractor below) additionally accept quintessence_w_safe_smg (default 0): the run aborts if w < −(1 + quintessence_w_safe_smg), since quintessence can only have w > −1; the tolerance absorbs numerical noise around w = −1.
Reference: Marsh et al. 2014 (1406.2301).
Lagrangian: G₂ = X − V(φ), G₄ = 1/2, with V = V₀ (H₀/h)² φ⁻ⁿ exp(λ φ^m). The field tracks the dominant background component at early times; the φ⁻ⁿ factor eventually drives it away from the attractor.
parameters_smg = K_ini, P_ini, V₀, n, m, λ (6 entries):
| # | Name | Meaning |
|---|---|---|
| 0 | K_ini | initial kinetic energy relative to radiation (sets φ′_ini via K = K_ini √ρ_rad). |
| 1 | P_ini | initial potential energy relative to radiation (sets φ_ini via V = P_ini √ρ_rad). |
| 2 | V₀ | potential amplitude. Default tuning parameter (tuning_index_smg = 2): overwritten by shooting, with the guess V₀ ≈ 3h Ω_smg/(V(φ_min)/V₀). |
| 3 | n | inverse-power-law exponent. |
| 4 | m | exponent inside the exponential. |
| 5 | λ | controls the fraction of early dark energy, Ω_early ∼ 1/λ². |
Same caveat as the monomial model: φ′_ini → 0 triggers an artificial α_K → 0 instability; the shipped ini sets a_min_stability_test_smg = 1.e-10.
Reference: an amalgamation of tracker potentials from different papers, see e.g. astro-ph/9910214.
Lagrangian: canonical field, G₂ = X − V(φ), G₄ = 1/2, with the α-attractor potential (eq. 12 of 1505.00815 for a canonical field)
V(φ) = α c² x^p / (1+x)^(2n), x = tanh(φ/√(6α)).
The field is specified through the rescaled variable f = φ/√α.
parameters_smg = f′_ini, f_ini, α, c², p, n (6 entries):
| # | Name | Meaning |
|---|---|---|
| 0 | f′_ini | initial velocity of f (the shipped ini uses 1.e-100, i.e. a frozen field). |
| 1 | f_ini | initial value of f = φ/√α. |
| 2 | α | the α-attractor parameter. |
| 3 | c² | potential amplitude. Default tuning parameter (tuning_index_smg = 3): overwritten by shooting. |
| 4 | p | exponent of x in the numerator. |
| 5 | n | exponent of (1+x) in the denominator. |
Model-specific flags (both read in the model block of gravity_smg/gravity_models_smg.c):
-
log_10_param_alpha = yes— entry 2 is interpreted as log₁₀α (the code replaces it by 10^value). -
use_phi_no_f = yes— entry 1 is given as φ instead of f; the code converts it via f = φ/√α.
The run aborts with an explanatory error if the field starts oscillating about the minimum (⟨w⟩ = 0 cannot accelerate the universe).
References: Linder 2015 (1505.00815), García-García et al. 2018 (1803.00661) (the shipped ini uses this paper's best fit), García-García et al. 2019 (1905.03753).
Lagrangian (as implemented, M_p = 1):
- G₂ = c₂X − ½c₁H₀²φ
- G₃ = −2c₃ X/H₀²
- G₄ = ½ + c₄ X²/H₀⁴
- G₅ = c₅ X²/H₀⁶
The dynamics pulls the field towards the tracker (shift-symmetry attractor) on which ξ ≡ φ̇H/H₀² is constant.
Submodels. With gravity_submodel set, the code takes the model on the tracker, fixes c₂ = −1 (and c₁ = 0, φ_ini = 0) and derives the remaining coefficients from Ω_smg:
gravity_submodel |
parameters_smg |
Fixed internally |
|---|---|---|
cubic |
(none — omit the key) | c₃ and ξ from the tracker condition; c₄ = c₅ = 0. All parameters follow from Ω_smg. |
quartic |
ξ | c₃, c₄ from ξ and Ω_smg; c₅ = 0. |
quintic |
ξ, c₃ | c₄, c₅ from ξ, c₃ and Ω_smg. |
Without a submodel you supply all 7 internal parameters yourself, in the order ξ, c₁, c₂, c₃, c₄, c₅, φ_ini. Here ξ is the initial value of φ̇H/H₀² and φ_ini is the initial field value (it only matters when c₁ ≠ 0, the tadpole that breaks shift symmetry).
Tuning: default tuning_index_smg = 3 (c₃ is adjusted by shooting to match Ω_smg, with a guess from the cubic tracker condition). If you set dxdy_guess_smg you must also set tuning_index_smg explicitly.
Model-specific flag: attractor_ic_smg (default yes). When on, the initial ξ is reset to the tracker solution of the cubic equation 5c₅ξ³ + 18c₄ξ² − 6c₃ξ + c₂ = 0 (the root closest to your input ξ is chosen). Set it to no to start off the attractor with exactly the ξ you provided.
Shipped inis (best fits from Barreira et al. 2014 (1406.0485) for the plain files, Renk et al. 2017 (1707.02263) for the ν-variants):
-
galileon_3.ini,galileon_4.ini,galileon_5.ini— cubic/quartic/quintic, massless neutrinos. -
galileon_3nu.ini,galileon_4nu.ini,galileon_5nu.ini— the same submodels with three degenerate massive neutrinos (N_ncdm = 1,deg_ncdm = 3,N_ur = 0.00641); Galileon gravity notoriously prefers nonzero neutrino masses, so these are the phenomenologically relevant best fits. - The quintic inis additionally set
hubble_evolution = yesandbackground_evolver = 0(the explicit Runge–Kutta evolver, instead of the default stiff evolver ndf15) for numerical robustness.
References: Barreira et al. 2014 (1406.0485), Renk et al. 2017 (1707.02263).
Lagrangian: the covariant Galileon of the previous section supplemented by constant beyond-Horndeski terms:
- G₂ = c₂X − ½c₁H₀²φ, G₃ = −2c₃X/H₀², G₄ = ½ + c₄X²/H₀⁴, G₅ ∝ c₅X²/H₀⁶ (as above)
- F₄ = b₄/H₀⁴, F₅ = b₅/H₀⁶ (constant)
The F-terms generate the fifth α-function, the kinetic matter mixing α_H, at the level of linear perturbations. Implementation reference: Traykova, Bellini & Ferreira (1902.10687).
parameters_smg = ξ, c₁, c₂, c₃, c₄, c₅, b₄, b₅, φ_ini (9 entries), where ξ ≡ φ̇H/H₀² sets the initial field velocity as for the plain Galileon and b₄, b₅ are the beyond-Horndeski amplitudes. With attractor_ic_smg = yes the field starts on the tracker, solving 5c₅ξ³ + (18c₄ + 24b₄)ξ² − 6c₃ξ + c₂ = 0 (attractor ICs are not implemented for b₅ ≠ 0). The choice b₄ = −c₄ with c₅ = b₅ = 0 sets α_T = 0 exactly, keeping gravitational waves luminal (Ezquiaga & Zumalacárregui 1710.05901, eq. 21).
Submodel: gravity_submodel = quartic_cg — the quartic beyond-Horndeski Galileon on the tracker with luminal gravitational waves. Takes a single parameter, ξ; internally c₃ = −1 (field normalization), c₂ and c₄ are fixed by Ω_smg and the tracker condition, b₄ = −c₄ (eq. 2.7 of 1902.10687), and c₁ = c₅ = b₅ = φ_ini = 0.
Shipped inis: glpv_galileon_4.ini (explicit 9-parameter vector with the luminal-GW tuning) and glpv_galileon_cg.ini (the quartic_cg submodel). Both run in Omega_smg_debug mode — self-consistent Ω_smg shooting currently fails for this model with a background stiffness unrelated to the F-terms — so the scalar evolves at fixed Ω_smg without shooting (see Running hi_class for what Omega_smg_debug does); they also skip the stability tests. For the α_H numerical caveats see the beyond-Horndeski notes at the end of this page.
References: Traykova, Bellini & Ferreira (1902.10687), Ezquiaga & Zumalacárregui (1710.05901).
Lagrangian: G₂ = −X, G₃ = (1/n) g^((2n−1)/2) Xⁿ/H₀²ⁿ, G₄ = ½ (M_p = 1). This is the self-accelerating "nKGB" branch of kinetic gravity braiding; the normalization of g is chosen so that g·Ω_smg,0 ∼ O(1) for all n.
parameters_smg = g, n, Rshift0 (3 entries):
| # | Name | Meaning |
|---|---|---|
| 0 | g | amplitude of the braiding term. Default tuning parameter (tuning_index_smg = 0): overwritten by shooting. |
| 1 | n | exponent of X. Must satisfy n > 1/2 for acceleration (the code enforces this; the limit n → 1/2 is singular and n ≲ 0.7 is badly behaved). n = 1 is the standard KGB model. |
| 2 | Rshift0 | "off-trackerness": the fraction of the scalar energy density today contributed by the shift charge, Rshift0 = √(2X)J/(√(2X)J + X). Must satisfy 0 ≤ Rshift0 < 1 (enforced); 0 means the field is exactly on the tracker. |
References: Deffayet et al. 2010 (1008.0048), Kimura et al. 2011 (1110.3598).
Lagrangian: G₂ = c₂X − 3V₀H₀², G₃ = −2c₃X/H₀², G₄ = ½ e^(βφ) (M_p = 1). A cubic Galileon conformally coupled to gravity through an exponential of the field; β controls the running of the effective Planck mass (α_M). This model produces "imperfect dark energy at equality", see Zumalacárregui 2020 (2003.06396).
Submodels (the recommended way to run this model). Both take the physically transparent inputs β, M*²_ini, log₁₀Ω_smg_ini where M*²_ini = e^(βφ_ini) sets the initial field value (forced to 1 when β = 0) and Ω_smg_ini is the scalar density fraction at z = 10¹⁰, which sets the initial field velocity:
gravity_submodel |
parameters_smg |
Branch | Default tuning |
|---|---|---|---|
normal_branch |
β, M*²_ini, log₁₀Ω_smg_ini | anti-canonical kinetic term, no cosmological constant: c₃ = −1, V₀ = 0; Ω_smg is sourced by the braiding term | c₂ (tuning_index_smg = 2) |
canonical |
β, M*²_ini, log₁₀Ω_smg_ini, c₃ | canonical kinetic term plus cosmological constant: c₂ = 1 | V₀ (tuning_index_smg = 5) |
Without a submodel you supply the 6 internal parameters directly, in the order Ω_smg_ini, M*²_ini, c₂, c₃, β, V₀ (here entry 0 is Ω_smg_ini itself, not its log). In that case no model-specific tuning default is set — the global default tuning_index_smg = 0 applies unless you choose one yourself.
Planck-mass tuning: like Brans–Dicke, cccg_exp supports secondary shooting on the Planck mass. With M2_tuning_smg = yes and a target M2_today_smg (default 1), the code adjusts either
-
tuning_index_2_smg = 1(default): the initial field value M*²_ini, or -
tuning_index_2_smg = 4: the coupling β (only allowed when M*²_ini <M2_today_smg, since it would otherwise require negative β, which is unstable; the code seeds an educated guess for β).
param_shoot_M2_smg optionally overrides the starting guess. Only these two values of tuning_index_2_smg are accepted.
Numerical settings used in the shipped inis (see the well-commented gravity_models/cccg_exp.ini and cccg_exp_canonical.ini):
-
a_min_stability_test_smg = 1e-6— the field starts with Ω_smg ∼ 10⁻¹⁵, so the kinetic determinant D sits at machine-noise level (∼10⁻¹³) and c_s² = (near-zero)/(near-zero); its sign at early times is rounding noise, not physics, so the stability test starts once D is resolved. -
pert_initial_conditions_smg = zero— for the same reason the superhorizon-attractor test for the scalar perturbation initial conditions (evaluated at z ∼ 10¹⁰ by default) can spuriously flag a tachyonic instability; starting the perturbations from zero scalar-field ICs lets the attractor establish itself dynamically.
cccg_exp.ini runs the normal branch (β = 0.1); cccg_exp_canonical.ini runs the canonical branch with β tuned to give M*² = 1 today.
Reference: Zumalacárregui 2020, PRD 102 023523 (2003.06396).
hi_class goes beyond Horndeski gravity. Currently the GLPV extension (Gleyzes, Langlois, Piazza & Vernizzi 1404.6495) is implemented: the two extra Lagrangian functions F₄, F₅ — available as the constant terms of glpv_galileon above — raise no new degree of freedom, and at the level of linear perturbations they enter through a single fifth α-function, the kinetic matter mixing α_H (also available directly in the propto_omega_bh parametrization).
The two functions enter the ℒ₄ and ℒ₅ of the Horndeski Lagrangian above as the additional terms
ℒ₄^bH = F₄(φ,X) ε^μνρ_σ ε^μ′ν′ρ′σ φ_;μ φ_;μ′ φ_;νν′ φ_;ρρ′
ℒ₅^bH = F₅(φ,X) ε^μνρσ ε^μ′ν′ρ′σ′ φ_;μ φ_;μ′ φ_;νν′ φ_;ρρ′ φ_;σσ′
with ε the antisymmetric Levi-Civita tensor (Traykova, Bellini & Ferreira 1902.10687, eq. 2.2, in the same normalization as the action above). Setting F₄ = F₅ = 0 returns Horndeski exactly, and with it α_H = 0. In the code they are the F4 and F5 members of struct G_functions_and_derivs, set alongside the G's; glpv_galileon fills them with the constants F₄ = b₄/H₀⁴ and F₅ = b₅/H₀⁶.
Support for the broader family of DHOST theories (degenerate higher-order scalar-tensor) is work in progress; for the theory see Zumalacárregui & García-Bellido, PRD 89, 064046 (2014) and Ben Achour et al., JHEP 12 (2016) 100.
Numerical caveat for α_H ≠ 0: the perturbation equations become stiff for k ≳ 0.5/Mpc and the run can die with a "Step size too small" error; the α_H terms are amplified by (k/aH)⁴ factors, so the threshold is roughly independent of the α_H amplitude. Tested mitigations, documented in the shipped inis: restrict the k-range (as glpv_galileon_cg.ini does with P_k_max_h/Mpc = 0.4), or floor the kineticity (kineticity_safe_smg = 1e-2, as propto_omega_bh.ini does — rescues parametrized runs at the few-permille level in P(k), but not the covariant Galileon). propto_omega_bh.ini also keeps background_Nloga = 40000, since the sparser smg default background sampling aggravates the stiffness.
The shooting machinery behind Omega_smg = -1, tuning_index_smg, tuning_dxdy_guess_smg and the Planck-mass tuning is described in Running hi_class; the stability tests and the knobs to relax them (a_min_stability_test_smg, cs2_safe_smg, …) are covered in Stability and precision. If the theory you need is not in the list above, Extending hi_class walks through adding a new covariant model — essentially writing its G-functions into gravity_smg/gravity_models_smg.c. The general theory framework is described in the hi_class papers, Zumalacárregui et al. 2017 (1605.06102) and Bellini, Sawicki & Zumalacárregui 2020 (1909.01828); see also the website for the full publication list.
Getting started
Models
Reference
Development
Background
External