fullflow 2.0.0__tar.gz → 2.0.2__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.0 → fullflow-2.0.2}/CHANGELOG.md +44 -0
- fullflow-2.0.2/PKG-INFO +1942 -0
- fullflow-2.0.2/README.md +1898 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/testing/1test_data_anchoring.py +5 -6
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/17relief_valve.py +22 -40
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/5bang_bang_control.py +43 -41
- fullflow-2.0.2/pyproject.toml +101 -0
- fullflow-2.0.0/pyproject.toml → fullflow-2.0.2/pyproject.toml.orig +2 -2
- fullflow-2.0.2/src/fullflow/System/Components/Controllers.py +559 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Components/Sensor.py +5 -4
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/__init__.py +1 -1
- {fullflow-2.0.0 → fullflow-2.0.2}/tests/test_imports.py +3 -1
- fullflow-2.0.0/CITATION.cff +0 -19
- fullflow-2.0.0/CODE_OF_CONDUCT.md +0 -34
- fullflow-2.0.0/CONTRIBUTING.md +0 -22
- fullflow-2.0.0/PKG-INFO +0 -690
- fullflow-2.0.0/README.md +0 -646
- fullflow-2.0.0/SECURITY.md +0 -22
- fullflow-2.0.0/src/fullflow/System/Components/Controllers.py +0 -220
- {fullflow-2.0.0 → fullflow-2.0.2}/LICENSE +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/THIRD_PARTY_LICENSES.md +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/docs/system_reference.md +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/general/0state_basics.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/general/1state_bounds_tracking.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/general/2balance_basic.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/general/3balance_multiple.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/general/4composition_mixer.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/general/5composition_splitter.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/general/6lookup_function.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/general/7lookup_class_chaining.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/general/8map_manual.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/general/9map_hdf5.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/steady_state/0function_lookup.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/steady_state/1simple_pipe.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/steady_state/2compressible_flow.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/steady_state/3custom_component.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/steady_state/4cavitating_venturi.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/steady_state/5heat_exchanger.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/steady_state/6flow_splitter.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/steady_state/7flow_mixer.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/steady_state/8turbopump.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/steady_state/9equilibrium_nozzle.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/testing/2sensor_events.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/testing/3sequences_and_commands.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/10custom_component.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/11heat_transfer.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/12heat_exchanger.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/13force_steady_heat_transfer.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/14force_steady_fluid.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/15piston_cylinder.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/16balloon.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/18combustion_nozzle.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/19cavitating_venturi.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/1simple_pipe.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/20gas_turbine.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/21heatsink_tca.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/22water_hammer.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/23pid_throttle.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/24sudden_valve_opening.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/25engine_startup.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/2node_inertia.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/3shock_tube.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/4copv_blowdown.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/6pump_transient.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/7flow_mixer.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/8flow_splitter.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/examples/transient/9model_options.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Exceptions.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Exports/EXPORTS.md +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Exports/HDF5.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Exports/__init__.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/STEADY_STATE_SOLVER.md +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/TRANSIENT_SOLVER.md +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/__init__.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/balance_filtering.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/equations.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/__init__.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/diagnostics.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/evaluation.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/models.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/operations.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/results.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/runtime.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/settings.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/solver.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/statistics.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/transient/__init__.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/transient/diagnostics.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/transient/evaluation.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/transient/models.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/transient/operations.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/transient/results.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/transient/runtime.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/transient/settings.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/Solvers/transient/solver.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Balance.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Component.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Components/Actuators.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Components/Composition.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Components/CompressibleFlow.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Components/ConvectionCoefficients.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Components/FrictionFactors.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Components/GeneralFlow.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Components/HeatTransfer.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Components/Lookup.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Components/Maps.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Components/Nodes.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Components/RocketPerformance.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Components/Sequence.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Components/Turbomachinery.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Components/__init__.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Model.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/Network.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/SYSTEM.md +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/State.py +0 -0
- {fullflow-2.0.0 → fullflow-2.0.2}/src/fullflow/System/__init__.py +0 -0
|
@@ -1,5 +1,49 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.2
|
|
4
|
+
|
|
5
|
+
* Updated the FullPlot dependency to `fullplot>=0.1.1`.
|
|
6
|
+
* Updated Sensor missing-data documentation to match current `extend` behavior.
|
|
7
|
+
* Updated the test-data anchoring example to use shared `TimeAxis.window(...)` windowing.
|
|
8
|
+
|
|
9
|
+
## 2.0.1
|
|
10
|
+
|
|
11
|
+
### PID controller
|
|
12
|
+
|
|
13
|
+
* Reworked PID integral action as a normal public FullFlow dynamic State instead
|
|
14
|
+
of advancing controller history inside repeated nonlinear residual evaluations.
|
|
15
|
+
* Added ``integral_error`` and ``integral_error_dot`` as the PID dynamic pair so
|
|
16
|
+
the implicit transient solver integrates accumulated error with the rest of the
|
|
17
|
+
network.
|
|
18
|
+
* Changed derivative history to use the previous accepted ``error`` and network
|
|
19
|
+
time through the public ``State.previous`` interface.
|
|
20
|
+
* Made transient takeover bumpless whether ``trim`` is omitted or supplied.
|
|
21
|
+
The initialized command now defines the first PID output in both cases.
|
|
22
|
+
* Kept ``trim`` as a live feed-forward contribution after startup, so later trim
|
|
23
|
+
changes still move the requested command immediately.
|
|
24
|
+
* Improved conditional-integration anti-windup so it considers the direction of
|
|
25
|
+
the integral contribution and supports either sign of integral gain.
|
|
26
|
+
* Added public controller diagnostics for proportional, integral, derivative,
|
|
27
|
+
raw command, saturation status, and startup command bias.
|
|
28
|
+
* Added clear validation for reversed command limits and derived, non-writable
|
|
29
|
+
command States.
|
|
30
|
+
* Kept the PID transient-only so steady-state solves preserve the user-established
|
|
31
|
+
plant command and the controller takes over when transient integration begins.
|
|
32
|
+
* Did not add or remove PID constructor arguments.
|
|
33
|
+
|
|
34
|
+
### Sequence examples
|
|
35
|
+
|
|
36
|
+
* Replaced hidden mutable closure state in the bang-bang tank main-valve example
|
|
37
|
+
with an accepted-timestep Sensor-triggered command for the one-time opening
|
|
38
|
+
event.
|
|
39
|
+
* Updated bang-bang and relief-valve hysteresis examples to retain their previous
|
|
40
|
+
accepted command through explicit State inputs rather than hidden Python
|
|
41
|
+
closure variables.
|
|
42
|
+
* Preserved repeated relief-valve open/close/reopen behavior within one transient
|
|
43
|
+
simulation.
|
|
44
|
+
* Added comments explaining when to use a one-time Sensor command versus
|
|
45
|
+
repeatable State-based hysteresis.
|
|
46
|
+
|
|
3
47
|
## 2.0.0
|
|
4
48
|
|
|
5
49
|
FullFlow 2.0.0 is a publish-ready public release focused on packaging readiness,
|