pycontrails.models.emissions.ffm2

Calculate nitrogen oxide (NOx), carbon monoxide (CO) and hydrocarbon (HC) emissions.

This modules applies the Fuel Flow Method 2 (FFM2) from DuBois & Paynter (2006) for a given aircraft-engine pair.

References

Functions

co_hc_emissions_index_profile(ff_idle, ...)

Create carbon monoxide (CO) and hydrocarbon (HC) emissions index (EI) profile.

ei_at_cruise(ei_sl, theta_amb, delta_amb, ...)

Convert the estimated EI at sea level to cruise conditions.

estimate_ei(log_ei_profile, ...)

Estimate carbon monoxide (CO) or hydrocarbon (HC) emissions index (EI).

estimate_nox(log_ei_nox_profile, ...[, ...])

Estimate the nitrogen oxide (NOx) emissions index (EI) at cruise conditions.

nitrogen_oxide_emissions_index_profile(...)

Create the nitrogen oxide (NOx) emissions index (EI) profile for the given engine type.

pycontrails.models.emissions.ffm2.co_hc_emissions_index_profile(ff_idle, ff_approach, ff_climb, ff_take_off, ei_idle, ei_approach, ei_climb, ei_take_off)

Create carbon monoxide (CO) and hydrocarbon (HC) emissions index (EI) profile.

Parameters:
  • ff_idle (float) – ICAO EDB fuel mass flow rate at idle conditions (7% power), [\(kg s^{-1}\)]

  • ff_approach (float) – ICAO EDB fuel mass flow rate at approach (30% power), [\(kg s^{-1}\)]

  • ff_climb (float) – ICAO EDB fuel mass flow rate at climb out (85% power), [\(kg s^{-1}\)]

  • ff_take_off (float) – ICAO EDB fuel mass flow rate at take-off (100% power), [\(kg s^{-1}\)]

  • ei_idle (float) – ICAO EDB CO or HC emissions index at idle conditions (7% power), [\(g_{pollutant}/kg_{fuel}\)]

  • ei_approach (float) – ICAO EDB CO or HC emissions index at approach (30% power), [\(g_{pollutant}/kg_{fuel}\)]

  • ei_climb (float) – ICAO EDB CO or HC emissions index at climb out (85% power), [\(g_{pollutant}/kg_{fuel}\)]

  • ei_take_off (float) – ICAO EDB CO or HC emissions index at take-off (100% power), [\(g_{pollutant}/kg_{fuel}\)]

Returns:

EmissionsProfileInterpolator – log of CO or HC emissions index versus the log of fuel mass flow rate for a given engine type

pycontrails.models.emissions.ffm2.ei_at_cruise(ei_sl, theta_amb, delta_amb, ei_type)

Convert the estimated EI at sea level to cruise conditions.

Refer to Eqs. (15) and (16) in DuBois & Paynter (2006).

Parameters:
  • ei_sl (npt.NDArray[np.floating]) – Sea level EI values.

  • theta_amb (npt.NDArray[np.floating]) – Ratio of the ambient temperature to the temperature at mean sea-level.

  • delta_amb (npt.NDArray[np.floating]) – Ratio of the pressure altitude to the surface pressure.

  • ei_type (str) – One of {“HC”, “CO”, “NOX”}

Returns:

npt.NDArray[np.floating] – Estimated cruise EI values.

References

pycontrails.models.emissions.ffm2.estimate_ei(log_ei_profile, fuel_flow_per_engine, true_airspeed, air_pressure, air_temperature)

Estimate carbon monoxide (CO) or hydrocarbon (HC) emissions index (EI).

Parameters:
  • log_ei_profile (EmissionsProfileInterpolator) – emissions profile containing the log of EI CO or EI HC versus log of fuel flow.

  • fuel_flow_per_engine (npt.NDArray[np.floating]) – fuel mass flow rate per engine, [\(kg s^{-1}\)]

  • true_airspeed (npt.NDArray[np.floating]) – true airspeed for each waypoint, [\(m s^{-1}\)]

  • air_pressure (npt.NDArray[np.floating]) – pressure altitude at each waypoint, [\(Pa\)]

  • air_temperature (npt.NDArray[np.floating]) – ambient temperature for each waypoint, [\(K\)]

pycontrails.models.emissions.ffm2.estimate_nox(log_ei_nox_profile, fuel_flow_per_engine, true_airspeed, air_pressure, air_temperature, specific_humidity=None)

Estimate the nitrogen oxide (NOx) emissions index (EI) at cruise conditions.

Parameters:
  • log_ei_nox_profile (EmissionsProfileInterpolator) – emissions profile containing the log of EI NOx versus log of fuel flow.

  • fuel_flow_per_engine (npt.NDArray[np.floating]) – fuel mass flow rate per engine, [\(kg s^{-1}\)]

  • true_airspeed (npt.NDArray[np.floating]) – true airspeed for each waypoint, [\(m s^{-1}\)]

  • air_pressure (npt.NDArray[np.floating]) – pressure altitude at each waypoint, [\(Pa\)]

  • air_temperature (npt.NDArray[np.floating]) – ambient temperature for each waypoint, [\(K\)]

  • specific_humidity (npt.NDArray[np.floating] | None) – specific humidity for each waypoint, [\(kg_{H_{2}O}/kg_{air}\)]

pycontrails.models.emissions.ffm2.nitrogen_oxide_emissions_index_profile(ff_idle, ff_approach, ff_climb, ff_take_off, ei_nox_idle, ei_nox_approach, ei_nox_climb, ei_nox_take_off)

Create the nitrogen oxide (NOx) emissions index (EI) profile for the given engine type.

Parameters:
  • ff_idle (float) – ICAO EDB fuel mass flow rate at idle conditions (7% power), [\(kg s^{-1}\)]

  • ff_approach (float) – ICAO EDB fuel mass flow rate at approach (30% power), [\(kg s^{-1}\)]

  • ff_climb (float) – ICAO EDB fuel mass flow rate at climb out (85% power), [\(kg s^{-1}\)]

  • ff_take_off (float) – ICAO EDB fuel mass flow rate at take-off (100% power), [\(kg s^{-1}\)]

  • ei_nox_idle (float) – ICAO EDB NOx emissions index at idle conditions (7% power), [\(g_{NO_{X}}/kg_{fuel}\)]

  • ei_nox_approach (float) – ICAO EDB NOx emissions index at approach (30% power), [\(g_{NO_{X}}/kg_{fuel}\)]

  • ei_nox_climb (float) – ICAO EDB NOx emissions index at climb out (85% power), [\(g_{NO_{X}}/kg_{fuel}\)]

  • ei_nox_take_off (float) – ICAO EDB NOx emissions index at take-off (100% power), [\(g_{NO_{X}}/kg_{fuel}\)]

Returns:

EmissionsProfileInterpolator – log of NOx emissions index versus the log of fuel mass flow rate for a given engine type

Raises:

ValueError – If any EI nox values are non-positive.