|
STAR
Cal STAR — firmware, DAQ server, and engine design
|
Classes | |
| class | TailSide |
| class | ShutdownSettings |
Functions | |
| Dict[str, Any] | tail_off (TailSide a, TailSide b, *, float t0, float t_cmd, float dt=1.0e-5, float horizon_s=2.0) |
| Dict[str, Any] | classify (Mapping[str, Any] tail, *, float end_tol_s=1.0e-3) |
| Dict[str, str] | _note (str mode, Mapping[str, Any] cls) |
| Optional[str] | _side_key (Optional[str] side) |
| Dict[str, Any] | shutdown_from_run (Any prep, Mapping[str, Any] result, Any config=None, ShutdownSettings settings=ShutdownSettings(), Optional[Sequence[Mapping[str, Any]]] outflow=None) |
| Dict[str, Any] | _shutdown_from_run (Any prep, Mapping[str, Any] result, Any config, ShutdownSettings settings, Optional[Sequence[Mapping[str, Any]]] outflow) |
Variables | |
| str | MODEL_NAME = "shutdown_tail_timeline" |
Layer X shutdown: which tank runs dry first, and what the tail-off feeds the chamber. ``shutdown_from_run(prep, result, config=None, settings=ShutdownSettings(), outflow=None)`` -> ``diagnostics.shutdown`` (DATA-CONTRACT 3). ``tail_off(a, b, ...)`` is the model on plain inputs. The main burn ends on depletion (``end_on_depletion``): the first tank reaches the dry mass and the twin stops. It has no tail. This module takes that instant (or, when ``diag.outflow`` says the outlet starts drawing gas earlier, that onset; or a timed cutoff) and follows each side's **liquid** into the chamber from there, so the run says whether the engine shuts down oxidiser-rich or fuel-rich, and how much of one propellant arrives with none of the other. The model (a bounding timeline, every rule stated in the block) --------------------------------------------------------------- * **The dry side.** Its tank is empty, but the line from the tank outlet to the orifices is full of liquid. The pressurant pushes that column through at the pre-dry flow (the ullage is still at tank pressure; gas behind a liquid slug). Its liquid ends when the line's contents ``rho (V_up + V_dn)`` have gone, or, once the main valve is shut, when the liquid that was downstream of the seat has gone. * **The wet side** keeps flowing at its pre-dry rate until its main valve shuts. * **The valves** are commanded shut ``delay_s`` after the first dry-out (default 0: commanded at it; the stand's actual cutoff logic is not on the drawing) and close over the drawing's travel time along the valve's own characteristic. Through the closing valve the flow is quasi-steady at the pre-shutdown driving pressure: ``m = m0 sqrt(R0 / (R_rest + R_valve(1)/f(x)^2))``, ``R0 = R_rest + R_valve(1)``, with ``R_rest`` the line and injector losses at the pre-shutdown point (the line's own time constant, 1-7 ms, is short against 50 ms of travel; AUDIT 9.5 §1). * **After the seat shuts** the liquid downstream of it (tube, manifold, orifice passages) drains into the chamber. Its **mass** is exact; its **rate** is taken as the pre-shutdown flow, the fastest it can go, so the duration is a lower bound (the real drain decays with the chamber pressure, and LOX at ambient pressure flashes). * **Mode**: the side whose liquid ends last is the one entering the chamber alone at the end: **LOX-rich** if LOX, **fuel-rich** if fuel. ``tail_mr_max`` is the O/F of everything that enters from the first dry-out to the end of flow (cumulative; once one side has stopped the instantaneous O/F is unbounded, so the cumulative figure and ``alone_kg``/``alone_s`` carry it). A LOX-rich tail feeds oxygen with no fuel into a chamber whose walls are at their hottest: the copper injector face and the graphite throat insert are both attacked by oxidiser-rich gas (the replay's own graphite model counts O2 and O among the oxidisers, AUDIT 5.1). That is a graded note, not a computed recession; no face thermal model exists (AUDIT 7 item 8).
|
protected |
Definition at line 179 of file shutdown.py.
Referenced by _shutdown_from_run().
|
protected |
Definition at line 208 of file shutdown.py.
References _note(), _side_key(), classify(), max, min, and tail_off().
Referenced by shutdown_from_run().
|
protected |
Definition at line 193 of file shutdown.py.
Referenced by _shutdown_from_run().
| Dict[str, Any] engine.layerx.diag.shutdown.classify | ( | Mapping[str, Any] | tail, |
| * | , | ||
| float | end_tol_s = 1.0e-3 ) |
Mode, the propellant alone at the end, LOX alone, and the cumulative tail O/F.
Definition at line 148 of file shutdown.py.
Referenced by _shutdown_from_run().
| Dict[str, Any] engine.layerx.diag.shutdown.shutdown_from_run | ( | Any | prep, |
| Mapping[str, Any] | result, | ||
| Any | config = None, | ||
| ShutdownSettings | settings = ShutdownSettings(), | ||
| Optional[Sequence[Mapping[str, Any]]] | outflow = None ) |
``diagnostics.shutdown`` for a finished run. ``outflow`` is ``diagnostics.outflow`` when it was computed: an earlier gas-ingestion onset is then the first dry-out. Never raises.
Definition at line 197 of file shutdown.py.
References _shutdown_from_run().
| Dict[str, Any] engine.layerx.diag.shutdown.tail_off | ( | TailSide | a, |
| TailSide | b, | ||
| * | , | ||
| float | t0, | ||
| float | t_cmd, | ||
| float | dt = 1.0e-5, | ||
| float | horizon_s = 2.0 ) |
Each side's liquid flow into the chamber from ``t0`` (the first dry-out) with the valves commanded shut at ``t_cmd``. Returns per side the flow history, the mass delivered after ``t0`` and when its liquid ended.
Definition at line 99 of file shutdown.py.
Referenced by _shutdown_from_run().
| str engine.layerx.diag.shutdown.MODEL_NAME = "shutdown_tail_timeline" |
Definition at line 53 of file shutdown.py.