Skip to content

Normal Shock Relations

 import minuteman.cpg.normal_shock as normal_shock

This module computes flow parameters of 1D, stationary, calorically perfect normal shocks (\(\gamma\) is constant).

For a stationary, nonreacting normal shock, total enthalpy is constant (adiabatic flow). For perfect (calorically+thermally) gases, total temperature is thus also constant across the shock.

High-level API

minuteman.cpg.normal_shock.lookup_table_by_density

lookup_table_by_density(
    density_ratio: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat = 1.4
) -> NormalShockTable

Look up a normal shock table result from the density ratio, \(\rho_2 / \rho_1\)

Parameters:

  • density_ratio (ArraylikeFloat) –

    density ratio, \(\rho_2 / \rho_1\). Bounds: \(\left[1.0, \frac{\gamma+1}{\gamma-1}\right]\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

    Ratio of specific heats, \(\gamma\). Bounds: \((1, 1.67]\)

Returns:

Raises:

minuteman.cpg.normal_shock.lookup_table_by_downstream_mach

lookup_table_by_downstream_mach(
    mach_downstream: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat = 1.4
) -> NormalShockTable

Look up a normal shock table result from the downstream Mach number, \(M_2\)

Parameters:

  • mach_downstream (ArraylikeFloat) –

    downstream Mach number, \(M_2\). Bounds: \(\left[\sqrt{\frac{\gamma-1}{2\gamma}}, 1\right]\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

    Ratio of specific heats, \(\gamma\). Bounds: \((1, 1.67]\)

Returns:

Raises:

minuteman.cpg.normal_shock.lookup_table_by_pitot_pressure

lookup_table_by_pitot_pressure(
    pitot_pressure_ratio: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat = 1.4
) -> NormalShockTable

Look up a normal shock table result from the Rayleigh Pitot tube pressure ratio, \(p_{02} / p_1\)

Parameters:

  • pitot_pressure_ratio (ArraylikeFloat) –

    Rayleigh Pitot tube pressure ratio, \(p_{02} / p_1\). Bounds: \(\left[ \left( \frac{\gamma+1}{2}\right)^ \frac{\gamma}{\gamma-1}, \infty\right)\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

    Ratio of specific heats, \(\gamma\). Bounds: \((1, 1.67]\)

Returns:

Raises:

minuteman.cpg.normal_shock.lookup_table_by_pressure

lookup_table_by_pressure(
    pressure_ratio: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat = 1.4
) -> NormalShockTable

Look up a normal shock table result from the static pressure ratio, \(p_2 / p_1\)

Parameters:

  • pressure_ratio (ArraylikeFloat) –

    static pressure ratio, \(p_2 / p_1\). Bounds: \([1.0, \infty]\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

    Ratio of specific heats, \(\gamma\). Bounds: \((1, 1.67]\)

Returns:

Raises:

minuteman.cpg.normal_shock.lookup_table_by_temperature

lookup_table_by_temperature(
    temperature_ratio: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat = 1.4
) -> NormalShockTable

Look up a normal shock table result from the temperature ratio, \(T_2 / T_1\)

Parameters:

  • temperature_ratio (ArraylikeFloat) –

    temperature ratio, \(T_2 / T_1\). Bounds: \([1.0, \infty]\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

    Ratio of specific heats, \(\gamma\). Bounds: \((1, 1.67]\)

Returns:

Raises:

minuteman.cpg.normal_shock.lookup_table_by_total_pressure

lookup_table_by_total_pressure(
    total_pressure_ratio: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat = 1.4
) -> NormalShockTable

Look up a normal shock table result from the total pressure ratio, \(p_{02} / p_{01}\)

Parameters:

  • total_pressure_ratio (ArraylikeFloat) –

    total pressure ratio, \(p_{02} / p_{01}\). Bounds: \((0, 1]\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

    Ratio of specific heats, \(\gamma\). Bounds: \((1, 1.67]\)

Returns:

Raises:

minuteman.cpg.normal_shock.lookup_table_by_upstream_mach

lookup_table_by_upstream_mach(
    mach_upstream: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat = 1.4
) -> NormalShockTable

Look up a normal shock table result from the upstream Mach number, \(M_1\)

Parameters:

  • mach_upstream (ArraylikeFloat) –

    upstream Mach number, \(M_1\). Bounds: \(\left[ 1.0, \infty \right]\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

    Ratio of specific heats, \(\gamma\). Bounds: \((1, 1.67]\)

Returns:

Raises:

Low-level API

minuteman.cpg.normal_shock.density_ratio_by_mach

density_ratio_by_mach(
    mach_upstream: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat
) -> NDArrayFloat

Computes the density ratio across a normal shock, \(\rho_2 / \rho_1\).

The density ratio \(\rho_2 / \rho_1\) is equivalent to the inverse velocity ratio \(u_1 / u_2\)

Parameters:

  • mach_upstream (ArraylikeFloat) –

    upstream Mach number, \(M_1\)

  • specific_heat_ratio (ArraylikeFloat) –

    ratio of specific heats, \(\gamma\)

Returns:

minuteman.cpg.normal_shock.entropy_change

entropy_change(total_pressure_ratio: ArraylikeFloat, gas_constant: ArraylikeFloat) -> NDArrayFloat

Compute the change in specific entropy across a normal shock, \(s_2 - s_1\)

Parameters:

  • total_pressure_ratio (ArraylikeFloat) –

    total pressure ratio, \(p_{02} / p_{01}\)

  • gas_constant (ArraylikeFloat) –

    specific gas constant, \(R\)

Returns:

  • NDArrayFloat –

    Change in specific entropy, \(s_2 - s_1\)

minuteman.cpg.normal_shock.internal_energy_change

internal_energy_change(
    pressure_upstream: ArraylikeFloat,
    pressure_downstream: ArraylikeFloat,
    density_upstream: ArraylikeFloat,
    density_downstream: ArraylikeFloat,
) -> NDArrayFloat

Computes the change in specific internal energy across a normal shock, \(e\). This is the Hugoniot relation.

This relates only thermodynamic quantities across a normal shock. This relation is valid for perfect, chemically reacting, and real gases.

Parameters:

  • pressure_upstream (ArraylikeFloat) –

    upstream static pressure, \(p_1\)

  • pressure_downstream (ArraylikeFloat) –

    downstream static pressure, \(p_2\)

  • density_upstream (ArraylikeFloat) –

    upstream static density, \(\rho_1\)

  • density_downstream (ArraylikeFloat) –

    downstream static density, \(\rho_2\)

Returns:

  • NDArrayFloat –

    Change in specific internal energy, \(e\)

minuteman.cpg.normal_shock.mach_downstream_by_mach

mach_downstream_by_mach(
    mach_upstream: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat
) -> NDArrayFloat

Computes the Mach number downstream of a normal shock, \(M_2\).

Parameters:

  • mach_upstream (ArraylikeFloat) –

    upstream Mach number, \(M_1\)

  • specific_heat_ratio (ArraylikeFloat) –

    ratio of specific heats, \(\gamma\)

Returns:

minuteman.cpg.normal_shock.pressure_ratio_by_mach

pressure_ratio_by_mach(
    mach_upstream: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat
) -> NDArrayFloat

Computes the static pressure ratio across a normal shock, \(p_2 / p_1\).

Parameters:

  • mach_upstream (ArraylikeFloat) –

    upstream Mach number, \(M_1\)

  • specific_heat_ratio (ArraylikeFloat) –

    ratio of specific heats, \(\gamma\)

Returns:

minuteman.cpg.normal_shock.temperature_ratio_by_mach

temperature_ratio_by_mach(
    mach_upstream: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat
) -> NDArrayFloat

Computes the temperature ratio across a normal shock, \(T_2 / T_1\).

This is also equivalent to the enthalpy ratio across the normal shock, \(h_2 / h_1\).

Parameters:

  • mach_upstream (ArraylikeFloat) –

    upstream Mach number, \(M_1\)

  • specific_heat_ratio (ArraylikeFloat) –

    ratio of specific heats, \(\gamma\)

Returns:

  • NDArrayFloat –

    Temperature ratio across shock, \(T_2 / T_1\)

minuteman.cpg.normal_shock.total_pressure_ratio_by_mach

total_pressure_ratio_by_mach(
    mach_upstream: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat
) -> NDArrayFloat

Computes the total pressure ratio across a normal shock, \(p_{02} / p_{01}\).

Parameters:

  • mach_upstream (ArraylikeFloat) –

    upstream Mach number, \(M_1\)

  • specific_heat_ratio (ArraylikeFloat) –

    ratio of specific heats, \(\gamma\)

Returns:

  • NDArrayFloat –

    Total pressure ratio across shock, \(p_{02} / p_{01}\)

Data Structures

minuteman.cpg.normal_shock.NormalShockTable dataclass

Normal shock table, for a stationary, calorically perfect gas

mach_upstream: NDArrayFloat instance-attribute

Upstream mach number, \(M_1\)

mach_downstream: NDArrayFloat instance-attribute

Downstream mach number, \(M_2\)

temperature_ratio: NDArrayFloat instance-attribute

Temperature ratio, \(T_2 / T_1\)

pressure_ratio: NDArrayFloat instance-attribute

Static pressure ratio, \(p_2 / p_1\)

density_ratio: NDArrayFloat instance-attribute

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

total_pressure_ratio: NDArrayFloat instance-attribute

Total pressure ratio, \(p_{02} / p_{01}\)

pitot_pressure_ratio: NDArrayFloat instance-attribute

Rayleigh Pitot tube pressure ratio, \(p_{02} / p_1\)

specific_heat_ratio: NDArrayFloat instance-attribute

Ratio of specific heats, \(\gamma\)

Error Types