Equations of state

Aether.EOS.IdealHydroType
struct IdealHydro{FT} <: EquationOfState
IdealHydro(γ, density_floor, pressure_floor; temperature_ceiling = Inf)

Ideal-gas hydrodynamics parameters. This immutable scalar-only type is suitable for passing directly to kernels. The floors and the ceiling are enforced by conserved_to_primitive! — the ceiling caps the code-unit temperature $p/\rho$ (divide a Kelvin ceiling by the temperature_unit of the run's CodeUnits) and is off at its default Inf.

  • γ::Any: ratio of specific heats

  • density_floor::Any: minimum allowed density

  • pressure_floor::Any: minimum allowed pressure

  • temperature_ceiling::Any: maximum allowed temperature $p/\rho$, in code units (Inf: no ceiling)

using Aether

IdealHydro(1.4, 1e-12, 1e-10; temperature_ceiling = 100.0)

# output
IdealHydro{Float64}(1.4, 1.0e-12, 1.0e-10, 100.0)
source
Aether.EOS.IdealMHDType
struct IdealMHD{FT} <: EquationOfState
IdealMHD(γ, density_floor, pressure_floor; temperature_ceiling = Inf)

Ideal-gas magnetohydrodynamics parameters. This immutable scalar-only type is suitable for passing directly to kernels. The floors and the ceiling are enforced by conserved_to_primitive! — the ceiling caps the code-unit temperature $p/\rho$ (divide a Kelvin ceiling by the temperature_unit of the run's CodeUnits) and is off at its default Inf.

  • γ::Any: ratio of specific heats

  • density_floor::Any: minimum allowed density

  • pressure_floor::Any: minimum allowed pressure

  • temperature_ceiling::Any: maximum allowed temperature $p/\rho$, in code units (Inf: no ceiling)

using Aether

IdealMHD(1.4, 1e-12, 1e-10)

# output
IdealMHD{Float64}(1.4, 1.0e-12, 1.0e-10, Inf)
source
Aether.EOS.IdealHydroSType
struct IdealHydroS{FT} <: EquationOfState
IdealHydroS(γ, density_floor, pressure_floor; temperature_ceiling = Inf,
            entropy_switch = 1e-3, entropy_sync = 1e-1)

IdealHydro with a dual-energy entropy switch (Bryan et al. 1995): a sixth conserved variable, the modified entropy density $S = p/\rho^{γ-1}$, rides the fluid update as a passive scalar advected by the mass flux with the ratio $s = S/\rho$ upwinded (Larrouturou 1991), so S obeys a discrete maximum principle no matter what the reconstruction does to the dynamical fields. At conserved_to_primitive! the internal energy is taken from S wherever the conservative recovery $e = E - |m|^2/2\rho$ is a sliver of the kinetic reference — $e <$ entropy_switch $\cdot e_k$ — and S is re-synchronized from the conservative energy wherever it is robust — $e ≥$ entropy_sync $\cdot e_k$ — so shock heating still enters S, with hysteresis between the thresholds. Total energy is rewritten (conservation locally sacrificed) only in switched cells, where thermal energy is at most entropy_switch of the budget by construction.

  • γ::Any: ratio of specific heats

  • density_floor::Any: minimum allowed density

  • pressure_floor::Any: minimum allowed pressure

  • temperature_ceiling::Any: maximum allowed temperature $p/\rho$, in code units (Inf: no ceiling)

  • entropy_switch::Any: use the entropy-derived energy where $e_{cons} <$ this fraction of $e_k$

  • entropy_sync::Any: re-sync S from the conservative energy where $e_{cons} ≥$ this fraction of $e_k$

using Aether

IdealHydroS(1.4, 1e-12, 1e-10)

# output
IdealHydroS{Float64}(1.4, 1.0e-12, 1.0e-10, Inf, 0.001, 0.1)
source
Aether.EOS.IdealMHDSType
struct IdealMHDS{FT} <: EquationOfState
IdealMHDS(γ, density_floor, pressure_floor; temperature_ceiling = Inf,
          entropy_switch = 1e-3, entropy_sync = 1e-1)

IdealMHD with the dual-energy entropy switch of IdealHydroS. The switch reference is the full subtraction-noise source of the MHD recovery, $e_k + e_B$: wherever $e = E - |m|^2/2\rho - |B|^2/2$ falls below entropy_switch of it — the cold, magnetically dominated cells where truncation error in the kinetic or magnetic energy fabricates the thermal state — the internal energy comes from the advected entropy instead, so the constrained-transport B contamination channel cannot poison the temperature that stiff source terms (cooling) integrate.

  • γ::Any: ratio of specific heats

  • density_floor::Any: minimum allowed density

  • pressure_floor::Any: minimum allowed pressure

  • temperature_ceiling::Any: maximum allowed temperature $p/\rho$, in code units (Inf: no ceiling)

  • entropy_switch::Any: use the entropy-derived energy where $e_{cons} <$ this fraction of $e_k + e_B$

  • entropy_sync::Any: re-sync S from the conservative energy where $e_{cons} ≥$ this fraction of $e_k + e_B$

using Aether

IdealMHDS(1.4, 1e-12, 1e-10)

# output
IdealMHDS{Float64}(1.4, 1.0e-12, 1.0e-10, Inf, 0.001, 0.1)
source
Aether.EOS.IsothermalHydroType
struct IsothermalHydro{FT} <: EquationOfState

Isothermal hydrodynamics parameters. This immutable scalar-only type is suitable for passing directly to kernels.

  • sound_speed::Any: constant isothermal sound speed

  • density_floor::Any: minimum allowed density

using Aether

IsothermalHydro(1.0, 1e-12)

# output
IsothermalHydro{Float64}(1.0, 1.0e-12)
source
Aether.EOS.IsothermalMHDType
struct IsothermalMHD{FT} <: EquationOfState

Isothermal magnetohydrodynamics parameters. This immutable scalar-only type is suitable for passing directly to kernels.

  • sound_speed::Any: constant isothermal sound speed

  • density_floor::Any: minimum allowed density

using Aether

IsothermalMHD(1.0, 1e-12)

# output
IsothermalMHD{Float64}(1.0, 1.0e-12)
source