Simulation of voltammetric electrochemistry This is a development version!
Stuff might (will!) go wrong...


On this webpage you can simulate electrochemical voltammetric experiments using state-of-the-art methodology (as of 2020). Please read the following information to understand that this is a proper numerical simulation that competes with commercial software such as DigiElch.

At its core, this simulator is an extension of the code provided with the excellent article Brute force (or not so brute) digital simulation in electrochemistry revisited by Molina.1 Implementations from the books by Compton2 and Britz3 turned the core algorithm into practically useful software. An important note to make here, is that the information in these books was only used to transform the system of redox steps and chemical reactions into matrix form. The resulting matrices where then solved the lazy way: by matrix inversion with the sparse solver algorithms in the Eigen library.

The simulator can handle any (reasonable) amount of species, redox steps and chemical reactions. Redox steps use Butler-Volmer kinetics. The system is pre-equilibrated before the simulation starts (using the starting concentrations and chemical reactions). Various electrode geometries are supported, and most simulation settings can be changed if necessary (for advanced users only!).

The simulator cannot (yet) handle:

  • Surface-adsorbed species
  • Very high values of Kcomp (cf. Compton section 6.2)
  • Uncompensated solution resistance
  • Migration and convection

info_outline Software description


  1. A. Molina et al. Chem. Phys. Lett. 2016 (643), 71—76 (10.1016/j.cplett.2015.11.011)
  2. R. Compton et al. Understanding Voltammetry: Simulation of Electrode Processes, Imperial College Press, London, 2014
  3. D. Britz et al. Digital Simulation in Electrochemistry, 4th ed., Springer, Switzerland, 2016


Redox steps: Ox + e ↔ Red

{{ }} {{ }}

Chemical reactions: R1 (+ R2) ↔ P1 (+ P2)

{{ }} (none){{ }} {{ }} (none){{ }}

Note 1: Rate constants have units L/mol/s for ... etc.


{{ et.typename }}


Currently, only CV is implemented (other techniques will follow (soon?))

  • Conditioning for {{experiment.conditioningPotential}} s (tcond.) at {{experiment.conditioningTime}} V (Econd.)
  • Equilibration for {{experiment.equilibrationTime}} s (tequil.) at {{experiment.initialPotential}} V (Einitial)
  • Sequence/scanning, repeated {{experiment.numCycles}} times (#cycles) at a scan rate of {{experiment.scanRate}} V/s (ν):
    • from {{experiment.initialPotential}} V (Einitial)
    • to {{v.pot}} (Evertex,{{$index}}) then a delay of {{experiment.vertexDelay}} s (tvertex)
    • to {{experiment.finalPotential}} V (Efinal)

Simulation settings


Run simulation Results Simulated experiment
{{ simoutput }}