STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
feedtwin.comps.gas Namespace Reference

Classes

class  GasOrifice

Functions

float critical_pressure_ratio (float gamma)
float choked_mass_flow (float area, float cd, float p_upstream, float temperature, float gamma, float r_specific)
float subsonic_mass_flow (float area, float cd, float p_upstream, float pressure_ratio, float temperature, float gamma, float r_specific)
HydraulicComponent _measured_gas (object instance)

Variables

list __all__ = ["R_UNIVERSAL"]

Detailed Description

Compressible flow: the pressurant path.

The liquid side is nearly incompressible, so a loss coefficient and a dynamic
head describe it. Gas is not, and two things change:

**Density falls as pressure does.** A long gas line is not one density; the
velocity climbs along it as the gas expands. Below roughly 10% pressure drop the
error in ignoring that is small, and above it the line has to be integrated.

**Flow chokes.** Below a critical pressure ratio the throat goes sonic and mass
flow stops depending on downstream pressure entirely. That is not a numerical
inconvenience -- it is how a regulator seat and a relief orifice actually behave,
and it puts a hard ceiling on what a restriction can pass. Asked for more than
that ceiling, this raises :class:`~feedtwin.comps.base.InfeasibleOperatingPoint`
rather than returning a pressure that cannot exist.

Everything here is expressed in the same direction as the liquid components --
pressure drop as a function of mass flow -- so the network solver needs to know
nothing about which side of the system it is assembling.

Function Documentation

◆ _measured_gas()

HydraulicComponent feedtwin.comps.gas._measured_gas ( object instance)
protected

Definition at line 197 of file gas.py.

◆ choked_mass_flow()

float feedtwin.comps.gas.choked_mass_flow ( float area,
float cd,
float p_upstream,
float temperature,
float gamma,
float r_specific )
The most a restriction can pass at this upstream state [kg/s].

``mdot = Cd A p1 sqrt(gamma / (R T)) . (2/(gamma+1))^((gamma+1)/(2(gamma-1)))``

A hard ceiling, not an asymptote. Opening the downstream side further buys
nothing once this is reached, which is why a relief orifice is sized on it
and why a regulator seat behaves the way it does.

Definition at line 52 of file gas.py.

Referenced by feedtwin.comps.gas.GasOrifice.choked_flow(), and feedtwin.comps.gas.GasOrifice.pressure_drop().

◆ critical_pressure_ratio()

float feedtwin.comps.gas.critical_pressure_ratio ( float gamma)
``p_throat / p_upstream`` at which the throat goes sonic.

About 0.528 for a diatomic gas, 0.487 for helium. Below this the throat is
choked and downstream pressure stops mattering.

Definition at line 43 of file gas.py.

Referenced by feedtwin.comps.gas.GasOrifice.choking_pressure_drop(), feedtwin.comps.gas.GasOrifice.diagnostics(), and feedtwin.comps.gas.GasOrifice.is_choked().

◆ subsonic_mass_flow()

float feedtwin.comps.gas.subsonic_mass_flow ( float area,
float cd,
float p_upstream,
float pressure_ratio,
float temperature,
float gamma,
float r_specific )
Mass flow through an unchoked restriction [kg/s].

Definition at line 76 of file gas.py.

Variable Documentation

◆ __all__

list feedtwin.comps.gas.__all__ = ["R_UNIVERSAL"]
private

Definition at line 40 of file gas.py.