Skip to main content

Package CFD simulation folders into compressed .liufs archives with video-encoded cutplanes

Project description

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 using ffmpeg
  • Converts 3d_views images into .webp for additional compression
  • Writes a manifest.json describing packaged content
  • Produces a ZIP-based .liufs archive
  • Can append a new run into an existing .liufs archive

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+
  • ffmpeg available on PATH
  • 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, --output Output .liufs file path (default: <source>.liufs)
  • --append-to Existing .liufs archive to extend with the source directory as a new run
  • --run-name Override the run name used when appending to an existing archive
  • --fps FPS for generated CFD videos (default: 12)
  • --extension Video extension for CFD videos (default: mp4)
  • --webp-quality WebP quality for 3d_views conversion, 0-100 (default: 80)
  • --workers Worker threads for leaf processing, WebP conversion, and per-plane video encoding (default: auto)
  • --include-unknown Copy files from unknown leaf folders into the package
  • --log-level Minimum event log level: info, warning, or error (default: info)
  • --progress-only Show only progress/ETA bar and suppress event log lines
  • --quiet Disable 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 like X10X.png, Y5Y.png, Z120Z.png
  • 3d_views: view images like top.png, front.png, iso_left_front_top.png
  • otherwise: unknown

Notes

  • If ffmpeg is missing, CFD video generation is skipped.
  • webp_quality trades size for quality: lower values give smaller files.
  • Output archive includes manifest.json with metadata and packaged file references.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aerocfd-1.1.0.tar.gz (88.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aerocfd-1.1.0-py3-none-any.whl (80.0 kB view details)

Uploaded Python 3

File details

Details for the file aerocfd-1.1.0.tar.gz.

File metadata

  • Download URL: aerocfd-1.1.0.tar.gz
  • Upload date:
  • Size: 88.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aerocfd-1.1.0.tar.gz
Algorithm Hash digest
SHA256 620765be190dd1d7f71edb94b698026f218ee724255f763f1e7ff9de3706f1bf
MD5 4df79c37283ba6b5cfa8ae0aad30be32
BLAKE2b-256 afcb376079bd0d4e1f9c01828fa230ce60d27580fb5ea1691beefee216a193b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for aerocfd-1.1.0.tar.gz:

Publisher: release.yml on LiU-Formula-Student/LiUFS-AeroCFD

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file aerocfd-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: aerocfd-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 80.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for aerocfd-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1186fa8e37bb494e260ef149fd6737a32119af0844a61984206133ba7db10737
MD5 4155f041f74b4db35f80c07ae3df8d97
BLAKE2b-256 b0f18ef959e71cc4b5b6797a5908f3aa087ad9a9fadf42e71763ae9a11b0216f

See more details on using hashes here.

Provenance

The following attestation bundles were made for aerocfd-1.1.0-py3-none-any.whl:

Publisher: release.yml on LiU-Formula-Student/LiUFS-AeroCFD

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page