Skip to main content

Python GUI and API for generation, aerodynamic analysis, and shape optimization of parametric airfoil systems

Project description

pymead logo

Author: Matthew G Lauer

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

Welcome

To the documentation page for pymead, a Python GUI and API for generation, aerodynamic analysis, and shape optimization of parametric airfoil systems. This parametrization framework in its preliminary stage was 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."

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 comprises 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).

pressure coefficient contours of an aeropropulsive system

Installation

For access to both the API and GUI, pymead can be installed using the typical pip install pymead. There are several other installation options, including a standalone Windows installer. See the pymead installation page for more details.

How It Works

By using a well-defined parametrization framework, this airfoil system can be morphed or deformed in a variety of ways using changes in high-level design variables. These design variables are represented by pymead.core.param.DesVar objects in this framework, which have modifiable lower and upper bounds for optimization. This facilitates aerodynamic analysis, parametric sweeps, and even shape optimization.

dynamic modification of airfoil design variables

pymead has both an application programming interface (API) and a graphical user interface (GUI), either of which can be used to define airfoil geometries from basic geometries (like points, lines, and curves), implement geometric constraints, perform analysis using wrappers for XFOIL and MSES, match existing airfoils with Bézier curves, and even execute aerodynamic or aeropropulsive shape optimization studies. Check out the User Guide to learn how to use these features.

XFOIL analysis of the NACA 0012 airfoil

MSES analysis of the NASA SC20612 airfoil

Applications

It is the hope of the author that pymead 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.

One utility provided in this software package which may be useful in the start-up phase of airfoil design is pymead.optimization.airfoil_matching.match_airfoil(). This function allows the matching of a particular parametrization to any public airfoil geometry at airfoiltools.com using the gradient-based "SLSQP" optimizer. See the pymead gallery for more example applications.

Matching a NASA SC20612 airfoil (4x speed)

Acknowledgments

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

Contact Information

Author: Matthew G Lauer

Email: mlauer2015@gmail.com

Version Notes

2.0.0-alpha.0+

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.

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

pymead-2.0.0b13.tar.gz (8.0 MB view details)

Uploaded Source

Built Distribution

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

pymead-2.0.0b13-py3-none-any.whl (8.1 MB view details)

Uploaded Python 3

File details

Details for the file pymead-2.0.0b13.tar.gz.

File metadata

  • Download URL: pymead-2.0.0b13.tar.gz
  • Upload date:
  • Size: 8.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pymead-2.0.0b13.tar.gz
Algorithm Hash digest
SHA256 d39282c7ede06e730be8714dc4fedeff35fed96b5f179f56c29bd3db36be740b
MD5 a62f0252a918cb543321bd6ff4b1681d
BLAKE2b-256 b56058388ade20c25d2c3bfba7e97e5d0020907e6f0f7d6ae3cec374b1f12dc1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymead-2.0.0b13.tar.gz:

Publisher: publish-to-pypi.yml on mlau154/pymead

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

File details

Details for the file pymead-2.0.0b13-py3-none-any.whl.

File metadata

  • Download URL: pymead-2.0.0b13-py3-none-any.whl
  • Upload date:
  • Size: 8.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pymead-2.0.0b13-py3-none-any.whl
Algorithm Hash digest
SHA256 a7fa99e9f4c5955bbce296757ffc17e79737c2d4e82e812adafe2cae36b06bd6
MD5 4e8c1fe99cdcc6e791c8960f8492df03
BLAKE2b-256 2370424b5e5283da28e327b42d185c1c30bc6d3e656dce909ed4e08f454936ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymead-2.0.0b13-py3-none-any.whl:

Publisher: publish-to-pypi.yml on mlau154/pymead

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