fullflow 2.0.3__tar.gz → 4.0.0__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 (132) hide show
  1. {fullflow-2.0.3 → fullflow-4.0.0}/CHANGELOG.md +33 -0
  2. {fullflow-2.0.3 → fullflow-4.0.0}/PKG-INFO +669 -11
  3. {fullflow-2.0.3 → fullflow-4.0.0}/README.md +667 -8
  4. fullflow-4.0.0/examples/linearization/1steady_state.py +61 -0
  5. fullflow-4.0.0/examples/linearization/2transient.py +128 -0
  6. fullflow-4.0.0/examples/linearization/3steady_state_sweep.py +106 -0
  7. {fullflow-2.0.3 → fullflow-4.0.0}/examples/steady_state/0function_lookup.py +8 -2
  8. {fullflow-2.0.3 → fullflow-4.0.0}/examples/steady_state/2compressible_flow.py +5 -5
  9. {fullflow-2.0.3 → fullflow-4.0.0}/examples/steady_state/3custom_component.py +3 -2
  10. {fullflow-2.0.3 → fullflow-4.0.0}/examples/steady_state/4cavitating_venturi.py +7 -1
  11. {fullflow-2.0.3 → fullflow-4.0.0}/examples/steady_state/5heat_exchanger.py +11 -12
  12. {fullflow-2.0.3 → fullflow-4.0.0}/examples/steady_state/8turbopump.py +5 -8
  13. {fullflow-2.0.3 → fullflow-4.0.0}/examples/steady_state/9equilibrium_nozzle.py +15 -17
  14. {fullflow-2.0.3 → fullflow-4.0.0}/examples/testing/1test_data_anchoring.py +15 -7
  15. {fullflow-2.0.3 → fullflow-4.0.0}/examples/testing/2sensor_events.py +10 -2
  16. {fullflow-2.0.3 → fullflow-4.0.0}/examples/testing/3sequences_and_commands.py +10 -2
  17. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/10custom_component.py +12 -3
  18. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/11heat_transfer.py +12 -4
  19. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/12heat_exchanger.py +23 -17
  20. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/13force_steady_heat_transfer.py +19 -11
  21. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/14force_steady_fluid.py +23 -12
  22. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/15piston_cylinder.py +15 -16
  23. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/16balloon.py +13 -5
  24. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/17relief_valve.py +21 -12
  25. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/18combustion_nozzle.py +19 -10
  26. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/19cavitating_venturi.py +35 -28
  27. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/1simple_pipe.py +13 -4
  28. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/20gas_turbine.py +13 -6
  29. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/21heatsink_tca.py +24 -18
  30. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/22water_hammer.py +27 -35
  31. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/23pid_throttle.py +35 -37
  32. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/24sudden_valve_opening.py +14 -18
  33. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/25engine_startup.py +25 -22
  34. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/2node_inertia.py +12 -4
  35. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/3shock_tube.py +11 -3
  36. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/4copv_blowdown.py +15 -12
  37. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/5bang_bang_control.py +20 -13
  38. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/6pump_transient.py +27 -38
  39. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/7flow_mixer.py +13 -4
  40. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/8flow_splitter.py +13 -4
  41. {fullflow-2.0.3 → fullflow-4.0.0}/examples/transient/9model_options.py +21 -21
  42. {fullflow-2.0.3 → fullflow-4.0.0}/pyproject.toml +3 -12
  43. {fullflow-2.0.3 → fullflow-4.0.0}/pyproject.toml.orig +3 -12
  44. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Exports/HDF5.py +8 -105
  45. fullflow-4.0.0/src/fullflow/Solvers/LINEARIZATION.md +235 -0
  46. fullflow-4.0.0/src/fullflow/Solvers/__init__.py +6 -0
  47. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/balance_filtering.py +1 -8
  48. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/equations.py +6 -47
  49. fullflow-4.0.0/src/fullflow/Solvers/linearization/__init__.py +5 -0
  50. fullflow-4.0.0/src/fullflow/Solvers/linearization/checkpoints.py +190 -0
  51. fullflow-4.0.0/src/fullflow/Solvers/linearization/diagnostics.py +117 -0
  52. fullflow-4.0.0/src/fullflow/Solvers/linearization/operating_point.py +283 -0
  53. fullflow-4.0.0/src/fullflow/Solvers/linearization/results.py +80 -0
  54. fullflow-4.0.0/src/fullflow/Solvers/linearization/solver.py +348 -0
  55. fullflow-4.0.0/src/fullflow/Solvers/steady_state/__init__.py +5 -0
  56. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/steady_state/diagnostics.py +4 -24
  57. fullflow-4.0.0/src/fullflow/Solvers/steady_state/evaluation.py +89 -0
  58. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/steady_state/models.py +7 -41
  59. fullflow-4.0.0/src/fullflow/Solvers/steady_state/operations.py +322 -0
  60. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/steady_state/runtime.py +123 -85
  61. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/steady_state/settings.py +3 -19
  62. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/steady_state/solver.py +83 -288
  63. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/steady_state/statistics.py +21 -14
  64. fullflow-4.0.0/src/fullflow/Solvers/transient/__init__.py +5 -0
  65. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/transient/diagnostics.py +9 -16
  66. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/transient/evaluation.py +28 -30
  67. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/transient/models.py +11 -29
  68. fullflow-4.0.0/src/fullflow/Solvers/transient/newton.py +229 -0
  69. fullflow-4.0.0/src/fullflow/Solvers/transient/operations.py +815 -0
  70. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/transient/results.py +2 -15
  71. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/transient/runtime.py +202 -214
  72. fullflow-4.0.0/src/fullflow/Solvers/transient/settings.py +36 -0
  73. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/transient/solver.py +42 -159
  74. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/Balance.py +3 -39
  75. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/Component.py +35 -139
  76. fullflow-4.0.0/src/fullflow/System/Components/Actuators.py +86 -0
  77. fullflow-4.0.0/src/fullflow/System/Components/Composition.py +127 -0
  78. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/Components/CompressibleFlow.py +16 -81
  79. fullflow-4.0.0/src/fullflow/System/Components/Controllers.py +123 -0
  80. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/Components/ConvectionCoefficients.py +40 -160
  81. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/Components/FrictionFactors.py +16 -63
  82. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/Components/GeneralFlow.py +49 -256
  83. fullflow-4.0.0/src/fullflow/System/Components/HeatTransfer.py +231 -0
  84. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/Components/Lookup.py +23 -218
  85. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/Components/Maps.py +51 -73
  86. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/Components/Nodes.py +19 -115
  87. fullflow-4.0.0/src/fullflow/System/Components/RocketPerformance.py +56 -0
  88. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/Components/Sensor.py +16 -84
  89. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/Components/Sequence.py +10 -111
  90. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/Components/Turbomachinery.py +24 -108
  91. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/Model.py +5 -40
  92. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/Network.py +5 -55
  93. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/State.py +31 -131
  94. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/__init__.py +1 -1
  95. fullflow-2.0.3/src/fullflow/Solvers/__init__.py +0 -9
  96. fullflow-2.0.3/src/fullflow/Solvers/steady_state/__init__.py +0 -23
  97. fullflow-2.0.3/src/fullflow/Solvers/steady_state/evaluation.py +0 -149
  98. fullflow-2.0.3/src/fullflow/Solvers/steady_state/operations.py +0 -363
  99. fullflow-2.0.3/src/fullflow/Solvers/transient/__init__.py +0 -7
  100. fullflow-2.0.3/src/fullflow/Solvers/transient/operations.py +0 -499
  101. fullflow-2.0.3/src/fullflow/Solvers/transient/settings.py +0 -70
  102. fullflow-2.0.3/src/fullflow/System/Components/Actuators.py +0 -181
  103. fullflow-2.0.3/src/fullflow/System/Components/Composition.py +0 -214
  104. fullflow-2.0.3/src/fullflow/System/Components/Controllers.py +0 -559
  105. fullflow-2.0.3/src/fullflow/System/Components/HeatTransfer.py +0 -355
  106. fullflow-2.0.3/src/fullflow/System/Components/RocketPerformance.py +0 -92
  107. fullflow-2.0.3/tests/test_imports.py +0 -6
  108. {fullflow-2.0.3 → fullflow-4.0.0}/LICENSE +0 -0
  109. {fullflow-2.0.3 → fullflow-4.0.0}/THIRD_PARTY_LICENSES.md +0 -0
  110. {fullflow-2.0.3 → fullflow-4.0.0}/docs/system_reference.md +0 -0
  111. {fullflow-2.0.3 → fullflow-4.0.0}/examples/general/0state_basics.py +0 -0
  112. {fullflow-2.0.3 → fullflow-4.0.0}/examples/general/1state_bounds_tracking.py +0 -0
  113. {fullflow-2.0.3 → fullflow-4.0.0}/examples/general/2balance_basic.py +0 -0
  114. {fullflow-2.0.3 → fullflow-4.0.0}/examples/general/3balance_multiple.py +0 -0
  115. {fullflow-2.0.3 → fullflow-4.0.0}/examples/general/4composition_mixer.py +0 -0
  116. {fullflow-2.0.3 → fullflow-4.0.0}/examples/general/5composition_splitter.py +0 -0
  117. {fullflow-2.0.3 → fullflow-4.0.0}/examples/general/6lookup_function.py +0 -0
  118. {fullflow-2.0.3 → fullflow-4.0.0}/examples/general/7lookup_class_chaining.py +0 -0
  119. {fullflow-2.0.3 → fullflow-4.0.0}/examples/general/8map_manual.py +0 -0
  120. {fullflow-2.0.3 → fullflow-4.0.0}/examples/general/9map_hdf5.py +0 -0
  121. {fullflow-2.0.3 → fullflow-4.0.0}/examples/steady_state/1simple_pipe.py +0 -0
  122. {fullflow-2.0.3 → fullflow-4.0.0}/examples/steady_state/6flow_splitter.py +0 -0
  123. {fullflow-2.0.3 → fullflow-4.0.0}/examples/steady_state/7flow_mixer.py +0 -0
  124. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Exceptions.py +0 -0
  125. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Exports/EXPORTS.md +0 -0
  126. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Exports/__init__.py +0 -0
  127. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/STEADY_STATE_SOLVER.md +0 -0
  128. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/TRANSIENT_SOLVER.md +0 -0
  129. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/Solvers/steady_state/results.py +0 -0
  130. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/Components/__init__.py +0 -0
  131. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/SYSTEM.md +0 -0
  132. {fullflow-2.0.3 → fullflow-4.0.0}/src/fullflow/System/__init__.py +0 -0
@@ -1,5 +1,38 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.0.0
4
+
5
+ FullFlow 4.0.0 adds local linearization of coupled nonlinear network models for sensitivity analysis and control-system development.
6
+
7
+ ### Linearization
8
+
9
+ * Added `SteadyState.linearize()` and `Transient.linearize()` as native solver methods, without import-time class modification.
10
+ * Added continuous-time state-space linearization in physical conserved-state coordinates, returning `A`, `B`, `C`, and `D`, baseline vectors, variable labels, and operating-point metadata.
11
+
12
+ ### Limitations
13
+
14
+ * Models are local, continuous-time, and valid only within a fixed operating mode.
15
+ * The implementation does not include event-time sensitivities, automatic state-space simulation, model reduction, or universal protection against side effects in arbitrary custom components.
16
+
17
+ ## 3.0.0
18
+
19
+ FullFlow 3.0.0 focuses on solver performance, transient robustness, consistent
20
+ examples, and concise user-facing documentation.
21
+
22
+ ### Solver performance
23
+
24
+ * Added a safeguarded modified-Newton transient solver with numerical Jacobian
25
+ construction, Broyden updates, backtracking, and automatic SciPy fallback.
26
+ * Added guarded Jacobian reuse between compatible transient timesteps.
27
+ * Added accepted-step prediction and validation to improve transient initial
28
+ guesses without reusing stale state or control information.
29
+ * Reduced repeated state discovery, allocation, conversion, and component
30
+ evaluation work in steady-state and transient residual calculations.
31
+ * Added compact state snapshots and cached runtime metadata with network-version
32
+ invalidation.
33
+ * Improved invalid-trial handling so temporary property-evaluation failures can
34
+ be rejected without immediately terminating a nonlinear solve.
35
+
3
36
  ## 2.0.3
4
37
 
5
38
  ### Sequence inputs