ERW improvements & documentation - #2411
Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates REMIND’s Enhanced Rock Weathering (ERW) representation by correcting cost parameterization to match stated literature assumptions, improving unit/assumption documentation, and introducing a configurable per-ton rock CO₂ removal potential while removing the deprecated annual rock-spreading cap.
Changes:
- Remove the
cm_LimRockannual rock-spreading limit (including equation/parameter scaffolding and standalone templates). - Rename
s33_co2_rem_pottos33_rockRemPotand introducecm_33_EW_rockRemPotto vary ERW removal potential per ton of rock. - Update ERW cost assumptions/documentation and clarify unit conversions in input handling.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| standalone/trade/trade.gms | Removes deprecated cm_LimRock switch from standalone trade template. |
| standalone/template.gms | Removes deprecated cm_LimRock switch from standalone template. |
| standalone/MOFEX/MOFEX.gms | Removes deprecated cm_LimRock switch from standalone MOFEX template. |
| modules/33_carbonRemoval/portfolio/realization.gms | Updates ERW module header comments to drop cm_LimRock references. |
| modules/33_carbonRemoval/portfolio/equations.gms | Switches ERW emissions equation to s33_rockRemPot and removes cm_LimRock constraint equation. |
| modules/33_carbonRemoval/portfolio/declarations.gms | Renames/removes ERW scalar/parameter declarations tied to old removal potential / rock limit. |
| modules/33_carbonRemoval/portfolio/datainput.gms | Defines s33_rockRemPot from new cm_33_EW_rockRemPot and removes regional allocation for global rock cap. |
| main.gms | Adds cm_33_EW_rockRemPot as a user-facing switch with explanatory documentation. |
| core/input/generisdata_tech.prn | Adjusts ERW (weathering) cost parameters and documents the parameterization. |
| core/datainput.gms | Expands unit-conversion documentation to explicitly include weathering units. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 12 out of 12 changed files in this pull request and generated 9 comments.
Comments suppressed due to low confidence (2)
core/input/generisdata_tech.prn:4
- Typo in the inco0 definition line (“indutry”). Since this line was updated, it’s a good moment to correct it to avoid propagating the typo into generated docs.
inco0 Initial investment costs given in $[2015] / kW[output] capacity; for dac/prc cc: $[2015] / (tC[captured]/a); for other indutry prc: $[2015]/(t[output]/a); for weathering: $[2015]/(t rock/a)
main.gms:1091
- cm_33_EW_rockRemPot is introduced as a new scenario parameter but the description string omits its unit, unlike surrounding switches. Adding the unit makes scenario configuration less error-prone.
cm_33_EW_rockRemPot "Maximum CO2 removal potential per ton of rock."
robertsalzwedel
left a comment
There was a problem hiding this comment.
Looks great. There is minor inconsistencies which I would resolve.
The slightly more important thing I Would fix is that the transport / spreading split isnt clear to me at the moment. This is mostly a matter of inconsistent wording (sometimes it is spreading, sometimes it is transport). Using the same terminology throughout, and noting what is actually contained would improve this significantly.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 13 out of 13 changed files in this pull request and generated no new comments.
Suppressed comments (3)
core/input/generisdata_tech.prn:4
- Typo and formatting in the
inco0definition: the text says "indutry" and has a double space before the weathering unit, which makes the header harder to read/search.
inco0 Initial investment costs given in $[2015] / kW[output] capacity; for dac/prc cc: $[2015] / (tC[captured]/a); for other industry prc: $[2015]/(t[output]/a); for weathering: $[2015]/(t rock/a)
modules/33_carbonRemoval/portfolio/declarations.gms:15
s33_stepdocumentation still refers to the old variable/unit ("v33_weathering_onfield" and "Gt stone"). This is now inconsistent with the EW variables and the move from "stone" to "rock" terminology.
s33_step "size of bins in v33_weathering_onfield [Gt stone]" / 2.5 /
modules/33_carbonRemoval/portfolio/datainput.gms:47
- The documentation for the seconds-per-year conversion uses "3.155^7", but the actual calculation uses
3.155*10**7. The current comment is misleading and looks like an exponentiation.
*' * 3.155^7 s/a * specific surface area(depending on grain size s33_rockGrainSize)
Purpose of this PR
This PR improves our modeling of Enhanced Rock Weathering:
33_CarbonRemovalmodule. Therefore, theinco0in generisdata_tech were negligible. We move the cost calculation from the CDR module such that ERW costs are now a) implemented as any other technology through the core and b) there now are real CAPEX assumptions, providing a handle on upscaling via the adjustment cost (may be further addressed in the future). The specific implications:- Adjusted inco0 and omf in
generisdata_techto fit the assumption of 5 USD/t rock in Strefler et al.- removed
s33_costs_fix- renamed
vm_omcosts_cdrtovm_EW_transport_costsfor a more descriptive name (+ related adjustments inremind2, see PR)generisdata_techandcore/datainputcm_33_EW_rockRemPotnow allows to alter the maximum CO2 removal per ton of rock. Inmain.gms, explanations for variation of this assumption due to a) variation of the theoretical potential due to chemical differences (i.e. 0.3 t CO2 / t basalt is only an average) and b) loss pathways, because dissolution of rock does not necessarily translate into CDR. Sources are given in33_carbonRemoval/portfolio/datainput.s33_CO2_rem_potintos33_rockRemPotto be more descriptive and match the name of the new switch. This requires a change ofreportLCOEinremind2, see PRcm_gs_ew. Introduces insteads33_rockGrainSize--> can still easily change the rock grain size assumption in a central place if neededType of change
Indicate the items relevant for your PR by replacing ◻️ with ☑️.
Do not delete any lines. This makes it easier to understand which areas are affected by your changes and which are not.
Parts concerned
Impact
Checklist
Do not delete any line. Leave unfinished elements unchecked so others know how far along you are.
In the end all checkboxes must be ticked before you can merge.
make test) after my final commit and all tests pass (FAIL 0)remind2if and where it was neededforbiddenColumnNamesin readCheckScenarioConfig.R in case the PR leads to deprecated switchesCHANGELOG.mdcorrectly (added, changed, fixed, removed, input data/calibration)Further information (optional)
In EC500 runs, ERW decreases due to the increase in cost.
In PB750 runs, it is significantly reduced, except for IND and OAS. Main drivers thereof are the constant CO2 price post global net zero emissions, in combination with the net negative emissions tax.
More information in this issue