Skip to content

Closed Form Models (External)

Poll–Schumann Model (via pycontrails)

The Poll–Schumann model provides a closed-form, physics-based method to estimate aircraft fuel flow and performance along flight trajectories. It is implemented in pycontrails, an open-source library for modeling contrails and aviation climate impacts.

The model analytically links fuel burn, specific range, and aerodynamic efficiency using parameters such as:

  • Aircraft mass and lift-to-drag ratio
  • Thrust setting and Mach number
  • Atmospheric temperature and pressure

The implementation in pycontrails computes instantaneous fuel flow and total burn over a trajectory segment from inputs like altitude, TAS, Mach number, and mass.

Note

The Poll-Schumann Model requires a full flight trajectory as input for fuel calculations.

References

  • Poll, D. I. A., & Schumann, U. (2025). An estimation method for the fuel burn and other performance characteristics of civil transport aircraft; part 3 full flight profile when the trajectory is specified. The Aeronautical Journal, 1-37. doi:10.1017/aer.2024.141
  • Poll, D. I. A., & Schumann, U. (2021). An estimation method for the fuel burn and other performance characteristics of civil transport aircraft during cruise. part 2, determining the aircraft's characteristic parameters. The Aeronautical Journal, 125(1284), 296-340. doi:10.1017/aer.2020.124
  • Poll, D. I. A., & Schumann, U. (2021). An estimation method for the fuel burn and other performance characteristics of civil transport aircraft in the cruise. Part 1 fundamental quantities and governing relations for a general atmosphere. The Aeronautical Journal, 125(1284), 257-295. doi:10.1017/aer.2020.62

Warning

pycontrails, which implements the Poll-Schumann model, is not a pure Python package and therefore not compatible with Pyodide. The below example is therefore not interactice.

Usage Example

from pycontrails import Flight
from pycontrails.models.ps_model import PSFlight
import pandas as pd

flight = Flight(
    data=pd.read_csv('https://raw.githubusercontent.com/contrailcirrus/pycontrails/refs/heads/main/docs/notebooks/data/flight-ap.csv'),
    attrs={
        'flight_id': '1',
        'aircraft_type': 'A320'
    }
)

# Create PS Flight model and evaluate
ps_model = PSFlight(
    fill_low_altitude_with_isa_temperature=True,
    fill_low_altitude_with_zero_wind=True,
)
out = ps_model.eval(flight)

# Calculate total fuel burned from mass drop
df = out[['time', 'aircraft_mass']].dropna().sort_values('time')
if len(df) >= 2:
    total_fuel_kg = float(df['aircraft_mass'].iloc[0] - df['aircraft_mass'].iloc[-1])