Releases: jun9303/AirDbM-API
Release list
v0.2.1
Release Notes: AirDbM-API v0.2.1
This is a patch release addressing two minor issues reported against v0.2.
See the repository's README document for detailed information.
Bug Fixes in v0.2.1
1. Parallel pickle data was truncated Crash (12-Baseline Set)
- Problem: Under multiprocessing, parallel worker processes could read the cached airfoil database (
airfoilDB/_db.pkl) — or, forpip-installed builds, the shared working-cache copy of it — while another worker was still writing/copying it. A worker would then observe a partially written pickle and crash withpickle data was truncated/EOFError: Ran out of input. Because it is a timing-dependent race, it surfaced intermittently once the full 12-baseline set was in play. - Solution: The database cache is now written atomically (staged to a temporary file, then atomically renamed into place), so readers never observe a partial file. Any unreadable, truncated, or corrupt cache — including a pre-existing one left by an earlier build — is transparently rebuilt from the raw
.datfiles instead of raising, and a partial rebuild is never persisted (so the cache cannot be poisoned). Forpip-installed builds, the bundled database is published to its working cache atomically and under a version-scoped path, so upgrades never reuse a stale or corrupt cache. Parallel evaluation across the full baseline set is now robust.
2. Non-Negative Stall Margin Hardening
-
Problem: While v0.2 already searched for stall at or beyond the peak lift-to-drag angle, the non-negativity of the reported stall margin (
$\Delta\alpha$ ) was not enforced at the boundary consumed by an optimizer. Small floating-point noise (or a stale/foreign metrics payload) could in principle surface as a tiny negative value. -
Solution: The physical non-negativity of the stall margin is now enforced at the objective boundary in addition to the computation site, and sub-degree floating-point noise is snapped to exactly
0.0.
Pre-built Wheel Binary for Seamless Usage
A pre-built wheel binary (airdbm_api-0.2.1-py3-none-any.whl) is attached to this release. Installing via pip is highly recommended as the wheel is entirely self-contained and includes:
- Built-in Baseline Data: The 12 optimal baseline airfoils established in our JCDE 2026 paper.
- XFOIL Apptainer Image: An encapsulated Ubuntu 22.04 container ready to execute XFOIL consistently.
By using this wheel, you can run the API without any complex environment building. The only prerequisites are Python (tested with 3.10.12) and Apptainer.
Unless you explicitly specify custom paths for the database (airfoil_db_dir) or the container (XFOIL_APP), the wheel-installed package will automatically default to its built-in baseline data and the hard-coded XFOIL Apptainer image.
How to Deploy AirDbM-API
You can integrate the API into your workflow in two ways:
1. Install via pip (Hassle-Free Method)
- Download the attached
.whlfile and install it directly via pip.
pip install airdbm_api-0.2.1-py3-none-any.whl- Once installed, you can call the API directly from any directory without managing source code paths:
from airdbm_api import TestAirfoils
...2. Run from Source
If you prefer to maintain the source code directly:
- Download the source code entirely.
git clone https://github.com/jun9303/AirDbM-API.git
cd AirDbM-API- Follow the setup and installation process outlined in the README document (including building the apptainer image via
make xfoil-apptainer-build).
pip install -r requirements.txt
make xfoil-apptainer-build- Specify your Python path (
PYTHONPATH) to the source code directory, and call the function in your script:
from airdbm_api import TestAirfoils
...Customizing Airfoil Baselines
In both installation cases, if you wish to evaluate your own geometries or customize the AirDbM baselines, please refer to the Customizing Airfoil DbM section in the README document.
v0.2
Release Notes: AirDbM-API v0.2
We are excited to announce the release of AirDbM-API v0.2!
See the repository's README document for detailed information.
Bug Fixes in v0.2
1. Naming (80-Char Limit Fix)
- Problem: Morphed airfoils named with multiple weights (e.g. 12 weights formatted to 4 decimals) generated Selig
.datfile titles that exceeded the strict 80-character limit of Fortran. This caused XFOIL's internal parser to crash or deadlock. - Solution: Airfoil names are now formatted with 2-decimal weights and strictly capped at 70 characters. This preserves identification accuracy while ensuring absolute compatibility with XFOIL.
2. Physical Stall Margin Validation
- Problem: Stall margins were calculated searching from index 1. Minor low-angle wiggles in numerical polar curves were sometimes misdetected as stall, resulting in mathematically impossible negative stall margins.
-
Solution: The stall search range now begins at or after the maximum lift-to-drag angle of attack (
$\alpha_{C_l/C_d \text{ max}}$ ). If no peak is found, it falls back to the maximum of the peak efficiency angle and the absolute peak lift angle. This mathematically guarantees that$\alpha_{\text{stall}} \ge \alpha_{\text{best}}$ and that stall margin ($\Delta\alpha$ ) remains strictly non-negative under all conditions.
Pre-built Wheel Binary for Seamless Usage
For a hassle-free setup, we have attached a pre-built wheel binary (airdbm_api-0.2.0-py3-none-any.whl) to this release. Installing via pip is highly recommended as the wheel is entirely self-contained and includes:
- Built-in Baseline Data: The 12 optimal baseline airfoils established in our JCDE 2026 paper.
- XFOIL Apptainer Image: An encapsulated Ubuntu 22.04 container ready to execute XFOIL consistently.
By using this wheel, you can run the API without any complex environment building. The only prerequisites are Python (tested with 3.10.12) and Apptainer.
Unless you explicitly specify custom paths for the database (airfoil_db_dir) or the container (XFOIL_APP), the wheel-installed package will automatically default to its built-in baseline data and the hard-coded XFOIL Apptainer image.
How to Deploy AirDbM-API
You can integrate the API into your workflow in two ways:
1. Install via pip (Hassle-Free Method)
- Download the attached
.whlfile and install it directly via pip.
pip install airdbm_api-0.2.0-py3-none-any.whl- Once installed, you can call the API directly from any directory without managing source code paths:
from airdbm_api import TestAirfoils
...2. Run from Source
If you prefer to maintain the source code directly:
- Download the source code entirely.
git clone https://github.com/jun9303/AirDbM-API.git
cd AirDbM-API- Follow the setup and installation process outlined in the README document (including building the apptainer image via
make xfoil-apptainer-build).
pip install -r requirements.txt
make xfoil-apptainer-build- Specify your Python path (
PYTHONPATH) to the source code directory, and call the function in your script:
from airdbm_api import TestAirfoils
...Customizing Airfoil Baselines
In both installation cases, if you wish to evaluate your own geometries or customize the AirDbM baselines, please refer to the Customizing Airfoil DbM section in the README document.
v0.1.1
Release Notes: AirDbM-API v0.1.1
We are excited to announce the initial release (v0.1.1) of AirDbM-API! See the repository's README document for detailed information.
Main API Function
The core of the API is centered around the TestAirfoils function, which can be easily imported into your optimization loop or script:
from airdbm_api import TestAirfoilsPre-built Wheel Binary for Seamless Usage
For a hassle-free setup, we have attached a pre-built wheel binary (airdbm_api-0.1.0-py3-none-any.whl) to this release. Installing via pip is highly recommended as the wheel is entirely self-contained and includes:
- Built-in Baseline Data: The 12 optimal baseline airfoils established in our JCDE 2026 paper.
- XFOIL Apptainer Image: An encapsulated Ubuntu 22.04 container ready to execute XFOIL consistently.
By using this wheel, you can run the API without any complex environment building.
The only prerequisites are Python (tested with 3.10.12) and Apptainer.
Unless you explicitly specify custom paths for the database (airfoil_db_dir) or the container (XFOIL_APP), the wheel-installed package will automatically default to its built-in baseline data and the hard-coded XFOIL Apptainer image.
How to Deploy AirDbM-API
You can integrate the API into your workflow in two ways:
1. Install via pip (Hassle-Free Method)
- Download the attached
.whlfile and install it directly via pip.
pip install airdbm_api-0.1.1-py3-none-any.whl- Once installed, you can call the API directly from any directory without managing source code paths:
from airdbm_api import TestAirfoils
...2. Run from Source
If you prefer to maintain the source code directly:
- Download the source code entirely.
git clone https://github.com/jun9303/AirDbM-API.git
cd AirDbM-API- Follow the setup and installation process outlined in the README document (including building the apptainer image via
make xfoil-apptainer-build).
pip install -r requirements.txt
make xfoil-apptainer-build- Specify your Python path (
PYTHONPATH) to the source code directory, and call the function in your script:
from airdbm_api import TestAirfoils
...Customizing Airfoil Baselines
In both installation cases, if you wish to evaluate your own geometries or customize the AirDbM baselines, please refer to the Customizing Airfoil DbM section in the README document.