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

Functions

 config ()
 drawing ()
Override droop (float value, uncertainty=None)
 test_an_override_lands_in_the_drawing_with_its_provenance (drawing)
 test_the_restatement_table_reads_and_takes_absolute_pressures_in_psia (drawing)
 test_a_restated_parameter_reaches_the_twin_as_measured (config, drawing)
 test_the_store_wants_a_source_and_one_value_per_parameter (tmp_path)
 test_a_measured_uncertainty_replaces_the_default_range (config, drawing)
 sweep (config, drawing)
 _case (sweep, key, side)
 test_the_sweep_runs_every_factor (sweep)
 test_impulse_is_blind_to_the_feed_and_thrust_is_not (sweep)
 test_the_band_is_told_each_way (sweep)
 test_nozzle_efficiency_moves_thrust_and_nothing_upstream (sweep)
 test_worse_mixing_costs_impulse_and_more_cd_flows_faster (sweep)
 test_a_measured_engine_input_reaches_the_card (config)
 test_restatements_follow_the_drawing_through_an_edit (tmp_path, drawing)

Variables

 reason
str FIXTURE = Path(__file__).parent / "fixtures" / "ethalox_6500N_doublet_cad_2026-09-28.yaml"
str GN2 = "copv_study_gn2"
list pytestmark

Detailed Description

Layer X phase 5: measured inputs, and which unmeasured ones move the burn.

* An override writes a stated number into the drawing before the twin reads it, with its
  provenance, so the twin's own assembly report counts it as measured.
* The uncertainty sweep varies each unmeasured input on its own. Checked against what each
  input can and cannot do, not against a stored answer:
  * nozzle efficiency changes thrust and nothing upstream of the nozzle;
  * a lower mixing E_m costs impulse;
  * a larger LOX Cd flows faster and burns out no later;
  * a measured input's stated uncertainty replaces the default range.

Function Documentation

◆ _case()

◆ config()

test_layerx_phase5.config ( void )

Definition at line 46 of file test_layerx_phase5.py.

◆ drawing()

test_layerx_phase5.drawing ( )

Definition at line 51 of file test_layerx_phase5.py.

◆ droop()

◆ sweep()

test_layerx_phase5.sweep ( config,
drawing )

Definition at line 148 of file test_layerx_phase5.py.

◆ test_a_measured_engine_input_reaches_the_card()

test_layerx_phase5.test_a_measured_engine_input_reaches_the_card ( config)
The card samples the engine with the config's measurements applied, as the runner and the
replay do. A measured LOX Cd 5 % above the model's has to show up as more LOX flow at the
same line pressures; before this was fixed the card's fast path sampled the unmeasured
config and the measurement reached the replay but not the card.

Definition at line 203 of file test_layerx_phase5.py.

◆ test_a_measured_uncertainty_replaces_the_default_range()

test_layerx_phase5.test_a_measured_uncertainty_replaces_the_default_range ( config,
drawing )

Definition at line 128 of file test_layerx_phase5.py.

References droop().

◆ test_a_restated_parameter_reaches_the_twin_as_measured()

test_layerx_phase5.test_a_restated_parameter_reaches_the_twin_as_measured ( config,
drawing )
The override is not a label: the regulator component the twin builds carries the
restated value, with the measured provenance, and the burn plan is prepared from it.

Definition at line 98 of file test_layerx_phase5.py.

References droop().

◆ test_an_override_lands_in_the_drawing_with_its_provenance()

test_layerx_phase5.test_an_override_lands_in_the_drawing_with_its_provenance ( drawing)

Definition at line 60 of file test_layerx_phase5.py.

References droop().

◆ test_impulse_is_blind_to_the_feed_and_thrust_is_not()

test_layerx_phase5.test_impulse_is_blind_to_the_feed_and_thrust_is_not ( sweep)
A fixed load burnt dry gives the same impulse whatever the valves: the tornado ranked by
impulse said "the top bar is the next measurement" while the feed was invisible to it.

Definition at line 172 of file test_layerx_phase5.py.

References _case(), and max.

◆ test_nozzle_efficiency_moves_thrust_and_nothing_upstream()

test_layerx_phase5.test_nozzle_efficiency_moves_thrust_and_nothing_upstream ( sweep)

Definition at line 188 of file test_layerx_phase5.py.

References _case().

◆ test_restatements_follow_the_drawing_through_an_edit()

test_layerx_phase5.test_restatements_follow_the_drawing_through_an_edit ( tmp_path,
drawing )
Keyed by what the drawing is (its shipped file, its pid-designer document), not by its
content: an edited drawing has a new id and keeps its restatements, and says which revision
they were entered against. An old id-keyed file still reads.

Definition at line 222 of file test_layerx_phase5.py.

References droop().

◆ test_the_band_is_told_each_way()

test_layerx_phase5.test_the_band_is_told_each_way ( sweep)
Mixing E_m costs far more impulse below than it adds above (0.70 vs 0.85 about 0.80):
one symmetric ± overstated the upside.

Definition at line 180 of file test_layerx_phase5.py.

◆ test_the_restatement_table_reads_and_takes_absolute_pressures_in_psia()

test_layerx_phase5.test_the_restatement_table_reads_and_takes_absolute_pressures_in_psia ( drawing)
Rail -> Measured values listed 'COPV pressure 3750 psi' beside a rail reading 3765 psia, and sent what
was typed with the bare 'psi', which the twin reads as gauge: typing the rail's 3765 gave the burn 3779.7
psia (ADR 0004/0007). The table now carries the psia each absolute pressure means, by the drawing rule.

Definition at line 74 of file test_layerx_phase5.py.

◆ test_the_store_wants_a_source_and_one_value_per_parameter()

test_layerx_phase5.test_the_store_wants_a_source_and_one_value_per_parameter ( tmp_path)

Definition at line 118 of file test_layerx_phase5.py.

References droop().

◆ test_the_sweep_runs_every_factor()

test_layerx_phase5.test_the_sweep_runs_every_factor ( sweep)

Definition at line 161 of file test_layerx_phase5.py.

◆ test_worse_mixing_costs_impulse_and_more_cd_flows_faster()

test_layerx_phase5.test_worse_mixing_costs_impulse_and_more_cd_flows_faster ( sweep)

Definition at line 197 of file test_layerx_phase5.py.

References _case().

Variable Documentation

◆ FIXTURE

str test_layerx_phase5.FIXTURE = Path(__file__).parent / "fixtures" / "ethalox_6500N_doublet_cad_2026-09-28.yaml"

Definition at line 29 of file test_layerx_phase5.py.

◆ GN2

str test_layerx_phase5.GN2 = "copv_study_gn2"

Definition at line 30 of file test_layerx_phase5.py.

◆ pytestmark

list test_layerx_phase5.pytestmark
Initial value:
1= [
2 pytest.mark.skipif(not (shipped_drawings_dir() / f"{GN2}.json").is_file(),
3 reason="feed-twin's shipped drawings are not next to this checkout"),
4 # The sweep fixture runs every factor of the uncertainty study on four spawned
5 # workers, each importing and JIT-compiling the engine cold: 32 s on a laptop with
6 # warm caches, past CI's 120 s per-test guard on its runners -- and the guard's
7 # thread method ends the whole run, not just this test. pytest-timeout honours
8 # this; without the plugin it is an unknown mark and only warns.
9 pytest.mark.timeout(600),
10]

Definition at line 33 of file test_layerx_phase5.py.

◆ reason

test_layerx_phase5.reason

Definition at line 22 of file test_layerx_phase5.py.