Latest commit

History

65 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DiffEC

This is a the code repository accompanies with "Differentiable Electrochemistry: A Paradigm Characterizing Physical Laws in Electrochemical Systems" submitted to ACS Energy Letters.

This repository features differentiable simulation of voltammetry covering diffusion, migration and convection, along with both Butler-Volmer and Marcus-Hush-Chidsey kinetics. These partial differential equations (PDEs) are solved with mostly Finite Difference method (implicit Euler scheme) or Finite Element method. In short, electrochemical simulations are made end-to-end differentiable for parameter estimation and optimization.

The purposes of this repository are twofold:

  • Introducing the art of differentiable simulations to electrochemists with abundant transferable simulators and case studies (tutorials)
  • Applying Differentiable Electrochemistry simulations to solve bottleneck problems in electrochemistry

The electrochemical simulations used Finite Difference (FD) or Finite Element (FE) methods, and made differentiable using JAX.

TOC

A worflow of formulating a Differentiable Electrochemistry simulator and performing computation on large clusters. To enable ensemble prediction, there are multiple DiffECManager running in parallel. Each DiffEC manager initiates a sequence of N DiffECWorker for N epochs of optimization. A Slurm workload manager is used to coordinate compute. A graphical illustration is shown below:

DiffECWorkflow

Requirements

Software Requirements

Python 3.11 and JAX 0.4.34

It's also very important to enable float64 for JAX to enable high precision computing. float32 by default will not work for some cases. In the Python script, and after JAX import,

jax.config.update("jax_enable_x64", True)

Hardware Requirements

Hardware requirements varies in the forward vs. reverse mode. If simulations are performed only in the forward mode, the memory requirement is similar to conventional simulator (a few Gigabytes would suffice). On the contrary, if simulations are performed in the reverse mode for gradient computation, the memory requirement scales with the space and time steps during the simulation. For nonlinear or linear problems, ~80 or 10 GB is recommended.

Tutorials

To enable users to jump-start Differentiable Electrochemistry simulator and learn how to make an electrochemical simulator differentiable, we have developed the tutorial notebook (Tutorial.ipynb) to offer a step-by-step guide on how to use JAX, and how to implement a differentiable simulator with JAX. The tutorials have the following sections.

  1. Automatic Differentiation for Linear Regression with JAX
  2. Differentiable simulation for electrochemical kinetics
  3. Implementing a differentiable finite-difference simulator. Note that a conventional simulator implemented using JAX is also provided for "side-by-side" comparison.
  4. Differentiable simulator and parameter estimation for Fe Redox Voltammetry. This section offers a "production" example on how to perform DiffEC on real experimental data.

Differentiable Simulators

Since Differentiable Simulation is a new regime in scientific modeling, it is thus very important for beginners to learn the art of differentiable simulation and differentiable simulation in the context of electrochemistry. In here, five simulators that are fully differentiable and transferable are provided to enlighten readers the art of differentiable simulation. They five differentiable simulators are:

  1. Fundamental Cyclic Voltammetry Simulator. Models the simplest one-electron redox reaction.
  2. Voltammetry in Weakly Supported Media. Extends fundamental CV with electrolyte migration effects by solving Nernst-Planck-Poisson equation. BV and MHC kinetics are supported.
  3. Dissociative EC Simulator. Models coupled chemical-electrochemical mechanisms, where a species dissociates chemically before electron transfer. A <-> B+C , B+e- <-> D.
  4. Hydrodynamic Voltammetry Simulator. Models rotating-disk electrode (RDE) experiments under convection-diffusion mass transport.
  5. Electrochemical Adsorption/Desorption Simulator. Simulates surface-confined redox reactions and Langmuir isotherm adsorption/desorption processes. The mechanism is shown below: Electrochemical Adsorption/Desorption Mechanism

Overall, these simulators cover a broad range of electrochemical phenomena (diffusion, migration, convection, and coupled reactions), and are differentiable with respect to key physicochemical parameters, enabling gradient-based fitting, sensitivity analysis, and machine learning integration.

Proof-of-Concept Case Studies

  • Voltammetry in weakly supported media BV kinetics Estimating electrochemical kinetics from Butler-Volmer or Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Voltammetry in weakly supported media MHC kinetics Estimating electrochemical kinetics from Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Chronoamperometry of acetic acid reduction Estimating nonlinear chemical kinetics with convergent diffusion mass transport
  • Differentiable Electrochemistry for voltammetry of adsorbed species A total of 10 parameters are discovered simultaneously with gradient-based optimization!
  • Hydrodynamic voltammetry Estimating kinematic viscosity with convection-diffusion mass transport. This example is available at https://colab.research.google.com/drive/1Pq3szUPe8uvd9pw-ZVAZSCmX8nQH2CSM?usp=sharing
  • Adsorption/Desorption Simultaneously discover 10 parameters from a set of voltammograms. This example is featured in the DiffEC Adsorption folder in the main directory.

Experimental Application

  • Differentiable Electrochemistry for Fe3+/Fe2+ redox couple Electrochemical rate constant, average diffusion coefficient, cathodic and anodic electrochemical rate constants are simultaneously discovered from multiple voltammograms at different scan rates. This is a major advancement from conventional Tafel analysis and Nicholson method.
  • Differentiable Electrochemistry for RuHex redox couple Since the RuHex couple is usually considered fully reversible, the formal potential and average diffusion coefficients are discovered.
  • Transfer coefficient from LSV on Rotating Disk Electrode Using differentiable electrochemistry to build a direct correlation between linear sweep voltammogram of Hydrogen Evolution Reaction with its transfer coefficient and electrochemical rate constant. In this example, Differentiable Electrochemistry analyzed the HER LSV data reported by Koper et al.(ACS Energy Lett. 2024, 9, 4, 1871–1879) by fully accounting for convection-diffusion mass transport and kinetics. A "Tafel Region" is unnecessary.
  • Mechanistic Identification of Li electrodeposition/stripping. Using transient voltammetry data reported by Boyel et al. (ACS Energy Lett. 2020, 5, 3, 701–709), Differentiable Electrochemistry is applied to fit transient data with Marcus-Hush (MH),Marcus-Hush-Chidsey (MHC), and the approximate Marcus-Hush-Chidsey (JEAC, 735, 77, 2014). Notably, we enabled direct parameterization of MHC without approximation.
  • Mass transport in concentrated electrolytes Estimating salt diffusivity and transference number from Operando concentration and velocities fields from XAM and XPCS with concentrated solution theory.

Issue Reports

We recommend issue reports in the Discussions channel.

Cite

Please cite as our published paper at ACS Energy Lett. 2026, 11, 2, 2005–2018. Thank you!

About

Differentiable Electrochemistry Simulation Supporting Diffusion, Migration and Convection

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

65 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DiffEC

This is a the code repository accompanies with "Differentiable Electrochemistry: A Paradigm Characterizing Physical Laws in Electrochemical Systems" submitted to ACS Energy Letters.

This repository features differentiable simulation of voltammetry covering diffusion, migration and convection, along with both Butler-Volmer and Marcus-Hush-Chidsey kinetics. These partial differential equations (PDEs) are solved with mostly Finite Difference method (implicit Euler scheme) or Finite Element method. In short, electrochemical simulations are made end-to-end differentiable for parameter estimation and optimization.

The purposes of this repository are twofold:

  • Introducing the art of differentiable simulations to electrochemists with abundant transferable simulators and case studies (tutorials)
  • Applying Differentiable Electrochemistry simulations to solve bottleneck problems in electrochemistry

The electrochemical simulations used Finite Difference (FD) or Finite Element (FE) methods, and made differentiable using JAX.

TOC

A worflow of formulating a Differentiable Electrochemistry simulator and performing computation on large clusters. To enable ensemble prediction, there are multiple DiffECManager running in parallel. Each DiffEC manager initiates a sequence of N DiffECWorker for N epochs of optimization. A Slurm workload manager is used to coordinate compute. A graphical illustration is shown below:

DiffECWorkflow

Requirements

Software Requirements

Python 3.11 and JAX 0.4.34

It's also very important to enable float64 for JAX to enable high precision computing. float32 by default will not work for some cases. In the Python script, and after JAX import,

jax.config.update("jax_enable_x64", True)

Hardware Requirements

Hardware requirements varies in the forward vs. reverse mode. If simulations are performed only in the forward mode, the memory requirement is similar to conventional simulator (a few Gigabytes would suffice). On the contrary, if simulations are performed in the reverse mode for gradient computation, the memory requirement scales with the space and time steps during the simulation. For nonlinear or linear problems, ~80 or 10 GB is recommended.

Tutorials

To enable users to jump-start Differentiable Electrochemistry simulator and learn how to make an electrochemical simulator differentiable, we have developed the tutorial notebook (Tutorial.ipynb) to offer a step-by-step guide on how to use JAX, and how to implement a differentiable simulator with JAX. The tutorials have the following sections.

  1. Automatic Differentiation for Linear Regression with JAX
  2. Differentiable simulation for electrochemical kinetics
  3. Implementing a differentiable finite-difference simulator. Note that a conventional simulator implemented using JAX is also provided for "side-by-side" comparison.
  4. Differentiable simulator and parameter estimation for Fe Redox Voltammetry. This section offers a "production" example on how to perform DiffEC on real experimental data.

Differentiable Simulators

Since Differentiable Simulation is a new regime in scientific modeling, it is thus very important for beginners to learn the art of differentiable simulation and differentiable simulation in the context of electrochemistry. In here, five simulators that are fully differentiable and transferable are provided to enlighten readers the art of differentiable simulation. They five differentiable simulators are:

  1. Fundamental Cyclic Voltammetry Simulator. Models the simplest one-electron redox reaction.
  2. Voltammetry in Weakly Supported Media. Extends fundamental CV with electrolyte migration effects by solving Nernst-Planck-Poisson equation. BV and MHC kinetics are supported.
  3. Dissociative EC Simulator. Models coupled chemical-electrochemical mechanisms, where a species dissociates chemically before electron transfer. A <-> B+C , B+e- <-> D.
  4. Hydrodynamic Voltammetry Simulator. Models rotating-disk electrode (RDE) experiments under convection-diffusion mass transport.
  5. Electrochemical Adsorption/Desorption Simulator. Simulates surface-confined redox reactions and Langmuir isotherm adsorption/desorption processes. The mechanism is shown below: Electrochemical Adsorption/Desorption Mechanism

Overall, these simulators cover a broad range of electrochemical phenomena (diffusion, migration, convection, and coupled reactions), and are differentiable with respect to key physicochemical parameters, enabling gradient-based fitting, sensitivity analysis, and machine learning integration.

Proof-of-Concept Case Studies

  • Voltammetry in weakly supported media BV kinetics Estimating electrochemical kinetics from Butler-Volmer or Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Voltammetry in weakly supported media MHC kinetics Estimating electrochemical kinetics from Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Chronoamperometry of acetic acid reduction Estimating nonlinear chemical kinetics with convergent diffusion mass transport
  • Differentiable Electrochemistry for voltammetry of adsorbed species A total of 10 parameters are discovered simultaneously with gradient-based optimization!
  • Hydrodynamic voltammetry Estimating kinematic viscosity with convection-diffusion mass transport. This example is available at https://colab.research.google.com/drive/1Pq3szUPe8uvd9pw-ZVAZSCmX8nQH2CSM?usp=sharing
  • Adsorption/Desorption Simultaneously discover 10 parameters from a set of voltammograms. This example is featured in the DiffEC Adsorption folder in the main directory.

Experimental Application

  • Differentiable Electrochemistry for Fe3+/Fe2+ redox couple Electrochemical rate constant, average diffusion coefficient, cathodic and anodic electrochemical rate constants are simultaneously discovered from multiple voltammograms at different scan rates. This is a major advancement from conventional Tafel analysis and Nicholson method.
  • Differentiable Electrochemistry for RuHex redox couple Since the RuHex couple is usually considered fully reversible, the formal potential and average diffusion coefficients are discovered.
  • Transfer coefficient from LSV on Rotating Disk Electrode Using differentiable electrochemistry to build a direct correlation between linear sweep voltammogram of Hydrogen Evolution Reaction with its transfer coefficient and electrochemical rate constant. In this example, Differentiable Electrochemistry analyzed the HER LSV data reported by Koper et al.(ACS Energy Lett. 2024, 9, 4, 1871–1879) by fully accounting for convection-diffusion mass transport and kinetics. A "Tafel Region" is unnecessary.
  • Mechanistic Identification of Li electrodeposition/stripping. Using transient voltammetry data reported by Boyel et al. (ACS Energy Lett. 2020, 5, 3, 701–709), Differentiable Electrochemistry is applied to fit transient data with Marcus-Hush (MH),Marcus-Hush-Chidsey (MHC), and the approximate Marcus-Hush-Chidsey (JEAC, 735, 77, 2014). Notably, we enabled direct parameterization of MHC without approximation.
  • Mass transport in concentrated electrolytes Estimating salt diffusivity and transference number from Operando concentration and velocities fields from XAM and XPCS with concentrated solution theory.

Issue Reports

We recommend issue reports in the Discussions channel.

Cite

Please cite as our published paper at ACS Energy Lett. 2026, 11, 2, 2005–2018. Thank you!

About

Differentiable Electrochemistry Simulation Supporting Diffusion, Migration and Convection

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

65 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DiffEC

This is a the code repository accompanies with "Differentiable Electrochemistry: A Paradigm Characterizing Physical Laws in Electrochemical Systems" submitted to ACS Energy Letters.

This repository features differentiable simulation of voltammetry covering diffusion, migration and convection, along with both Butler-Volmer and Marcus-Hush-Chidsey kinetics. These partial differential equations (PDEs) are solved with mostly Finite Difference method (implicit Euler scheme) or Finite Element method. In short, electrochemical simulations are made end-to-end differentiable for parameter estimation and optimization.

The purposes of this repository are twofold:

  • Introducing the art of differentiable simulations to electrochemists with abundant transferable simulators and case studies (tutorials)
  • Applying Differentiable Electrochemistry simulations to solve bottleneck problems in electrochemistry

The electrochemical simulations used Finite Difference (FD) or Finite Element (FE) methods, and made differentiable using JAX.

TOC

A worflow of formulating a Differentiable Electrochemistry simulator and performing computation on large clusters. To enable ensemble prediction, there are multiple DiffECManager running in parallel. Each DiffEC manager initiates a sequence of N DiffECWorker for N epochs of optimization. A Slurm workload manager is used to coordinate compute. A graphical illustration is shown below:

DiffECWorkflow

Requirements

Software Requirements

Python 3.11 and JAX 0.4.34

It's also very important to enable float64 for JAX to enable high precision computing. float32 by default will not work for some cases. In the Python script, and after JAX import,

jax.config.update("jax_enable_x64", True)

Hardware Requirements

Hardware requirements varies in the forward vs. reverse mode. If simulations are performed only in the forward mode, the memory requirement is similar to conventional simulator (a few Gigabytes would suffice). On the contrary, if simulations are performed in the reverse mode for gradient computation, the memory requirement scales with the space and time steps during the simulation. For nonlinear or linear problems, ~80 or 10 GB is recommended.

Tutorials

To enable users to jump-start Differentiable Electrochemistry simulator and learn how to make an electrochemical simulator differentiable, we have developed the tutorial notebook (Tutorial.ipynb) to offer a step-by-step guide on how to use JAX, and how to implement a differentiable simulator with JAX. The tutorials have the following sections.

  1. Automatic Differentiation for Linear Regression with JAX
  2. Differentiable simulation for electrochemical kinetics
  3. Implementing a differentiable finite-difference simulator. Note that a conventional simulator implemented using JAX is also provided for "side-by-side" comparison.
  4. Differentiable simulator and parameter estimation for Fe Redox Voltammetry. This section offers a "production" example on how to perform DiffEC on real experimental data.

Differentiable Simulators

Since Differentiable Simulation is a new regime in scientific modeling, it is thus very important for beginners to learn the art of differentiable simulation and differentiable simulation in the context of electrochemistry. In here, five simulators that are fully differentiable and transferable are provided to enlighten readers the art of differentiable simulation. They five differentiable simulators are:

  1. Fundamental Cyclic Voltammetry Simulator. Models the simplest one-electron redox reaction.
  2. Voltammetry in Weakly Supported Media. Extends fundamental CV with electrolyte migration effects by solving Nernst-Planck-Poisson equation. BV and MHC kinetics are supported.
  3. Dissociative EC Simulator. Models coupled chemical-electrochemical mechanisms, where a species dissociates chemically before electron transfer. A <-> B+C , B+e- <-> D.
  4. Hydrodynamic Voltammetry Simulator. Models rotating-disk electrode (RDE) experiments under convection-diffusion mass transport.
  5. Electrochemical Adsorption/Desorption Simulator. Simulates surface-confined redox reactions and Langmuir isotherm adsorption/desorption processes. The mechanism is shown below: Electrochemical Adsorption/Desorption Mechanism

Overall, these simulators cover a broad range of electrochemical phenomena (diffusion, migration, convection, and coupled reactions), and are differentiable with respect to key physicochemical parameters, enabling gradient-based fitting, sensitivity analysis, and machine learning integration.

Proof-of-Concept Case Studies

  • Voltammetry in weakly supported media BV kinetics Estimating electrochemical kinetics from Butler-Volmer or Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Voltammetry in weakly supported media MHC kinetics Estimating electrochemical kinetics from Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Chronoamperometry of acetic acid reduction Estimating nonlinear chemical kinetics with convergent diffusion mass transport
  • Differentiable Electrochemistry for voltammetry of adsorbed species A total of 10 parameters are discovered simultaneously with gradient-based optimization!
  • Hydrodynamic voltammetry Estimating kinematic viscosity with convection-diffusion mass transport. This example is available at https://colab.research.google.com/drive/1Pq3szUPe8uvd9pw-ZVAZSCmX8nQH2CSM?usp=sharing
  • Adsorption/Desorption Simultaneously discover 10 parameters from a set of voltammograms. This example is featured in the DiffEC Adsorption folder in the main directory.

Experimental Application

  • Differentiable Electrochemistry for Fe3+/Fe2+ redox couple Electrochemical rate constant, average diffusion coefficient, cathodic and anodic electrochemical rate constants are simultaneously discovered from multiple voltammograms at different scan rates. This is a major advancement from conventional Tafel analysis and Nicholson method.
  • Differentiable Electrochemistry for RuHex redox couple Since the RuHex couple is usually considered fully reversible, the formal potential and average diffusion coefficients are discovered.
  • Transfer coefficient from LSV on Rotating Disk Electrode Using differentiable electrochemistry to build a direct correlation between linear sweep voltammogram of Hydrogen Evolution Reaction with its transfer coefficient and electrochemical rate constant. In this example, Differentiable Electrochemistry analyzed the HER LSV data reported by Koper et al.(ACS Energy Lett. 2024, 9, 4, 1871–1879) by fully accounting for convection-diffusion mass transport and kinetics. A "Tafel Region" is unnecessary.
  • Mechanistic Identification of Li electrodeposition/stripping. Using transient voltammetry data reported by Boyel et al. (ACS Energy Lett. 2020, 5, 3, 701–709), Differentiable Electrochemistry is applied to fit transient data with Marcus-Hush (MH),Marcus-Hush-Chidsey (MHC), and the approximate Marcus-Hush-Chidsey (JEAC, 735, 77, 2014). Notably, we enabled direct parameterization of MHC without approximation.
  • Mass transport in concentrated electrolytes Estimating salt diffusivity and transference number from Operando concentration and velocities fields from XAM and XPCS with concentrated solution theory.

Issue Reports

We recommend issue reports in the Discussions channel.

Cite

Please cite as our published paper at ACS Energy Lett. 2026, 11, 2, 2005–2018. Thank you!

About

Differentiable Electrochemistry Simulation Supporting Diffusion, Migration and Convection

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

65 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DiffEC

This is a the code repository accompanies with "Differentiable Electrochemistry: A Paradigm Characterizing Physical Laws in Electrochemical Systems" submitted to ACS Energy Letters.

This repository features differentiable simulation of voltammetry covering diffusion, migration and convection, along with both Butler-Volmer and Marcus-Hush-Chidsey kinetics. These partial differential equations (PDEs) are solved with mostly Finite Difference method (implicit Euler scheme) or Finite Element method. In short, electrochemical simulations are made end-to-end differentiable for parameter estimation and optimization.

The purposes of this repository are twofold:

  • Introducing the art of differentiable simulations to electrochemists with abundant transferable simulators and case studies (tutorials)
  • Applying Differentiable Electrochemistry simulations to solve bottleneck problems in electrochemistry

The electrochemical simulations used Finite Difference (FD) or Finite Element (FE) methods, and made differentiable using JAX.

TOC

A worflow of formulating a Differentiable Electrochemistry simulator and performing computation on large clusters. To enable ensemble prediction, there are multiple DiffECManager running in parallel. Each DiffEC manager initiates a sequence of N DiffECWorker for N epochs of optimization. A Slurm workload manager is used to coordinate compute. A graphical illustration is shown below:

DiffECWorkflow

Requirements

Software Requirements

Python 3.11 and JAX 0.4.34

It's also very important to enable float64 for JAX to enable high precision computing. float32 by default will not work for some cases. In the Python script, and after JAX import,

jax.config.update("jax_enable_x64", True)

Hardware Requirements

Hardware requirements varies in the forward vs. reverse mode. If simulations are performed only in the forward mode, the memory requirement is similar to conventional simulator (a few Gigabytes would suffice). On the contrary, if simulations are performed in the reverse mode for gradient computation, the memory requirement scales with the space and time steps during the simulation. For nonlinear or linear problems, ~80 or 10 GB is recommended.

Tutorials

To enable users to jump-start Differentiable Electrochemistry simulator and learn how to make an electrochemical simulator differentiable, we have developed the tutorial notebook (Tutorial.ipynb) to offer a step-by-step guide on how to use JAX, and how to implement a differentiable simulator with JAX. The tutorials have the following sections.

  1. Automatic Differentiation for Linear Regression with JAX
  2. Differentiable simulation for electrochemical kinetics
  3. Implementing a differentiable finite-difference simulator. Note that a conventional simulator implemented using JAX is also provided for "side-by-side" comparison.
  4. Differentiable simulator and parameter estimation for Fe Redox Voltammetry. This section offers a "production" example on how to perform DiffEC on real experimental data.

Differentiable Simulators

Since Differentiable Simulation is a new regime in scientific modeling, it is thus very important for beginners to learn the art of differentiable simulation and differentiable simulation in the context of electrochemistry. In here, five simulators that are fully differentiable and transferable are provided to enlighten readers the art of differentiable simulation. They five differentiable simulators are:

  1. Fundamental Cyclic Voltammetry Simulator. Models the simplest one-electron redox reaction.
  2. Voltammetry in Weakly Supported Media. Extends fundamental CV with electrolyte migration effects by solving Nernst-Planck-Poisson equation. BV and MHC kinetics are supported.
  3. Dissociative EC Simulator. Models coupled chemical-electrochemical mechanisms, where a species dissociates chemically before electron transfer. A <-> B+C , B+e- <-> D.
  4. Hydrodynamic Voltammetry Simulator. Models rotating-disk electrode (RDE) experiments under convection-diffusion mass transport.
  5. Electrochemical Adsorption/Desorption Simulator. Simulates surface-confined redox reactions and Langmuir isotherm adsorption/desorption processes. The mechanism is shown below: Electrochemical Adsorption/Desorption Mechanism

Overall, these simulators cover a broad range of electrochemical phenomena (diffusion, migration, convection, and coupled reactions), and are differentiable with respect to key physicochemical parameters, enabling gradient-based fitting, sensitivity analysis, and machine learning integration.

Proof-of-Concept Case Studies

  • Voltammetry in weakly supported media BV kinetics Estimating electrochemical kinetics from Butler-Volmer or Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Voltammetry in weakly supported media MHC kinetics Estimating electrochemical kinetics from Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Chronoamperometry of acetic acid reduction Estimating nonlinear chemical kinetics with convergent diffusion mass transport
  • Differentiable Electrochemistry for voltammetry of adsorbed species A total of 10 parameters are discovered simultaneously with gradient-based optimization!
  • Hydrodynamic voltammetry Estimating kinematic viscosity with convection-diffusion mass transport. This example is available at https://colab.research.google.com/drive/1Pq3szUPe8uvd9pw-ZVAZSCmX8nQH2CSM?usp=sharing
  • Adsorption/Desorption Simultaneously discover 10 parameters from a set of voltammograms. This example is featured in the DiffEC Adsorption folder in the main directory.

Experimental Application

  • Differentiable Electrochemistry for Fe3+/Fe2+ redox couple Electrochemical rate constant, average diffusion coefficient, cathodic and anodic electrochemical rate constants are simultaneously discovered from multiple voltammograms at different scan rates. This is a major advancement from conventional Tafel analysis and Nicholson method.
  • Differentiable Electrochemistry for RuHex redox couple Since the RuHex couple is usually considered fully reversible, the formal potential and average diffusion coefficients are discovered.
  • Transfer coefficient from LSV on Rotating Disk Electrode Using differentiable electrochemistry to build a direct correlation between linear sweep voltammogram of Hydrogen Evolution Reaction with its transfer coefficient and electrochemical rate constant. In this example, Differentiable Electrochemistry analyzed the HER LSV data reported by Koper et al.(ACS Energy Lett. 2024, 9, 4, 1871–1879) by fully accounting for convection-diffusion mass transport and kinetics. A "Tafel Region" is unnecessary.
  • Mechanistic Identification of Li electrodeposition/stripping. Using transient voltammetry data reported by Boyel et al. (ACS Energy Lett. 2020, 5, 3, 701–709), Differentiable Electrochemistry is applied to fit transient data with Marcus-Hush (MH),Marcus-Hush-Chidsey (MHC), and the approximate Marcus-Hush-Chidsey (JEAC, 735, 77, 2014). Notably, we enabled direct parameterization of MHC without approximation.
  • Mass transport in concentrated electrolytes Estimating salt diffusivity and transference number from Operando concentration and velocities fields from XAM and XPCS with concentrated solution theory.

Issue Reports

We recommend issue reports in the Discussions channel.

Cite

Please cite as our published paper at ACS Energy Lett. 2026, 11, 2, 2005–2018. Thank you!

About

Differentiable Electrochemistry Simulation Supporting Diffusion, Migration and Convection

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

65 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DiffEC

This is a the code repository accompanies with "Differentiable Electrochemistry: A Paradigm Characterizing Physical Laws in Electrochemical Systems" submitted to ACS Energy Letters.

This repository features differentiable simulation of voltammetry covering diffusion, migration and convection, along with both Butler-Volmer and Marcus-Hush-Chidsey kinetics. These partial differential equations (PDEs) are solved with mostly Finite Difference method (implicit Euler scheme) or Finite Element method. In short, electrochemical simulations are made end-to-end differentiable for parameter estimation and optimization.

The purposes of this repository are twofold:

  • Introducing the art of differentiable simulations to electrochemists with abundant transferable simulators and case studies (tutorials)
  • Applying Differentiable Electrochemistry simulations to solve bottleneck problems in electrochemistry

The electrochemical simulations used Finite Difference (FD) or Finite Element (FE) methods, and made differentiable using JAX.

TOC

A worflow of formulating a Differentiable Electrochemistry simulator and performing computation on large clusters. To enable ensemble prediction, there are multiple DiffECManager running in parallel. Each DiffEC manager initiates a sequence of N DiffECWorker for N epochs of optimization. A Slurm workload manager is used to coordinate compute. A graphical illustration is shown below:

DiffECWorkflow

Requirements

Software Requirements

Python 3.11 and JAX 0.4.34

It's also very important to enable float64 for JAX to enable high precision computing. float32 by default will not work for some cases. In the Python script, and after JAX import,

jax.config.update("jax_enable_x64", True)

Hardware Requirements

Hardware requirements varies in the forward vs. reverse mode. If simulations are performed only in the forward mode, the memory requirement is similar to conventional simulator (a few Gigabytes would suffice). On the contrary, if simulations are performed in the reverse mode for gradient computation, the memory requirement scales with the space and time steps during the simulation. For nonlinear or linear problems, ~80 or 10 GB is recommended.

Tutorials

To enable users to jump-start Differentiable Electrochemistry simulator and learn how to make an electrochemical simulator differentiable, we have developed the tutorial notebook (Tutorial.ipynb) to offer a step-by-step guide on how to use JAX, and how to implement a differentiable simulator with JAX. The tutorials have the following sections.

  1. Automatic Differentiation for Linear Regression with JAX
  2. Differentiable simulation for electrochemical kinetics
  3. Implementing a differentiable finite-difference simulator. Note that a conventional simulator implemented using JAX is also provided for "side-by-side" comparison.
  4. Differentiable simulator and parameter estimation for Fe Redox Voltammetry. This section offers a "production" example on how to perform DiffEC on real experimental data.

Differentiable Simulators

Since Differentiable Simulation is a new regime in scientific modeling, it is thus very important for beginners to learn the art of differentiable simulation and differentiable simulation in the context of electrochemistry. In here, five simulators that are fully differentiable and transferable are provided to enlighten readers the art of differentiable simulation. They five differentiable simulators are:

  1. Fundamental Cyclic Voltammetry Simulator. Models the simplest one-electron redox reaction.
  2. Voltammetry in Weakly Supported Media. Extends fundamental CV with electrolyte migration effects by solving Nernst-Planck-Poisson equation. BV and MHC kinetics are supported.
  3. Dissociative EC Simulator. Models coupled chemical-electrochemical mechanisms, where a species dissociates chemically before electron transfer. A <-> B+C , B+e- <-> D.
  4. Hydrodynamic Voltammetry Simulator. Models rotating-disk electrode (RDE) experiments under convection-diffusion mass transport.
  5. Electrochemical Adsorption/Desorption Simulator. Simulates surface-confined redox reactions and Langmuir isotherm adsorption/desorption processes. The mechanism is shown below: Electrochemical Adsorption/Desorption Mechanism

Overall, these simulators cover a broad range of electrochemical phenomena (diffusion, migration, convection, and coupled reactions), and are differentiable with respect to key physicochemical parameters, enabling gradient-based fitting, sensitivity analysis, and machine learning integration.

Proof-of-Concept Case Studies

  • Voltammetry in weakly supported media BV kinetics Estimating electrochemical kinetics from Butler-Volmer or Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Voltammetry in weakly supported media MHC kinetics Estimating electrochemical kinetics from Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Chronoamperometry of acetic acid reduction Estimating nonlinear chemical kinetics with convergent diffusion mass transport
  • Differentiable Electrochemistry for voltammetry of adsorbed species A total of 10 parameters are discovered simultaneously with gradient-based optimization!
  • Hydrodynamic voltammetry Estimating kinematic viscosity with convection-diffusion mass transport. This example is available at https://colab.research.google.com/drive/1Pq3szUPe8uvd9pw-ZVAZSCmX8nQH2CSM?usp=sharing
  • Adsorption/Desorption Simultaneously discover 10 parameters from a set of voltammograms. This example is featured in the DiffEC Adsorption folder in the main directory.

Experimental Application

  • Differentiable Electrochemistry for Fe3+/Fe2+ redox couple Electrochemical rate constant, average diffusion coefficient, cathodic and anodic electrochemical rate constants are simultaneously discovered from multiple voltammograms at different scan rates. This is a major advancement from conventional Tafel analysis and Nicholson method.
  • Differentiable Electrochemistry for RuHex redox couple Since the RuHex couple is usually considered fully reversible, the formal potential and average diffusion coefficients are discovered.
  • Transfer coefficient from LSV on Rotating Disk Electrode Using differentiable electrochemistry to build a direct correlation between linear sweep voltammogram of Hydrogen Evolution Reaction with its transfer coefficient and electrochemical rate constant. In this example, Differentiable Electrochemistry analyzed the HER LSV data reported by Koper et al.(ACS Energy Lett. 2024, 9, 4, 1871–1879) by fully accounting for convection-diffusion mass transport and kinetics. A "Tafel Region" is unnecessary.
  • Mechanistic Identification of Li electrodeposition/stripping. Using transient voltammetry data reported by Boyel et al. (ACS Energy Lett. 2020, 5, 3, 701–709), Differentiable Electrochemistry is applied to fit transient data with Marcus-Hush (MH),Marcus-Hush-Chidsey (MHC), and the approximate Marcus-Hush-Chidsey (JEAC, 735, 77, 2014). Notably, we enabled direct parameterization of MHC without approximation.
  • Mass transport in concentrated electrolytes Estimating salt diffusivity and transference number from Operando concentration and velocities fields from XAM and XPCS with concentrated solution theory.

Issue Reports

We recommend issue reports in the Discussions channel.

Cite

Please cite as our published paper at ACS Energy Lett. 2026, 11, 2, 2005–2018. Thank you!

About

Differentiable Electrochemistry Simulation Supporting Diffusion, Migration and Convection

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

65 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DiffEC

This is a the code repository accompanies with "Differentiable Electrochemistry: A Paradigm Characterizing Physical Laws in Electrochemical Systems" submitted to ACS Energy Letters.

This repository features differentiable simulation of voltammetry covering diffusion, migration and convection, along with both Butler-Volmer and Marcus-Hush-Chidsey kinetics. These partial differential equations (PDEs) are solved with mostly Finite Difference method (implicit Euler scheme) or Finite Element method. In short, electrochemical simulations are made end-to-end differentiable for parameter estimation and optimization.

The purposes of this repository are twofold:

  • Introducing the art of differentiable simulations to electrochemists with abundant transferable simulators and case studies (tutorials)
  • Applying Differentiable Electrochemistry simulations to solve bottleneck problems in electrochemistry

The electrochemical simulations used Finite Difference (FD) or Finite Element (FE) methods, and made differentiable using JAX.

TOC

A worflow of formulating a Differentiable Electrochemistry simulator and performing computation on large clusters. To enable ensemble prediction, there are multiple DiffECManager running in parallel. Each DiffEC manager initiates a sequence of N DiffECWorker for N epochs of optimization. A Slurm workload manager is used to coordinate compute. A graphical illustration is shown below:

DiffECWorkflow

Requirements

Software Requirements

Python 3.11 and JAX 0.4.34

It's also very important to enable float64 for JAX to enable high precision computing. float32 by default will not work for some cases. In the Python script, and after JAX import,

jax.config.update("jax_enable_x64", True)

Hardware Requirements

Hardware requirements varies in the forward vs. reverse mode. If simulations are performed only in the forward mode, the memory requirement is similar to conventional simulator (a few Gigabytes would suffice). On the contrary, if simulations are performed in the reverse mode for gradient computation, the memory requirement scales with the space and time steps during the simulation. For nonlinear or linear problems, ~80 or 10 GB is recommended.

Tutorials

To enable users to jump-start Differentiable Electrochemistry simulator and learn how to make an electrochemical simulator differentiable, we have developed the tutorial notebook (Tutorial.ipynb) to offer a step-by-step guide on how to use JAX, and how to implement a differentiable simulator with JAX. The tutorials have the following sections.

  1. Automatic Differentiation for Linear Regression with JAX
  2. Differentiable simulation for electrochemical kinetics
  3. Implementing a differentiable finite-difference simulator. Note that a conventional simulator implemented using JAX is also provided for "side-by-side" comparison.
  4. Differentiable simulator and parameter estimation for Fe Redox Voltammetry. This section offers a "production" example on how to perform DiffEC on real experimental data.

Differentiable Simulators

Since Differentiable Simulation is a new regime in scientific modeling, it is thus very important for beginners to learn the art of differentiable simulation and differentiable simulation in the context of electrochemistry. In here, five simulators that are fully differentiable and transferable are provided to enlighten readers the art of differentiable simulation. They five differentiable simulators are:

  1. Fundamental Cyclic Voltammetry Simulator. Models the simplest one-electron redox reaction.
  2. Voltammetry in Weakly Supported Media. Extends fundamental CV with electrolyte migration effects by solving Nernst-Planck-Poisson equation. BV and MHC kinetics are supported.
  3. Dissociative EC Simulator. Models coupled chemical-electrochemical mechanisms, where a species dissociates chemically before electron transfer. A <-> B+C , B+e- <-> D.
  4. Hydrodynamic Voltammetry Simulator. Models rotating-disk electrode (RDE) experiments under convection-diffusion mass transport.
  5. Electrochemical Adsorption/Desorption Simulator. Simulates surface-confined redox reactions and Langmuir isotherm adsorption/desorption processes. The mechanism is shown below: Electrochemical Adsorption/Desorption Mechanism

Overall, these simulators cover a broad range of electrochemical phenomena (diffusion, migration, convection, and coupled reactions), and are differentiable with respect to key physicochemical parameters, enabling gradient-based fitting, sensitivity analysis, and machine learning integration.

Proof-of-Concept Case Studies

  • Voltammetry in weakly supported media BV kinetics Estimating electrochemical kinetics from Butler-Volmer or Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Voltammetry in weakly supported media MHC kinetics Estimating electrochemical kinetics from Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Chronoamperometry of acetic acid reduction Estimating nonlinear chemical kinetics with convergent diffusion mass transport
  • Differentiable Electrochemistry for voltammetry of adsorbed species A total of 10 parameters are discovered simultaneously with gradient-based optimization!
  • Hydrodynamic voltammetry Estimating kinematic viscosity with convection-diffusion mass transport. This example is available at https://colab.research.google.com/drive/1Pq3szUPe8uvd9pw-ZVAZSCmX8nQH2CSM?usp=sharing
  • Adsorption/Desorption Simultaneously discover 10 parameters from a set of voltammograms. This example is featured in the DiffEC Adsorption folder in the main directory.

Experimental Application

  • Differentiable Electrochemistry for Fe3+/Fe2+ redox couple Electrochemical rate constant, average diffusion coefficient, cathodic and anodic electrochemical rate constants are simultaneously discovered from multiple voltammograms at different scan rates. This is a major advancement from conventional Tafel analysis and Nicholson method.
  • Differentiable Electrochemistry for RuHex redox couple Since the RuHex couple is usually considered fully reversible, the formal potential and average diffusion coefficients are discovered.
  • Transfer coefficient from LSV on Rotating Disk Electrode Using differentiable electrochemistry to build a direct correlation between linear sweep voltammogram of Hydrogen Evolution Reaction with its transfer coefficient and electrochemical rate constant. In this example, Differentiable Electrochemistry analyzed the HER LSV data reported by Koper et al.(ACS Energy Lett. 2024, 9, 4, 1871–1879) by fully accounting for convection-diffusion mass transport and kinetics. A "Tafel Region" is unnecessary.
  • Mechanistic Identification of Li electrodeposition/stripping. Using transient voltammetry data reported by Boyel et al. (ACS Energy Lett. 2020, 5, 3, 701–709), Differentiable Electrochemistry is applied to fit transient data with Marcus-Hush (MH),Marcus-Hush-Chidsey (MHC), and the approximate Marcus-Hush-Chidsey (JEAC, 735, 77, 2014). Notably, we enabled direct parameterization of MHC without approximation.
  • Mass transport in concentrated electrolytes Estimating salt diffusivity and transference number from Operando concentration and velocities fields from XAM and XPCS with concentrated solution theory.

Issue Reports

We recommend issue reports in the Discussions channel.

Cite

Please cite as our published paper at ACS Energy Lett. 2026, 11, 2, 2005–2018. Thank you!

About

Differentiable Electrochemistry Simulation Supporting Diffusion, Migration and Convection

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

65 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DiffEC

This is a the code repository accompanies with "Differentiable Electrochemistry: A Paradigm Characterizing Physical Laws in Electrochemical Systems" submitted to ACS Energy Letters.

This repository features differentiable simulation of voltammetry covering diffusion, migration and convection, along with both Butler-Volmer and Marcus-Hush-Chidsey kinetics. These partial differential equations (PDEs) are solved with mostly Finite Difference method (implicit Euler scheme) or Finite Element method. In short, electrochemical simulations are made end-to-end differentiable for parameter estimation and optimization.

The purposes of this repository are twofold:

  • Introducing the art of differentiable simulations to electrochemists with abundant transferable simulators and case studies (tutorials)
  • Applying Differentiable Electrochemistry simulations to solve bottleneck problems in electrochemistry

The electrochemical simulations used Finite Difference (FD) or Finite Element (FE) methods, and made differentiable using JAX.

TOC

A worflow of formulating a Differentiable Electrochemistry simulator and performing computation on large clusters. To enable ensemble prediction, there are multiple DiffECManager running in parallel. Each DiffEC manager initiates a sequence of N DiffECWorker for N epochs of optimization. A Slurm workload manager is used to coordinate compute. A graphical illustration is shown below:

DiffECWorkflow

Requirements

Software Requirements

Python 3.11 and JAX 0.4.34

It's also very important to enable float64 for JAX to enable high precision computing. float32 by default will not work for some cases. In the Python script, and after JAX import,

jax.config.update("jax_enable_x64", True)

Hardware Requirements

Hardware requirements varies in the forward vs. reverse mode. If simulations are performed only in the forward mode, the memory requirement is similar to conventional simulator (a few Gigabytes would suffice). On the contrary, if simulations are performed in the reverse mode for gradient computation, the memory requirement scales with the space and time steps during the simulation. For nonlinear or linear problems, ~80 or 10 GB is recommended.

Tutorials

To enable users to jump-start Differentiable Electrochemistry simulator and learn how to make an electrochemical simulator differentiable, we have developed the tutorial notebook (Tutorial.ipynb) to offer a step-by-step guide on how to use JAX, and how to implement a differentiable simulator with JAX. The tutorials have the following sections.

  1. Automatic Differentiation for Linear Regression with JAX
  2. Differentiable simulation for electrochemical kinetics
  3. Implementing a differentiable finite-difference simulator. Note that a conventional simulator implemented using JAX is also provided for "side-by-side" comparison.
  4. Differentiable simulator and parameter estimation for Fe Redox Voltammetry. This section offers a "production" example on how to perform DiffEC on real experimental data.

Differentiable Simulators

Since Differentiable Simulation is a new regime in scientific modeling, it is thus very important for beginners to learn the art of differentiable simulation and differentiable simulation in the context of electrochemistry. In here, five simulators that are fully differentiable and transferable are provided to enlighten readers the art of differentiable simulation. They five differentiable simulators are:

  1. Fundamental Cyclic Voltammetry Simulator. Models the simplest one-electron redox reaction.
  2. Voltammetry in Weakly Supported Media. Extends fundamental CV with electrolyte migration effects by solving Nernst-Planck-Poisson equation. BV and MHC kinetics are supported.
  3. Dissociative EC Simulator. Models coupled chemical-electrochemical mechanisms, where a species dissociates chemically before electron transfer. A <-> B+C , B+e- <-> D.
  4. Hydrodynamic Voltammetry Simulator. Models rotating-disk electrode (RDE) experiments under convection-diffusion mass transport.
  5. Electrochemical Adsorption/Desorption Simulator. Simulates surface-confined redox reactions and Langmuir isotherm adsorption/desorption processes. The mechanism is shown below: Electrochemical Adsorption/Desorption Mechanism

Overall, these simulators cover a broad range of electrochemical phenomena (diffusion, migration, convection, and coupled reactions), and are differentiable with respect to key physicochemical parameters, enabling gradient-based fitting, sensitivity analysis, and machine learning integration.

Proof-of-Concept Case Studies

  • Voltammetry in weakly supported media BV kinetics Estimating electrochemical kinetics from Butler-Volmer or Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Voltammetry in weakly supported media MHC kinetics Estimating electrochemical kinetics from Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Chronoamperometry of acetic acid reduction Estimating nonlinear chemical kinetics with convergent diffusion mass transport
  • Differentiable Electrochemistry for voltammetry of adsorbed species A total of 10 parameters are discovered simultaneously with gradient-based optimization!
  • Hydrodynamic voltammetry Estimating kinematic viscosity with convection-diffusion mass transport. This example is available at https://colab.research.google.com/drive/1Pq3szUPe8uvd9pw-ZVAZSCmX8nQH2CSM?usp=sharing
  • Adsorption/Desorption Simultaneously discover 10 parameters from a set of voltammograms. This example is featured in the DiffEC Adsorption folder in the main directory.

Experimental Application

  • Differentiable Electrochemistry for Fe3+/Fe2+ redox couple Electrochemical rate constant, average diffusion coefficient, cathodic and anodic electrochemical rate constants are simultaneously discovered from multiple voltammograms at different scan rates. This is a major advancement from conventional Tafel analysis and Nicholson method.
  • Differentiable Electrochemistry for RuHex redox couple Since the RuHex couple is usually considered fully reversible, the formal potential and average diffusion coefficients are discovered.
  • Transfer coefficient from LSV on Rotating Disk Electrode Using differentiable electrochemistry to build a direct correlation between linear sweep voltammogram of Hydrogen Evolution Reaction with its transfer coefficient and electrochemical rate constant. In this example, Differentiable Electrochemistry analyzed the HER LSV data reported by Koper et al.(ACS Energy Lett. 2024, 9, 4, 1871–1879) by fully accounting for convection-diffusion mass transport and kinetics. A "Tafel Region" is unnecessary.
  • Mechanistic Identification of Li electrodeposition/stripping. Using transient voltammetry data reported by Boyel et al. (ACS Energy Lett. 2020, 5, 3, 701–709), Differentiable Electrochemistry is applied to fit transient data with Marcus-Hush (MH),Marcus-Hush-Chidsey (MHC), and the approximate Marcus-Hush-Chidsey (JEAC, 735, 77, 2014). Notably, we enabled direct parameterization of MHC without approximation.
  • Mass transport in concentrated electrolytes Estimating salt diffusivity and transference number from Operando concentration and velocities fields from XAM and XPCS with concentrated solution theory.

Issue Reports

We recommend issue reports in the Discussions channel.

Cite

Please cite as our published paper at ACS Energy Lett. 2026, 11, 2, 2005–2018. Thank you!

About

Differentiable Electrochemistry Simulation Supporting Diffusion, Migration and Convection

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

65 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DiffEC

This is a the code repository accompanies with "Differentiable Electrochemistry: A Paradigm Characterizing Physical Laws in Electrochemical Systems" submitted to ACS Energy Letters.

This repository features differentiable simulation of voltammetry covering diffusion, migration and convection, along with both Butler-Volmer and Marcus-Hush-Chidsey kinetics. These partial differential equations (PDEs) are solved with mostly Finite Difference method (implicit Euler scheme) or Finite Element method. In short, electrochemical simulations are made end-to-end differentiable for parameter estimation and optimization.

The purposes of this repository are twofold:

  • Introducing the art of differentiable simulations to electrochemists with abundant transferable simulators and case studies (tutorials)
  • Applying Differentiable Electrochemistry simulations to solve bottleneck problems in electrochemistry

The electrochemical simulations used Finite Difference (FD) or Finite Element (FE) methods, and made differentiable using JAX.

TOC

A worflow of formulating a Differentiable Electrochemistry simulator and performing computation on large clusters. To enable ensemble prediction, there are multiple DiffECManager running in parallel. Each DiffEC manager initiates a sequence of N DiffECWorker for N epochs of optimization. A Slurm workload manager is used to coordinate compute. A graphical illustration is shown below:

DiffECWorkflow

Requirements

Software Requirements

Python 3.11 and JAX 0.4.34

It's also very important to enable float64 for JAX to enable high precision computing. float32 by default will not work for some cases. In the Python script, and after JAX import,

jax.config.update("jax_enable_x64", True)

Hardware Requirements

Hardware requirements varies in the forward vs. reverse mode. If simulations are performed only in the forward mode, the memory requirement is similar to conventional simulator (a few Gigabytes would suffice). On the contrary, if simulations are performed in the reverse mode for gradient computation, the memory requirement scales with the space and time steps during the simulation. For nonlinear or linear problems, ~80 or 10 GB is recommended.

Tutorials

To enable users to jump-start Differentiable Electrochemistry simulator and learn how to make an electrochemical simulator differentiable, we have developed the tutorial notebook (Tutorial.ipynb) to offer a step-by-step guide on how to use JAX, and how to implement a differentiable simulator with JAX. The tutorials have the following sections.

  1. Automatic Differentiation for Linear Regression with JAX
  2. Differentiable simulation for electrochemical kinetics
  3. Implementing a differentiable finite-difference simulator. Note that a conventional simulator implemented using JAX is also provided for "side-by-side" comparison.
  4. Differentiable simulator and parameter estimation for Fe Redox Voltammetry. This section offers a "production" example on how to perform DiffEC on real experimental data.

Differentiable Simulators

Since Differentiable Simulation is a new regime in scientific modeling, it is thus very important for beginners to learn the art of differentiable simulation and differentiable simulation in the context of electrochemistry. In here, five simulators that are fully differentiable and transferable are provided to enlighten readers the art of differentiable simulation. They five differentiable simulators are:

  1. Fundamental Cyclic Voltammetry Simulator. Models the simplest one-electron redox reaction.
  2. Voltammetry in Weakly Supported Media. Extends fundamental CV with electrolyte migration effects by solving Nernst-Planck-Poisson equation. BV and MHC kinetics are supported.
  3. Dissociative EC Simulator. Models coupled chemical-electrochemical mechanisms, where a species dissociates chemically before electron transfer. A <-> B+C , B+e- <-> D.
  4. Hydrodynamic Voltammetry Simulator. Models rotating-disk electrode (RDE) experiments under convection-diffusion mass transport.
  5. Electrochemical Adsorption/Desorption Simulator. Simulates surface-confined redox reactions and Langmuir isotherm adsorption/desorption processes. The mechanism is shown below: Electrochemical Adsorption/Desorption Mechanism

Overall, these simulators cover a broad range of electrochemical phenomena (diffusion, migration, convection, and coupled reactions), and are differentiable with respect to key physicochemical parameters, enabling gradient-based fitting, sensitivity analysis, and machine learning integration.

Proof-of-Concept Case Studies

  • Voltammetry in weakly supported media BV kinetics Estimating electrochemical kinetics from Butler-Volmer or Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Voltammetry in weakly supported media MHC kinetics Estimating electrochemical kinetics from Marcus-Hush-Chidsey formalism with migration-diffusion mass transport described with Nernst-Planck-Poisson equations
  • Chronoamperometry of acetic acid reduction Estimating nonlinear chemical kinetics with convergent diffusion mass transport
  • Differentiable Electrochemistry for voltammetry of adsorbed species A total of 10 parameters are discovered simultaneously with gradient-based optimization!
  • Hydrodynamic voltammetry Estimating kinematic viscosity with convection-diffusion mass transport. This example is available at https://colab.research.google.com/drive/1Pq3szUPe8uvd9pw-ZVAZSCmX8nQH2CSM?usp=sharing
  • Adsorption/Desorption Simultaneously discover 10 parameters from a set of voltammograms. This example is featured in the DiffEC Adsorption folder in the main directory.

Experimental Application

  • Differentiable Electrochemistry for Fe3+/Fe2+ redox couple Electrochemical rate constant, average diffusion coefficient, cathodic and anodic electrochemical rate constants are simultaneously discovered from multiple voltammograms at different scan rates. This is a major advancement from conventional Tafel analysis and Nicholson method.
  • Differentiable Electrochemistry for RuHex redox couple Since the RuHex couple is usually considered fully reversible, the formal potential and average diffusion coefficients are discovered.
  • Transfer coefficient from LSV on Rotating Disk Electrode Using differentiable electrochemistry to build a direct correlation between linear sweep voltammogram of Hydrogen Evolution Reaction with its transfer coefficient and electrochemical rate constant. In this example, Differentiable Electrochemistry analyzed the HER LSV data reported by Koper et al.(ACS Energy Lett. 2024, 9, 4, 1871–1879) by fully accounting for convection-diffusion mass transport and kinetics. A "Tafel Region" is unnecessary.
  • Mechanistic Identification of Li electrodeposition/stripping. Using transient voltammetry data reported by Boyel et al. (ACS Energy Lett. 2020, 5, 3, 701–709), Differentiable Electrochemistry is applied to fit transient data with Marcus-Hush (MH),Marcus-Hush-Chidsey (MHC), and the approximate Marcus-Hush-Chidsey (JEAC, 735, 77, 2014). Notably, we enabled direct parameterization of MHC without approximation.
  • Mass transport in concentrated electrolytes Estimating salt diffusivity and transference number from Operando concentration and velocities fields from XAM and XPCS with concentrated solution theory.

Issue Reports

We recommend issue reports in the Discussions channel.

Cite

Please cite as our published paper at ACS Energy Lett. 2026, 11, 2, 2005–2018. Thank you!

About

Differentiable Electrochemistry Simulation Supporting Diffusion, Migration and Convection

Resources

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages