STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
feedtwin.engine.chamber.Chamber Class Reference
Inheritance diagram for feedtwin.engine.chamber.Chamber:
[legend]

Public Member Functions

None __init__ (self, float throat_area, CStarModel cstar_model, *, float volume=0.0, float efficiency=1.0, float nozzle_efficiency=1.0, float ambient_pressure=101325.0)
ChamberResult evaluate (self, float mdot_oxidiser, float mdot_fuel)
bool is_firing (self, ChamberResult result)
float fill_time (self, float pressure, float mixture_ratio)
str __repr__ (self)

Public Attributes

 throat_area = throat_area
 cstar_model = cstar_model
 volume = volume
 efficiency = efficiency
 nozzle_efficiency = nozzle_efficiency
 ambient_pressure = ambient_pressure

Detailed Description

Chamber pressure from the flows the injector delivers.

Args:
    throat_area: ``A_t`` [m^2].
    cstar_model: Where combustion properties come from.
    volume: Chamber volume [m^3]. Not integrated -- see
        :meth:`fill_time`, which reports how long the chamber takes to
        respond so the quasi-steady assumption is visible rather than
        assumed.
    nozzle_efficiency: ``eta_n``. Multiplies the thrust coefficient, so it
        moves thrust and Isp and leaves chamber pressure alone.
    efficiency: ``c*`` efficiency. Multiplies the table value, and is the
        one place a real engine's losses enter this model.
    ambient_pressure: What the chamber sits at with nothing flowing [Pa].
        **Not a numerical guard.** A chamber is open to atmosphere through
        its own nozzle, so ``mdot c* / A_t`` is only the chamber pressure
        once that exceeds ambient; below it the nozzle is not choked and the
        chamber is simply at ambient. Leaving it out lets a shut engine
        report a near-vacuum chamber, which then asks the feed system to
        solve a 650 psi drop across a shut valve into 0.5 psi -- a state no
        hardware ever occupies and no solver enjoys being asked about.
        Sea level by default; set it for altitude or a vacuum stand.

Definition at line 297 of file chamber.py.

Constructor & Destructor Documentation

◆ __init__()

None feedtwin.engine.chamber.Chamber.__init__ ( self,
float throat_area,
CStarModel cstar_model,
* ,
float volume = 0.0,
float efficiency = 1.0,
float nozzle_efficiency = 1.0,
float ambient_pressure = 101325.0 )

Definition at line 322 of file chamber.py.

Member Function Documentation

◆ __repr__()

str feedtwin.engine.chamber.Chamber.__repr__ ( self)

Definition at line 433 of file chamber.py.

◆ evaluate()

ChamberResult feedtwin.engine.chamber.Chamber.evaluate ( self,
float mdot_oxidiser,
float mdot_fuel )
Chamber state for a pair of propellant flows.

Chamber pressure is ``mdot c* / A_t``, but ``c*`` depends on mixture
ratio and (weakly) on pressure, so this iterates the pressure to
consistency. Three passes is ample -- the dependence on pressure is
gentle -- and it converges from any starting point because raising
pressure barely moves ``c*``.

Reimplemented in feedtwin.engine.card.CardChamber.

Definition at line 341 of file chamber.py.

References feedtwin.engine.card.CardChamber.ambient_pressure, ambient_pressure, feedtwin.engine.chamber.burning(), cstar_model, efficiency, max, min, nozzle_efficiency, feedtwin.engine.card.EngineCard.throat_area, throat_area, and feedtwin.engine.chamber.unlit().

Referenced by engine.core.runner.PintleEngineRunner.evaluate_arrays().

◆ fill_time()

float feedtwin.engine.chamber.Chamber.fill_time ( self,
float pressure,
float mixture_ratio )
Chamber residence time [s]: how fast chamber pressure can respond.

``tau = V / (A_t c*)``, of order a millisecond on a small engine. It is
reported rather than integrated because it is three orders of magnitude
below anything a feed system does, and carrying it as a state would make
the whole system stiff for no answer anyone wants. When it stops being
small -- a very large chamber, or a startup transient resolved at the
millisecond level -- this is the number that says so.

Definition at line 416 of file chamber.py.

References cstar_model, feedtwin.engine.card.EngineCard.throat_area, throat_area, and volume.

◆ is_firing()

bool feedtwin.engine.chamber.Chamber.is_firing ( self,
ChamberResult result )
Whether the throat is actually choked, or the engine is just open.

Below ambient-driven flow there is no combustion chamber to speak of;
reporting a thrust and an Isp there would be arithmetic, not physics.

Definition at line 408 of file chamber.py.

References feedtwin.engine.card.CardChamber.ambient_pressure, and ambient_pressure.

Member Data Documentation

◆ ambient_pressure

feedtwin.engine.chamber.Chamber.ambient_pressure = ambient_pressure

◆ cstar_model

feedtwin.engine.chamber.Chamber.cstar_model = cstar_model

Definition at line 335 of file chamber.py.

Referenced by evaluate(), and fill_time().

◆ efficiency

feedtwin.engine.chamber.Chamber.efficiency = efficiency

Definition at line 337 of file chamber.py.

Referenced by evaluate().

◆ nozzle_efficiency

feedtwin.engine.chamber.Chamber.nozzle_efficiency = nozzle_efficiency

Definition at line 338 of file chamber.py.

Referenced by evaluate().

◆ throat_area

feedtwin.engine.chamber.Chamber.throat_area = throat_area

◆ volume


The documentation for this class was generated from the following file: