|
STAR
Cal STAR — firmware, DAQ server, and engine design
|
Variables | |
| HERE = Path(__file__).resolve().parent | |
| str | DRAWING = HERE / "fixtures" / "le4_rocket_and_gse.json" |
| STAR = HERE.parents[2] | |
| str | ENGINE = STAR / "EngineDesign" / "configs" / "ethalox_6800N.yaml" |
| str | CEA = STAR / "EngineDesign" / "output" / "cache" / "cea_cache_LOX_Ethanol_3D.npz" |
| str | TABLES = STAR / "feed-twin" / "backend" / "statemachines" |
LE4 with its ground support drawn: a Rocket page and a GSE page, joined at paired disconnects (``fixtures/le4_rocket_and_gse.json``, the team's drawing of 2026-10-07). Read page-blind, the cart was more vehicle: its fuel transfer tank took the tanker load alongside the flight tank, its K-bottles started empty, its hand vents were open for good, its dome-control line was plumbed into the press manifold, and only the dome regulator had a knob. Each check here is one of those, against what the stand does.
|
protected |
The cart's Fuel Transfer Tank after the loads it gave: dry, as a real fill leaves it (``TankSim.advance`` sets ``empty``, and a resting cart vessel is never advanced again to clear it).
Definition at line 654 of file test_rocket_and_gse.py.
References _ids().
Referenced by test_a_cold_flow_is_lit_by_the_vehicle_tanks_not_the_cart(), and test_an_empty_cart_tank_is_not_a_burnout().
|
protected |
LE4 (6) at T-0 with the engine on, then 0.3 s into Fire.
Definition at line 388 of file test_rocket_and_gse.py.
References _payload(), and max.
Referenced by test_ignition_is_not_stepped_on_a_capped_port(), and test_while_the_engine_burns_the_cart_rests_and_the_burn_is_the_same().
|
protected |
Definition at line 35 of file test_rocket_and_gse.py.
References _payload().
Referenced by _cart_tank_ran_dry(), _with_lox_fill_drawn(), test_a_dry_tank_does_not_drain_back_through_its_fill_line(), test_a_hand_valve_drawn_normally_open_rests_open(), test_a_liquid_dewar_is_a_supply_tank(), test_a_motorised_valve_is_a_commanded_valve(), test_a_topped_lox_tank_on_its_vent_lands_where_the_solve_put_it(), test_a_trip_names_the_vessel_furthest_over(), test_a_trip_says_what_it_is_and_which_reliefs_it_beat(), test_blank_loader_and_fill_start_at_what_they_feed(), test_every_hand_loaded_regulator_gets_a_knob(), test_every_hand_valve_rests_shut(), test_ox_fill_loads_the_flight_lox_tank_from_the_dewar(), test_t0_loads_the_fire_load_not_the_tank(), test_the_cart_regulators_drawn_with_settings_get_knobs_at_them(), test_the_crews_transfer_valve_is_not_the_operators_hold(), test_the_dome_line_is_gated_by_its_valves(), test_the_dome_line_loads_the_dome_and_carries_no_feed(), test_the_dome_loads_on_the_pad_and_holds_when_its_valve_shuts(), test_the_gse_valves_bind_to_the_table(), test_the_pad_charges_the_copv_and_loads_fuel_through_the_drawing(), test_the_transfer_tank_supplies_the_flight_fuel_tank(), test_the_vehicle_is_what_is_joined_to_the_engine(), and test_while_the_engine_burns_the_cart_rests_and_the_burn_is_the_same().
|
protected |
Definition at line 99 of file test_rocket_and_gse.py.
References _payload().
Referenced by test_blank_loader_and_fill_start_at_what_they_feed(), test_every_hand_loaded_regulator_gets_a_knob(), and test_the_gse_valves_bind_to_the_table().
|
protected |
Definition at line 31 of file test_rocket_and_gse.py.
Referenced by _fired(), _ids(), _model(), _session(), _with_lox_fill_drawn(), built(), test_a_dry_tank_does_not_drain_back_through_its_fill_line(), test_a_hand_valve_drawn_normally_open_rests_open(), test_an_empty_cart_tank_is_not_a_burnout(), test_blank_loader_and_fill_start_at_what_they_feed(), test_t0_loads_the_fire_load_not_the_tank(), test_the_cart_regulators_drawn_with_settings_get_knobs_at_them(), and test_the_pad_charges_the_copv_and_loads_fuel_through_the_drawing().
|
protected |
Definition at line 230 of file test_rocket_and_gse.py.
References _payload().
Referenced by test_a_cold_flow_is_lit_by_the_vehicle_tanks_not_the_cart(), test_a_dry_tank_does_not_drain_back_through_its_fill_line(), test_a_topped_lox_tank_on_its_vent_lands_where_the_solve_put_it(), test_a_trip_names_the_vessel_furthest_over(), test_a_trip_says_what_it_is_and_which_reliefs_it_beat(), test_ox_fill_loads_the_flight_lox_tank_from_the_dewar(), test_the_crews_transfer_valve_is_not_the_operators_hold(), and test_the_dome_loads_on_the_pad_and_holds_when_its_valve_shuts().
|
protected |
LE4 (6) with its LOX fill line finished, as ADR 0006 asks of the drawing: the fill valve's junction to the fill manifold, the manifold to OF-QDA, and the LOX vent disconnects paired.
Definition at line 300 of file test_rocket_and_gse.py.
References _ids(), and _payload().
Referenced by test_a_liquid_dewar_is_a_supply_tank(), test_a_topped_lox_tank_on_its_vent_lands_where_the_solve_put_it(), and test_ox_fill_loads_the_flight_lox_tank_from_the_dewar().
| Any test_rocket_and_gse.built | ( | ) |
Definition at line 40 of file test_rocket_and_gse.py.
References _payload().
| None test_rocket_and_gse.test_a_cold_flow_is_lit_by_the_vehicle_tanks_not_the_cart | ( | ) |
With no engine model the ENGINE symbol's design pressure is the boundary while the feed can hold it. "The feed" counted the cart: a dewar at 50 psig or a dry transfer tank under the 385 psia design kept the chamber at atmosphere with both flight tanks pressed well above it.
Definition at line 701 of file test_rocket_and_gse.py.
References _cart_tank_ran_dry(), _session(), and min.
| None test_rocket_and_gse.test_a_dry_tank_does_not_drain_back_through_its_fill_line | ( | ) |
The flight fuel tank's fill line stays open to it when dry so it can be loaded -- in its fill state, and only then. Open always, with a dump open beyond it (LE4's FD-ROT-G, uncommanded and resting open; here the cart's hand dump and transfer valve opened, the transfer held by hand), the dry tank "drained" through the line forever and the vessel's floor re-made the mass: ~0.46 kg/s of propellant from nothing, booked as guard.
Definition at line 537 of file test_rocket_and_gse.py.
References _ids(), _payload(), and _session().
| None test_rocket_and_gse.test_a_hand_valve_drawn_normally_open_rests_open | ( | ) |
Definition at line 66 of file test_rocket_and_gse.py.
References _ids(), and _payload().
| None test_rocket_and_gse.test_a_liquid_dewar_is_a_supply_tank | ( | ) |
Definition at line 328 of file test_rocket_and_gse.py.
References _ids(), and _with_lox_fill_drawn().
| None test_rocket_and_gse.test_a_motorised_valve_is_a_commanded_valve | ( | Any | built | ) |
Definition at line 75 of file test_rocket_and_gse.py.
References _ids().
| None test_rocket_and_gse.test_a_pair_drawn_joined_is_not_called_unmated | ( | Any | built | ) |
HP-QD-A and HP-QD-B are paired and joined by their own line; OF-QDA has no line at all, which is worth saying.
Definition at line 720 of file test_rocket_and_gse.py.
| None test_rocket_and_gse.test_a_topped_lox_tank_on_its_vent_lands_where_the_solve_put_it | ( | ) |
Topped to its load in Ox Fill, the LOX tank passes ~20 g/s of boil-off through a 0.45 g ullage to its vent. The solve closed that ullage on the stiffer of its gas-in and gas-out slopes, and over boiling LOX gas in is eight times stiffer: the node the vent flowed from sat at 3.1 psig while the tank read 7.2, a gap that grew with the coupling step. And the 10 % mass rule counted the vented gas, so the whole stand was solved nine times every 20 ms -- the fill ran at a third of real time. A venting ullage is closed on its own gas-out slope, and gas gone to the sky asks for no extra solves.
Definition at line 358 of file test_rocket_and_gse.py.
References _ids(), _session(), and _with_lox_fill_drawn().
| None test_rocket_and_gse.test_a_trip_names_the_vessel_furthest_over | ( | ) |
Both run tanks primed over MAWP trip the stand at once. It named the first tank it looked at (Eth-Tank, 935.7 psia) while the LOX tank stood at 963.5 psia (D-33); it names the one furthest over its MAWP.
Definition at line 591 of file test_rocket_and_gse.py.
References _ids(), and _session().
| None test_rocket_and_gse.test_a_trip_says_what_it_is_and_which_reliefs_it_beat | ( | ) |
The trip limit is the drawing's burst over a factor of two, and the trip said "The tank would have failed" at half the burst. LE4's tank reliefs are drawn at 750 psi, the trip limit itself, so they can never lift before it: the message says so rather than leave the operator wondering why the drawn relief did nothing.
Definition at line 615 of file test_rocket_and_gse.py.
References _ids(), and _session().
| None test_rocket_and_gse.test_an_empty_cart_tank_is_not_a_burnout | ( | ) |
Only the vehicle's tanks end a burn. ``_burnout_check`` counted every tank
on the stand, so a cart transfer tank emptied by the loads it gave sent each
Fire to Vent at T+0.00 s with the flight tanks full ("Burnout at T+0.00 s:
Fuel Transfer Tank ran dry").
Definition at line 668 of file test_rocket_and_gse.py.
References _cart_tank_ran_dry(), and _payload().
| None test_rocket_and_gse.test_blank_loader_and_fill_start_at_what_they_feed | ( | ) |
LE4 (6) draws DPR_HP's dome at 535 and the COPV at 4000, and leaves its dome loader (DR-REG-G) and COPV fill (PR-1) blank. The knobs start at those: a loader's job is the dome it loads, a fill's the charge it fills to. They started at the session's 500 and 4,500, so the cockpit primed 35 psi under Layer X on the same drawing and read its COPV amber at its own charge. Blank all the way down, they still start at the session's numbers.
Definition at line 120 of file test_rocket_and_gse.py.
References _ids(), _model(), and _payload().
| None test_rocket_and_gse.test_every_hand_loaded_regulator_gets_a_knob | ( | ) |
Definition at line 105 of file test_rocket_and_gse.py.
| None test_rocket_and_gse.test_every_hand_valve_rests_shut | ( | Any | built | ) |
Vents, bleeds and inline isolation alike: shut until a hand opens it.
Definition at line 58 of file test_rocket_and_gse.py.
References _ids().
| None test_rocket_and_gse.test_ignition_is_not_stepped_on_a_capped_port | ( | ) |
The fuel tank's top QD hangs a wide fitting off its ullage that ends at a cap. It carries nothing, so it is no press path: priced as one at the drain flow, it asked the first steps of Fire for 0.07 ms couplings -- 64 in a 20 ms step here, ~300 on the cockpit's first tick, most of a second before the first frame of the burn.
Definition at line 451 of file test_rocket_and_gse.py.
References _fired().
| None test_rocket_and_gse.test_ox_fill_loads_the_flight_lox_tank_from_the_dewar | ( | ) |
Definition at line 336 of file test_rocket_and_gse.py.
References _ids(), _session(), and _with_lox_fill_drawn().
| None test_rocket_and_gse.test_t0_loads_the_fire_load_not_the_tank | ( | ) |
The vehicle carries what the competition allows (the engine config's lox_tank.mass and fuel_tank.mass), not 95 % of the tanks drawn: LE4 (6) draws both at 8.19 L, a third more LOX than a fire is loaded with.
Definition at line 466 of file test_rocket_and_gse.py.
References _ids(), and _payload().
| None test_rocket_and_gse.test_the_cart_regulators_drawn_with_settings_get_knobs_at_them | ( | ) |
A cart regulator the drawing sets is still turned by hand on the pad, so it gets a knob -- starting where the drawing sets it. It used to get none, and the dome and COPV fill started at 500 and 4,500 whatever the sheet said.
Definition at line 502 of file test_rocket_and_gse.py.
References _ids(), and _payload().
| None test_rocket_and_gse.test_the_crews_transfer_valve_is_not_the_operators_hold | ( | ) |
A fresh stand with a drawn load has the crew's transfer valve shut by the twin. That is not the operator's hand: no "1 held", and Release leaves it.
Definition at line 573 of file test_rocket_and_gse.py.
References _ids(), and _session().
| None test_rocket_and_gse.test_the_dome_line_is_gated_by_its_valves | ( | Any | built | ) |
Definition at line 243 of file test_rocket_and_gse.py.
References _ids().
| None test_rocket_and_gse.test_the_dome_line_loads_the_dome_and_carries_no_feed | ( | Any | built | ) |
DR-REG-G reaches DPR_HP's dome through DR-CTRL-G, the mated DR QDs and DR-CTRL-R. It is the loader, and nothing joins the dome line to the regulator's body.
Definition at line 83 of file test_rocket_and_gse.py.
References _ids().
| None test_rocket_and_gse.test_the_dome_loads_on_the_pad_and_holds_when_its_valve_shuts | ( | ) |
Unloaded, the 1092 holds its 50 psi spring bias less its supply effect --
with the COPV charged, less than nothing, so the tank does not press. GN2 Low Press
opens DR-CTRL-G ("GSE Med Press Control") and the dome follows DR-REG-G; the
next state shuts it and the dome keeps what is in it, as the stand keeps it
through the burn with the GSE disconnected. The dome PT reads it.
Definition at line 257 of file test_rocket_and_gse.py.
References _ids(), and _session().
| None test_rocket_and_gse.test_the_gse_valves_bind_to_the_table | ( | ) |
Definition at line 155 of file test_rocket_and_gse.py.
| None test_rocket_and_gse.test_the_pad_charges_the_copv_and_loads_fuel_through_the_drawing | ( | ) |
GN2 High Press charges the COPV through PR-1 at the COPV fill knob; Fuel Fill presses the transfer tank to its drawn 150 psig and pushes fuel across the QD pair until the flight tank holds its load. Nothing moves before, no propellant appears from nowhere, and the stand keeps its mass.
Definition at line 175 of file test_rocket_and_gse.py.
References _ids(), and _payload().
| None test_rocket_and_gse.test_the_transfer_tank_supplies_the_flight_fuel_tank | ( | Any | built | ) |
Definition at line 53 of file test_rocket_and_gse.py.
References _ids().
| None test_rocket_and_gse.test_the_vehicle_is_what_is_joined_to_the_engine | ( | Any | built | ) |
Definition at line 44 of file test_rocket_and_gse.py.
References _ids().
| None test_rocket_and_gse.test_while_the_engine_burns_the_cart_rests_and_the_burn_is_the_same | ( | ) |
Fire on LE4 (6) with the cart drawn: every cart vessel is cut off from the vehicle by shut valves, so none is integrated and its lines leave the solve, and the burn is the one the whole stand integrated every step gives.
Definition at line 421 of file test_rocket_and_gse.py.
| str test_rocket_and_gse.CEA = STAR / "EngineDesign" / "output" / "cache" / "cea_cache_LOX_Ethanol_3D.npz" |
Definition at line 27 of file test_rocket_and_gse.py.
| str test_rocket_and_gse.DRAWING = HERE / "fixtures" / "le4_rocket_and_gse.json" |
Definition at line 24 of file test_rocket_and_gse.py.
| str test_rocket_and_gse.ENGINE = STAR / "EngineDesign" / "configs" / "ethalox_6800N.yaml" |
Definition at line 26 of file test_rocket_and_gse.py.
| test_rocket_and_gse.HERE = Path(__file__).resolve().parent |
Definition at line 23 of file test_rocket_and_gse.py.
| test_rocket_and_gse.STAR = HERE.parents[2] |
Definition at line 25 of file test_rocket_and_gse.py.
| str test_rocket_and_gse.TABLES = STAR / "feed-twin" / "backend" / "statemachines" |
Definition at line 28 of file test_rocket_and_gse.py.