Skip to content

Add biosolids share limit to industry#2335

Open
clarabachorz wants to merge 6 commits into
remindmodel:developfrom
clarabachorz:develop-limitBioSolidsIndst
Open

Add biosolids share limit to industry#2335
clarabachorz wants to merge 6 commits into
remindmodel:developfrom
clarabachorz:develop-limitBioSolidsIndst

Conversation

@clarabachorz
Copy link
Copy Markdown
Contributor

@clarabachorz clarabachorz commented Apr 28, 2026

Purpose of this PR

The industry module does not currently set a limit on the amount of biosolids that can be used. However, in industry sectors that use solids (mostly cement and steel), biomass is only partly substitutable due to technical limitations. In the steel sector, this is around 30% based on current literature. We implement this in q37_limitBioSolidsIndst using v37_shSolidsIndst.

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:
    FE in industry:
image

Co2 prices:
image

@clarabachorz clarabachorz requested a review from JakobBD April 29, 2026 15:25
@clarabachorz clarabachorz marked this pull request as ready for review April 29, 2026 15:26
@JakobBD
Copy link
Copy Markdown
Contributor

JakobBD commented May 11, 2026

How does this PR relate to this bio-solids limit and to this issue?

@JakobBD
Copy link
Copy Markdown
Contributor

JakobBD commented May 21, 2026

To expand on my previous comment:

Existing bound

There is already a limit of bio-solids in the industry sector. It's set to 25 % of the BAU (NPi) industry solids use. Which means that either of the two can become tighter: If industry solids in the PkBudg is reduced by more than 16 % compared with NPi, your new bound is tighter. Else it's the existing one.

I find this confusing. I find it especially confusing that these two bounds are implemented in different places in the code with no reference to each other.

I would be in favor of removing the existing bound and keeping yours, it seems to make more sense to me. But you'd have to double check cement BECCS (especially in PkBudg650 runs), because that was seemingly the reason to introduce that bound in the first place.

If you keep it, make sure they're as close to each other as possible in the source code (possibly even joining them), and/or reference each other in the in-code doc.

Felix's issue

Felix wants to get rid of the bio bound. He put a lot of thought and work into this. His arguments:

I don't think it is a good way to enforce these hard bounds as it forces to keep fossils in as long as there are solids. And for the CES function it is really hard to reduce solids to 0 if they are non-zero in the baseline run. I think it is especially important for fossil phase-out runs ( @lecfab).

As I wrote over there, I think a hard bound for bio in steel makes absolute sense. I lack knowledge for the other sectors, but don't see a strict reason for bounds there: It's mostly used as energy input, right? Except for some CHA chemicals feedstocks? Do energy density and achievable temperatures restrict bio use for energy inputs? If so, to what extent?

I also don't know if they want to try to remedy the performance issues.

Before you move further with this: If you haven't done so, please read the whole thread there, and coordinate with Felix (and Fabrice). Then comment on Felix's issue with your common conclusions, and possibly close it.

@JakobBD
Copy link
Copy Markdown
Contributor

JakobBD commented May 21, 2026

Further point:

Could you please either share a path to your cs2 pdf, or check and comment yourself on remindmodel/development_issues#419 whether your changes here have any effect on this.

@clarabachorz
Copy link
Copy Markdown
Contributor Author

Thanks. Here are some clarifications on the points raised above, now that @fschreyer and I have discussed the bound.

On the existing bound

I have decided to remove it. A strict bound based on biomass substitution potential limits is more defensible (see section below). The results do not change much in the short term when replacing this old bound by the new one (cement BECCS was the cited justification for the old bound, but it is kept in check by the new bound). The new bound now better constrains biosolids usage in 2050 and beyond (potentially relevant for @lecfab).
See below the cs2 file for default develop runs (with the old bound) vs new runs (with only the new bound).

Cs2 paths:

  • /p/tmp/claraba/remind/compScen-newBioBound_compWithOldScens-2026-05-27_10.00.39-H12.pdf
  • /p/tmp/claraba/remind/compScen-newBioBound_compWithOldScens-2026-05-27_10.00.39-H12-to2050.pdf

Cement CCS (cited as the justification for the old bound) is still the same

image

Solids biomass in Industry

image

On using a hard bound for biosolids in Industry

@fschreyer and I discussed this. Felix is happy with a hard bound, as long as it can be justified across industry sectors (since the bound applies to steel, cement and chemicals). Cement is the other key sector that uses solids, and after quickly checking, substituting biomass is also limited to 20-30% according to this study. So I think a hard bound absolutely makes sense here.
This means we can close https://github.com/remindmodel/development_issues/issues/667.

On https://github.com/remindmodel/development_issues/issues/419

Unfortunately, the new bound does not fix this:
image

@clarabachorz clarabachorz requested a review from fschreyer May 27, 2026 10:15
Copy link
Copy Markdown
Contributor

@fschreyer fschreyer left a comment

Choose a reason for hiding this comment

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

Great! I think this is a good pragmatic and more transparent solution. I raised two things to check in the issue. Maybe let's continue discussing there about details.

q37_limitBioSolidsIndst(t,regi,entyFe)$((t.val ge 2025) AND sameas(entyFe,"fesos"))..
v37_shSolidsIndst(t,regi)
*
sum((entySe,te)$se2fe(entySe,entyFe,te), vm_demFeSector_afterTax(t,regi,entySe,entyFe,"indst","ETS"))
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.

I prefer line breaks in summation statements like

sum((entySe,te)$se2fe(entySe,entyFe,te), 
  vm_demFeSector_afterTax(t,regi,entySe,entyFe,"indst","ETS"))
...

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.

3 participants