Isentropic Flow Relations¶
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:
-
IsentropicFlowTable–Isentropic flow table result
Raises:
-
OutOfBoundsError–invalid inputs
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:
-
IsentropicFlowTable–Isentropic flow table result
Raises:
-
OutOfBoundsError–invalid inputs
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:
-
IsentropicFlowTable–Isentropic flow table result
Raises:
-
OutOfBoundsError–invalid inputs
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:
-
IsentropicFlowTable–Isentropic flow table result
Raises:
-
OutOfBoundsError–invalid inputs
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:
-
IsentropicFlowTable–Isentropic flow table result
Raises:
-
OutOfBoundsError–invalid inputs
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:
-
IsentropicFlowTable–Isentropic flow table result
Raises:
-
OutOfBoundsError–invalid inputs
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:
-
IsentropicFlowTable–Isentropic flow table result
Raises:
-
OutOfBoundsError–invalid inputs
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:
-
IsentropicFlowTable–Isentropic flow table result
Raises:
-
OutOfBoundsError–invalid inputs
Low-level API¶
minuteman.cpg.isentropic_flow.area_ratio_by_mach ¶
Computes the area ratio \(A / A^*\) for an isentropic nozzle.
This is the standard area-Mach number relation
Parameters:
-
mach(ArraylikeFloat) –Mach number, \(M\)
-
specific_heat_ratio(ArraylikeFloat) –ratio of specific heats, \(\gamma\)
Returns:
-
NDArrayFloat–Area ratio, \(A / A^*\)
minuteman.cpg.isentropic_flow.mach_angle ¶
Compute the Mach angle, \(\mu\) [radians].
Parameters:
-
mach(ArraylikeFloat) –Mach number, \(M\)
Returns:
-
NDArrayFloat–Mach angle, \(\mu\) [radians]
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:
-
area_ratio(ArraylikeFloat) –area ratio, \(A / A^*\)
-
specific_heat_ratio(ArraylikeFloat) –ratio of specific heats, \(\gamma\)
-
flow_regime(ArraylikeFlowSpeedRegime) –Is flowfield subsonic or supersonic.
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:
-
NDArrayFloat–Mach number, \(M\)
minuteman.cpg.isentropic_flow.prandtl_meyer_func ¶
Compute the Prandtl-Meyer function, \(\nu\)
Parameters:
-
mach(ArraylikeFloat) –Mach number, \(M\)
-
specific_heat_ratio(ArraylikeFloat) –ratio of specific heats, \(\gamma\)
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:
-
mach(ArraylikeFloat) –Mach number, \(M\)
-
specific_heat_ratio(ArraylikeFloat) –ratio of specific heats, \(\gamma\)
Returns:
-
NDArrayFloat–Total density ratio, \(\rho_0 / \rho\)
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:
-
mach(ArraylikeFloat) –Mach number, \(M\)
-
specific_heat_ratio(ArraylikeFloat) –ratio of specific heats, \(\gamma\)
Returns:
-
NDArrayFloat–Total pressure ratio, \(p_0 / p\)
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:
-
mach(ArraylikeFloat) –Mach number, \(M\)
-
specific_heat_ratio(ArraylikeFloat) –ratio of specific heats, \(\gamma\)
Returns:
-
NDArrayFloat–Total speed of sound ratio, \(a_0 / a\)
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:
-
mach(ArraylikeFloat) –Mach number, \(M\)
-
specific_heat_ratio(ArraylikeFloat) –ratio of specific heats, \(\gamma\)
Returns:
-
NDArrayFloat–Total temperature ratio, \(T_0 / T\)
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\)