Skip to main content

pyflightstream

ci PyPI DOI

Version-aware, didactic Python driver for the FlightStream panel-method solver. Successor of the author's legacy research scripts. MIT licensed.

Status: v0.2.0 is public on PyPI with the archived release on Zenodo (DOI recorded in CITATION.cff). Development continues toward v0.3.0; CHANGELOG.md carries the release history.

pip install pyflightstream

A first taste, no solver required (build time is where errors surface):

from pyflightstream.commands import CommandNotInVersionError
from pyflightstream.script import Script

script = Script(version="26.12")  # the FlightStream version is explicit input
script.emit("NEW_SIMULATION")
script.emit("IMPORT", "METER", "STL", "wing.stl", clear=True)
script.emit("SOLVER_SET_AOA", 4.0)
script.emit("START_SOLVER")
print(script.render())  # validated ASCII script, ready for the solver

try:
    Script(version="26.0").emit("SOLVER_SET_AOA", 4.0)
except CommandNotInVersionError as error:
    print(error)  # refused: no recorded evidence for that version

The worked examples in examples/ take it from here to executed polars, campaigns, and coupled aeroelastic runs.

Optional extras: [fsi] (aeroelastic coupling, PyNiteFEA), [geom] (probe-survey geometry gating, trimesh/rtree/scipy), [plot] (matplotlib for the plotting examples).

Why this package

FlightStream is scripted through an ASCII command file, and the solver is under active development: the FlightStream team is responsive to user requests and works with intermediate hotfix builds that consolidate into stable releases. A fast-moving solver naturally means a scripting command set that evolves from version to version, faster than any single document can track. This package makes the FlightStream version an explicit input: every command it emits is validated against a per-version command database, and old versions are only ever added, never dropped, so campaigns stay reproducible across that evolution.

Every database entry carries a manual page citation, and its status per version (documented, verified, broken) can only be promoted by citing a committed probe report from a licensed machine. Nothing is guessed; the honest gaps are reported as such.

What ships

  • Command database with per-version evidence and a manual citation on every entry, browsable offline via pyflightstream.help() (including a manual-coverage section) and as a generated docs site; the compatibility matrix carries the live counts.
  • Validating script builder with curated helpers: phase ordering, didactic refusals at build time, entity labels (recipes can name frames, actuators, motions, and boundaries instead of raw indices), and a solver-setup provenance snapshot recording the effective value of every solver flag per run.
  • Campaign workspace: an input-artifact library (references, solver presets, boundary groups, geometries, profiles, executables by build id), a run manifest as the single identity authority, output naming templates, campaign pre-flight with zero solver time, and resumable incremental sweeps.
  • Runner and parsers: headless execution, anchor-based parsers for the solver outputs, and a pandas table layer (per-result tables, one wide row per run, whole-sweep DataFrame straight from the manifest).
  • Run-matrix support as a first-class interface: read, convert, pre-flight, and run the pipe-delimited 15-column matrix format.
  • Far-field probe surveys (planar grids, geometry gating, VTK/Tecplot writers, conservation ledgers on xarray) and an aeroelastic coupling subpackage (structural beam, coupled driver, replay harness).
  • Architecture overview from the live module docstrings via pyflightstream.overview().
  • Predictable surfaces: a declared-options registry (pyflightstream.options), one public exception catalog (pyflightstream.exceptions), test assertions with quantified reports (pyflightstream.testing), and the house conventions rendered by help().

Command-line tools

Tool Purpose
pyfs-qa Tier 2 command-validity probes, Tier 3 physics regression and cross-version drift, status promotion from committed reports
pyfs-workspace Initialize the managed campaign workspace tree
pyfs-matrix Convert and pre-flight run matrices
pyfs-fsi The structural executable of the aeroelastic coupling loop

Supported FlightStream versions

Registered: 26.000, 26.100, 26.120 (canonical 26.XXX scheme; the last digit indexes vendor hotfix builds). The ordered list in src/pyflightstream/commands/_meta.yaml is the only ordering authority. Evidence is strongest on 26.120 (probed on a licensed machine); 26.100 is partially backfilled from the manuals; the 26.000 column is honestly empty until probed. The compatibility matrix in the docs is generated from the database at build time.

What is each folder?

Folder Purpose in plain language
src/pyflightstream/ The package, one subpackage per pipeline stage (versions, commands, script, results, cases, run, workspace, post, qa, plus fsi, probes, farfield)
src/pyflightstream/commands/ The command database: what exists in which FlightStream version, with manual page citations
tests/ Tier 1 tests, runnable anywhere, no FlightStream needed
reports/ Committed evidence from licensed machines: command validity (compat), physics regression, drift, and research cards
docs/ Documentation source (ProperDocs); reference pages are generated from the database, never committed
examples/ Runnable example scripts in percent format
guide/ LaTeX source of the user guide (the built pdf never enters Git)
deprecated/ Discontinued public items, grouped here instead of scattered at the top level
.claude/skills/ Maintenance procedures (version updates, command additions, QA runs, releases)
_private/ Local only, never committed: FlightStream manuals, executables, research geometry

Development setup

pip install -e .[dev,fsi,geom]
pre-commit install
pytest

Tier 1 (the pytest suite) runs anywhere. Tier 2 (command validity probes) and Tier 3 (physics regression) require a local FlightStream license and are documented in CONTRIBUTING.md. The docs build with properdocs build --strict.

License

MIT. Contributions must be original or MIT-compatible; code derived from the AGPL pyFlightscript package is not accepted. See CONTRIBUTING.md.

Release files for pyflightstream 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyflightstream 0.3.0
File Size Uploaded
pyflightstream-0.3.0.tar.gz 337.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyflightstream 0.3.0
File Interpreter ABI Platform
pyflightstream-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 628.8 kB

Release files / pyflightstream-0.3.0.tar.gz

Download URL pyflightstream-0.3.0.tar.gz
Size 337.4 kB
Tags Source
SHA-256 checksum
How to use checksums
6209f968cee6491c47e7de26e29b3153f3fd2ca26fd25fb78c6014973d3866b5
BLAKE2b-256 checksum
How to use checksums
45725c946cf6918bc0ae3ce2956966781a342f40d3c2b304377706cd8031b131
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.0

Release files / pyflightstream-0.3.0-py3-none-any.whl

Download URL pyflightstream-0.3.0-py3-none-any.whl
Size 291.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6f9cdc7e121dd5ee3b668e2ef43068b95e0384360aae5a923c4d1bc1caec2807
BLAKE2b-256 checksum
How to use checksums
70d4ed644ec55456f3b262c80ffbda7df9d5712629550fd754a4c03450db4321
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.0

Release history Release notifications | RSS feed

0.27.0

2 release files

0.26.0

2 release files

0.25.1

2 release files

0.25.0

2 release files

0.24.0

2 release files

0.23.0

2 release files

0.22.0

2 release files

0.21.1

2 release files

0.21.0

2 release files

0.20.1

2 release files

0.20.0

2 release files

0.19.0

2 release files

0.18.1

2 release files

0.18.0

2 release files

0.17.0

2 release files

0.16.0

2 release files

0.15.0

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

This release

0.3.0 This release

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page