Metadata-Version: 2.4
Name: pystormbird
Version: 0.9.0
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Scientific/Engineering
License-File: LICENSE
Summary: Python interface to the Stormbird library for simulating lifting surfaces.
Keywords: wind propulsion,lifting line,actuator line,aerodynamics
Home-Page: https://github.com/NTNU-IMT/stormbird
Author-email: Jarle Kramer <jarle.kramer@gmail.com>
License: GPL-3.0-only
Requires-Python: >=3.12
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Documentation, https://jarlekramer.github.io/stormbird_book_pages/
Project-URL: Homepage, https://github.com/NTNU-IMT/stormbird
Project-URL: Repository, https://github.com/NTNU-IMT/stormbird

# pystormbird

A Python interface to the Stormbird library for simulating lifting surfaces.

## Requirements

> **⚠️ Rust Toolchain Required**
>
> This package is distributed as source only and must be compiled during installation.
> You **must** have the Rust toolchain installed before installing this package.
>
> **Install Rust:** Visit [https://rust-lang.org/](https://rust-lang.org/)

## Installation

Once Rust is installed, install pystormbird with pip:

```bash
pip install pystormbird
```

Or install from source:

```bash
git clone https://github.com/NTNU-IMT/stormbird.git
cd stormbird/interfaces/pystormbird
pip install .
```

## Use Cases

- Running lifting line simulations through Python scripting
- Testing parts of the code that require plotting and visual inspection

## Implementation Details

The interface is made using [PyO3](https://pyo3.rs/). The layout and structure of the code follow the source code in Stormbird as much as possible.

The initialization of most classes is done using JSON strings, to avoid unnecessary maintenance of code. You can use Python's built-in `json` module for dictionaries, or use the [stormbird_setup](../stormbird_setup/) helper package.

It is not a goal to offer an interface to every aspect of the Stormbird library. Rather, an interface is only made when a specific use case has presented itself.

## Development

For a test build using cargo:
```bash
cargo build
```

To build a distributable wheel:
```bash
maturin build --release
```

