Skip to content

Add direct emissions method with data export#3444

Open
kndehaan wants to merge 84 commits into
masterfrom
emissions
Open

Add direct emissions method with data export#3444
kndehaan wants to merge 84 commits into
masterfrom
emissions

Conversation

@kndehaan
Copy link
Copy Markdown
Member

@kndehaan kndehaan commented May 29, 2026

Context

This PR adds a new direct emissions method to the model, together with a detailed data export containing all greenhouse gas emissions of a scenario.

Implemented changes

  • New engine methods and node attributes that calculate relevant direct emissions, based on presence of (molecule) node group emissions
  • Data processing pipeline that generates start year emissions data for country datasets, based on reported emission data from UNFCCC. Start year data is added as emissions.csv file to ETSource using a rake task.
  • New molecule nodes that read static emission data from emissions.csv, specified for co2 and other_ghg
  • Detailed data export containing relevant direct reporting emission results for all relevant nodes, and categorises these into ETM sector and subsector.

Related

Goes with pull requests:

Checklist

  • I have tested these changes
  • I have updated documentation as needed
  • I have tagged the relevant people for review

louispt1 and others added 25 commits May 29, 2026 17:07
* Add molecule node examples

* Create 35 molecule nodes for emissions accounting

* Create groups for all emission molecule nodes

* Minor corrections

---------

Co-authored-by: robindesmit-quintel <robin.desmit@quintel.com>
* Rake import emissions task

* Update the layout of groups in files with emission groups.

* Add emissions_csv config file for the data export

* Add other emission methods to the data export and include all the sectors and subsectors.

* Simplify GHG column to use ghg_carrier method and round numeric columns to 6 decimal places

* Add documentation for emissions export yml file

* Minor rebasing corrections

---------

Co-authored-by: louispt1 <louisparkestalbot1@gmail.com>
Co-authored-by: robindesmit-quintel <robin.desmit@quintel.com>
Co-authored-by: Kyra de Haan <kyra.dehaan@quintel.com>
Comment thread carriers/ambient_cold.ad
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the mocule graph, the energy sector nodes are now a bit scattered, this also applies to the industry sector nodes. In the energy graph we nicely group all nodes. Should we do this for the molecule graph nodes as well?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a consideration between distinction per sector or distinction per modelling type. Currently, we placed the static modelling (molecule nodes that read from emissions.csv) at the bottom and dynamic modelling is at the top. If we group per sector, the static modelling of energy and industry sector will be right next to the dynamic modelling.

Since the molecule nodes are somewhat 'strange' exceptions in the modelling, I don't find it too strange that they are at the bottom. But if we want to apply the graph design of grouping sectors together, then it makes sense to move some of the molecule nodes.

I don't have a strong preference. @mabijkerk what about you?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would prefer sector clustering. It does not have the highest priority but perhaps @robindesmit-quintel can pick this up?

transform: "(value * 1e-6).round(6)"


rows:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This data-exports seems to be alphabetically sorted on Group, does that makes sense? Isn't there given order that we can follow that matches more with UNFCC, EU, PBL...? Something like Energy, Industry, Transport, Households, Services, Agriculture...

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's follow follow IPCC:
Energy
Industry
National transport
Buildings
Households
Agriculture
Other
LULUCF
Waste
International transport

@robindesmit-quintel could you pick this up?

Copy link
Copy Markdown
Member

@mabijkerk mabijkerk Jun 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still not 100% convinced about these being called non_energetic. The client also brought this up: non-energetic/energetic is a distinction from the energy balance that does not always match with combustion/non-combustion emissions. Good to discuss together or check in with an expert?

Comment thread config/direct_emissions_csv.yml Outdated
Comment on lines +154 to +159
- Group: emissions_international_transport_international_aviation
Sector: International transport
Subsector: International aviation
- Group: emissions_international_transport_international_navigation
Sector: International transport
Subsector: International navigation
Copy link
Copy Markdown
Member

@mabijkerk mabijkerk Jun 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These other GHG values need to be dependent on the sliders settings bunkers_allocated_percentage_aviation and bunkers_allocated_percentage_shipping.

Copy link
Copy Markdown
Member

@mabijkerk mabijkerk Jun 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that this should apply both to present and future year!

Copy link
Copy Markdown
Member Author

@kndehaan kndehaan Jun 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@noracato the molecule nodes in these groups contain the other_ghg value that is read from the emissions.csv. But actually these values that end up in the user output should depend on the inputs mentioned by Mathijs. Is there a way that we can process this in the data export?

Note that this already goes correctly for the energy nodes within this group; the energy nodes will have a demand and calculated emissions if the inputs are set to > 0.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@noracato you can ignore my request above, it's a modeller's thing that I will look into.

Comment thread tasks/etdataset/import_emissions.rb Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants