pycontrails.models.emissions.black_carbon

Non-volatile particulate matter (nvPM) calculations.

Functions

air_to_fuel_ratio_imfox(thrust_setting)

Calculate the air-to-fuel ratio at cruise conditions via Abrahamson's method.

bc_mass_concentration_cruise_fox(c_bc_ref, ...)

Calculate the black carbon mass concentration for cruise conditions (c_bc_cru).

bc_mass_concentration_fox(fuel_flow, t_fl, afr)

Calculate the black carbon mass concentration for ground conditions (c_bc_ref).

bc_mass_concentration_imfox(...)

Calculate the BC mass concentration for ground and cruise conditions with ImFOX methodology.

bc_mass_emissions_index(c_bc, q_exhaust)

Calculate the black carbon mass emissions index.

dopelheuer_lecht_scaling_factor(t_fl_cru, ...)

Estimate scaling factor to convert the reference BC mass concentration from ground to cruise.

exhaust_gas_volume_per_kg_fuel(afr)

Calculate the volume of exhaust gas per mass of fuel burnt.

flame_temperature(t_3)

Calculate the flame temperature at the combustion chamber (t_fl).

geometric_mean_diameter_sac(air_pressure, ...)

Calculate the BC GMD for singular annular combustor (SAC) engines.

mass_emissions_index_fox(air_pressure, ...)

Calculate the black carbon mass emissions index using the Formation and Oxidation Method (FOX).

mass_emissions_index_imfox(...)

Calculate the BC mass EI using the "Improved" Formation and Oxidation Method (ImFOX).

number_emissions_index_fractal_aggregates(...)

Estimate the black carbon number emission index using the fractal aggregates (FA) model.

nvpm_mass_ei_pct_reduction_due_to_saf(...)

Adjust nvPM mass emissions index to account for the effects of sustainable aviation fuels.

nvpm_number_ei_pct_reduction_due_to_saf(...)

Adjust nvPM number emissions index to account for the effects of sustainable aviation fuels.

turbine_inlet_temperature_imfox(afr)

Calculate the turbine inlet temperature using Abrahamson's method.

pycontrails.models.emissions.black_carbon.air_to_fuel_ratio_imfox(thrust_setting)

Calculate the air-to-fuel ratio at cruise conditions via Abrahamson’s method.

See Eq. (11) in [Abrahamson et al., 2016].

Parameters:

thrust_setting (npt.NDArray[np.float64]) – Engine thrust setting, which is the fuel mass flow rate divided by the maximum fuel mass flow rate

Returns:

npt.NDArray[np.float64] – Air-to-fuel ratio at cruise conditions

References

pycontrails.models.emissions.black_carbon.bc_mass_concentration_cruise_fox(c_bc_ref, t_fl_cru, t_fl_ref, p_3_cru, p_3_ref, afr_cru, afr_ref)

Calculate the black carbon mass concentration for cruise conditions (c_bc_cru).

This quantity is computed at the instrument sampling point without correcting for particle line losses.

Parameters:
  • c_bc_ref (npt.NDArray[np.float64]) – Black carbon mass concentration at reference conditions, [\(mg m^{-3}\)]

  • t_fl_cru (npt.NDArray[np.float64]) – Flame temperature at cruise conditions, [\(K\)]

  • t_fl_ref (npt.NDArray[np.float64] | float) – Flame temperature at reference conditions, [\(K\)]

  • p_3_cru (npt.NDArray[np.float64]) – Combustor inlet pressure at cruise conditions, [\(Pa\)]

  • p_3_ref (npt.NDArray[np.float64] | float) – Combustor inlet pressure at reference conditions, [\(Pa\)]

  • afr_cru (npt.NDArray[np.float64]) – Air-to-fuel ratio at cruise conditions

  • afr_ref (npt.NDArray[np.float64] | float) – Air-to-fuel ratio at reference conditions

Returns:

npt.NDArray[np.float64] – Black carbon mass concentration for cruise conditions, [\(mg m^{-3}\)]

pycontrails.models.emissions.black_carbon.bc_mass_concentration_fox(fuel_flow, t_fl, afr)

Calculate the black carbon mass concentration for ground conditions (c_bc_ref).

This quantity is computed at the instrument sampling point without correcting for particle line losses.

Parameters:
  • fuel_flow (npt.NDArray[np.float64]) – Fuel mass flow rate, [\(kg s^{-1}\)]

  • t_fl (npt.NDArray[np.float64] | float) – Flame temperature at the combustion chamber, [\(K\)]

  • afr (npt.NDArray[np.float64] | float) – Air-to-fuel ratio

Returns:

npt.NDArray[np.float64] – Black carbon mass concentration for ground conditions, [\(mg m^{-3}\)]

pycontrails.models.emissions.black_carbon.bc_mass_concentration_imfox(fuel_flow_per_engine, afr, t_4, fuel_hydrogen)

Calculate the BC mass concentration for ground and cruise conditions with ImFOX methodology.

This quantity is computed at the instrument sampling point without correcting for particle line losses.

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

  • afr (npt.NDArray[np.float64]) – air-to-fuel ratio

  • t_4 (npt.NDArray[np.float64]) – turbine inlet temperature, [\(K\)]

  • fuel_hydrogen (float) – percentage of hydrogen mass content in the fuel (13.8% for conventional Jet A-1 fuel)

Returns:

npt.NDArray[np.float64] – Black carbon mass concentration, [\(mg m^{-3}\)]

pycontrails.models.emissions.black_carbon.bc_mass_emissions_index(c_bc, q_exhaust)

Calculate the black carbon mass emissions index.

Parameters:
  • c_bc (npt.NDArray[np.float64]) – Black carbon mass concentration, [\(mg m^{-3}\)]

  • q_exhaust (npt.NDArray[np.float64]) – Volume of exhaust gas per mass of fuel burnt, [\(m^{3}/kg_{fuel}\)]

Returns:

npt.NDArray[np.float64] – Black carbon mass emissions index, [\(mg/kg_{fuel}\)]

References

pycontrails.models.emissions.black_carbon.dopelheuer_lecht_scaling_factor(t_fl_cru, t_fl_ref, p_3_cru, p_3_ref, afr_cru, afr_ref)

Estimate scaling factor to convert the reference BC mass concentration from ground to cruise.

Parameters:
  • t_fl_cru (npt.NDArray[np.float64]) – Flame temperature at cruise conditions, [\(K\)]

  • t_fl_ref (npt.NDArray[np.float64] | float) – Flame temperature at reference conditions, [\(K\)]

  • p_3_cru (npt.NDArray[np.float64]) – Combustor inlet pressure at cruise conditions, [\(Pa\)]

  • p_3_ref (npt.NDArray[np.float64] | float) – Combustor inlet pressure at reference conditions, [\(Pa\)]

  • afr_cru (npt.NDArray[np.float64]) – Air-to-fuel ratio at cruise conditions

  • afr_ref (npt.NDArray[np.float64] | float) – Air-to-fuel ratio at reference conditions

Returns:

npt.NDArray[np.float64] – Dopelheuer & Lecht scaling factor

References

pycontrails.models.emissions.black_carbon.exhaust_gas_volume_per_kg_fuel(afr)

Calculate the volume of exhaust gas per mass of fuel burnt.

Parameters:

afr (npt.NDArray[np.float64]) – Air-to-fuel ratio

Returns:

npt.NDArray[np.float64] – Volume of exhaust gas per mass of fuel burnt, [\(m^{3}/kg_{fuel}\)]

References

pycontrails.models.emissions.black_carbon.flame_temperature(t_3)

Calculate the flame temperature at the combustion chamber (t_fl).

Parameters:

t_3 (ArrayScalarLike) – Combustor inlet temperature, [\(K\)]

Returns:

ArrayScalarLike – Flame temperature at the combustion chamber, [\(K\)]

pycontrails.models.emissions.black_carbon.geometric_mean_diameter_sac(air_pressure, air_temperature, true_airspeed, thrust_setting, pressure_ratio, q_fuel, *, comp_efficiency=0.9, delta_loss=5.75, cruise=True)

Calculate the BC GMD for singular annular combustor (SAC) engines.

The BC (black carbon) GMD (geometric mean diameter) is estimated using the non-dimensionalized engine thrust setting, the ratio of turbine inlet to the compressor inlet temperature (t4_t2).

Parameters:
  • air_pressure (npt.NDArray[np.float64]) – Pressure altitude at each waypoint, [\(Pa\)]

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

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

  • thrust_setting (npt.NDArray[np.float64]) – Engine thrust setting, which is the fuel mass flow rate divided by the maximum fuel mass flow rate

  • pressure_ratio (float) – Engine pressure ratio from the ICAO EDB

  • q_fuel (float) – Lower calorific value (LCV) of fuel, [\(J \ kg_{fuel}^{-1}\)]

  • comp_efficiency (float) – Engine compressor efficiency (assumed to be 0.9)

  • delta_loss (float) – Correction factor accounting for particle line losses (assumed to be 5.75 nm), [\(nm\)]

  • cruise (bool) – Set to true when the aircraft is not on the ground.

Returns:

npt.NDArray[np.float64] – black carbon geometric mean diameter, [\(nm\)]

References

pycontrails.models.emissions.black_carbon.mass_emissions_index_fox(air_pressure, air_temperature, true_airspeed, fuel_flow_per_engine, thrust_setting, pressure_ratio, *, comp_efficiency=0.9)

Calculate the black carbon mass emissions index using the Formation and Oxidation Method (FOX).

Parameters:
  • air_pressure (npt.NDArray[np.float64]) – Pressure altitude at each waypoint, [\(Pa\)]

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

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

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

  • thrust_setting (npt.NDArray[np.float64]) – Engine thrust setting, which is the fuel mass flow rate divided by the maximum fuel mass flow rate

  • pressure_ratio (float) – Engine pressure ratio from the ICAO EDB

  • comp_efficiency (float) – Engine compressor efficiency, assumed to be 0.9

Returns:

npt.NDArray[np.float64] – Black carbon mass emissions index, [\(mg \ kg_{fuel}^{-1}\)]

References

pycontrails.models.emissions.black_carbon.mass_emissions_index_imfox(fuel_flow_per_engine, thrust_setting, fuel_hydrogen)

Calculate the BC mass EI using the “Improved” Formation and Oxidation Method (ImFOX).

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

  • thrust_setting (npt.NDArray[np.float64]) – Engine thrust setting, which is the fuel mass flow rate divided by the maximum fuel mass flow rate

  • fuel_hydrogen (float) – Percentage of hydrogen mass content in the fuel (13.8% for conventional Jet A-1 fuel)

Returns:

npt.NDArray[np.float64] – Black carbon mass emissions index, [\(mg \ kg_{fuel}^{-1}\)]

References

pycontrails.models.emissions.black_carbon.number_emissions_index_fractal_aggregates(nvpm_ei_m, gmd, *, gsd=1.8, rho_bc=1770, k_tem=1.621e-05, d_tem=0.39, d_fm=2.76)

Estimate the black carbon number emission index using the fractal aggregates (FA) model.

The FA model estimates the number emissions index from the mass emissions index, particle size distribution, and morphology.

Parameters:
  • nvpm_ei_m (npt.NDArray[np.float64]) – Black carbon mass emissions index, [\(kg/kg_{fuel}\)]

  • gmd (npt.NDArray[np.float64]) – Black carbon geometric mean diameter, [\(m\)]

  • gsd (float) – Black carbon geometric standard deviation (assumed to be 1.80)

  • rho_bc (float) – Black carbon material density (1770 kg/m**3), [\(kg m^{-3}\)]

  • k_tem (float) – Transmission electron microscopy prefactor coefficient (assumed to be 1.621e-5)

  • d_tem (float) – Transmission electron microscopy exponent coefficient (assumed to be 0.39)

  • d_fm (float) – Mass-mobility exponent (assumed to be 2.76)

Returns:

npt.NDArray[np.float64] – Black carbon number emissions index, [\(kg_{fuel}^{-1}\)]

References

pycontrails.models.emissions.black_carbon.nvpm_mass_ei_pct_reduction_due_to_saf(hydrogen_content, thrust_setting)

Adjust nvPM mass emissions index to account for the effects of sustainable aviation fuels.

For fuel with hydrogen mass content > 14.3, the adjustment factor is adopted from Teoh et al. (2022), which was used to calculate the change in nvPM EIn.

Parameters:
  • hydrogen_content (float) – The percentage of hydrogen mass content in the fuel.

  • thrust_setting (npt.NDArray[np.float64]) – Engine thrust setting, where the equivalent fuel mass flow rate per engine at sea level, \([0 - 1]\).

Returns:

npt.NDArray[np.float64] – Percentage reduction in nvPM number emissions index

References

pycontrails.models.emissions.black_carbon.nvpm_number_ei_pct_reduction_due_to_saf(hydrogen_content, thrust_setting)

Adjust nvPM number emissions index to account for the effects of sustainable aviation fuels.

Parameters:
  • hydrogen_content (float) – The percentage of hydrogen mass content in the fuel.

  • thrust_setting (npt.NDArray[np.float64]) – Engine thrust setting, where the equivalent fuel mass flow rate per engine at sea level, \([0 - 1]\).

Returns:

npt.NDArray[np.float64] – Percentage reduction in nvPM number emissions index

References

pycontrails.models.emissions.black_carbon.turbine_inlet_temperature_imfox(afr)

Calculate the turbine inlet temperature using Abrahamson’s method.

See Eq. (13) in [Abrahamson et al., 2016].

Parameters:

afr (npt.NDArray[np.float64]) – air-to-fuel ratio at cruise conditions

Returns:

npt.NDArray[np.float64] – turbine inlet temperature, [\(K\)]

References