Skip to content

Normal Shock Relations

 import minuteman.eq.normal_shock as normal_shock

This module computes flow parameters of 1D, stationary, equilibrium reaction normal shocks. The implementation follows that of 1

For a stationary normal shock, total enthalpy is constant (adiabatic flow).

High-level API

minuteman.eq.normal_shock.lookup_table_by_density_temperature

lookup_table_by_density_temperature(
    density: ArraylikeFloat,
    temperature: ArraylikeFloat,
    velocity: ArraylikeFloat,
    mole_fraction: str = "N2: 0.79, O2: 0.21",
    mechanism: str = "airNASA9.yaml",
) -> EqNormalShockSolution

Lookup equilibrium normal shock table properties by upstream density \(\rho_1\) and temperature \(T_1\)

Parameters:

  • density (ArraylikeFloat) –

    Upstream density \(\rho_1\) [kg/m3]. Bounds: (0, \(\infty\))

  • temperature (ArraylikeFloat) –

    Upstream temperature \(T_1\) [K]. Bounds: (0, \(\infty\))

  • velocity (ArraylikeFloat) –

    Upstream velocity \(u_1\) [m/s]. Bounds: (Mach 1, \(\infty\))

  • mole_fraction (str, default: 'N2: 0.79, O2: 0.21' ) –

    Upstream mole fractions \(X_1\).

  • mechanism (str, default: 'airNASA9.yaml' ) –

    Reaction mechanism file.

Returns:

Raises:

minuteman.eq.normal_shock.lookup_table_by_pressure_temperature

lookup_table_by_pressure_temperature(
    pressure: ArraylikeFloat,
    temperature: ArraylikeFloat,
    velocity: ArraylikeFloat,
    mole_fraction: str = "N2: 0.79, O2: 0.21",
    mechanism: str = "airNASA9.yaml",
) -> EqNormalShockSolution

Lookup equilibrium normal shock table properties by upstream pressure \(p_1\) and temperature \(T_1\)

Parameters:

  • pressure (ArraylikeFloat) –

    Upstream pressure \(p_1\) [Pa]. Bounds: (0, \(\infty\))

  • temperature (ArraylikeFloat) –

    Upstream temperature \(T_1\) [K]. Bounds: (0, \(\infty\))

  • velocity (ArraylikeFloat) –

    Upstream velocity \(u_1\) [m/s]. Bounds: (Mach 1, \(\infty\))

  • mole_fraction (str, default: 'N2: 0.79, O2: 0.21' ) –

    Upstream mole fractions \(X_1\).

  • mechanism (str, default: 'airNASA9.yaml' ) –

    Reaction mechanism file.

Returns:

Raises:

minuteman.eq.normal_shock.lookup_table_by_states

lookup_table_by_states(states1: SolutionArray, velocity: NDArrayFloat) -> EqNormalShockSolution

Lookup equilibrium normal shock table properties by preinitialized upstream thermodynamic states

Parameters:

  • states1 (SolutionArray) –

    Upstream equilibrium thermodynamic states. Note there is no "equilibrate" call made in this function, the user is responsible for this.

  • velocity (NDArrayFloat) –

    Upstream velocity \(u_1\). Bounds: (Mach 1, \(\infty\))

Returns:

Raises:

Low-level API

minuteman.eq.normal_shock.enthalpy_by_density

enthalpy_by_density(
    density_ratio: ArraylikeFloat,
    velocity_upstream: ArraylikeFloat,
    enthalpy_upstream: ArraylikeFloat,
) -> NDArrayFloat

Compute downstream enthalpy \(h_2\) from the density ratio.

Parameters:

Returns:

minuteman.eq.normal_shock.pressure_by_density

pressure_by_density(
    density_ratio: ArraylikeFloat,
    density_upstream: ArraylikeFloat,
    velocity_upstream: ArraylikeFloat,
    pressure_upstream: ArraylikeFloat,
) -> NDArrayFloat

Compute downstream pressure \(p_2\) from the density ratio.

Parameters:

Returns:

Data Structures

minuteman.eq.normal_shock.EqFlowStates dataclass

Equilibrium flow state.

states: ct.SolutionArray instance-attribute

Thermodynamic states

velocity: NDArrayFloat instance-attribute

Flow velocity \(u\) [m/s]

speed_of_sound_eq: NDArrayFloat instance-attribute

Equilibrium speed of sound \(a_{eq}\) [m/s]

speed_of_sound_fr: NDArrayFloat property

Frozen speed of sound \(a_{f}\) [m/s]

isentropic_exponent: NDArrayFloat instance-attribute

Isentropic exponent \(\gamma_s\)

pressure: NDArrayFloat property

Pressure, \(p\) [Pa]

temperature: NDArrayFloat property

Temperature, \(T\) [K]

density: NDArrayFloat property

Density, \(\rho\) [kg/\(m^{-3}\)]

mach: NDArrayFloat property

Mach number, \(M\) (using equilibrium speed of sound)

mass_fraction(name: str) -> NDArrayFloat

Mass fraction \(Y_i\) for species \(i\).

Parameters:

  • name (str) –

    Species name.

Returns:

mole_fraction(name: str) -> NDArrayFloat

Mole fraction \(X_i\) for species \(i\).

Parameters:

  • name (str) –

    Species name.

Returns:

number_density(name: str) -> NDArrayFloat

Return number density \(n_i\) for species \(i\).

Parameters:

  • name (str) –

    Species name

Returns:

  • NDArrayFloat –

    Number density \(n_i\) [particles/\(m^{-3}\)]

minuteman.eq.normal_shock.EqNormalShockSolution dataclass

Normal shock solution for a stationary shock in chemical equilibrium.

upstream: EqFlowStates instance-attribute

Upstream flow properties.

downstream: EqFlowStates instance-attribute

Downstream flow properties.

temperature_ratio: NDArrayFloat property

Temperature ratio, \(T_2 / T_1\)

pressure_ratio: NDArrayFloat property

Static pressure ratio, \(p_2 / p_1\)

density_ratio: NDArrayFloat property

Density ratio, \(\rho_2 / \rho_1\)

speed_of_sound_ratio: NDArrayFloat property

Speed of sound ratio, \(a_2 / a_1\)

Error Types

References

  1. Anderson, J. D., Jr. (2019). Hypersonic and high-temperature gas dynamics (3rd ed.). American Institute of Aeronautics and Astronautics.