Equations of state
Aether.EOS.IdealHydro — Type
struct IdealHydro{FT} <: EquationOfStateIdealHydro(γ, 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 heatsdensity_floor::Any: minimum allowed densitypressure_floor::Any: minimum allowed pressuretemperature_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)Aether.EOS.IdealMHD — Type
struct IdealMHD{FT} <: EquationOfStateIdealMHD(γ, 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 heatsdensity_floor::Any: minimum allowed densitypressure_floor::Any: minimum allowed pressuretemperature_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)Aether.EOS.IdealHydroS — Type
struct IdealHydroS{FT} <: EquationOfStateIdealHydroS(γ, 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 heatsdensity_floor::Any: minimum allowed densitypressure_floor::Any: minimum allowed pressuretemperature_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-syncSfrom 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)Aether.EOS.IdealMHDS — Type
struct IdealMHDS{FT} <: EquationOfStateIdealMHDS(γ, 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 heatsdensity_floor::Any: minimum allowed densitypressure_floor::Any: minimum allowed pressuretemperature_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-syncSfrom 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)Aether.EOS.IsothermalHydro — Type
struct IsothermalHydro{FT} <: EquationOfStateIsothermal hydrodynamics parameters. This immutable scalar-only type is suitable for passing directly to kernels.
sound_speed::Any: constant isothermal sound speeddensity_floor::Any: minimum allowed density
using Aether
IsothermalHydro(1.0, 1e-12)
# output
IsothermalHydro{Float64}(1.0, 1.0e-12)Aether.EOS.IsothermalMHD — Type
struct IsothermalMHD{FT} <: EquationOfStateIsothermal magnetohydrodynamics parameters. This immutable scalar-only type is suitable for passing directly to kernels.
sound_speed::Any: constant isothermal sound speeddensity_floor::Any: minimum allowed density
using Aether
IsothermalMHD(1.0, 1e-12)
# output
IsothermalMHD{Float64}(1.0, 1.0e-12)