Skip to main content

No project description provided

Project description

Aircraft Operating Costs Calculator

doc_calculator is a Python package designed to calculate Direct Operating Costs (DOC) and Indirect Operating Costs (IOC) for short-haul and medium-haul aircraft. It supports both regional and large transport categories, and includes modules for hybrid-electric aircraft configurations.

Features

  • Compute Direct Operating Costs (DOC) and Indirect Operating Costs (IOC)

  • Supports both conventional and hybrid-electric propulsion systems

  • Cost modules for:

    • Fuel, Electricity and Hydrogen consumption
    • Financial costs anlsysis including Depreciation, Interests and Insurance
    • Charges and Fees:
      • Landing
      • Payload Handling
      • Navigation
      • Noise Emissions
      • CO Emissions
      • NOx Emissions
      • CO2 Emissions (EU ETS)
    • Maintenance costs for:
      • Airframe
      • Turboprop Engines
      • Propulsive Batteries
      • Fuel Cells
      • Electric Machines
      • Power Electronics
    • Crew Handling costs:
      • Pilots costs
      • Cabin Crew costs
  • The package includes a ready-to-use GEMSEO discipline to allow integration with multidisciplinary design analysis (MDA) and optimization (MDO) workflows based on the GEMSEO framework.

Installation

Install the package using pip:

pip install doc-calculator

Usage

Import the DirectOperatingCost class

from doc_calculator import DirectOperatingCost

Prepare Aircraft Input Dictionary

aircraft_data = {
    "adp": 85,            # Aircraft Delivery Price (USD M)
    "mtow": 70,           # Max Take-off Weight (Tonnes)
    "pld": 18,            # Payload (Tonnes)
    "mew": 40,            # Manufacturer Empty Weight (Tonnes)
    "bengw": 1.2,         # Bare engine weight (Tonnes)
    "enpri": 6.5,         # Engine Price (USD M)
    "en": 2,              # Number of engines
    "crewtech": 2,
    "crewc": 4,
    "bt": 1.5,            # Sector Block Time (Hours)
    "bf": 2500,           # Sector Block Fuel (KG)
    "sector": 600,        # Sector length (NM)
    "ieng": 1,
    "shp": 25000,         # Shaft Horse Power (for ieng = 1)
    "eoc": 0.0,           # (Only used if ieng = 2)
    "afspare": 0.1,
    "enspare": 0.3,
    "dyrs": 15,
    "rval": 0.15,
    "rinsh": 0.005,
    "crtechr": 200,
    "crcabhr": 50,
    "labor_rate": 90,
    "fuelpri": 1.8,
    "ioc_fact": 0.65,
    "util": 2800,
    "lifespan": 20,
    "l_app": 95.0,
    "l_lat": 94.0,
    "l_flyov": 96.0,
    "cnox": 5,
    "nox_value": 200,
    "cco": 4,
    "co_value": 150,
    "co2_value": 10000,
    "prico2": 0.02,
}

Note: Many parameters are optional depending on configuration. Refer to the full list of accepted keys in the docstring of the __init__ method for more customization.

Create DirectOperatingCost Object and Run Calculations

doc_calculator = DirectOperatingCost(aircraft=aircraft_data)

# Calculate DOC
doc_result = doc_calculator.calculate_doc()
for key, value in doc_result.items():
  print(f"{key}:\t{value}")

# Calculate IOC
ioc_result = doc_calculator.calculate_ioc()
for key, value in ioc_result.items():
  print(f"{key}:\t{value}")

To use the GEMSEO discipline, import the GemseoDirectOperatingCost class

from doc_calculator import GemseoDirectOperatingCost
import numpy as np

Prepare Aircraft Input Dictionary. Make sure to use Numpy arrays.

aircraft_data = {
    "adp": np.array([85]),            # Aircraft Delivery Price (USD M)
    "mtow": np.array([70]),           # Max Take-off Weight (Tonnes)
    "pld": np.array([18]),            # Payload (Tonnes)
    "mew": np.array([40]),            # Manufacturer Empty Weight (Tonnes)
    "bengw": np.array([1.2]),         # Bare engine weight (Tonnes)
    "enpri": np.array([6.5]),         # Engine Price (USD M)
    "en": np.array([2]),              # Number of engines
    "crewtech": np.array([2]),
    "crewc": np.array([4]),
    "bt": np.array([1.5]),            # Sector Block Time (Hours)
    "bf": np.array([2500]),           # Sector Block Fuel (KG)
    "sector": np.array([600]),        # Sector length (NM)

    # add all other required keys
}

Create the disciplne and Run Calculations

doc_displine = GemseoDirectOperatingCost()

out = doc_displine.execute(input_data=aircraft_data)

To fully customize the analysis of aircraft operating costs the Params dataclass helps you modify typical unit rates, depending on the economic scenario

Import the class

from doc_calculator.core.utils.params import Params

Modify economic assumptions and pass the object through the params keyword

parameters = Params()
parameters.ENR = 85.0   # Unit Rate for the En-route Navigation Charge

# DirectOperatingCost
doc_calculator = DirectOperatingCost(aircraft=aircraft_data, params=parameters)

# GemseoDirectOperatingCost
doc_displine = GemseoDirectOperatingCost(params=parameters)

Note: See the Params class source code for all available unit rates and economic scenario constants

References / Citation

If you use doc_calculator for academic or research purposes, please cite:

@article{MARCIELLO2024118517,
  title   = {Evaluating the economic landscape of hybrid-electric regional aircraft: A cost analysis across three time horizons},
  journal = {Energy Conversion and Management},
  volume  = {312},
  pages   = {118517},
  year    = {2024},
  issn    = {0196-8904},
  doi     = {https://doi.org/10.1016/j.enconman.2024.118517},
  url     = {https://www.sciencedirect.com/science/article/pii/S0196890424004588},
  author  = {Valerio Marciello and Vincenzo Cusati and Fabrizio Nicolosi and Karen Saavedra-Rubio and Eleonore Pierrat and Nils Thonemann and Alexis Laurent},
  keywords = {Direct operating costs, Hybrid electric propulsion, Regional aviation, Technology roadmap, Sustainable aviation},
}

@manual{EUETS,
    title = {EU emissions trading system (EU ETS)},
    key   = {European commission},
    url   = {https://climate.ec.europa.eu/eu-action/eu-emissions-trading-system-eu-ets_en},
    year  = {2023}
}

@book{ATA,
  author    = {Air Transport Association of America},
  year      = {1967},
  title     = {Air Transport Association of America. Standard Method of Estimating Comparative Direct Operating Costs of Turbine Powered Transport Airplanes.},
  publisher = {The Association},
  address   = {},
  edition   = {}
}

@book{association1989short,
  title  = {Short medium range aircraft: AEA requirements},
  author = {Association of European Airlines},
  url    = {https://books.google.it/books?id=6dz0jgEACAAJ},
  year   = {1989}
}

Contact

For questions, support, or suggestions, feel free to reach out:

Email: michele.tuccillo98@gmail.com

Report issues: GitHub Issues

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

doc_calculator-0.5.0.tar.gz (14.8 kB view details)

Uploaded Source

Built Distribution

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

doc_calculator-0.5.0-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

Details for the file doc_calculator-0.5.0.tar.gz.

File metadata

  • Download URL: doc_calculator-0.5.0.tar.gz
  • Upload date:
  • Size: 14.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for doc_calculator-0.5.0.tar.gz
Algorithm Hash digest
SHA256 88eb5a76a7fbe9d43c9b2ab26255d40c2d8fe3c72495aa4d666bc72e1b06fe13
MD5 36781775e09c595c1bc2cb1735d1fe58
BLAKE2b-256 910963863eba1ed025081d1a543b1433d05fe4295003f26ce95105d490c7e006

See more details on using hashes here.

File details

Details for the file doc_calculator-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: doc_calculator-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 13.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for doc_calculator-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2ea441a2aa561f7c055c984c571895a8ae1448d09c8edf5223ecf4b11d7a63b2
MD5 cd17b7eaea70f6599209ef7d547e4ad1
BLAKE2b-256 7539306ad6f7d57d307ceebfbe22a9708b52d81abdf3614f26644d375f2cfc33

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