Skip to main content

No project description provided

Project description

Aircraft Direct Operating Cost 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.4.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.4.0-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: doc_calculator-0.4.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.4.0.tar.gz
Algorithm Hash digest
SHA256 4a403a6f66b6dbaff7d67ac33dcaed5433408f4c52b0d1d63572f834e0c2ab02
MD5 e66874c02852df393280b7a932e84824
BLAKE2b-256 6ea4a445c12bbde2b669717c75df3c511cea753c8d3455d5aba014d54ddf6975

See more details on using hashes here.

File details

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

File metadata

  • Download URL: doc_calculator-0.4.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.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1eb7bbfd5b6939b305bc4049c87e76b2b7cbd47732646a3df1bccb50cc0e8c08
MD5 b98808e9b1dc2b9e8ea5f6735aaa275e
BLAKE2b-256 0645fb3f3ad5641f4e364dc6d85512ba416925d6629194eae9179a6184d8fbf5

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