Skip to content

Isentropic Flow Relations

 import minuteman.cpg.isentropic_flow as isentropic_flow

Compressible, inviscid flow relations.

These functions are basic definitions pertaining to 1-,2-, and 3-D compressible, inviscid flow.

Total or stagnation quantities (total temperature, for instance) are the values that would exist if the flow were isentropically brought to rest. Total quantities remain constant where flowfield is isentropic (adiabatic and reversible).

High-level API

minuteman.cpg.isentropic_flow.lookup_table_by_area_ratio

lookup_table_by_area_ratio(
    area_ratio: ArraylikeFloat,
    specific_heat_ratio: ArraylikeFloat = 1.4,
    flow_regime: ArraylikeFlowSpeedRegime = FlowSpeedRegime.supersonic,
) -> IsentropicFlowTable

Lookup the isentropic flow table based on area ratio, \(A / A^*\)

Parameters:

  • area_ratio (ArraylikeFloat) –

    area ratio, \(A / A^*\). Bounds: \((1, \infty)\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

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

  • flow_regime (ArraylikeFlowSpeedRegime, default: supersonic ) –

    Is flowfield subsonic or supersonic.

Returns:

Raises:

minuteman.cpg.isentropic_flow.lookup_table_by_density

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

Lookup the isentropic flow table based on total density ratio, \(\rho_0 / \rho\)

Parameters:

  • density_ratio (ArraylikeFloat) –

    total density ratio, \(\rho_0 / \rho\). Bounds: \((1, \infty)\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

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

Returns:

Raises:

minuteman.cpg.isentropic_flow.lookup_table_by_mach

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

Lookup the isentropic flow table based on 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.isentropic_flow.lookup_table_by_mach_angle

lookup_table_by_mach_angle(
    mach_angle: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat = 1.4
) -> IsentropicFlowTable

Lookup the isentropic flow table based on Mach angle, \(\mu\)

Parameters:

  • mach_angle (ArraylikeFloat) –

    Mach angle, \(\mu\) [radians]. Bounds: \((0, 90^\circ]\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

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

Returns:

Raises:

minuteman.cpg.isentropic_flow.lookup_table_by_prandtl_meyer

lookup_table_by_prandtl_meyer(
    prandtl_meyer: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat = 1.4
) -> IsentropicFlowTable

Lookup the isentropic flow table based on the Prandtl-Meyer function, \(\nu\).

Parameters:

  • prandtl_meyer (ArraylikeFloat) –

    Prandtl-Meyer function, \(\nu\) [radians]. Bounds: \(\left[0, \frac{\pi}{2} \left(\sqrt{\frac{\gamma+1}{\gamma-1}}-1\right)\right)\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

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

Returns:

Raises:

minuteman.cpg.isentropic_flow.lookup_table_by_pressure

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

Lookup the isentropic flow table based on total pressure ratio, \(p_0 / p\)

Parameters:

  • pressure_ratio (ArraylikeFloat) –

    total pressure ratio, \(p_0 / p\). Bounds: \((1, \infty)\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

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

Returns:

Raises:

minuteman.cpg.isentropic_flow.lookup_table_by_speed_of_sound

lookup_table_by_speed_of_sound(
    speed_of_sound_ratio: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat = 1.4
) -> IsentropicFlowTable

Lookup the isentropic flow table based on total speed of sound ratio, \(a_0 / a\)

Parameters:

  • speed_of_sound_ratio (ArraylikeFloat) –

    total speed of sound ratio, \(a_0 / a\). Bounds: \((1, \infty)\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

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

Returns:

Raises:

minuteman.cpg.isentropic_flow.lookup_table_by_temperature

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

Lookup the isentropic flow table based on total temperature ratio, \(T_0 / T\)

Parameters:

  • temperature_ratio (ArraylikeFloat) –

    total temperature ratio, \(T_0 / T\). Bounds: \((1, \infty)\)

  • specific_heat_ratio (ArraylikeFloat, default: 1.4 ) –

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

Returns:

Raises:

Low-level API

minuteman.cpg.isentropic_flow.area_ratio_by_mach

area_ratio_by_mach(mach: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat) -> NDArrayFloat

Computes the area ratio \(A / A^*\) for an isentropic nozzle.

This is the standard area-Mach number relation

Parameters:

Returns:

minuteman.cpg.isentropic_flow.mach_angle

mach_angle(mach: ArraylikeFloat) -> NDArrayFloat

Compute the Mach angle, \(\mu\) [radians].

Parameters:

Returns:

minuteman.cpg.isentropic_flow.mach_by_area_ratio

mach_by_area_ratio(
    area_ratio: ArraylikeFloat,
    specific_heat_ratio: ArraylikeFloat,
    flow_regime: ArraylikeFlowSpeedRegime,
) -> NDArrayFloat

Compute the Mach number for a known area ratio, \(A / A^*\)

Parameters:

Returns:

  • NDArrayFloat –

    Supersonic or subsonic Mach solution for a given area ratio

minuteman.cpg.isentropic_flow.mach_by_temperature

mach_by_temperature(
    temperature_ratio: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat
) -> NDArrayFloat

Computes the Mach number \(M\) from total temperature ratio \(T_0 / T\)

Parameters:

  • temperature_ratio (ArraylikeFloat) –

    total temperature ratio, \(T_0 / T\)

  • specific_heat_ratio (ArraylikeFloat) –

    ratio of specific heats, \(\gamma\)

Returns:

minuteman.cpg.isentropic_flow.prandtl_meyer_func

prandtl_meyer_func(mach: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat) -> NDArrayFloat

Compute the Prandtl-Meyer function, \(\nu\)

Parameters:

Returns:

  • NDArrayFloat –

    Prandtl-Meyer function, \(\nu\) [radians]

minuteman.cpg.isentropic_flow.total_density_ratio_by_mach

total_density_ratio_by_mach(
    mach: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat
) -> NDArrayFloat

Computes the stagnation or total density ratio, \(\rho_0 / \rho\)

Parameters:

Returns:

minuteman.cpg.isentropic_flow.total_pressure_ratio_by_mach

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

Computes the stagnation or total pressure ratio, \(p_0 / p\)

Parameters:

Returns:

minuteman.cpg.isentropic_flow.total_speed_of_sound_ratio_by_mach

total_speed_of_sound_ratio_by_mach(
    mach: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat
) -> NDArrayFloat

Computes the stagnation or total speed of sound ratio, \(a_0 / a\)

Parameters:

Returns:

minuteman.cpg.isentropic_flow.total_temperature_ratio_by_mach

total_temperature_ratio_by_mach(
    mach: ArraylikeFloat, specific_heat_ratio: ArraylikeFloat
) -> NDArrayFloat

Computes the stagnation or total temperature ratio, \(T_0 / T\)

Parameters:

Returns:

Data Structures

minuteman.cpg.isentropic_flow.IsentropicFlowTable dataclass

Isentropic flow table, containing various isentropic parameters for a given Mach number and specific heat ratio

mach: NDArrayFloat instance-attribute

Mach number, \(M\)

temperature: NDArrayFloat instance-attribute

total temperature ratio, \(T_0 / T\)

pressure: NDArrayFloat instance-attribute

total pressure ratio, \(p_0 / p\)

density: NDArrayFloat instance-attribute

total density ratio, \(\rho_0 / \rho\)

speed_of_sound: NDArrayFloat instance-attribute

total speed of sound ratio, \(a_0 / a\)

area_ratio: NDArrayFloat instance-attribute

area ratio, \(A / A^*\)

mach_angle: NDArrayFloat instance-attribute

Mach angle, \(\mu\) [radians]. Values of NaN indicate there is no Mach angle for this regime (subsonic flow).

prandtl_meyer_func: NDArrayFloat instance-attribute

Prandtl-Meyer function, \(\nu\) [radians]. Values of NaN indictate there is no valid value for this regime (subsonic flow).

specific_heat_ratio: NDArrayFloat instance-attribute

ratio of specific heats, \(\gamma\)