aerocfd_cli
Utilities for packaging CFD simulation folders into a single .liufs archive.
This package scans a simulation directory tree, classifies leaf folders, and then:
- Encodes cutplane image sequences (
cfd_images) into videos usingffmpeg - Converts
3d_viewsimages into.webpfor additional compression - Writes a
manifest.jsondescribing packaged content - Produces a ZIP-based
.liufsarchive - Can append a new run into an existing
.liufsarchive
Installation
Via the aerocfd package (recommended)
PyPI project page: https://pypi.org/project/aerocfd/
Install CLI mode:
pip install "aerocfd[cli]"
Install full mode (CLI + desktop app dependencies):
pip install "aerocfd[full]"
From release artifacts
Install from a wheel file (available in GitHub releases):
pip install "aerocfd-1.1.0-py3-none-any.whl[cli]"
As a package dependency
Add to your requirements.txt:
aerocfd[cli]
Or in pyproject.toml:
dependencies = [
"aerocfd[cli]",
]
Requirements
- Python 3.12+
ffmpegavailable onPATH- Dependencies automatically installed:
opencv-python,rich
For development, install with optional dev dependencies from the project root:
pip install -e ".[dev]"
CLI Usage
After installation, use either:
aerocfd <source_dir> [options]
Or from the project root (if not installed using the editable install):
python -m aerocfd_cli <source_dir> [options]
Options
-o, --outputOutput.liufsfile path (default:<source>.liufs)--append-toExisting.liufsarchive to extend with the source directory as a new run--run-nameOverride the run name used when appending to an existing archive--fpsFPS for generated CFD videos (default:12)--extensionVideo extension for CFD videos (default:mp4)--webp-qualityWebP quality for3d_viewsconversion,0-100(default:80)--workersWorker threads for leaf processing, WebP conversion, and per-plane video encoding (default: auto)--include-unknownCopy files from unknown leaf folders into the package--log-levelMinimum event log level:info,warning, orerror(default:info)--progress-onlyShow only progress/ETA bar and suppress event log lines--quietDisable all terminal output, including progress and errors
Example
aerocfd /path/to/ER26-BL-0001 \
--output /path/to/ER26-BL-0001.liufs \
--fps 12 \
--extension mp4 \
--webp-quality 75
Python API
from aerocfd_cli.packager import append_run_to_liufs, build_liufs
archive_path = build_liufs(
source_dir="/path/to/ER26-BL-0001",
output_file="/path/to/ER26-BL-0001.liufs",
fps=12,
extension="mp4",
webp_quality=80,
include_unknown=False,
)
print(archive_path)
append_path = append_run_to_liufs(
source_dir="/path/to/new_run",
archive_file="/path/to/ER26-BL-0001.liufs",
)
print(append_path)
To append with a custom run name:
append_path = append_run_to_liufs(
source_dir="/path/to/new_run",
archive_file="/path/to/ER26-BL-0001.liufs",
run_name="run_02",
)
Folder Classification
Leaf folders are identified by filename patterns:
cfd_images: files likeX10X.png,Y5Y.png,Z120Z.png3d_views: view images liketop.png,front.png,iso_left_front_top.png- otherwise:
unknown
Notes
- If
ffmpegis missing, CFD video generation is skipped. webp_qualitytrades size for quality: lower values give smaller files.- Output archive includes
manifest.jsonwith metadata and packaged file references.
Metadata
Release files for aerocfd 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aerocfd-1.1.0.tar.gz | 88.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aerocfd-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 168.9 kB
Release files / aerocfd-1.1.0.tar.gz
| Download URL | aerocfd-1.1.0.tar.gz |
|---|---|
| Size | 88.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
620765be190dd1d7f71edb94b698026f218ee724255f763f1e7ff9de3706f1bf
|
|
BLAKE2b-256 checksum How to use checksums |
afcb376079bd0d4e1f9c01828fa230ce60d27580fb5ea1691beefee216a193b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency logRelease files / aerocfd-1.1.0-py3-none-any.whl
| Download URL | aerocfd-1.1.0-py3-none-any.whl |
|---|---|
| Size | 80.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1186fa8e37bb494e260ef149fd6737a32119af0844a61984206133ba7db10737
|
|
BLAKE2b-256 checksum How to use checksums |
b0f18ef959e71cc4b5b6797a5908f3aa087ad9a9fadf42e71763ae9a11b0216f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.
Transparency log