fullflow 2.0.2__tar.gz → 2.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fullflow-2.0.2 → fullflow-2.0.3}/CHANGELOG.md +12 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/PKG-INFO +1 -1
- {fullflow-2.0.2 → fullflow-2.0.3}/pyproject.toml +1 -1
- {fullflow-2.0.2 → fullflow-2.0.3}/pyproject.toml.orig +1 -1
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/Sequence.py +18 -6
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/__init__.py +1 -1
- {fullflow-2.0.2 → fullflow-2.0.3}/tests/test_imports.py +1 -1
- {fullflow-2.0.2 → fullflow-2.0.3}/LICENSE +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/README.md +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/THIRD_PARTY_LICENSES.md +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/docs/system_reference.md +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/general/0state_basics.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/general/1state_bounds_tracking.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/general/2balance_basic.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/general/3balance_multiple.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/general/4composition_mixer.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/general/5composition_splitter.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/general/6lookup_function.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/general/7lookup_class_chaining.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/general/8map_manual.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/general/9map_hdf5.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/steady_state/0function_lookup.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/steady_state/1simple_pipe.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/steady_state/2compressible_flow.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/steady_state/3custom_component.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/steady_state/4cavitating_venturi.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/steady_state/5heat_exchanger.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/steady_state/6flow_splitter.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/steady_state/7flow_mixer.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/steady_state/8turbopump.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/steady_state/9equilibrium_nozzle.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/testing/1test_data_anchoring.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/testing/2sensor_events.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/testing/3sequences_and_commands.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/10custom_component.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/11heat_transfer.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/12heat_exchanger.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/13force_steady_heat_transfer.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/14force_steady_fluid.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/15piston_cylinder.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/16balloon.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/17relief_valve.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/18combustion_nozzle.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/19cavitating_venturi.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/1simple_pipe.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/20gas_turbine.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/21heatsink_tca.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/22water_hammer.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/23pid_throttle.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/24sudden_valve_opening.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/25engine_startup.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/2node_inertia.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/3shock_tube.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/4copv_blowdown.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/5bang_bang_control.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/6pump_transient.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/7flow_mixer.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/8flow_splitter.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/examples/transient/9model_options.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Exceptions.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Exports/EXPORTS.md +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Exports/HDF5.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Exports/__init__.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/STEADY_STATE_SOLVER.md +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/TRANSIENT_SOLVER.md +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/__init__.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/balance_filtering.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/equations.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/steady_state/__init__.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/steady_state/diagnostics.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/steady_state/evaluation.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/steady_state/models.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/steady_state/operations.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/steady_state/results.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/steady_state/runtime.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/steady_state/settings.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/steady_state/solver.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/steady_state/statistics.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/transient/__init__.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/transient/diagnostics.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/transient/evaluation.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/transient/models.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/transient/operations.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/transient/results.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/transient/runtime.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/transient/settings.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/Solvers/transient/solver.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Balance.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Component.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/Actuators.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/Composition.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/CompressibleFlow.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/Controllers.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/ConvectionCoefficients.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/FrictionFactors.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/GeneralFlow.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/HeatTransfer.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/Lookup.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/Maps.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/Nodes.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/RocketPerformance.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/Sensor.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/Turbomachinery.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Components/__init__.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Model.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/Network.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/SYSTEM.md +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/State.py +0 -0
- {fullflow-2.0.2 → fullflow-2.0.3}/src/fullflow/System/__init__.py +0 -0
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.3
|
|
4
|
+
|
|
5
|
+
### Sequence inputs
|
|
6
|
+
|
|
7
|
+
* Normalized State-like `Sequence(function=..., inputs=...)` values through their
|
|
8
|
+
canonical `.as_state()` representation when available.
|
|
9
|
+
* Fixed Lookup input attributes used by function-based Sequences so controller
|
|
10
|
+
logic reads the previous accepted timestep value instead of the current
|
|
11
|
+
nonlinear trial value.
|
|
12
|
+
* Preserved existing behavior for direct `State` inputs, plain constants, and
|
|
13
|
+
list/tuple input containers.
|
|
14
|
+
|
|
3
15
|
## 2.0.2
|
|
4
16
|
|
|
5
17
|
* Updated the FullPlot dependency to `fullplot>=0.1.1`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fullflow
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.3
|
|
4
4
|
Summary: Python-native fluid, thermal, propulsion, control, and transient network simulation.
|
|
5
5
|
Keywords: fluid-dynamics,fluid-network,network-analysis,thermodynamics,thermal-analysis,heat-transfer,propulsion,rocket-propulsion,rocket-engine,compressible-flow,turbomachinery,control-systems,transient-simulation,simulation,engineering,scientific-computing
|
|
6
6
|
Author: Saaketh Ramoju
|
|
@@ -930,17 +930,29 @@ class Sequence(Component):
|
|
|
930
930
|
return np.interp(t, self.times.value, self.values.value)
|
|
931
931
|
|
|
932
932
|
@staticmethod
|
|
933
|
-
def
|
|
933
|
+
def _normalize_input(value):
|
|
934
|
+
if isinstance(value, State):
|
|
935
|
+
return value
|
|
936
|
+
|
|
937
|
+
as_state = getattr(type(value), "as_state", None)
|
|
938
|
+
if callable(as_state):
|
|
939
|
+
return as_state(value)
|
|
940
|
+
|
|
941
|
+
return value
|
|
942
|
+
|
|
943
|
+
@classmethod
|
|
944
|
+
def _normalize_inputs(cls, inputs):
|
|
934
945
|
if inputs is None:
|
|
935
946
|
return []
|
|
936
947
|
|
|
937
948
|
if is_state_like(inputs):
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
949
|
+
inputs = [inputs]
|
|
950
|
+
elif isinstance(inputs, (list, tuple)):
|
|
951
|
+
inputs = list(inputs)
|
|
952
|
+
else:
|
|
953
|
+
inputs = [inputs]
|
|
942
954
|
|
|
943
|
-
return [inputs]
|
|
955
|
+
return [cls._normalize_input(value) for value in inputs]
|
|
944
956
|
|
|
945
957
|
def _network_time(self):
|
|
946
958
|
if not hasattr(self.network, "time"):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|