Skip to content

Rayleigh Flow Relations

 import minuteman.cpg.rayleigh as rayleigh

This module computes 1D, calorically perfect flow with heat addition (Rayleigh flow).

High-level API

minuteman.cpg.rayleigh.lookup_table_by_density

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

Look up a Rayleigh flow table result from the static density ratio, \(\rho / \rho^*\)

Parameters:

  • density_ratio (ArraylikeFloat) –

    static density ratio, \(\rho / \rho^*\). Bounds: \(\left(\frac{\gamma}{1+\gamma}, \infty \right)\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

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

Returns:

Raises:

minuteman.cpg.rayleigh.lookup_table_by_entropy

lookup_table_by_entropy(
    entropy_ratio: ArraylikeFloat,
    specific_heat_ratio: ArraylikeFloat = 1.4,
    flow_regime: ArraylikeFlowSpeedRegime = FlowSpeedRegime.supersonic,
) -> RayleighFlowTable

Look up a Rayleigh flow table result from the specific entropy ratio, \((s^* - s) / R\)

Parameters:

  • entropy_ratio (ArraylikeFloat) –

    specific entropy ratio, \((s^* - s) / R\). Bounds: \([0, \infty)\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

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

  • flow_regime (ArraylikeFlowSpeedRegime, default: supersonic ) –

    flow speed regime (either supersonic or subsonic).

Returns:

Raises:

minuteman.cpg.rayleigh.lookup_table_by_mach

lookup_table_by_mach(
    mach: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat = 1.4
) -> RayleighFlowTable

Look up a Rayleigh flow table result from the Mach number, \(M\)

Parameters:

  • mach (ArraylikeFloat) –

    Mach number, \(M\). Bounds: \((0, \infty)\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

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

Returns:

Raises:

minuteman.cpg.rayleigh.lookup_table_by_pressure

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

Look up a Rayleigh flow table result from the static pressure_ratio, \(p / p^*\)

Parameters:

  • pressure_ratio (ArraylikeFloat) –

    static pressure ratio, \(p / p^*\). Bounds: \((0, \gamma+1)\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

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

Returns:

Raises:

minuteman.cpg.rayleigh.lookup_table_by_temperature

lookup_table_by_temperature(
    temperature_ratio: ArraylikeFloat,
    specific_heat_ratio: ArraylikeFloat = 1.4,
    flow_regime: ArraylikeRayleighTemperatureRegime = RayleighTemperatureRegime.highspeed,
) -> RayleighFlowTable

Look up a Rayleigh flow table result from the static temperature ratio, \(T / T^*\)

Parameters:

  • temperature_ratio (ArraylikeFloat) –

    static temperature ratio, \(T / T^*\). Bounds: \(\left(0, \frac{1}{4} \left(\gamma + \frac{1}{\gamma}\right) + \frac{1}{2} \right]\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

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

  • flow_regime (ArraylikeRayleighTemperatureRegime, default: highspeed ) –

    Rayleigh flow speed regime based upon \(T_{max}\).

Returns:

Raises:

minuteman.cpg.rayleigh.lookup_table_by_total_pressure

lookup_table_by_total_pressure(
    total_pressure_ratio: ArraylikeFloat,
    specific_heat_ratio: ArraylikeFloat = 1.4,
    flow_regime: ArraylikeFlowSpeedRegime = FlowSpeedRegime.supersonic,
) -> RayleighFlowTable

Look up a Rayleigh flow table result from the total pressure ratio, \(p_0 / p_0^*\)

Parameters:

  • total_pressure_ratio (ArraylikeFloat) –

    total pressure ratio, \(p_0 / p_0^*\). Subsonic Bounds: \(\left[1, \left(1+\gamma\right) \left(\frac{2}{\gamma+1}\right)^\frac{\gamma}{\gamma-1}\right)\) , Supersonic Bounds: \([1, \infty)\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

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

  • flow_regime (ArraylikeFlowSpeedRegime, default: supersonic ) –

    flow speed regime (either supersonic or subsonic).

Returns:

Raises:

minuteman.cpg.rayleigh.lookup_table_by_total_temperature

lookup_table_by_total_temperature(
    total_temperature_ratio: ArraylikeFloat,
    specific_heat_ratio: ArraylikeFloat = 1.4,
    flow_regime: ArraylikeFlowSpeedRegime = FlowSpeedRegime.supersonic,
) -> RayleighFlowTable

Look up a Rayleigh flow table result from the total temperature ratio, \(T_0 / T_0^*\)

Parameters:

  • total_temperature_ratio (ArraylikeFloat) –

    total temperature ratio, \(T_0 / T_0^*\). Subsonic Bounds: \((0, 1]\), Supersonic Bounds: \(\left[\frac{(\gamma+1)(\gamma-1)}{\gamma^2}, 1\right]\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

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

  • flow_regime (ArraylikeFlowSpeedRegime, default: supersonic ) –

    flow speed regime (either supersonic or subsonic).

Returns:

Raises:

Low-level API

minuteman.cpg.rayleigh.density_ratio_by_mach

density_ratio_by_mach(
    mach_initial: ArraylikeFloat, mach_final: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat
) -> NDArrayFloat

Compute the density ratio \(\rho_2 / \rho_1\) from the Mach number for Rayleigh flow.

Parameters:

  • mach_initial (ArraylikeFloat) –

    Initial Mach number, \(M_1\). This is the reference Mach number, \(M^*\), when equal to unity.

  • mach_final (ArraylikeFloat) –

    Final Mach number, \(M_2\). This is simply the Mach number, \(M\), when mach_initial==1.0

  • specific_heat_ratio (ArraylikeFloat) –

    ratio of specific heats, \(\gamma\)

Returns:

  • NDArrayFloat –

    Density ratio, \(\rho_2 / \rho_1\) (\(\rho / \rho^*\) if \(M_1=1.0\))

minuteman.cpg.rayleigh.entropy_ratio_by_mach

entropy_ratio_by_mach(
    mach_initial: ArraylikeFloat, mach_final: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat
) -> NDArrayFloat

Compute the specific entropy ratio \((s_2-s_1) / R\) from the Mach number \(M\) for Rayleigh flow.

Parameters:

  • mach_initial (ArraylikeFloat) –

    Initial Mach number, \(M_1\). This is the reference Mach number, \(M^*\), when equal to unity.

  • mach_final (ArraylikeFloat) –

    Final Mach number, \(M_2\). This is simply the Mach number, \(M\), when mach_initial==1.0

  • specific_heat_ratio (ArraylikeFloat) –

    ratio of specific heats, \(\gamma\)

Returns:

  • NDArrayFloat –

    Entropy ratio, \((s_2-s_1) / R\) (\((s - s^*) / R\) if \(M_1=1.0\))

minuteman.cpg.rayleigh.pressure_ratio_by_mach

pressure_ratio_by_mach(
    mach_initial: ArraylikeFloat, mach_final: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat
) -> NDArrayFloat

Compute the static pressure ratio \(p_2 / p_1\) from the Mach number \(M\) for Rayleigh flow.

Parameters:

  • mach_initial (ArraylikeFloat) –

    Initial Mach number, \(M_1\). This is the reference Mach number, \(M^*\), when equal to unity.

  • mach_final (ArraylikeFloat) –

    Final Mach number, \(M_2\). This is simply the Mach number, \(M\), when mach_initial==1.0

  • specific_heat_ratio (ArraylikeFloat) –

    ratio of specific heats, \(\gamma\)

Returns:

  • NDArrayFloat –

    Static pressure ratio, \(p_2 / p_1\) (\(p / p^*\) if \(M_1=1.0\))

minuteman.cpg.rayleigh.temperature_ratio_by_mach

temperature_ratio_by_mach(
    mach_initial: ArraylikeFloat, mach_final: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat
) -> NDArrayFloat

Compute the static temperature ratio \(T_2 / T_1\) from the Mach number for Rayleigh flow.

Parameters:

  • mach_initial (ArraylikeFloat) –

    Initial Mach number, \(M_1\). This is the reference Mach number, \(M^*\), when equal to unity.

  • mach_final (ArraylikeFloat) –

    Final Mach number, \(M_2\). This is simply the Mach number, \(M\), when mach_initial==1.0

  • specific_heat_ratio (ArraylikeFloat) –

    ratio of specific heats, \(\gamma\)

Returns:

  • NDArrayFloat –

    Static temperature ratio, \(T_2 / T_1\) (\(T / T^*\) if \(M_1=1.0\))

minuteman.cpg.rayleigh.total_pressure_ratio_by_mach

total_pressure_ratio_by_mach(
    mach_initial: ArraylikeFloat, mach_final: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat
) -> NDArrayFloat

Compute the total pressure ratio \(p_{02} / p_{01}\) from the Mach number for Rayleigh flow.

Parameters:

  • mach_initial (ArraylikeFloat) –

    Initial Mach number, \(M_1\). This is the reference Mach number, \(M^*\), when equal to unity.

  • mach_final (ArraylikeFloat) –

    Final Mach number, \(M_2\). This is simply the Mach number, \(M\), when mach_initial==1.0

  • specific_heat_ratio (ArraylikeFloat) –

    ratio of specific heats, \(\gamma\)

Returns:

  • NDArrayFloat –

    Total pressure ratio, \(p_{02} / p_{01}\) (\(p_0 / p_0^*\) if \(M_1=1.0\))

minuteman.cpg.rayleigh.total_temperature_ratio_by_mach

total_temperature_ratio_by_mach(
    mach_initial: ArraylikeFloat, mach_final: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat
) -> NDArrayFloat

Compute the total temperature ratio \(T_{02} / T_{01}\) from the Mach number \(M\) for Rayleigh flow.

Parameters:

  • mach_initial (ArraylikeFloat) –

    Initial Mach number, \(M_1\). This is the reference Mach number, \(M^*\), when equal to unity.

  • mach_final (ArraylikeFloat) –

    Final Mach number, \(M_2\). This is simply the Mach number, \(M\), when mach_initial==1.0

  • specific_heat_ratio (ArraylikeFloat) –

    ratio of specific heats, \(\gamma\)

Returns:

  • NDArrayFloat –

    Total temperature ratio, \(T_{02} / T_{01}\) (\(T_0 / T_0^*\) if \(M_1=1.0\))

Data Structures

minuteman.cpg.rayleigh.ArraylikeRayleighTemperatureRegime: TypeAlias = npt.NDArray[np.object_] | list[RayleighTemperatureRegime] | RayleighTemperatureRegime module-attribute

Arraylike of RayleighTemperatureRegime objects

minuteman.cpg.rayleigh.RayleighFlowTable dataclass

Rayleigh flow table where the initial Mach number \(M_1=M^*=1.0\)

mach: NDArrayFloat instance-attribute

Mach number, \(M\).

temperature_ratio: NDArrayFloat instance-attribute

Static temperature ratio, \(T / T^*\)

pressure_ratio: NDArrayFloat instance-attribute

Static pressure ratio, \(p / p^*\)

density_ratio: NDArrayFloat instance-attribute

Density ratio, \(\rho / \rho^*\)

velocity_ratio: NDArrayFloat property

Velocity ratio, \(u / u^*\)

total_pressure_ratio: NDArrayFloat instance-attribute

Total pressure ratio, \(p_0 / p_0^*\)

total_temperature_ratio: NDArrayFloat instance-attribute

Total temperature ratio, \(T_0 / T_0^*\)

entropy_ratio: NDArrayFloat instance-attribute

Specific entropy ratio, \((s^* - s) / R\)

specific_heat_ratio: NDArrayFloat instance-attribute

Ratio of specific heats, \(\gamma\)

minuteman.cpg.rayleigh.RayleighTemperatureRegime

Bases: Enum

Is the condition above or below \(M=1/\gamma\) where max temperature occurs

lowspeed = auto() class-attribute instance-attribute

\(M < 1/\gamma\), subsonic, to the left of \(T_{max}\) on Rayleigh curve

highspeed = auto() class-attribute instance-attribute

\(M > 1/\gamma\), subsonic or supersonic, to the right of \(T_{max}\) on the Rayleigh curve

References

  1. Niemeyer, K. Flows with heat transfer (Rayleigh flows). Gas Dynamics Notes. Retrieved August 1, 2026, from https://kyleniemeyer.github.io/gas-dynamics-notes/compressible-flows/heat-transfer/