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

Functions

 flatten (d, pre="")
int main ()

Variables

 ROOT = Path(__file__).resolve().parent.parent
tuple CONSEQUENTIAL
dict KNOWN_TRAPS

Detailed Description

Which numbers in this config did anyone actually choose?

EngineDesign configs carry ~900 fields. Most arrive by inheriting configs/default.yaml,
which is a GENERIC template -- its feed system is 3/8" NPT at K0 2.0 with 0.305 m runs,
which is nobody's vehicle in particular. Those values are perfectly valid config, so
nothing in the loader, the optimizer or the UI ever flags them, and a design point can
miss by 20%+ on O/F with every gate reporting a clean reason that points somewhere else.

This prints, for a given config, every physically consequential field that is
BIT-IDENTICAL to default.yaml -- i.e. inherited, not chosen.

    python3 scripts/config_provenance_audit.py configs/mine.yaml [--all]

Note the obvious limit: identical-to-default is not the same as wrong. Prandtl 0.7 is
fine for anyone. The point is that nothing distinguishes the fields where that is true
from the fields where it is not, so the list is where to start looking, not a defect list.

Function Documentation

◆ flatten()

config_provenance_audit.flatten ( d,
pre = "" )

Definition at line 45 of file config_provenance_audit.py.

References flatten().

Referenced by flatten(), and main().

◆ main()

int config_provenance_audit.main ( )

Definition at line 57 of file config_provenance_audit.py.

References flatten(), and main().

Referenced by main().

Variable Documentation

◆ CONSEQUENTIAL

tuple config_provenance_audit.CONSEQUENTIAL
Initial value:
1= (
2 "feed_system", "injector", "combustion.efficiency", "spray", "stability",
3 "ablative_cooling", "film_cooling", "regen_cooling", "chamber_geometry",
4)

Definition at line 28 of file config_provenance_audit.py.

◆ KNOWN_TRAPS

dict config_provenance_audit.KNOWN_TRAPS
Initial value:
1= {
2 "feed_system.oxidizer.line_size": "sets LOX bore; dP ~ 1/A^2, so a name is worth ~2x",
3 "feed_system.fuel.line_size": "sets fuel bore; dP ~ 1/A^2",
4 "feed_system.oxidizer.K0": "lumped loss coeff; NOT length-scaled -- must cover the whole run",
5 "feed_system.fuel.K0": "lumped loss coeff; NOT length-scaled",
6 "feed_system.oxidizer.length": "chug inertance ONLY -- does not touch dP",
7 "feed_system.fuel.length": "chug inertance ONLY -- does not touch dP",
8 "spray.evaporation.x_star_limit": "caps vaporisation length; gates L* feasibility",
9 "ablative_cooling.initial_thickness": "sets chamber bore for a given OD",
10}

Definition at line 33 of file config_provenance_audit.py.

◆ ROOT

config_provenance_audit.ROOT = Path(__file__).resolve().parent.parent

Definition at line 25 of file config_provenance_audit.py.