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 729 ecker params #922

Merged
merged 13 commits into from
Mar 31, 2020
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,15 @@
## Features

- Store variable slices in model for inspection ([#925](https://github.com/pybamm-team/PyBaMM/pull/925))
- Added LiNiCoO2 parameter set from Ecker et. al. ([#922](https://github.com/pybamm-team/PyBaMM/pull/922))
- Made t_plus (optionally) a function of electrolyte concentration, and added (1 + dlnf/dlnc) to models ([#921](https://github.com/pybamm-team/PyBaMM/pull/921))
- Added `DummySolver` for empty models ([#915](https://github.com/pybamm-team/PyBaMM/pull/915))
- Added functionality to broadcast to edges ([#891](https://github.com/pybamm-team/PyBaMM/pull/891))
- Reformatted and cleaned up `QuickPlot` ([#886](https://github.com/pybamm-team/PyBaMM/pull/886))
- Added thermal effects to lead-acid models ([#885](https://github.com/pybamm-team/PyBaMM/pull/885))
- Add new symbols `VariableDot`, representing the derivative of a variable wrt time,
and `StateVectorDot`, representing the derivative of a state vector wrt time
([#858](https://github.com/pybamm-team/PyBaMM/issues/858))
- Added a helper function for info on function parameters ([#881](https://github.com/pybamm-team/PyBaMM/pull/881))
- Added additional notebooks showing how to create and compare models ([#877](https://github.com/pybamm-team/PyBaMM/pull/877))
- Added `Minimum`, `Maximum` and `Sign` operators
Expand Down
2 changes: 1 addition & 1 deletion examples/notebooks/compare-comsol-discharge-curve.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
"version": "3.6.9"
}
},
"nbformat": 4,
Expand Down
243 changes: 243 additions & 0 deletions examples/notebooks/compare-ecker-data.ipynb

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion examples/notebooks/models/DFN.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
"version": "3.6.9"
}
},
"nbformat": 4,
Expand Down
34 changes: 34 additions & 0 deletions pybamm/CITATIONS.txt
Original file line number Diff line number Diff line change
Expand Up @@ -135,3 +135,37 @@ year={2020}
doi = {10.5281/zenodo.3597656},
url = {https://doi.org/10.5281/zenodo.3597656}
}

@article{ecker2015i,
title={Parameterization of a physico-chemical model of a lithium-ion battery i. determination of parameters},
author={Ecker, Madeleine and Tran, Thi Kim Dung and Dechent, Philipp and K{\"a}bitz, Stefan and Warnecke, Alexander and Sauer, Dirk Uwe},
journal={Journal of the Electrochemical Society},
volume={162},
number={9},
pages={A1836--A1848},
year={2015},
publisher={The Electrochemical Society}
}

@article{ecker2015ii,
title={Parameterization of a physico-chemical model of a lithium-ion battery ii. model validation},
author={Ecker, Madeleine and K{\"a}bitz, Stefan and Laresgoiti, Izaro and Sauer, Dirk Uwe},
journal={Journal of The Electrochemical Society},
volume={162},
number={9},
pages={A1849--A1857},
year={2015},
publisher={The Electrochemical Society}
}

@article{richardson2020,
title = "Generalised single particle models for high-rate operation of graded lithium-ion electrodes: Systematic derivation and validation",
journal = "Electrochimica Acta",
volume = "339",
pages = "135862",
year = "2020",
issn = "0013-4686",
doi = "https://doi.org/10.1016/j.electacta.2020.135862",
url = "http://www.sciencedirect.com/science/article/pii/S0013468620302541",
author = "G. Richardson and I. Korotkin and R. Ranom and M. Castle and J.M. Foster",
}
2 changes: 1 addition & 1 deletion pybamm/expression_tree/symbol.py
Original file line number Diff line number Diff line change
Expand Up @@ -737,7 +737,7 @@ def shape(self):
)
# Pick a y that won't cause RuntimeWarnings
y = np.linspace(0.1, 0.9, min_y_size)
evaluated_self = self.evaluate(0, y, y)
evaluated_self = self.evaluate(0, y, y, inputs="shape test")

# Return shape of evaluated object
if isinstance(evaluated_self, numbers.Number):
Expand Down
31 changes: 31 additions & 0 deletions pybamm/input/discharge_data/Ecker_1C.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
20.3084233101775,4.10984760218981
137.255118370379,4.06170981679401
247.454888715569,4.02086563524606
393.638257540821,3.98148017446767
530.825726746058,3.94063599291972
670.262170856298,3.91146157752832
820.943489491555,3.87499355828908
955.88198379179,3.84581914289769
1097.56740280703,3.81226856519758
1243.75077163228,3.79038775365404
1383.18721574253,3.76121333826264
1529.37058456778,3.73641508517996
1666.55805377301,3.7247453190234
1808.24347278826,3.70578194901899
1947.6799168985,3.69848834517114
2087.11636100874,3.68827729978416
2231.05075492899,3.67514881285803
2379.48309865925,3.66056160516233
2521.16851767449,3.63576335207965
2658.35598687973,3.60075405360997
2802.29038079997,3.55407498898374
2939.47785000521,3.51031336589665
3081.16326902045,3.47384534665741
3225.0976629407,3.43008372357031
3344.29333290591,3.38194593817451
3470.23592758612,3.30755117892646
3553.44799907126,3.21273432890442
3616.41929641137,3.11500003734325
3652.40289489144,3.01872446655165
3688.3864933715,2.89910936344693
3715.37419223154,2.76636577341609
33 changes: 33 additions & 0 deletions pybamm/input/discharge_data/Ecker_5C.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
0,4.00772806063782
2.10996257174233,3.9630519063978
9.53641973294314,3.90466605332464
22.2674891521443,3.85148732048119
40.7157517827462,3.80418814691602
60.9764236014983,3.75781321732131
82.7105988252504,3.72697310974463
103.708022346502,3.69851401469471
126.547325124005,3.67723564231538
149.386627901507,3.65476333775538
175.172937489009,3.63351237271449
204.643005589013,3.60393814158189
277.21304828527,3.55566182788309
341.310446402776,3.51924603989306
391.409562172782,3.4910575923102
409.091603032784,3.47331305363065
430.457402405285,3.45679670630482
454.401832736538,3.43791647603876
477.60951136529,3.41067186867334
499.712062440292,3.38938664445941
530.287258094045,3.35265909799465
551.653057466548,3.32539736104271
574.123984392801,3.29098230875862
594.384656211552,3.25535276879001
615.013703881554,3.214950926016
634.169248146556,3.17572931175344
650.377785601557,3.11737737526159
664.37606794906,3.06736240853066
677.63759859406,3.00540126815833
685.373491470311,2.94219480684576
693.846136049062,2.87660733300644
701.213653074063,2.79787632742773
706.002539140314,2.71195774734383
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Graphite anode parameters

Parameters for a graphite anode, from the papers:

> Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of a lithium-ion battery I. determination of parameters." Journal of the Electrochemical Society 162.9 (2015): A1836-A1848.

>Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of a lithium-ion battery II. Model validation." Journal of The Electrochemical Society 162.9 (2015): A1849-A1857.

The fits to data for the electrode and electrolyte properties are those provided
by Dr. Simon O’Kane in the paper:

> Richardson, Giles, et. al. "Generalised single particle models for high-rate operation of graded lithium-ion electrodes: Systematic derivation and validation." Electrochemica Acta 339 (2020): 135862
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
from pybamm import exp


def graphite_diffusivity_Ecker2015(sto, T, T_inf, E_D_s, R_g):
"""
Graphite diffusivity as a function of stochiometry [1, 2, 3].

References
----------
.. [1] Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of
a lithium-ion battery i. determination of parameters." Journal of the
Electrochemical Society 162.9 (2015): A1836-A1848.
.. [2] Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of
a lithium-ion battery ii. model validation." Journal of The Electrochemical
Society 162.9 (2015): A1849-A1857.
.. [3] Richardson, Giles, et. al. "Generalised single particle models for
high-rate operation of graded lithium-ion electrodes: Systematic derivation
and validation." Electrochemica Acta 339 (2020): 135862

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 = 8.4e-13 * exp(-11.3 * sto) + 8.2e-15
arrhenius = exp(-E_D_s / (R_g * T)) * exp(E_D_s / (R_g * 296))

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


def graphite_electrolyte_reaction_rate_Ecker2015(T, T_inf, E_r, R_g):
"""
Reaction rate for Butler-Volmer reactions between graphite and LiPF6 in EC:DMC.

References
----------
.. [1] Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of
a lithium-ion battery i. determination of parameters." Journal of the
Electrochemical Society 162.9 (2015): A1836-A1848.
.. [2] Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of
a lithium-ion battery ii. model validation." Journal of The Electrochemical
Society 162.9 (2015): A1849-A1857.
.. [3] Richardson, Giles, et. al. "Generalised single particle models for
high-rate operation of graded lithium-ion electrodes: Systematic derivation
and validation." Electrochemica Acta 339 (2020): 135862

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
"""

k_ref = 1.995 * 1e-10

# multiply by Faraday's constant to get correct units
F = constants.physical_constants["Faraday constant"][0]
m_ref = F * k_ref

arrhenius = exp(-E_r / (R_g * T)) * exp(E_r / (R_g * T_inf))

return m_ref * arrhenius
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
0.0015151515151514694, 1.4325153374233128
0.0060606060606061, 0.8619631901840491
0.010606060606060619, 0.7914110429447854
0.016666666666666607, 0.6595092024539877
0.021212121212121238, 0.5797546012269938
0.022727272727272707, 0.5245398773006136
0.030303030303030276, 0.4754601226993864
0.039393939393939315, 0.4141104294478526
0.045454545454545414, 0.3680981595092023
0.05303030303030298, 0.3312883435582821
0.06666666666666665, 0.28220858895705514
0.07878787878787874, 0.24846625766871155
0.08939393939393936, 0.2239263803680982
0.10151515151515145, 0.22085889570552153
0.12727272727272732, 0.21165644171779152
0.14242424242424245, 0.2024539877300613
0.15909090909090917, 0.19938650306748462
0.17727272727272725, 0.19325153374233128
0.19393939393939397, 0.18404907975460127
0.21363636363636362, 0.1809815950920246
0.23333333333333328, 0.17177914110429437
0.25757575757575757, 0.16564417177914104
0.2787878787878788, 0.16257668711656437
0.303030303030303, 0.15337423312883436
0.32878787878787885, 0.14110429447852746
0.35151515151515156, 0.13496932515337412
0.3712121212121211, 0.13190184049079745
0.39242424242424234, 0.128834355828221
0.5681818181818183, 0.1257668711656441
0.5878787878787879, 0.12269938650306744
0.6060606060606062, 0.1165644171779141
0.6272727272727272, 0.10122699386503076
0.6545454545454545, 0.0950920245398772
0.6742424242424243, 0.0950920245398772
0.6939393939393939, 0.08895705521472386
0.7181818181818183, 0.08895705521472386
0.7393939393939393, 0.08588957055214719
0.8909090909090911, 0.08282208588957074
0.956060606060606, 0.08272208588957074
0.9772727272727273, 0.07975460122699385
1, 0.07055214723926384
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
from pybamm import exp, tanh


def graphite_ocp_Ecker2015_function(sto):
"""
Graphite OCP as a function of stochiometry [1, 2, 3].

References
----------
.. [1] Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of
a lithium-ion battery i. determination of parameters." Journal of the
Electrochemical Society 162.9 (2015): A1836-A1848.
.. [2] Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of
a lithium-ion battery ii. model validation." Journal of The Electrochemical
Society 162.9 (2015): A1849-A1857.
.. [3] Richardson, Giles, et. al. "Generalised single particle models for
high-rate operation of graded lithium-ion electrodes: Systematic derivation
and validation." Electrochemica Acta 339 (2020): 135862

Parameters
----------
sto: :class: `numpy.Array`
Electrode stochiometry

Returns
-------
: double
Open circuit potential
"""

# Graphite Anode from Ecker, Kabitz, Laresgoiti et al.
# Analytical fit (WebPlotDigitizer + gnuplot)
a = 0.716502
b = 369.028
c = 0.12193
d = 35.6478
e = 0.0530947
g = 0.0169644
h = 27.1365
i = 0.312832
j = 0.0199313
k = 28.5697
m = 0.614221
n = 0.931153
o = 36.328
p = 1.10743
q = 0.140031
r = 0.0189193
s = 21.1967
t = 0.196176

u_eq = (
a * exp(-b * sto)
+ c * exp(-d * (sto - e))
- r * tanh(s * (sto - t))
- g * tanh(h * (sto - i))
- j * tanh(k * (sto - m))
- n * exp(o * (sto - p))
+ q
)

return u_eq
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
0.04291659469592768,2.5318983605709854e-13
0.08025337997334403,4.438292394020732e-14
0.12014956931041065,3.1947426343055446e-14
0.15796120718295306,2.6077962994674755e-14
0.19575227382393767,2.255908580891848e-14
0.2357650334731653,1.16865022242173e-14
0.27144412034088194,1.2386927328130891e-14
0.3100288936661386,2.0291954487412547e-14
0.3484165260222996,3.2604716406478646e-15
0.3866704453733347,7.640156635519089e-16
0.4264157790123111,8.417747371928056e-16
0.4641862744217376,7.717093525037831e-16
0.5018779134435263,8.837921553351043e-16
0.5412118224513462,3.109171322297572e-15
0.5766749113877059,6.062184667385398e-15
0.6148036890800979,3.595937210129949e-14
0.6545815938357071,2.0323093806678467e-15
0.7681399348426814,7.802664217099549e-16
0.8089429726375879,7.728942922045022e-16
0.8823034129113143,9.65829674321414e-16
0.9220864604748132,9.566999594213241e-16
0.9607500901877076,1.2545776383613633e-15
0.9976360226401492,1.395684713792463e-14
Loading