Metadata-Version: 2.4
Name: BuffaloPanel
Version: 0.2.0
Summary: Structured 2D panel-method tools for aerodynamic case setup, solution, and post-processing.
Author-email: "David D. Marshall" <ddmarsha@calpoly.edu>
License-Expression: GPL-3.0-only
Project-URL: Documentation, https://buffaloherd.codeberg.page/BuffaloPanelDocs
Project-URL: Repository, https://codeberg.org/BuffaloHerd/BuffaloPanel
Project-URL: Changelog, https://buffaloherd.codeberg.page/BuffaloPanelDocs/CHANGELOG.html
Project-URL: Issues, https://codeberg.org/BuffaloHerd/BuffaloPanel/issues
Project-URL: License, https://buffaloherd.codeberg.page/BuffaloPanelDocs/LICENSE.html
Keywords: aerodynamics,panel method,panel code,potential flow,computational aerodynamics
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering
Classifier: Typing :: Typed
Requires-Python: <3.14,>=3.12
Description-Content-Type: text/markdown
License-File: LICENSE.md
Requires-Dist: numpy==2.2.*
Requires-Dist: scipy==1.15.*
Requires-Dist: matplotlib==3.10.*
Requires-Dist: BuffaloCore==0.2.*
Requires-Dist: BuffaloWings==0.3.*
Requires-Dist: PyYAML==6.0.*
Requires-Dist: PyQt6==6.11.*
Requires-Dist: textual==8.2.*
Provides-Extra: tests
Requires-Dist: pytest==8.3.*; extra == "tests"
Requires-Dist: coverage[toml]==7.8.*; extra == "tests"
Requires-Dist: pytest-cov==6.3.*; extra == "tests"
Provides-Extra: docs
Requires-Dist: sphinx==8.2.*; extra == "docs"
Requires-Dist: sphinx-rtd-theme==3.0.*; extra == "docs"
Requires-Dist: myst-parser==5.0.*; extra == "docs"
Requires-Dist: linkify-it-py==2.0.*; extra == "docs"
Provides-Extra: examples
Dynamic: license-file

# Buffalo Panel

[![CI][ci-badge]][ci-link]
[![Docs][docs-badge]][docs-link]
[![License][license-badge]][license-link]
[![PyPI][pypi-badge]][pypi-link]

Buffalo Panel is an early-stage Python library for structured 2D panel-method workflows in aerodynamics.
It currently focuses on case definition, solving, and post-processing for panelized airfoil problems, with small CLI, GUI, and TUI applications built around the same structured case schema.

## What It Can Do Today

- Define simulation cases with typed Python dataclasses and YAML or JSON files.
- Load structured airfoil cases and solve the current 2D Hess-Smith workflow.
- Save solved artifacts for later inspection and post-processing.
- Export integrated coefficients and optional surface-quantity CSV data.
- Explore element influence fields and diagnostic views through example scripts.
- Reuse shared Buffalo ecosystem foundations such as numeric typing, diagnostics, and Buffalo Wings airfoil definitions.

## How The Apps Fit Together

Buffalo Panel currently treats the structured case file as the source of truth.

- `panel2d_tui` helps browse and edit the case structure in a terminal UI.
- `panel2d_gui` provides a tree-based editor plus interactive geometry, surface, and flow-field views.
- `panel2d_cli run` solves one case file and writes one solved artifact.
- `panel2d_cli inspect` reviews artifact metadata and can reconstruct integrated results from the command line.

The normal workflow is:

1. Create or edit a case file.
2. Run the case to produce a solved artifact.
3. Inspect the artifact in the CLI or load it in the GUI for exploration.

## Installation

Install from PyPI:

```bash
pip install BuffaloPanel
```

For local development with the repository-managed toolchain:

```bash
uv sync --extra docs
```

## Quick Start

Run one of the packaged examples from the repository root:

```bash
panel2d_cli run examples/naca0012_designation.yaml
panel2d_cli inspect examples/naca0012_designation.solution.yaml --include-results
```

You can also use the Python API directly:

```python
from buffalo_panel.config import load_panel_case, solve_panel_case

case = load_panel_case("examples/naca0012_designation.yaml")
results = solve_panel_case(case)

print(results.integrated.cl_pressure)
```

## Documentation

The main documentation lives at [buffaloherd.codeberg.page/BuffaloPanelDocs][docs-link].
Useful starting points are:

- [Getting started][getting-started-link]
- [First case workflow][first-case-link]
- [App workflow overview][app-overview-link]
- [Project status][project-status-link]
- [CLI reference][cli-link]
- [Examples][examples-link]
- [API reference][api-link]

## Project Status

The library and apps are still in early development.
The core structured-case workflow and the current 2D Hess-Smith and lumped-vortex paths are usable, but the public API and app behavior should still be expected to change as the project grows.

## Contributing

Contributions, issue reports, and documentation improvements are welcome.
See [the contributing guide][contributing-link] for development setup and workflow notes.

## License

Buffalo Panel is released under the [GNU General Public License v3.0 only][license-text-link].

[ci-badge]: https://codeberg.org/BuffaloHerd/BuffaloPanel/actions/workflows/ci.yaml/badge.svg?branch=main
[ci-link]: https://codeberg.org/BuffaloHerd/BuffaloPanel/actions
[docs-badge]: https://img.shields.io/badge/docs-online-blue
[docs-link]: https://buffaloherd.codeberg.page/BuffaloPanelDocs
[license-badge]: https://img.shields.io/badge/license-GPL--3.0--only-yellow
[license-link]: https://buffaloherd.codeberg.page/BuffaloPanelDocs/LICENSE.html
[pypi-badge]: https://img.shields.io/pypi/v/BuffaloPanel
[pypi-link]: https://pypi.org/project/BuffaloPanel/
[contributing-link]: https://codeberg.org/BuffaloHerd/BuffaloPanel/src/branch/main/CONTRIBUTING.md
[license-text-link]: https://codeberg.org/BuffaloHerd/BuffaloPanel/src/branch/main/LICENSE.md
[getting-started-link]: https://buffaloherd.codeberg.page/BuffaloPanelDocs/docs/getting_started.html
[first-case-link]: https://buffaloherd.codeberg.page/BuffaloPanelDocs/docs/workflows/workflow_first_case.html
[app-overview-link]: https://buffaloherd.codeberg.page/BuffaloPanelDocs/docs/app_overview.html
[project-status-link]: https://buffaloherd.codeberg.page/BuffaloPanelDocs/docs/project_status.html
[cli-link]: https://buffaloherd.codeberg.page/BuffaloPanelDocs/cli/index.html
[examples-link]: https://buffaloherd.codeberg.page/BuffaloPanelDocs/examples/index.html
[api-link]: https://buffaloherd.codeberg.page/BuffaloPanelDocs/api/modules.html
