Skip to content

Merge PR #61 and migrate ethylene brownfield capacity - #2

Merged
langeluca merged 16 commits into
mainfrom
codex/pr-61-lifetime-installation-fix
Aug 1, 2026
Merged

langeluca merged 16 commits into
mainfrom
codex/pr-61-lifetime-installation-fix

Conversation

@langeluca

Copy link
Copy Markdown
Owner

What changed

  • Merge the source branch of fix: amortize installation impacts over a unit's lifetime output RWTH-LTT/optimex#61 into this fork while preserving the fork's existing commit history.
  • Resolve the CHANGES.md and lca_processor.py conflicts, retaining both the upstream identity-based background lookup and the fork's CAPEX/OPEX market-price metadata.
  • Migrate the ethylene case-study brownfield input to the new process-unit semantics.

Ethylene migration

The modeling assumption remains 0.5e9 kg ethylene/a per Steam Cracker vintage. With a 50-year lifetime and a production exchange totaling 1 kg over the lifetime, one process unit supplies 1/50 = 0.02 kg/a. The notebook therefore derives:

  • 0.5e9 / 0.02 = 25e9 installed process units per vintage
  • 25e9 * 0.02 = 0.5e9 kg/a annual capacity per vintage

The brownfield table now reports installed process units separately from annual production capacity.

Validation

  • Notebook JSON parsed successfully.
  • Static migration identity verified: 25e9 * 0.02 = 0.5e9 kg/a per vintage.
  • 78 tests passed and 3 were skipped across the PR-changed tests plus the fork's economics and foreground-database tests.
  • GLPK is unavailable locally, so GLPK-oriented test calls were mapped only inside the test process to the installed HiGHS solver; repository test code was not changed.

The full ethylene notebook was not executed against the local Brightway project in this validation.

TimoDiepers and others added 16 commits May 8, 2026 09:28
Agent-Logs-Url: https://github.com/RWTH-LTT/optimex/sessions/98d5a08c-042c-46e8-93f3-9271a9c3e3bd

Co-authored-by: TimoDiepers <90762029+TimoDiepers@users.noreply.github.com>
This reverts commit d8c0d02.

Co-authored-by: TimoDiepers <90762029+TimoDiepers@users.noreply.github.com>
…al-argument-foreground-db-name

Add configurable foreground database name to LCA processing
…ples-not-code

identify flows by tuples not code
…-in-evo-scenario

add baseline design in evolution scenario analysis
An installed unit's capacity was treated as available in every year of its
operation window, so one unit could deliver its whole lifetime production each
year. Installation-dependent flows (construction, end-of-life) were therefore
spread over too much output, under-counting them by the number of operating
years a vintage was dispatched.

Production and operation-dependent flows are now taken at the vintage's current
lifecycle stage tau = t - v, and the capacity bound compares unit counts:
var_operation[p, v, t] <= var_installation[p, v].

Postprocessing capacity outputs report annual capacity, so they stay comparable
with production; get_installation returns unit counts, which are a lifetime
quantity. Docstrings, docs and changelog state the convention explicitly.
# Conflicts:
#	CHANGES.md
#	src/optimex/lca_processor.py
@langeluca
langeluca marked this pull request as ready for review August 1, 2026 13:41
@langeluca
langeluca merged commit 49e18ce into main Aug 1, 2026
12 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.

3 participants