PDF

Voltage Hysteresis in a Lithium Iron Phosphate (LFP) Electrode
Introduction
Lithium iron phosphate (LFP) is a common positive electrode material in lithium-ion batteries. Specific for the LFP electrode material is that its equilibrium (open circuit) potential, when defined as a function of the lithiation state, features a large flat plateau with a more or less constant potential. The plateau also exhibits voltage hysteresis; that is, a difference in the plateau potential between lithiation and delithiation cycling, also referred to as a zero-current voltage gap.
This tutorial demonstrates a simplified model to include voltage hysteresis in a porous LFP electrode.
Model Definition
origin of the voltage hysteresis
The voltage hysteresis in an electrode material is commonly attributed (Ref. 1) to a nonmonotonic equilibrium potential (or Gibbs free energy) dependency with respect to the intercalated lithium concentration (state of lithiation). The solid blue line of Figure 1 shows an example of a nonmonotonic equilibrium potential of a single electrode particle as function of the state of lithiation. When lithiation starts in point 1, the equilibrium potential decreases until the inflection point 2 is reached, after which further lithiation results in an increase in potential, until the derivative changes sign again at a second inflection point.
The distance between the two inflection points (the “miscibility” gap) is believed to decrease with the particle size, and the magnitude of the voltage offset between them is also assumed to vary with size (Ref. 2), based on experimental observations (Ref. 3).
Figure 1: Schematic representation of the lithiation process in a particle subject to a nonmonotonic equilibrium potential function. Lithiation starts in point 1, proceeding via the inflection point 2 to point 3. Note: The voltage scale is arbitrary and only serves as an example.
The solid blue line in Figure 1 is however seldom observed experimentally, and the reason for this is related to the difficulties of recording the equilibrium potential of a single electrode particle. For electrodes comprising multiple particles, material inhomogeneities will result in the equilibrium potential exhibiting a different shape, which can be understood by considering an ensemble of many similar, but not identical, particles subject to a constant reduction current as follows: When lithiation starts in point 1 for the ensemble, all particles are initially at the same potential. However, as lithiation continues, small differences in particle properties result in one of the particles reaching point 2 first, and as this particle passes the inflection point, increasing cathodic overpotentials will favor a fast and accelerated continued reduction of this single particle up to the second inflection point, and then continued reduction until it reaches the same potential as the rest of the ensemble in point 3. During the process when the first particle gets reduced to point 3, all other particles in ensemble will remain at a position left of point 2, where they undergo slight oxidation in order to maintain the overall charge balance of the ensemble. Once the first particle has reached point 3, a subsequent particle will undergo the fast transition to point 3, and so on. During the fast transitions, the mixed potential of the ensemble will stay close to the dashed line in Figure 1, and not until all particles have reached point 3 will the equilibrium potential proceed to decrease from the common equilibrium potential level of point 2 and 3.
The process described above is also referred to as a “mosaic” transition between lithium-poor and lithium-rich phases. For smaller ensembles of particles it should be possible to observe these transitions as voltage ripples using a high-precision potentiostat when operating at a constant current, but practically for any ordinary battery electrode, the continuum limit of the mosaic transitions results in a smooth voltage plateau.
Reversing the process with delithiation starting in point 4, as shown in Figure 2, results in a similar behavior, with a fast transition occurring between point 5 and 6. The difference in the equilibrium potential levels at the inflection points 2 (in Figure 1) and 5 (in Figure 2) results in voltage hysteresis.
Figure 2: Schematic representation of the delithiation process in a particle subject to a nonmonotonic equilibrium potential function. Delithiation starts in point 4, proceeding via the inflection point 5 to point 6. Note: The voltage scale is arbitrary and only serves as an example.
LFP Particle Ensemble Model
The model defines an ensemble of particles by the usage of three dependent variables:
The three variables above are in turn used to define the volume fractions of the lithium-poor and lithium-rich phases, ϕpoor (1) and ϕrich (1), using the relations
(1)
and
(2)
Diffusion is neglected within the ensemble. The material balances for the average intercalated concentration is defined as
(3)
where εs (1) is the electrode volume fraction and iv (mol/m3) the volumetric current density stemming from charge transfer reactions in the whole ensemble.
The volumetric charge transfer current densities at the electrolyte-electrode interface between the particle ensemble and the electrolyte from both the lithium-rich and lithium-poor phases are used to define iv according to
(4)
where iv,i (mol/m3) is the volumetric current density of the respective phase. (In the following, the subscript index i refers to either the lithium-rich or the lithium-poor phase.)
Figure 3: Schematic representation of the lithium-poor and lithium-rich equilibrium potential functions used by the ensemble model. Note: The voltage scale is arbitrary and only serves as an example.
Figure 3 shows a schematic plot of the equilibrium potential functions used for defining the overpotential (see Equation 11 below) of the lithium-rich and lithium-poor phases. Here the state of lithiation is defined as cs /cs,max. In Figure 3 the locations of the two inflection points have also been indicated, which define the two concentration levels cs,poor,max (mol/m3) and cs,rich,min (mol/m3) in terms of cs,max.
For the lithium-poor phase concentration, any cathodic charge transfer current density is assumed to be counterbalanced by fast phase transitions whenever the concentration level exceeds the concentration level of the inflection point, cs,poor,max (mol/m3), prohibiting further intercalation into the lithium-poor phase. The material balances for the lithium-poor phase concentration is hence defined as
(5)
Similarly, for the lithium-rich phase, the material balance is defined as
(6)
The above way of conditionally adding the charge transfer current density to the phase concentration time derivatives implicitly defines the phase transition rate. This can be seen by differentiation with respect to time in Equation 1:
(7)
which may be rearranged into
(8)
When any of the conditionals in Equation 5 or Equation 6 sets the time derivative of either cs,richor cs,rich to zero, respectively, this may result in a nonzero time derivative of ϕpoor, which in turn results in changing the volume fractions of the lithium-rich and lithium-poor phases.
Charge transfer Kinetics
For each phase, charge transfer occurs according to Butler–Volmer expressions defined as:
(9)
where Av (m2/m3) is the specific surface area of the electrolyte-electrode interface, i0,i is the exchange current density, and ηi (V) is the overpotential.
The exchange current density is defined as
(10)
where cl (mol/m3) is the electrolyte ion concentration, i0,ref is the exchange current density for a reference state corresponding to the reference conditions cl = cl,ref and , and cs,max (mol/m3) is the maximum intercalation concentration.
The overpotential is defined as
(11)
where ϕs (V) is the electrode phase potential, ϕl (V) the electrolyte phase potential, and Eeq, i (V) the equilibrium potential as defined in Figure 4 below.
COMSOL Implementation
The Lithium-Ion Battery interface is used to define a half-cell model consisting of a Lithium-metal counter electrode, a separator, and a positive LFP porous electrode. The Porous Electrode > Particle Intercalation node, with the No spatial gradients option for defining the species concentration model, is used to define the cs,avg variable.
The lithium-poor and lithium-rich equilibrium potential curves, as shown in Figure 4, and some additional modeling parameters, were taken from Ref. 4.
Figure 4: Equilibrium potential for the lithium-poor (left) and the lithium-rich (right) particles used in the simulation. (Based on experimental data from Ref. 4).
A Domain ODEs and DAEs interface is added to solve for cs,poor and cs,rich on the porous electrode domain.
To illustrate the hysteresis loop, the Events interface is used to define a load cycle using 1C lithiation/delithiation current pulses with 10 minute resting periods in between. The simulation starts from a lithiated electrode. The first current pulse delithiates the electrode to around 50%, followed by a rest, followed by another delithiation pulse to reach almost full delithiation. After yet another rest period, the current direction is reversed in order to lithiate the electrode to around 50%, followed by another 10-minute rest. Finally, the electrode is once again almost completely delithiated.
A Global ODEs and DAEs interface is added to integrate the current over time in order to compute the cycled capacity.
Results and Discussion
Figure 5 shows the cell voltage versus time during the load cycle. During each 10 minute rest period, a short rapid voltage relaxation, which stems from relaxation of gradients in the lithium-ion concentration in the cell, is followed by a longer plateau featuring a constant potential of either 3.452 V (after a delithiation pulse) or 3.412 V (after a lithiation pulse). These voltage levels correspond to the left-most data point of the lithium-rich particles, and the right-most data point of the lithium-poor particles in Figure 4, respectively.
Figure 5: Cell voltage versus time.
Figure 6 shows a corresponding voltage versus capacity plot, where the different voltages at around 50% lithiation (0.88 mA/cm2) illustrate the resulting voltage hysteresis at rest. A small hysteresis also in polarization is seen between the second and last delithiation step (above 0.92 mA/cm2). This is an effect of the current distribution in the porous electrode, which predominantly will favor lithiation/delithiation in the region close to the separator in the beginning of a current pulse. The same behavior (qualitatively) is reported in Ref. 4.
Figure 6: Cell voltage versus capacity for the delithiation-lithiation cycle.
References
1. W. Dreyer and others, “The thermodynamic origin of hysteresis in insertion batteries,” Nature Mater., vol. 9, pp. 448–453, 2010; doi.org/10.1038/nmat2730.
2. P. Ombrini and others, “Kinetically induced memory effect in Li-ion batteries,” EES Batteries, vol. 1, no. 3, pp. 437–449, 2025; dx.doi.org/10.1039/D5EB00014A.
3. N. Meethong and others, “Size-Dependent Lithium Miscibility Gap in Nanoscale Li1x FePO4,” Electrochem. Solid-State Lett., vol. 10, no. 5, A134, 2007; doi.org/10.1149/1.2710960.
4. V. Srinivasan and J. Newman, “Existence of Path-Dependence in the LiFePO4 Electrode,” Electrochem. Solid-State Lett., vol. 9, no. 9, A110, 2006; doi.org/10.1149/1.2159299.
Application Library path: Battery_Design_Module/Lithium-Ion_Batteries,_Performance/lfp_voltage_hysteresis
Modeling Instructions
From the File menu, choose New.
New
In the New window, click  Model Wizard.
Model Wizard
1
In the Model Wizard window, click  1D.
2
In the Select Physics tree, select Electrochemistry > Batteries > Lithium-Ion Battery (liion).
3
Click Add.
4
In the Select Physics tree, select Mathematics > ODE and DAE Interfaces > Global ODEs and DAEs (ge).
5
Click Add.
6
In the Select Physics tree, select Mathematics > ODE and DAE Interfaces > Domain ODEs and DAEs (dode).
7
Click Add.
8
In the Select Physics tree, select Mathematics > ODE and DAE Interfaces > Events (ev).
9
Click Add.
10
Click  Study.
11
In the Select Study tree, select Preset Studies for Selected Physics Interfaces > Lithium-Ion Battery > Time Dependent with Initialization.
12
Global Definitions
Parameters 1
Add a list of parameter definitions from a text file as follows:
1
In the Model Builder window, under Global Definitions click Parameters 1.
2
In the Settings window for Parameters, locate the Parameters section.
3
Click  Load from File.
4
Some definitions are highlighted in red, indicating missing operators. Add these next.
Interpolation - Eeq poor (lithiation from fully delithiated)
1
In the Home toolbar, click  Functions and choose Global > Interpolation.
2
In the Settings window for Interpolation, type Interpolation - Eeq poor (lithiation from fully delithiated) in the Label text field.
3
Locate the Definition section. In the Function name text field, type Eeq_poor.
4
Click  Load from File.
5
6
Locate the Units section. In the Function table, enter the following settings:
7
In the Argument table, enter the following settings:
8
Click to expand the Plot Parameters section. Clear the Include left extrapolation checkbox.
9
Clear the Include right extrapolation checkbox.
10
Click to expand the Related Functions section. Select the Define inverse function checkbox.
11
In the Inverse function name text field, type Eeq_poor_inv.
12
Interpolation - Eeq rich (delithiation from fully lithiated)
1
In the Home toolbar, click  Functions and choose Global > Interpolation.
2
In the Settings window for Interpolation, type Interpolation - Eeq rich (delithiation from fully lithiated) in the Label text field.
3
Locate the Definition section. In the Function name text field, type Eeq_rich.
4
Click  Load from File.
5
6
Locate the Units section. In the Function table, enter the following settings:
7
In the Argument table, enter the following settings:
8
Click to expand the Plot Parameters section. Clear the Include left extrapolation checkbox.
9
Clear the Include right extrapolation checkbox.
10
Locate the Related Functions section. Select the Define inverse function checkbox.
11
In the Inverse function name text field, type Eeq_rich_inv.
12
Analytic 1 (an1)
In the Home toolbar, click  Functions and choose Global > Analytic.
Parameters 1
Check the parameter list again. The error indicators should now have vanished.
Analytic 1 - Eeq_avg
Also add a function for an averaged equilibrium potential function for the whole particle ensemble. This function is strictly not required in the model, but is convenient to have in order to assess a thermodynamically consistent equilibrium potential that can be used, for instance, to compute heat sources.
1
In the Model Builder window, under Global Definitions click Analytic 1 (an1).
2
In the Settings window for Analytic, type Analytic 1 - Eeq_avg in the Label text field.
3
In the Function name text field, type Eeq_avg.
4
Locate the Definition section. In the Expression text field, type if(cs<cs_poor_max, Eeq_poor(cs), if(cs>cs_rich_min, Eeq_rich(cs), Eeq_poor(cs_poor_max)+(Eeq_rich(cs_rich_min)-Eeq_poor(cs_poor_max))*(cs-cs_poor_max)/(cs_rich_min-cs_poor_max))).
5
In the Arguments text field, type cs.
6
Locate the Units section. In the Function text field, type V.
7
8
Locate the Plot Parameters section. In the table, enter the following settings:
9
Geometry 1
Interval 1 (i1)
1
In the Model Builder window, under Component 1 (comp1) right-click Geometry 1 and choose Interval.
2
In the Settings window for Interval, locate the Interval section.
3
From the Specify list, choose Interval lengths.
4
5
Click  Build All Objects.
Add Material from Library
In the Home toolbar, click  Windows and choose Add Material from Library.
Add Material
1
Go to the Add Material window.
2
In the tree, select Battery > Electrodes > Lithium Metal, Li (Negative, Li-ion Battery).
3
Right-click and choose Add to Component 1 (comp1).
4
In the tree, select Battery > Electrolytes > LiPF6 in 1:1 EC:DEC (Liquid, Li-ion Battery).
5
Right-click and choose Add to Component 1 (comp1).
6
In the Home toolbar, click  Add Material to close the Add Material window.
Materials
Lithium Metal, Li (Negative, Li-ion Battery) (mat1)
1
In the Settings window for Material, locate the Geometric Entity Selection section.
2
From the Geometric entity level list, choose Boundary.
3
LiPF6 in 1:1 EC:DEC (Liquid, Li-ion Battery) (mat2)
1
In the Model Builder window, click LiPF6 in 1:1 EC:DEC (Liquid, Li-ion Battery) (mat2).
2
In the Settings window for Material, locate the Geometric Entity Selection section.
3
From the Selection list, choose All domains.
Definitions
Define a number of variables for the positive porous electrode domain using a text file as follows:
Variables 1 - LFP Electrode
1
In the Model Builder window, under Component 1 (comp1) right-click Definitions and choose Variables.
2
In the Settings window for Variables, type Variables 1 - LFP Electrode in the Label text field.
3
Locate the Geometric Entity Selection section. From the Geometric entity level list, choose Domain.
4
5
Click  Create Selection.
6
In the Create Selection dialog, type LFP Electrode in the Selection name text field.
7
8
In the Settings window for Variables, locate the Variables section.
9
Click  Load from File.
10
Here, a number of expressions are highlighted in yellow, indicating unknown variables. These will be corrected shortly.
Variables 2 - Global
Add a second, global, variable node to define an applied current density variable. The variable C will be defined later by the Events interface.
1
In the Model Builder window, right-click Definitions and choose Variables.
2
In the Settings window for Variables, type Variables 2 - Global in the Label text field.
3
Locate the Variables section. In the table, enter the following settings:
Lithium-Ion Battery (liion)
Separator 1
1
In the Model Builder window, under Component 1 (comp1) > Lithium-Ion Battery (liion) click Separator 1.
2
In the Settings window for Separator, locate the Porous Matrix Properties section.
3
In the εl text field, type epsl_sep.
Electrode Surface 1
1
In the Physics toolbar, click  Boundaries and choose Electrode Surface.
2
Porous Electrode 1
1
In the Physics toolbar, click  Domains and choose Porous Electrode.
2
In the Settings window for Porous Electrode, locate the Domain Selection section.
3
From the Selection list, choose LFP Electrode.
4
Locate the Porous Matrix Properties section. In the εs text field, type epss.
5
In the εl text field, type epsl.
Particle Intercalation 1
1
In the Model Builder window, click Particle Intercalation 1.
2
In the Settings window for Particle Intercalation, locate the Species Settings section.
3
In the cs,init text field, type cs_init.
4
From the cs,max list, choose User defined. In the associated text field, type csmax.
5
Locate the Particle Transport Properties section. From the Species concentration transport model list, choose No spatial gradients.
6
In the rp text field, type rp.
Porous Electrode Reaction 1
1
In the Model Builder window, click Porous Electrode Reaction 1.
2
In the Settings window for Porous Electrode Reaction, locate the Equilibrium Potential section.
3
From the Eeq list, choose User defined. In the associated text field, type Eeq_avg(cs_avg).
4
Locate the Electrode Kinetics section. From the iloc,expr list, choose User defined. In the associated text field, type iloc.
5
Click to expand the Heat of Reaction section. From the list, choose User defined.
Electrode Current Density 1
1
In the Physics toolbar, click  Boundaries and choose Electrode Current Density.
2
3
In the Settings window for Electrode Current Density, locate the Electrode Current Density section.
4
In the in,s text field, type i_app.
Global ODEs and DAEs - Cycled capacity
1
In the Model Builder window, under Component 1 (comp1) click Global ODEs and DAEs (ge).
2
In the Settings window for Global ODEs and DAEs, type Global ODEs and DAEs - Cycled capacity in the Label text field.
Global Equations 1 (ODE1)
1
In the Model Builder window, under Component 1 (comp1) > Global ODEs and DAEs - Cycled capacity (ge) click Global Equations 1 (ODE1).
2
In the Settings window for Global Equations, locate the Global Equations section.
3
4
Locate the Units section. Click  Define Dependent Variable Unit.
5
In the Dependent variable quantity table, enter the following settings:
6
Click  Define Source Term Unit.
7
In the Source term quantity table, enter the following settings:
Domain ODEs and DAEs - cs_poor and cs_rich
1
In the Model Builder window, under Component 1 (comp1) click Domain ODEs and DAEs (dode).
2
In the Settings window for Domain ODEs and DAEs, type Domain ODEs and DAEs - cs_poor and cs_rich in the Label text field.
3
Locate the Domain Selection section. From the Selection list, choose LFP Electrode.
4
Locate the Units section. Click  Define Dependent Variable Unit.
5
In the Dependent variable quantity table, enter the following settings:
6
Click  Define Source Term Unit.
7
In the Source term quantity table, enter the following settings:
8
Click to expand the Discretization section. From the Element order list, choose Linear.
9
Click to expand the Dependent Variables section. In the Field name (mol/m³) text field, type cs.
10
In the Number of dependent variables text field, type 2.
11
In the Dependent variables (mol/m³) table, enter the following settings:
Distributed ODE 1
1
In the Model Builder window, under Component 1 (comp1) > Domain ODEs and DAEs - cs_poor and cs_rich (dode) click Distributed ODE 1.
2
In the Settings window for Distributed ODE, locate the Source Term section.
3
In the f text-field array, type R_poor on the first row.
4
In the f text-field array, type R_rich on the second row.
5
Locate the Damping or Mass Coefficient section. In the da text-field array, type epss in the first column of the first row.
6
In the da text-field array, type epss in the second column of the second row.
Initial Values 1
1
In the Model Builder window, click Initial Values 1.
2
In the Settings window for Initial Values, locate the Initial Values section.
3
In the cspoor text field, type cs_poor_init.
4
In the csrich text field, type cs_rich_init.
Events- Load Cycle
1
In the Model Builder window, under Component 1 (comp1) click Events (ev).
2
In the Settings window for Events, type Events- Load Cycle in the Label text field.
Explicit Event List 1
1
In the Physics toolbar, click  Global and choose Explicit Event List.
2
In the Settings window for Explicit Event List, locate the Discrete State section.
3
In the u text field, type C.
4
In the Description text field, type C rate.
5
In the u0 text field, type 1.
6
Locate the Explicit Events section. Click  Clear Table.
7
Click  Load from File.
8
Definitions
Return to the Variables nodes and check that all warnings have vanished.
Point Probe 1 - Cell voltage
Before solving the model, add some probes. The probe values will be stored in a table for every time step computed by the solver.
1
In the Definitions toolbar, click  Probes and choose Point Probe.
2
In the Settings window for Point Probe, type Point Probe 1 - Cell voltage in the Label text field.
3
Locate the Source Selection section. Click  Clear Selection.
4
5
Locate the Expression section. In the Expression text field, type phis.
6
Select the Description checkbox. In the associated text field, type Cell voltage.
Global Variable Probe 1 - Cycled capacity
1
In the Definitions toolbar, click  Probes and choose Global Variable Probe.
2
In the Settings window for Global Variable Probe, type Global Variable Probe 1 - Cycled capacity in the Label text field.
3
Locate the Expression section. In the Table and plot unit field, type mAh/cm^2.
Study 1
Step 2: Time Dependent
1
In the Model Builder window, under Study 1 click Step 2: Time Dependent.
2
In the Settings window for Time Dependent, locate the Study Settings section.
3
From the Time unit list, choose h.
4
In the Output times text field, type 0 3.
Step 1: Current Distribution Initialization
1
In the Model Builder window, click Step 1: Current Distribution Initialization.
2
In the Settings window for Current Distribution Initialization, locate the Physics and Variables Selection section.
3
In the Solve for column of the table, under Component 1 (comp1), clear the checkboxes for Global ODEs and DAEs - Cycled capacity (ge) and Domain ODEs and DAEs - cs_poor and cs_rich (dode).
Solution 1 (sol1)
1
In the Study toolbar, click  Show Default Solver.
2
In the Model Builder window, expand the Solution 1 (sol1) node.
Adding manual scales for the cs_poor and cs_rich variables improves convergence.
3
In the Model Builder window, expand the Study 1 > Solver Configurations > Solution 1 (sol1) > Dependent Variables 2 node, then click Dependent Variable Cs_poor (comp1.cs_poor).
4
In the Settings window for Field, locate the Scaling section.
5
From the Method list, choose Manual.
6
In the Scale text field, type 10000.
7
In the Model Builder window, under Study 1 > Solver Configurations > Solution 1 (sol1) > Dependent Variables 2 click Dependent Variable Cs_rich (comp1.cs_rich).
8
In the Settings window for Field, locate the Scaling section.
9
From the Method list, choose Manual.
10
In the Scale text field, type 10000.
11
In the Model Builder window, click Study 1.
12
In the Settings window for Study, locate the Study Settings section.
13
Clear the Generate default plots checkbox.
14
In the Study toolbar, click  Compute.
Results
Duplicate and modify the auto-generated probe plot as follows:
Cell Voltage vs Time
1
In the Model Builder window, right-click Probe Plot Group 1 and choose Duplicate.
2
In the Model Builder window, click Probe Plot Group 1.1.
3
In the Settings window for 1D Plot Group, type Cell Voltage vs Time in the Label text field.
Probe Table Graph 1
1
In the Model Builder window, click Probe Table Graph 1.
2
In the Settings window for Table Graph, locate the Data section.
3
In the Columns list box, select Cell voltage (V), Point Probe 1 - Cell voltage.
4
Locate the Coloring and Style section. From the Width list, choose 2.
Cell Voltage vs Time
1
In the Model Builder window, click Cell Voltage vs Time.
2
In the Settings window for 1D Plot Group, locate the Legend section.
3
Clear the Show legends checkbox.
4
Locate the Plot Settings section.
5
Select the y-axis label checkbox. In the associated text field, type Cell voltage (V).
6
In the Cell Voltage vs Time toolbar, click  Plot.
Cell Voltage vs Capacity
1
Right-click Cell Voltage vs Time and choose Duplicate.
2
In the Model Builder window, click Cell Voltage vs Time 1.
3
In the Settings window for 1D Plot Group, type Cell Voltage vs Capacity in the Label text field.
Probe Table Graph 1
1
In the Model Builder window, click Probe Table Graph 1.
2
In the Settings window for Table Graph, locate the Data section.
3
From the x-axis data list, choose Cycled capacity (mAh/cm^2).
Cell Voltage vs Capacity
1
In the Model Builder window, click Cell Voltage vs Capacity.
2
In the Cell Voltage vs Capacity toolbar, click  Plot.