Skip to main content

Airspeed conversions (true/calibrated/equivalent/Mach), atmospheric data, and more with built-in unit checking.

Project description

About

Airspeed conversions (true/calibrated/equivalent/Mach), atmospheric data, and more with built-in unit checking. Specific sub-modules include:

  • flightcondition : input altitude to compute common flight condition data. Easily swap between Mach number, true airspeed, calibrated airspeed, and equivalent airspeed. Includes atmospheric data.

  • atmosphere : input altitude to compute 1993 International Standard Atmosphere data. Many relevant, derived quantities are included.

  • units : built-in unit-checking and conversion using pint package.

See examples below for usage!

Author

Matthew C. Jones <matt.c.jones.aoe@gmail.com>

Installation

Install Commands

Install using the pip package-management system. The easiest method is to open the terminal and run:

pip install flightcondition

Alternatively, manually download the source code, unpack, and run:

pip install <path/to/flightcondition>

Dependencies

  • numpy: package for scientific computing.

  • pint: package for dealing with units.

Usage

In a Python script or an ipython notebook, import all utilities with,

from flightcondition import *

or more explicitly as shown in the following examples.

Flight Condition

The Flightcondition class can be used to compute and interact with common flight condition data. Access flight condition quantities through altitude, speed, and length objects.

Outputs include:

  1. altitude (atmospheric) quantities - see atmosphere below.

  2. speed quantities and conversions, for example: Mach number mach, True airspeed TAS, Calibrated airspeed CAS, and Equivalent airspeed EAS.

  3. length quantities, for example: Reynolds number Re and Reynolds number per-unit-length Re_by_ell.

And other lesser-used quantities! See the source code or explore interactively.

Usage:

from flightcondition import FlightCondition, unit, dimless

# Compute flight conditions for a scalar or array of altitudes
altitudes = [0, 10, 33.5] * unit('kft')
fc = FlightCondition(altitudes, EAS=300*unit('knots'))

# Print flight condition data:
print(f"{fc}")

# Print extended output:
print(f"\n{fc.tostring(full_output=True)}")

# Access flight speed formats individually
M = fc.speed.M
U_inf, U_CAS, U_EAS = fc.speed.TAS, fc.speed.CAS, fc.speed.EAS

# Access atmospheric data alone (see Atmosphere class for options)
alt = fc.altitude  # access Atmosphere object 'altitude'
p, T, rho, nu, a = alt.p, alt.T, alt.rho, alt.nu, alt.a

# Input true/calibrated/equivalent airspeed or Mach number
fc_TAS = FlightCondition(altitudes, TAS=300*unit('knots'))
fc_CAS = FlightCondition(altitudes, CAS=300*unit('knots'))
fc_EAS = FlightCondition(altitudes, EAS=300*unit('knots'))
fc_M = FlightCondition(altitudes, M=0.4535*dimless)

# Specify desired units on input and output
altitudes_in_km = [0, 3.048, 10.2108] * unit('km')
lengthscale = 60 * unit('in')  # arbitrary length scale of interest
fc_other_units = FlightCondition(altitudes, EAS=154.33*unit('m/s'),
                                ell=lengthscale)
U_TAS = fc_other_units.speed.TAS
print(f"\nThe true airspeed in m/s is {U_TAS.to('m/s'):.5g}")
print(f"The true airspeed in km/s is {U_TAS.to('km/s'):.5g}")

# Compute additional derived quantities (see class for all options)
print(f"\nThe dynamic pressure in psi is "
    f"{fc.speed.q_inf.to('psi'):.5g}")
print(f"The Reynolds number is {fc.length.Re:.5g}")
print(f"The Reynolds number per-unit-length [1/in] is "
    f"{fc.length.Re_by_ell.to('1/in'):.5g}")

Atmosphere

The Atmosphere class can be used to compute and interact with common standard atmosphere data and derived quantities.

Outputs include:

  • Pressure p

  • Temperature T

  • Density rho

  • Sound speed a

  • Dynamic viscosity mu

  • Kinematic viscosity nu

  • Thermal conductivity k

  • Layer name layer.name

  • Geometric altitude h

  • Geopotential altitude H

  • Acceleration due to gravity g

  • Mean free path MFP

Usage:

from flightcondition import Atmosphere, unit

# Compute atmospheric data for a scalar or array of altitudes
h = [0.0, 12.7, 44.2, 81.0] * unit('km')
atm = Atmosphere(h)

# Print abbreviated output:
print(f"\n{atm}")

# Print extended output in US units:
print(f"\n{atm.tostring(full_output=True, US_units=True)}")

# See also the linspace() function from numpy, e.g.
# h = linspace(0, 81.0, 82) * unit('km')

# Access individual properties and convert to desired units: "
p, T, rho, nu, a = atm.p, atm.T, atm.rho, atm.nu, atm.a
print(f"\nThe pressure in psi is {p.to('psi'):.5g}")

# Compute additional properties such as thermal conductivity,
# mean free path, and more (see class for all options)
print(f"\nThe thermal conductivity is {atm.k:.5g}"
    f"\nThe mean free path = {atm.MFP:.5g}")

Units

Conveniently input, output, and convert units using pint units.

from flightcondition import unit, printv

h = 33 * unit('km')
print(h.to('kft'))
# >>> 108.26771653543307 kft
printv(h, to='kft')
# >>> h = 108.27 kft

U_inf = 20 * unit('knots')
rho_inf = 1.225 * unit('kg/m^3')
q_inf = 0.5*rho_inf*U_inf**2
printv(q_inf, to='psi')
# >>> q_inf = 0.0094042 psi

Note that pint does not support conflicting unit registries so avoid interactions between flightcondition.unit and a separate pint.UnitRegistry.

Command Line Interface

It is also possible to compute flight conditions from the command line for convenience but with limited functionality. Run flightcondition -h for help.

An example call is provided for the flight condition of 233 knots-equivalent-airspeed at 23 kilo-feet with a length scale of 4 feet:

flightcondition --alt 23 kft --EAS 233 kt --ell 4 ft

License

flightcondition is licensed under the MIT LICENSE. See the LICENSE document.

Disclaimer

The software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.

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

flightcondition-22.7.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

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

flightcondition-22.7-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file flightcondition-22.7.tar.gz.

File metadata

  • Download URL: flightcondition-22.7.tar.gz
  • Upload date:
  • Size: 18.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.7

File hashes

Hashes for flightcondition-22.7.tar.gz
Algorithm Hash digest
SHA256 3380375027f117b492ae3dccf5dd87445fb2726949d608d1d7ab0d14e184c994
MD5 8732f5a748290d33cdce90c0241ad943
BLAKE2b-256 f01bd7e39866184598c9ec938a4ed80f58697729b9e90eacf02e0f760472b726

See more details on using hashes here.

File details

Details for the file flightcondition-22.7-py3-none-any.whl.

File metadata

  • Download URL: flightcondition-22.7-py3-none-any.whl
  • Upload date:
  • Size: 19.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.7

File hashes

Hashes for flightcondition-22.7-py3-none-any.whl
Algorithm Hash digest
SHA256 727c3898b3aab0fa021ac043f1bba312e0c7425d11433c8045eb2d0b00c8c27b
MD5 fd95137f8d52cdd025520c8bb1e0ec6e
BLAKE2b-256 f7c71265a0e5e49590d147baf226a6205903e8123513a7d40a4ad89e5f9bfbcf

See more details on using hashes here.

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