Skip to content

Add coupled ion-electron transfer intercalation kinetics - #5993

Open
aabills wants to merge 8 commits into
mainfrom
CIET
Open

aabills wants to merge 8 commits into
mainfrom
CIET

Conversation

@aabills

@aabills aabills commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Description

Adds "coupled ion-electron transfer" (CIET) as an "intercalation kinetics" option, following Fraggedakis et al. (2021). The Marcus-Hush-Chidsey rate is evaluated with the Zeng et al. (2014) asymptotic integral on the formal overpotential, so the current saturates at large overpotential instead of growing exponentially as with Butler-Volmer.

  • Parameters: the existing "... electrode reorganization energy [eV]" and a new temperature-dependent "... electrode coupled ion-electron transfer rate constant [A.m-2]" per electrode.
  • CIET needs a host lattice, so using it for the lithium metal electrode of a half-cell raises an OptionError that suggests setting kinetics per electrode, e.g. ("Marcus-Hush-Chidsey", "coupled ion-electron transfer"). Combining CIET with "exchange-current density": "current sigmoid" raises an OptionError, since CIET does not use the exchange-current density parameter.
  • The concentration lookup in BaseInterface moves into a helper so the new submodel can reuse it; behaviour of the existing kinetics is unchanged.

Type of change

Feature, with a CHANGELOG entry under ## Features.

Important checks:

  • Unit tests in test_coupled_ion_electron_transfer.py check zero current at equilibrium, the saturation plateau, the linear-response exchange current, and agreement with a numerical Marcus-Hush-Chidsey integral (the Zeng form is within 5% at the tested reorganization energy).
  • The option is added to the shared lithium-ion and half-cell model tests.
  • nox -s pre-commit and nox -s type-check pass locally.

🤖 Generated with Claude Code

aabills and others added 4 commits October 21, 2026 22:40
New "coupled ion-electron transfer" option for "intercalation kinetics"
(Fraggedakis et al. 2021), using the Zeng 2014 asymptotic Marcus-Hush-Chidsey
integral on the formal overpotential. Parameters are the existing
reorganization energy and a new temperature-dependent rate constant per
electrode. Lithium metal plating falls back to Marcus-Hush-Chidsey.

The concentration lookup in BaseInterface moves into a helper so the new
submodel can reuse it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The rate-law test now compares the submodel with a numerical
Marcus-Hush-Chidsey integral instead of a copy of the same formula.
CIET no longer cites Sripad 2020 except for the plating fallback, and
raises an OptionError with "exchange-current density": "current
sigmoid", which it would otherwise ignore.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.24%. Comparing base (5b81c32) to head (513b2f7).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #5993   +/-   ##
=======================================
  Coverage   98.23%   98.24%           
=======================================
  Files         350      351    +1     
  Lines       36104    36169   +65     
=======================================
+ Hits        35468    35533   +65     
  Misses        636      636           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

aabills and others added 4 commits October 27, 2026 21:55
CodeQL flagged CoupledIonElectronTransfer for skipping
MarcusHushChidsey.__init__. It now subclasses BaseKinetics and calls
MarcusHushChidsey._get_kinetics only for the lithium-plating fallback.
A unit test covers broadcasting x-averaged concentrations onto the
electrode domain, the one line Codecov reported as uncovered.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CIET used to fall back silently to Marcus-Hush-Chidsey for the lithium
metal electrode of a half-cell. It now raises an OptionError that points
to setting the kinetics per electrode, e.g.
("Marcus-Hush-Chidsey", "coupled ion-electron transfer").

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@aabills
aabills marked this pull request as ready for review October 28, 2026 21:03
@aabills
aabills requested a review from a team as a code owner October 28, 2026 21:03
@github-actions

Copy link
Copy Markdown
Contributor

🐰 Bencher Report

ProjectPyBaMM
BranchCIET
Testbedbare-metal

⚠️ WARNING: Truncated view!

The full continuous benchmarking report exceeds the maximum length allowed on this platform.

🐰 View full continuous benchmarking report in Bencher

This branch has not been deployed

No deployments
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