fullflow 2.0.0__tar.gz → 2.0.1__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.
Files changed (115) hide show
  1. {fullflow-2.0.0 → fullflow-2.0.1}/CHANGELOG.md +38 -0
  2. fullflow-2.0.1/PKG-INFO +1937 -0
  3. fullflow-2.0.1/README.md +1893 -0
  4. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/17relief_valve.py +22 -40
  5. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/5bang_bang_control.py +43 -41
  6. {fullflow-2.0.0 → fullflow-2.0.1}/pyproject.toml +1 -1
  7. fullflow-2.0.1/src/fullflow/System/Components/Controllers.py +559 -0
  8. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/__init__.py +1 -1
  9. {fullflow-2.0.0 → fullflow-2.0.1}/tests/test_imports.py +3 -1
  10. fullflow-2.0.0/CITATION.cff +0 -19
  11. fullflow-2.0.0/CODE_OF_CONDUCT.md +0 -34
  12. fullflow-2.0.0/CONTRIBUTING.md +0 -22
  13. fullflow-2.0.0/PKG-INFO +0 -690
  14. fullflow-2.0.0/README.md +0 -646
  15. fullflow-2.0.0/SECURITY.md +0 -22
  16. fullflow-2.0.0/src/fullflow/System/Components/Controllers.py +0 -220
  17. {fullflow-2.0.0 → fullflow-2.0.1}/LICENSE +0 -0
  18. {fullflow-2.0.0 → fullflow-2.0.1}/THIRD_PARTY_LICENSES.md +0 -0
  19. {fullflow-2.0.0 → fullflow-2.0.1}/docs/system_reference.md +0 -0
  20. {fullflow-2.0.0 → fullflow-2.0.1}/examples/general/0state_basics.py +0 -0
  21. {fullflow-2.0.0 → fullflow-2.0.1}/examples/general/1state_bounds_tracking.py +0 -0
  22. {fullflow-2.0.0 → fullflow-2.0.1}/examples/general/2balance_basic.py +0 -0
  23. {fullflow-2.0.0 → fullflow-2.0.1}/examples/general/3balance_multiple.py +0 -0
  24. {fullflow-2.0.0 → fullflow-2.0.1}/examples/general/4composition_mixer.py +0 -0
  25. {fullflow-2.0.0 → fullflow-2.0.1}/examples/general/5composition_splitter.py +0 -0
  26. {fullflow-2.0.0 → fullflow-2.0.1}/examples/general/6lookup_function.py +0 -0
  27. {fullflow-2.0.0 → fullflow-2.0.1}/examples/general/7lookup_class_chaining.py +0 -0
  28. {fullflow-2.0.0 → fullflow-2.0.1}/examples/general/8map_manual.py +0 -0
  29. {fullflow-2.0.0 → fullflow-2.0.1}/examples/general/9map_hdf5.py +0 -0
  30. {fullflow-2.0.0 → fullflow-2.0.1}/examples/steady_state/0function_lookup.py +0 -0
  31. {fullflow-2.0.0 → fullflow-2.0.1}/examples/steady_state/1simple_pipe.py +0 -0
  32. {fullflow-2.0.0 → fullflow-2.0.1}/examples/steady_state/2compressible_flow.py +0 -0
  33. {fullflow-2.0.0 → fullflow-2.0.1}/examples/steady_state/3custom_component.py +0 -0
  34. {fullflow-2.0.0 → fullflow-2.0.1}/examples/steady_state/4cavitating_venturi.py +0 -0
  35. {fullflow-2.0.0 → fullflow-2.0.1}/examples/steady_state/5heat_exchanger.py +0 -0
  36. {fullflow-2.0.0 → fullflow-2.0.1}/examples/steady_state/6flow_splitter.py +0 -0
  37. {fullflow-2.0.0 → fullflow-2.0.1}/examples/steady_state/7flow_mixer.py +0 -0
  38. {fullflow-2.0.0 → fullflow-2.0.1}/examples/steady_state/8turbopump.py +0 -0
  39. {fullflow-2.0.0 → fullflow-2.0.1}/examples/steady_state/9equilibrium_nozzle.py +0 -0
  40. {fullflow-2.0.0 → fullflow-2.0.1}/examples/testing/1test_data_anchoring.py +0 -0
  41. {fullflow-2.0.0 → fullflow-2.0.1}/examples/testing/2sensor_events.py +0 -0
  42. {fullflow-2.0.0 → fullflow-2.0.1}/examples/testing/3sequences_and_commands.py +0 -0
  43. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/10custom_component.py +0 -0
  44. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/11heat_transfer.py +0 -0
  45. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/12heat_exchanger.py +0 -0
  46. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/13force_steady_heat_transfer.py +0 -0
  47. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/14force_steady_fluid.py +0 -0
  48. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/15piston_cylinder.py +0 -0
  49. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/16balloon.py +0 -0
  50. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/18combustion_nozzle.py +0 -0
  51. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/19cavitating_venturi.py +0 -0
  52. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/1simple_pipe.py +0 -0
  53. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/20gas_turbine.py +0 -0
  54. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/21heatsink_tca.py +0 -0
  55. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/22water_hammer.py +0 -0
  56. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/23pid_throttle.py +0 -0
  57. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/24sudden_valve_opening.py +0 -0
  58. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/25engine_startup.py +0 -0
  59. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/2node_inertia.py +0 -0
  60. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/3shock_tube.py +0 -0
  61. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/4copv_blowdown.py +0 -0
  62. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/6pump_transient.py +0 -0
  63. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/7flow_mixer.py +0 -0
  64. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/8flow_splitter.py +0 -0
  65. {fullflow-2.0.0 → fullflow-2.0.1}/examples/transient/9model_options.py +0 -0
  66. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Exceptions.py +0 -0
  67. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Exports/EXPORTS.md +0 -0
  68. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Exports/HDF5.py +0 -0
  69. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Exports/__init__.py +0 -0
  70. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/STEADY_STATE_SOLVER.md +0 -0
  71. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/TRANSIENT_SOLVER.md +0 -0
  72. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/__init__.py +0 -0
  73. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/balance_filtering.py +0 -0
  74. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/equations.py +0 -0
  75. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/steady_state/__init__.py +0 -0
  76. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/steady_state/diagnostics.py +0 -0
  77. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/steady_state/evaluation.py +0 -0
  78. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/steady_state/models.py +0 -0
  79. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/steady_state/operations.py +0 -0
  80. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/steady_state/results.py +0 -0
  81. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/steady_state/runtime.py +0 -0
  82. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/steady_state/settings.py +0 -0
  83. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/steady_state/solver.py +0 -0
  84. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/steady_state/statistics.py +0 -0
  85. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/transient/__init__.py +0 -0
  86. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/transient/diagnostics.py +0 -0
  87. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/transient/evaluation.py +0 -0
  88. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/transient/models.py +0 -0
  89. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/transient/operations.py +0 -0
  90. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/transient/results.py +0 -0
  91. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/transient/runtime.py +0 -0
  92. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/transient/settings.py +0 -0
  93. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/Solvers/transient/solver.py +0 -0
  94. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Balance.py +0 -0
  95. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Component.py +0 -0
  96. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Components/Actuators.py +0 -0
  97. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Components/Composition.py +0 -0
  98. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Components/CompressibleFlow.py +0 -0
  99. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Components/ConvectionCoefficients.py +0 -0
  100. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Components/FrictionFactors.py +0 -0
  101. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Components/GeneralFlow.py +0 -0
  102. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Components/HeatTransfer.py +0 -0
  103. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Components/Lookup.py +0 -0
  104. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Components/Maps.py +0 -0
  105. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Components/Nodes.py +0 -0
  106. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Components/RocketPerformance.py +0 -0
  107. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Components/Sensor.py +0 -0
  108. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Components/Sequence.py +0 -0
  109. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Components/Turbomachinery.py +0 -0
  110. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Components/__init__.py +0 -0
  111. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Model.py +0 -0
  112. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/Network.py +0 -0
  113. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/SYSTEM.md +0 -0
  114. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/State.py +0 -0
  115. {fullflow-2.0.0 → fullflow-2.0.1}/src/fullflow/System/__init__.py +0 -0
@@ -1,5 +1,43 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.1
4
+
5
+ ### PID controller
6
+
7
+ * Reworked PID integral action as a normal public FullFlow dynamic State instead
8
+ of advancing controller history inside repeated nonlinear residual evaluations.
9
+ * Added ``integral_error`` and ``integral_error_dot`` as the PID dynamic pair so
10
+ the implicit transient solver integrates accumulated error with the rest of the
11
+ network.
12
+ * Changed derivative history to use the previous accepted ``error`` and network
13
+ time through the public ``State.previous`` interface.
14
+ * Made transient takeover bumpless whether ``trim`` is omitted or supplied.
15
+ The initialized command now defines the first PID output in both cases.
16
+ * Kept ``trim`` as a live feed-forward contribution after startup, so later trim
17
+ changes still move the requested command immediately.
18
+ * Improved conditional-integration anti-windup so it considers the direction of
19
+ the integral contribution and supports either sign of integral gain.
20
+ * Added public controller diagnostics for proportional, integral, derivative,
21
+ raw command, saturation status, and startup command bias.
22
+ * Added clear validation for reversed command limits and derived, non-writable
23
+ command States.
24
+ * Kept the PID transient-only so steady-state solves preserve the user-established
25
+ plant command and the controller takes over when transient integration begins.
26
+ * Did not add or remove PID constructor arguments.
27
+
28
+ ### Sequence examples
29
+
30
+ * Replaced hidden mutable closure state in the bang-bang tank main-valve example
31
+ with an accepted-timestep Sensor-triggered command for the one-time opening
32
+ event.
33
+ * Updated bang-bang and relief-valve hysteresis examples to retain their previous
34
+ accepted command through explicit State inputs rather than hidden Python
35
+ closure variables.
36
+ * Preserved repeated relief-valve open/close/reopen behavior within one transient
37
+ simulation.
38
+ * Added comments explaining when to use a one-time Sensor command versus
39
+ repeatable State-based hysteresis.
40
+
3
41
  ## 2.0.0
4
42
 
5
43
  FullFlow 2.0.0 is a publish-ready public release focused on packaging readiness,