Add EmissionsData SupplementalAttribute for tracking emissions#1682
Add EmissionsData SupplementalAttribute for tracking emissions#1682Copilot wants to merge 4 commits into
Conversation
…ssors, and tests Agent-Logs-Url: https://github.com/Sienna-Platform/PowerSystems.jl/sessions/963273c4-85bf-46b6-a9d4-0a0824357b46 Co-authored-by: jd-lara <[email protected]>
Agent-Logs-Url: https://github.com/Sienna-Platform/PowerSystems.jl/sessions/963273c4-85bf-46b6-a9d4-0a0824357b46 Co-authored-by: jd-lara <[email protected]>
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds a new EmissionsData supplemental attribute and supporting enums to represent pollutant emissions rates on PowerSystems components, plus tests and documentation.
Changes:
- Introduces scoped enums for pollutant type, emission basis, and mass/energy units.
- Implements
EmissionsDatawith validation, accessors, and mutating setters. - Adds tests covering construction, validation, attachment/shared references, JSON round-trip, and iteration; plus user docs.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
src/emissions_enums.jl |
Defines scoped enums for pollutants, basis, and units with docstrings. |
src/emissions_data.jl |
Adds EmissionsData supplemental attribute, validation, accessors, and setters. |
src/PowerSystems.jl |
Wires new emissions files into the module via includes/exports. |
test/test_emissions_data.jl |
Adds test coverage for emissions attribute behavior, including JSON round-trip. |
docs/src/explanation/emissions_data.md |
Documents motivation and usage patterns for EmissionsData. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…x mktempdir and docs Agent-Logs-Url: https://github.com/Sienna-Platform/PowerSystems.jl/sessions/df0d07d8-e910-4e2e-8bbe-56624e2e2b80 Co-authored-by: jd-lara <[email protected]>
Done in 29cc4e8. Moved all emissions enums ( Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
| - Time-varying emission rates (time series support) | ||
| - Hot/warm/cold split of the start-up adder | ||
| - `EmissionsCap` and `EmissionsPrice` supplemental attribute types | ||
| - Heat-rate-dependent piecewise rates | ||
| - Removal rate / pollution control fraction | ||
| - PowerSimulations.jl integration | ||
| - Parser support (CSV, Matpower, PSS/E) |
There was a problem hiding this comment.
[JuliaFormatter] reported by reviewdog 🐶
| - Time-varying emission rates (time series support) | |
| - Hot/warm/cold split of the start-up adder | |
| - `EmissionsCap` and `EmissionsPrice` supplemental attribute types | |
| - Heat-rate-dependent piecewise rates | |
| - Removal rate / pollution control fraction | |
| - PowerSimulations.jl integration | |
| - Parser support (CSV, Matpower, PSS/E) | |
| - Time-varying emission rates (time series support) | |
| - Hot/warm/cold split of the start-up adder | |
| - `EmissionsCap` and `EmissionsPrice` supplemental attribute types | |
| - Heat-rate-dependent piecewise rates | |
| - Removal rate / pollution control fraction | |
| - PowerSimulations.jl integration | |
| - Parser support (CSV, Matpower, PSS/E) |
Adds
EmissionsData, a newSupplementalAttributesubtype that pairs a pollutant identity with a numerical emission rate. Supports one-to-many attachment (shared across components), validation, and JSON round-trip serialization.New types:
EmissionsData— mutable struct withname,pollutant,emission_rate,basis,start_up_adder,mass_unit,energy_unit,gwp,availablePollutantTypeenum — CO2, CO2E, CH4, N2O, NOX, SO2, PM25, PM10, HG, HAP, CUSTOMEmissionBasisenum — FUEL_INPUT, POWER_OUTPUTMassUnitenum — KG, LB, SHORT_TON, METRIC_TONEnergyUnitenum — MMBTU, GJ, MWHAll emissions enums are defined in
src/definitions.jlalongside the other scoped enums.Validation (constructor throws
ArgumentError):emission_rate >= 0,start_up_adder >= 0,gwp > 0NaNandInf)energy_unitmust be consistent withbasis(MMBTU/GJ for FUEL_INPUT, MWH for POWER_OUTPUT)energy_unitautomatically frombasis_validate_nonneg_finite,_validate_pos_finite) to prevent rule divergenceAccessors/setters:
get_emission_rate,set_emission_rate!,get_start_up_adder,set_start_up_adder!,get_gwp,set_gwp!, etc. Pollutant, basis, and units are immutable post-construction.Files added/changed:
src/definitions.jl— emissions enums added alongside existing scoped enumssrc/emissions_data.jl—EmissionsDatastruct, validation, accessors, setterstest/test_emissions_data.jl(47 tests: construction, validation incl. NaN/Inf, attachment, shared-ref semantics, JSON round-trip, multi-pollutant, iteration)docs/src/explanation/emissions_data.mdRelated issue: feat: Hydro data modeling improvement #1182
N/A —
EmissionsDatais a supplemental attribute, not a component struct.