butler_volmer_conc(phase, X, n, i0_ref, c_ref, beta, gamma=1, temperature='pore.temperature', reaction_area='pore.reaction_area', solid_voltage='pore.solid_voltage', electrolyte_voltage='pore.electrolyte_voltage', open_circuit_voltage='pore.open_circuit_voltage')[source]#

Calculates the rate, slope and intercept of the Butler-Volmer kinetic model based on concentration to be used in mass transfer algorithms.

  • phase (OpenPNM Phase object) – The phase object to which this model is associated (i.e. attached). This controls the length of the calculated array(s), and also provides access to other necessary properties.

  • X (str) – The dictionary key of the quantity of interest (i.e. main variable to be solved; in this case, concentration).

  • n (float) – Number of electrons transferred in the redox reaction.

  • i0_ref (float) – Exchange current density for some conveniently selected value of c_ref [A/m^2].

  • c_ref (float) – Reference concentration [mol/m^3].

  • beta (float) – Symmetry factor. The value of beta represents the fraction of the applied potential that promotes the cathodic reaction. Frequently, beta is assummed to be 0.5, although the theoretical justification for this is not completely rigorous. This kinetic parameter must be determined to agree with experimental data.

  • gamma (float) – The exponent of the concentration term

  • solid_voltage (str) – The dictionary key of solid phase voltages [V].

  • electrolyte_voltage (str) – The dictionary key of electrolyte phase voltages [V].

  • open_circuit_voltage (str) – The dictionary key of equilibrium potential values [V].

  • reaction_area (str) – The dictionary key of reaction area values [m^2].

  • temperature (str) – The dictionary key of temperature values [K].


Dictionary containing the following key/value pairs:

  • rate : The value of the source term function at the given X.

  • S1 : The slope of the source term function at the given X.

  • S2 : The intercept of the source term function at the given X.

Return type:



The difference between butler_volmer_conc and butler_volmer_voltage is that the former is linearized with respect to the electrolyte concentration whereas the latter is linearized with respect to the electrolyte voltage.

Consequently, while the S1 and S2 produced by these model shouldn’t be identical, they should both produce the same rate with the only difference that the rate generated by butler_volmer_conc has the units [mol/s] whereas that generated by butler_volmer_voltage has the units [C/s]. Therefore, the two rates will differ by n * F, where n is the number of electrons transferred and F is the Faraday’s constant. The Butler-Volmer equation used in this function is based on Eq. 8.24 of the Electrochemical Systems reference book cited here.

\[r_{mass} = \frac{ i A }{ n F }= i_{0ref} A_{rxn} (\frac{ 1 }{ n F })(\frac{ X }{ c_{ref} }) ^ {\gamma} \Big( \exp( \frac{(1-\beta) n F}{RT} \eta_s ) - \exp( -\frac{\beta n F}{RT} \eta_s ) \Big)\]


\[\eta_s = \phi_{met} - \phi_{soln} - U_{eq}\]

where \({\phi_{met}}\) is the electrostatic potential of the electrode, \({\phi_{soln}}\) is the electrostatic potential of the electrolyte solution, and \({U_{eq}}\) is the equilibrium potential, which is the potential at which the net rate of reaction is zero. Here, we assume U_{eq} is equal to the open-circuit voltage and is constant. Alternatively, the dependency of the U_{eq} to the consentration of species can be defined as a function and assigned to the phase[‘pore.open_circuit_voltage’] (e.g. Eq.8.20 of the reference book (Electrochemical Systems).

The slope and intercept provide a linearized source term equation about the current value of X as follow:

\[rate = S_{1} X + S_{2}\]

Reference: John Newman, Karen E. Thomas-Alyea, Electrochemical Systems, John Wiley & Sons, third edition, 2004. For more details read Chapter8:Electrode kinetics (e.g. Eqs: 8.6,8.10,8.24).