openpnm.models.physics.source_terms.butler_volmer_conc(target, X, z, j0, c_ref, alpha_anode, alpha_cathode, reaction_order=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.

  • target (OpenPNM Base object) – Object with which this model is associated. This controls the length of the calculated array, 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).

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

  • j0 (float) – Exchange current density [A/m^2].

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

  • alpha_anode (float) – Anodic transfer coefficient.

  • alpha_cathode (float) – Cathodic transfer coefficient.

  • reaction_order (float) – Reaction order, i.e. 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 open-circuit voltage 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 z * F, where z is the number of electrons transferred and F is the Faraday’s constant.

\[r = j_0 A_{rxn} (\frac{ X }{ c_{ref} }) ^ {\nu} \Big( \exp( \frac{\alpha_a z F}{RT} \eta ) - \exp( -\frac{\alpha_c z F}{RT} \eta ) \Big)\]


\[\eta = V_s - V_{\ell} - V_{oc}\]

where V_s is the solid voltage, V_l is the electrolyte voltage, and V_oc is the open-circuit voltage.

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

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