-
Notifications
You must be signed in to change notification settings - Fork 6
Add direct emissions method with data export #321
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
059c08a
Direct emissions documentation
kndehaan a8d94e6
Minor corrections
kndehaan dc7f43c
Add beta release info
kndehaan ace2a4c
Update emissions docs
kndehaan e545447
Fixes to emissions docs
mabijkerk ba8e272
Minor changes to emissions docs
mabijkerk 332cdd1
Add for contributors page direct emissions
kndehaan e5ded88
Minor changes to direct emission docs
mabijkerk 1c2467f
Minor changes to direct emission docs
mabijkerk 8fd1a10
Biogenic CO2 IPCC guidelines
kndehaan ec245c3
Minor changes to direct emission docs
mabijkerk File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,147 @@ | ||
| --- | ||
| title: Direct emissions method | ||
| --- | ||
|
|
||
| The direct emissions method determines the greenhouse gas emissions of a scenario at the point where emissions are released. Go to [direct emissions](../main/direct-emissions.md) for more information about the general principles of this method. The current page gives the technical background of how the direct emissions method works. | ||
|
|
||
| ## Technical principles | ||
| The direct emissions method distinguishes methods for determining CO2 flows for **energy nodes**, as well as methods to determine reporting greenhouse gas emissions (CO2, other GHG and total GHG) calculated for both **energy nodes** and **molecule nodes**. These different methods are further explained below. | ||
|
|
||
| Note that all of the direct emissions methods are only calculated for energy and molecule nodes that have the `emissions` group specified. All emissions are calculated in `kg CO2eq`. | ||
|
|
||
| ## CO2 flow methods | ||
| The ingoing and outgoing CO2 flows depicted in the diagram below are calculated for **energy nodes**. The method calculates these flows for both fossil and biogenic CO2. These flows are the building blocks for calculating the reporting greenhouse gas emissions. The following subsections explain how each of the flows, indicated with letters A-E, are calculated. The method keys for querying the respective CO2 flow on nodes are provided as well. | ||
|
|
||
|  | ||
| ***Figure**. Incoming and outgoing CO2 flows of a technology.* | ||
|
|
||
| ### CO2 content input carriers (A) | ||
| This flow represents ingoing CO2 embedded in input carriers. The flow is calculated for each ingoing edge, multiplying the demand of that edge with the carrier's emission factor. | ||
|
|
||
| ``` | ||
| A = Σ( input_edge.demand × carrier.co2_per_mj ) | ||
| ``` | ||
| Method keys: | ||
| `direct_co2_input_content_carriers_fossil` | ||
| `direct_co2_input_content_carriers_biogenic` | ||
|
|
||
|
|
||
| ### CO2 utilisation (B) | ||
| This flow represents used CO2 on the node, for example for production of synthetic transport fuels. The required CO2 is determined based on the useful output of a node multiplied with `co2_utilisation_per_mj`. Note that this is the only flow that is not calculated for biogenic CO2 as the ETM only has processes where non-biogenic carriers are produced from CO2 utilisation. | ||
|
|
||
| ``` | ||
| B = Σ( edge.output ) × node.co2_utilisation_per_mj | ||
| ``` | ||
| Method key: | ||
| `direct_co2_input_utilisation_fossil` | ||
|
|
||
| ### CO2 content output carriers (C) | ||
| This flow represents outgoing CO2 embedded in output carriers. The flow is calculated for each outgoing edge, multiplying the energy flow with the carrier's emission factor. | ||
|
|
||
| ``` | ||
| C = Σ( output_edge.demand × carrier.co2_per_mj ) | ||
| ``` | ||
| Method key: | ||
| `direct_co2_output_content_carriers_fossil` | ||
| `direct_co2_output_content_carriers_biogenic` | ||
|
|
||
| ### CO2 capture (D) | ||
| This flow represents the amount of captured CO2 on the node. The flow is determined based on the gross produced CO2 and the `ccs_capture_rate` specified for that node. The gross produced CO2 is the difference between ingoing CO2 (embedded in input carriers `A` and CO2 utilisation `B`) and outgoing CO2 embedded in output carriers `C`. | ||
|
|
||
| ``` | ||
| co2_production = A + B - C | ||
| D = co2_production * ccs_capture_rate | ||
| ``` | ||
| Method keys: | ||
| `direct_co2_output_production_capture_fossil` | ||
| `direct_co2_output_production_capture_biogenic` | ||
|
|
||
| ### CO2 emissions (E) | ||
| This flow represents the actual emitted CO2 and is the difference between the ingoing and outgoing CO2 flows described above. | ||
|
|
||
| ``` | ||
| E = (A + B) - (C + D) | ||
| ``` | ||
| Method keys: | ||
| `direct_co2_output_production_emissions_fossil` | ||
| `direct_co2_output_production_emissions_biogenic` | ||
|
|
||
| ## Reporting emission methods | ||
| The reporting greenhouse gas emission methods represent the relevant emissions that are typically reported by countries. These methods are used in the various user output for the direct emissions method (for example the data export). Note that these methods are queryable on both *energy nodes* and *molecule nodes*, but have a different implementation for these node types, which is further explained below. | ||
|
|
||
| Four reporting emission methods are distinguished (inlcuding method key for querying the method): | ||
| * CO2 production - `direct_reporting_emissions_co2_production` | ||
| * CO2 capture - `direct_reporting_emissions_co2_capture` | ||
| * Other GHG emissions - `direct_reporting_emissions_other_ghg_emissions` | ||
| * Total GHG emissions - `direct_reporting_emissions_total_ghg_emissions` | ||
|
|
||
| ### CO2 production | ||
| This represents the gross produced fossil CO2, before potential CO2 capture. | ||
|
|
||
| #### Energy node implementation | ||
| It is determined from ingoing fossil CO2 (A + B) minus outgoing fossil CO2 embedded in output carriers (C). See the equation including the reporting method key below. | ||
|
|
||
| ``` | ||
| direct_reporting_emissions_co2_production = | ||
| direct_co2_input_content_carriers_fossil + | ||
| direct_co2_input_utilisation_fossil - | ||
| direct_co2_output_content_carriers_fossil | ||
| ``` | ||
| #### Molecule node implementation | ||
| There are molecule nodes that represent statically modelled CO2 emissions in the ETM by reading these CO2 flows from the dataset-specific `emissions.csv`. The method determines CO2 production based on the flow going through such nodes that have input of `co2`. | ||
|
|
||
| ### CO2 capture | ||
| This represents the capture of both **fossil** and **biogenic** CO2. | ||
|
|
||
| #### Energy node implementation | ||
| Summing fossil and biogenic captured CO2: | ||
|
|
||
| ``` | ||
| direct_reporting_emissions_co2_capture = | ||
| direct_co2_output_production_capture_fossil + | ||
| direct_co2_output_production_capture_biogenic | ||
| ``` | ||
|
|
||
| #### Molecule node implementation | ||
| It takes the CO2 demand of molecule nodes with group `ccus_captured`. Effectively, this means captured CO2 in industry (which is not modelled on the energy nodes), direct air capture and LULUCF CO2 removal are included. | ||
|
|
||
| ### Other GHG emissions | ||
| This flow represents other GHG emissions (for example CH4 and N2O), expressed in kg CO2-eq. It only has an implementation for molecule nodes as other GHG emissions are not dynamically calculated (note: it is queryable on energy nodes but always gives back zero). The method determines other GHG emissions based on the molecule nodes that have input of `other_ghg`, which is only the case for molecule nodes that read static emissions data from the `emissions.csv` file. | ||
|
|
||
| ### Total GHG emissions | ||
| This flow represents the total reporting GHG emissions. It is composed of the total gross CO2 production minus captured CO2 (which gives actual CO2 emitted) plus other GHG emissions. The implementation is the same for both energy and molecule nodes. | ||
|
|
||
| ``` | ||
| direct_reporting_emissions_total_ghg_emissions = | ||
| direct_reporting_emissions_co2_production - | ||
| direct_reporting_emissions_co2_capture + | ||
| direct_reporting_emissions_other_ghg_emissions | ||
| ``` | ||
|
|
||
| ## Complete list of method keys | ||
| Below is the complete list of the method keys already provided in the text above. | ||
|
|
||
| *CO2 flow methods - fossil*: | ||
| ``` | ||
| direct_co2_input_content_carriers_fossil | ||
| direct_co2_input_utilisation_fossil | ||
| direct_co2_output_content_carriers_fossil | ||
| direct_co2_output_production_capture_fossil | ||
| direct_co2_output_production_emissions_fossil | ||
| ``` | ||
|
|
||
| *CO2 flow methods - biogenic*: | ||
| ``` | ||
| direct_co2_input_content_carriers_biogenic | ||
| direct_co2_output_content_carriers_biogenic | ||
| direct_co2_output_production_capture_biogenic | ||
| direct_co2_output_production_emissions_biogenic | ||
| ``` | ||
|
|
||
| *Reporting emission methods*: | ||
| ``` | ||
| direct_reporting_emissions_co2_production | ||
| direct_reporting_emissions_co2_capture | ||
| direct_reporting_emissions_other_ghg_emissions | ||
| direct_reporting_emissions_total_ghg_emissions | ||
| ``` | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.