|
STAR
Cal STAR — firmware, DAQ server, and engine design
|
Public Member Functions | |
| None | __init__ (self, ComponentInstance instance, ManifoldPort port) |
| float | pressure_drop (self, float mdot, FlowConditions flow) |
| float | static_head (self, FlowConditions flow) |
| dict[str, float] | diagnostics (self, float mdot, FlowConditions flow) |
| Public Member Functions inherited from feedtwin.comps.base.HydraulicComponent | |
| None | __init__ (self, ComponentInstance instance) |
| str | id (self) |
| str | type (self) |
| float | total_dp (self, float mdot, FlowConditions flow) |
| float | signal (self, FlowConditions flow, str name, float default=1.0) |
| bool | isolates (self, Mapping[str, float]|None signals=None) |
| float|None | flow_ceiling (self, FlowConditions flow) |
| float|None | pinned_flow (self, float dp_available, FlowConditions flow) |
| bool | is_choked (self, float dp_available, FlowConditions flow) |
| list[Violation] | check (self) |
| int | n_residuals (self) |
| Sequence[float] | residuals (self, EvalContext ctx) |
| Mapping[str, float] | outputs (self, EvalContext ctx) |
| FlowConditions | conditions (self, PortState port, Mapping[str, float] signals) |
| str | __repr__ (self) |
Public Attributes | |
| port = port | |
| Public Attributes inherited from feedtwin.comps.base.HydraulicComponent | |
| instance = instance | |
| p = instance.si_params() | |
| opt = dict(instance.options) | |
Additional Inherited Members | |
| Static Public Attributes inherited from feedtwin.comps.base.HydraulicComponent | |
| str | inlet_port = "inlet" |
| str | outlet_port = "outlet" |
| bool | symmetric = False |
| conditions_provider = None | |
The path from a manifold plenum out through one port. Built by :func:`expand_manifold` rather than declared directly, because a manifold is one symbol on a drawing and several branches in a solve. That asymmetry is the whole point of an assembly.
Definition at line 118 of file manifold.py.
| None feedtwin.comps.manifold.ManifoldBranch.__init__ | ( | self, | |
| ComponentInstance | instance, | ||
| ManifoldPort | port ) |
| dict[str, float] feedtwin.comps.manifold.ManifoldBranch.diagnostics | ( | self, | |
| float | mdot, | ||
| FlowConditions | flow ) |
Derived quantities worth reporting: velocity, Reynolds number, K. Never consumed by a solver. This is what a frame and a report show, and what makes a result inspectable rather than just a number.
Reimplemented from feedtwin.comps.base.HydraulicComponent.
Definition at line 139 of file manifold.py.
References actuator_testing_gui.SensorReceiver.port, combined_gui.UDPReceiver.port, emmc_log_t.port, port, gui.Reader.port, idle_t.port, lc_calibration_gui.LCPlotWindow.port, lc_calibration_gui.UDPReceiver.port, pt_multi_gui.PTPlotWindow.port, pt_multi_gui.UDPReceiver.port, self_test_t.port, sense_testing_gui.UDPReceiver.port, solenoid_characterization_gui.UDPReceiver.port, StarOTA::Config.port, and feedtwin.comps.base.HydraulicComponent.pressure_drop().
| float feedtwin.comps.manifold.ManifoldBranch.pressure_drop | ( | self, | |
| float | mdot, | ||
| FlowConditions | flow ) |
Flow-dependent pressure loss [Pa]. Always non-negative. A *loss*: it opposes the flow, so it lowers the downstream pressure whichever way the fluid is going. Reverse flow is each component's own business -- symmetric for a pipe, very much not for a check valve. Anything that does **not** depend on the direction of flow belongs in :meth:`static_head`, not here. See that method for why the distinction is load-bearing rather than tidy.
Reimplemented from feedtwin.comps.base.HydraulicComponent.
Definition at line 130 of file manifold.py.
References actuator_testing_gui.SensorReceiver.port, combined_gui.UDPReceiver.port, emmc_log_t.port, port, gui.Reader.port, idle_t.port, lc_calibration_gui.LCPlotWindow.port, lc_calibration_gui.UDPReceiver.port, pt_multi_gui.PTPlotWindow.port, pt_multi_gui.UDPReceiver.port, self_test_t.port, sense_testing_gui.UDPReceiver.port, solenoid_characterization_gui.UDPReceiver.port, and StarOTA::Config.port.
| float feedtwin.comps.manifold.ManifoldBranch.static_head | ( | self, | |
| FlowConditions | flow ) |
Flow-independent pressure change [Pa], signed. Zero for most things. Elevation is the case that matters: ``rho g dz`` is set by where the ends of a pipe are, and does not care which way the fluid is going. A loss reverses sign with the flow; a static head does not. Conflating the two is silently wrong exactly when it is hardest to notice -- a network where a branch reverses, which is any recirculation loop, any vent path, and most transients. Getting it wrong puts the answer out by ``2 rho g dz`` on that branch, with everything still converging and conserving mass.
Reimplemented from feedtwin.comps.base.HydraulicComponent.
Definition at line 136 of file manifold.py.
References actuator_testing_gui.SensorReceiver.port, combined_gui.UDPReceiver.port, emmc_log_t.port, port, gui.Reader.port, idle_t.port, lc_calibration_gui.LCPlotWindow.port, lc_calibration_gui.UDPReceiver.port, pt_multi_gui.PTPlotWindow.port, pt_multi_gui.UDPReceiver.port, self_test_t.port, sense_testing_gui.UDPReceiver.port, solenoid_characterization_gui.UDPReceiver.port, and StarOTA::Config.port.
| feedtwin.comps.manifold.ManifoldBranch.port = port |
Definition at line 128 of file manifold.py.
Referenced by calibration_server.ElodinWriter.connect(), diagnostics(), pressure_drop(), calibration_orchestrator.UDPSensorReceiver.run(), combined_fsw_gui.UDPReceiver.run(), imu_calibration_gui.UDPReceiver.run(), and static_head().