fullflow 2.0.1__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.1 → fullflow-2.0.2}/CHANGELOG.md +6 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/PKG-INFO +11 -6
- {fullflow-2.0.1 → fullflow-2.0.2}/README.md +9 -4
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/testing/1test_data_anchoring.py +5 -6
- fullflow-2.0.2/pyproject.toml +101 -0
- fullflow-2.0.1/pyproject.toml → fullflow-2.0.2/pyproject.toml.orig +2 -2
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/Sensor.py +5 -4
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/__init__.py +1 -1
- {fullflow-2.0.1 → fullflow-2.0.2}/tests/test_imports.py +1 -1
- {fullflow-2.0.1 → fullflow-2.0.2}/LICENSE +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/THIRD_PARTY_LICENSES.md +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/docs/system_reference.md +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/general/0state_basics.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/general/1state_bounds_tracking.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/general/2balance_basic.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/general/3balance_multiple.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/general/4composition_mixer.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/general/5composition_splitter.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/general/6lookup_function.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/general/7lookup_class_chaining.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/general/8map_manual.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/general/9map_hdf5.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/steady_state/0function_lookup.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/steady_state/1simple_pipe.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/steady_state/2compressible_flow.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/steady_state/3custom_component.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/steady_state/4cavitating_venturi.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/steady_state/5heat_exchanger.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/steady_state/6flow_splitter.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/steady_state/7flow_mixer.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/steady_state/8turbopump.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/steady_state/9equilibrium_nozzle.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/testing/2sensor_events.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/testing/3sequences_and_commands.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/10custom_component.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/11heat_transfer.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/12heat_exchanger.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/13force_steady_heat_transfer.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/14force_steady_fluid.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/15piston_cylinder.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/16balloon.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/17relief_valve.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/18combustion_nozzle.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/19cavitating_venturi.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/1simple_pipe.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/20gas_turbine.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/21heatsink_tca.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/22water_hammer.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/23pid_throttle.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/24sudden_valve_opening.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/25engine_startup.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/2node_inertia.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/3shock_tube.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/4copv_blowdown.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/5bang_bang_control.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/6pump_transient.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/7flow_mixer.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/8flow_splitter.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/examples/transient/9model_options.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Exceptions.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Exports/EXPORTS.md +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Exports/HDF5.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Exports/__init__.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/STEADY_STATE_SOLVER.md +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/TRANSIENT_SOLVER.md +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/__init__.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/balance_filtering.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/equations.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/__init__.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/diagnostics.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/evaluation.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/models.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/operations.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/results.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/runtime.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/settings.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/solver.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/steady_state/statistics.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/transient/__init__.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/transient/diagnostics.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/transient/evaluation.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/transient/models.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/transient/operations.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/transient/results.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/transient/runtime.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/transient/settings.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/Solvers/transient/solver.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Balance.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Component.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/Actuators.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/Composition.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/CompressibleFlow.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/Controllers.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/ConvectionCoefficients.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/FrictionFactors.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/GeneralFlow.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/HeatTransfer.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/Lookup.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/Maps.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/Nodes.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/RocketPerformance.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/Sequence.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/Turbomachinery.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Components/__init__.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Model.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/Network.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/SYSTEM.md +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/State.py +0 -0
- {fullflow-2.0.1 → fullflow-2.0.2}/src/fullflow/System/__init__.py +0 -0
|
@@ -1,5 +1,11 @@
|
|
|
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
|
+
|
|
3
9
|
## 2.0.1
|
|
4
10
|
|
|
5
11
|
### PID controller
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fullflow
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
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
|
|
@@ -24,7 +24,7 @@ Requires-Dist: numpy>=1.26
|
|
|
24
24
|
Requires-Dist: scipy>=1.11
|
|
25
25
|
Requires-Dist: rich>=13.7
|
|
26
26
|
Requires-Dist: h5py>=3.10
|
|
27
|
-
Requires-Dist: fullplot>=0.1.
|
|
27
|
+
Requires-Dist: fullplot>=0.1.1
|
|
28
28
|
Requires-Dist: pytest>=8.0 ; extra == 'dev'
|
|
29
29
|
Requires-Dist: build>=1.2 ; extra == 'dev'
|
|
30
30
|
Requires-Dist: twine>=5.0 ; extra == 'dev'
|
|
@@ -1742,27 +1742,32 @@ from fullflow import *
|
|
|
1742
1742
|
Net = Network("Anchored Example")
|
|
1743
1743
|
pressure = State(2.0e6)
|
|
1744
1744
|
|
|
1745
|
+
time = fplt.TimeAxis([0.0, 1.0, 2.0], name="Time")
|
|
1745
1746
|
pressure_trace = fplt.Trace(
|
|
1746
|
-
x=
|
|
1747
|
+
x=time,
|
|
1747
1748
|
y=[2.0e6, 2.1e6, 2.05e6],
|
|
1748
1749
|
name="measured pressure",
|
|
1749
1750
|
role="data",
|
|
1750
1751
|
)
|
|
1751
1752
|
|
|
1753
|
+
time.window(0.5, 2.0)
|
|
1754
|
+
|
|
1752
1755
|
PressureSensor = Sensor(
|
|
1753
1756
|
"Chamber Pressure Sensor",
|
|
1754
1757
|
Net,
|
|
1755
1758
|
reading=pressure,
|
|
1756
1759
|
variable=pressure,
|
|
1757
1760
|
data=pressure_trace,
|
|
1758
|
-
extend=False,
|
|
1759
1761
|
)
|
|
1760
1762
|
```
|
|
1761
1763
|
|
|
1762
1764
|
When used in a transient solve, the sensor samples the test data at
|
|
1763
1765
|
`network.time` and exposes a balance between the model variable and the sampled
|
|
1764
|
-
trace value.
|
|
1765
|
-
|
|
1766
|
+
trace value. A shared FullPlot `TimeAxis` can window all attached traces at once.
|
|
1767
|
+
With the default `extend=True`, an anchor is inactive when no finite data is
|
|
1768
|
+
available and the solve continues; an otherwise unconstrained anchored variable
|
|
1769
|
+
retains its last accepted value. With `extend=False`, the transient stops cleanly
|
|
1770
|
+
when data is unavailable.
|
|
1766
1771
|
|
|
1767
1772
|
## Sequences, controllers, and actuators
|
|
1768
1773
|
|
|
@@ -1698,27 +1698,32 @@ from fullflow import *
|
|
|
1698
1698
|
Net = Network("Anchored Example")
|
|
1699
1699
|
pressure = State(2.0e6)
|
|
1700
1700
|
|
|
1701
|
+
time = fplt.TimeAxis([0.0, 1.0, 2.0], name="Time")
|
|
1701
1702
|
pressure_trace = fplt.Trace(
|
|
1702
|
-
x=
|
|
1703
|
+
x=time,
|
|
1703
1704
|
y=[2.0e6, 2.1e6, 2.05e6],
|
|
1704
1705
|
name="measured pressure",
|
|
1705
1706
|
role="data",
|
|
1706
1707
|
)
|
|
1707
1708
|
|
|
1709
|
+
time.window(0.5, 2.0)
|
|
1710
|
+
|
|
1708
1711
|
PressureSensor = Sensor(
|
|
1709
1712
|
"Chamber Pressure Sensor",
|
|
1710
1713
|
Net,
|
|
1711
1714
|
reading=pressure,
|
|
1712
1715
|
variable=pressure,
|
|
1713
1716
|
data=pressure_trace,
|
|
1714
|
-
extend=False,
|
|
1715
1717
|
)
|
|
1716
1718
|
```
|
|
1717
1719
|
|
|
1718
1720
|
When used in a transient solve, the sensor samples the test data at
|
|
1719
1721
|
`network.time` and exposes a balance between the model variable and the sampled
|
|
1720
|
-
trace value.
|
|
1721
|
-
|
|
1722
|
+
trace value. A shared FullPlot `TimeAxis` can window all attached traces at once.
|
|
1723
|
+
With the default `extend=True`, an anchor is inactive when no finite data is
|
|
1724
|
+
available and the solve continues; an otherwise unconstrained anchored variable
|
|
1725
|
+
retains its last accepted value. With `extend=False`, the transient stops cleanly
|
|
1726
|
+
when data is unavailable.
|
|
1722
1727
|
|
|
1723
1728
|
## Sequences, controllers, and actuators
|
|
1724
1729
|
|
|
@@ -155,13 +155,12 @@ fflow = data.trace(y="FUEL_MDOT", x=time, name="Fuel Flow Test Data", role="data
|
|
|
155
155
|
|
|
156
156
|
# A user can process a test-data trace before anchoring to it. The filtered trace
|
|
157
157
|
# keeps the same role as the source trace, so it is still valid Sensor.data.
|
|
158
|
-
|
|
159
|
-
|
|
158
|
+
ftpt = ftpt_raw.filter("moving_average", window=0.04) * psia_to_pa
|
|
159
|
+
fipt = fipt_raw.filter("moving_average", window=0.04) * psia_to_pa
|
|
160
160
|
|
|
161
|
-
#
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
fflow = fflow.window(start=0.0, stop=6.5)
|
|
161
|
+
# All three traces share this TimeAxis, so one window selects the useful part of
|
|
162
|
+
# the test for every attached trace.
|
|
163
|
+
time.window(start=0.0, stop=6.5)
|
|
165
164
|
|
|
166
165
|
# Conditions are optional in this example. They demonstrate that a Sensor can
|
|
167
166
|
# both anchor to data and log line-crossing events during the same run.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "fullflow"
|
|
3
|
+
version = "2.0.2"
|
|
4
|
+
description = "Python-native fluid, thermal, propulsion, control, and transient network simulation."
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
license = "GPL-3.0-only"
|
|
7
|
+
license-files = ["LICENSE"]
|
|
8
|
+
requires-python = ">=3.11"
|
|
9
|
+
keywords = [
|
|
10
|
+
"fluid-dynamics",
|
|
11
|
+
"fluid-network",
|
|
12
|
+
"network-analysis",
|
|
13
|
+
"thermodynamics",
|
|
14
|
+
"thermal-analysis",
|
|
15
|
+
"heat-transfer",
|
|
16
|
+
"propulsion",
|
|
17
|
+
"rocket-propulsion",
|
|
18
|
+
"rocket-engine",
|
|
19
|
+
"compressible-flow",
|
|
20
|
+
"turbomachinery",
|
|
21
|
+
"control-systems",
|
|
22
|
+
"transient-simulation",
|
|
23
|
+
"simulation",
|
|
24
|
+
"engineering",
|
|
25
|
+
"scientific-computing",
|
|
26
|
+
]
|
|
27
|
+
classifiers = [
|
|
28
|
+
"Development Status :: 4 - Beta",
|
|
29
|
+
"Intended Audience :: Science/Research",
|
|
30
|
+
"Intended Audience :: Education",
|
|
31
|
+
"Intended Audience :: Developers",
|
|
32
|
+
"Topic :: Scientific/Engineering",
|
|
33
|
+
"Topic :: Scientific/Engineering :: Physics",
|
|
34
|
+
"Topic :: Scientific/Engineering :: Information Analysis",
|
|
35
|
+
"Topic :: Scientific/Engineering :: Mathematics",
|
|
36
|
+
"Programming Language :: Python :: 3",
|
|
37
|
+
"Programming Language :: Python :: 3.11",
|
|
38
|
+
"Programming Language :: Python :: 3.12",
|
|
39
|
+
"Programming Language :: Python :: 3.13",
|
|
40
|
+
"Operating System :: OS Independent",
|
|
41
|
+
]
|
|
42
|
+
dependencies = [
|
|
43
|
+
"numpy>=1.26",
|
|
44
|
+
"scipy>=1.11",
|
|
45
|
+
"rich>=13.7",
|
|
46
|
+
"h5py>=3.10",
|
|
47
|
+
"fullplot>=0.1.1",
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
[[project.authors]]
|
|
51
|
+
name = "Saaketh Ramoju"
|
|
52
|
+
email = "skramoju@gmail.com"
|
|
53
|
+
|
|
54
|
+
[project.optional-dependencies]
|
|
55
|
+
thermo = ["thermoprop>=2.0.0"]
|
|
56
|
+
examples = [
|
|
57
|
+
"thermoprop>=2.0.0",
|
|
58
|
+
"matplotlib>=3.8",
|
|
59
|
+
]
|
|
60
|
+
dev = [
|
|
61
|
+
"pytest>=8.0",
|
|
62
|
+
"build>=1.2",
|
|
63
|
+
"twine>=5.0",
|
|
64
|
+
]
|
|
65
|
+
|
|
66
|
+
[project.urls]
|
|
67
|
+
Homepage = "https://github.com/saakethramoju/FullFlow"
|
|
68
|
+
Repository = "https://github.com/saakethramoju/FullFlow"
|
|
69
|
+
Issues = "https://github.com/saakethramoju/FullFlow/issues"
|
|
70
|
+
Changelog = "https://github.com/saakethramoju/FullFlow/blob/main/CHANGELOG.md"
|
|
71
|
+
PyPI = "https://pypi.org/project/fullflow/"
|
|
72
|
+
|
|
73
|
+
[project.scripts]
|
|
74
|
+
fullflow = "fullflow:main"
|
|
75
|
+
|
|
76
|
+
[build-system]
|
|
77
|
+
requires = ["uv_build>=0.11.18,<0.12.0"]
|
|
78
|
+
build-backend = "uv_build"
|
|
79
|
+
|
|
80
|
+
[tool.uv.build-backend]
|
|
81
|
+
source-include = [
|
|
82
|
+
"README.md",
|
|
83
|
+
"CHANGELOG.md",
|
|
84
|
+
"LICENSE",
|
|
85
|
+
"THIRD_PARTY_LICENSES.md",
|
|
86
|
+
"PUBLISHING.md",
|
|
87
|
+
"CONTRIBUTING.md",
|
|
88
|
+
"CODE_OF_CONDUCT.md",
|
|
89
|
+
"SECURITY.md",
|
|
90
|
+
"CITATION.cff",
|
|
91
|
+
"docs/**",
|
|
92
|
+
"examples/**",
|
|
93
|
+
"tests/**",
|
|
94
|
+
]
|
|
95
|
+
|
|
96
|
+
[dependency-groups]
|
|
97
|
+
dev = [
|
|
98
|
+
"pytest>=8.0",
|
|
99
|
+
"build>=1.2",
|
|
100
|
+
"twine>=5.0",
|
|
101
|
+
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "fullflow"
|
|
3
|
-
version = "2.0.
|
|
3
|
+
version = "2.0.2"
|
|
4
4
|
description = "Python-native fluid, thermal, propulsion, control, and transient network simulation."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "GPL-3.0-only"
|
|
@@ -50,7 +50,7 @@ dependencies = [
|
|
|
50
50
|
"scipy>=1.11",
|
|
51
51
|
"rich>=13.7",
|
|
52
52
|
"h5py>=3.10",
|
|
53
|
-
"fullplot>=0.1.
|
|
53
|
+
"fullplot>=0.1.1",
|
|
54
54
|
]
|
|
55
55
|
|
|
56
56
|
[project.optional-dependencies]
|
|
@@ -103,10 +103,11 @@ class Sensor(Component):
|
|
|
103
103
|
|
|
104
104
|
Missing data
|
|
105
105
|
------------
|
|
106
|
-
``extend=True``
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
106
|
+
``extend=True`` allows the solve to continue when no finite data value is
|
|
107
|
+
available. The sensor anchor is inactive during those times; if its
|
|
108
|
+
variable would otherwise be unconstrained, FullFlow retains the last
|
|
109
|
+
accepted value. ``extend=False`` requests a clean transient stop when no
|
|
110
|
+
data value is available."""
|
|
110
111
|
|
|
111
112
|
def __init__(
|
|
112
113
|
self,
|
|
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
|