Skip to main content

pyairpar

Author: Matthew G Lauer

Source code can be found here. Documentation can be found here.

Welcome

To the documentation page for pyairpar, an object-oriented Python 3 package for single- and multi-element Bézier-parametrized airfoil design. This Bézier parametrization framework is being presented at the 2022 AIAA Aviation Conference in Chicago, IL under the title "A Parametrization Framework for Multi-Element Airfoil Systems Using Bézier Curves."

Image

Motivation

The creation of this package was motivated by a research aircraft application: the aerodynamic design of a propulsion-airframe-integrated commercial transport aircraft. The cross-section of a wing or fuselage with integrated propulsors can be represented, with some sacrifice in fidelity, as a quasi-2D multi-element airfoil system. This multi-element airfoil system is comprised of a main airfoil (either the fuselage or main airfoil element), a hub airfoil (representing the cross-section of an axisymmetric hub), and a nacelle airfoil (representing the cross-section of an axisymmetric nacelle).

Image

By using a well-defined parametrization framework, this airfoil system can be morphed or deformed in a variety of ways simply by changing the value of any of the input parameters. These parameters are represented by pyairpar.core.param.Param objects in this framework. Defining the airfoil system in this way provides an intuitive I/O interface for shape optimization or parametric sweeps.

In pyairpar, airfoils are comprised of a set of connected, arbitrary-order Bézier curves. Because Bézier curves have the property that they always pass through their starting and ending control points, Bézier curve "joints" can be used to force the airfoil surface to pass through a particular point in space. pyairpar forces all Bézier curve joints within an airfoil to be G0, G1, and G2 continuous, which is useful in general for surface smoothness and in particular for computational fluid dynamics (CFD) packages where a discontinuity in the curvature value at a point can cause undesired flow properties or even unconverged results.

Applications

It is the hope of the author that pyairpar is sufficiently flexible to be used for airfoil applications of varying complexities, from simple, single-airfoil design to high-fidelity, multi-element airfoil shape optimization. Other common multi-element airfoil systems, such as the high-lift configuration on an aircraft, are also target applications for this software package.

Image

One utility provided in this software package which may be useful in the start-up phase of airfoil design is pyairpar.utils.airfoil_matching.match_airfoil(). This modules allows the matching of a particular parametrization to any public airfoil geometry at airfoiltools.com using the gradient-based "SLSQP" optimizer.

Image

Acknowledgments

This work was supported by NASA under award number 80NSSC19M0125 as part of the Center for High-Efficiency Electrical Technologies for Aircraft (CHEETA). Logo courtesy of NASA.

Image

Contact Information

Author: Matthew G Lauer

Email: mlauer2015@gmail.com

Version Notes

1.1.1

  • Corrections to README.md for PyPi long project description (images not showing properly)

1.1.0

  • Made corrections on BaseAirfoilParams and AnchorPoint Args domains
  • Added support for zero-curvature anchor points using 180-degree curvature control arm angles (or 90-degree curvature control arm angles for the leading edge)
  • Added support for sharp-juncture anchor points with R=0 or R_{LE}=0. Adding multiple consecutive sharp juncture anchor points creates line segments. Adding sharp-juncture anchor points violates the principle of slope and curvature continuity, but may be useful in some cases.

Metadata

Release files for pyairpar 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyairpar 1.1.1
File Size Uploaded
pyairpar-1.1.1.tar.gz 39.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyairpar 1.1.1
File Interpreter ABI Platform
pyairpar-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 90.0 kB

Release files / pyairpar-1.1.1.tar.gz

Download URL pyairpar-1.1.1.tar.gz
Size 39.2 kB
Tags Source
SHA-256 checksum
How to use checksums
7098367e8f3056a1cf8b0d97c9d9b4ab8c5f65a420ae7ef03736a9738b6bba73
BLAKE2b-256 checksum
How to use checksums
27bf1d9670c44828c6e04951ad3473c9f7e664a1d1d203094ba6a76740263afb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.10.1

Release files / pyairpar-1.1.1-py3-none-any.whl

Download URL pyairpar-1.1.1-py3-none-any.whl
Size 50.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fce5ab3f85e0cbe43fb1f8e56a5098e408428bbbe8810f526750f42108fe12e1
BLAKE2b-256 checksum
How to use checksums
dc75881d7c1a3c862a7f5f923b0923526dc16647a96efb2b6c407130b490bfc3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.10.1

Release history Release notifications | RSS feed

This release

1.1.1 This release

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page