fullflow 0.1.2__tar.gz → 2.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 (156) hide show
  1. fullflow-2.0.0/CHANGELOG.md +199 -0
  2. fullflow-2.0.0/CITATION.cff +19 -0
  3. fullflow-2.0.0/CODE_OF_CONDUCT.md +34 -0
  4. fullflow-2.0.0/CONTRIBUTING.md +22 -0
  5. fullflow-2.0.0/LICENSE +674 -0
  6. fullflow-2.0.0/PKG-INFO +690 -0
  7. fullflow-2.0.0/README.md +646 -0
  8. fullflow-2.0.0/SECURITY.md +22 -0
  9. fullflow-2.0.0/THIRD_PARTY_LICENSES.md +103 -0
  10. fullflow-2.0.0/docs/system_reference.md +1946 -0
  11. fullflow-2.0.0/examples/general/0state_basics.py +108 -0
  12. fullflow-2.0.0/examples/general/1state_bounds_tracking.py +76 -0
  13. fullflow-2.0.0/examples/general/2balance_basic.py +49 -0
  14. fullflow-2.0.0/examples/general/3balance_multiple.py +55 -0
  15. fullflow-2.0.0/examples/general/4composition_mixer.py +57 -0
  16. fullflow-2.0.0/examples/general/5composition_splitter.py +57 -0
  17. fullflow-2.0.0/examples/general/6lookup_function.py +64 -0
  18. fullflow-2.0.0/examples/general/7lookup_class_chaining.py +71 -0
  19. fullflow-2.0.0/examples/general/8map_manual.py +50 -0
  20. fullflow-2.0.0/examples/general/9map_hdf5.py +92 -0
  21. fullflow-2.0.0/examples/steady_state/0function_lookup.py +149 -0
  22. fullflow-2.0.0/examples/steady_state/1simple_pipe.py +151 -0
  23. fullflow-2.0.0/examples/steady_state/2compressible_flow.py +229 -0
  24. fullflow-2.0.0/examples/steady_state/3custom_component.py +534 -0
  25. fullflow-2.0.0/examples/steady_state/4cavitating_venturi.py +511 -0
  26. fullflow-2.0.0/examples/steady_state/5heat_exchanger.py +983 -0
  27. fullflow-2.0.0/examples/steady_state/6flow_splitter.py +386 -0
  28. fullflow-2.0.0/examples/steady_state/7flow_mixer.py +221 -0
  29. fullflow-2.0.0/examples/steady_state/8turbopump.py +587 -0
  30. fullflow-2.0.0/examples/steady_state/9equilibrium_nozzle.py +739 -0
  31. fullflow-2.0.0/examples/testing/1test_data_anchoring.py +305 -0
  32. fullflow-2.0.0/examples/testing/2sensor_events.py +143 -0
  33. fullflow-2.0.0/examples/testing/3sequences_and_commands.py +242 -0
  34. fullflow-2.0.0/examples/transient/10custom_component.py +166 -0
  35. fullflow-2.0.0/examples/transient/11heat_transfer.py +211 -0
  36. fullflow-2.0.0/examples/transient/12heat_exchanger.py +1113 -0
  37. fullflow-2.0.0/examples/transient/13force_steady_heat_transfer.py +185 -0
  38. fullflow-2.0.0/examples/transient/14force_steady_fluid.py +246 -0
  39. fullflow-2.0.0/examples/transient/15piston_cylinder.py +160 -0
  40. fullflow-2.0.0/examples/transient/16balloon.py +173 -0
  41. fullflow-2.0.0/examples/transient/17relief_valve.py +225 -0
  42. fullflow-2.0.0/examples/transient/18combustion_nozzle.py +345 -0
  43. fullflow-2.0.0/examples/transient/19cavitating_venturi.py +703 -0
  44. fullflow-2.0.0/examples/transient/1simple_pipe.py +147 -0
  45. fullflow-2.0.0/examples/transient/20gas_turbine.py +625 -0
  46. fullflow-2.0.0/examples/transient/21heatsink_tca.py +1027 -0
  47. fullflow-2.0.0/examples/transient/22water_hammer.py +614 -0
  48. fullflow-2.0.0/examples/transient/23pid_throttle.py +885 -0
  49. fullflow-2.0.0/examples/transient/24sudden_valve_opening.py +701 -0
  50. fullflow-2.0.0/examples/transient/25engine_startup.py +1381 -0
  51. fullflow-2.0.0/examples/transient/2node_inertia.py +297 -0
  52. fullflow-2.0.0/examples/transient/3shock_tube.py +236 -0
  53. fullflow-2.0.0/examples/transient/4copv_blowdown.py +162 -0
  54. fullflow-2.0.0/examples/transient/5bang_bang_control.py +506 -0
  55. fullflow-2.0.0/examples/transient/6pump_transient.py +483 -0
  56. fullflow-2.0.0/examples/transient/7flow_mixer.py +496 -0
  57. fullflow-2.0.0/examples/transient/8flow_splitter.py +598 -0
  58. fullflow-2.0.0/examples/transient/9model_options.py +578 -0
  59. {fullflow-0.1.2 → fullflow-2.0.0}/pyproject.toml +45 -15
  60. fullflow-2.0.0/src/fullflow/Exceptions.py +114 -0
  61. fullflow-2.0.0/src/fullflow/Exports/EXPORTS.md +202 -0
  62. fullflow-2.0.0/src/fullflow/Exports/HDF5.py +1017 -0
  63. fullflow-2.0.0/src/fullflow/Exports/__init__.py +31 -0
  64. fullflow-2.0.0/src/fullflow/Solvers/STEADY_STATE_SOLVER.md +361 -0
  65. fullflow-2.0.0/src/fullflow/Solvers/TRANSIENT_SOLVER.md +361 -0
  66. fullflow-2.0.0/src/fullflow/Solvers/__init__.py +9 -0
  67. fullflow-2.0.0/src/fullflow/Solvers/balance_filtering.py +81 -0
  68. fullflow-2.0.0/src/fullflow/Solvers/equations.py +230 -0
  69. fullflow-2.0.0/src/fullflow/Solvers/steady_state/__init__.py +23 -0
  70. fullflow-2.0.0/src/fullflow/Solvers/steady_state/diagnostics.py +373 -0
  71. fullflow-2.0.0/src/fullflow/Solvers/steady_state/evaluation.py +149 -0
  72. fullflow-2.0.0/src/fullflow/Solvers/steady_state/models.py +340 -0
  73. fullflow-2.0.0/src/fullflow/Solvers/steady_state/operations.py +363 -0
  74. fullflow-2.0.0/src/fullflow/Solvers/steady_state/results.py +33 -0
  75. fullflow-2.0.0/src/fullflow/Solvers/steady_state/runtime.py +593 -0
  76. fullflow-2.0.0/src/fullflow/Solvers/steady_state/settings.py +68 -0
  77. fullflow-2.0.0/src/fullflow/Solvers/steady_state/solver.py +818 -0
  78. fullflow-2.0.0/src/fullflow/Solvers/steady_state/statistics.py +681 -0
  79. fullflow-2.0.0/src/fullflow/Solvers/transient/__init__.py +7 -0
  80. fullflow-2.0.0/src/fullflow/Solvers/transient/diagnostics.py +349 -0
  81. fullflow-2.0.0/src/fullflow/Solvers/transient/evaluation.py +109 -0
  82. fullflow-2.0.0/src/fullflow/Solvers/transient/models.py +307 -0
  83. fullflow-2.0.0/src/fullflow/Solvers/transient/operations.py +499 -0
  84. fullflow-2.0.0/src/fullflow/Solvers/transient/results.py +89 -0
  85. fullflow-2.0.0/src/fullflow/Solvers/transient/runtime.py +1303 -0
  86. fullflow-2.0.0/src/fullflow/Solvers/transient/settings.py +70 -0
  87. fullflow-2.0.0/src/fullflow/Solvers/transient/solver.py +682 -0
  88. fullflow-2.0.0/src/fullflow/System/Balance.py +99 -0
  89. fullflow-2.0.0/src/fullflow/System/Component.py +354 -0
  90. fullflow-2.0.0/src/fullflow/System/Components/Actuators.py +181 -0
  91. fullflow-2.0.0/src/fullflow/System/Components/Composition.py +214 -0
  92. fullflow-2.0.0/src/fullflow/System/Components/CompressibleFlow.py +449 -0
  93. fullflow-2.0.0/src/fullflow/System/Components/Controllers.py +220 -0
  94. fullflow-2.0.0/src/fullflow/System/Components/ConvectionCoefficients.py +615 -0
  95. fullflow-2.0.0/src/fullflow/System/Components/FrictionFactors.py +218 -0
  96. fullflow-2.0.0/src/fullflow/System/Components/GeneralFlow.py +853 -0
  97. fullflow-2.0.0/src/fullflow/System/Components/HeatTransfer.py +355 -0
  98. fullflow-2.0.0/src/fullflow/System/Components/Lookup.py +1833 -0
  99. fullflow-2.0.0/src/fullflow/System/Components/Maps.py +629 -0
  100. fullflow-2.0.0/src/fullflow/System/Components/Nodes.py +401 -0
  101. fullflow-2.0.0/src/fullflow/System/Components/RocketPerformance.py +92 -0
  102. fullflow-2.0.0/src/fullflow/System/Components/Sensor.py +642 -0
  103. fullflow-2.0.0/src/fullflow/System/Components/Sequence.py +996 -0
  104. fullflow-2.0.0/src/fullflow/System/Components/Turbomachinery.py +351 -0
  105. fullflow-2.0.0/src/fullflow/System/Components/__init__.py +14 -0
  106. fullflow-2.0.0/src/fullflow/System/Model.py +337 -0
  107. fullflow-2.0.0/src/fullflow/System/Network.py +618 -0
  108. fullflow-2.0.0/src/fullflow/System/SYSTEM.md +235 -0
  109. fullflow-2.0.0/src/fullflow/System/State.py +819 -0
  110. {fullflow-0.1.2 → fullflow-2.0.0}/src/fullflow/System/__init__.py +1 -2
  111. {fullflow-0.1.2 → fullflow-2.0.0}/src/fullflow/__init__.py +4 -1
  112. fullflow-2.0.0/tests/test_imports.py +4 -0
  113. fullflow-0.1.2/PKG-INFO +0 -570
  114. fullflow-0.1.2/README.md +0 -535
  115. fullflow-0.1.2/src/fullflow/Exceptions/LookupExceptions.py +0 -5
  116. fullflow-0.1.2/src/fullflow/Exceptions/__init__.py +0 -1
  117. fullflow-0.1.2/src/fullflow/Solvers/SparsityDetector.py +0 -267
  118. fullflow-0.1.2/src/fullflow/Solvers/SteadyState.py +0 -1592
  119. fullflow-0.1.2/src/fullflow/Solvers/Transient.py +0 -11
  120. fullflow-0.1.2/src/fullflow/Solvers/__init__.py +0 -3
  121. fullflow-0.1.2/src/fullflow/System/Balance.py +0 -190
  122. fullflow-0.1.2/src/fullflow/System/Component.py +0 -207
  123. fullflow-0.1.2/src/fullflow/System/Components/Branches/CompressibleFlow.py +0 -960
  124. fullflow-0.1.2/src/fullflow/System/Components/Branches/ConvectionCoefficients.py +0 -980
  125. fullflow-0.1.2/src/fullflow/System/Components/Branches/DarcyWeisbach.py +0 -259
  126. fullflow-0.1.2/src/fullflow/System/Components/Branches/DischargeCoefficient.py +0 -185
  127. fullflow-0.1.2/src/fullflow/System/Components/Branches/FrictionFactors.py +0 -181
  128. fullflow-0.1.2/src/fullflow/System/Components/Branches/HeatTransfer.py +0 -391
  129. fullflow-0.1.2/src/fullflow/System/Components/Branches/Nozzles.py +0 -41
  130. fullflow-0.1.2/src/fullflow/System/Components/Branches/Pumps.py +0 -318
  131. fullflow-0.1.2/src/fullflow/System/Components/Branches/Regulators.py +0 -89
  132. fullflow-0.1.2/src/fullflow/System/Components/Branches/Turbines.py +0 -282
  133. fullflow-0.1.2/src/fullflow/System/Components/Branches/__init__.py +0 -10
  134. fullflow-0.1.2/src/fullflow/System/Components/Lookups/FluidUtilities.py +0 -65
  135. fullflow-0.1.2/src/fullflow/System/Components/Lookups/IdealGasLookups.py +0 -790
  136. fullflow-0.1.2/src/fullflow/System/Components/Lookups/MaterialLookups.py +0 -280
  137. fullflow-0.1.2/src/fullflow/System/Components/Lookups/PropellantLookups.py +0 -383
  138. fullflow-0.1.2/src/fullflow/System/Components/Lookups/RealFluidLookups.py +0 -523
  139. fullflow-0.1.2/src/fullflow/System/Components/Lookups/__init__.py +0 -5
  140. fullflow-0.1.2/src/fullflow/System/Components/Nodes/Boundaries.py +0 -89
  141. fullflow-0.1.2/src/fullflow/System/Components/Nodes/CombustionChambers.py +0 -62
  142. fullflow-0.1.2/src/fullflow/System/Components/Nodes/Junctions.py +0 -581
  143. fullflow-0.1.2/src/fullflow/System/Components/Nodes/Solids.py +0 -133
  144. fullflow-0.1.2/src/fullflow/System/Components/Nodes/Tanks.py +0 -182
  145. fullflow-0.1.2/src/fullflow/System/Components/Nodes/Volumes.py +0 -191
  146. fullflow-0.1.2/src/fullflow/System/Components/Nodes/__init__.py +0 -6
  147. fullflow-0.1.2/src/fullflow/System/Components/Sensors/PressureTransducers.py +0 -24
  148. fullflow-0.1.2/src/fullflow/System/Components/Sensors/Thermocouples.py +0 -24
  149. fullflow-0.1.2/src/fullflow/System/Components/Sensors/__init__.py +0 -2
  150. fullflow-0.1.2/src/fullflow/System/Components/__init__.py +0 -4
  151. fullflow-0.1.2/src/fullflow/System/Composition.py +0 -164
  152. fullflow-0.1.2/src/fullflow/System/Model.py +0 -349
  153. fullflow-0.1.2/src/fullflow/System/Network.py +0 -546
  154. fullflow-0.1.2/src/fullflow/System/State.py +0 -412
  155. fullflow-0.1.2/src/fullflow/Utilities/RocketCEAUtilities.py +0 -182
  156. fullflow-0.1.2/src/fullflow/Utilities/__init__.py +0 -1
@@ -0,0 +1,199 @@
1
+ # Changelog
2
+
3
+ ## 2.0.0
4
+
5
+ FullFlow 2.0.0 is a publish-ready public release focused on packaging readiness,
6
+ repository documentation, public API documentation, solver documentation, and
7
+ basic release validation.
8
+
9
+ ### Packaging
10
+
11
+ * Bumped package version to `2.0.0`.
12
+ * Replaced the previous local development dependency on FullPlot with the PyPI dependency `fullplot>=0.1.0`.
13
+ * Updated PyPI metadata, keywords, classifiers, and package description.
14
+ * Added wheel license inclusion through `license-files = ["LICENSE"]`.
15
+ * Added optional dependency groups:
16
+ * `thermo` for ThermoProp-backed examples and workflows.
17
+ * `examples` for the full example dependency set.
18
+ * `dev` for testing and release checks.
19
+ * Added source-distribution inclusion rules for README, changelog, license files, publishing notes, examples, tests, and docs.
20
+ * Cleaned generated files, macOS resource-fork files, `__pycache__`, `.pyc`, `.DS_Store`, virtual-environment artifacts, and build output from the publish-ready archive.
21
+ * Updated the PyPI release workflow so tests run before build and publish.
22
+
23
+ ### Documentation
24
+
25
+ * Rewrote `README.md` as the primary user guide because FullFlow does not yet have a separate official documentation site.
26
+ * Added detailed README sections covering:
27
+ * Installation and optional extras.
28
+ * Dependency model and the new PyPI FullPlot dependency.
29
+ * Core concepts: `Network`, `State`, `Component`, `Balance`, and `Model`.
30
+ * Static evaluation, steady-state solving, transient solving, quasi-steady sweeps, and HDF5 output.
31
+ * Every public solver option for `SteadyState.solve(...)` and `Transient.solve(...)`.
32
+ * Component authoring and dynamic-equation conventions.
33
+ * Component catalog grouped by flow, compressible flow, nodes/storage, heat transfer, convection, friction factors, turbomachinery, propulsion, maps, lookups, sensors, sequences, PID controllers, and actuators.
34
+ * Lookup, map, sensor, sequence, controller, and actuator examples.
35
+ * Units, debugging workflow, and development checks.
36
+ * Expanded docstrings for core public classes including `State`, `StateLike`, `Balance`, `Component`, `Network`, and `Model`.
37
+ * Expanded docstrings for the public solver front ends `SteadyState` and `Transient`.
38
+ * Added or expanded component docstrings for all currently exported components:
39
+ * General flow: `FlowTube`, `AdiabaticFlow`, `DarcyWeisbach`, `DischargeCoefficient`, `CavitatingVenturi`, `SeriesCdA`, `ParallelCdA`, `RectanglePoiseuille`, `EllipsePoiseuille`, `CircularAnnulusPoiseuille`, and `HydraulicDiameter`.
40
+ * Compressible flow: `CompressibleOrifice`, `IsentropicDiffuser`, and `IsentropicNozzle`.
41
+ * Nodes/storage: `Volume`, `Solid`, and `Composition`.
42
+ * Heat transfer: `Conduction`, `Convection`, `Radiation`, `AmbientRadiation`, `TemperatureRecoveryFactor`, `AdiabaticWallTemperature`, and `EckertReferenceTemperature`.
43
+ * Convection coefficients: `Gnielinski`, `Miropolskii`, `Petukhov`, `SiederTate`, `DittusBoelter`, `Bartz`, `NaturalConvection`, and `ChurchillChu`.
44
+ * Friction factors: `Colebrook`, `Churchill`, and `PetukhovFriction`.
45
+ * Turbomachinery and propulsion: `Rotor`, `GasTurbine`, `ConstantDensityPump`, `PolytropicPump`, `SpecificImpulse`, and `IdealCharacteristicVelocity`.
46
+ * Data/control/instrumentation: `Lookup`, `LookupAttribute`, `Map`, `Sensor`, `SensorEvent`, `SensorCondition`, `Sequence`, `SequenceCommand`, `SequenceCondition`, `SequenceAbort`, `PID`, and `Actuator`.
47
+ * Added detailed docstrings for `Component.setup(...)`, component initialization helpers, model-option helpers, and export-control hooks.
48
+ * Expanded FullFlow-specific exception docstrings so user-facing failures are easier to understand from `help(...)` and IDE inspection.
49
+ * Added `PUBLISHING.md` with release-check, build, artifact-inspection, and publishing instructions.
50
+ * Updated `THIRD_PARTY_LICENSES.md` to include FullPlot and the optional ThermoProp integration model.
51
+
52
+ ### Reliability and readiness checks
53
+
54
+ * Ran compile checks for package source, tests, and examples.
55
+ * Ran the package test suite.
56
+ * Ran import and smoke checks for the public package API.
57
+ * Built wheel and source distribution artifacts.
58
+ * Inspected wheel and source distribution contents for license, README, changelog, docs, tests, examples, and package files.
59
+ * Performed an installed-wheel smoke test from the built artifact.
60
+
61
+ ### Notes
62
+
63
+ * No component equations, solver equations, or physical correlations were intentionally changed for this release.
64
+ * This release is documentation- and packaging-heavy because the repository currently serves as the primary documentation source.
65
+
66
+
67
+ ## 0.1.3
68
+
69
+ ### System Core
70
+
71
+ * Added a shared `StateLike` protocol/helper layer so `State`, `CallableLookupAttribute`, and future state-compatible proxies are handled consistently without unsafe dynamic probing.
72
+ * Added a monotonic `Network.version` and public `Network.mark_dirty()` / `mark_structure_changed()` hooks so solver runtime metadata can be cached safely and invalidated only when network structure changes.
73
+ * Refactored `State`, `Composition`, `Balance`, `Component`, and `Network` for a smaller, faster core API.
74
+ * Removed the unused `Exceptions` package and replaced it with direct built-in exception types.
75
+ * Replaced NumPy usage in core containers with standard-library math where possible to reduce import overhead.
76
+ * Added cached constructor metadata in `Component.setup()` to avoid repeated signature inspection.
77
+ * Streamlined component setup so only declared constructor parameters become public component attributes.
78
+ * Added cached Network iteration-variable metadata, labels, bounds, and values with automatic invalidation when components or balances are added or removed.
79
+ * Preserved the existing readable `Network.iteration_variables` summary while adding `iteration_variable_labels`, `iteration_variable_summary`, and `iteration_variable_states` for diagnostics and solver internals.
80
+ * Centralized residual normalization and export serialization in `Network` to remove duplicated component/balance logic.
81
+ * Kept support for assignable state-like lookup attributes as iteration variables, including `CallableLookupAttribute` inputs such as `eq.pressure`.
82
+
83
+ ### Solvers
84
+
85
+ * Added clean transient stopping for sensors with unavailable test data when `extend=False`.
86
+
87
+ * Refactored `SteadyState.py` into a thin public wrapper backed by the modular `Solvers/steady_state/` implementation.
88
+ * Added a network-version-aware runtime plan/cache for iteration variables, bounds, component evaluation callables, residual owners, and state-settling references.
89
+ * Reduced repeated network introspection inside residual evaluations and state-settling passes.
90
+ * Preserved existing `SteadyState(network).solve(...)` and `static_evaluate(...)` behavior.
91
+ * Added simpler call paths: `network.solve(...)`, `network.static_evaluate(...)`, `SteadyState(network).run(...)`, and `SteadyState(network)(...)`.
92
+ * Removed the placeholder `Transient.py` module.
93
+ * Hardened solver and network state discovery so dynamic `CallableLookup` objects are not accidentally treated as iterable compositions.
94
+
95
+
96
+ ### Components
97
+
98
+ * Added active `Sensor` anchoring: sensors can now sample FullPlot Trace objects at solver time and expose a balance through `variable`/`data`. Missing data can either be extended through by holding the variable or stop a transient/forced-steady run cleanly.
99
+
100
+ * Streamlined scalar branch math used by discharge coefficients, regulators, nozzles, friction factors, pumps, and selected compressible-flow components. Common reversible-flow helpers now live in `Branches/_flow_math.py`, preserving existing equations while avoiding unnecessary NumPy scalar dispatch.
101
+ * Reduced component import overhead by keeping NumPy only where arrays/root solving are actually needed.
102
+ * Improved `CallableLookup` performance by caching dynamic attribute proxies, callable signatures, reusable-object update signature checks, and optional memoized lookup results via `memo_size`. Added the `lazy` alias for deferred lookup evaluation.
103
+ * Made ThermoProp-dependent combustion chamber utilities import ThermoProp lazily so importing `fullflow` does not fail in environments where optional ThermoProp objects are not being used.
104
+ * Added `Component` helper methods for custom components: `_iteration_variable_names`, `values(...)`, `value(...)`, `numeric(...)`, `residual(...)`, `assign(...)`, `assign_state(...)`, `make_state(...)`, and `iteration_states(...)`. These simplify user-written components without changing existing component physics.
105
+ * Added lower-case public re-export paths under `fullflow.core` and `fullflow.components.*` while preserving legacy imports from `fullflow.System.*`.
106
+
107
+ ### Packaging
108
+
109
+ * Cleaned release artifacts by excluding `.git`, `.venv`, `__pycache__`, `__MACOSX`, and `.DS_Store` from generated source zips.
110
+
111
+ ### Documentation
112
+
113
+ * Expanded and standardized NumPy-style docstrings throughout FullFlow.
114
+
115
+ * Added detailed parameter documentation across components, including:
116
+
117
+ * Inputs
118
+ * Outputs
119
+ * Units
120
+ * Optional parameters
121
+ * Solver-related variables
122
+
123
+ * Added governing-equation documentation for fluid, thermal, and network components.
124
+
125
+ * Added residual-equation documentation for iterative components.
126
+
127
+ * Added iteration-variable documentation where applicable.
128
+
129
+ * Improved documentation consistency across:
130
+
131
+ * Fluid-flow components
132
+ * Heat-transfer components
133
+ * Thermal-network components
134
+ * Solver utilities
135
+
136
+ * Improved readability of component documentation for both users and developers.
137
+
138
+ * Improved MkDocStrings compatibility and API-reference generation.
139
+
140
+ * Improved rendering of parameter and output tables within generated documentation.
141
+
142
+ * Improved consistency between source-code documentation and published API references.
143
+
144
+ * Expanded inline engineering notes and implementation references throughout the codebase.
145
+
146
+ ### Improved
147
+
148
+ * Improved project documentation structure and navigation.
149
+
150
+ * Improved generated API-reference quality.
151
+
152
+ * Improved maintainability of component documentation.
153
+
154
+ * Improved consistency of engineering terminology and units throughout the library.
155
+
156
+ * Improved support for future automated documentation generation and website expansion.
157
+
158
+ ## 0.1.2
159
+
160
+ ### Documentation
161
+
162
+ * Added comprehensive NumPy-style docstrings throughout FullFlow components.
163
+ * Standardized component documentation format across the library.
164
+ * Added governing equations, residual definitions, iteration variable descriptions, and parameter documentation where applicable.
165
+ * Improved MkDocStrings compatibility for automatic API reference generation.
166
+ * Improved generated documentation readability and consistency.
167
+
168
+ ## 0.1.1
169
+
170
+ ### Added
171
+
172
+ * Added example gallery to the project documentation.
173
+ * Added pump-fed rocket engine example.
174
+ * Added mixture splitter example.
175
+ * Added counterflow heat exchanger example.
176
+ * Added model comparison and correlation sweep example.
177
+ * Added project metadata, keywords, classifiers, and URLs.
178
+ * Added Pandas dependency for DataFrame-based solution export.
179
+ * Added OpenPyXL dependency for Excel export support.
180
+ * Added GitHub Actions workflow for automated PyPI releases.
181
+
182
+ ### Improved
183
+
184
+ * Improved package structure and import behavior.
185
+ * Improved documentation and project presentation.
186
+ * Improved README with feature overview, applications, and usage examples.
187
+ * Improved PyPI metadata and package discoverability.
188
+ * Improved dependency management and release workflow.
189
+
190
+ ## 0.1.0
191
+
192
+ ### Added
193
+
194
+ * Initial FullFlow package structure.
195
+ * Added System package.
196
+ * Added Solvers package.
197
+ * Added Exceptions package.
198
+ * Added Utilities package.
199
+ * Added uv-based build configuration.
@@ -0,0 +1,19 @@
1
+ cff-version: 1.2.0
2
+ title: FullFlow
3
+ message: "If you use FullFlow in academic or engineering work, please cite it using this metadata."
4
+ type: software
5
+ authors:
6
+ - family-names: Ramoju
7
+ given-names: Saaketh
8
+ version: 0.1.3
9
+ date-released: 2026-06-07
10
+ license: GPL-3.0-only
11
+ repository-code: "https://github.com/saakethramoju/FullFlow"
12
+ url: "https://pypi.org/project/fullflow/"
13
+ abstract: "FullFlow is a Python framework for fluid, thermal, and propulsion network simulation."
14
+ keywords:
15
+ - fluid dynamics
16
+ - thermodynamics
17
+ - heat transfer
18
+ - rocket propulsion
19
+ - network simulation
@@ -0,0 +1,34 @@
1
+ # Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ Participants in the FullFlow project are expected to be respectful, constructive, and professional.
6
+
7
+ ## Expected Behavior
8
+
9
+ Examples of positive behavior include:
10
+
11
+ - Being respectful of differing viewpoints and experience levels
12
+ - Giving constructive feedback
13
+ - Focusing on what is best for the project
14
+ - Helping others learn and contribute
15
+
16
+ ## Unacceptable Behavior
17
+
18
+ Unacceptable behavior includes:
19
+
20
+ - Harassment or discrimination
21
+ - Personal attacks
22
+ - Trolling or insulting comments
23
+ - Publishing private information without permission
24
+ - Other conduct that would be inappropriate in a professional engineering environment
25
+
26
+ ## Enforcement
27
+
28
+ Project maintainers may remove comments, close issues, reject contributions, or block participants who violate this code of conduct.
29
+
30
+ ## Contact
31
+
32
+ Concerns can be reported to:
33
+
34
+ skramoju@gmail.com
@@ -0,0 +1,22 @@
1
+ # Contributing to FullFlow
2
+
3
+ Contributions are welcome.
4
+
5
+ FullFlow is an early-stage engineering simulation framework, so bug reports, examples, documentation improvements, and new components are especially helpful.
6
+
7
+ ## Reporting Issues
8
+
9
+ When opening an issue, please include:
10
+
11
+ - A clear description of the problem
12
+ - A minimal code example, if possible
13
+ - The Python version
14
+ - The FullFlow version
15
+ - Relevant error messages or solver output
16
+
17
+ ## Development Setup
18
+
19
+ ```bash
20
+ git clone https://github.com/saakethramoju/FullFlow.git
21
+ cd FullFlow
22
+ uv sync