Emissions metadata

Motivation

EmissionsData is a SupplementalAttribute that pairs a pollutant identity (CO₂, NOx, SO₂, etc.) with an emission rate expressed as a ValueCurve. This supports both constant rates and nonlinear relationships between fuel consumption or power output and emissions.

By modeling emissions as a supplemental attribute rather than a field on each generator type, a single EmissionsData instance can be shared across multiple components. This avoids data duplication when several units at the same plant share the same emission profile and allows emissions metadata to be added or removed without changing component struct definitions.

Emission rate and basis

The emission_rate field accepts any ValueCurve subtype, typically an IncrementalCurve representing the emission rate (pollutant mass per unit of fuel or power). When you pass a scalar Real value at construction, the rate is automatically wrapped in a constant-rate IncrementalCurve. More complex shapes — linearly varying rates, piecewise steps — use the same ValueCurve machinery as cost curves. See ValueCurve Options for the available curve types.

The basis field (FUEL_INPUT or POWER_OUTPUT) and energy_unit field (MMBTU, GJ, or MWH) together define the denominator of the rate. These must be consistent: fuel-input rates use heat units; power-output rates use MWH.

Start-up adder

The start_up_adder field captures the transient pollutant pulse that occurs during a cold or warm start before combustion controls and post-combustion controls reach steady state. The adder is expressed in mass_unit per start event. How it is multiplied by start events is the responsibility of the consumer (e.g., a future PowerSimulations.jl integration will tie it to the start binary variable in the unit commitment formulation).

Scope and future work

The following features are out of scope for the current version and tracked in follow-up issues:

  • Time-varying emission rates (time series support)
  • Hot/warm/cold split of the start-up adder
  • EmissionsCap and EmissionsPrice supplemental attribute types
  • Removal rate / pollution control fraction
  • PowerSimulations.jl integration
  • Parser support (CSV, Matpower, PSS/E, RTS data format)

See also