pyflightstream 0.2.0__py3-none-any.whl
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.
- pyflightstream/__init__.py +27 -0
- pyflightstream/cases/__init__.py +332 -0
- pyflightstream/cases/matrix_legacy.py +337 -0
- pyflightstream/commands/__init__.py +544 -0
- pyflightstream/commands/_meta.yaml +18 -0
- pyflightstream/commands/actuators.yaml +167 -0
- pyflightstream/commands/advanced_settings.yaml +136 -0
- pyflightstream/commands/aeroelastic_coupling.yaml +172 -0
- pyflightstream/commands/boundary_conditions.yaml +153 -0
- pyflightstream/commands/ccs_wing_mesh.yaml +74 -0
- pyflightstream/commands/coordinate_systems.yaml +123 -0
- pyflightstream/commands/file_io.yaml +82 -0
- pyflightstream/commands/mesh_import_export.yaml +72 -0
- pyflightstream/commands/motion_definitions.yaml +185 -0
- pyflightstream/commands/probe_points.yaml +116 -0
- pyflightstream/commands/runtime_settings.yaml +160 -0
- pyflightstream/commands/scenes.yaml +14 -0
- pyflightstream/commands/script_controls.yaml +39 -0
- pyflightstream/commands/simulation_controls.yaml +30 -0
- pyflightstream/commands/solver_analysis.yaml +118 -0
- pyflightstream/commands/solver_export.yaml +138 -0
- pyflightstream/commands/solver_initialization.yaml +95 -0
- pyflightstream/commands/solver_settings.yaml +120 -0
- pyflightstream/commands/streamlines.yaml +63 -0
- pyflightstream/commands/surface_sections.yaml +145 -0
- pyflightstream/commands/sweeper.yaml +115 -0
- pyflightstream/commands/unsteady_solver.yaml +68 -0
- pyflightstream/commands/volume_sections.yaml +148 -0
- pyflightstream/farfield/__init__.py +613 -0
- pyflightstream/files/__init__.py +375 -0
- pyflightstream/fsi/__init__.py +57 -0
- pyflightstream/fsi/beam.py +417 -0
- pyflightstream/fsi/centrifugal.py +418 -0
- pyflightstream/fsi/cli.py +206 -0
- pyflightstream/fsi/config.py +316 -0
- pyflightstream/fsi/driver.py +501 -0
- pyflightstream/fsi/kinematics.py +153 -0
- pyflightstream/fsi/loads.py +740 -0
- pyflightstream/fsi/nodes.py +463 -0
- pyflightstream/fsi/state.py +181 -0
- pyflightstream/post/__init__.py +18 -0
- pyflightstream/post/writers.py +195 -0
- pyflightstream/probes/__init__.py +453 -0
- pyflightstream/probes/geometry.py +281 -0
- pyflightstream/probes/planar.py +477 -0
- pyflightstream/qa/__init__.py +59 -0
- pyflightstream/qa/cli.py +364 -0
- pyflightstream/qa/compat.py +285 -0
- pyflightstream/qa/drift.py +406 -0
- pyflightstream/qa/geometry.py +421 -0
- pyflightstream/qa/physics.py +1744 -0
- pyflightstream/qa/probes.py +1023 -0
- pyflightstream/qa/references/PHY-01.yaml +38 -0
- pyflightstream/qa/references/PHY-02.yaml +28 -0
- pyflightstream/qa/references/PHY-05.yaml +29 -0
- pyflightstream/qa/references/PHY-06.yaml +90 -0
- pyflightstream/qa/references/SMI-01.yaml +28 -0
- pyflightstream/qa/references/SMI-02.yaml +28 -0
- pyflightstream/qa/specs.py +1405 -0
- pyflightstream/reference.py +465 -0
- pyflightstream/results/__init__.py +547 -0
- pyflightstream/run/__init__.py +677 -0
- pyflightstream/script/__init__.py +474 -0
- pyflightstream/script/helpers.py +844 -0
- pyflightstream/versions.py +191 -0
- pyflightstream-0.2.0.dist-info/METADATA +88 -0
- pyflightstream-0.2.0.dist-info/RECORD +71 -0
- pyflightstream-0.2.0.dist-info/WHEEL +5 -0
- pyflightstream-0.2.0.dist-info/entry_points.txt +3 -0
- pyflightstream-0.2.0.dist-info/licenses/LICENSE +21 -0
- pyflightstream-0.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"""Canonical FlightStream version identifiers and their ordering.
|
|
2
|
+
|
|
3
|
+
Pipeline role: the lowest layer. Everything else asks this module which
|
|
4
|
+
FlightStream versions exist and how they are ordered.
|
|
5
|
+
|
|
6
|
+
Canonical identifiers use the 26.XXX three-digit scheme (for example
|
|
7
|
+
``26.120`` for the vendor release named 26.12); the last digit indexes
|
|
8
|
+
vendor hotfix builds. Neither string nor float comparison orders vendor
|
|
9
|
+
names correctly ("26.1" versus "26.12"), so the ordered list in
|
|
10
|
+
``commands/_meta.yaml`` is the only ordering authority.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
import re
|
|
16
|
+
from dataclasses import dataclass
|
|
17
|
+
from functools import lru_cache
|
|
18
|
+
from importlib import resources
|
|
19
|
+
|
|
20
|
+
import yaml
|
|
21
|
+
|
|
22
|
+
_CANONICAL_PATTERN = re.compile(r"^\d{2}\.\d{3}$")
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class UnknownVersionError(ValueError):
|
|
26
|
+
"""A FlightStream version identifier is not in the ordered registry.
|
|
27
|
+
|
|
28
|
+
Raised when a canonical identifier or display alias does not match
|
|
29
|
+
any entry of the ordered list in ``commands/_meta.yaml``. The message
|
|
30
|
+
lists every known version so the caller can correct the input or
|
|
31
|
+
register the new version first.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@dataclass(frozen=True)
|
|
36
|
+
class FsVersion:
|
|
37
|
+
"""One registered FlightStream version.
|
|
38
|
+
|
|
39
|
+
Value object wrapping a canonical ``26.XXX`` identifier. Instances
|
|
40
|
+
are obtained through :func:`resolve` or :func:`known_versions`;
|
|
41
|
+
constructing one by hand bypasses the registry and is reserved to
|
|
42
|
+
this module.
|
|
43
|
+
|
|
44
|
+
Attributes
|
|
45
|
+
----------
|
|
46
|
+
canonical : str
|
|
47
|
+
Canonical identifier in the three-fractional-digit scheme, for
|
|
48
|
+
example ``"26.120"``. The first two fractional digits carry the
|
|
49
|
+
official minor release, the last digit the vendor hotfix build
|
|
50
|
+
(0 means the official release).
|
|
51
|
+
alias : str
|
|
52
|
+
Vendor-facing release name, for example ``"26.12"``.
|
|
53
|
+
index : int
|
|
54
|
+
Position in the ordered list of ``commands/_meta.yaml``. All
|
|
55
|
+
ordering comparisons delegate to this index, never to string or
|
|
56
|
+
float comparison of the identifiers.
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
canonical: str
|
|
60
|
+
alias: str
|
|
61
|
+
index: int
|
|
62
|
+
|
|
63
|
+
def __post_init__(self) -> None:
|
|
64
|
+
"""Reject identifiers that do not follow the canonical scheme."""
|
|
65
|
+
if not _CANONICAL_PATTERN.match(self.canonical):
|
|
66
|
+
raise UnknownVersionError(
|
|
67
|
+
f"{self.canonical!r} does not follow the canonical MAJOR.XXX "
|
|
68
|
+
"scheme with exactly three fractional digits (example: 26.120)."
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
def __str__(self) -> str:
|
|
72
|
+
"""Return the canonical identifier."""
|
|
73
|
+
return self.canonical
|
|
74
|
+
|
|
75
|
+
def _index_against(self, other: object) -> int | None:
|
|
76
|
+
if isinstance(other, FsVersion):
|
|
77
|
+
return other.index
|
|
78
|
+
return None
|
|
79
|
+
|
|
80
|
+
def __lt__(self, other: object) -> bool:
|
|
81
|
+
"""Order by release position in the registry list."""
|
|
82
|
+
other_index = self._index_against(other)
|
|
83
|
+
if other_index is None:
|
|
84
|
+
return NotImplemented
|
|
85
|
+
return self.index < other_index
|
|
86
|
+
|
|
87
|
+
def __le__(self, other: object) -> bool:
|
|
88
|
+
"""Order by release position in the registry list."""
|
|
89
|
+
other_index = self._index_against(other)
|
|
90
|
+
if other_index is None:
|
|
91
|
+
return NotImplemented
|
|
92
|
+
return self.index <= other_index
|
|
93
|
+
|
|
94
|
+
def __gt__(self, other: object) -> bool:
|
|
95
|
+
"""Order by release position in the registry list."""
|
|
96
|
+
other_index = self._index_against(other)
|
|
97
|
+
if other_index is None:
|
|
98
|
+
return NotImplemented
|
|
99
|
+
return self.index > other_index
|
|
100
|
+
|
|
101
|
+
def __ge__(self, other: object) -> bool:
|
|
102
|
+
"""Order by release position in the registry list."""
|
|
103
|
+
other_index = self._index_against(other)
|
|
104
|
+
if other_index is None:
|
|
105
|
+
return NotImplemented
|
|
106
|
+
return self.index >= other_index
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
@lru_cache(maxsize=1)
|
|
110
|
+
def known_versions() -> tuple[FsVersion, ...]:
|
|
111
|
+
"""Return every registered FlightStream version, in release order.
|
|
112
|
+
|
|
113
|
+
The list is read from ``commands/_meta.yaml`` inside the installed
|
|
114
|
+
package, so it is available from the wheel without repository access.
|
|
115
|
+
|
|
116
|
+
Returns
|
|
117
|
+
-------
|
|
118
|
+
tuple of FsVersion
|
|
119
|
+
Registered versions, ordered oldest first. The tuple position is
|
|
120
|
+
the ordering authority (CLAUDE.md invariant 4).
|
|
121
|
+
"""
|
|
122
|
+
meta_text = (
|
|
123
|
+
resources.files("pyflightstream.commands")
|
|
124
|
+
.joinpath("_meta.yaml")
|
|
125
|
+
.read_text(encoding="utf-8")
|
|
126
|
+
)
|
|
127
|
+
meta = yaml.safe_load(meta_text)
|
|
128
|
+
return tuple(
|
|
129
|
+
FsVersion(canonical=entry["canonical"], alias=str(entry["alias"]), index=position)
|
|
130
|
+
for position, entry in enumerate(meta["versions"])
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
@lru_cache(maxsize=1)
|
|
135
|
+
def manual_editions() -> dict[str, str]:
|
|
136
|
+
"""Return the registered manual edition per canonical version.
|
|
137
|
+
|
|
138
|
+
The mapping is read from ``commands/_meta.yaml`` and names the
|
|
139
|
+
manual edition (with its source id) that backs the ``documented``
|
|
140
|
+
statuses of each version. Versions without a registered edition are
|
|
141
|
+
absent; their commands await release-notes review or backfill
|
|
142
|
+
probing.
|
|
143
|
+
|
|
144
|
+
Returns
|
|
145
|
+
-------
|
|
146
|
+
dict of str to str
|
|
147
|
+
Manual edition description keyed by canonical identifier.
|
|
148
|
+
"""
|
|
149
|
+
meta_text = (
|
|
150
|
+
resources.files("pyflightstream.commands")
|
|
151
|
+
.joinpath("_meta.yaml")
|
|
152
|
+
.read_text(encoding="utf-8")
|
|
153
|
+
)
|
|
154
|
+
meta = yaml.safe_load(meta_text)
|
|
155
|
+
editions = meta.get("manual_editions") or {}
|
|
156
|
+
return {str(key): str(value).strip() for key, value in editions.items()}
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
def resolve(version: str | FsVersion) -> FsVersion:
|
|
160
|
+
"""Resolve a canonical identifier or display alias to a registered version.
|
|
161
|
+
|
|
162
|
+
Parameters
|
|
163
|
+
----------
|
|
164
|
+
version : str or FsVersion
|
|
165
|
+
Canonical identifier (``"26.120"``), display alias (``"26.12"``),
|
|
166
|
+
or an already resolved :class:`FsVersion`, returned unchanged.
|
|
167
|
+
|
|
168
|
+
Returns
|
|
169
|
+
-------
|
|
170
|
+
FsVersion
|
|
171
|
+
The registered version.
|
|
172
|
+
|
|
173
|
+
Raises
|
|
174
|
+
------
|
|
175
|
+
UnknownVersionError
|
|
176
|
+
If the identifier matches no registered version. The message
|
|
177
|
+
lists the known versions; new versions are only added through
|
|
178
|
+
the ordered list in ``commands/_meta.yaml``.
|
|
179
|
+
"""
|
|
180
|
+
if isinstance(version, FsVersion):
|
|
181
|
+
return version
|
|
182
|
+
for registered in known_versions():
|
|
183
|
+
if version in (registered.canonical, registered.alias):
|
|
184
|
+
return registered
|
|
185
|
+
known = ", ".join(f"{v.canonical} (vendor name {v.alias})" for v in known_versions())
|
|
186
|
+
raise UnknownVersionError(
|
|
187
|
+
f"FlightStream version {version!r} is not registered. Known versions, "
|
|
188
|
+
f"in release order: {known}. Canonical identifiers use the 26.XXX "
|
|
189
|
+
"three-digit scheme; register new versions in commands/_meta.yaml, "
|
|
190
|
+
"which is the only ordering authority."
|
|
191
|
+
)
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pyflightstream
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Version-aware, didactic Python driver for the FlightStream panel-method solver
|
|
5
|
+
Author: Geovana Neves
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Repository, https://github.com/nevesgeovana/pyflightstream
|
|
8
|
+
Requires-Python: >=3.11
|
|
9
|
+
Description-Content-Type: text/markdown
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Requires-Dist: numpy
|
|
12
|
+
Requires-Dist: pandas
|
|
13
|
+
Requires-Dist: pydantic
|
|
14
|
+
Requires-Dist: pyyaml
|
|
15
|
+
Requires-Dist: xarray
|
|
16
|
+
Provides-Extra: plot
|
|
17
|
+
Requires-Dist: matplotlib; extra == "plot"
|
|
18
|
+
Provides-Extra: geom
|
|
19
|
+
Requires-Dist: trimesh; extra == "geom"
|
|
20
|
+
Requires-Dist: rtree; extra == "geom"
|
|
21
|
+
Requires-Dist: scipy; extra == "geom"
|
|
22
|
+
Provides-Extra: fsi
|
|
23
|
+
Requires-Dist: PyNiteFEA>=3.0; extra == "fsi"
|
|
24
|
+
Provides-Extra: dev
|
|
25
|
+
Requires-Dist: pytest; extra == "dev"
|
|
26
|
+
Requires-Dist: ruff; extra == "dev"
|
|
27
|
+
Requires-Dist: pre-commit; extra == "dev"
|
|
28
|
+
Requires-Dist: mkdocs-material; extra == "dev"
|
|
29
|
+
Requires-Dist: mkdocstrings[python]; extra == "dev"
|
|
30
|
+
Requires-Dist: mkdocs-gen-files; extra == "dev"
|
|
31
|
+
Requires-Dist: mkdocs-literate-nav; extra == "dev"
|
|
32
|
+
Dynamic: license-file
|
|
33
|
+
|
|
34
|
+
# pyflightstream
|
|
35
|
+
|
|
36
|
+
Version-aware, didactic Python driver for the FlightStream panel-method solver.
|
|
37
|
+
Successor of the author's legacy research scripts. MIT licensed.
|
|
38
|
+
|
|
39
|
+
Status: pre-alpha, milestone M0 (repository skeleton). The package installs and
|
|
40
|
+
imports, but no functionality ships yet. See the milestone plan below.
|
|
41
|
+
|
|
42
|
+
## Why this package
|
|
43
|
+
|
|
44
|
+
FlightStream is scripted through an ASCII command file whose commands change
|
|
45
|
+
between solver versions, and not every change reaches the changelog. This
|
|
46
|
+
package makes the FlightStream version an explicit input: every command it
|
|
47
|
+
emits is validated against a per-version command database, and old versions
|
|
48
|
+
are only ever added, never dropped.
|
|
49
|
+
|
|
50
|
+
## What is each folder?
|
|
51
|
+
|
|
52
|
+
| Folder | Purpose in plain language |
|
|
53
|
+
|---|---|
|
|
54
|
+
| `src/pyflightstream/` | The package itself, one subpackage per pipeline stage |
|
|
55
|
+
| `src/pyflightstream/commands/` | The command database: what exists in which FlightStream version, with manual page citations |
|
|
56
|
+
| `tests/` | Tier 1 tests, runnable anywhere, no FlightStream needed |
|
|
57
|
+
| `reports/` | Committed evidence from licensed machines: which commands actually work (compat) and physics regression results |
|
|
58
|
+
| `docs/` | Documentation source (mkdocs) |
|
|
59
|
+
| `examples/` | Runnable example scripts in percent format |
|
|
60
|
+
| `.claude/skills/` | Maintenance procedures (version updates, command additions, QA runs, releases) |
|
|
61
|
+
| `_private/` | Local only, never committed: FlightStream manuals and research geometry |
|
|
62
|
+
|
|
63
|
+
## Supported FlightStream versions
|
|
64
|
+
|
|
65
|
+
Planned at launch: 26.000, 26.100, 26.120 (canonical 26.XXX scheme; the last
|
|
66
|
+
digit indexes vendor hotfix builds). The ordered list in
|
|
67
|
+
`src/pyflightstream/commands/_meta.yaml` is the only ordering authority.
|
|
68
|
+
|
|
69
|
+
## Development setup
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
pip install -e .[dev]
|
|
73
|
+
pre-commit install
|
|
74
|
+
pytest
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Tier 2 (command validity probes) and Tier 3 (physics regression) require a
|
|
78
|
+
local FlightStream license and are documented in CONTRIBUTING.md.
|
|
79
|
+
|
|
80
|
+
## Milestones
|
|
81
|
+
|
|
82
|
+
M0 skeleton (this) > M1 command database > M2 builder, runner, parser >
|
|
83
|
+
M3 compat report > M4 physics cases > M5 docs and example > v0.1.0 (private).
|
|
84
|
+
|
|
85
|
+
## License
|
|
86
|
+
|
|
87
|
+
MIT. Contributions must be original or MIT-compatible; code derived from the
|
|
88
|
+
AGPL pyFlightscript package is not accepted. See CONTRIBUTING.md.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
pyflightstream/__init__.py,sha256=9KF_ePOp8WiabGyzrkfDi9DmwqD9xLO6OuHXKSJ_PVw,1150
|
|
2
|
+
pyflightstream/reference.py,sha256=9EwpW6YePyRjALr_lJ9AzbMMwyiTQbFiZ0PTw1ZSoO0,17696
|
|
3
|
+
pyflightstream/versions.py,sha256=ACXF8D0lo3aeaKjb4SUF_NSZAyaSMln1384gIInA-co,6897
|
|
4
|
+
pyflightstream/cases/__init__.py,sha256=wN3SgxV2uyzCLPfNK-zhkn432lx-9BkDhkBXtUPB26o,11624
|
|
5
|
+
pyflightstream/cases/matrix_legacy.py,sha256=76fJFCky_Wp3rKXjLQtMKPvYzgHqjZXtr9E0AnUbWJg,12102
|
|
6
|
+
pyflightstream/commands/__init__.py,sha256=y2jirOauFQ6e_Yb2EvDfH2OUAQ9gQvmzqxR6KoBh6aU,21373
|
|
7
|
+
pyflightstream/commands/_meta.yaml,sha256=ZAB1jlt0wy2aA9ddm6fMkDFABmlnDf3ACUFf02NqJY8,681
|
|
8
|
+
pyflightstream/commands/actuators.yaml,sha256=rlk8by47uX7cMV7vU4UXOliIBzwNSM7gI1Bx1eW1gMc,4351
|
|
9
|
+
pyflightstream/commands/advanced_settings.yaml,sha256=wAybL0xY2zfdOCQI6ps2B2n6dbPFsKtBxd_ozxz7-nY,3426
|
|
10
|
+
pyflightstream/commands/aeroelastic_coupling.yaml,sha256=3roBumDYMcxM_89DXahFofhtBMA2AXGH37lvVmoBWa4,5460
|
|
11
|
+
pyflightstream/commands/boundary_conditions.yaml,sha256=Fp28w0TnsxQMXdt9xaQioiDdz2DC6sLEbRuLZXW3qbk,4521
|
|
12
|
+
pyflightstream/commands/ccs_wing_mesh.yaml,sha256=yLCLLLHMjPED3xJulSY6akXn-jB_hJ5Rpeam58eFMYg,2203
|
|
13
|
+
pyflightstream/commands/coordinate_systems.yaml,sha256=E8i5FWyn8A5tvg0mXzdmtmpUU5m6jnkB2KKgDFufyC4,3169
|
|
14
|
+
pyflightstream/commands/file_io.yaml,sha256=o-Z1y_YRdCTH4So9LMJQ1brX7bmGjItEOXb4zdveuKc,2567
|
|
15
|
+
pyflightstream/commands/mesh_import_export.yaml,sha256=sK3vcwSOQlyfwXqUKEmnzVNYtU4hjVH_2r6YNRugOQ0,2271
|
|
16
|
+
pyflightstream/commands/motion_definitions.yaml,sha256=YNe-pmc-2_ag--JsK_Xoo4k4UzBFb71URe2kBGTA4oo,5176
|
|
17
|
+
pyflightstream/commands/probe_points.yaml,sha256=eB-ddRIV6nl-mW2ONFQPVnv4Ibk5jvv8rTCXM1qXzmg,3890
|
|
18
|
+
pyflightstream/commands/runtime_settings.yaml,sha256=SJNi_bdY6z44IRPrpWoPIjg7cehT2v9keXpeZOsII74,4623
|
|
19
|
+
pyflightstream/commands/scenes.yaml,sha256=FTvudHFNFJ3IT1Hch7RsFuHCHwsnM5tvtFitHyft3s4,468
|
|
20
|
+
pyflightstream/commands/script_controls.yaml,sha256=mPBWPchbgUvD9JimXBYT7hhSMktWxoNa5hv5qztzv2k,1155
|
|
21
|
+
pyflightstream/commands/simulation_controls.yaml,sha256=Nkxmprc-mtXAy74rk0fhYWkjcLSPyJuCCqxl717ySO4,943
|
|
22
|
+
pyflightstream/commands/solver_analysis.yaml,sha256=ohUu3u7ZvzJGUOnZB6bjwODkzUVMweLcoiX4wxYBIJQ,3623
|
|
23
|
+
pyflightstream/commands/solver_export.yaml,sha256=lysFWe0h4rjazyCLx_XJ1xJxkDS2cXTrQ9TnwTpZXAg,3981
|
|
24
|
+
pyflightstream/commands/solver_initialization.yaml,sha256=G2-5YqZTwmcef4PxwrvKvk2kSCxcBDkXMV-Lz5yQqGA,3140
|
|
25
|
+
pyflightstream/commands/solver_settings.yaml,sha256=RJ9NpNbSJUMvzI0FYm5X3GViw_hVnXvu_3IlUV7K4-g,3780
|
|
26
|
+
pyflightstream/commands/streamlines.yaml,sha256=X1Qk3urRFgianRUbe9kK62VbDiykIkAXACc3vV1YHEA,1835
|
|
27
|
+
pyflightstream/commands/surface_sections.yaml,sha256=-Z5n6FBl-deQ_5_D4kVJ8bm9YgSSWG9TjX1X5c39UfU,4647
|
|
28
|
+
pyflightstream/commands/sweeper.yaml,sha256=EGD12KKo929iRHbIuLF5IBcdXxtxAADGQLersjdkjUU,3021
|
|
29
|
+
pyflightstream/commands/unsteady_solver.yaml,sha256=yXrJzkFiBlDRwEDJUUGSfAfY842_CrBX8_0CxChXFeU,2152
|
|
30
|
+
pyflightstream/commands/volume_sections.yaml,sha256=C3mPokKBnTEYBIxUJTji_TatYAZe_6Rm09jtTr1gVeo,3892
|
|
31
|
+
pyflightstream/farfield/__init__.py,sha256=6i4O1aT893Ufz_jQdmThGCf8I4Ead8jUVmI4Gw7Cb44,22317
|
|
32
|
+
pyflightstream/files/__init__.py,sha256=QLQCKZZ0tkdI4LlXII_iDo4nYRfqu9gCXjsA1z3ru3M,13683
|
|
33
|
+
pyflightstream/fsi/__init__.py,sha256=Pd8X4PHJXETlDdXqX6Zw-5A8Ms7Q5HWhL7znYclq50A,2534
|
|
34
|
+
pyflightstream/fsi/beam.py,sha256=oHAv_L13-HomFTq0-i5YBuZDvsx1BsMoeEvoZUhECX8,16258
|
|
35
|
+
pyflightstream/fsi/centrifugal.py,sha256=ucBsDQykuHZ2N9pNoel3Gkp8xZKCPf9TWdRq7ixXxkc,15137
|
|
36
|
+
pyflightstream/fsi/cli.py,sha256=zcapJU7U9JR45Xv0eVRB5bLwj_y-mbINhDaejmUP0xU,8891
|
|
37
|
+
pyflightstream/fsi/config.py,sha256=zDwEBF45yyFVEdQ_EhIVQCJMRzRuozfKMof6Lg6XcmM,13038
|
|
38
|
+
pyflightstream/fsi/driver.py,sha256=bec89tHusOTVMcmTtb7xMI-6oWjaqVgXC76r2MX2p2Q,20390
|
|
39
|
+
pyflightstream/fsi/kinematics.py,sha256=-SCgTss3Lw255V70KSbMWl0tze0scfXmTZeDEggJg2c,6166
|
|
40
|
+
pyflightstream/fsi/loads.py,sha256=NLWGlGZaAaQHU6amjxnS2OcpAcFIKr8NDWC8ETktydk,30977
|
|
41
|
+
pyflightstream/fsi/nodes.py,sha256=1U7z6Qi421vBkmHX8ILL-hdo550UqvaVzydrereFB2s,18922
|
|
42
|
+
pyflightstream/fsi/state.py,sha256=0uNFLY3bx5KVITpEjE2VNmRfRPEgxpN2iF0IsfmYk-Q,6318
|
|
43
|
+
pyflightstream/post/__init__.py,sha256=7uPjAeVmeFqCx54wnQ91xs-_2p_YRVdQgegCO_J8qMA,689
|
|
44
|
+
pyflightstream/post/writers.py,sha256=a6qIWJlazcbCyfVFq7YOfm_BH-7z_WIs4w2x4Q_kGw8,6578
|
|
45
|
+
pyflightstream/probes/__init__.py,sha256=XhI-Zg0rGNsowM2jnPxv4E4T0EdVDB7KuLg9LxO1BWk,17103
|
|
46
|
+
pyflightstream/probes/geometry.py,sha256=cLl4ODkFmvm6IRTCYMSS5z1oq9QEy4rnna0_QeeT9Do,10676
|
|
47
|
+
pyflightstream/probes/planar.py,sha256=ZfLZCxw0jcHnAdv6ndlNIUPyOYkqyDkhOPhfcUWWJmI,18626
|
|
48
|
+
pyflightstream/qa/__init__.py,sha256=pUQVOQZi7UDw2elps3481EkSFzVmQfRmxf366NrRFVg,1555
|
|
49
|
+
pyflightstream/qa/cli.py,sha256=OA5jtnwBvf4ZinWXX2iIzAkReA7Xqk09Uutv7WQq-Ko,12933
|
|
50
|
+
pyflightstream/qa/compat.py,sha256=C1laPeX5Wid-FCZpIPPmgdDgEmx-Jypx-jVAN6YrlWc,10966
|
|
51
|
+
pyflightstream/qa/drift.py,sha256=FtQhfp-ydxJk7dhkOML-jOvbtOVhFIHW4JDPZcvGe9o,14092
|
|
52
|
+
pyflightstream/qa/geometry.py,sha256=ReSsf_xafFf2TzBD3WEcBvfb9Qwc4vDkyEouM4fQRgE,15819
|
|
53
|
+
pyflightstream/qa/physics.py,sha256=OZsoxWXfsyMtxVaQw2P6JIL44-HRIBYEVZkZ-OK_US8,66198
|
|
54
|
+
pyflightstream/qa/probes.py,sha256=oQDaux50BdLEZL6yVP1jkKiWewYUYHlp204QxQyOy0U,38373
|
|
55
|
+
pyflightstream/qa/specs.py,sha256=jcmjluSUmo5ZJZwNUisP3qmZ31eJD70Yq2pOrurQ3OA,47679
|
|
56
|
+
pyflightstream/qa/references/PHY-01.yaml,sha256=MraZQBksXoLDHYvHtMR-Tr9lUvdKogQSPsVbKyeQtYg,817
|
|
57
|
+
pyflightstream/qa/references/PHY-02.yaml,sha256=zEuujBxgOYHH47kZB4oe3Dxp7PRPXWXjWHGBe-kkjAE,721
|
|
58
|
+
pyflightstream/qa/references/PHY-05.yaml,sha256=h5xQsnDYbF1bCHF8tda3jiSLEE3dsG3ENlOIq_GQN-g,805
|
|
59
|
+
pyflightstream/qa/references/PHY-06.yaml,sha256=sCZFupHP9fPeppecwkXpEhU8zTVM9YNtqgqNBNH1ghk,2209
|
|
60
|
+
pyflightstream/qa/references/SMI-01.yaml,sha256=RjEpKGri327id_vsHNKeNtwHMvbXsYPKfQB6IC9nNj8,628
|
|
61
|
+
pyflightstream/qa/references/SMI-02.yaml,sha256=Unu1pau3sCAf-30msOjch0BBIhLIyVH57cqbxG_4Tl8,650
|
|
62
|
+
pyflightstream/results/__init__.py,sha256=10d2t-Q-WsihEdflI0IQo1TFH4P-mTr7h1OwzIfcCtQ,20882
|
|
63
|
+
pyflightstream/run/__init__.py,sha256=gFkOJ4xlMkKgIQvkXYBiWMOVFzj9qccwtstAj2MJP_k,25683
|
|
64
|
+
pyflightstream/script/__init__.py,sha256=ABAEbSLN6ZZhrImH2FFR6Czvmjwit0I2oUjnQkj1t7c,19139
|
|
65
|
+
pyflightstream/script/helpers.py,sha256=ObhdaWV0I6KeyV4-vuomPZwwHP8s-obZXttdWZ0cxsg,32616
|
|
66
|
+
pyflightstream-0.2.0.dist-info/licenses/LICENSE,sha256=7o5R7Nl3SszAFmZ8W9juTDjFOADLPELVBh8X6L7lpG0,1070
|
|
67
|
+
pyflightstream-0.2.0.dist-info/METADATA,sha256=GUSBlMM7iV5ghHnUMvaUWHjTB6YTjsbOxQfyNd2bhg0,3408
|
|
68
|
+
pyflightstream-0.2.0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
|
|
69
|
+
pyflightstream-0.2.0.dist-info/entry_points.txt,sha256=tsBrgOAZnvvIp5nXb7SSyq00asFdWEw2pHGJW9nwQFM,94
|
|
70
|
+
pyflightstream-0.2.0.dist-info/top_level.txt,sha256=0zB1FRd9vtcgUePn_8UtSjfiHj-IViFq1GmGPtfyTco,15
|
|
71
|
+
pyflightstream-0.2.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Geovana Neves
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pyflightstream
|