Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue 573 implement LGM50 #854

Merged
Merged
Show file tree
Hide file tree
Changes from 75 commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
26621ab
#573 update final LGM50 parameters
brosaplanella Feb 2, 2020
1311b65
#573 included Chen2020 as a PyBaMM parameter set
brosaplanella Feb 9, 2020
63006d5
#573 update final LGM50 parameters
brosaplanella Feb 2, 2020
8594e56
#573 included Chen2020 as a PyBaMM parameter set
brosaplanella Feb 9, 2020
451e973
Merge branch 'issue-573-implement-LGM50' of https://github.com/ferran…
brosaplanella Feb 11, 2020
9e8309f
#573 update final LGM50 parameters
brosaplanella Feb 2, 2020
b0f0fec
#573 included Chen2020 as a PyBaMM parameter set
brosaplanella Feb 9, 2020
8c623d7
Merge branch 'issue-573-implement-LGM50' of https://github.com/ferran…
brosaplanella Feb 11, 2020
73e2c8e
updated .gitignore to only omit data
brosaplanella Feb 11, 2020
de69496
#573 setup test as experiment, still fails to converge
brosaplanella Feb 11, 2020
16ccdb9
#573 changed reference OCV anode otherwise the solver does not converge
brosaplanella Feb 11, 2020
1383600
#573 update test files to check parameters work
brosaplanella Feb 11, 2020
78c4717
#573 updated comparison with experiments
brosaplanella Feb 12, 2020
7887ea9
issue-573 data folder in the root directory
brosaplanella Feb 18, 2020
8cacf9f
update according to Emma's feedback
brosaplanella Feb 18, 2020
d2dc2b0
update final comments paper
brosaplanella Feb 20, 2020
b0ba975
changed label to half cell
brosaplanella Feb 20, 2020
063e1b9
Merge remote-tracking branch 'upstream/master'
brosaplanella Feb 21, 2020
d0825be
Merge remote-tracking branch 'upstream/master'
brosaplanella Feb 24, 2020
1b9ee46
#573 update final LGM50 parameters
brosaplanella Feb 2, 2020
84fd3ca
#573 included Chen2020 as a PyBaMM parameter set
brosaplanella Feb 9, 2020
bcf4f36
updated .gitignore to only omit data
brosaplanella Feb 11, 2020
cd293a9
#573 setup test as experiment, still fails to converge
brosaplanella Feb 11, 2020
9e454c9
#573 changed reference OCV anode otherwise the solver does not converge
brosaplanella Feb 11, 2020
98ae683
#573 update test files to check parameters work
brosaplanella Feb 11, 2020
580d979
#573 updated comparison with experiments
brosaplanella Feb 12, 2020
dd6c5ed
issue-573 data folder in the root directory
brosaplanella Feb 18, 2020
567095e
update according to Emma's feedback
brosaplanella Feb 18, 2020
fdc33e0
update final comments paper
brosaplanella Feb 20, 2020
135543f
changed label to half cell
brosaplanella Feb 20, 2020
0a7e22e
removed LGM50 results
brosaplanella Feb 24, 2020
6e9f8ae
updated anode parameters to 1C tuned
brosaplanella Feb 24, 2020
c9f5088
updated README files
brosaplanella Feb 24, 2020
e8ad36f
added Chen2020 as a parameter set
brosaplanella Feb 24, 2020
34a5835
Merge branch 'issue-573-implement-LGM50' of https://github.com/ferran…
brosaplanella Feb 24, 2020
4d18eb8
removed results file
brosaplanella Feb 24, 2020
c654a38
parameters for 1C tuning
brosaplanella Feb 24, 2020
4c1a3d5
added LGM50 parameter test
brosaplanella Feb 24, 2020
d96a1e9
flake8
brosaplanella Feb 24, 2020
86f9a04
flake8
brosaplanella Feb 24, 2020
83fa38a
added contact details README
brosaplanella Feb 24, 2020
367327b
added LGM50 parameters
brosaplanella Feb 24, 2020
9f82ccd
Merge remote-tracking branch 'upstream/master'
brosaplanella Feb 24, 2020
2428681
Merge remote-tracking branch 'upstream/master'
brosaplanella Feb 25, 2020
b977426
#573 update final LGM50 parameters
brosaplanella Feb 2, 2020
d254ff8
#573 included Chen2020 as a PyBaMM parameter set
brosaplanella Feb 9, 2020
cc1dbc1
#573 setup test as experiment, still fails to converge
brosaplanella Feb 11, 2020
b1e9247
#573 changed reference OCV anode otherwise the solver does not converge
brosaplanella Feb 11, 2020
d34816f
#573 update test files to check parameters work
brosaplanella Feb 11, 2020
466e04a
#573 updated comparison with experiments
brosaplanella Feb 12, 2020
9b62545
issue-573 data folder in the root directory
brosaplanella Feb 18, 2020
30ccad1
update according to Emma's feedback
brosaplanella Feb 18, 2020
a95e41e
update final comments paper
brosaplanella Feb 20, 2020
c793dbd
changed label to half cell
brosaplanella Feb 20, 2020
2f0d05d
#573 update final LGM50 parameters
brosaplanella Feb 2, 2020
75ba757
#573 included Chen2020 as a PyBaMM parameter set
brosaplanella Feb 9, 2020
d9910ad
#573 setup test as experiment, still fails to converge
brosaplanella Feb 11, 2020
d30a2cc
issue-573 data folder in the root directory
brosaplanella Feb 18, 2020
691ebd5
update final comments paper
brosaplanella Feb 20, 2020
94dbdff
updated anode parameters to 1C tuned
brosaplanella Feb 24, 2020
555b6eb
updated README files
brosaplanella Feb 24, 2020
2127dd7
added Chen2020 as a parameter set
brosaplanella Feb 24, 2020
4a5a17e
removed results file
brosaplanella Feb 24, 2020
1d0b9d5
parameters for 1C tuning
brosaplanella Feb 24, 2020
c75b6fb
added LGM50 parameter test
brosaplanella Feb 24, 2020
f092242
flake8
brosaplanella Feb 24, 2020
c9d871c
flake8
brosaplanella Feb 24, 2020
b43c721
added contact details README
brosaplanella Feb 24, 2020
c317a43
added LGM50 parameters
brosaplanella Feb 24, 2020
c99d487
Merge branch 'issue-573-implement-LGM50' of https://github.com/ferran…
brosaplanella Feb 25, 2020
f17ffb9
#573 removed the old input folder
brosaplanella Feb 25, 2020
4e1bc74
#573 added Chen2020 to new input directory
brosaplanella Feb 25, 2020
f6dd257
flake8
brosaplanella Feb 25, 2020
249f46d
fixed for the new input directory
brosaplanella Feb 25, 2020
f62efc8
fix test name
brosaplanella Feb 25, 2020
6bc0eef
#573 remove the dUdT functions as they returned 0
brosaplanella Feb 25, 2020
06fced3
fixed path to parameters .gitignore
brosaplanella Feb 25, 2020
29d3491
updated parameters_cli test for Chen2020
brosaplanella Feb 25, 2020
92cff6c
added reference Chen2020
brosaplanella Feb 25, 2020
bed5fb2
added csv files
brosaplanella Feb 25, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## Features

- Added LG M50 parameter set ([#854](https://github.com/pybamm-team/PyBaMM/pull/854))
- Changed rootfinding algorithm to CasADi, scipy.optimize.root still accessible as an option ([#844](https://github.com/pybamm-team/PyBaMM/pull/844))
- Added capacitance effects to lithium-ion models ([#842](https://github.com/pybamm-team/PyBaMM/pull/842))
- Added NCA parameter set ([#824](https://github.com/pybamm-team/PyBaMM/pull/824))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# LG M50 Graphite anode parameters

Parameters for a LG M50 graphite anode, from the paper

> Chang-Hui Chen, Ferran Brosa Planella, Kieran O’Regan, Dominika Gastol, W. Dhammika Widanage, and Emma Kendrick. "Development of Experimental Techniques for Parameterization of Multi-scale Lithium-ion Battery Models." Submitted for publication (2020).

and references therein. For more information or how to cite please contact Ferran.Brosa-Planella (at) warwick.ac.uk.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from pybamm import exp


def graphite_LGM50_diffusivity_Chen2020(sto, T, T_inf, E_D_s, R_g):
"""
LG M50 Graphite diffusivity as a function of stochiometry, in this case the
diffusivity is taken to be a constant. The value is taken from [1].
References
----------
.. [1] Work in progress
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this the paper in the readme? info could be added here if so

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done!

Parameters
----------
sto: :class: `numpy.Array`
Electrode stochiometry
T: :class: `numpy.Array`
Dimensional temperature
T_inf: double
Reference temperature
E_D_s: double
Solid diffusion activation energy
R_g: double
The ideal gas constant
Returns
-------
: double
Solid diffusivity
"""

D_ref = 3.3e-14
arrhenius = exp(E_D_s / R_g * (1 / T_inf - 1 / T))

return D_ref * arrhenius
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from pybamm import exp


def graphite_LGM50_electrolyte_reaction_rate_Chen2020(T, T_inf, E_r, R_g):
"""
Reaction rate for Butler-Volmer reactions between graphite and LiPF6 in EC:DMC.
References
----------
.. [1] Work in progress
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as above

Parameters
----------
T: :class: `numpy.Array`
Dimensional temperature
T_inf: double
Reference temperature
E_r: double
Reaction activation energy
R_g: double
The ideal gas constant
Returns
-------
:`numpy.Array`
Reaction rate
"""

m_ref = 6.48E-7
arrhenius = exp(E_r / R_g * (1 / T_inf - 1 / T))

return m_ref * arrhenius
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
from pybamm import exp, cosh


def graphite_LGM50_entropic_change_Chen2020(sto, c_n_max):
"""
Graphite entropic change in open circuit potential (OCP) at a temperature of
298.15K as a function of the stochiometry. Data is not yet available so it is
set to zero.
References
----------
.. [1]
Parameters
----------
sto: double
Stochiometry of material (li-fraction)
"""

du_dT = (
-1.5 * (120.0 / c_n_max) * exp(-120 * sto)
+ (0.0351 / (0.083 * c_n_max)) * ((cosh((sto - 0.286) / 0.083)) ** (-2))
- (0.0045 / (0.119 * c_n_max)) * ((cosh((sto - 0.849) / 0.119)) ** (-2))
- (0.035 / (0.05 * c_n_max)) * ((cosh((sto - 0.9233) / 0.05)) ** (-2))
- (0.0147 / (0.034 * c_n_max)) * ((cosh((sto - 0.5) / 0.034)) ** (-2))
- (0.102 / (0.142 * c_n_max)) * ((cosh((sto - 0.194) / 0.142)) ** (-2))
- (0.022 / (0.0164 * c_n_max)) * ((cosh((sto - 0.9) / 0.0164)) ** (-2))
- (0.011 / (0.0226 * c_n_max)) * ((cosh((sto - 0.124) / 0.0226)) ** (-2))
+ (0.0155 / (0.029 * c_n_max)) * ((cosh((sto - 0.105) / 0.029)) ** (-2))
)

return du_dT * 0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you should just be able to return 0*sto (and remove the unnecessary function for du_dT), or alternatively just set this to be zero in the .csv instead of a [function] and it should work too. the latter is probably cleaner

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Name [units],Value,Reference,Notes
Positive electrode conductivity [S.m-1],10,Scott Moura FastDFN,lithium cobalt oxide
Maximum concentration in positive electrode [mol.m-3],51217.9257309275,Scott Moura FastDFN,
Positive electrode diffusivity [m2.s-1],[function]lico2_diffusivity_Dualfoil1998,,
Positive electrode OCP [V],[function]lico2_ocp_Dualfoil1998,
Positive electrode OCP [V],[function]lico2_ocp_Dualfoil1998,,
,,,
# Microstructure,,,
Positive electrode porosity,0.3,Scott Moura FastDFN,electrolyte volume fraction
Expand Down Expand Up @@ -35,4 +35,4 @@ Positive electrode OCP entropic change [V.K-1],[function]lico2_entropic_change_M
Reference temperature [K],298.15,25C,
Positive electrode reaction rate,[function]lico2_electrolyte_reaction_rate_Dualfoil1998,,
Positive reaction rate activation energy [J.mol-1],39570,,
Positive solid diffusion activation energy [J.mol-1],18550,,
Positive solid diffusion activation energy [J.mol-1],18550,,
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# NMC 811 cathode parameters

Parameters for an LG M50 NMC cathode, from the paper

> Chang-Hui Chen, Ferran Brosa Planella, Kieran O’Regan, Dominika Gastol, W. Dhammika Widanage, and Emma Kendrick. "Development of Experimental Techniques for Parameterization of Multi-scale Lithium-ion Battery Models." Submitted for publication (2020).

and references therein. For more information or how to cite please contact Ferran.Brosa-Planella (at) warwick.ac.uk.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from pybamm import exp


def nmc_LGM50_diffusivity_Chen2020(sto, T, T_inf, E_D_s, R_g):
"""
NMC diffusivity as a function of stoichiometry, in this case the
diffusivity is taken to be a constant. The value is taken from [1].
References
----------
.. [1] Work in progress
Parameters
----------
sto: :class: `numpy.Array`
Electrode stochiometry
T: :class: `numpy.Array`
Dimensional temperature
T_inf: double
Reference temperature
E_D_s: double
Solid diffusion activation energy
R_g: double
The ideal gas constant
Returns
-------
: double
Solid diffusivity
"""

D_ref = 4e-15
arrhenius = exp(E_D_s / R_g * (1 / T_inf - 1 / T))

return D_ref * arrhenius
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
from pybamm import exp


def nmc_LGM50_electrolyte_reaction_rate_Chen2020(T, T_inf, E_r, R_g):
"""
Reaction rate for Butler-Volmer reactions between NMC and LiPF6 in EC:DMC.
References
----------
.. [1]
Parameters
----------
T: :class: `numpy.Array`
Dimensional temperature
T_inf: double
Reference temperature
E_r: double
Reaction activation energy
R_g: double
The ideal gas constant
Returns
-------
: double
Reaction rate
"""
m_ref = 3.59E-6
arrhenius = exp(E_r / R_g * (1 / T_inf - 1 / T))

return m_ref * arrhenius
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from pybamm import cosh


def nmc_LGM50_entropic_change_Chen2020(sto, c_p_max):
"""
NMC entropic change in open circuit potential (OCP) at a temperature of 298.15K
as a function of the stochiometry. The fit is taken from [1].
References
----------
.. [1] Work in progress
Parameters
----------
sto: double
Stochiometry of material (li-fraction)
"""

du_dT = (
0.07645 * (-54.4806 / c_p_max) * ((1.0 / cosh(30.834 - 54.4806 * sto)) ** 2)
+ 2.1581 * (-50.294 / c_p_max) * ((cosh(52.294 - 50.294 * sto)) ** (-2))
+ 0.14169 * (19.854 / c_p_max) * ((cosh(11.0923 - 19.8543 * sto)) ** (-2))
- 0.2051 * (5.4888 / c_p_max) * ((cosh(1.4684 - 5.4888 * sto)) ** (-2))
- (0.2531 / 0.1316 / c_p_max) * ((cosh((-sto + 0.56478) / 0.1316)) ** (-2))
- (0.02167 / 0.006 / c_p_max) * ((cosh((sto - 0.525) / 0.006)) ** (-2))
)

return du_dT * 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# LG M50 cell parameters

Parameters for an LG M50 cell, from the paper

> Chang-Hui Chen, Ferran Brosa Planella, Kieran O’Regan, Dominika Gastol, W. Dhammika Widanage, and Emma Kendrick. "Development of Experimental Techniques for Parameterization of Multi-scale Lithium-ion Battery Models." Submitted for publication (2020).

and references therein. For more information or how to cite please contact Ferran.Brosa-Planella (at) warwick.ac.uk.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# LiPF6 electrolyte parameters

Parameters for a LiPF6 electrolyte, from the paper

> A. Nyman, M. Behm, and G. Lindbergh, ["Electrochemical characterisation and modelling of the mass transport phenomena in LiPF6-EC-EMC electrolyte,"](https://www.sciencedirect.com/science/article/pii/S0013468608005045) Electrochim. Acta, vol. 53, no. 22, pp. 6356–6365, 2008.

and references therein.
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
from pybamm import exp


def electrolyte_conductivity_Nyman2008(c_e, T, T_inf, E_k_e, R_g):
"""
Conductivity of LiPF6 in EC:EMC (3:7) as a function of ion concentration. The data
comes from [1].
References
----------
.. [1] A. Nyman, M. Behm, and G. Lindbergh, "Electrochemical characterisation and
modelling of the mass transport phenomena in LiPF6-EC-EMC electrolyte,"
Electrochim. Acta, vol. 53, no. 22, pp. 6356–6365, 2008.
Parameters
----------
c_e: :class: `numpy.Array`
Dimensional electrolyte concentration
T: :class: `numpy.Array`
Dimensional temperature
T_inf: double
Reference temperature
E_k_e: double
Electrolyte conductivity activation energy
R_g: double
The ideal gas constant
Returns
-------
:`numpy.Array`
Solid diffusivity
"""

sigma_e = (
0.1297 * (c_e / 1000) ** 3
- 2.51 * (c_e / 1000) ** 1.5
+ 3.329 * (c_e / 1000)
)

arrhenius = exp(E_k_e / R_g * (1 / T_inf - 1 / T))

return sigma_e * arrhenius
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
from pybamm import exp


def electrolyte_diffusivity_Nyman2008(c_e, T, T_inf, E_D_e, R_g):
"""
Diffusivity of LiPF6 in EC:EMC (3:7) as a function of ion concentration. The data
comes from [1]
References
----------
.. [1] A. Nyman, M. Behm, and G. Lindbergh, "Electrochemical characterisation and
modelling of the mass transport phenomena in LiPF6-EC-EMC electrolyte,"
Electrochim. Acta, vol. 53, no. 22, pp. 6356–6365, 2008.
Parameters
----------
c_e: :class: `numpy.Array`
Dimensional electrolyte concentration
T: :class: `numpy.Array`
Dimensional temperature
T_inf: double
Reference temperature
E_D_e: double
Electrolyte diffusion activation energy
R_g: double
The ideal gas constant
Returns
-------
:`numpy.Array`
Solid diffusivity
"""

D_c_e = (
8.794E-11 * (c_e / 1000) ** 2
- 3.972E-10 * (c_e / 1000)
+ 4.862E-10
)
arrhenius = exp(E_D_e / R_g * (1 / T_inf - 1 / T))

return D_c_e * arrhenius
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# 1C discharge from full

Discharge lithium-ion battery from full charge at 1C, using the initial conditions from the paper

> Chang-Hui Chen, Ferran Brosa Planella, Kieran O’Regan, Dominika Gastol, W. Dhammika Widanage, and Emma Kendrick. "Development of Experimental Techniques for Parameterization of Multi-scale Lithium-ion Battery Models." Submitted for publication (2020).

and references therein. For more information or how to cite please contact Ferran.Brosa-Planella (at) warwick.ac.uk.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Separator parameters

Parameters for an LG M50 separator, from the paper

> Chang-Hui Chen, Ferran Brosa Planella, Kieran O’Regan, Dominika Gastol, W. Dhammika Widanage, and Emma Kendrick. "Development of Experimental Techniques for Parameterization of Multi-scale Lithium-ion Battery Models." Submitted for publication (2020).

and references therein. For more information or how to cite please contact Ferran.Brosa-Planella (at) warwick.ac.uk.
16 changes: 16 additions & 0 deletions pybamm/parameters/parameter_sets.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,13 @@
multi-physics in varied length scales. Journal of The Electrochemical
Society, 158(8), A955-A969.

Chen2020
Chang-Hui Chen, Ferran Brosa Planella, Kieran O’Regan, Dominika Gastol, W. Dhammika
Widanage, and Emma Kendrick. "Development of Experimental Techniques for
Parameterization of Multi-scale Lithium-ion Battery Models." Submitted for
publication (2020).


Lead-acid
---------
Sulzer2019
Expand Down Expand Up @@ -49,6 +56,15 @@
"experiment": "1C_discharge_from_full_Kim2011",
}

Chen2020 = {
"chemistry": "lithium-ion",
"cell": "LGM50_Chen2020",
"anode": "graphite_Chen2020",
"separator": "separator_Chen2020",
"cathode": "nmc_Chen2020",
"electrolyte": "lipf6_Nyman2008",
"experiment": "1C_discharge_from_full_Chen2020",
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

take a look at the latest master (see PR #818)-- you can add a reference here so people know to cite your paper if they use your parameter set

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I talked to @tinosulzer and he said he would do so after the PR is merged.

#
# Lead-acid
#
Expand Down
2 changes: 1 addition & 1 deletion pybamm/parameters/standard_parameters_lithium_ion.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ def U_p_dimensional(sto, T):


# can maybe improve ref value at some stage
U_n_ref = U_n_dimensional(pybamm.Scalar(0.7), T_ref)
U_n_ref = U_n_dimensional(pybamm.Scalar(0.2), T_ref)

# can maybe improve ref value at some stage
U_p_ref = U_p_dimensional(pybamm.Scalar(0.7), T_ref)
Expand Down
Loading