Equations of State

Currently, SWIFT offers two different gas equations of state (EoS) implemented: ideal and isothermal; as well as a variety of EoS for “planetary” materials. The EoS describe the relations between our main thermodynamical variables: the internal energy per unit mass (\(u\)), the mass density (\(\rho\)), the entropy (\(A\)) and the pressure (\(P\)).

Gas EoS

We write the adiabatic index as \(\gamma \) and \( c_s \) denotes the speed of sound. The adiabatic index can be changed at configure time by choosing one of the allowed values of the option --with-adiabatic-index. The default value is \(\gamma = 5/3 \).

The tables below give the expression for the thermodynamic quantities on each row entry as a function of the gas density and the thermodynamical quantity given in the header of each column.

Ideal Gas

Variable

A

u

P

A

\( \left( \gamma - 1 \right) u \rho^{1-\gamma} \)

\(P \rho^{-\gamma} \)

u

\( A \frac{ \rho^{ \gamma - 1 } }{\gamma - 1 } \)

\(\frac{1}{\gamma - 1} \frac{P}{\rho}\)

P

\( A \rho^\gamma \)

\( \left( \gamma - 1\right) u \rho \)

\(c_s\)

\(\sqrt{ \gamma \rho^{\gamma - 1} A}\)

\(\sqrt{ u \gamma \left( \gamma - 1 \right) } \)

\(\sqrt{ \frac{\gamma P}{\rho} }\)

Isothermal Gas

Variable

A

u

P

A

\(\left( \gamma - 1 \right) u \rho^{1-\gamma}\)

u

const

P

\(\left( \gamma - 1\right) u \rho \)

\( c_s\)

\(\sqrt{ u \gamma \left( \gamma - 1 \right) } \)

Note that when running with an isothermal equation of state, the value of the tracked thermodynamic variable (e.g. the entropy in a density-entropy scheme or the internal enegy in a density-energy SPH formulation) written to the snapshots is meaningless. The pressure, however, is always correct in all scheme.

Planetary EoS

See Planetary Equations of State.

How to Implement a New Equation of State

See General information for adding new schemes for a full list of required changes.

You will need to provide an equation_of_state.h file containing: the definition of eos_parameters, IO functions and transformations between the different variables: \(u(\rho, A)\), \(u(\rho, P)\), \(P(\rho,A)\), \(P(\rho, u)\), \(A(\rho, P)\), \(A(\rho, u)\), \(c_s(\rho, A)\), \(c_s(\rho, u)\) and \(c_s(\rho, P)\). See other equation of state files to have implementation details.