Skip to content

Fix industry biosolids historical shares#2397

Merged
clarabachorz merged 3 commits into
remindmodel:developfrom
clarabachorz:indiaIndstFix
Jul 9, 2026
Merged

Fix industry biosolids historical shares#2397
clarabachorz merged 3 commits into
remindmodel:developfrom
clarabachorz:indiaIndstFix

Conversation

@clarabachorz

@clarabachorz clarabachorz commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Purpose of this PR

With the new industry biosolids bound, historical biosolid shares were no longer enforced to allow the model to optimize freely. This, however, leads to issues in regions such as IND, where biosolids are not scaled up unless forced to. As a result, industry emissions were too high in the short term (2025).
This PR now bounds the share of industry biosolids on the total of both ETS+ES sectors (rather than separately like it was previously done).

Fix for https://github.com/remindmodel/development_issues/issues/778.

cs2: /p/tmp/claraba/remind/compScen-IndFix_NPi2025-2026-07-08_17.10.35-H12.pdf

Type of change

Parts concerned

  • ☑️ GAMS Code
  • ◻️ R-scripts
  • ◻️ Documentation (GAMS incode documentation, comments, tutorials)
  • ◻️ Input data / CES parameters
  • ◻️ Tests, CI/CD (continuous integration/deployment)
  • ◻️ Configuration (switches in main.gms, default.cfg, and scenario_config*.csv files)
  • ◻️ Other (please give a description)

Impact

  • ☑️ Bug fix
  • ◻️ Refactoring
  • ◻️ New feature
  • ◻️ Change of parameter values or input data (including CES parameters)
  • ◻️ Minor change (default scenarios show only small differences)
  • ◻️ Fundamental change of results of default scenarios

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
.

  • I executed the automated model tests (make test) after my final commit and all tests pass (FAIL 0)
  • I adjusted the reporting in remind2 if and where it was needed
  • I adjusted the madrat packages (mrremind and other packages involved) for input data generation if and where it was needed
  • My code follows the coding etiquette
  • I explained my changes within the PR, particularly in hard-to-understand areas
  • I checked that the in-code documentation is up-to-date
  • I adjusted forbiddenColumnNames in readCheckScenarioConfig.R in case the PR leads to deprecated switches
  • I updated the CHANGELOG.md correctly (added, changed, fixed, removed, input data/calibration)

Further information

  • Comparison of results (what changes by this PR?):
  • red is current develop branch
  • green is an intermediate test of removing the bound for India
  • blue is the final fix.

Industry emissions

image ### Biomass in SE solids image

@clarabachorz
clarabachorz marked this pull request as ready for review July 8, 2026 16:34
@clarabachorz
clarabachorz requested a review from fschreyer July 8, 2026 16:34

@fschreyer fschreyer left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks for tackling this so fast. Looks reasonable. I wasn't aware anymore that this historical share had been removed for industry solids in the PR before. Was just wondering why we need new equations for that.

Comment thread core/equations.gms
***---------------------------------------------------------------------------
*' Enforce historical data biomass share per carrier in sector final energy for transport and buildings (+- 2%)
*' Exempt industry solids as these are covered by the equation q37_limitBioSolidsIndst
*' Exempt industry solids as they are covered below

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Why do they need to be exempt here and we need another equation? Shouldn't applying the same bound to ETS and ES lead to very similar resutls?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

On why industry solids need to be exempt from q_shbiofe_up/lo:

The industry bound enforces a maximum of 30% biosolids in industry solids, but only for the ETS sectors (steel, cement, chemicals). OtherInd (ES) should have no such requirement. However, q_shbiofe_up/lo applies the historical bioshare target to ETS and ES markets independently. This led to a situation where, e.g. in the EU, both equations forced ~50% biosolids in ETS AND ES industry until 2020. The strict 30% ETS bound starts in 2025, creating some substantial jumps in solids bioshare in some regions.

Before this PR, I decided the best solution was to exempt industry solids here and rely exclusively on the new bounds from 2005 onwards to constrain ETS industry solids to a maximum of 30% biosolids.

Why we need a separate equation:

Since the 30% bound applies only to ETS sectors, I expect that the net historical bioshare is still broadly respected, with ES sectors compensating by using up a bigger share of biosolids. I had hoped the model would do this by itself, but this doesn't work in e.g. India, which led to the issue you raised. The new equations therefore bound the combined ETS+ES bioshare in industry solids, making sure otherInd (ES) makes up for the lower bio share in ETS sectors.

Nb. These aggregated equations across emiMkt could actually be applied to all sectors and FE, and replace q_shbiofe_up/lo entirely. I don't want to make such a change close to the new REMIND release, though. I could test it in a few days.

@clarabachorz
clarabachorz merged commit 818353a into remindmodel:develop Jul 9, 2026
2 checks passed
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.

2 participants