diff --git a/.github/codecov.yml b/.github/codecov.yml index 8c807f7472..1f0452076a 100644 --- a/.github/codecov.yml +++ b/.github/codecov.yml @@ -1,3 +1,2 @@ ignore: - - pybamm/parameters_cli.py - pybamm/install_odes.py diff --git a/CHANGELOG.md b/CHANGELOG.md index e3d12bd88c..2f76269488 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,11 @@ ## Optimizations - Added more rules for simplifying expressions ([#2211](https://github.com/pybamm-team/PyBaMM/pull/2211)) -- Sped up calculations of Electrode SOH variables for summary variables ([#2210](https://github.com/pybamm-team/PyBaMM/pull/2210)) + +## Breaking change + +- Removed parameter cli tools (add/edit/remove parameters). Parameter sets can now more easily be added via python scripts. ([#2342](https://github.com/pybamm-team/PyBaMM/pull/2342)) +- Parameter sets should now be provided as single python files containing all parameters and functions. Parameters provided as "data" (e.g. OCP vs SOC) can still be csv files, but must be either in the same folder as the parameter file or in a subfolder called "data/". See for example [Ai2020](https://github.com/pybamm-team/PyBaMM/tree/develop/pybamm/input/parameters/lithium_ion/Ai2020.py) ([#2342](https://github.com/pybamm-team/PyBaMM/pull/2342)) # [v22.9](https://github.com/pybamm-team/PyBaMM/tree/v22.9) - 2022-09-30 diff --git a/docs/index.rst b/docs/index.rst index 36c265a929..b62ae8d770 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -83,7 +83,6 @@ API documentation source/util source/callbacks source/citations - source/parameters_cli source/batch_study Examples diff --git a/docs/source/parameters_cli.rst b/docs/source/parameters_cli.rst deleted file mode 100644 index a92d7f332e..0000000000 --- a/docs/source/parameters_cli.rst +++ /dev/null @@ -1,19 +0,0 @@ -Parameters command line interface -======================================= - -PyBaMM comes with a small command line interface that can be used to manage parameter sets. -By default, PyBaMM provides parameters in the "input" directory located in the pybamm package -directory. -If you wish to add new parameters, you can first pull a given parameter directory into the current -working directory using the command ``pybamm_edit_parameter`` for manual editing. -By default, PyBaMM first looks for parameter defined in the current working directory before -falling back the package directory if nothing is found locally. -If you wish to access a newly defined parameter set from anywhere in your system, you can use -``pybamm_add_parameter`` to copy a given parameter directory to the package directory. -To get a list of currently available parameter sets, use ``pybamm_list_parameters``. - -.. autofunction:: pybamm.parameters_cli.add_parameter - -.. autofunction:: pybamm.parameters_cli.remove_parameter - -.. autofunction:: pybamm.parameters_cli.edit_parameter diff --git a/examples/notebooks/Creating Models/5-half-cell-model.ipynb b/examples/notebooks/Creating Models/5-half-cell-model.ipynb index 3e38bd6132..64a7dec819 100644 --- a/examples/notebooks/Creating Models/5-half-cell-model.ipynb +++ b/examples/notebooks/Creating Models/5-half-cell-model.ipynb @@ -1,669 +1,669 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "professional-composer", - "metadata": {}, - "source": [ - "# A half cell model" - ] - }, - { - "cell_type": "markdown", - "id": "naval-management", - "metadata": {}, - "source": [ - "In the [previous notebook](./4-comparing-full-and-reduced-order-models.ipynb) we saw how to compare full and reduced-order models. Both of these models were posed on a single domain: the negative electrode particle. Here we will see how to create a model which contains multiple domains.\n", - "\n", - "We consider a problem posed on a half-cell geometry, which consists of a separator ($-L_s" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# plot\n", + "pybamm.dynamic_plot(\n", + " solution,\n", + " [\n", + " \"Positive electrode potential [V]\",\n", + " \"Electrolyte potential [V]\",\n", + " \"Positive electrode interfacial current density [A.m-2]\",\n", + " \"Positive particle surface concentration [mol.m-3]\",\n", + " \"Average positive particle surface concentration [mol.m-3]\",\n", + " [\"Positive electrode OCP [V]\", \"Terminal voltage [V]\"],\n", + " ],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "abandoned-shirt", + "metadata": {}, + "source": [ + "In the [next notebook](./6-a-simple-SEI-model.ipynb) we consider a simple model for SEI growth, and show how to correctly pose the model in non-dimensional form and then create and solve it using pybamm." + ] + }, + { + "cell_type": "markdown", + "id": "independent-development", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "The relevant papers for this notebook are:" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "laden-replica", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1] Joel A. E. Andersson, Joris Gillis, Greg Horn, James B. Rawlings, and Moritz Diehl. CasADi – A software framework for nonlinear optimization and optimal control. Mathematical Programming Computation, 11(1):1–36, 2019. doi:10.1007/s12532-018-0139-4.\n", + "[2] Charles R. Harris, K. Jarrod Millman, Stéfan J. van der Walt, Ralf Gommers, Pauli Virtanen, David Cournapeau, Eric Wieser, Julian Taylor, Sebastian Berg, Nathaniel J. Smith, and others. Array programming with NumPy. Nature, 585(7825):357–362, 2020. doi:10.1038/s41586-020-2649-2.\n", + "[3] Valentin Sulzer, Scott G. Marquis, Robert Timms, Martin Robinson, and S. Jon Chapman. Python Battery Mathematical Modelling (PyBaMM). Journal of Open Research Software, 9(1):14, 2021. doi:10.5334/jors.309.\n", + "\n" + ] + } + ], + "source": [ + "pybamm.print_citations()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "happy-halifax", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.0" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": true + } }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "1d57bc29107d47838633a27df1b920cc", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "interactive(children=(FloatSlider(value=0.0, description='t', max=1.0, step=0.01), Output()), _dom_classes=('w…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# plot\n", - "pybamm.dynamic_plot(\n", - " solution,\n", - " [\n", - " \"Positive electrode potential [V]\",\n", - " \"Electrolyte potential [V]\",\n", - " \"Positive electrode interfacial current density [A.m-2]\",\n", - " \"Positive particle surface concentration [mol.m-3]\",\n", - " \"Average positive particle surface concentration [mol.m-3]\",\n", - " [\"Positive electrode OCP [V]\", \"Terminal voltage [V]\"],\n", - " ],\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "abandoned-shirt", - "metadata": {}, - "source": [ - "In the [next notebook](./6-a-simple-SEI-model.ipynb) we consider a simple model for SEI growth, and show how to correctly pose the model in non-dimensional form and then create and solve it using pybamm." - ] - }, - { - "cell_type": "markdown", - "id": "independent-development", - "metadata": {}, - "source": [ - "## References\n", - "\n", - "The relevant papers for this notebook are:" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "laden-replica", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1] Joel A. E. Andersson, Joris Gillis, Greg Horn, James B. Rawlings, and Moritz Diehl. CasADi – A software framework for nonlinear optimization and optimal control. Mathematical Programming Computation, 11(1):1–36, 2019. doi:10.1007/s12532-018-0139-4.\n", - "[2] Charles R. Harris, K. Jarrod Millman, Stéfan J. van der Walt, Ralf Gommers, Pauli Virtanen, David Cournapeau, Eric Wieser, Julian Taylor, Sebastian Berg, Nathaniel J. Smith, and others. Array programming with NumPy. Nature, 585(7825):357–362, 2020. doi:10.1038/s41586-020-2649-2.\n", - "[3] Valentin Sulzer, Scott G. Marquis, Robert Timms, Martin Robinson, and S. Jon Chapman. Python Battery Mathematical Modelling (PyBaMM). Journal of Open Research Software, 9(1):14, 2021. doi:10.5334/jors.309.\n", - "\n" - ] - } - ], - "source": [ - "pybamm.print_citations()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "happy-halifax", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.0" - }, - "toc": { - "base_numbering": 1, - "nav_menu": {}, - "number_sections": true, - "sideBar": true, - "skip_h1_title": false, - "title_cell": "Table of Contents", - "title_sidebar": "Contents", - "toc_cell": false, - "toc_position": {}, - "toc_section_display": true, - "toc_window_display": true - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/examples/notebooks/Getting Started/Tutorial 4 - Setting parameter values.ipynb b/examples/notebooks/Getting Started/Tutorial 4 - Setting parameter values.ipynb index baa87a9102..c40afdac77 100644 --- a/examples/notebooks/Getting Started/Tutorial 4 - Setting parameter values.ipynb +++ b/examples/notebooks/Getting Started/Tutorial 4 - Setting parameter values.ipynb @@ -77,14 +77,15 @@ " 'Bulk solvent concentration [mol.m-3]': 2636.0,\n", " 'Cation transference number': 0.2594,\n", " 'Cell cooling surface area [m2]': 0.00531,\n", + " 'Cell thermal expansion coefficient [m.K-1]': 1.1e-06,\n", " 'Cell volume [m3]': 2.42e-05,\n", " 'Current function [A]': 5.0,\n", " 'EC diffusivity [m2.s-1]': 2e-18,\n", " 'EC initial concentration in electrolyte [mol.m-3]': 4541.0,\n", " 'Electrode height [m]': 0.065,\n", " 'Electrode width [m]': 1.58,\n", - " 'Electrolyte conductivity [S.m-1]': ,\n", - " 'Electrolyte diffusivity [m2.s-1]': ,\n", + " 'Electrolyte conductivity [S.m-1]': ,\n", + " 'Electrolyte diffusivity [m2.s-1]': ,\n", " 'Initial concentration in electrolyte [mol.m-3]': 1000.0,\n", " 'Initial concentration in negative electrode [mol.m-3]': 29866.0,\n", " 'Initial concentration in positive electrode [mol.m-3]': 17038.0,\n", @@ -107,7 +108,7 @@ " 'Negative current collector thickness [m]': 1.2e-05,\n", " 'Negative electrode Bruggeman coefficient (electrode)': 1.5,\n", " 'Negative electrode Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Negative electrode OCP [V]': ,\n", + " 'Negative electrode OCP [V]': ,\n", " 'Negative electrode OCP entropic change [V.K-1]': 0.0,\n", " 'Negative electrode active material volume fraction': 0.75,\n", " 'Negative electrode cation signed stoichiometry': -1.0,\n", @@ -117,7 +118,7 @@ " 'Negative electrode diffusivity [m2.s-1]': 3.3e-14,\n", " 'Negative electrode double-layer capacity [F.m-2]': 0.2,\n", " 'Negative electrode electrons in reaction': 1.0,\n", - " 'Negative electrode exchange-current density [A.m-2]': ,\n", + " 'Negative electrode exchange-current density [A.m-2]': ,\n", " 'Negative electrode porosity': 0.25,\n", " 'Negative electrode reaction-driven LAM factor [m3.mol-1]': 0.0,\n", " 'Negative electrode specific heat capacity [J.kg-1.K-1]': 700.0,\n", @@ -137,7 +138,7 @@ " 'Positive current collector thickness [m]': 1.6e-05,\n", " 'Positive electrode Bruggeman coefficient (electrode)': 1.5,\n", " 'Positive electrode Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Positive electrode OCP [V]': ,\n", + " 'Positive electrode OCP [V]': ,\n", " 'Positive electrode OCP entropic change [V.K-1]': 0.0,\n", " 'Positive electrode active material volume fraction': 0.665,\n", " 'Positive electrode cation signed stoichiometry': -1.0,\n", @@ -147,15 +148,16 @@ " 'Positive electrode diffusivity [m2.s-1]': 4e-15,\n", " 'Positive electrode double-layer capacity [F.m-2]': 0.2,\n", " 'Positive electrode electrons in reaction': 1.0,\n", - " 'Positive electrode exchange-current density [A.m-2]': ,\n", + " 'Positive electrode exchange-current density [A.m-2]': ,\n", " 'Positive electrode porosity': 0.335,\n", " 'Positive electrode reaction-driven LAM factor [m3.mol-1]': 0.0,\n", " 'Positive electrode specific heat capacity [J.kg-1.K-1]': 700.0,\n", " 'Positive electrode thermal conductivity [W.m-1.K-1]': 2.1,\n", " 'Positive electrode thickness [m]': 7.56e-05,\n", " 'Positive particle radius [m]': 5.22e-06,\n", - " 'Ratio of inner and outer SEI exchange current densities': 1.0,\n", + " 'Ratio of lithium moles to SEI moles': 2.0,\n", " 'Reference temperature [K]': 298.15,\n", + " 'SEI growth activation energy [J.mol-1]': 0.0,\n", " 'SEI kinetic rate constant [m.s-1]': 1e-12,\n", " 'SEI open-circuit potential [V]': 0.4,\n", " 'SEI reaction exchange current density [A.m-2]': 1.5e-07,\n", @@ -169,7 +171,8 @@ " 'Total heat transfer coefficient [W.m-2.K-1]': 10.0,\n", " 'Typical current [A]': 5.0,\n", " 'Typical electrolyte concentration [mol.m-3]': 1000.0,\n", - " 'Upper voltage cut-off [V]': 4.2}" + " 'Upper voltage cut-off [V]': 4.2,\n", + " 'citations': ['Chen2020']}" ] }, "execution_count": 3, @@ -198,8 +201,8 @@ "output_type": "stream", "text": [ "EC initial concentration in electrolyte [mol.m-3]\t4541.0\n", - "Electrolyte conductivity [S.m-1]\t\n", - "Electrolyte diffusivity [m2.s-1]\t\n", + "Electrolyte conductivity [S.m-1]\t\n", + "Electrolyte diffusivity [m2.s-1]\t\n", "Initial concentration in electrolyte [mol.m-3]\t1000.0\n", "Negative electrode Bruggeman coefficient (electrolyte)\t1.5\n", "Positive electrode Bruggeman coefficient (electrolyte)\t1.5\n", @@ -229,12 +232,12 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "59900e1b574744e4828e53c79375a21d", + "model_id": "df9a1674a5644448b4393864a0533e10", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "interactive(children=(FloatSlider(value=0.0, description='t', max=3554.1817016731093, step=35.541817016731095)…" + "interactive(children=(FloatSlider(value=0.0, description='t', max=3554.1847186165564, step=35.54184718616556),…" ] }, "metadata": {}, @@ -243,7 +246,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 5, @@ -258,64 +261,6 @@ "sim.plot()" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Change individual components" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can replace individual components of the chemistry (such as the electrolyte or positive electrode). Care should be taken when doing so since some parameters may only be valid for certain combinataions of components. To replace an individual component, we first load the `chemistry` from the parameter sets" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "chemistry = pybamm.parameter_sets.Chen2020" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This variable is a dictionary with the corresponding parameter subsets for each component." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'chemistry': 'lithium_ion',\n", - " 'cell': 'LGM50_Chen2020',\n", - " 'negative electrode': 'graphite_Chen2020',\n", - " 'separator': 'separator_Chen2020',\n", - " 'positive electrode': 'nmc_Chen2020',\n", - " 'electrolyte': 'lipf6_Nyman2008',\n", - " 'experiment': '1C_discharge_from_full_Chen2020',\n", - " 'sei': 'example',\n", - " 'citation': 'Chen2020'}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "chemistry" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -323,113 +268,6 @@ "More details on each subset can be found [here](https://github.com/pybamm-team/PyBaMM/tree/develop/pybamm/input/parameters)." ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For example, we replace the electrolyte component as follows" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "chemistry[\"electrolyte\"] = \"lipf6_Valoen2005\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can pass the updated `'chemistry'` into `ParameterValues` to create the dictionary of parameter values" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "parameter_values = pybamm.ParameterValues(chemistry)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this case this only changes the conductivity and diffusivity functions" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "EC initial concentration in electrolyte [mol.m-3]\t4541.0\n", - "Electrolyte conductivity [S.m-1]\t\n", - "Electrolyte diffusivity [m2.s-1]\t\n", - "Initial concentration in electrolyte [mol.m-3]\t1000.0\n", - "Negative electrode Bruggeman coefficient (electrolyte)\t1.5\n", - "Positive electrode Bruggeman coefficient (electrolyte)\t1.5\n", - "Separator Bruggeman coefficient (electrolyte)\t1.5\n", - "Typical electrolyte concentration [mol.m-3]\t1000.0\n" - ] - } - ], - "source": [ - "parameter_values.search(\"electrolyte\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can run the simulation again with the updated parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "e17db80b47e1436a8c3b15f3fd479ad3", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "interactive(children=(FloatSlider(value=0.0, description='t', max=3560.1058147685944, step=35.60105814768595),…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "model = pybamm.lithium_ion.DFN()\n", - "sim = pybamm.Simulation(model, parameter_values=parameter_values)\n", - "sim.solve([0, 3600])\n", - "sim.plot()" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -448,12 +286,12 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "model = pybamm.lithium_ion.DFN()\n", - "parameter_values = pybamm.ParameterValues(chemistry=pybamm.parameter_sets.Chen2020)" + "parameter_values = pybamm.ParameterValues(\"Chen2020\")" ] }, { @@ -465,7 +303,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -481,18 +319,18 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "87a62972f4a140b199ac8e09a3a261de", + "model_id": "4b7cb49d27bd4a9490af4b8db4703208", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "interactive(children=(FloatSlider(value=0.0, description='t', max=1724.4256164479839, step=17.24425616447984),…" + "interactive(children=(FloatSlider(value=0.0, description='t', max=1701.48201799429, step=17.014820179942898), …" ] }, "metadata": {}, @@ -501,10 +339,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 14, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -538,7 +376,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -564,18 +402,18 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "ee09003547434fb683ea65eb71023f4a", + "model_id": "3a75b81b2efa41e589c6e7b2b3eea9c0", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "interactive(children=(FloatSlider(value=0.0, description='t', max=97.69494263343306, step=0.9769494263343306),…" + "interactive(children=(FloatSlider(value=0.0, description='t', max=97.84206605173407, step=0.9784206605173407),…" ] }, "metadata": {}, @@ -584,10 +422,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 16, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -615,7 +453,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -636,18 +474,18 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "a1f7e953b7fc460fa000f1db8a6c41d3", + "model_id": "533d0807b902446882bd219335ec1d64", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "interactive(children=(FloatSlider(value=0.0, description='t', max=35.8755487989083, step=0.35875548798908297),…" + "interactive(children=(FloatSlider(value=0.0, description='t', max=36.02438855650833, step=0.3602438855650833),…" ] }, "metadata": {}, @@ -656,10 +494,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 18, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -690,19 +528,21 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[1] Joel A. E. Andersson, Joris Gillis, Greg Horn, James B. Rawlings, and Moritz Diehl. CasADi – A software framework for nonlinear optimization and optimal control. Mathematical Programming Computation, 11(1):1–36, 2019. doi:10.1007/s12532-018-0139-4.\n", - "[2] 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. Journal of The Electrochemical Society, 167(8):080534, 2020. doi:10.1149/1945-7111/ab9050.\n", - "[3] Marc Doyle, Thomas F. Fuller, and John Newman. Modeling of galvanostatic charge and discharge of the lithium/polymer/insertion cell. Journal of the Electrochemical society, 140(6):1526–1533, 1993. doi:10.1149/1.2221597.\n", - "[4] Charles R. Harris, K. Jarrod Millman, Stéfan J. van der Walt, Ralf Gommers, Pauli Virtanen, David Cournapeau, Eric Wieser, Julian Taylor, Sebastian Berg, Nathaniel J. Smith, and others. Array programming with NumPy. Nature, 585(7825):357–362, 2020. doi:10.1038/s41586-020-2649-2.\n", - "[5] Scott G. Marquis, Valentin Sulzer, Robert Timms, Colin P. Please, and S. Jon Chapman. An asymptotic derivation of a single particle model with electrolyte. Journal of The Electrochemical Society, 166(15):A3693–A3706, 2019. doi:10.1149/2.0341915jes.\n", - "[6] Valentin Sulzer, Scott G. Marquis, Robert Timms, Martin Robinson, and S. Jon Chapman. Python Battery Mathematical Modelling (PyBaMM). Journal of Open Research Software, 9(1):14, 2021. doi:10.5334/jors.309.\n", + "[1] Weilong Ai, Ludwig Kraft, Johannes Sturm, Andreas Jossen, and Billy Wu. Electrochemical thermal-mechanical modelling of stress inhomogeneity in lithium-ion pouch cells. Journal of The Electrochemical Society, 167(1):013512, 2019. doi:10.1149/2.0122001JES.\n", + "[2] Joel A. E. Andersson, Joris Gillis, Greg Horn, James B. Rawlings, and Moritz Diehl. CasADi – A software framework for nonlinear optimization and optimal control. Mathematical Programming Computation, 11(1):1–36, 2019. doi:10.1007/s12532-018-0139-4.\n", + "[3] 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. Journal of The Electrochemical Society, 167(8):080534, 2020. doi:10.1149/1945-7111/ab9050.\n", + "[4] Rutooj Deshpande, Mark Verbrugge, Yang-Tse Cheng, John Wang, and Ping Liu. Battery cycle life prediction with coupled chemical degradation and fatigue mechanics. Journal of the Electrochemical Society, 159(10):A1730, 2012. doi:10.1149/2.049210jes.\n", + "[5] Marc Doyle, Thomas F. Fuller, and John Newman. Modeling of galvanostatic charge and discharge of the lithium/polymer/insertion cell. Journal of the Electrochemical society, 140(6):1526–1533, 1993. doi:10.1149/1.2221597.\n", + "[6] Charles R. Harris, K. Jarrod Millman, Stéfan J. van der Walt, Ralf Gommers, Pauli Virtanen, David Cournapeau, Eric Wieser, Julian Taylor, Sebastian Berg, Nathaniel J. Smith, and others. Array programming with NumPy. Nature, 585(7825):357–362, 2020. doi:10.1038/s41586-020-2649-2.\n", + "[7] Scott G. Marquis, Valentin Sulzer, Robert Timms, Colin P. Please, and S. Jon Chapman. An asymptotic derivation of a single particle model with electrolyte. Journal of The Electrochemical Society, 166(15):A3693–A3706, 2019. doi:10.1149/2.0341915jes.\n", + "[8] Valentin Sulzer, Scott G. Marquis, Robert Timms, Martin Robinson, and S. Jon Chapman. Python Battery Mathematical Modelling (PyBaMM). Journal of Open Research Software, 9(1):14, 2021. doi:10.5334/jors.309.\n", "\n" ] } @@ -714,7 +554,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.9.13 ('conda_jl')", "language": "python", "name": "python3" }, @@ -728,7 +568,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.0" + "version": "3.9.13" }, "toc": { "base_numbering": 1, @@ -742,6 +582,11 @@ "toc_position": {}, "toc_section_display": true, "toc_window_display": true + }, + "vscode": { + "interpreter": { + "hash": "612adcc456652826e82b485a1edaef831aa6d5abc680d008e93d513dd8724f14" + } } }, "nbformat": 4, diff --git a/examples/notebooks/models/composite_particle.ipynb b/examples/notebooks/models/composite_particle.ipynb index 6d7a1392a9..b4735dc533 100644 --- a/examples/notebooks/models/composite_particle.ipynb +++ b/examples/notebooks/models/composite_particle.ipynb @@ -90,224 +90,6 @@ "})" ] }, - { - "cell_type": "code", - "execution_count": 3, - "id": "7bc190eb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'chemistry': 'lithium_ion',\n", - " 'cell': 'LGM50_Chen2020',\n", - " 'negative electrode': 'graphite_Chen2020_composite',\n", - " 'separator': 'separator_Chen2020',\n", - " 'positive electrode': 'nmc_Chen2020',\n", - " 'electrolyte': 'lipf6_Nyman2008',\n", - " 'experiment': '1C_discharge_from_full_Chen2020',\n", - " 'sei': 'example',\n", - " 'citation': ['Chen2020', 'Ai2022']}" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pybamm.parameter_sets.Chen2020_composite" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "a97ddeac", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'1 + dlnf/dlnc': 1.0,\n", - " 'Ambient temperature [K]': 298.15,\n", - " 'Bulk solvent concentration [mol.m-3]': 2636.0,\n", - " 'Cation transference number': 0.2594,\n", - " 'Cell cooling surface area [m2]': 0.00531,\n", - " 'Cell thermal expansion coefficient [m.K-1]': 1.1e-06,\n", - " 'Cell volume [m3]': 2.42e-05,\n", - " 'Current function [A]': 5.0,\n", - " 'EC diffusivity [m2.s-1]': 2e-18,\n", - " 'EC initial concentration in electrolyte [mol.m-3]': 4541.0,\n", - " 'Electrode height [m]': 0.065,\n", - " 'Electrode width [m]': 1.58,\n", - " 'Electrolyte conductivity [S.m-1]': ,\n", - " 'Electrolyte diffusivity [m2.s-1]': ,\n", - " 'Initial concentration in electrolyte [mol.m-3]': 1000.0,\n", - " 'Initial concentration in negative electrode [mol.m-3]': 29866.0,\n", - " 'Initial concentration in positive electrode [mol.m-3]': 17038.0,\n", - " 'Initial inner SEI thickness [m]': 2.5e-09,\n", - " 'Initial outer SEI thickness [m]': 2.5e-09,\n", - " 'Initial temperature [K]': 298.15,\n", - " 'Inner SEI electron conductivity [S.m-1]': 8.95e-14,\n", - " 'Inner SEI lithium interstitial diffusivity [m2.s-1]': 1e-20,\n", - " 'Inner SEI open-circuit potential [V]': 0.1,\n", - " 'Inner SEI partial molar volume [m3.mol-1]': 9.585e-05,\n", - " 'Inner SEI reaction proportion': 0.5,\n", - " 'Lithium interstitial reference concentration [mol.m-3]': 15.0,\n", - " 'Lower voltage cut-off [V]': 2.5,\n", - " 'Maximum concentration in positive electrode [mol.m-3]': 63104.0,\n", - " 'Negative current collector conductivity [S.m-1]': 58411000.0,\n", - " 'Negative current collector density [kg.m-3]': 8960.0,\n", - " 'Negative current collector specific heat capacity [J.kg-1.K-1]': 385.0,\n", - " 'Negative current collector thermal conductivity [W.m-1.K-1]': 401.0,\n", - " 'Negative current collector thickness [m]': 1.2e-05,\n", - " 'Negative electrode Bruggeman coefficient (electrode)': 1.5,\n", - " 'Negative electrode Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Negative electrode cation signed stoichiometry': -1.0,\n", - " 'Negative electrode charge transfer coefficient': 0.5,\n", - " 'Negative electrode conductivity [S.m-1]': 215.0,\n", - " 'Negative electrode double-layer capacity [F.m-2]': 0.2,\n", - " 'Negative electrode porosity': 0.25,\n", - " 'Negative electrode reaction-driven LAM factor [m3.mol-1]': 0.0,\n", - " 'Negative electrode specific heat capacity [J.kg-1.K-1]': 700.0,\n", - " 'Negative electrode thermal conductivity [W.m-1.K-1]': 1.7,\n", - " 'Negative electrode thickness [m]': 8.52e-05,\n", - " 'Nominal cell capacity [A.h]': 5.0,\n", - " 'Number of cells connected in series to make a battery': 1.0,\n", - " 'Number of electrodes connected in parallel to make a cell': 1.0,\n", - " 'Outer SEI open-circuit potential [V]': 0.8,\n", - " 'Outer SEI partial molar volume [m3.mol-1]': 9.585e-05,\n", - " 'Outer SEI solvent diffusivity [m2.s-1]': 2.5000000000000002e-22,\n", - " 'Positive current collector conductivity [S.m-1]': 36914000.0,\n", - " 'Positive current collector density [kg.m-3]': 2700.0,\n", - " 'Positive current collector specific heat capacity [J.kg-1.K-1]': 897.0,\n", - " 'Positive current collector thermal conductivity [W.m-1.K-1]': 237.0,\n", - " 'Positive current collector thickness [m]': 1.6e-05,\n", - " 'Positive electrode Bruggeman coefficient (electrode)': 1.5,\n", - " 'Positive electrode Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Positive electrode OCP [V]': ,\n", - " 'Positive electrode OCP entropic change [V.K-1]': 0.0,\n", - " 'Positive electrode active material volume fraction': 0.665,\n", - " 'Positive electrode cation signed stoichiometry': -1.0,\n", - " 'Positive electrode charge transfer coefficient': 0.5,\n", - " 'Positive electrode conductivity [S.m-1]': 0.18,\n", - " 'Positive electrode density [kg.m-3]': 3262.0,\n", - " 'Positive electrode diffusivity [m2.s-1]': 4e-15,\n", - " 'Positive electrode double-layer capacity [F.m-2]': 0.2,\n", - " 'Positive electrode electrons in reaction': 1.0,\n", - " 'Positive electrode exchange-current density [A.m-2]': ,\n", - " 'Positive electrode porosity': 0.335,\n", - " 'Positive electrode reaction-driven LAM factor [m3.mol-1]': 0.0,\n", - " 'Positive electrode specific heat capacity [J.kg-1.K-1]': 700.0,\n", - " 'Positive electrode thermal conductivity [W.m-1.K-1]': 2.1,\n", - " 'Positive electrode thickness [m]': 7.56e-05,\n", - " 'Positive particle radius [m]': 5.22e-06,\n", - " 'Primary: Initial concentration in negative electrode [mol.m-3]': 23000,\n", - " 'Primary: Maximum concentration in negative electrode [mol.m-3]': 28700,\n", - " 'Primary: Negative electrode OCP [V]': ('graphite_ocp_Enertech_Ai2020',\n", - " ([array([0.00000000e+00, 5.00000000e-04, 1.27041000e-03, 1.52479000e-03,\n", - " 1.90595000e-03, 2.22355800e-03, 4.06054700e-03, 4.82015100e-03,\n", - " 6.46394300e-03, 7.41337000e-03, 8.61650600e-03, 9.12341700e-03,\n", - " 1.07682260e-02, 1.26650460e-02, 1.41183440e-02, 1.77867520e-02,\n", - " 2.06946900e-02, 2.39837990e-02, 3.05021750e-02, 3.60011350e-02,\n", - " 3.96066620e-02, 5.91480830e-02, 6.12979420e-02, 7.13498330e-02,\n", - " 8.02655260e-02, 1.19208079e-01, 1.28120548e-01, 1.34253707e-01,\n", - " 1.41584594e-01, 1.50874177e-01, 1.60609131e-01, 1.70345957e-01,\n", - " 1.89747769e-01, 2.09222253e-01, 2.19017730e-01, 2.28756579e-01,\n", - " 2.38552575e-01, 2.48349231e-01, 2.58084023e-01, 2.67821184e-01,\n", - " 2.87415350e-01, 2.97209811e-01, 3.07004942e-01, 3.16798396e-01,\n", - " 3.26534032e-01, 3.36321558e-01, 3.46061758e-01, 3.55856392e-01,\n", - " 3.65593044e-01, 3.75388012e-01, 3.85120781e-01, 3.94915577e-01,\n", - " 4.04717479e-01, 4.14512102e-01, 4.24244871e-01, 4.34039331e-01,\n", - " 4.43770240e-01, 4.53564862e-01, 4.63298139e-01, 4.73034456e-01,\n", - " 4.82766544e-01, 4.92564552e-01, 5.02302892e-01, 5.12042595e-01,\n", - " 5.21833161e-01, 5.31572182e-01, 5.41369033e-01, 5.51104831e-01,\n", - " 5.60899800e-01, 5.70635608e-01, 5.80434806e-01, 5.90235692e-01,\n", - " 5.99977407e-01, 6.09716266e-01, 6.19517822e-01, 6.29313635e-01,\n", - " 6.39049108e-01, 6.48790152e-01, 6.58584104e-01, 6.68320248e-01,\n", - " 6.78055040e-01, 6.87851869e-01, 6.97649380e-01, 7.07389072e-01,\n", - " 7.17188097e-01, 7.26977148e-01, 7.36776336e-01, 7.46515866e-01,\n", - " 7.56259106e-01, 7.66055091e-01, 7.75789039e-01, 7.85537861e-01,\n", - " 7.95329790e-01, 8.05080646e-01, 8.14827099e-01, 8.24570003e-01,\n", - " 8.34370889e-01, 8.44173289e-01, 8.53913187e-01, 8.63650510e-01,\n", - " 8.73392073e-01, 8.83126865e-01, 8.92918286e-01, 9.02708516e-01,\n", - " 9.12443308e-01, 9.22232533e-01, 9.32019724e-01, 9.41812832e-01,\n", - " 9.51602392e-01, 9.61392795e-01, 9.70177652e-01, 9.76051358e-01,\n", - " 9.80413449e-01, 9.83887804e-01, 9.86792703e-01, 9.89255096e-01,\n", - " 9.91401407e-01, 9.93359929e-01, 9.95130154e-01, 9.96776304e-01,\n", - " 9.98229440e-01, 9.99241066e-01, 9.99746961e-01, 9.99936448e-01,\n", - " 1.00000000e+00])],\n", - " array([3.5 , 3. , 1.04 , 1.01 , 0.97265384,\n", - " 0.94249055, 0.81624059, 0.78028093, 0.71896262, 0.69137476,\n", - " 0.66139178, 0.64996223, 0.6165173 , 0.58331086, 0.56083078,\n", - " 0.51243948, 0.48025136, 0.44849587, 0.39598881, 0.35950768,\n", - " 0.33847798, 0.25631956, 0.25117361, 0.23605532, 0.23100922,\n", - " 0.2232966 , 0.21828424, 0.21327386, 0.20822836, 0.20320974,\n", - " 0.19862098, 0.19381638, 0.18416691, 0.17679053, 0.17383044,\n", - " 0.17096326, 0.1679035 , 0.16464998, 0.16149133, 0.15859383,\n", - " 0.15339916, 0.15100232, 0.14886213, 0.14691891, 0.14532814,\n", - " 0.14400211, 0.14290212, 0.14201426, 0.14131601, 0.1407591 ,\n", - " 0.14031432, 0.13994232, 0.13961785, 0.13932541, 0.13905101,\n", - " 0.1387793 , 0.13851741, 0.1382589 , 0.13798129, 0.13767223,\n", - " 0.13732933, 0.13690322, 0.13639024, 0.13575758, 0.1349471 ,\n", - " 0.13392324, 0.13262168, 0.13098947, 0.12896492, 0.12654999,\n", - " 0.12374288, 0.12077083, 0.11792963, 0.11537998, 0.11320542,\n", - " 0.11136648, 0.10985549, 0.10857895, 0.10752068, 0.10663254,\n", - " 0.10589376, 0.10526061, 0.10471319, 0.10425437, 0.10384562,\n", - " 0.10347712, 0.10315393, 0.10285654, 0.10258744, 0.10233828,\n", - " 0.10210199, 0.1018809 , 0.10167642, 0.10146588, 0.10126417,\n", - " 0.10106263, 0.10087041, 0.10068096, 0.10048922, 0.10030044,\n", - " 0.10009972, 0.0998771 , 0.09962899, 0.09933262, 0.09895842,\n", - " 0.09844254, 0.09768364, 0.096492 , 0.09451079, 0.09113682,\n", - " 0.08611519, 0.08107875, 0.07604037, 0.07099153, 0.06589833,\n", - " 0.06084405, 0.05581012, 0.0506707 , 0.0455624 , 0.04039266,\n", - " 0.03526127, 0.03024266, 0.02485077, 0.0192515 , 0.00499468]))),\n", - " 'Primary: Negative electrode OCP entropic change [V.K-1]': 0.0,\n", - " 'Primary: Negative electrode active material volume fraction': 0.75,\n", - " 'Primary: Negative electrode density [kg.m-3]': 1657.0,\n", - " 'Primary: Negative electrode diffusivity [m2.s-1]': 5.5e-14,\n", - " 'Primary: Negative electrode electrons in reaction': 1.0,\n", - " 'Primary: Negative electrode exchange-current density [A.m-2]': ,\n", - " 'Primary: Negative particle radius [m]': 5.86e-06,\n", - " 'Ratio of lithium moles to SEI moles': 2.0,\n", - " 'Reference temperature [K]': 298.15,\n", - " 'SEI growth activation energy [J.mol-1]': 0.0,\n", - " 'SEI kinetic rate constant [m.s-1]': 1e-12,\n", - " 'SEI open-circuit potential [V]': 0.4,\n", - " 'SEI reaction exchange current density [A.m-2]': 1.5e-07,\n", - " 'SEI resistivity [Ohm.m]': 200000.0,\n", - " 'Secondary: Initial concentration in negative electrode [mol.m-3]': 277000,\n", - " 'Secondary: Maximum concentration in negative electrode [mol.m-3]': 278000,\n", - " 'Secondary: Negative electrode OCP entropic change [V.K-1]': 0.0,\n", - " 'Secondary: Negative electrode active material volume fraction': 0.015,\n", - " 'Secondary: Negative electrode delithiation OCP [V]': ,\n", - " 'Secondary: Negative electrode density [kg.m-3]': 2650.0,\n", - " 'Secondary: Negative electrode diffusivity [m2.s-1]': 1.67e-14,\n", - " 'Secondary: Negative electrode electrons in reaction': 1.0,\n", - " 'Secondary: Negative electrode exchange-current density [A.m-2]': ,\n", - " 'Secondary: Negative electrode lithiation OCP [V]': ,\n", - " 'Secondary: Negative particle radius [m]': 1.52e-06,\n", - " 'Separator Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Separator density [kg.m-3]': 397.0,\n", - " 'Separator porosity': 0.47,\n", - " 'Separator specific heat capacity [J.kg-1.K-1]': 700.0,\n", - " 'Separator thermal conductivity [W.m-1.K-1]': 0.16,\n", - " 'Separator thickness [m]': 1.2e-05,\n", - " 'Total heat transfer coefficient [W.m-2.K-1]': 10.0,\n", - " 'Typical current [A]': 5.0,\n", - " 'Typical electrolyte concentration [mol.m-3]': 1000.0,\n", - " 'Upper voltage cut-off [V]': 4.5}" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "param" - ] - }, { "cell_type": "markdown", "id": "cf194af2", @@ -484,7 +266,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "
" ] @@ -530,7 +312,7 @@ }, { "data": { - "image/png": "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7JVO6l736l5X6w1Sd7c/I/UesG7dOgA+/fRTp+2KojhmyHXVpfU8LklPTyc4OLjEPsVHN5a2zyWDBw92miPL3RGhV+Jo0soida97da+r9Qape7WNHF+4cKHeQ8oUHR1NcnIyKSkphISEsGXLFh5//HGnfbp168batWvp06cPR44cwd/fv8zEIYQQouq5NVfV3r17SUxM5MKFC0yZMoVjx46Rl5en+1YVwK+//sp7772HqqoMGDCAW2+91XFVExcXh6ZpxMfHs2fPHry9vRk/fjzR0dG6yxFCCFFJNJ1Wr16tTZgwQfvyyy+10aNHa5qmaadOndKeffZZvaeqsSZPnuzpEDxG6l731NV6a5rU3V26R46vXr2a6dOnM2LECMd4joiICLdnohVCCHFl0Z048vPzS7TEW61Wx3ocQgghajfdiSM2NpavvvrKaduaNWto3759ZcXkcTVh9UJPkbrXPXW13iB1d5fuxvHz588zZ84csrOzycjIICwsDH9/fyZPnkxQUJDbgQghhLgyuNWrStM0kpKSSEtLw2w2ExMT42jvEEIIUbvpThwrVqygb9++xMTEVFVM1aauzsxbXr1/++035s6dS1hYGAA9evTg9ttv90CklW/RokX8+uuvNGjQgPnz55d4vba+5+XVuza/52lpaSxcuJDMzEwURWHw4MHccMMNTvvU1vfdlbq79d7r7Ya1bNky7aGHHtIee+wxbdWqVdoff/zhdpcuT7LZbNqECRO0s2fPahaLRfvnP/+pnT592mmfX375RZs5c6amqqp26NAhberUqR6KtvK4Uu99+/Zps2bN8lCEVeu3337Tjh49qj311FOlvl4b33NNK7/etfk9z8jI0I4ePappmqbl5eVpjz/+eJ34v65prtXdnfde9/2lMWPGsHjxYv7xj3+QlpbGs88+y+TJk/n222/1nsqj6urMvK7UuzZr164dgYGBZb5eG99zKL/etVlwcLDj6sHPz4+IiIgSE6XW1vfdlbq7w62GCYPBQMeOHRk/fjzz58+nXr16fPDBBxUOpjrV1Zl5Xak3wOHDh3n66ad5+eWX69R68rXxPXdVXXjPU1JSOH78eIlb7XXhfS+r7qD/vXdr8EVBQQE7duwgMTGR/fv3065dOx599FF3TuUxWiXPzHulcKVOLVu2ZNGiRfj6+vLrr78yb9483nzzzeoK0aNq43vuirrwnhcUFDB//nzuv/9+/P39nV6r7e/75eruznuv+4rj1Vdf5cEHH+SHH36ga9euLFy4kKlTp9KvXz+9p/Koyp6Z90rhSr39/f3x9fUFoEuXLthsNrKysqo1Tk+pje+5K2r7e261Wpk/fz7XXnstPXr0KPF6bX7fy6u7O++97sQRFRXFa6+9xgsvvEBcXBz169cH7KsDXkmKz8xrtVrZsmUL3bp1c9qnW7dubNy4EU3TOHz4cK2YmdeVemdmZjq+gSUlJaGqKvXq1fNEuNWuNr7nrqjN77mmaSxZsoSIiAhuvPHGUvepre+7K3V35713axxHcadOneKnn34iMTGRpUuXVuRU1a6uzsxbXr3Xrl3LunXrMBqNeHt7M3r0aNq0aePhqCvH66+/zv79+8nOzqZBgwaMHDkSq9UK1O73vLx61+b3/ODBgzz33HM0a9bMcfvp7rvvdlxh1Ob33ZW6u/Peu5U4srKy2Lx5Mxs2bODEiRPExsbyt7/9jV69erlRNSGEEFcSlxvHrVYrP//8Mz/99BN79uwhPDycPn36kJqaypNPPkmDBg2qMk4hhBA1hMuJ48EHH8RgMNC/f39Gjhzp6Bt86RaHEEKIusHlxvHmzZuTm5tLUlISR48eJScnpyrjEkIIUUPpauNITU1lw4YNbNy4kbS0NDp27MiBAwd47bXXCAkJqco4hRBC1BBu96o6ePAgGzZsYOvWrRiNRgYMGMB9991X2fEJIYSoYSrcHbeoqIgdO3awceNGnnnmmcqKSwghRA1V4cQhRF3y1FNP8cADD1T5ipcLFy5k8+bNhISEsHDhQgCef/55rr32WgYNGlRif4vFwtixY7Fardx8883cddddVRqfqNtkoXAhihk1apTjcVFRESaTybFI2UMPPcSrr75abbHoSQBeXl588MEHjiQjRFWSxCFEMcVneX700Ud5+OGH6dixowcjEqLmkcQhhA7Fk8knn3zC77//jslk4ueff6Zhw4ZMmjSJ7du389133+Hl5cW4ceO4+uqrAcjLy+O9995j165dKIrCgAEDGDlypK5ll1NTU5k+fTonT56kdevWPP7444754oSoLrJQuBAV8Msvv9CvXz+WL19Oy5YtmTlzpmNiudtuu423337bse+CBQswGo28+eabzJ07lz179vDDDz/oKi8xMZFHHnmEd999F6vVyn//+9/KrpIQ5ZLEIUQFtG3blk6dOmE0GunZsydZWVmMGDECk8nkmJInNzeXzMxMdu/ezf3334+vry8NGjRg2LBhbNmyRVd51113HU2aNMHb25tevXpx4sSJqqmYEJcht6qEqIDic7R5e3tTv359x60nb29vwL6Izvnz57HZbDz00EOO/TVNc1qN0RVBQUGOxz4+PhQUFFQgeiHcI4lDiGpgNpsxmUzEx8djNBo9HY4QFSK3qoSoBsHBwVx99dW8//775OXloaoqZ8+eZf/+/Z4OTQjd5IpDiGoyYcIEVq5cyVNPPUV+fj6NGjXi5ptv9nRYQugmI8eFqIGWLFlCYmIiQUFBvPXWW+Xub7FYePDBB7HZbAwfPpw77rijGqIUdZUkDiGEELpIG4cQQghdJHEIIYTQRRKHEEIIXSRxCCGE0EUShxBCCF0kcQghhNBFEocQQghd/h+1maZZuXSs+gAAAABJRU5ErkJggg==\n", + "image/png": "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7JVO6l736l5X6w1Sd7c/I/UesG7dOgA+/fRTp+2KojhmyHXVpfU8LklPTyc4OLjEPsVHN5a2zyWDBw92miPL3RGhV+Jo0soida97da+r9Qape7WNHF+4cKHeQ8oUHR1NcnIyKSkphISEsGXLFh5//HGnfbp168batWvp06cPR44cwd/fv8zEIYQQouq5NVfV3r17SUxM5MKFC0yZMoVjx46Rl5en+1YVwK+//sp7772HqqoMGDCAW2+91XFVExcXh6ZpxMfHs2fPHry9vRk/fjzR0dG6yxFCCFFJNJ1Wr16tTZgwQfvyyy+10aNHa5qmaadOndKeffZZvaeqsSZPnuzpEDxG6l731NV6a5rU3V26R46vXr2a6dOnM2LECMd4joiICLdnohVCCHFl0Z048vPzS7TEW61Wx3ocQgghajfdiSM2NpavvvrKaduaNWto3759ZcXkcTVh9UJPkbrXPXW13iB1d5fuxvHz588zZ84csrOzycjIICwsDH9/fyZPnkxQUJDbgQghhLgyuNWrStM0kpKSSEtLw2w2ExMT42jvEEIIUbvpThwrVqygb9++xMTEVFVM1aauzsxbXr1/++035s6dS1hYGAA9evTg9ttv90CklW/RokX8+uuvNGjQgPnz55d4vba+5+XVuza/52lpaSxcuJDMzEwURWHw4MHccMMNTvvU1vfdlbq79d7r7Ya1bNky7aGHHtIee+wxbdWqVdoff/zhdpcuT7LZbNqECRO0s2fPahaLRfvnP/+pnT592mmfX375RZs5c6amqqp26NAhberUqR6KtvK4Uu99+/Zps2bN8lCEVeu3337Tjh49qj311FOlvl4b33NNK7/etfk9z8jI0I4ePappmqbl5eVpjz/+eJ34v65prtXdnfde9/2lMWPGsHjxYv7xj3+QlpbGs88+y+TJk/n222/1nsqj6urMvK7UuzZr164dgYGBZb5eG99zKL/etVlwcLDj6sHPz4+IiIgSE6XW1vfdlbq7w62GCYPBQMeOHRk/fjzz58+nXr16fPDBBxUOpjrV1Zl5Xak3wOHDh3n66ad5+eWX69R68rXxPXdVXXjPU1JSOH78eIlb7XXhfS+r7qD/vXdr8EVBQQE7duwgMTGR/fv3065dOx599FF3TuUxWiXPzHulcKVOLVu2ZNGiRfj6+vLrr78yb9483nzzzeoK0aNq43vuirrwnhcUFDB//nzuv/9+/P39nV6r7e/75eruznuv+4rj1Vdf5cEHH+SHH36ga9euLFy4kKlTp9KvXz+9p/Koyp6Z90rhSr39/f3x9fUFoEuXLthsNrKysqo1Tk+pje+5K2r7e261Wpk/fz7XXnstPXr0KPF6bX7fy6u7O++97sQRFRXFa6+9xgsvvEBcXBz169cH7KsDXkmKz8xrtVrZsmUL3bp1c9qnW7dubNy4EU3TOHz4cK2YmdeVemdmZjq+gSUlJaGqKvXq1fNEuNWuNr7nrqjN77mmaSxZsoSIiAhuvPHGUvepre+7K3V35713axxHcadOneKnn34iMTGRpUuXVuRU1a6uzsxbXr3Xrl3LunXrMBqNeHt7M3r0aNq0aePhqCvH66+/zv79+8nOzqZBgwaMHDkSq9UK1O73vLx61+b3/ODBgzz33HM0a9bMcfvp7rvvdlxh1Ob33ZW6u/Peu5U4srKy2Lx5Mxs2bODEiRPExsbyt7/9jV69erlRNSGEEFcSlxvHrVYrP//8Mz/99BN79uwhPDycPn36kJqaypNPPkmDBg2qMk4hhBA1hMuJ48EHH8RgMNC/f39Gjhzp6Bt86RaHEEKIusHlxvHmzZuTm5tLUlISR48eJScnpyrjEkIIUUPpauNITU1lw4YNbNy4kbS0NDp27MiBAwd47bXXCAkJqco4hRBC1BBu96o6ePAgGzZsYOvWrRiNRgYMGMB9991X2fEJIYSoYSrcHbeoqIgdO3awceNGnnnmmcqKSwghRA1V4cQhRF3y1FNP8cADD1T5ipcLFy5k8+bNhISEsHDhQgCef/55rr32WgYNGlRif4vFwtixY7Fardx8883cddddVRqfqNtkoXAhihk1apTjcVFRESaTybFI2UMPPcSrr75abbHoSQBeXl588MEHjiQjRFWSxCFEMcVneX700Ud5+OGH6dixowcjEqLmkcQhhA7Fk8knn3zC77//jslk4ueff6Zhw4ZMmjSJ7du389133+Hl5cW4ceO4+uqrAcjLy+O9995j165dKIrCgAEDGDlypK5ll1NTU5k+fTonT56kdevWPP7444754oSoLrJQuBAV8Msvv9CvXz+WL19Oy5YtmTlzpmNiudtuu423337bse+CBQswGo28+eabzJ07lz179vDDDz/oKi8xMZFHHnmEd999F6vVyn//+9/KrpIQ5ZLEIUQFtG3blk6dOmE0GunZsydZWVmMGDECk8nkmJInNzeXzMxMdu/ezf3334+vry8NGjRg2LBhbNmyRVd51113HU2aNMHb25tevXpx4sSJqqmYEJcht6qEqIDic7R5e3tTv359x60nb29vwL6Izvnz57HZbDz00EOO/TVNc1qN0RVBQUGOxz4+PhQUFFQgeiHcI4lDiGpgNpsxmUzEx8djNBo9HY4QFSK3qoSoBsHBwVx99dW8//775OXloaoqZ8+eZf/+/Z4OTQjd5IpDiGoyYcIEVq5cyVNPPUV+fj6NGjXi5ptv9nRYQugmI8eFqIGWLFlCYmIiQUFBvPXWW+Xub7FYePDBB7HZbAwfPpw77rijGqIUdZUkDiGEELpIG4cQQghdJHEIIYTQRRKHEEIIXSRxCCGE0EUShxBCCF0kcQghhNBFEocQQghd/h+1maZZuXSs+gAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -540,7 +322,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "
" ] @@ -597,7 +379,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "
" ] @@ -607,7 +389,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "
" ] @@ -664,7 +446,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "
" ] @@ -674,7 +456,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "
" ] @@ -731,7 +513,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "
" ] @@ -741,7 +523,7 @@ }, { "data": { - "image/png": "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fJ544gkGDRrUaL+xhIeHc/r0afr378/mzZv59NNPK7VJSEjA39+ffv36WZZ9/PHHirZfVWK78bmD6tooWVeIcjJycE12OeJpaWkEBwfTokULAKKiokhOTq6QHFQqFSUlJZa5kXx9fev9baWmb/harRaDwVCv7dekQ4cO7N27l40bNzJ27FiaNWvGxx9/zL59+/Dx8WHevHlcvny50h9lpSOHli1bVqhlkZGRYfl8a2ujZF0hyskFaetw//57yjp1wtxITtnaJTnk5uai0+ksr3U6HadOnarQ5vbbb+fll1/mscceo7i4mKeeeqrKX8jExEQSExMBWL58OUFBQRXev3jxouJvObb8NtS5c2fWrVvHd999R2JiIlqtlosXL9KtWzduv/12fHx80Gg0aDSaCnFUNcKoSmRkJGfOnOHChQu0bNmS7du3s379+grbqq5Nhw4dal23fO6lmj4jDw+PSp9/Q6fVahtdzNZS176rVCq8vLwa9efm8OOem4v73XdjWLYM0zPP2G239em3XZKDktMYP/74I23atGHRokVcvHiRF154gc6dO+Pt7V2hXXR0NNHR0ZbXN1Y50uv1iiaVs/XIoW3btvz88888++yzeHt7YzAYmDZtGikpKSxZsoS5c+diNBoxGo11jmPp0qVMnDgRk8nExIkT6dChAwaDgcmTJ7Ny5UqCg4OrbKPVaqtdF2D69Ons27eP3NxcevXqxTPPPMOkSZMq7V+v1ze66lquWhEM6t738gkWG/Pn5ujj7r5vH0HAlTZt0NsxjvpUgrNLctDpdOTk5Fhe5+Tk0LRp0wptvvnmG2JjY1GpVAQHB9O8eXPS09Pp0KGDPUK0Og8PD3799dcKy959913OnDmDWq2u1P+6GDFiRKXnKQDeeeedWttUtxxg3bp19Y5NOI+ysjK55lBPbr/fGFPWtauDI1HOLke8ffv2ZGRkkJWVRWBgIElJScyePbtCm6CgII4ePUqXLl3Iy8sjPT2d5s2b2yM8u3nggQcqvJ44caKDIhFCOYPBgJubm6PDaNS0qakYdTpMjehvml2Sg0ajYerUqSxbtgyTycSwYcMIDQ0lISEBgJiYGMaNG8e6desszwLcf//9+Pn52SM8IUQNZORQf26pqRi6dIFGdFeg3Y54REQEERERFZbFxMRYfg4MDGTBggX2CkcIoZDMrVR/eStXoior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QQghRCUqc1UPIQghhHBpLjtymDdvnqNDcBjpu2uSvrue+vTbZZODEEKI6klyEEIIUYnLJofr52dyNdJ31yR9dz316bdckBZCCFGJy44chBBCVE+SgxBCiErsNreSo9RWu9psNrNp0yYOHz6Mh4cH06dP55ZbbnFMsFZWW99TUlJ4+eWXad68OQD9+vVj/PjxDojUutatW8ehQ4fw9/dn1apVld535mNeW9+d9ZhfunSJtWvXkpeXh0qlIjo6mpEjR1Zo46zHXUnf63TczU7MaDSaZ86cac7MzDSXlZWZn3nmGfNvv/1Woc0PP/xgXrZsmdlkMplPnDhhjouLc1C01qWk78eOHTO/9NJLDorQdlJSUsynT582z5kzp8r3nfWYm821991Zj3lubq759OnTZrPZbC4qKjLPnj3bZf6vK+l7XY67U59Wur52tVartdSuvt7BgwcZPHgwKpWKjh07UlhYyOXLlx0UsfUo6buz6tq1K76+vtW+76zHHGrvu7Nq2rSpZRTg5eVF69atyc3NrdDGWY+7kr7XhVMnh6pqV9/4oeXm5laosVpVm8ZISd8BTp48ydy5c3nxxRf57bff7BmiwzjrMVfK2Y95VlYWZ86coUOHDhWWu8Jxr67vcPPH3amvOZgV1K5W0qYxUtKvdu3asW7dOjw9PTl06BArV67ktddes1eIDuOsx1wJZz/mJSUlrFq1iilTplQqFObsx72mvtfluDv1yEFJ7WqdTlehALez1LdW0ndvb288PT2Ba8WYjEYj+fn5do3TEZz1mCvhzMfcYDCwatUqBg0aRL9+/Sq978zHvba+1+W4O3VyUFK7OjIykt27d2M2mzl58iTe3t5O8QujpO95eXmWb1NpaWmYTCaaNGniiHDtylmPuRLOeszNZjMbNmygdevW3HnnnVW2cdbjrqTvdTnuTv+E9KFDh9iyZYuldvXdd99doXa12WwmPj6eH3/8EXd3d6ZPn0779u0dHLV11Nb3HTt2kJCQgEajwd3dnQcffJBOnTo5OOr6+8c//kFqaipXr17F39+fe+65B4PBADj/Ma+t7856zI8fP86iRYsICwuznCqaNGmSZaTgzMddSd/rctydPjkIIYS4eU59WkkIIUTdSHIQQghRiSQHIYQQlUhyEEIIUYkkByGEEJVIchBCCFGJJAchbjBnzhxSUlJsvp+1a9cyadIkZsyYYVm2ZMkSvv766yrbl5WVMXnyZCZNmsS///1vm8cnXJtTz60kRFUmT55s+bm0tBStVotafe170qOPPsorr7xit1jGjBnDvffeq6itm5sb77zzDmvXrrVxVEJIchAu6J133rH8PGPGDB577DF69uzpwIiEaHgkOQhxg+sTxgcffMD58+fRarUcPHiQZs2a8fTTT/P999/z+eef4+bmxrRp0+jVqxcARUVFbNmyhcOHD6NSqRg2bBj33HOPZWSiRHZ2NgsXLuTcuXN07NiR2bNn4+fnZ6vuClElueYgRC1++OEHBg8ezKZNm2jXrh3Lli2zTHY2btw43nzzTUvb119/HY1Gw2uvvcbLL7/Mjz/+WO01hOrs3buXxx9/nI0bN2IwGPj000+t3SUhaiXJQYhadO7cmd69e6PRaOjfvz/5+fnExsai1WoZMGAA2dnZFBYWkpeXx5EjR5gyZQqenp74+/szatQokpKSbmp/Q4cOpVWrVri7u3Pbbbdx9uxZ23RMiBrIaSUhauHv72/52d3dHT8/P8tpInd3d+BaoZXLly9jNBp59NFHLe3NZnOFinxKBAQEWH728PCgpKSkHtELUTeSHISwEp1Oh1arJT4+Ho1G4+hwhKgXOa0khJU0bdqUXr168fbbb1NUVITJZCIzM5PU1FRHhybETZORgxBWNHPmTLZu3cqcOXMoLi6mRYsWjBkzxtFhCXHTpNiPEA6yYcMG9u7dS0BAAGvWrKm1fVlZGY888ghGo5HRo0czYcIEO0QpXJUkByGEEJXINQchhBCVSHIQQghRiSQHIYQQlUhyEEIIUYkkByGEEJVIchBCCFHJ/wHuMWyP2704BQAAAABJRU5ErkJggg==\n", + "image/png": "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fJ544gkGDRrUaL+xhIeHc/r0afr378/mzZv59NNPK7VJSEjA39+ffv36WZZ9/PHHirZfVWK78bmD6tooWVeIcjJycE12OeJpaWkEBwfTokULAKKiokhOTq6QHFQqFSUlJZa5kXx9fev9baWmb/harRaDwVCv7dekQ4cO7N27l40bNzJ27FiaNWvGxx9/zL59+/Dx8WHevHlcvny50h9lpSOHli1bVqhlkZGRYfl8a2ujZF0hyskFaetw//57yjp1wtxITtnaJTnk5uai0+ksr3U6HadOnarQ5vbbb+fll1/mscceo7i4mKeeeqrKX8jExEQSExMBWL58OUFBQRXev3jxouJvObb8NtS5c2fWrVvHd999R2JiIlqtlosXL9KtWzduv/12fHx80Gg0aDSaCnFUNcKoSmRkJGfOnOHChQu0bNmS7du3s379+grbqq5Nhw4dal23fO6lmj4jDw+PSp9/Q6fVahtdzNZS176rVCq8vLwa9efm8OOem4v73XdjWLYM0zPP2G239em3XZKDktMYP/74I23atGHRokVcvHiRF154gc6dO+Pt7V2hXXR0NNHR0ZbXN1Y50uv1iiaVs/XIoW3btvz88888++yzeHt7YzAYmDZtGikpKSxZsoS5c+diNBoxGo11jmPp0qVMnDgRk8nExIkT6dChAwaDgcmTJ7Ny5UqCg4OrbKPVaqtdF2D69Ons27eP3NxcevXqxTPPPMOkSZMq7V+v1ze66lquWhEM6t738gkWG/Pn5ujj7r5vH0HAlTZt0NsxjvpUgrNLctDpdOTk5Fhe5+Tk0LRp0wptvvnmG2JjY1GpVAQHB9O8eXPS09Pp0KGDPUK0Og8PD3799dcKy959913OnDmDWq2u1P+6GDFiRKXnKQDeeeedWttUtxxg3bp19Y5NOI+ysjK55lBPbr/fGFPWtauDI1HOLke8ffv2ZGRkkJWVRWBgIElJScyePbtCm6CgII4ePUqXLl3Iy8sjPT2d5s2b2yM8u3nggQcqvJ44caKDIhFCOYPBgJubm6PDaNS0qakYdTpMjehvml2Sg0ajYerUqSxbtgyTycSwYcMIDQ0lISEBgJiYGMaNG8e6desszwLcf//9+Pn52SM8IUQNZORQf26pqRi6dIFGdFeg3Y54REQEERERFZbFxMRYfg4MDGTBggX2CkcIoZDMrVR/eStXoior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QQghRCUqc1UPIQghhHBpLjtymDdvnqNDcBjpu2uSvrue+vTbZZODEEKI6klyEEIIUYnLJofr52dyNdJ31yR9dz316bdckBZCCFGJy44chBBCVE+SgxBCiErsNreSo9RWu9psNrNp0yYOHz6Mh4cH06dP55ZbbnFMsFZWW99TUlJ4+eWXad68OQD9+vVj/PjxDojUutatW8ehQ4fw9/dn1apVld535mNeW9+d9ZhfunSJtWvXkpeXh0qlIjo6mpEjR1Zo46zHXUnf63TczU7MaDSaZ86cac7MzDSXlZWZn3nmGfNvv/1Woc0PP/xgXrZsmdlkMplPnDhhjouLc1C01qWk78eOHTO/9NJLDorQdlJSUsynT582z5kzp8r3nfWYm821991Zj3lubq759OnTZrPZbC4qKjLPnj3bZf6vK+l7XY67U59Wur52tVartdSuvt7BgwcZPHgwKpWKjh07UlhYyOXLlx0UsfUo6buz6tq1K76+vtW+76zHHGrvu7Nq2rSpZRTg5eVF69atyc3NrdDGWY+7kr7XhVMnh6pqV9/4oeXm5laosVpVm8ZISd8BTp48ydy5c3nxxRf57bff7BmiwzjrMVfK2Y95VlYWZ86coUOHDhWWu8Jxr67vcPPH3amvOZgV1K5W0qYxUtKvdu3asW7dOjw9PTl06BArV67ktddes1eIDuOsx1wJZz/mJSUlrFq1iilTplQqFObsx72mvtfluDv1yEFJ7WqdTlehALez1LdW0ndvb288PT2Ba8WYjEYj+fn5do3TEZz1mCvhzMfcYDCwatUqBg0aRL9+/Sq978zHvba+1+W4O3VyUFK7OjIykt27d2M2mzl58iTe3t5O8QujpO95eXmWb1NpaWmYTCaaNGniiHDtylmPuRLOeszNZjMbNmygdevW3HnnnVW2cdbjrqTvdTnuTv+E9KFDh9iyZYuldvXdd99doXa12WwmPj6eH3/8EXd3d6ZPn0779u0dHLV11Nb3HTt2kJCQgEajwd3dnQcffJBOnTo5OOr6+8c//kFqaipXr17F39+fe+65B4PBADj/Ma+t7856zI8fP86iRYsICwuznCqaNGmSZaTgzMddSd/rctydPjkIIYS4eU59WkkIIUTdSHIQQghRiSQHIYQQlUhyEEIIUYkkByGEEJVIchBCCFGJJAchbjBnzhxSUlJsvp+1a9cyadIkZsyYYVm2ZMkSvv766yrbl5WVMXnyZCZNmsS///1vm8cnXJtTz60kRFUmT55s+bm0tBStVotafe170qOPPsorr7xit1jGjBnDvffeq6itm5sb77zzDmvXrrVxVEJIchAu6J133rH8PGPGDB577DF69uzpwIiEaHgkOQhxg+sTxgcffMD58+fRarUcPHiQZs2a8fTTT/P999/z+eef4+bmxrRp0+jVqxcARUVFbNmyhcOHD6NSqRg2bBj33HOPZWSiRHZ2NgsXLuTcuXN07NiR2bNn4+fnZ6vuClElueYgRC1++OEHBg8ezKZNm2jXrh3Lli2zTHY2btw43nzzTUvb119/HY1Gw2uvvcbLL7/Mjz/+WO01hOrs3buXxx9/nI0bN2IwGPj000+t3SUhaiXJQYhadO7cmd69e6PRaOjfvz/5+fnExsai1WoZMGAA2dnZFBYWkpeXx5EjR5gyZQqenp74+/szatQokpKSbmp/Q4cOpVWrVri7u3Pbbbdx9uxZ23RMiBrIaSUhauHv72/52d3dHT8/P8tpInd3d+BaoZXLly9jNBp59NFHLe3NZnOFinxKBAQEWH728PCgpKSkHtELUTeSHISwEp1Oh1arJT4+Ho1G4+hwhKgXOa0khJU0bdqUXr168fbbb1NUVITJZCIzM5PU1FRHhybETZORgxBWNHPmTLZu3cqcOXMoLi6mRYsWjBkzxtFhCXHTpNiPEA6yYcMG9u7dS0BAAGvWrKm1fVlZGY888ghGo5HRo0czYcIEO0QpXJUkByGEEJXINQchhBCVSHIQQghRiSQHIYQQlUhyEEIIUYkkByGEEJVIchBCCFHJ/wHuMWyP2704BQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -751,7 +533,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "
" ] @@ -839,7 +621,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.9.13 ('conda_jl')", "language": "python", "name": "python3" }, @@ -853,7 +635,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.12" + "version": "3.9.13" }, "toc": { "base_numbering": 1, @@ -867,6 +649,11 @@ "toc_position": {}, "toc_section_display": true, "toc_window_display": true + }, + "vscode": { + "interpreter": { + "hash": "612adcc456652826e82b485a1edaef831aa6d5abc680d008e93d513dd8724f14" + } } }, "nbformat": 4, diff --git a/examples/notebooks/parameterization/parameter-management.ipynb b/examples/notebooks/parameterization/parameter-management.ipynb deleted file mode 100644 index 84a9ef3791..0000000000 --- a/examples/notebooks/parameterization/parameter-management.ipynb +++ /dev/null @@ -1,436 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Parameter management\n", - "\n", - "PyBamm comes with a set of pre-defined parameters for common chemistries. These files are located inside your PyBaMM installation directory, typically something like\n", - "```\n", - "../venv/lib/pythonX.Y/site-packages/pybamm/input/parameters\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `input/parameters` directory is organised as follows:\n", - "```\n", - "input/parameters\n", - " lithium_ion/ # chemistry\n", - " negative_electrodes/ # Component\n", - " graphite_Chen2020/ # parameter set\n", - " parameters.csv\n", - "\t graphite_LGM50_diffusivity_Chen2020.py\n", - " ...\n", - " graphite_mcmb2528_Marquis2019/\n", - " graphite_Ecker2015/\n", - " ...\n", - " positive_electrodes/\n", - " cells/\n", - " electrolytes/\n", - " seis/\n", - " separators/\n", - " experiments/\n", - " lead_acid/\n", - " ...\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When setting parameter values using `pybamm.ParameterValues` and a filename, the file is searched in several locations, described by\n", - "the variable `pybamm.PARAMETER_PATH`.\n", - "The default is " - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - }, - { - "data": { - "text/plain": [ - "['/home/priyanshu/work/PyBaMM',\n", - " '/home/priyanshu/work/notebooks',\n", - " '/home/priyanshu/work/PyBaMM/pybamm/input/parameters']" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%pip install pybamm -q # install PyBaMM if it is not installed\n", - "import pybamm\n", - "pybamm.PARAMETER_PATH" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "which means that parameter files will first be searched in the current directory, and then the `input/parameters` directory within the \n", - "PyBaMM installation directory." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Editing the default parameters\n", - "It is often much easier to define new parameters by editing exiting ones.\n", - "\n", - "We recommend not to alter the default parameters provided with the PyBaMM installation. Instead, you can pull all parameter set for\n", - "a given chemistry into the current directory:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Directory lithium_ion does not exist.\n" - ] - } - ], - "source": [ - "%%bash\n", - "if [[ ! -d \"lithium_ion\" ]]; then\n", - "echo \"Directory lithium_ion does not exist.\"\n", - "fi" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "pybamm_edit_parameter lithium_ion" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above commands will create a `lithium_ion` directory in the current directory, populated with copies of the default parameters, for editing:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "cells\n", - "electrolytes\n", - "experiments\n", - "lithium_platings\n", - "negative_electrodes\n", - "positive_electrodes\n", - "seis\n", - "separators\n" - ] - } - ], - "source": [ - "%%bash\n", - "ls lithium_ion" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As an example, let's create a new parameter file for the `cell` component, for the `lithium_ion` chemistry. We first create a new directory `my_new_param_set`:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "mkdir lithium_ion/cells/my_new_param_set" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "and write some data in a file `my_new_param_set/param_file.csv`. This is done using python in this simple example, but it can be done using the text editor of your choice to create a new file or edit an existing file." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "# Create example parameter file\n", - "f = open(\"lithium_ion/cells/my_new_param_set/param_file.csv\", \"w+\")\n", - "f.write(\n", - "\"\"\"\n", - "Name [units],Value\n", - "a, 4\n", - "b, 5\n", - "c, 6\n", - "\"\"\"\n", - ")\n", - "f.close()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Adding a parameter directory\n", - "You can add a search location by modifying the `PARAMETER_PATH` list.\n", - "Let's add our new parameter directory to the list, in first position so that it is searched first:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['lithium_ion/cells/my_new_param_set',\n", - " '/home/priyanshu/work/PyBaMM',\n", - " '/home/priyanshu/work/notebooks',\n", - " '/home/priyanshu/work/PyBaMM/pybamm/input/parameters']" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pybamm.PARAMETER_PATH.insert(0, \"lithium_ion/cells/my_new_param_set\")\n", - "pybamm.PARAMETER_PATH" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that relative paths added to `pybamm.PARAMETER_PATH` are considered relative to the current directory. In the above example, if you change directory, the new parameter `my_new_param_set` will not be found." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's check that our new parameter file can be read:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a': 4,\n", - " 'b': 5,\n", - " 'c': 6}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pybamm.ParameterValues(\"param_file.csv\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Contributing a new parameter set\n", - "Once you're happy with a particular parameter set of your creation, you may want to contribute it to the PyBaMM parameter distribution, so\n", - "that it comes bundled with future release of PyBaMM.\n", - "This will require you to open a Pull Request on the PyBaMM repository, a process that is described here.\n", - "\n", - "A prerequisite is that you add you parameter set to the default parameter directory. You could manually copy the corresponding directory to your installation directory, but the command `pybamm_add_param` can do it for you:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "# pybamm_add_parameter \n", - "pybamm_add_parameter lithium_ion/cells/my_new_param_set lithium_ion cells" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's remove the `my_new_param_set` from the parameter search path to check that the parameter directory was added correctly to set of default parameters:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['/home/priyanshu/work/PyBaMM',\n", - " '/home/priyanshu/work/notebooks',\n", - " '/home/priyanshu/work/PyBaMM/pybamm/input/parameters']" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pybamm.PARAMETER_PATH.remove(\"lithium_ion/cells/my_new_param_set\")\n", - "pybamm.PARAMETER_PATH" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'a': 4,\n", - " 'b': 5,\n", - " 'c': 6}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pybamm.ParameterValues(\"lithium_ion/cells/my_new_param_set/param_file.csv\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you think you made a mistake, you can always delete a specific parameter set using `pybamm_rm_param`.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "pybamm_rm_parameter -f lithium_ion/cells/my_new_param_set lithium_ion cells" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's remove the local lithium_ion directory to leave this directory as we found it" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "%%bash\n", - "rm -rf lithium_ion" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## References\n", - "\n", - "The relevant papers for this notebook are:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1] Charles R. Harris, K. Jarrod Millman, Stéfan J. van der Walt, Ralf Gommers, Pauli Virtanen, David Cournapeau, Eric Wieser, Julian Taylor, Sebastian Berg, Nathaniel J. Smith, and others. Array programming with NumPy. Nature, 585(7825):357–362, 2020. doi:10.1038/s41586-020-2649-2.\n", - "[2] Valentin Sulzer, Scott G. Marquis, Robert Timms, Martin Robinson, and S. Jon Chapman. Python Battery Mathematical Modelling (PyBaMM). ECSarXiv. February, 2020. doi:10.1149/osf.io/67ckj.\n", - "\n" - ] - } - ], - "source": [ - "pybamm.print_citations()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.0" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/examples/notebooks/parameterization/parameter-values.ipynb b/examples/notebooks/parameterization/parameter-values.ipynb index f20c0a2d11..bbe0a6b94c 100644 --- a/examples/notebooks/parameterization/parameter-values.ipynb +++ b/examples/notebooks/parameterization/parameter-values.ipynb @@ -122,13 +122,11 @@ "name": "stdout", "output_type": "stream", "text": [ - "Marquis2019 chemistry set is {'chemistry': 'lithium-ion', 'cell': 'kokam_Marquis2019', 'negative electrode': 'graphite_mcmb2528_Marquis2019', 'separator': 'separator_Marquis2019', 'positive electrode': 'lico2_Marquis2019', 'electrolyte': 'lipf6_Marquis2019', 'experiment': '1C_discharge_from_full_Marquis2019', 'sei': 'example', 'citation': 'Marquis2019'}\n", "Negative current collector thickness is 2.5e-05 m\n" ] } ], "source": [ - "print(\"Marquis2019 chemistry set is {}\".format(pybamm.parameter_sets.Marquis2019))\n", "chem_parameter_values = pybamm.ParameterValues(\"Marquis2019\")\n", "print(\"Negative current collector thickness is {} m\".format(\n", " chem_parameter_values[\"Negative current collector thickness [m]\"])\n", @@ -139,7 +137,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can input functions into the parameter values, either directly (note we bypass the check that the parameter already exists)" + "We can input functions into the parameter value (note we bypass the check that the parameter already exists)" ] }, { @@ -154,7 +152,7 @@ "parameter values are {'a': 4,\n", " 'b': 5,\n", " 'c': 6,\n", - " 'cube function': }\n" + " 'cube function': }\n" ] } ], @@ -165,44 +163,6 @@ "print(\"parameter values are {}\".format(parameter_values))" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "or by using `pybamm.load_function` to load from a path to the function" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "parameter values are {'a': 4,\n", - " 'b': 5,\n", - " 'c': 6,\n", - " 'cube function': ,\n", - " 'square function': }\n" - ] - } - ], - "source": [ - "f = open(\"squared.py\",\"w+\")\n", - "f.write(\n", - "\"\"\"\n", - "def squared(x):\n", - " return x ** 2\n", - "\"\"\"\n", - ")\n", - "f.close()\n", - "parameter_values.update({\"square function\": pybamm.load_function(\"squared.py\")}, check_already_exists=False)\n", - "print(\"parameter values are {}\".format(parameter_values))\n", - "os.remove(\"squared.py\")" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -219,7 +179,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": { "tags": [ "raises-exception" @@ -230,8 +190,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "method self.evaluate() not implemented\n", - " for symbol a of type \n" + "method self.evaluate() not implemented for symbol a of type \n" ] } ], @@ -239,7 +198,7 @@ "a = pybamm.Parameter(\"a\")\n", "b = pybamm.Parameter(\"b\")\n", "c = pybamm.Parameter(\"c\")\n", - "func = pybamm.FunctionParameter(\"square function\", {\"a\": a})\n", + "func = pybamm.FunctionParameter(\"cube function\", {\"a\": a})\n", "\n", "expr = a + b * c\n", "try:\n", @@ -257,7 +216,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -275,14 +234,14 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "16.0 = 16.0\n" + "64.0 = 64.0\n" ] } ], @@ -300,7 +259,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -345,19 +304,17 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAABQkAAAGGCAYAAADYVwfrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAACTxUlEQVR4nOzdeVxU9f7H8dcZVhEHV1BcEHdxxS3FNM0yzK3FtHtLs8zqtmne289su9qmtl213bLUFtMy00otK9c0yzWVNDUUQhBXBkS2mfP7Y5REtkGBYXk/H4/zwHPme858Rhj4zud8v9+PYZqmiYiIiIiIiIiIiFRaFncHICIiIiIiIiIiIu6lJKGIiIiIiIiIiEglpyShiIiIiIiIiIhIJackoYiIiIiIiIiISCWnJKGIiIiIiIiIiEglpyShiIiIiIiIiIhIJackoYiIiIiIiIiISCWnJKGIiIiIiIiIiEglpyShiIiIiIiIiIhIJackoYhIEcyaNYvu3btTu3ZtfHx8aNSoEbfeeit79uy55GuOHj0af3//Yozy0n3xxRf84x//oFmzZlSpUoXGjRtz2223sX//fneHJiIiIlKq9uzZw/3330+PHj2oWrUqhmGwZs2ay7rm5MmTMQyD48ePF0+Ql+HHH3/krrvuolWrVlStWpX69eszdOhQtm7d6u7QRMRNlCQUESmCEydOMGDAAN577z2+++47pkyZwvbt27niiivYt2+fu8O7bNOnTyc1NZUnnniClStX8txzz7F9+3Y6dep0WYlQERERkfJmy5YtfPnll9SsWZN+/fq5O5xi99Zbb3Ho0CHGjRvH8uXLmTlzJomJiXTv3p0ff/zR3eGJiBsYpmma7g5CRKQ8+/333wkLC+Opp57imWeeKfL5o0eP5vPPPyclJaUEoiuaxMREAgMDcxw7cuQIjRs3ZtSoUbz33ntuikxERESkdDkcDiwW57iazz//nFtuuYXVq1fTp0+fS77m5MmTmTJlCseOHaN27drFFOmlyavfl5KSQrNmzWjbti3ff/+9myITEXfRSEIRKfMOHDjAnXfeSfPmzfHz86N+/foMHjyYXbt2uTs0AOrUqQOAp6fnZV1nz5499OvXj6pVq1KnTh0efPBBUlNTiyNEl13cUQQIDg6mQYMGxMbGlmosIiIiUnGV9f4dkJ0gLAmxsbHcdNNNWK1WAgICuP322zl27FiJPV9e8ur3+fv7ExYWpn6fSCWlJKGIlHlHjhyhVq1aTJs2jZUrV/LGG2/g6enp8hRfu91OVlZWoZvD4XA5JrvdTnp6Onv37uXuu+8mMDCQO++885JfY2ZmJtdffz39+vXjyy+/5MEHH+Sdd95hxIgRhZ7rcDhcen12u/2SYvvzzz85fPgwbdq0uaTzRURERC5WFvt3penGG2+kWbNmfP7550yePJkvv/yS6667jszMzALPM03TpdedlZV1SXElJSWxbds29ftEKqnLG/YiIlIKevfuTe/evbP37XY7AwcOpE2bNrzzzju8+uqrBZ7fr18/1q5dW+jz3HHHHcydO9elmKpWrUp6ejoALVq0YM2aNTRs2NClc/OSkZHBv//9bx5++GEArr32Wry8vHjiiSf46aef6NmzZ77nPvPMM0yZMqXQ5wgJCeHQoUNFiisrK4sxY8bg7+/PI488UqRzRURERPJTFvt3pemmm27ixRdfBKB///4EBQVx2223sWjRIm677bZ8z5s3b57LN6YvZWWxBx54gDNnzvDEE08U+VwRKf+UJBSRMi8rK4sXX3yRjz76iAMHDuS4w/r7778Xev4777xDcnJyoe2Ksi7Mxo0bycjI4ODBg/zvf/+jb9++/PDDD5d11/XiDuE///lPnnjiCVavXl1gkvCee+5h0KBBhV7fx8enSPGYpsmYMWNYv349ixcvvqwkqIiIiMiFykr/zuFw5BhtaBgGHh4ehV73cl3c7xs+fDh33HEHq1evLjBJOHjwYH799dcSiempp57i448/5rXXXqNz584l8hwiUrYpSSgiZd6ECRN44403mDhxIldddRU1atTAYrFw9913c/bs2ULPb9asmUt3Uouy7kynTp0A6N69O0OGDKFZs2Y8/vjjLF261OVrXMjT05NatWrlOFa3bl3AWVG5IHXr1s1zTZmLGYbhcjymaXL33Xfz0UcfMW/ePIYOHeryuSIiIiKFKSv9u4tnZFzKzItLcb6fd975vmBh/b6aNWsSEBBQ7PFMmTKF5557jueff54HH3yw2K8vIuWDkoQiUuZ99NFHjBo1ihdeeCHH8ePHj1O9evVCzy/p6SjVqlWjVatW/PHHH0U+97ysrCxOnDiRI1GYkJAAkCt5eLHinm58PkH4wQcfMGfOHG6//fZCzxEREREpirLSv7t4RkZRZ15cqoSEBOrXr5+9n1dfMC8lMd14ypQpTJ48mcmTJ/P444+7dI6IVExKEopImWcYRq4O2zfffENcXBzNmjUr9PySmG58oePHj7Nr164CpwS74uOPP85ekxDgk08+AaBPnz4Fnlec041N02Ts2LF88MEHvPPOO5dVjEVEREQkP2WlfxccHExwcHCh1yluH3/8cY4pvYsWLSIrK6vQfl9xTzd+9tlnmTx5Mk8++ST//e9/i+26IlI+KUkoImXeoEGDmDt3Lq1ataJ9+/Zs3bqVl156iQYNGrh0fsuWLYsljqSkJK699lr++c9/0rx5c6pUqcIff/zBzJkzSU9Pz9Wx6tOnD2vXrnXpLq63tzevvPIKKSkpdO3alY0bN/Lcc88xYMAArrzyygLPLc7O7cMPP8ycOXO46667aNeuHT///HP2Yz4+PoSHhxfL84iIiEjlVlb6dwVJTU1l+fLlANl9orVr13L8+HGqVq3KgAEDstuOHj2aefPmER0dTePGjQu99hdffIGnpyfXXnste/bs4amnnqJDhw4MHz68wPNq1apV6GhDV73yyis8/fTTREZGMnDgwBz9PnAuqyMilYuShCJS5s2cORMvLy+mTp1KSkoKnTp14osvvuDJJ58s1Th8fX3p0KEDs2fPJjY2lrS0NOrWrUufPn1YvHgxYWFhOdqnpKTkWm8mP15eXnz99dc8/PDDPPfcc1SpUoWxY8fy0ksvlcRLyddXX30FwPvvv8/777+f47HSWqNHREREKr6y0r8rSGJiIrfcckuOY5MnTwZy94tSUlKoUqWKS1OlwZkknDx5Mm+99RaGYTB48GBmzJiBt7d3MUVfuPP9vpUrV7Jy5cpcj19KdWQRKd8MU+98EZFil5ycTM2aNZkxYwYPPPCAu8MRERERkRJUt25dRo4cWeo3eEVEipPrpTxFRMRl69ato379+owdO9bdoYiIiIhICdqzZw+pqalMnDjR3aGIiFwWjSQUERERERERERGp5DSSUEREREREREREpJJTklBERERERERERKSSU5JQRERERERERESkklOSUEREREREREREpJLzdHcAxcXhcHDkyBGqVauGYRjuDkdERESkXDBNk+TkZIKDg7FYyvb9Y/X3RERERIrO1f5ehUkSHjlyhIYNG7o7DBEREZFyKTY2lgYNGrg7jAKpvyciIiJy6Qrr71WYJGG1atUA5wu2Wq1ujkZERESkfLDZbDRs2DC7L1WWqb8nIiIiUnSu9vcqTJLw/JQTq9WqTqOIiIhIEZWH6bvq74mIiIhcusL6e2V74RkREREREREREREpcUoSioiIiIiIiIiIVHJKEoqIiIiIiIiIiFRyFWZNQhERkYrObreTmZnp7jCknPHy8sLDw8PdYZQah8NBRkaGu8OQy1DZfmZFRETKCiUJRUREyjjTNElISOD06dPuDkXKqerVq1O3bt1yUZzkcmRkZBAdHY3D4XB3KHKZKsvPrIiISFmiJKGIiEgZdz5BGBgYiJ+fnz40i8tM0yQ1NZXExEQA6tWr5+aISo5pmsTHx+Ph4UHDhg2xWLSqTnlUmX5mRUREyholCYvKYYfDGyHlKPgHQUgEWDQdQkRESobdbs9OENaqVcvd4Ug5VKVKFQASExMJDAyssNM4s7KySE1NJTg4GD8/P3eHI5ehsvzMiohIJVZGc0tFusU6depUunbtSrVq1QgMDOSGG25g3759hZ63du1aOnfujK+vL02aNOHtt9/O1Wbx4sWEhYXh4+NDWFgYS5YsKUpopSNqGcxoC/MGweIxzq8z2jqPi4iIlIDzaxAq6SGX4/zPT0Ve09JutwPg7e3t5kikOFSGn1kREamkynBuqUhJwrVr1/LAAw/w888/s2rVKrKysujfvz9nzpzJ95zo6Giuv/56evXqxfbt23n88cd5+OGHWbx4cXabTZs2MWLECEaOHMnOnTsZOXIkw4cPZ/PmzZf+yopb1DJYNApsR3Iet8U7j5eBb6aIiFRcmmIsl6My/fxUptdaken7KCIiFVIZzy0Zpmmal3rysWPHCAwMZO3atfTu3TvPNhMnTmTZsmX8/vvv2cfuu+8+du7cyaZNmwAYMWIENpuNFStWZLeJjIykRo0aLFiwwKVYbDYbAQEBJCUlYbVaL/Ul5c1hd2Z1L/4mZjPAGgzjd5WJ4aEiIlJxpKWlER0dTWhoKL6+vu4OR8qpgn6OSrQPVcwKilXvlYpF308REalw3JhbcrW/d1krOiclJQFQs2bNfNts2rSJ/v375zh23XXXsWXLluzpA/m12bhxY77XTU9Px2az5dhKzOGNBXwTAUywxTnbiYiISIVz4sQJAgMDOXTokLtDyWXXrl00aNCgwJkdIqXB1ffJsGHDePXVV0snKBERkbKiHOSWLjlJaJomEyZM4Morr6Rt27b5tktISCAoKCjHsaCgILKysjh+/HiBbRISEvK97tSpUwkICMjeGjZseKkvpXApR4u3nYiISCVwqWsZA4wePbpMJeSmTp3K4MGDady4cb5t9u3bR9++fQkKCspeh/nJJ590aU21NWvWMHny5ELb9enTh/Hjx+c41q5dO7p168b//ve/Qs+Xsqciv0/WrFmDYRicPn06R7unn36a559/vmRv8ouIiJQ15SC3dMlJwgcffJDffvvNpenAF68pcn6G84XH82pT0FokkyZNIikpKXuLjY0tSvhF4x9UeJuitBMREakEirqW8cmTJ3njjTe4cCWUgwcP8tFHH5VWyHk6e/Ysc+bM4e677y6wnZeXF6NGjeK7775j3759zJgxg3fffZf//ve/+Z7z9ttvk5iYmL2fkZHBK6+8UuRiDXfeeSdvvfVWdvEOKT8q2/sEoH379jRu3JiPP/64FCITEREpI8pBbumSkoQPPfQQy5YtY/Xq1TRo0KDAtnXr1s01IjAxMRFPT09q1apVYJuLRxdeyMfHB6vVmmMrMSERznnh5Je0NMBa39lOREREAFi5ciWjR4+mTZs2dOjQgQ8++ICYmBi2bt2aZ3tfX1/i4uKIjIzkr7/+4u233+bOO++kefPm+T5HXFwcI0aMoEaNGtSqVYuhQ4dmj6zau3cvfn5+fPLJJ9ntv/jiC3x9fdm1axfgHIl1ww03MGXKFAIDA7Fardx7771kZGRkn7NixQo8PT3p0aNHga+3SZMm3HnnnXTo0IGQkBCGDBnCbbfdxvr16/M9p2HDhgwZMoQlS5awZ88errnmGjw8PLBYcnfRRo8ezdq1a5k5cyaGYWAYRvZrve666zhx4gRr164tMEYpeyrq++TQoUP07dsXgBo1amAYBqNHj85uP2TIEJfXHhcREakQQiJI96uLI9/KIO7PLXkWpbFpmjz00EMsWbKENWvWEBoaWug5PXr04Kuvvspx7LvvvqNLly54eXllt1m1ahWPPPJIjjYREWUk6WbxgMjpzkozGMDf31ETw5k6jJymoiUiIlIqTNPkbKZ7RoxV8fK45Kqjha1l7OfnxwsvvMDy5csZMmQIWVlZ/PDDD9n9hYulpqbSt29fevXqxbp16/D09OS5554jMjKS3377jVatWvHyyy9z//3307NnT7y8vBg7dizTpk2jXbt22df54Ycf8PX1ZfXq1Rw6dIg777yT2rVr8/zzzwOwbt06unTpUuTXe+DAAVauXMlNN92Ub5uBAwdy5ZVX0r17d2JiYtiwYQPh4eF5tp05cyZ//PEHbdu25ZlnngGgTp06AHh7e9OhQwfWr1/P1VdfXeRYKyK9T5zc9T5p2LAhixcv5uabb2bfvn1YrVaqVKmS/Xi3bt2YOnUq6enp+Pj4XNL/lYiISHny54mzvH72dl7mZUwuHoZ2bs/NuaUiJQkfeOABPvnkE5YuXUq1atWyR/8FBARk/9GfNGkScXFxzJ8/H3BWMn799deZMGECY8eOZdOmTcyZMyfHncNx48bRu3dvpk+fztChQ1m6dCnff/89GzZsKK7XefnChsDw+bByYo6FJjOr1sV74IvOx0VERErB2Uw7YU9/65bnjnrmOvy8i9R9AFxbyzgtLY0XXniBzZs306dPH7p06cI111zDSy+9RLdu3XK1//TTT7FYLLz33nvZCZkPPviA6tWrs2bNGvr378/999/P8uXLGTlyJN7e3nTu3Jlx48bluI63tzfvv/8+fn5+tGnThmeeeYZHH32UZ599FovFwqFDhwgODnb5tUZERLBt2zbS09O55557shN6eVm5ciVTpkyhf//+HDlyhIcffphhw4bx4IMP4uGRs4MYEBCAt7c3fn5+1K1bN9e16tevX6bWp3M3vU+c3PU+8fDwyE50BgYGUr169RzXq1+/Punp6SQkJBASElLk/ysREZHy5OSZDO6a+yuHznYiMPAJJpofQPIFRUyswc4EoZtzS0WabvzWW2+RlJREnz59qFevXva2cOHC7Dbx8fHExMRk74eGhrJ8+XLWrFlDx44defbZZ5k1axY333xzdpuIiAg+/fRTPvjgA9q3b8/cuXNZuHAhV1xxRTG8xGIUNgTG74Y7vmZO0BPcmvEkM9sudvs3UUREpKxzZS3j1NRUgoKCWLlyJQ0aNOC+++7j/fff548//siz/datWzlw4ADVqlXD398ff39/atasSVpaGgcPHsxu9/777/Pbb7+xbds25s6dm2uEV4cOHfDz88ve79GjBykpKdnrHZ89exZfX98c57Rp0yb7OQcMGJDjsYULF7Jt2zY++eQTvvnmG15++eV8X3N0dDRLly7lxhtvpE2bNvzwww9kZmbicDjyPSc/VapUITU1tcjnSdlR0d4nBTk/wEA/syIiUtGlZdq5Z/4WDp1IpUGNKtx9zziMR5y5JW6e4/w6fleZyC0VebpxYebOnZvr2FVXXcW2bdsKPG/YsGEMGzasKOG4h8UDQnsRGNGUnxdsJ2F3Iv+JDLvkKSUiIiJFVcXLg6hnrnPbcxfV+bWM161bV+BaxjVr1uSBBx7Icaxp06Y0bdo0z/YOh4POnTvnWfzg/DRcgJ07d3LmzBksFgsJCQkujwo8/7e9du3anDp1Ksdjy5cvzy4ucuEUSnBOswQICwvDbrdzzz338O9//zvXyECAf/3rXwBERUUBztFa//nPf1yK72InT57M9/+qMtL7xMmd75OCnDx5MlcMIiIiFY1pmvzf57+x5fApqvl6MvfOrtT2P7fMRmgv9waXh6LPgxAArm4ViI+nhUMnUomKt9EmOMDdIYmISCVhGMYlTWUsbZeylvF5ed10vFinTp1YuHBhdiGFvJw8eZLRo0fzxBNPkJCQwG233ca2bdtyJPZ27tzJ2bNns4/9/PPP+Pv7ZydqwsPDc1WOdXV6pGmaZGZmFnqjtU+fPvTp06fQ63l7e+dbwXj37t3l44ZrKdH7xMmd7xNvb2+APH9md+/eTYMGDahdu7ZLr1VERKQ8+t+qP1i28wieFoN3bu9Ms8Bq7g6pQJdU3Vigqo8nfVo673wu3xXv5mhERETKngceeICPPvqITz75JHst44SEBM6ePVss17/tttuoXbs2Q4cOZf369URHR7N27VrGjRvHX3/9BTjXRm7YsCFPPvkkr776KqZp5hqpl5GRwZgxY4iKimLFihX897//5cEHH8yuMHzdddexZ8+eQkdJffzxxyxatIjff/+dP//8k88++4xJkyYxYsQIPD2LJ1nVuHFjNm/ezKFDhzh+/Hj2tORDhw4RFxfHNddcUyzPI6WnIr9PQkJCMAyDr7/+mmPHjpGSkpL92Pr16+nfv3+xvEYREZGy6LMtscz68QAAL9zYjohmZf/GmJKEl+H6dvUAWL4rwaWp2CIiIpWJK2sZXw4/Pz/WrVtHo0aNuOmmm2jdujV33XUXZ8+exWq1Mn/+fJYvX86HH36Ip6cnfn5+fPzxx7z33nssX748+zr9+vWjefPm9O7dm+HDhzN48GAmT56c/Xi7du3o0qULixYtKjAeT09Ppk+fTrdu3Wjfvj2TJ0/mgQce4L333iuW1wvwn//8Bw8PD8LCwqhTp072OtALFiygf//+KgBRDlXk90n9+vWZMmUKjz32GEFBQTz44IOAs/jKkiVLGDt2bLG8RhERkbJm44HjTPpiFwAP9G3K8K4N3RyRawyzgmS3bDYbAQEBJCUl5TuVorilpGfR6dlVZGQ5WDGuF63rlc7ziohI5ZGWlkZ0dDShoaFFKgogrhk9ejSnT5/myy+/LLDd8uXL+c9//sPu3buzR06VFenp6TRv3pwFCxbQs2fPPNsU9HPkjj7UpSooVr1XSk5xv0/eeOMNli5dynfffZdvG30/RUSkvDqQmMxNb27ElpbFoPb1mHVrOBaLe+tYuNrfK/sLtZRh/j6eXNWiDquijrJ8V7yShCIiIhXU9ddfz/79+4mLi8suTFJWHD58mCeeeCLfBKFIaXH1feLl5cVrr71WipGJiIiUjuMp6dw591dsaVl0DqnBy7d0cHuCsCiUJLxMA9vVY1XUUb7ZFc+Ea1uoyrGIiEgFNW7cOHeHkKcWLVrQokULd4chArj2PrnnnntKIRIREZHSlZZpZ+z8LcSePEujmn7MHtkZXy8Pd4dVJGVrvkw51K91IN4eFv48doY/jqYUfoKIiIiUGXPnzi10CqW4Zt26dQwePJjg4GAMwyjw//Xee+/FMAxmzJhRavHJpdP7REREpGB2h8m4T7ezPeY0AVW8+ODOrtTy93F3WEWmJOFlqubrRe8Wzgo13/x2xM3RiIiIiLjHmTNn6NChA6+//nqB7b788ks2b95McHBwKUUmIiIiUnJM02TKV3v4ds9RvD0svDOyM03r+Ls7rEuiJGExGNjeWeX4q9/iVeVYREREKqUBAwbw3HPPcdNNN+XbJi4ujgcffJCPP/4YLy+vUoxOREREpGS8vfZP5m86DMCrIzrQvUktN0d06ZQkLAbXhtXFx9NC9PEz7I6zuTscERERkTLH4XAwcuRIHn30Udq0aePSOenp6dhsthybiIiISFmxZPtfTF+5F4CnBoUxqH35nimhJGEx8Pfx5JqwIACW7YxzczQiIiIiZc/06dPx9PTk4YcfdvmcqVOnEhAQkL2VtcrSIiIiUok47BC9HnZ9DtHr2bDvKI9+9hsAd18ZypgrQ90c4OVTdeNiMqRDMN/8Fs9XO+OZNKB1uSpxLSIiIlKStm7dysyZM9m2bRuG4XofadKkSUyYMCF732azKVEoIiIipS9qGaycCLa/a1E0M2vRj5F4tR/K49e3dmNwxUcjCYtJn5Z1qObrSYItjV8OnXR3OCIiIiJlxvr160lMTKRRo0Z4enri6enJ4cOH+fe//03jxo3zPc/Hxwer1ZpjExERESlVUctg0agcCUKAQE7wtvcM/tc+psIMFFOSsJj4eHowoG1dAJbtVJVjERERkfNGjhzJb7/9xo4dO7K34OBgHn30Ub799lt3hyciIiKSN4fdOYKQ3EVqnXlBA6/vHne2qwCUJCxGQzrUB2D5rngyshxujkZEROQiF62j4u7OzOzZs+nTpw9WqxXDMDh9+rRb45HLk5KSkp0ABIiOjmbHjh3ExMRQq1Yt2rZtm2Pz8vKibt26tGzZ0r2BX6wMvU9OnjzJQw89RMuWLfHz86NRo0Y8/PDDJCUluS0mERGRSuXwxlwjCC9kYIItztmuAtCahMWoR9Na1Pb34XhKOhsOHOPqVkHuDklERMQpj3VUsAZD5HQIG+KWkFJTU4mMjCQyMpJJkya5JQYpPlu2bKFv377Z++fXErzjjjuYO3eum6IqojL2Pjly5AhHjhzh5ZdfJiwsjMOHD3Pfffdx5MgRPv/881KPR0REpNJJOVq87co4jSQsRh4Wg0Ht6wGwbIemHIuISBmRzzoq2OKdx6OWlcjTNm7cmBkzZuQ41rFjRyZPngzA+PHjeeyxx+jevXuJPL+Urj59+mCaZq4tvwThoUOHGD9+fKnGWKAy+D5p27YtixcvZvDgwTRt2pSrr76a559/nq+++oqsrKwSiUdEREQu4O/i4C9X25VxShIWsyEdgwH4LuooZzMqxpx0EREpxwpYRyX72MrH3D71WMStytH7JCkpCavViqenJgSJiIiUuJAIkr0DceTVRQDAAGt9CIkozahKjJKExSy8YXUa1qxCaoad73+vGMNNRUSkHCtkHRUq2DoqIpeknLxPTpw4wbPPPsu9997r1jhEREQqi3k/x/KflH8CYHJxBeNz+5HTwOJRuoGVECUJi5lhGAzp4BxNqCrHIiLidpVsHRWRS1IO3ic2m42BAwcSFhbGf//7X7fFISIiUlks3RHHf5ft4VtHN75pPR3DWi9nA2swDJ/vtvW9S4LmKZSAIR3q88bqg6zZl0hSaiYBfl7uDklERCorN66jYrFYMM2cczMyMzOL/XlELlsZf58kJycTGRmJv78/S5YswctLfUsREZGStGZfIv9etBOAO3qEMGjI9WCOdc4qSDnq7BOERFSYEYTnaSRhCWhZtxqt6lYj026yYne8u8MREZHKLCTCeZcz1/SI80puHZU6deoQH//330GbzUZ0dHSxP4/IZSvD7xObzUb//v3x9vZm2bJl+Pr6FnsMIiIi8reth0/xr4+2keUwGdwhmP8OboNhGM6EYGgvaDfM+bWCJQhBScISM7RjfQC+2B7n5khERKRSs3hA5PRzO6W7jsrVV1/Nhx9+yPr169m9ezd33HEHHh5/P09CQgI7duzgwIEDAOzatYsdO3Zw8uTJYo9FpEBl9H2SnJxM//79OXPmDHPmzMFms5GQkEBCQgJ2u/uLqIiIiFQ0fxxN5q65v3I2007vFnV45ZYOWCz53USseJQkLCE3hAdjGPBL9EliT6a6OxwREanMwoY410sp5XVUJk2aRO/evRk0aBDXX389N9xwA02bNs1+/O233yY8PJyxY8cC0Lt3b8LDw1m2bFmJxCNSoDL4Ptm6dSubN29m165dNGvWjHr16mVvsbGxJRKPiIhIZRV7MpWRczaTdDaT8EbVefv2Tnh7Vq60mWFevAhKIdatW8dLL73E1q1biY+PZ8mSJdxwww35th89ejTz5s3LdTwsLIw9e/YAMHfuXO68885cbc6ePevylAqbzUZAQABJSUlYrVbXXkwJu/29zWw4cJxHrmnBuGuauzscEREph9LS0oiOjiY0NPTypxk67BV+HRXJW0E/R2WxD5WfgmIttveK3idlQrH+7hMRESnE8ZR0bnl7E9HHz9A80J/P7utBdT9vd4dVbFzt7xU5JXrmzBk6dOjA66+/7lL7mTNnEh8fn73FxsZSs2ZNbrnllhztrFZrjnbx8fHlvkNwc+fzU47/yrUgtYiISKmrBOuoiFw2vU9EREQqleS0TEZ/8AvRx89Qv3oV5o/pVqEShEVR5OrGAwYMYMCAAS63DwgIICAgIHv/yy+/5NSpU7lGDhqGQd26dYsaTpl2XZu6+Hnv5vCJVLYePkWXxjXdHZKIiIiIiIiIiABnM+zcPW8Lu+Ns1KzqzYdjulEvoIq7w3KbUp9cPWfOHK655hpCQkJyHE9JSSEkJIQGDRowaNAgtm/fXuB10tPTsdlsObayxs/bkwFtnevaLN6mAiYiIiIiIiIiImVBRpaDf328lc3RJ/H38WTunV1pUsff3WG5VakmCePj41mxYgV33313juOtWrVi7ty5LFu2jAULFuDr60vPnj3Zv39/vteaOnVq9ijFgIAAGjZsWNLhX5LzU46//u0IaZmqQiciIiIiIiIi4k5ZdgfjPt3Omn3H8PWy8P7orrRvUN3dYbldqSYJ586dS/Xq1XMVOunevTu33347HTp0oFevXixatIgWLVrw2muv5XutSZMmkZSUlL2V1Qpv3UNrERzgS3JaFt//ftTd4YiIiIiIiIiIVFoOh8n/Lf6NFbsT8PawMHtkF7qFank4uIQ1CS+VaZq8//77jBw5Em/vgheAtFgsdO3atcCRhD4+Pvj4+BR3mMXOYjG4sVN93lh9kC+2xTGofbC7QxIRkXLI4XC4OwQpxyrTz4+KxVUMlelnVkRESpjDDoc3QspRTP9A/rvDyhfb4vCwGLz2z3B6t6jj7gjLjFJLEq5du5YDBw4wZsyYQtuapsmOHTto165dKURW8m7q1IA3Vh9k7R/HOJacTp1qZT+5KSIiZYO3tzcWi4UjR45Qp04dvL29MQzD3WFJOWGaJhkZGRw7dgyLxVLojdryzMvLC8MwOHbsGHXq1NH7pJyqTD+zIiJSCqKWwcqJYDsCgAH8y6zJMY9RRA67h+vaVKwCuperyEnClJQUDhw4kL0fHR3Njh07qFmzJo0aNWLSpEnExcUxf/78HOfNmTOHK664grZt2+a65pQpU+jevTvNmzfHZrMxa9YsduzYwRtvvHEJL6nsaVrHn44Nq7Mj9jRLd8Rxd68m7g5JRETKCYvFQmhoKPHx8Rw5csTd4Ug55efnR6NGjbBYSr1mXanx8PCgQYMG/PXXXxw6dMjd4chlqgw/syIiUsKilsGiUUDOWQZ1OclbXjMxfDoD9d0SWllV5CThli1b6Nu3b/b+hAkTALjjjjuYO3cu8fHxxMTE5DgnKSmJxYsXM3PmzDyvefr0ae655x4SEhIICAggPDycdevW0a1bt6KGV2bd3Kk+O2JP88U2JQlFRKRovL29adSoEVlZWdjtKoIlRePh4YGnp2elGFnn7+9P8+bNyczMdHcochkq08+siIiUEIfdOYKQ3MuQWM7/eVn5GLQaCBaPUg2tLDPMCrJwi81mIyAggKSkJKxWq7vDyeV0agZdn/+eTLvJinG9aF2v7MUoIiIilU9Z70NdqDzFKiIiIm4UvR7mDSq83R1fQ2ivko/HzVztQ2n8fimp7ufNNa2DAFi0pWxWYhYRERERERERKfdSjhZvu0pCScJSNLxrQwCWbI8jPUvTxUREREREREREip1/UPG2qySUJCxFvZvXoV6AL6dTM/luj7LVIiIiIiIiIiLFbWVKE+LNmjjyXWDPAGt9CIkozbDKPCUJS5GHxeCWzg0AWPirphyLiIiIiIiIiBSnVVFHeXDBTiZnjsIwwOTiQljn9iOnqWjJRZQkLGW3dGmIYcCGA8eJPZnq7nBERERERERERCqEH/ce5f6Pt5LlMPFpdwOOW+ZjWOvlbGQNhuHzIWyIe4IswzzdHUBl07CmHz2b1mbjgUQ2/fAlDVt5O+fAh0Qogy0iIiIiIiIicgnW/nGM+z7cRqbdZGC7erw6vAMeHuHQehAc3ugsUqL8S4GUJHSDccG/82LsFIL3nIQ95w5agyFyujLZIiIiIiIiIiJFsGH/ccbO30KG3UFkm7rMuLUjnh7nJs9aPCC0l3sDLCc03bi0RS2jyy/jqWuczHncFg+LRkHUMvfEJSIiIiIiIiJSzmw8cJwx834lI8vBNa2DmPWPcLw8lO66FPpfK00OO6yciIGZx3/8uZI7Kx9zthMRERERERERkXz9/OcJxszbQnqWg6tbBfLGbeF4eyrVdan0P1eaDm8E25ECGphgi3O2ExERERERERGRPP166CR3zf2Vs5l2rmpRhzdv64SPp9YavBxKEpamlKPF205EREREREREpJL5Jfoko9//hdQMO72a1+adkZ3x9VKC8HKpcElp8g8q3nYiIiIiIiIiIpXIpoMnskcQRjStxeyRXZQgLCYaSViaQiKcVYwx8mlggLW+s52IiIiIiIiIiGT76cBx7pz7C2cznSMI59zRlSreShAWFyUJS5PFAyKnn9vJmSg0z/8jcpqznYiIiIiIiIhIZeSwQ/R62PW586vDzro/jnHX3F9Jy3TQp2Ud3h3VRQnCYqYkYWkLGwLD54O1Xo7D8WYtbEPmOB8XERERKWfWrVvH4MGDCQ4OxjAMvvzyy+zHMjMzmThxIu3ataNq1aoEBwczatQojhwpqKCbiIiIVEpRy2BGW5g3CBaPgXmDSHspjEUfvkl6loN+rQK1BmEJUZLQHcKGwPjdcMfXcPMcngiYxpXpM/nI1sHdkYmIiIhckjNnztChQwdef/31XI+lpqaybds2nnrqKbZt28YXX3zBH3/8wZAhujkqIiIiF4haBotGgS3njUTv1ARmWV5lYsgfvHV7Z1UxLiEqXOIuFg8I7QVAx/RYPv78Nz7ZHMO9vZviYclvzUIRERGRsmnAgAEMGDAgz8cCAgJYtWpVjmOvvfYa3bp1IyYmhkaNGpVGiCIiIlKWOeywciIXLMiWzWI4j9539l0My8OlHlploZGEZcDgDsEEVPHir1NnWffHMXeHIyIiIlLikpKSMAyD6tWruzsUERERKQsOb8w1gvBCBmDY4pztpEQoSVgG+Hp5MKxzAwA++vmwm6MRERERKVlpaWk89thj/POf/8RqtebbLj09HZvNlmMTERGRCirlaPG2kyJTkrCMuO0K5zSbH/clEnsy1c3RiIiIiJSMzMxMbr31VhwOB2+++WaBbadOnUpAQED21rBhw1KKUkREREqdf1DxtpMiU5KwjGhSx58rm9XGNGHBLzHuDkdERESk2GVmZjJ8+HCio6NZtWpVgaMIASZNmkRSUlL2FhsbW0qRioiISKkLieCMTxCO3EsSnmOAtT6ERJRmVJWKkoRlyO3dnaMJF22JJSPL4eZoRERERIrP+QTh/v37+f7776lVq1ah5/j4+GC1WnNsIiIiUjG9te4QE5L/AeRVuuRcgdfIac5CsFIilCQsQ65pHUSQ1YfjKRms3JPg7nBEREREXJaSksKOHTvYsWMHANHR0ezYsYOYmBiysrIYNmwYW7Zs4eOPP8Zut5OQkEBCQgIZGRnuDVxERETcyjRNXv52H9NX7uVbRze+ajkdrME5G1mDYfh8CBviniArCU93ByB/8/SwcGvXRsz8YT8f/XyYIR2CCz9JREREpAzYsmULffv2zd6fMGECAHfccQeTJ09m2bJlAHTs2DHHeatXr6ZPnz6lFaaIiIiUIaZp8szXUXzw0yEAJka2YmifgeAY66xinHLUuQZhSIRGEJaCIo8kXLduHYMHDyY4OBjDMPjyyy8LbL9mzRoMw8i17d27N0e7xYsXExYWho+PD2FhYSxZsqSooVUI/+jWCA+LwS/RJ/k9XhX8REREpHzo06cPpmnm2ubOnUvjxo3zfMw0TSUIRUREKim7w+SxxbuyE4TPDG3Dv/o0dT5o8YDQXtBumPOrEoSloshJwjNnztChQwdef/31Ip23b98+4uPjs7fmzZtnP7Zp0yZGjBjByJEj2blzJyNHjmT48OFs3ry5qOGVe3UDfIlsUxeAuefeKCIiIiIiIiIiFUWm3cG4T7ezcEssFgNevqUDo3o0dndYlZ5hmma+dWMKPdkwWLJkCTfccEO+bdasWUPfvn05deoU1atXz7PNiBEjsNlsrFixIvtYZGQkNWrUYMGCBS7FYrPZCAgIICkpqdwvar3l0EmGvb0JH08Lmyb1o2ZVb3eHJCIiIhVUeepDladYRUREJG9pmXYe/GQb3/+eiJeHwcxbw7m+XT13h1WhudqHKrXCJeHh4dSrV49+/fqxevXqHI9t2rSJ/v375zh23XXXsXHjxnyvl56ejs1my7FVFJ1DatCufgDpWQ4W/BLj7nBERERERERERC7bmfQsxsz7le9/T8TH08LskV2UICxDSjxJWK9ePWbPns3ixYv54osvaNmyJf369WPdunXZbRISEggKCspxXlBQEAkJ+Vf4nTp1KgEBAdlbw4YNS+w1lDbDMLizZ2MAPtx0mEy7w70BiYiIiIiIiIhchlNnMrjtvc38dOAEVb09mHtnN/q2CnR3WHKBEq9u3LJlS1q2bJm936NHD2JjY3n55Zfp3bt39nHDMHKcZ5pmrmMXmjRpUnbVPHAOnaxIicKB7evxwvK9JNjSWLE7QZWORURERERERKRcOnL6LKPe/4UDiSlU9/Pig9FdCW9Uw91hyUVKbbrxhbp3787+/fuz9+vWrZtr1GBiYmKu0YUX8vHxwWq15tgqEh9PD27v3giAD36KdnM0IiIiIiIiIiJFdyAxhWFvbeRAYgr1Anz57N4eShCWUW5JEm7fvp169f6ec96jRw9WrVqVo813331HREREaYdWptx2RQjeHha2x5xmR+xpd4cjIiIiIiIiIpI/hx2i18OuzyF6PTsPn+CWtzdyJCmNJnWq8vm/ImgeVM3dUUo+ijzdOCUlhQMHDmTvR0dHs2PHDmrWrEmjRo2YNGkScXFxzJ8/H4AZM2bQuHFj2rRpQ0ZGBh999BGLFy9m8eLF2dcYN24cvXv3Zvr06QwdOpSlS5fy/fffs2HDhmJ4ieVXnWo+DOpQjy+2xfHBT9HMvDXc3SGJiIiIiIiIiOQWtQxWTgTbkexDgWZNumWOIr7BtXwwuiu1/H3cGKAUpsgjCbds2UJ4eDjh4c6E1YQJEwgPD+fpp58GID4+npiYvyvyZmRk8J///If27dvTq1cvNmzYwDfffMNNN92U3SYiIoJPP/2UDz74gPbt2zN37lwWLlzIFVdccbmvr9y7q2coAN/8Fs9RW5qboxERERERERERuUjUMlg0KkeCECCIk7ztPYOFvY8pQVgOGKZpmu4OojjYbDYCAgJISkqqcOsT3vL2Rn49dIqHrm7Gv/u3LPwEEREREReVpz5UeYpVRESk0nDYYUbbXAnC80wMDGswjN8FFo9SDk7A9T6UW9YklKK589xowo83x3A2w+7maEREREREREREzjm8Md8EIYCBCbY4Zzsp05QkLAf6hwXRoEYVTp7J4PNtf7k7HBERERERERERp5SjxdtO3EZJwnLA08PC3Vc6RxO+t/5P7I4KMUNcRERERERERMq5jCp1XGvoH1SygchlU5KwnBjetSHV/bw4fCKV7/YkuDscEREREREREankTp3J4LbvLBwxa5L/eCYDrPUhJKI0Q5NLoCRhOeHn7cnI7iEAvLPuTypIvRkRERERERERKYdiT6Zy89sb+TXGxkvGnRiGARgXtTq3HzlNRUvKASUJy5FRPRrj7WlhR+xpfj10yt3hiIiIiIiIiEgltDsuiRvf3Mifx84QHODLv/71CMbw+WCtl7OhNRiGz4ewIe4JVIrE090BiOvqVPPh5k4NWPBLDLPXHaRbaE13hyQiIiIiIiIilcjaP45x/0dbOZNhp1Xdasy7qxtBVl8IGgKtBjqrGKccda5BGBKhEYTliJKE5czYXqF8+msM3/+eyP6jyTQPqubukERERERERESkEvhsSyyTvthFlsOkZ7NavH17Z6r5ev3dwOIBob3cF6BcFk03Lmea1PGnf5izItC76/90czQiIiIiIiIiUtGZpslrP+zn0c9/I8thcmN4fT4Y3S1nglDKPSUJy6F7ejcF4MvtR0i0pbk5GhERERERERGpqLLsDh5fsptXVv0BwL/6NOXV4R3w9lRKqaLRd7Qc6hxSgy4hNciwO3j/p0PuDkdEREREREREKqDktEzGzNvCgl9iMAx4ZmgbJka2OlfJWCoaJQnLqXuvco4m/PjnwySdzXRzNCIiIiIiIiJSkcSdPsstb29i7R/H8PWy8PbtnRnVo7G7w5ISpCRhOdWvVSAtg6qRnJ7F/I2H3B2OiIiIiIiIiJRHDjtEr4ddnzu/OuzsjD3N0Nd/Ym9CMnWq+fDZvRFc16auuyOVEqbqxuWUxWLwwNXNeHjBdj7YcIC7G8ZRJf24SoyLiIiIiIiIiGuilsHKiWA7kn3obJW6vJfyT45ndqFV3WrMGd2V+tWruDFIKS1KEpZjA9vVY8uKedx3djZVPjn59wPWYIicDmFD3BeciIiIiIiIiJRdUctg0SjAzHHYJzWBmZZXadHwaUaPeVgVjCsRTTcuxzz2fsWUtOnU5WTOB2zxzjd61DL3BCYiIiIiIiIiZZfD7hxBeFGCEMBigGHAg+lzqOattFFlou92eXXBG9qSq6jQuTf5ysec7UREREREREREzju8MccU44sZgGGLc7aTSkNJwvLq3Bs6/6LjJugNLSIiIiIiIiIXSzlavO2kQlCSsLzSG1pERERERERELoV/UPG2kwpBScLySm9oEREREREREbkEnx1rSLxZE0fuJQnPMcBaH0IiSjMscTMlCcurkAhnFeN8JxzrDS0iIiIiIiIif8uyO3j26yge/WIPkzNHYRhg5sornNuPnAYWj1KPUdxHScLyyuIBkdPP7eR8Qzs4V7pEb2gRERERERERAZLOZnLXvC3M2RANQKu+t2HeMh/DWi9nQ2swDJ8PYUPcEKW4k6e7A5DLEDbE+cZdOTFHVaIEsxax3Z7iCr2hRURERERERCq9P4+lcPf8Lfx57Ay+XhZeuaUjA9vXA1pA60HOoqcpR51LloVEaMBRJVXkkYTr1q1j8ODBBAcHYxgGX375ZYHtv/jiC6699lrq1KmD1WqlR48efPvttznazJ07F8Mwcm1paWlFDa/yCRsC43fDHV/DzXP4ssM7XJk+k4lRjcmyO9wdnYiIiFQShfURTdNk8uTJBAcHU6VKFfr06cOePXvcE6yIiEglsu6PY9zwxk/8eewMwQG+fH5fxLkE4TkWDwjtBe2GOb8qQVhpFTlJeObMGTp06MDrr7/uUvt169Zx7bXXsnz5crZu3Urfvn0ZPHgw27dvz9HOarUSHx+fY/P19S1qeJXTBW/oa68fRvWqvhw6kcoX2+LcHZmIiIhUEoX1EV988UVeffVVXn/9dX799Vfq1q3LtddeS3JycilHKiIiUjmYpsn7G6IZ/cEv2NKy6NSoOksfvJK29QPcHZqUUUWebjxgwAAGDBjgcvsZM2bk2H/hhRdYunQpX331FeHh4dnHDcOgbt26RQ1HLlLVx5P7rmrCC8v3MuvH/dwQXh9vTy09KSIiIiWroD6iaZrMmDGDJ554gptuugmAefPmERQUxCeffMK9995bmqGKiIhUeBlZDp5euptPf40FYFjnBjx/Y1t8PDVKUPJX6tkjh8NBcnIyNWvWzHE8JSWFkJAQGjRowKBBg3KNNBTXjezemNr+Pvx16iyfbY11dzgiIiJSyUVHR5OQkED//v2zj/n4+HDVVVexcePGfM9LT0/HZrPl2ERERKRgiclp/PPdn/n011gsBjw5sDUvDWuvBKEUqtSThK+88gpnzpxh+PDh2cdatWrF3LlzWbZsGQsWLMDX15eePXuyf//+fK+jTmP+qnh7cH+fpgC8/uMB0rPsbo5IREREKrOEhAQAgoKCchwPCgrKfiwvU6dOJSAgIHtr2LBhicYpIiJSbjjsEL0edn3u/Opwfu7fevgUg2ZtYMvhU1Tz8WTO6K7c3asJhmG4OWApD0q1uvGCBQuYPHkyS5cuJTAwMPt49+7d6d69e/Z+z5496dSpE6+99hqzZs3K81pTp05lypQpJR5zefXPKxrxzrqDxCel8ekvsdwR0djdIYmIiEgld/EHFNM0C/zQMmnSJCZMmJC9b7PZlCgUERGJWgYrJ4LtyN/HrMGsa/ooY36pS6bdpHmgP++M7EyTOv7ui1PKnVIbSbhw4ULGjBnDokWLuOaaawpsa7FY6Nq1a4EjCSdNmkRSUlL2FhurabUX8vXy4MG+zQB4Y/UB0jI1mlBERETc4/y60xePGkxMTMw1uvBCPj4+WK3WHJuIiEilFrUMFo3KmSAETNsRrtz2CFebmxnQti5LHuipBKEUWakkCRcsWMDo0aP55JNPGDhwYKHtTdNkx44d1KtXL9826jQWbnjXhtSvXoXE5HQ+3HTY3eGIiIhIJRUaGkrdunVZtWpV9rGMjAzWrl1LRESEGyMTEREpRxx25whCzFwPnR+X/3K1Bbz5jw74+5TqxFGpIIqcJExJSWHHjh3s2LEDcC5EvWPHDmJiYgDnCL9Ro0Zlt1+wYAGjRo3ilVdeoXv37iQkJJCQkEBSUlJ2mylTpvDtt9/y559/smPHDsaMGcOOHTu47777LvPlVW4+nh483O/caMI1B7ClZbo5IhEREamoCuojGobB+PHjeeGFF1iyZAm7d+9m9OjR+Pn58c9//tO9gYuIiJQXhzfmGkF4IYsB1dKPYsRsKsWgpCIpcpJwy5YthIeHEx4eDsCECRMIDw/n6aefBiA+Pj47YQjwzjvvkJWVxQMPPEC9evWyt3HjxmW3OX36NPfccw+tW7emf//+xMXFsW7dOrp163a5r6/Su7lTA5oF+nM6NZN31h50dzgiIiJSQRXWR/y///s/xo8fz/3330+XLl2Ii4vju+++o1q1au4MW0REpPxIOVq87UQuYpimmXucajlks9kICAggKSlJU48v8u2eBO79cCu+XhbWPtqXIKuvu0MSERGRMqI89aHKU6wiIiLFLno9zBtUeLs7vobQXiUfj5QbrvahSq1wibhP/7AgOjWqTlqmgxnf518MRkRERERERETKpsP+HThm1MaR71AvA6z1IUTr/cqlUZKwEjAMg8cGtAZg0ZZYDh5LcXNEIiIiIiIiIuKqb/ckMOiNTTyZfjsYYGaXKjnv3H7kNLB4lHp8UjEoSVhJdAutyTWtA7E7TF7+dp+7wxERERERERGRQmTZHbyw/Hfu/XAryWlZnGh4HUmD3sew1svZ0BoMw+dD2BD3BCoVgmpiVyKPXteKH/YmsmJ3AttjThHeqIa7QxIRERERERGRPCTa0njwk+38cugkAHdfGcrEAa3w8rBApxuc1Y5TjoJ/kHOKsUYQymXSSMJKpGXdatzcqQEA01bspYLUrBERERERERGpUDYePM71szbwy6GT+Pt48tZtnXhyUJgzQQjOhGBoL2g3zPlVCUIpBkoSVjKPXNsCb08Lm6NPsnpforvDEREREREREZFzHA6TN1Yf4Pb3NnM8JZ1Wdavx1UNXMqBdvcJPFrlMShJWMvWrV+HOiMYAPPfN72TaHe4NSERERERERERISs1k7PwtvPTtPhwmDOvcgCX39yS0dlV3hyaVhJKEldADVzejVlVv/jx2ho9/PuzucEREREREREQqtR2xpxn42np+2JuIt6eF6Te346Vh7anirWnEUnqUJKyErL5ePHJtCwD+9/1+TqdmuDkiERERERERkUrAYYfo9bDrc4hejyMri3fX/cmwtzby16mzNKrpxxf/imBE10YYhuHuaKWSUXXjSurWrg35cNNh9h1NZuYP+/nv4DbuDklERERERESk4opaBisngu1I9qHTHrXZcvZ2shzdGNiuHlNvbofV18uNQUplppGE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218Mef0nhr29iW/3HMU0oWrzXqT71cXMp4yis5BifefgBhERN9NIQqn4wobA8PnOBYMvWA/EsAaT1OdZEn+uS1LMaUbN+YXnb2zLiK6N3BisiIiIiIiUGQ67c13BlKPO0X4hEc6BCOccS07n482H+ejnGI6npAPg7Wnhxo71GdMrlBZB1SDqpXPVjQ1yzm46lziMnJbjmiIi7qIkoVQOYUOg1cBcf+ADLB4saGfn0c9/46udR5i4eBcHj51hYmQrPCz53e0TEREREZEKL2pZroEGWIMhcjq7A67i/Z+i+XpnPBl2BwBBVh9G9WjMP7o1ombVC+YY5zNowXmtac7HRUTKgEuabvzmm28SGhqKr68vnTt3Zv369fm2XbNmDYZh5Nr27t2bo93ixYsJCwvDx8eHsLAwlixZcimhieTP4gGhvaDdMOfXc3frfL08mHVrR8Zf0xyA2ev+5O55v5KUmunOaEVERERExF2iljlH/11Umdi0xWMuGslrb7zKF9viyLA76NiwOrP+Ec6GiVfzQN9mOROE54UNgfG74Y6v4eY5zq/jdylBKCJlSpGThAsXLmT8+PE88cQTbN++nV69ejFgwABiYmIKPG/fvn3Ex8dnb82bN89+bNOmTYwYMYKRI0eyc+dORo4cyfDhw9m8eXPRX5HIJTAMg/HXtGDmrR3x8bSwet8xhryxgb0JNneHJiIiIiIipclhd476y6PwoYGJacJ/vT5kaPsgltwfwZcP9GRIh2C8PAr5eJ3PoAURkbLCME0z92++AlxxxRV06tSJt956K/tY69atueGGG5g6dWqu9mvWrKFv376cOnWK6tWr53nNESNGYLPZWLFiRfaxyMhIatSowYIFC1yKy2azERAQQFJSElartSgvSSSH3XFJ3PvhVuJOn6WKlwcvDmvP4A7B7g5LRESkRJSnPlR5ilVEyrHo9TBvUOHt7vjamewTESnjXO1DFWkkYUZGBlu3bqV///45jvfv35+NGzcWeG54eDj16tWjX79+rF69OsdjmzZtynXN6667rtBripSEtvUD+OqhK7myWW3OZtp5aMF2nv8miqxza42IiIiIiEjFlJZp59fdUa41TjlassGIiJSyIiUJjx8/jt1uJygoKMfxoKAgEhIS8jynXr16zJ49m8WLF/PFF1/QsmVL+vXrx7p167LbJCQkFOmaAOnp6dhs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", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -416,16 +373,16 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "{Variable(0x7456bacb36d28b68, u, children=[], domain=[], auxiliary_domains={}): Multiplication(0x76b039596794144b, *, children=['-a', 'y[0:1]'], domain=[], auxiliary_domains={})}" + "{Variable(-0x5fac921fa1fcf102, u, children=[], domains={}): Multiplication(-0x539f7b6bea36b8da, *, children=['-a', 'y[0:1]'], domains={})}" ] }, - "execution_count": 12, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -447,7 +404,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -467,7 +424,7 @@ "parameter_values = pybamm.ParameterValues({\"a\": 4, \"b\": 3})\n", "parameters = {\"a\": a, \"b\": b, \"a + b\": a + b, \"a * b\": a * b}\n", "param_eval = parameter_values.print_parameters(parameters)\n", - "for name, (value,C_dependence) in param_eval.items():\n", + "for name, value in param_eval.items():\n", " print(\"{}: {}\".format(name, value))" ] }, @@ -489,7 +446,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -499,7 +456,7 @@ "[1] Joel A. E. Andersson, Joris Gillis, Greg Horn, James B. Rawlings, and Moritz Diehl. CasADi – A software framework for nonlinear optimization and optimal control. Mathematical Programming Computation, 11(1):1–36, 2019. doi:10.1007/s12532-018-0139-4.\n", "[2] Charles R. Harris, K. Jarrod Millman, Stéfan J. van der Walt, Ralf Gommers, Pauli Virtanen, David Cournapeau, Eric Wieser, Julian Taylor, Sebastian Berg, Nathaniel J. Smith, and others. Array programming with NumPy. Nature, 585(7825):357–362, 2020. doi:10.1038/s41586-020-2649-2.\n", "[3] Scott G. Marquis, Valentin Sulzer, Robert Timms, Colin P. Please, and S. Jon Chapman. An asymptotic derivation of a single particle model with electrolyte. Journal of The Electrochemical Society, 166(15):A3693–A3706, 2019. doi:10.1149/2.0341915jes.\n", - "[4] Valentin Sulzer, Scott G. Marquis, Robert Timms, Martin Robinson, and S. Jon Chapman. Python Battery Mathematical Modelling (PyBaMM). ECSarXiv. February, 2020. doi:10.1149/osf.io/67ckj.\n", + "[4] Valentin Sulzer, Scott G. Marquis, Robert Timms, Martin Robinson, and S. Jon Chapman. Python Battery Mathematical Modelling (PyBaMM). Journal of Open Research Software, 9(1):14, 2021. doi:10.5334/jors.309.\n", "[5] Pauli Virtanen, Ralf Gommers, Travis E. Oliphant, Matt Haberland, Tyler Reddy, David Cournapeau, Evgeni Burovski, Pearu Peterson, Warren Weckesser, Jonathan Bright, and others. SciPy 1.0: fundamental algorithms for scientific computing in Python. Nature Methods, 17(3):261–272, 2020. doi:10.1038/s41592-019-0686-2.\n", "\n" ] @@ -512,7 +469,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3.9.13 ('conda_jl')", "language": "python", "name": "python3" }, @@ -526,7 +483,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.0" + "version": "3.9.13" }, "toc": { "base_numbering": 1, @@ -540,6 +497,11 @@ "toc_position": {}, "toc_section_display": true, "toc_window_display": true + }, + "vscode": { + "interpreter": { + "hash": "612adcc456652826e82b485a1edaef831aa6d5abc680d008e93d513dd8724f14" + } } }, "nbformat": 4, diff --git a/examples/notebooks/parameterization/parameterization.ipynb b/examples/notebooks/parameterization/parameterization.ipynb index 87b1bc8d54..08efbe12e5 100644 --- a/examples/notebooks/parameterization/parameterization.ipynb +++ b/examples/notebooks/parameterization/parameterization.ipynb @@ -1,1743 +1,1743 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Parameterisation\n", - "\n", - "In this notebook, we show how to find which parameters are needed in a model and define them.\n", - "\n", - "For other notebooks about parameterization, see:\n", - "\n", - "- The API documentation of [Parameters](https://pybamm.readthedocs.io/en/latest/source/parameters/index.html) can be found at [pybamm.readthedocs.io](https://pybamm.readthedocs.io/)\n", - "- [Setting parameter values](https://github.com/pybamm-team/PyBaMM/blob/develop/examples/notebooks/Getting%20Started/Tutorial%204%20-%20Setting%20parameter%20values.ipynb) can be found at `pybamm/examples/notebooks/Getting Started/Tutorial 4 - Setting parameter values.ipynb`. This explains the basics of how to set the parameters of a model (in less detail than here).\n", - "- [parameter-management.ipynb](https://github.com/pybamm-team/PyBaMM/blob/develop/examples/notebooks/parameterization/parameter-management.ipynb) can be found at `pybamm/examples/notebooks/parameterization/parameter-management.ipynb`. This explains how to add and edit parameters in the `pybamm/input` directories\n", - "- [parameter-values.ipynb](https://github.com/pybamm-team/PyBaMM/blob/develop/examples/notebooks/parameterization/parameter-values.ipynb) can be found at `pybamm/examples/notebooks/parameterization/parameter-values.ipynb`. This explains the basics of the `ParameterValues` class.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Adding your own parameter sets (using a dictionary)\n", - "\n", - "We will be using the model defined and explained in more detail in [3-negative-particle-problem.ipynb](https://github.com/pybamm-team/PyBaMM/blob/develop/examples/notebooks/Creating%20Models/3-negative-particle-problem.ipynb) example notebook. We begin by importing the required libraries" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install pybamm -q # install PyBaMM if it is not installed\n", - "import pybamm\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setting up the model\n", - "\n", - "We define all the parameters and variables using `pybamm.Parameter` and `pybamm.Variable` respectively." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "c = pybamm.Variable(\"Concentration [mol.m-3]\", domain=\"negative particle\")\n", - "\n", - "R = pybamm.Parameter(\"Particle radius [m]\")\n", - "D = pybamm.FunctionParameter(\"Diffusion coefficient [m2.s-1]\", {\"Concentration [mol.m-3]\": c})\n", - "j = pybamm.InputParameter(\"Interfacial current density [A.m-2]\")\n", - "c0 = pybamm.Parameter(\"Initial concentration [mol.m-3]\")\n", - "c_e = pybamm.Parameter(\"Electrolyte concentration [mol.m-3]\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we define our model equations, boundary and initial conditions. We also add the variables required using the dictionary `model.variables`" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "model = pybamm.BaseModel()\n", - "\n", - "# governing equations\n", - "N = -D * pybamm.grad(c) # flux\n", - "dcdt = -pybamm.div(N)\n", - "model.rhs = {c: dcdt} \n", - "\n", - "# boundary conditions \n", - "lbc = pybamm.Scalar(0)\n", - "rbc = -j\n", - "model.boundary_conditions = {c: {\"left\": (lbc, \"Neumann\"), \"right\": (rbc, \"Neumann\")}}\n", - "\n", - "# initial conditions \n", - "model.initial_conditions = {c: c0}\n", - "\n", - "model.variables = {\n", - " \"Concentration [mol.m-3]\": c,\n", - " \"Surface concentration [mol.m-3]\": pybamm.surf(c),\n", - " \"Flux [mol.m-2.s-1]\": N,\n", - "}\n", - "\n", - "model.length_scales = {\"negative particle\": pybamm.Scalar(1)}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We also define the geometry, since there are parameters in the geometry too" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "r = pybamm.SpatialVariable(\"r\", domain=[\"negative particle\"], coord_sys=\"spherical polar\")\n", - "geometry = pybamm.Geometry({\"negative particle\": {r: {\"min\": pybamm.Scalar(0), \"max\": R}}})" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Finding the parameters required" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To know what parameters are required by the model and geometry, we can do" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Initial concentration [mol.m-3] (Parameter)\n", - "Interfacial current density [A.m-2] (InputParameter)\n", - "Diffusion coefficient [m2.s-1] (FunctionParameter with input(s) 'Concentration [mol.m-3]')\n", - "\n", - "Particle radius [m] (Parameter)\n" - ] - } - ], - "source": [ - "model.print_parameter_info()\n", - "geometry.print_parameter_info()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This tells us that we need to provide parameter values for the initial concentration and Faraday constant, an `InputParameter` at solve time for the interfacial current density, and diffusivity as a function of concentration. Since the electrolyte concentration does not appear anywhere in the model, there is no need to provide a value for it." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Adding the parameters\n", - "\n", - "Now we can proceed to the step where we add the `parameter` values using a dictionary. We set up a dictionary with parameter names as the dictionary keys and their respective values as the dictionary values." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "def D_fun(c):\n", - " return 3.9 #* pybamm.exp(-c)\n", - "\n", - "values = {\n", - " \"Particle radius [m]\": 2,\n", - " \"Diffusion coefficient [m2.s-1]\": D_fun,\n", - " \"Initial concentration [mol.m-3]\": 2.5,\n", - "}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can pass this dictionary in `pybamm.ParameterValues` class which accepts a dictionary of parameter names and values. We can then print `param` to check if it was initialised." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Diffusion coefficient [m2.s-1]': ,\n", - " 'Initial concentration [mol.m-3]': 2.5,\n", - " 'Particle radius [m]': 2}" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "param = pybamm.ParameterValues(values)\n", - "\n", - "param" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Updating the parameter values\n", - "\n", - "The parameter values or `param` can be further updated by using the `update` function of `ParameterValues` class. The `update` function takes a dictionary with keys being the parameters to be updated and their respective values being the updated values. Here we update the `\"Particle radius [m]\"` parameter's value. Additionally, a function can also be passed as a `parameter`'s value which we will see ahead, and a new `parameter` can also be added by passing `check_already_exists=False` in the `update` function." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Diffusion coefficient [m2.s-1]': ,\n", - " 'Initial concentration [mol.m-3]': 1.5,\n", - " 'Particle radius [m]': 2}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "param.update({\"Initial concentration [mol.m-3]\": 1.5})\n", - "param" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Solving the model " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Finding the parameters in a model\n", - "\n", - "The `parameter` function of the `BaseModel` class can be used to obtain the parameters of a model." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[FunctionParameter(-0x3c6644568af7f737, Diffusion coefficient [m2.s-1], children=['Concentration [mol.m-3]'], domains={'primary': ['negative particle']}),\n", - " Parameter(-0x20b800b0346146aa, Initial concentration [mol.m-3], children=[], domains={}),\n", - " InputParameter(-0x3fa3c2033279cec1, Interfacial current density [A.m-2], children=[], domains={})]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "parameters = model.parameters\n", - "parameters" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As explained in the [3-negative-particle-problem.ipynb](https://github.com/pybamm-team/PyBaMM/blob/develop/examples/notebooks/Creating%20Models/3-negative-particle-problem.ipynb) example, we first process both the `model` and the `geometry`." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "param.process_model(model)\n", - "param.process_geometry(geometry)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can now set up our mesh, choose a spatial method, and discretise our model" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "submesh_types = {\"negative particle\": pybamm.Uniform1DSubMesh}\n", - "var_pts = {r: 20}\n", - "mesh = pybamm.Mesh(geometry, submesh_types, var_pts)\n", - "\n", - "spatial_methods = {\"negative particle\": pybamm.FiniteVolume()}\n", - "disc = pybamm.Discretisation(mesh, spatial_methods)\n", - "disc.process_model(model);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We choose a solver and times at which we want the solution returned, and solve the model. Here we give a value for the current density `j`." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# solve\n", - "solver = pybamm.ScipySolver()\n", - "t = np.linspace(0, 3600, 600)\n", - "solution = solver.solve(model, t, inputs={\"Interfacial current density [A.m-2]\": 1.4})\n", - "\n", - "# post-process, so that the solution can be called at any time t or space r\n", - "# (using interpolation)\n", - "c = solution[\"Concentration [mol.m-3]\"]\n", - "c_surf = solution[\"Surface concentration [mol.m-3]\"]\n", - "\n", - "# plot\n", - "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13, 4))\n", - "\n", - "ax1.plot(solution.t, c_surf(solution.t))\n", - "ax1.set_xlabel(\"Time [s]\")\n", - "ax1.set_ylabel(\"Surface concentration [mol.m-3]\")\n", - "\n", - "rsol = mesh[\"negative particle\"].nodes # radial position\n", - "time = 1000 # time in seconds\n", - "ax2.plot(rsol * 1e6, c(t=time, r=rsol), label=\"t={}[s]\".format(time))\n", - "ax2.set_xlabel(\"Particle radius [microns]\")\n", - "ax2.set_ylabel(\"Concentration [mol.m-3]\")\n", - "ax2.legend()\n", - "\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Using pre-defined models in `PyBaMM`\n", - "\n", - "In the next few steps, we will be showing the same workflow with the Single Particle Model (`SPM`). We will also see how you can pass a function as a `parameter`'s value and how to plot such `parameter functions`.\n", - "\n", - "We start by initializing our model" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "spm = pybamm.lithium_ion.SPM()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Finding the parameters in a model\n", - "\n", - "We can print the `parameters` of a model by using the `get_parameters_info` function." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Maximum concentration in positive electrode [mol.m-3] (Parameter)\n", - "Negative electrode Bruggeman coefficient (electrolyte) (Parameter)\n", - "Negative electrode thickness [m] (Parameter)\n", - "Positive electrode Bruggeman coefficient (electrode) (Parameter)\n", - "Positive electrode electrons in reaction (Parameter)\n", - "Initial temperature [K] (Parameter)\n", - "Typical current [A] (Parameter)\n", - "Number of electrodes connected in parallel to make a cell (Parameter)\n", - "Electrode width [m] (Parameter)\n", - "Lower voltage cut-off [V] (Parameter)\n", - "Upper voltage cut-off [V] (Parameter)\n", - "Maximum concentration in negative electrode [mol.m-3] (Parameter)\n", - "Nominal cell capacity [A.h] (Parameter)\n", - "Separator thickness [m] (Parameter)\n", - "Negative electrode Bruggeman coefficient (electrode) (Parameter)\n", - "Positive electrode Bruggeman coefficient (electrolyte) (Parameter)\n", - "Number of cells connected in series to make a battery (Parameter)\n", - "Typical electrolyte concentration [mol.m-3] (Parameter)\n", - "Separator Bruggeman coefficient (electrolyte) (Parameter)\n", - "Electrode height [m] (Parameter)\n", - "Positive electrode thickness [m] (Parameter)\n", - "Negative electrode electrons in reaction (Parameter)\n", - "Reference temperature [K] (Parameter)\n", - "Positive electrode OCP entropic change [V.K-1] (FunctionParameter with input(s) 'Positive particle stoichiometry', 'Positive particle maximum concentration [mol.m-3]')\n", - "Positive particle radius [m] (FunctionParameter with input(s) 'Through-cell distance (x) [m]')\n", - "Initial concentration in negative electrode [mol.m-3] (FunctionParameter with input(s) 'Radial distance (r) [m]', 'Through-cell distance (x) [m]')\n", - "Positive electrode OCP [V] (FunctionParameter with input(s) 'Positive particle stoichiometry')\n", - "Positive electrode diffusivity [m2.s-1] (FunctionParameter with input(s) 'Positive particle stoichiometry', 'Temperature [K]')\n", - "Negative electrode OCP [V] (FunctionParameter with input(s) 'Negative particle stoichiometry')\n", - "Negative electrode OCP entropic change [V.K-1] (FunctionParameter with input(s) 'Negative particle stoichiometry', 'Negative particle maximum concentration [mol.m-3]')\n", - "Negative electrode exchange-current density [A.m-2] (FunctionParameter with input(s) 'Electrolyte concentration [mol.m-3]', 'Negative particle surface concentration [mol.m-3]', 'Negative particle maximum concentration [mol.m-3]', 'Temperature [K]')\n", - "Negative electrode diffusivity [m2.s-1] (FunctionParameter with input(s) 'Negative particle stoichiometry', 'Temperature [K]')\n", - "Initial concentration in positive electrode [mol.m-3] (FunctionParameter with input(s) 'Radial distance (r) [m]', 'Through-cell distance (x) [m]')\n", - "Positive electrode exchange-current density [A.m-2] (FunctionParameter with input(s) 'Electrolyte concentration [mol.m-3]', 'Positive particle surface concentration [mol.m-3]', 'Positive particle maximum concentration [mol.m-3]', 'Temperature [K]')\n", - "Negative electrode active material volume fraction (FunctionParameter with input(s) 'Through-cell distance (x) [m]')\n", - "Separator porosity (FunctionParameter with input(s) 'Through-cell distance (x) [m]')\n", - "Current function [A] (FunctionParameter with input(s) 'Time [s]')\n", - "Negative electrode porosity (FunctionParameter with input(s) 'Through-cell distance (x) [m]')\n", - "Positive electrode active material volume fraction (FunctionParameter with input(s) 'Through-cell distance (x) [m]')\n", - "Ambient temperature [K] (FunctionParameter with input(s) 'Time [s]')\n", - "Positive electrode porosity (FunctionParameter with input(s) 'Through-cell distance (x) [m]')\n", - "Negative particle radius [m] (FunctionParameter with input(s) 'Through-cell distance (x) [m]')\n", - "\n" - ] - } - ], - "source": [ - "spm.print_parameter_info()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that there are no `InputParameter` objects in the default SPM. Also, note that if a `FunctionParameter` is expected, it is ok to provide a scalar (parameter) instead. However, if a `Parameter` is expected, you cannot provide a function instead." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Another way to view what parameters are needed is to print the default parameter values. This can also be used to get some good defaults (but care must be taken when combining parameters across datasets and chemistries)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Negative electrode thickness [m]': 0.0001,\n", - " 'Separator thickness [m]': 2.5e-05,\n", - " 'Positive electrode thickness [m]': 0.0001,\n", - " 'Electrode height [m]': 0.137,\n", - " 'Electrode width [m]': 0.207,\n", - " 'Nominal cell capacity [A.h]': 0.680616,\n", - " 'Typical current [A]': 0.680616,\n", - " 'Current function [A]': 0.680616,\n", - " 'Maximum concentration in negative electrode [mol.m-3]': 24983.2619938437,\n", - " 'Negative electrode diffusivity [m2.s-1]': ,\n", - " 'Negative electrode OCP [V]': ,\n", - " 'Negative electrode porosity': 0.3,\n", - " 'Negative electrode active material volume fraction': 0.6,\n", - " 'Negative particle radius [m]': 1e-05,\n", - " 'Negative electrode Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Negative electrode Bruggeman coefficient (electrode)': 1.5,\n", - " 'Negative electrode electrons in reaction': 1.0,\n", - " 'Negative electrode exchange-current density [A.m-2]': ,\n", - " 'Negative electrode OCP entropic change [V.K-1]': ,\n", - " 'Maximum concentration in positive electrode [mol.m-3]': 51217.9257309275,\n", - " 'Positive electrode diffusivity [m2.s-1]': ,\n", - " 'Positive electrode OCP [V]': ,\n", - " 'Positive electrode porosity': 0.3,\n", - " 'Positive electrode active material volume fraction': 0.5,\n", - " 'Positive particle radius [m]': 1e-05,\n", - " 'Positive electrode Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Positive electrode Bruggeman coefficient (electrode)': 1.5,\n", - " 'Positive electrode electrons in reaction': 1.0,\n", - " 'Positive electrode exchange-current density [A.m-2]': ,\n", - " 'Positive electrode OCP entropic change [V.K-1]': ,\n", - " 'Separator porosity': 1.0,\n", - " 'Separator Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Typical electrolyte concentration [mol.m-3]': 1000.0,\n", - " 'Reference temperature [K]': 298.15,\n", - " 'Ambient temperature [K]': 298.15,\n", - " 'Number of electrodes connected in parallel to make a cell': 1.0,\n", - " 'Number of cells connected in series to make a battery': 1.0,\n", - " 'Lower voltage cut-off [V]': 3.105,\n", - " 'Upper voltage cut-off [V]': 4.1,\n", - " 'Initial concentration in negative electrode [mol.m-3]': 19986.609595075,\n", - " 'Initial concentration in positive electrode [mol.m-3]': 30730.7554385565,\n", - " 'Initial temperature [K]': 298.15}" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "{k: v for k,v in spm.default_parameter_values.items() if k in spm._parameter_info}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We now define a dictionary of values for `ParameterValues` as before (here, a subset of the `Chen2020` parameters)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Ambient temperature [K]': 298.15,\n", - " 'Current function [A]': 5.0,\n", - " 'Electrode height [m]': 0.065,\n", - " 'Electrode width [m]': 1.58,\n", - " 'Initial concentration in negative electrode [mol.m-3]': 29866.0,\n", - " 'Initial concentration in positive electrode [mol.m-3]': 17038.0,\n", - " 'Initial temperature [K]': 298.15,\n", - " 'Lower voltage cut-off [V]': 2.5,\n", - " 'Maximum concentration in negative electrode [mol.m-3]': 33133.0,\n", - " 'Maximum concentration in positive electrode [mol.m-3]': 63104.0,\n", - " 'Negative electrode Bruggeman coefficient (electrode)': 1.5,\n", - " 'Negative electrode Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Negative electrode OCP [V]': ('graphite_LGM50_ocp_Chen2020',\n", - " ([array([0. , 0.03129623, 0.03499902, 0.0387018 , 0.04240458,\n", - " 0.04610736, 0.04981015, 0.05351292, 0.05721568, 0.06091845,\n", - " 0.06462122, 0.06832399, 0.07202675, 0.07572951, 0.07943227,\n", - " 0.08313503, 0.08683779, 0.09054054, 0.09424331, 0.09794607,\n", - " 0.10164883, 0.10535158, 0.10905434, 0.1127571 , 0.11645985,\n", - " 0.12016261, 0.12386536, 0.12756811, 0.13127086, 0.13497362,\n", - " 0.13867638, 0.14237913, 0.14608189, 0.14978465, 0.15348741,\n", - " 0.15719018, 0.16089294, 0.1645957 , 0.16829847, 0.17200122,\n", - " 0.17570399, 0.17940674, 0.1831095 , 0.18681229, 0.19051504,\n", - " 0.1942178 , 0.19792056, 0.20162334, 0.2053261 , 0.20902886,\n", - " 0.21273164, 0.2164344 , 0.22013716, 0.22383993, 0.2275427 ,\n", - " 0.23124547, 0.23494825, 0.23865101, 0.24235377, 0.24605653,\n", - " 0.2497593 , 0.25346208, 0.25716486, 0.26086762, 0.26457039,\n", - " 0.26827314, 0.2719759 , 0.27567867, 0.27938144, 0.28308421,\n", - " 0.28678698, 0.29048974, 0.29419251, 0.29789529, 0.30159806,\n", - " 0.30530083, 0.30900361, 0.31270637, 0.31640913, 0.32011189,\n", - " 0.32381466, 0.32751744, 0.33122021, 0.33492297, 0.33862575,\n", - " 0.34232853, 0.34603131, 0.34973408, 0.35343685, 0.35713963,\n", - " 0.36084241, 0.36454517, 0.36824795, 0.37195071, 0.37565348,\n", - " 0.37935626, 0.38305904, 0.38676182, 0.3904646 , 0.39416737,\n", - " 0.39787015, 0.40157291, 0.40527567, 0.40897844, 0.41268121,\n", - " 0.41638398, 0.42008676, 0.42378953, 0.4274923 , 0.43119506,\n", - " 0.43489784, 0.43860061, 0.44230338, 0.44600615, 0.44970893,\n", - " 0.45341168, 0.45711444, 0.46081719, 0.46451994, 0.46822269,\n", - " 0.47192545, 0.47562821, 0.47933098, 0.48303375, 0.48673651,\n", - " 0.49043926, 0.49414203, 0.49784482, 0.50154759, 0.50525036,\n", - " 0.50895311, 0.51265586, 0.51635861, 0.52006139, 0.52376415,\n", - " 0.52746692, 0.53116969, 0.53487245, 0.53857521, 0.54227797,\n", - " 0.54598074, 0.5496835 , 0.55338627, 0.55708902, 0.56079178,\n", - " 0.56449454, 0.5681973 , 0.57190006, 0.57560282, 0.57930558,\n", - " 0.58300835, 0.58671112, 0.59041389, 0.59411664, 0.59781941,\n", - " 0.60152218, 0.60522496, 0.60892772, 0.61263048, 0.61633325,\n", - " 0.62003603, 0.6237388 , 0.62744156, 0.63114433, 0.63484711,\n", - " 0.63854988, 0.64225265, 0.64595543, 0.64965823, 0.653361 ,\n", - " 0.65706377, 0.66076656, 0.66446934, 0.66817212, 0.67187489,\n", - " 0.67557767, 0.67928044, 0.68298322, 0.686686 , 0.69038878,\n", - " 0.69409156, 0.69779433, 0.70149709, 0.70519988, 0.70890264,\n", - " 0.7126054 , 0.71630818, 0.72001095, 0.72371371, 0.72741648,\n", - " 0.73111925, 0.73482204, 0.7385248 , 0.74222757, 0.74593034,\n", - " 0.74963312, 0.75333589, 0.75703868, 0.76074146, 0.76444422,\n", - " 0.76814698, 0.77184976, 0.77555253, 0.77925531, 0.78295807,\n", - " 0.78666085, 0.79036364, 0.79406641, 0.79776918, 0.80147197,\n", - " 0.80517474, 0.80887751, 0.81258028, 0.81628304, 0.81998581,\n", - " 0.82368858, 0.82739136, 0.83109411, 0.83479688, 0.83849965,\n", - " 0.84220242, 0.84590519, 0.84960797, 0.85331075, 0.85701353,\n", - " 0.86071631, 0.86441907, 0.86812186, 0.87182464, 0.87552742,\n", - " 0.87923019, 0.88293296, 0.88663573, 0.89033849, 0.89404126,\n", - " 0.89774404, 0.9014468 , 1. ])],\n", - " array([1.81772748, 1.0828807 , 0.99593794, 0.90023398, 0.79649431,\n", - " 0.73354429, 0.66664314, 0.64137149, 0.59813869, 0.5670836 ,\n", - " 0.54746181, 0.53068399, 0.51304734, 0.49394092, 0.47926274,\n", - " 0.46065259, 0.45992726, 0.43801501, 0.42438665, 0.41150269,\n", - " 0.40033659, 0.38957134, 0.37756538, 0.36292541, 0.34357086,\n", - " 0.3406314 , 0.32299468, 0.31379458, 0.30795386, 0.29207319,\n", - " 0.28697687, 0.27405477, 0.2670497 , 0.25857493, 0.25265783,\n", - " 0.24826777, 0.2414345 , 0.23362778, 0.22956218, 0.22370236,\n", - " 0.22181271, 0.22089651, 0.2194268 , 0.21830064, 0.21845333,\n", - " 0.21753715, 0.21719357, 0.21635373, 0.21667822, 0.21738444,\n", - " 0.21469313, 0.21541846, 0.21465495, 0.2135479 , 0.21392964,\n", - " 0.21074206, 0.20873788, 0.20465319, 0.20205732, 0.19774358,\n", - " 0.19444147, 0.19190285, 0.18850531, 0.18581399, 0.18327537,\n", - " 0.18157659, 0.17814088, 0.17529686, 0.1719375 , 0.16934161,\n", - " 0.16756649, 0.16609676, 0.16414985, 0.16260378, 0.16224113,\n", - " 0.160027 , 0.15827096, 0.1588054 , 0.15552238, 0.15580869,\n", - " 0.15220118, 0.1511132 , 0.14987253, 0.14874637, 0.14678037,\n", - " 0.14620776, 0.14555879, 0.14389819, 0.14359279, 0.14242846,\n", - " 0.14038612, 0.13882096, 0.13954628, 0.13946992, 0.13780934,\n", - " 0.13973714, 0.13698858, 0.13523254, 0.13441178, 0.1352898 ,\n", - " 0.13507985, 0.13647321, 0.13601512, 0.13435452, 0.1334765 ,\n", - " 0.1348317 , 0.13275118, 0.13286571, 0.13263667, 0.13456447,\n", - " 0.13471718, 0.13395369, 0.13448814, 0.1334765 , 0.13298023,\n", - " 0.13259849, 0.13338107, 0.13309476, 0.13275118, 0.13443087,\n", - " 0.13315202, 0.132713 , 0.1330184 , 0.13278936, 0.13225491,\n", - " 0.13317111, 0.13263667, 0.13187316, 0.13265574, 0.13250305,\n", - " 0.13324745, 0.13204496, 0.13242669, 0.13233127, 0.13198769,\n", - " 0.13254122, 0.13145325, 0.13298023, 0.13168229, 0.1313578 ,\n", - " 0.13235036, 0.13120511, 0.13089971, 0.13109058, 0.13082336,\n", - " 0.13011713, 0.129869 , 0.12992626, 0.12942998, 0.12796026,\n", - " 0.12862831, 0.12656689, 0.12734947, 0.12509716, 0.12110791,\n", - " 0.11839751, 0.11244226, 0.11307214, 0.1092165 , 0.10683058,\n", - " 0.10433014, 0.10530359, 0.10056993, 0.09950104, 0.09854668,\n", - " 0.09921473, 0.09541635, 0.09980643, 0.0986612 , 0.09560722,\n", - " 0.09755413, 0.09612258, 0.09430929, 0.09661885, 0.09366032,\n", - " 0.09522548, 0.09535909, 0.09316404, 0.09450016, 0.0930877 ,\n", - " 0.09343126, 0.0932404 , 0.09350762, 0.09339309, 0.09291591,\n", - " 0.09303043, 0.0926296 , 0.0932404 , 0.09261052, 0.09249599,\n", - " 0.09240055, 0.09253416, 0.09209515, 0.09234329, 0.09366032,\n", - " 0.09333583, 0.09322131, 0.09264868, 0.09253416, 0.09243873,\n", - " 0.09230512, 0.09310678, 0.09165615, 0.09159888, 0.09207606,\n", - " 0.09175158, 0.09177067, 0.09236237, 0.09241964, 0.09320222,\n", - " 0.09199972, 0.09167523, 0.09322131, 0.09190428, 0.09167523,\n", - " 0.09285865, 0.09180884, 0.09150345, 0.09186611, 0.0920188 ,\n", - " 0.09320222, 0.09131257, 0.09117896, 0.09133166, 0.09089265,\n", - " 0.09058725, 0.09051091, 0.09033912, 0.09041547, 0.0911217 ,\n", - " 0.0894611 , 0.08999555, 0.08921297, 0.08881213, 0.08797229,\n", - " 0.08709427, 0.08503284, 0.07601531]))),\n", - " 'Negative electrode OCP entropic change [V.K-1]': 0.0,\n", - " 'Negative electrode active material volume fraction': 0.75,\n", - " 'Negative electrode diffusivity [m2.s-1]': 3.3e-14,\n", - " 'Negative electrode electrons in reaction': 1.0,\n", - " 'Negative electrode exchange-current density [A.m-2]': ,\n", - " 'Negative electrode porosity': 0.25,\n", - " 'Negative electrode thickness [m]': 8.52e-05,\n", - " 'Negative particle radius [m]': 5.86e-06,\n", - " 'Nominal cell capacity [A.h]': 5.0,\n", - " 'Number of cells connected in series to make a battery': 1.0,\n", - " 'Number of electrodes connected in parallel to make a cell': 1.0,\n", - " 'Positive electrode Bruggeman coefficient (electrode)': 1.5,\n", - " 'Positive electrode Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Positive electrode OCP [V]': ('nmc_LGM50_ocp_Chen2020',\n", - " ([array([0.24879728, 0.26614516, 0.26886763, 0.27159011, 0.27431258,\n", - " 0.27703505, 0.27975753, 0.28248 , 0.28520247, 0.28792495,\n", - " 0.29064743, 0.29336992, 0.29609239, 0.29881487, 0.30153735,\n", - " 0.30425983, 0.30698231, 0.30970478, 0.31242725, 0.31514973,\n", - " 0.3178722 , 0.32059466, 0.32331714, 0.32603962, 0.32876209,\n", - " 0.33148456, 0.33420703, 0.3369295 , 0.33965197, 0.34237446,\n", - " 0.34509694, 0.34781941, 0.3505419 , 0.35326438, 0.35598685,\n", - " 0.35870932, 0.3614318 , 0.36415428, 0.36687674, 0.36959921,\n", - " 0.37232169, 0.37504418, 0.37776665, 0.38048913, 0.38321161,\n", - " 0.38593408, 0.38865655, 0.39137903, 0.39410151, 0.39682398,\n", - " 0.39954645, 0.40226892, 0.4049914 , 0.40771387, 0.41043634,\n", - " 0.41315882, 0.41588129, 0.41860377, 0.42132624, 0.42404872,\n", - " 0.4267712 , 0.42949368, 0.43221616, 0.43493864, 0.43766111,\n", - " 0.44038359, 0.44310607, 0.44582856, 0.44855103, 0.45127351,\n", - " 0.453996 , 0.45671848, 0.45944095, 0.46216343, 0.46488592,\n", - " 0.46760838, 0.47033085, 0.47305333, 0.47577581, 0.47849828,\n", - " 0.48122074, 0.48394321, 0.48666569, 0.48938816, 0.49211064,\n", - " 0.4948331 , 0.49755557, 0.50027804, 0.50300052, 0.50572298,\n", - " 0.50844545, 0.51116792, 0.51389038, 0.51661284, 0.51933531,\n", - " 0.52205777, 0.52478024, 0.52750271, 0.53022518, 0.53294765,\n", - " 0.53567012, 0.53839258, 0.54111506, 0.54383753, 0.54656 ,\n", - " 0.54928247, 0.55200494, 0.5547274 , 0.55744986, 0.56017233,\n", - " 0.5628948 , 0.56561729, 0.56833976, 0.57106222, 0.57378469,\n", - " 0.57650716, 0.57922963, 0.5819521 , 0.58467456, 0.58739702,\n", - " 0.59011948, 0.59284194, 0.5955644 , 0.59828687, 0.60100935,\n", - " 0.60373182, 0.60645429, 0.60917677, 0.61189925, 0.61462172,\n", - " 0.61734419, 0.62006666, 0.62278914, 0.62551162, 0.62823408,\n", - " 0.63095656, 0.63367903, 0.6364015 , 0.63912397, 0.64184645,\n", - " 0.64456893, 0.6472914 , 0.65001389, 0.65273637, 0.65545884,\n", - " 0.65818131, 0.66090379, 0.66362625, 0.66634874, 0.66907121,\n", - " 0.67179369, 0.67451616, 0.67723865, 0.67996113, 0.68268361,\n", - " 0.68540608, 0.68812855, 0.69085103, 0.6935735 , 0.69629597,\n", - " 0.69901843, 0.7017409 , 0.70446338, 0.70718585, 0.70990833,\n", - " 0.71263081, 0.71535328, 0.71807574, 0.72079822, 0.72352069,\n", - " 0.72624317, 0.72896564, 0.7316881 , 0.73441057, 0.73713303,\n", - " 0.73985551, 0.74257799, 0.74530047, 0.74802293, 0.7507454 ,\n", - " 0.75346787, 0.75619034, 0.75891281, 0.76163529, 0.76435776,\n", - " 0.76708024, 0.7698027 , 0.77252517, 0.77524765, 0.77797012,\n", - " 0.78069258, 0.78341506, 0.78613753, 0.78885999, 0.79158246,\n", - " 0.79430494, 0.79702741, 0.79974987, 0.80247234, 0.8051948 ,\n", - " 0.80791727, 0.81063974, 0.81336221, 0.81608468, 0.81880714,\n", - " 0.82152961, 0.82425208, 0.82697453, 0.829697 , 0.83241946,\n", - " 0.83514192, 0.83786439, 0.84058684, 0.84330931, 0.84603177,\n", - " 0.84875424, 0.8514767 , 0.85419916, 0.85692162, 0.85964409,\n", - " 0.86236656, 0.86508902, 0.86781149, 0.87053395, 0.87325642,\n", - " 0.87597888, 0.87870135, 0.88142383, 0.8841463 , 0.88686877,\n", - " 0.88959124, 0.89231371, 0.8950362 , 0.89775868, 0.90048116,\n", - " 0.90320364, 0.90592613, 1. ])],\n", - " array([4.4 , 4.2935653 , 4.2768621 , 4.2647018 , 4.2540312 ,\n", - " 4.2449446 , 4.2364879 , 4.2302647 , 4.2225528 , 4.2182574 ,\n", - " 4.213294 , 4.2090373 , 4.2051239 , 4.2012677 , 4.1981564 ,\n", - " 4.1955218 , 4.1931167 , 4.1889744 , 4.1881533 , 4.1865883 ,\n", - " 4.1850228 , 4.1832285 , 4.1808805 , 4.1805749 , 4.1789522 ,\n", - " 4.1768146 , 4.1768146 , 4.1752872 , 4.173111 , 4.1726718 ,\n", - " 4.1710877 , 4.1702285 , 4.168797 , 4.1669831 , 4.1655135 ,\n", - " 4.1634517 , 4.1598248 , 4.1571712 , 4.154079 , 4.1504135 ,\n", - " 4.1466532 , 4.1423388 , 4.1382346 , 4.1338248 , 4.1305799 ,\n", - " 4.1272392 , 4.1228104 , 4.1186109 , 4.114182 , 4.1096005 ,\n", - " 4.1046948 , 4.1004758 , 4.0956464 , 4.0909696 , 4.0864644 ,\n", - " 4.0818448 , 4.077683 , 4.0733309 , 4.0690737 , 4.0647216 ,\n", - " 4.0608654 , 4.0564747 , 4.0527525 , 4.0492401 , 4.0450211 ,\n", - " 4.041986 , 4.0384736 , 4.035171 , 4.0320406 , 4.0289288 ,\n", - " 4.02597 , 4.0227437 , 4.0199757 , 4.0175133 , 4.0149746 ,\n", - " 4.0122066 , 4.009954 , 4.0075679 , 4.0050669 , 4.0023184 ,\n", - " 3.9995501 , 3.9969349 , 3.9926589 , 3.9889555 , 3.9834003 ,\n", - " 3.9783037 , 3.9755929 , 3.9707632 , 3.9681098 , 3.9635665 ,\n", - " 3.9594433 , 3.9556634 , 3.9521511 , 3.9479132 , 3.9438281 ,\n", - " 3.9400866 , 3.9362304 , 3.9314201 , 3.9283848 , 3.9242232 ,\n", - " 3.9192028 , 3.9166257 , 3.9117961 , 3.90815 , 3.9038739 ,\n", - " 3.8995597 , 3.8959136 , 3.8909314 , 3.8872662 , 3.8831048 ,\n", - " 3.8793442 , 3.8747628 , 3.8702576 , 3.8666878 , 3.8623927 ,\n", - " 3.8581741 , 3.854146 , 3.8499846 , 3.8450022 , 3.8422534 ,\n", - " 3.8380919 , 3.8341596 , 3.8309333 , 3.8272109 , 3.823164 ,\n", - " 3.8192315 , 3.8159864 , 3.8123021 , 3.8090379 , 3.8071671 ,\n", - " 3.8040555 , 3.8013639 , 3.7970879 , 3.7953317 , 3.7920673 ,\n", - " 3.788383 , 3.7855389 , 3.7838206 , 3.78111 , 3.7794874 ,\n", - " 3.7769294 , 3.773608 , 3.7695992 , 3.7690265 , 3.7662776 ,\n", - " 3.7642922 , 3.7626889 , 3.7603791 , 3.7575538 , 3.7552056 ,\n", - " 3.7533159 , 3.7507198 , 3.7487535 , 3.7471499 , 3.7442865 ,\n", - " 3.7423012 , 3.7400677 , 3.7385788 , 3.7345319 , 3.7339211 ,\n", - " 3.7301605 , 3.7301033 , 3.7278316 , 3.7251589 , 3.723861 ,\n", - " 3.7215703 , 3.7191267 , 3.7172751 , 3.7157097 , 3.7130945 ,\n", - " 3.7099447 , 3.7071004 , 3.7045615 , 3.703588 , 3.70208 ,\n", - " 3.7002664 , 3.6972122 , 3.6952841 , 3.6929362 , 3.6898055 ,\n", - " 3.6890991 , 3.686522 , 3.6849759 , 3.6821697 , 3.6808143 ,\n", - " 3.6786573 , 3.6761947 , 3.674763 , 3.6712887 , 3.6697233 ,\n", - " 3.6678908 , 3.6652565 , 3.6630611 , 3.660274 , 3.6583652 ,\n", - " 3.6554828 , 3.6522949 , 3.6499848 , 3.6470451 , 3.6405547 ,\n", - " 3.6383405 , 3.635076 , 3.633549 , 3.6322317 , 3.6306856 ,\n", - " 3.6283948 , 3.6268487 , 3.6243098 , 3.6223626 , 3.6193655 ,\n", - " 3.6177621 , 3.6158531 , 3.6128371 , 3.6118062 , 3.6094582 ,\n", - " 3.6072438 , 3.6049912 , 3.6030822 , 3.6012688 , 3.5995889 ,\n", - " 3.5976417 , 3.5951984 , 3.593843 , 3.5916286 , 3.5894907 ,\n", - " 3.587429 , 3.5852909 , 3.5834775 , 3.5817785 , 3.5801177 ,\n", - " 3.5778842 , 3.5763381 , 3.5737801 , 3.5721002 , 3.5702102 ,\n", - " 3.5684922 , 3.5672133 , 3.52302167]))),\n", - " 'Positive electrode OCP entropic change [V.K-1]': 0.0,\n", - " 'Positive electrode active material volume fraction': 0.665,\n", - " 'Positive electrode diffusivity [m2.s-1]': 4e-15,\n", - " 'Positive electrode electrons in reaction': 1.0,\n", - " 'Positive electrode exchange-current density [A.m-2]': ,\n", - " 'Positive electrode porosity': 0.335,\n", - " 'Positive electrode thickness [m]': 7.56e-05,\n", - " 'Positive particle radius [m]': 5.22e-06,\n", - " 'Reference temperature [K]': 298.15,\n", - " 'Separator Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Separator porosity': 0.47,\n", - " 'Separator thickness [m]': 1.2e-05,\n", - " 'Typical current [A]': 5.0,\n", - " 'Typical electrolyte concentration [mol.m-3]': 1000.0,\n", - " 'Upper voltage cut-off [V]': 4.4}" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def graphite_mcmb2528_diffusivity_Dualfoil1998(sto, T):\n", - " D_ref = 3.9 * 10 ** (-14)\n", - " E_D_s = 42770\n", - " arrhenius = exp(E_D_s / constants.R * (1 / 298.15 - 1 / T))\n", - " return D_ref * arrhenius\n", - "\n", - "neg_ocp = np.array([[0. , 1.81772748],\n", - " [0.03129623, 1.0828807 ],\n", - " [0.03499902, 0.99593794],\n", - " [0.0387018 , 0.90023398],\n", - " [0.04240458, 0.79649431],\n", - " [0.04610736, 0.73354429],\n", - " [0.04981015, 0.66664314],\n", - " [0.05351292, 0.64137149],\n", - " [0.05721568, 0.59813869],\n", - " [0.06091845, 0.5670836 ],\n", - " [0.06462122, 0.54746181],\n", - " [0.06832399, 0.53068399],\n", - " [0.07202675, 0.51304734],\n", - " [0.07572951, 0.49394092],\n", - " [0.07943227, 0.47926274],\n", - " [0.08313503, 0.46065259],\n", - " [0.08683779, 0.45992726],\n", - " [0.09054054, 0.43801501],\n", - " [0.09424331, 0.42438665],\n", - " [0.09794607, 0.41150269],\n", - " [0.10164883, 0.40033659],\n", - " [0.10535158, 0.38957134],\n", - " [0.10905434, 0.37756538],\n", - " [0.1127571 , 0.36292541],\n", - " [0.11645985, 0.34357086],\n", - " [0.12016261, 0.3406314 ],\n", - " [0.12386536, 0.32299468],\n", - " [0.12756811, 0.31379458],\n", - " [0.13127086, 0.30795386],\n", - " [0.13497362, 0.29207319],\n", - " [0.13867638, 0.28697687],\n", - " [0.14237913, 0.27405477],\n", - " [0.14608189, 0.2670497 ],\n", - " [0.14978465, 0.25857493],\n", - " [0.15348741, 0.25265783],\n", - " [0.15719018, 0.24826777],\n", - " [0.16089294, 0.2414345 ],\n", - " [0.1645957 , 0.23362778],\n", - " [0.16829847, 0.22956218],\n", - " [0.17200122, 0.22370236],\n", - " [0.17570399, 0.22181271],\n", - " [0.17940674, 0.22089651],\n", - " [0.1831095 , 0.2194268 ],\n", - " [0.18681229, 0.21830064],\n", - " [0.19051504, 0.21845333],\n", - " [0.1942178 , 0.21753715],\n", - " [0.19792056, 0.21719357],\n", - " [0.20162334, 0.21635373],\n", - " [0.2053261 , 0.21667822],\n", - " [0.20902886, 0.21738444],\n", - " [0.21273164, 0.21469313],\n", - " [0.2164344 , 0.21541846],\n", - " [0.22013716, 0.21465495],\n", - " [0.22383993, 0.2135479 ],\n", - " [0.2275427 , 0.21392964],\n", - " [0.23124547, 0.21074206],\n", - " [0.23494825, 0.20873788],\n", - " [0.23865101, 0.20465319],\n", - " [0.24235377, 0.20205732],\n", - " [0.24605653, 0.19774358],\n", - " [0.2497593 , 0.19444147],\n", - " [0.25346208, 0.19190285],\n", - " [0.25716486, 0.18850531],\n", - " [0.26086762, 0.18581399],\n", - " [0.26457039, 0.18327537],\n", - " [0.26827314, 0.18157659],\n", - " [0.2719759 , 0.17814088],\n", - " [0.27567867, 0.17529686],\n", - " [0.27938144, 0.1719375 ],\n", - " [0.28308421, 0.16934161],\n", - " [0.28678698, 0.16756649],\n", - " [0.29048974, 0.16609676],\n", - " [0.29419251, 0.16414985],\n", - " [0.29789529, 0.16260378],\n", - " [0.30159806, 0.16224113],\n", - " [0.30530083, 0.160027 ],\n", - " [0.30900361, 0.15827096],\n", - " [0.31270637, 0.1588054 ],\n", - " [0.31640913, 0.15552238],\n", - " [0.32011189, 0.15580869],\n", - " [0.32381466, 0.15220118],\n", - " [0.32751744, 0.1511132 ],\n", - " [0.33122021, 0.14987253],\n", - " [0.33492297, 0.14874637],\n", - " [0.33862575, 0.14678037],\n", - " [0.34232853, 0.14620776],\n", - " [0.34603131, 0.14555879],\n", - " [0.34973408, 0.14389819],\n", - " [0.35343685, 0.14359279],\n", - " [0.35713963, 0.14242846],\n", - " [0.36084241, 0.14038612],\n", - " [0.36454517, 0.13882096],\n", - " [0.36824795, 0.13954628],\n", - " [0.37195071, 0.13946992],\n", - " [0.37565348, 0.13780934],\n", - " [0.37935626, 0.13973714],\n", - " [0.38305904, 0.13698858],\n", - " [0.38676182, 0.13523254],\n", - " [0.3904646 , 0.13441178],\n", - " [0.39416737, 0.1352898 ],\n", - " [0.39787015, 0.13507985],\n", - " [0.40157291, 0.13647321],\n", - " [0.40527567, 0.13601512],\n", - " [0.40897844, 0.13435452],\n", - " [0.41268121, 0.1334765 ],\n", - " [0.41638398, 0.1348317 ],\n", - " [0.42008676, 0.13275118],\n", - " [0.42378953, 0.13286571],\n", - " [0.4274923 , 0.13263667],\n", - " [0.43119506, 0.13456447],\n", - " [0.43489784, 0.13471718],\n", - " [0.43860061, 0.13395369],\n", - " [0.44230338, 0.13448814],\n", - " [0.44600615, 0.1334765 ],\n", - " [0.44970893, 0.13298023],\n", - " [0.45341168, 0.13259849],\n", - " [0.45711444, 0.13338107],\n", - " [0.46081719, 0.13309476],\n", - " [0.46451994, 0.13275118],\n", - " [0.46822269, 0.13443087],\n", - " [0.47192545, 0.13315202],\n", - " [0.47562821, 0.132713 ],\n", - " [0.47933098, 0.1330184 ],\n", - " [0.48303375, 0.13278936],\n", - " [0.48673651, 0.13225491],\n", - " [0.49043926, 0.13317111],\n", - " [0.49414203, 0.13263667],\n", - " [0.49784482, 0.13187316],\n", - " [0.50154759, 0.13265574],\n", - " [0.50525036, 0.13250305],\n", - " [0.50895311, 0.13324745],\n", - " [0.51265586, 0.13204496],\n", - " [0.51635861, 0.13242669],\n", - " [0.52006139, 0.13233127],\n", - " [0.52376415, 0.13198769],\n", - " [0.52746692, 0.13254122],\n", - " [0.53116969, 0.13145325],\n", - " [0.53487245, 0.13298023],\n", - " [0.53857521, 0.13168229],\n", - " [0.54227797, 0.1313578 ],\n", - " [0.54598074, 0.13235036],\n", - " [0.5496835 , 0.13120511],\n", - " [0.55338627, 0.13089971],\n", - " [0.55708902, 0.13109058],\n", - " [0.56079178, 0.13082336],\n", - " [0.56449454, 0.13011713],\n", - " [0.5681973 , 0.129869 ],\n", - " [0.57190006, 0.12992626],\n", - " [0.57560282, 0.12942998],\n", - " [0.57930558, 0.12796026],\n", - " [0.58300835, 0.12862831],\n", - " [0.58671112, 0.12656689],\n", - " [0.59041389, 0.12734947],\n", - " [0.59411664, 0.12509716],\n", - " [0.59781941, 0.12110791],\n", - " [0.60152218, 0.11839751],\n", - " [0.60522496, 0.11244226],\n", - " [0.60892772, 0.11307214],\n", - " [0.61263048, 0.1092165 ],\n", - " [0.61633325, 0.10683058],\n", - " [0.62003603, 0.10433014],\n", - " [0.6237388 , 0.10530359],\n", - " [0.62744156, 0.10056993],\n", - " [0.63114433, 0.09950104],\n", - " [0.63484711, 0.09854668],\n", - " [0.63854988, 0.09921473],\n", - " [0.64225265, 0.09541635],\n", - " [0.64595543, 0.09980643],\n", - " [0.64965823, 0.0986612 ],\n", - " [0.653361 , 0.09560722],\n", - " [0.65706377, 0.09755413],\n", - " [0.66076656, 0.09612258],\n", - " [0.66446934, 0.09430929],\n", - " [0.66817212, 0.09661885],\n", - " [0.67187489, 0.09366032],\n", - " [0.67557767, 0.09522548],\n", - " [0.67928044, 0.09535909],\n", - " [0.68298322, 0.09316404],\n", - " [0.686686 , 0.09450016],\n", - " [0.69038878, 0.0930877 ],\n", - " [0.69409156, 0.09343126],\n", - " [0.69779433, 0.0932404 ],\n", - " [0.70149709, 0.09350762],\n", - " [0.70519988, 0.09339309],\n", - " [0.70890264, 0.09291591],\n", - " [0.7126054 , 0.09303043],\n", - " [0.71630818, 0.0926296 ],\n", - " [0.72001095, 0.0932404 ],\n", - " [0.72371371, 0.09261052],\n", - " [0.72741648, 0.09249599],\n", - " [0.73111925, 0.09240055],\n", - " [0.73482204, 0.09253416],\n", - " [0.7385248 , 0.09209515],\n", - " [0.74222757, 0.09234329],\n", - " [0.74593034, 0.09366032],\n", - " [0.74963312, 0.09333583],\n", - " [0.75333589, 0.09322131],\n", - " [0.75703868, 0.09264868],\n", - " [0.76074146, 0.09253416],\n", - " [0.76444422, 0.09243873],\n", - " [0.76814698, 0.09230512],\n", - " [0.77184976, 0.09310678],\n", - " [0.77555253, 0.09165615],\n", - " [0.77925531, 0.09159888],\n", - " [0.78295807, 0.09207606],\n", - " [0.78666085, 0.09175158],\n", - " [0.79036364, 0.09177067],\n", - " [0.79406641, 0.09236237],\n", - " [0.79776918, 0.09241964],\n", - " [0.80147197, 0.09320222],\n", - " [0.80517474, 0.09199972],\n", - " [0.80887751, 0.09167523],\n", - " [0.81258028, 0.09322131],\n", - " [0.81628304, 0.09190428],\n", - " [0.81998581, 0.09167523],\n", - " [0.82368858, 0.09285865],\n", - " [0.82739136, 0.09180884],\n", - " [0.83109411, 0.09150345],\n", - " [0.83479688, 0.09186611],\n", - " [0.83849965, 0.0920188 ],\n", - " [0.84220242, 0.09320222],\n", - " [0.84590519, 0.09131257],\n", - " [0.84960797, 0.09117896],\n", - " [0.85331075, 0.09133166],\n", - " [0.85701353, 0.09089265],\n", - " [0.86071631, 0.09058725],\n", - " [0.86441907, 0.09051091],\n", - " [0.86812186, 0.09033912],\n", - " [0.87182464, 0.09041547],\n", - " [0.87552742, 0.0911217 ],\n", - " [0.87923019, 0.0894611 ],\n", - " [0.88293296, 0.08999555],\n", - " [0.88663573, 0.08921297],\n", - " [0.89033849, 0.08881213],\n", - " [0.89404126, 0.08797229],\n", - " [0.89774404, 0.08709427],\n", - " [0.9014468 , 0.08503284],\n", - " [1. , 0.07601531]])\n", - "\n", - "pos_ocp = np.array([[0.24879728, 4.4 ],\n", - " [0.26614516, 4.2935653 ],\n", - " [0.26886763, 4.2768621 ],\n", - " [0.27159011, 4.2647018 ],\n", - " [0.27431258, 4.2540312 ],\n", - " [0.27703505, 4.2449446 ],\n", - " [0.27975753, 4.2364879 ],\n", - " [0.28248 , 4.2302647 ],\n", - " [0.28520247, 4.2225528 ],\n", - " [0.28792495, 4.2182574 ],\n", - " [0.29064743, 4.213294 ],\n", - " [0.29336992, 4.2090373 ],\n", - " [0.29609239, 4.2051239 ],\n", - " [0.29881487, 4.2012677 ],\n", - " [0.30153735, 4.1981564 ],\n", - " [0.30425983, 4.1955218 ],\n", - " [0.30698231, 4.1931167 ],\n", - " [0.30970478, 4.1889744 ],\n", - " [0.31242725, 4.1881533 ],\n", - " [0.31514973, 4.1865883 ],\n", - " [0.3178722 , 4.1850228 ],\n", - " [0.32059466, 4.1832285 ],\n", - " [0.32331714, 4.1808805 ],\n", - " [0.32603962, 4.1805749 ],\n", - " [0.32876209, 4.1789522 ],\n", - " [0.33148456, 4.1768146 ],\n", - " [0.33420703, 4.1768146 ],\n", - " [0.3369295 , 4.1752872 ],\n", - " [0.33965197, 4.173111 ],\n", - " [0.34237446, 4.1726718 ],\n", - " [0.34509694, 4.1710877 ],\n", - " [0.34781941, 4.1702285 ],\n", - " [0.3505419 , 4.168797 ],\n", - " [0.35326438, 4.1669831 ],\n", - " [0.35598685, 4.1655135 ],\n", - " [0.35870932, 4.1634517 ],\n", - " [0.3614318 , 4.1598248 ],\n", - " [0.36415428, 4.1571712 ],\n", - " [0.36687674, 4.154079 ],\n", - " [0.36959921, 4.1504135 ],\n", - " [0.37232169, 4.1466532 ],\n", - " [0.37504418, 4.1423388 ],\n", - " [0.37776665, 4.1382346 ],\n", - " [0.38048913, 4.1338248 ],\n", - " [0.38321161, 4.1305799 ],\n", - " [0.38593408, 4.1272392 ],\n", - " [0.38865655, 4.1228104 ],\n", - " [0.39137903, 4.1186109 ],\n", - " [0.39410151, 4.114182 ],\n", - " [0.39682398, 4.1096005 ],\n", - " [0.39954645, 4.1046948 ],\n", - " [0.40226892, 4.1004758 ],\n", - " [0.4049914 , 4.0956464 ],\n", - " [0.40771387, 4.0909696 ],\n", - " [0.41043634, 4.0864644 ],\n", - " [0.41315882, 4.0818448 ],\n", - " [0.41588129, 4.077683 ],\n", - " [0.41860377, 4.0733309 ],\n", - " [0.42132624, 4.0690737 ],\n", - " [0.42404872, 4.0647216 ],\n", - " [0.4267712 , 4.0608654 ],\n", - " [0.42949368, 4.0564747 ],\n", - " [0.43221616, 4.0527525 ],\n", - " [0.43493864, 4.0492401 ],\n", - " [0.43766111, 4.0450211 ],\n", - " [0.44038359, 4.041986 ],\n", - " [0.44310607, 4.0384736 ],\n", - " [0.44582856, 4.035171 ],\n", - " [0.44855103, 4.0320406 ],\n", - " [0.45127351, 4.0289288 ],\n", - " [0.453996 , 4.02597 ],\n", - " [0.45671848, 4.0227437 ],\n", - " [0.45944095, 4.0199757 ],\n", - " [0.46216343, 4.0175133 ],\n", - " [0.46488592, 4.0149746 ],\n", - " [0.46760838, 4.0122066 ],\n", - " [0.47033085, 4.009954 ],\n", - " [0.47305333, 4.0075679 ],\n", - " [0.47577581, 4.0050669 ],\n", - " [0.47849828, 4.0023184 ],\n", - " [0.48122074, 3.9995501 ],\n", - " [0.48394321, 3.9969349 ],\n", - " [0.48666569, 3.9926589 ],\n", - " [0.48938816, 3.9889555 ],\n", - " [0.49211064, 3.9834003 ],\n", - " [0.4948331 , 3.9783037 ],\n", - " [0.49755557, 3.9755929 ],\n", - " [0.50027804, 3.9707632 ],\n", - " [0.50300052, 3.9681098 ],\n", - " [0.50572298, 3.9635665 ],\n", - " [0.50844545, 3.9594433 ],\n", - " [0.51116792, 3.9556634 ],\n", - " [0.51389038, 3.9521511 ],\n", - " [0.51661284, 3.9479132 ],\n", - " [0.51933531, 3.9438281 ],\n", - " [0.52205777, 3.9400866 ],\n", - " [0.52478024, 3.9362304 ],\n", - " [0.52750271, 3.9314201 ],\n", - " [0.53022518, 3.9283848 ],\n", - " [0.53294765, 3.9242232 ],\n", - " [0.53567012, 3.9192028 ],\n", - " [0.53839258, 3.9166257 ],\n", - " [0.54111506, 3.9117961 ],\n", - " [0.54383753, 3.90815 ],\n", - " [0.54656 , 3.9038739 ],\n", - " [0.54928247, 3.8995597 ],\n", - " [0.55200494, 3.8959136 ],\n", - " [0.5547274 , 3.8909314 ],\n", - " [0.55744986, 3.8872662 ],\n", - " [0.56017233, 3.8831048 ],\n", - " [0.5628948 , 3.8793442 ],\n", - " [0.56561729, 3.8747628 ],\n", - " [0.56833976, 3.8702576 ],\n", - " [0.57106222, 3.8666878 ],\n", - " [0.57378469, 3.8623927 ],\n", - " [0.57650716, 3.8581741 ],\n", - " [0.57922963, 3.854146 ],\n", - " [0.5819521 , 3.8499846 ],\n", - " [0.58467456, 3.8450022 ],\n", - " [0.58739702, 3.8422534 ],\n", - " [0.59011948, 3.8380919 ],\n", - " [0.59284194, 3.8341596 ],\n", - " [0.5955644 , 3.8309333 ],\n", - " [0.59828687, 3.8272109 ],\n", - " [0.60100935, 3.823164 ],\n", - " [0.60373182, 3.8192315 ],\n", - " [0.60645429, 3.8159864 ],\n", - " [0.60917677, 3.8123021 ],\n", - " [0.61189925, 3.8090379 ],\n", - " [0.61462172, 3.8071671 ],\n", - " [0.61734419, 3.8040555 ],\n", - " [0.62006666, 3.8013639 ],\n", - " [0.62278914, 3.7970879 ],\n", - " [0.62551162, 3.7953317 ],\n", - " [0.62823408, 3.7920673 ],\n", - " [0.63095656, 3.788383 ],\n", - " [0.63367903, 3.7855389 ],\n", - " [0.6364015 , 3.7838206 ],\n", - " [0.63912397, 3.78111 ],\n", - " [0.64184645, 3.7794874 ],\n", - " [0.64456893, 3.7769294 ],\n", - " [0.6472914 , 3.773608 ],\n", - " [0.65001389, 3.7695992 ],\n", - " [0.65273637, 3.7690265 ],\n", - " [0.65545884, 3.7662776 ],\n", - " [0.65818131, 3.7642922 ],\n", - " [0.66090379, 3.7626889 ],\n", - " [0.66362625, 3.7603791 ],\n", - " [0.66634874, 3.7575538 ],\n", - " [0.66907121, 3.7552056 ],\n", - " [0.67179369, 3.7533159 ],\n", - " [0.67451616, 3.7507198 ],\n", - " [0.67723865, 3.7487535 ],\n", - " [0.67996113, 3.7471499 ],\n", - " [0.68268361, 3.7442865 ],\n", - " [0.68540608, 3.7423012 ],\n", - " [0.68812855, 3.7400677 ],\n", - " [0.69085103, 3.7385788 ],\n", - " [0.6935735 , 3.7345319 ],\n", - " [0.69629597, 3.7339211 ],\n", - " [0.69901843, 3.7301605 ],\n", - " [0.7017409 , 3.7301033 ],\n", - " [0.70446338, 3.7278316 ],\n", - " [0.70718585, 3.7251589 ],\n", - " [0.70990833, 3.723861 ],\n", - " [0.71263081, 3.7215703 ],\n", - " [0.71535328, 3.7191267 ],\n", - " [0.71807574, 3.7172751 ],\n", - " [0.72079822, 3.7157097 ],\n", - " [0.72352069, 3.7130945 ],\n", - " [0.72624317, 3.7099447 ],\n", - " [0.72896564, 3.7071004 ],\n", - " [0.7316881 , 3.7045615 ],\n", - " [0.73441057, 3.703588 ],\n", - " [0.73713303, 3.70208 ],\n", - " [0.73985551, 3.7002664 ],\n", - " [0.74257799, 3.6972122 ],\n", - " [0.74530047, 3.6952841 ],\n", - " [0.74802293, 3.6929362 ],\n", - " [0.7507454 , 3.6898055 ],\n", - " [0.75346787, 3.6890991 ],\n", - " [0.75619034, 3.686522 ],\n", - " [0.75891281, 3.6849759 ],\n", - " [0.76163529, 3.6821697 ],\n", - " [0.76435776, 3.6808143 ],\n", - " [0.76708024, 3.6786573 ],\n", - " [0.7698027 , 3.6761947 ],\n", - " [0.77252517, 3.674763 ],\n", - " [0.77524765, 3.6712887 ],\n", - " [0.77797012, 3.6697233 ],\n", - " [0.78069258, 3.6678908 ],\n", - " [0.78341506, 3.6652565 ],\n", - " [0.78613753, 3.6630611 ],\n", - " [0.78885999, 3.660274 ],\n", - " [0.79158246, 3.6583652 ],\n", - " [0.79430494, 3.6554828 ],\n", - " [0.79702741, 3.6522949 ],\n", - " [0.79974987, 3.6499848 ],\n", - " [0.80247234, 3.6470451 ],\n", - " [0.8051948 , 3.6405547 ],\n", - " [0.80791727, 3.6383405 ],\n", - " [0.81063974, 3.635076 ],\n", - " [0.81336221, 3.633549 ],\n", - " [0.81608468, 3.6322317 ],\n", - " [0.81880714, 3.6306856 ],\n", - " [0.82152961, 3.6283948 ],\n", - " [0.82425208, 3.6268487 ],\n", - " [0.82697453, 3.6243098 ],\n", - " [0.829697 , 3.6223626 ],\n", - " [0.83241946, 3.6193655 ],\n", - " [0.83514192, 3.6177621 ],\n", - " [0.83786439, 3.6158531 ],\n", - " [0.84058684, 3.6128371 ],\n", - " [0.84330931, 3.6118062 ],\n", - " [0.84603177, 3.6094582 ],\n", - " [0.84875424, 3.6072438 ],\n", - " [0.8514767 , 3.6049912 ],\n", - " [0.85419916, 3.6030822 ],\n", - " [0.85692162, 3.6012688 ],\n", - " [0.85964409, 3.5995889 ],\n", - " [0.86236656, 3.5976417 ],\n", - " [0.86508902, 3.5951984 ],\n", - " [0.86781149, 3.593843 ],\n", - " [0.87053395, 3.5916286 ],\n", - " [0.87325642, 3.5894907 ],\n", - " [0.87597888, 3.587429 ],\n", - " [0.87870135, 3.5852909 ],\n", - " [0.88142383, 3.5834775 ],\n", - " [0.8841463 , 3.5817785 ],\n", - " [0.88686877, 3.5801177 ],\n", - " [0.88959124, 3.5778842 ],\n", - " [0.89231371, 3.5763381 ],\n", - " [0.8950362 , 3.5737801 ],\n", - " [0.89775868, 3.5721002 ],\n", - " [0.90048116, 3.5702102 ],\n", - " [0.90320364, 3.5684922 ],\n", - " [0.90592613, 3.5672133 ],\n", - " [1. , 3.52302167]])\n", - "\n", - "from pybamm import exp, constants\n", - "\n", - "\n", - "def graphite_LGM50_electrolyte_exchange_current_density_Chen2020(c_e, c_s_surf, c_n_max, T):\n", - " m_ref = 6.48e-7 # (A/m2)(mol/m3)**1.5 - includes ref concentrations\n", - " E_r = 35000\n", - " arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T))\n", - "\n", - " return (\n", - " m_ref * arrhenius * c_e ** 0.5 * c_s_surf ** 0.5 * (c_n_max - c_s_surf) ** 0.5\n", - " )\n", - "\n", - "def nmc_LGM50_electrolyte_exchange_current_density_Chen2020(c_e, c_s_surf, c_p_max, T):\n", - " m_ref = 3.42e-6 # (A/m2)(mol/m3)**1.5 - includes ref concentrations\n", - " E_r = 17800\n", - " arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T))\n", - "\n", - " return (\n", - " m_ref * arrhenius * c_e ** 0.5 * c_s_surf ** 0.5 * (c_p_max - c_s_surf) ** 0.5\n", - " )\n", - "\n", - "\n", - "values = {\n", - " 'Negative electrode thickness [m]': 8.52e-05,\n", - " 'Separator thickness [m]': 1.2e-05,\n", - " 'Positive electrode thickness [m]': 7.56e-05,\n", - " 'Electrode height [m]': 0.065,\n", - " 'Electrode width [m]': 1.58,\n", - " 'Nominal cell capacity [A.h]': 5.0,\n", - " 'Typical current [A]': 5.0,\n", - " 'Current function [A]': 5.0,\n", - " 'Maximum concentration in negative electrode [mol.m-3]': 33133.0,\n", - " 'Negative electrode diffusivity [m2.s-1]': 3.3e-14,\n", - " 'Negative electrode OCP [V]': ('graphite_LGM50_ocp_Chen2020', neg_ocp),\n", - " 'Negative electrode porosity': 0.25,\n", - " 'Negative electrode active material volume fraction': 0.75,\n", - " 'Negative particle radius [m]': 5.86e-06,\n", - " 'Negative electrode Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Negative electrode Bruggeman coefficient (electrode)': 1.5,\n", - " 'Negative electrode electrons in reaction': 1.0,\n", - " 'Negative electrode exchange-current density [A.m-2]': graphite_LGM50_electrolyte_exchange_current_density_Chen2020,\n", - " 'Negative electrode OCP entropic change [V.K-1]': 0.0,\n", - " 'Maximum concentration in positive electrode [mol.m-3]': 63104.0,\n", - " 'Positive electrode diffusivity [m2.s-1]': 4e-15,\n", - " 'Positive electrode OCP [V]': ('nmc_LGM50_ocp_Chen2020', pos_ocp),\n", - " 'Positive electrode porosity': 0.335,\n", - " 'Positive electrode active material volume fraction': 0.665,\n", - " 'Positive particle radius [m]': 5.22e-06,\n", - " 'Positive electrode Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Positive electrode Bruggeman coefficient (electrode)': 1.5,\n", - " 'Positive electrode electrons in reaction': 1.0,\n", - " 'Positive electrode exchange-current density [A.m-2]': nmc_LGM50_electrolyte_exchange_current_density_Chen2020,\n", - " 'Positive electrode OCP entropic change [V.K-1]': 0.0,\n", - " 'Separator porosity': 0.47,\n", - " 'Separator Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Typical electrolyte concentration [mol.m-3]': 1000.0,\n", - " 'Reference temperature [K]': 298.15,\n", - " 'Ambient temperature [K]': 298.15,\n", - " 'Number of electrodes connected in parallel to make a cell': 1.0,\n", - " 'Number of cells connected in series to make a battery': 1.0,\n", - " 'Lower voltage cut-off [V]': 2.5,\n", - " 'Upper voltage cut-off [V]': 4.4,\n", - " 'Initial concentration in negative electrode [mol.m-3]': 29866.0,\n", - " 'Initial concentration in positive electrode [mol.m-3]': 17038.0,\n", - " 'Initial temperature [K]': 298.15\n", - "}\n", - "param = pybamm.ParameterValues(values)\n", - "param" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here we would have got the same result by doing" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Negative electrode thickness [m]': 8.52e-05,\n", - " 'Separator thickness [m]': 1.2e-05,\n", - " 'Positive electrode thickness [m]': 7.56e-05,\n", - " 'Electrode height [m]': 0.065,\n", - " 'Electrode width [m]': 1.58,\n", - " 'Nominal cell capacity [A.h]': 5.0,\n", - " 'Typical current [A]': 5.0,\n", - " 'Current function [A]': 5.0,\n", - " 'Maximum concentration in negative electrode [mol.m-3]': 33133.0,\n", - " 'Negative electrode diffusivity [m2.s-1]': 3.3e-14,\n", - " 'Negative electrode OCP [V]': ,\n", - " 'Negative electrode porosity': 0.25,\n", - " 'Negative electrode active material volume fraction': 0.75,\n", - " 'Negative particle radius [m]': 5.86e-06,\n", - " 'Negative electrode Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Negative electrode Bruggeman coefficient (electrode)': 1.5,\n", - " 'Negative electrode electrons in reaction': 1.0,\n", - " 'Negative electrode exchange-current density [A.m-2]': ,\n", - " 'Negative electrode OCP entropic change [V.K-1]': 0.0,\n", - " 'Maximum concentration in positive electrode [mol.m-3]': 63104.0,\n", - " 'Positive electrode diffusivity [m2.s-1]': 4e-15,\n", - " 'Positive electrode OCP [V]': ,\n", - " 'Positive electrode porosity': 0.335,\n", - " 'Positive electrode active material volume fraction': 0.665,\n", - " 'Positive particle radius [m]': 5.22e-06,\n", - " 'Positive electrode Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Positive electrode Bruggeman coefficient (electrode)': 1.5,\n", - " 'Positive electrode electrons in reaction': 1.0,\n", - " 'Positive electrode exchange-current density [A.m-2]': ,\n", - " 'Positive electrode OCP entropic change [V.K-1]': 0.0,\n", - " 'Separator porosity': 0.47,\n", - " 'Separator Bruggeman coefficient (electrolyte)': 1.5,\n", - " 'Typical electrolyte concentration [mol.m-3]': 1000.0,\n", - " 'Reference temperature [K]': 298.15,\n", - " 'Ambient temperature [K]': 298.15,\n", - " 'Number of electrodes connected in parallel to make a cell': 1.0,\n", - " 'Number of cells connected in series to make a battery': 1.0,\n", - " 'Lower voltage cut-off [V]': 2.5,\n", - " 'Upper voltage cut-off [V]': 4.2,\n", - " 'Initial concentration in negative electrode [mol.m-3]': 29866.0,\n", - " 'Initial concentration in positive electrode [mol.m-3]': 17038.0,\n", - " 'Initial temperature [K]': 298.15}" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "param_same = pybamm.ParameterValues(\"Chen2020\")\n", - "{k: v for k,v in param_same.items() if k in spm._parameter_info}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Updating a specific parameter" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once a parameter set has been defined (either via a dictionary or a pre-built set), single parameters can be updated" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Using a constant value:" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Current function [A]\t5.0\n" - ] + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Parameterisation\n", + "\n", + "In this notebook, we show how to find which parameters are needed in a model and define them.\n", + "\n", + "For other notebooks about parameterization, see:\n", + "\n", + "- The API documentation of [Parameters](https://pybamm.readthedocs.io/en/latest/source/parameters/index.html) can be found at [pybamm.readthedocs.io](https://pybamm.readthedocs.io/)\n", + "- [Setting parameter values](https://github.com/pybamm-team/PyBaMM/blob/develop/examples/notebooks/Getting%20Started/Tutorial%204%20-%20Setting%20parameter%20values.ipynb) can be found at `pybamm/examples/notebooks/Getting Started/Tutorial 4 - Setting parameter values.ipynb`. This explains the basics of how to set the parameters of a model (in less detail than here).\n", + "- [parameter-management.ipynb](https://github.com/pybamm-team/PyBaMM/blob/develop/examples/notebooks/parameterization/parameter-management.ipynb) can be found at `pybamm/examples/notebooks/parameterization/parameter-management.ipynb`. This explains how to add and edit parameters in the `pybamm/input` directories\n", + "- [parameter-values.ipynb](https://github.com/pybamm-team/PyBaMM/blob/develop/examples/notebooks/parameterization/parameter-values.ipynb) can be found at `pybamm/examples/notebooks/parameterization/parameter-values.ipynb`. This explains the basics of the `ParameterValues` class.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adding your own parameter sets (using a dictionary)\n", + "\n", + "We will be using the model defined and explained in more detail in [3-negative-particle-problem.ipynb](https://github.com/pybamm-team/PyBaMM/blob/develop/examples/notebooks/Creating%20Models/3-negative-particle-problem.ipynb) example notebook. We begin by importing the required libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install pybamm -q # install PyBaMM if it is not installed\n", + "import pybamm\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setting up the model\n", + "\n", + "We define all the parameters and variables using `pybamm.Parameter` and `pybamm.Variable` respectively." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "c = pybamm.Variable(\"Concentration [mol.m-3]\", domain=\"negative particle\")\n", + "\n", + "R = pybamm.Parameter(\"Particle radius [m]\")\n", + "D = pybamm.FunctionParameter(\"Diffusion coefficient [m2.s-1]\", {\"Concentration [mol.m-3]\": c})\n", + "j = pybamm.InputParameter(\"Interfacial current density [A.m-2]\")\n", + "c0 = pybamm.Parameter(\"Initial concentration [mol.m-3]\")\n", + "c_e = pybamm.Parameter(\"Electrolyte concentration [mol.m-3]\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we define our model equations, boundary and initial conditions. We also add the variables required using the dictionary `model.variables`" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "model = pybamm.BaseModel()\n", + "\n", + "# governing equations\n", + "N = -D * pybamm.grad(c) # flux\n", + "dcdt = -pybamm.div(N)\n", + "model.rhs = {c: dcdt} \n", + "\n", + "# boundary conditions \n", + "lbc = pybamm.Scalar(0)\n", + "rbc = -j\n", + "model.boundary_conditions = {c: {\"left\": (lbc, \"Neumann\"), \"right\": (rbc, \"Neumann\")}}\n", + "\n", + "# initial conditions \n", + "model.initial_conditions = {c: c0}\n", + "\n", + "model.variables = {\n", + " \"Concentration [mol.m-3]\": c,\n", + " \"Surface concentration [mol.m-3]\": pybamm.surf(c),\n", + " \"Flux [mol.m-2.s-1]\": N,\n", + "}\n", + "\n", + "model.length_scales = {\"negative particle\": pybamm.Scalar(1)}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We also define the geometry, since there are parameters in the geometry too" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "r = pybamm.SpatialVariable(\"r\", domain=[\"negative particle\"], coord_sys=\"spherical polar\")\n", + "geometry = pybamm.Geometry({\"negative particle\": {r: {\"min\": pybamm.Scalar(0), \"max\": R}}})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Finding the parameters required" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To know what parameters are required by the model and geometry, we can do" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Initial concentration [mol.m-3] (Parameter)\n", + "Interfacial current density [A.m-2] (InputParameter)\n", + "Diffusion coefficient [m2.s-1] (FunctionParameter with input(s) 'Concentration [mol.m-3]')\n", + "\n", + "Particle radius [m] (Parameter)\n" + ] + } + ], + "source": [ + "model.print_parameter_info()\n", + "geometry.print_parameter_info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This tells us that we need to provide parameter values for the initial concentration and Faraday constant, an `InputParameter` at solve time for the interfacial current density, and diffusivity as a function of concentration. Since the electrolyte concentration does not appear anywhere in the model, there is no need to provide a value for it." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Adding the parameters\n", + "\n", + "Now we can proceed to the step where we add the `parameter` values using a dictionary. We set up a dictionary with parameter names as the dictionary keys and their respective values as the dictionary values." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def D_fun(c):\n", + " return 3.9 #* pybamm.exp(-c)\n", + "\n", + "values = {\n", + " \"Particle radius [m]\": 2,\n", + " \"Diffusion coefficient [m2.s-1]\": D_fun,\n", + " \"Initial concentration [mol.m-3]\": 2.5,\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can pass this dictionary in `pybamm.ParameterValues` class which accepts a dictionary of parameter names and values. We can then print `param` to check if it was initialised." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Diffusion coefficient [m2.s-1]': ,\n", + " 'Initial concentration [mol.m-3]': 2.5,\n", + " 'Particle radius [m]': 2}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "param = pybamm.ParameterValues(values)\n", + "\n", + "param" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Updating the parameter values\n", + "\n", + "The parameter values or `param` can be further updated by using the `update` function of `ParameterValues` class. The `update` function takes a dictionary with keys being the parameters to be updated and their respective values being the updated values. Here we update the `\"Particle radius [m]\"` parameter's value. Additionally, a function can also be passed as a `parameter`'s value which we will see ahead, and a new `parameter` can also be added by passing `check_already_exists=False` in the `update` function." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Diffusion coefficient [m2.s-1]': ,\n", + " 'Initial concentration [mol.m-3]': 1.5,\n", + " 'Particle radius [m]': 2}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "param.update({\"Initial concentration [mol.m-3]\": 1.5})\n", + "param" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Solving the model " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Finding the parameters in a model\n", + "\n", + "The `parameter` function of the `BaseModel` class can be used to obtain the parameters of a model." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[FunctionParameter(-0x3c6644568af7f737, Diffusion coefficient [m2.s-1], children=['Concentration [mol.m-3]'], domains={'primary': ['negative particle']}),\n", + " Parameter(-0x20b800b0346146aa, Initial concentration [mol.m-3], children=[], domains={}),\n", + " InputParameter(-0x3fa3c2033279cec1, Interfacial current density [A.m-2], children=[], domains={})]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "parameters = model.parameters\n", + "parameters" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As explained in the [3-negative-particle-problem.ipynb](https://github.com/pybamm-team/PyBaMM/blob/develop/examples/notebooks/Creating%20Models/3-negative-particle-problem.ipynb) example, we first process both the `model` and the `geometry`." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "param.process_model(model)\n", + "param.process_geometry(geometry)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now set up our mesh, choose a spatial method, and discretise our model" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "submesh_types = {\"negative particle\": pybamm.Uniform1DSubMesh}\n", + "var_pts = {r: 20}\n", + "mesh = pybamm.Mesh(geometry, submesh_types, var_pts)\n", + "\n", + "spatial_methods = {\"negative particle\": pybamm.FiniteVolume()}\n", + "disc = pybamm.Discretisation(mesh, spatial_methods)\n", + "disc.process_model(model);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We choose a solver and times at which we want the solution returned, and solve the model. Here we give a value for the current density `j`." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# solve\n", + "solver = pybamm.ScipySolver()\n", + "t = np.linspace(0, 3600, 600)\n", + "solution = solver.solve(model, t, inputs={\"Interfacial current density [A.m-2]\": 1.4})\n", + "\n", + "# post-process, so that the solution can be called at any time t or space r\n", + "# (using interpolation)\n", + "c = solution[\"Concentration [mol.m-3]\"]\n", + "c_surf = solution[\"Surface concentration [mol.m-3]\"]\n", + "\n", + "# plot\n", + "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13, 4))\n", + "\n", + "ax1.plot(solution.t, c_surf(solution.t))\n", + "ax1.set_xlabel(\"Time [s]\")\n", + "ax1.set_ylabel(\"Surface concentration [mol.m-3]\")\n", + "\n", + "rsol = mesh[\"negative particle\"].nodes # radial position\n", + "time = 1000 # time in seconds\n", + "ax2.plot(rsol * 1e6, c(t=time, r=rsol), label=\"t={}[s]\".format(time))\n", + "ax2.set_xlabel(\"Particle radius [microns]\")\n", + "ax2.set_ylabel(\"Concentration [mol.m-3]\")\n", + "ax2.legend()\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Using pre-defined models in `PyBaMM`\n", + "\n", + "In the next few steps, we will be showing the same workflow with the Single Particle Model (`SPM`). We will also see how you can pass a function as a `parameter`'s value and how to plot such `parameter functions`.\n", + "\n", + "We start by initializing our model" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "spm = pybamm.lithium_ion.SPM()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Finding the parameters in a model\n", + "\n", + "We can print the `parameters` of a model by using the `get_parameters_info` function." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Maximum concentration in positive electrode [mol.m-3] (Parameter)\n", + "Negative electrode Bruggeman coefficient (electrolyte) (Parameter)\n", + "Negative electrode thickness [m] (Parameter)\n", + "Positive electrode Bruggeman coefficient (electrode) (Parameter)\n", + "Positive electrode electrons in reaction (Parameter)\n", + "Initial temperature [K] (Parameter)\n", + "Typical current [A] (Parameter)\n", + "Number of electrodes connected in parallel to make a cell (Parameter)\n", + "Electrode width [m] (Parameter)\n", + "Lower voltage cut-off [V] (Parameter)\n", + "Upper voltage cut-off [V] (Parameter)\n", + "Maximum concentration in negative electrode [mol.m-3] (Parameter)\n", + "Nominal cell capacity [A.h] (Parameter)\n", + "Separator thickness [m] (Parameter)\n", + "Negative electrode Bruggeman coefficient (electrode) (Parameter)\n", + "Positive electrode Bruggeman coefficient (electrolyte) (Parameter)\n", + "Number of cells connected in series to make a battery (Parameter)\n", + "Typical electrolyte concentration [mol.m-3] (Parameter)\n", + "Separator Bruggeman coefficient (electrolyte) (Parameter)\n", + "Electrode height [m] (Parameter)\n", + "Positive electrode thickness [m] (Parameter)\n", + "Negative electrode electrons in reaction (Parameter)\n", + "Reference temperature [K] (Parameter)\n", + "Positive electrode OCP entropic change [V.K-1] (FunctionParameter with input(s) 'Positive particle stoichiometry', 'Positive particle maximum concentration [mol.m-3]')\n", + "Positive particle radius [m] (FunctionParameter with input(s) 'Through-cell distance (x) [m]')\n", + "Initial concentration in negative electrode [mol.m-3] (FunctionParameter with input(s) 'Radial distance (r) [m]', 'Through-cell distance (x) [m]')\n", + "Positive electrode OCP [V] (FunctionParameter with input(s) 'Positive particle stoichiometry')\n", + "Positive electrode diffusivity [m2.s-1] (FunctionParameter with input(s) 'Positive particle stoichiometry', 'Temperature [K]')\n", + "Negative electrode OCP [V] (FunctionParameter with input(s) 'Negative particle stoichiometry')\n", + "Negative electrode OCP entropic change [V.K-1] (FunctionParameter with input(s) 'Negative particle stoichiometry', 'Negative particle maximum concentration [mol.m-3]')\n", + "Negative electrode exchange-current density [A.m-2] (FunctionParameter with input(s) 'Electrolyte concentration [mol.m-3]', 'Negative particle surface concentration [mol.m-3]', 'Negative particle maximum concentration [mol.m-3]', 'Temperature [K]')\n", + "Negative electrode diffusivity [m2.s-1] (FunctionParameter with input(s) 'Negative particle stoichiometry', 'Temperature [K]')\n", + "Initial concentration in positive electrode [mol.m-3] (FunctionParameter with input(s) 'Radial distance (r) [m]', 'Through-cell distance (x) [m]')\n", + "Positive electrode exchange-current density [A.m-2] (FunctionParameter with input(s) 'Electrolyte concentration [mol.m-3]', 'Positive particle surface concentration [mol.m-3]', 'Positive particle maximum concentration [mol.m-3]', 'Temperature [K]')\n", + "Negative electrode active material volume fraction (FunctionParameter with input(s) 'Through-cell distance (x) [m]')\n", + "Separator porosity (FunctionParameter with input(s) 'Through-cell distance (x) [m]')\n", + "Current function [A] (FunctionParameter with input(s) 'Time [s]')\n", + "Negative electrode porosity (FunctionParameter with input(s) 'Through-cell distance (x) [m]')\n", + "Positive electrode active material volume fraction (FunctionParameter with input(s) 'Through-cell distance (x) [m]')\n", + "Ambient temperature [K] (FunctionParameter with input(s) 'Time [s]')\n", + "Positive electrode porosity (FunctionParameter with input(s) 'Through-cell distance (x) [m]')\n", + "Negative particle radius [m] (FunctionParameter with input(s) 'Through-cell distance (x) [m]')\n", + "\n" + ] + } + ], + "source": [ + "spm.print_parameter_info()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that there are no `InputParameter` objects in the default SPM. Also, note that if a `FunctionParameter` is expected, it is ok to provide a scalar (parameter) instead. However, if a `Parameter` is expected, you cannot provide a function instead." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Another way to view what parameters are needed is to print the default parameter values. This can also be used to get some good defaults (but care must be taken when combining parameters across datasets and chemistries)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Negative electrode thickness [m]': 0.0001,\n", + " 'Separator thickness [m]': 2.5e-05,\n", + " 'Positive electrode thickness [m]': 0.0001,\n", + " 'Electrode height [m]': 0.137,\n", + " 'Electrode width [m]': 0.207,\n", + " 'Nominal cell capacity [A.h]': 0.680616,\n", + " 'Typical current [A]': 0.680616,\n", + " 'Current function [A]': 0.680616,\n", + " 'Maximum concentration in negative electrode [mol.m-3]': 24983.2619938437,\n", + " 'Negative electrode diffusivity [m2.s-1]': ,\n", + " 'Negative electrode OCP [V]': ,\n", + " 'Negative electrode porosity': 0.3,\n", + " 'Negative electrode active material volume fraction': 0.6,\n", + " 'Negative particle radius [m]': 1e-05,\n", + " 'Negative electrode Bruggeman coefficient (electrolyte)': 1.5,\n", + " 'Negative electrode Bruggeman coefficient (electrode)': 1.5,\n", + " 'Negative electrode electrons in reaction': 1.0,\n", + " 'Negative electrode exchange-current density [A.m-2]': ,\n", + " 'Negative electrode OCP entropic change [V.K-1]': ,\n", + " 'Maximum concentration in positive electrode [mol.m-3]': 51217.9257309275,\n", + " 'Positive electrode diffusivity [m2.s-1]': ,\n", + " 'Positive electrode OCP [V]': ,\n", + " 'Positive electrode porosity': 0.3,\n", + " 'Positive electrode active material volume fraction': 0.5,\n", + " 'Positive particle radius [m]': 1e-05,\n", + " 'Positive electrode Bruggeman coefficient (electrolyte)': 1.5,\n", + " 'Positive electrode Bruggeman coefficient (electrode)': 1.5,\n", + " 'Positive electrode electrons in reaction': 1.0,\n", + " 'Positive electrode exchange-current density [A.m-2]': ,\n", + " 'Positive electrode OCP entropic change [V.K-1]': ,\n", + " 'Separator porosity': 1.0,\n", + " 'Separator Bruggeman coefficient (electrolyte)': 1.5,\n", + " 'Typical electrolyte concentration [mol.m-3]': 1000.0,\n", + " 'Reference temperature [K]': 298.15,\n", + " 'Ambient temperature [K]': 298.15,\n", + " 'Number of electrodes connected in parallel to make a cell': 1.0,\n", + " 'Number of cells connected in series to make a battery': 1.0,\n", + " 'Lower voltage cut-off [V]': 3.105,\n", + " 'Upper voltage cut-off [V]': 4.1,\n", + " 'Initial concentration in negative electrode [mol.m-3]': 19986.609595075,\n", + " 'Initial concentration in positive electrode [mol.m-3]': 30730.7554385565,\n", + " 'Initial temperature [K]': 298.15}" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "{k: v for k,v in spm.default_parameter_values.items() if k in spm._parameter_info}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now define a dictionary of values for `ParameterValues` as before (here, a subset of the `Chen2020` parameters)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Ambient temperature [K]': 298.15,\n", + " 'Current function [A]': 5.0,\n", + " 'Electrode height [m]': 0.065,\n", + " 'Electrode width [m]': 1.58,\n", + " 'Initial concentration in negative electrode [mol.m-3]': 29866.0,\n", + " 'Initial concentration in positive electrode [mol.m-3]': 17038.0,\n", + " 'Initial temperature [K]': 298.15,\n", + " 'Lower voltage cut-off [V]': 2.5,\n", + " 'Maximum concentration in negative electrode [mol.m-3]': 33133.0,\n", + " 'Maximum concentration in positive electrode [mol.m-3]': 63104.0,\n", + " 'Negative electrode Bruggeman coefficient (electrode)': 1.5,\n", + " 'Negative electrode Bruggeman coefficient (electrolyte)': 1.5,\n", + " 'Negative electrode OCP [V]': ('graphite_LGM50_ocp_Chen2020',\n", + " ([array([0. , 0.03129623, 0.03499902, 0.0387018 , 0.04240458,\n", + " 0.04610736, 0.04981015, 0.05351292, 0.05721568, 0.06091845,\n", + " 0.06462122, 0.06832399, 0.07202675, 0.07572951, 0.07943227,\n", + " 0.08313503, 0.08683779, 0.09054054, 0.09424331, 0.09794607,\n", + " 0.10164883, 0.10535158, 0.10905434, 0.1127571 , 0.11645985,\n", + " 0.12016261, 0.12386536, 0.12756811, 0.13127086, 0.13497362,\n", + " 0.13867638, 0.14237913, 0.14608189, 0.14978465, 0.15348741,\n", + " 0.15719018, 0.16089294, 0.1645957 , 0.16829847, 0.17200122,\n", + " 0.17570399, 0.17940674, 0.1831095 , 0.18681229, 0.19051504,\n", + " 0.1942178 , 0.19792056, 0.20162334, 0.2053261 , 0.20902886,\n", + " 0.21273164, 0.2164344 , 0.22013716, 0.22383993, 0.2275427 ,\n", + " 0.23124547, 0.23494825, 0.23865101, 0.24235377, 0.24605653,\n", + " 0.2497593 , 0.25346208, 0.25716486, 0.26086762, 0.26457039,\n", + " 0.26827314, 0.2719759 , 0.27567867, 0.27938144, 0.28308421,\n", + " 0.28678698, 0.29048974, 0.29419251, 0.29789529, 0.30159806,\n", + " 0.30530083, 0.30900361, 0.31270637, 0.31640913, 0.32011189,\n", + " 0.32381466, 0.32751744, 0.33122021, 0.33492297, 0.33862575,\n", + " 0.34232853, 0.34603131, 0.34973408, 0.35343685, 0.35713963,\n", + " 0.36084241, 0.36454517, 0.36824795, 0.37195071, 0.37565348,\n", + " 0.37935626, 0.38305904, 0.38676182, 0.3904646 , 0.39416737,\n", + " 0.39787015, 0.40157291, 0.40527567, 0.40897844, 0.41268121,\n", + " 0.41638398, 0.42008676, 0.42378953, 0.4274923 , 0.43119506,\n", + " 0.43489784, 0.43860061, 0.44230338, 0.44600615, 0.44970893,\n", + " 0.45341168, 0.45711444, 0.46081719, 0.46451994, 0.46822269,\n", + " 0.47192545, 0.47562821, 0.47933098, 0.48303375, 0.48673651,\n", + " 0.49043926, 0.49414203, 0.49784482, 0.50154759, 0.50525036,\n", + " 0.50895311, 0.51265586, 0.51635861, 0.52006139, 0.52376415,\n", + " 0.52746692, 0.53116969, 0.53487245, 0.53857521, 0.54227797,\n", + " 0.54598074, 0.5496835 , 0.55338627, 0.55708902, 0.56079178,\n", + " 0.56449454, 0.5681973 , 0.57190006, 0.57560282, 0.57930558,\n", + " 0.58300835, 0.58671112, 0.59041389, 0.59411664, 0.59781941,\n", + " 0.60152218, 0.60522496, 0.60892772, 0.61263048, 0.61633325,\n", + " 0.62003603, 0.6237388 , 0.62744156, 0.63114433, 0.63484711,\n", + " 0.63854988, 0.64225265, 0.64595543, 0.64965823, 0.653361 ,\n", + " 0.65706377, 0.66076656, 0.66446934, 0.66817212, 0.67187489,\n", + " 0.67557767, 0.67928044, 0.68298322, 0.686686 , 0.69038878,\n", + " 0.69409156, 0.69779433, 0.70149709, 0.70519988, 0.70890264,\n", + " 0.7126054 , 0.71630818, 0.72001095, 0.72371371, 0.72741648,\n", + " 0.73111925, 0.73482204, 0.7385248 , 0.74222757, 0.74593034,\n", + " 0.74963312, 0.75333589, 0.75703868, 0.76074146, 0.76444422,\n", + " 0.76814698, 0.77184976, 0.77555253, 0.77925531, 0.78295807,\n", + " 0.78666085, 0.79036364, 0.79406641, 0.79776918, 0.80147197,\n", + " 0.80517474, 0.80887751, 0.81258028, 0.81628304, 0.81998581,\n", + " 0.82368858, 0.82739136, 0.83109411, 0.83479688, 0.83849965,\n", + " 0.84220242, 0.84590519, 0.84960797, 0.85331075, 0.85701353,\n", + " 0.86071631, 0.86441907, 0.86812186, 0.87182464, 0.87552742,\n", + " 0.87923019, 0.88293296, 0.88663573, 0.89033849, 0.89404126,\n", + " 0.89774404, 0.9014468 , 1. ])],\n", + " array([1.81772748, 1.0828807 , 0.99593794, 0.90023398, 0.79649431,\n", + " 0.73354429, 0.66664314, 0.64137149, 0.59813869, 0.5670836 ,\n", + " 0.54746181, 0.53068399, 0.51304734, 0.49394092, 0.47926274,\n", + " 0.46065259, 0.45992726, 0.43801501, 0.42438665, 0.41150269,\n", + " 0.40033659, 0.38957134, 0.37756538, 0.36292541, 0.34357086,\n", + " 0.3406314 , 0.32299468, 0.31379458, 0.30795386, 0.29207319,\n", + " 0.28697687, 0.27405477, 0.2670497 , 0.25857493, 0.25265783,\n", + " 0.24826777, 0.2414345 , 0.23362778, 0.22956218, 0.22370236,\n", + " 0.22181271, 0.22089651, 0.2194268 , 0.21830064, 0.21845333,\n", + " 0.21753715, 0.21719357, 0.21635373, 0.21667822, 0.21738444,\n", + " 0.21469313, 0.21541846, 0.21465495, 0.2135479 , 0.21392964,\n", + " 0.21074206, 0.20873788, 0.20465319, 0.20205732, 0.19774358,\n", + " 0.19444147, 0.19190285, 0.18850531, 0.18581399, 0.18327537,\n", + " 0.18157659, 0.17814088, 0.17529686, 0.1719375 , 0.16934161,\n", + " 0.16756649, 0.16609676, 0.16414985, 0.16260378, 0.16224113,\n", + " 0.160027 , 0.15827096, 0.1588054 , 0.15552238, 0.15580869,\n", + " 0.15220118, 0.1511132 , 0.14987253, 0.14874637, 0.14678037,\n", + " 0.14620776, 0.14555879, 0.14389819, 0.14359279, 0.14242846,\n", + " 0.14038612, 0.13882096, 0.13954628, 0.13946992, 0.13780934,\n", + " 0.13973714, 0.13698858, 0.13523254, 0.13441178, 0.1352898 ,\n", + " 0.13507985, 0.13647321, 0.13601512, 0.13435452, 0.1334765 ,\n", + " 0.1348317 , 0.13275118, 0.13286571, 0.13263667, 0.13456447,\n", + " 0.13471718, 0.13395369, 0.13448814, 0.1334765 , 0.13298023,\n", + " 0.13259849, 0.13338107, 0.13309476, 0.13275118, 0.13443087,\n", + " 0.13315202, 0.132713 , 0.1330184 , 0.13278936, 0.13225491,\n", + " 0.13317111, 0.13263667, 0.13187316, 0.13265574, 0.13250305,\n", + " 0.13324745, 0.13204496, 0.13242669, 0.13233127, 0.13198769,\n", + " 0.13254122, 0.13145325, 0.13298023, 0.13168229, 0.1313578 ,\n", + " 0.13235036, 0.13120511, 0.13089971, 0.13109058, 0.13082336,\n", + " 0.13011713, 0.129869 , 0.12992626, 0.12942998, 0.12796026,\n", + " 0.12862831, 0.12656689, 0.12734947, 0.12509716, 0.12110791,\n", + " 0.11839751, 0.11244226, 0.11307214, 0.1092165 , 0.10683058,\n", + " 0.10433014, 0.10530359, 0.10056993, 0.09950104, 0.09854668,\n", + " 0.09921473, 0.09541635, 0.09980643, 0.0986612 , 0.09560722,\n", + " 0.09755413, 0.09612258, 0.09430929, 0.09661885, 0.09366032,\n", + " 0.09522548, 0.09535909, 0.09316404, 0.09450016, 0.0930877 ,\n", + " 0.09343126, 0.0932404 , 0.09350762, 0.09339309, 0.09291591,\n", + " 0.09303043, 0.0926296 , 0.0932404 , 0.09261052, 0.09249599,\n", + " 0.09240055, 0.09253416, 0.09209515, 0.09234329, 0.09366032,\n", + " 0.09333583, 0.09322131, 0.09264868, 0.09253416, 0.09243873,\n", + " 0.09230512, 0.09310678, 0.09165615, 0.09159888, 0.09207606,\n", + " 0.09175158, 0.09177067, 0.09236237, 0.09241964, 0.09320222,\n", + " 0.09199972, 0.09167523, 0.09322131, 0.09190428, 0.09167523,\n", + " 0.09285865, 0.09180884, 0.09150345, 0.09186611, 0.0920188 ,\n", + " 0.09320222, 0.09131257, 0.09117896, 0.09133166, 0.09089265,\n", + " 0.09058725, 0.09051091, 0.09033912, 0.09041547, 0.0911217 ,\n", + " 0.0894611 , 0.08999555, 0.08921297, 0.08881213, 0.08797229,\n", + " 0.08709427, 0.08503284, 0.07601531]))),\n", + " 'Negative electrode OCP entropic change [V.K-1]': 0.0,\n", + " 'Negative electrode active material volume fraction': 0.75,\n", + " 'Negative electrode diffusivity [m2.s-1]': 3.3e-14,\n", + " 'Negative electrode electrons in reaction': 1.0,\n", + " 'Negative electrode exchange-current density [A.m-2]': ,\n", + " 'Negative electrode porosity': 0.25,\n", + " 'Negative electrode thickness [m]': 8.52e-05,\n", + " 'Negative particle radius [m]': 5.86e-06,\n", + " 'Nominal cell capacity [A.h]': 5.0,\n", + " 'Number of cells connected in series to make a battery': 1.0,\n", + " 'Number of electrodes connected in parallel to make a cell': 1.0,\n", + " 'Positive electrode Bruggeman coefficient (electrode)': 1.5,\n", + " 'Positive electrode Bruggeman coefficient (electrolyte)': 1.5,\n", + " 'Positive electrode OCP [V]': ('nmc_LGM50_ocp_Chen2020',\n", + " ([array([0.24879728, 0.26614516, 0.26886763, 0.27159011, 0.27431258,\n", + " 0.27703505, 0.27975753, 0.28248 , 0.28520247, 0.28792495,\n", + " 0.29064743, 0.29336992, 0.29609239, 0.29881487, 0.30153735,\n", + " 0.30425983, 0.30698231, 0.30970478, 0.31242725, 0.31514973,\n", + " 0.3178722 , 0.32059466, 0.32331714, 0.32603962, 0.32876209,\n", + " 0.33148456, 0.33420703, 0.3369295 , 0.33965197, 0.34237446,\n", + " 0.34509694, 0.34781941, 0.3505419 , 0.35326438, 0.35598685,\n", + " 0.35870932, 0.3614318 , 0.36415428, 0.36687674, 0.36959921,\n", + " 0.37232169, 0.37504418, 0.37776665, 0.38048913, 0.38321161,\n", + " 0.38593408, 0.38865655, 0.39137903, 0.39410151, 0.39682398,\n", + " 0.39954645, 0.40226892, 0.4049914 , 0.40771387, 0.41043634,\n", + " 0.41315882, 0.41588129, 0.41860377, 0.42132624, 0.42404872,\n", + " 0.4267712 , 0.42949368, 0.43221616, 0.43493864, 0.43766111,\n", + " 0.44038359, 0.44310607, 0.44582856, 0.44855103, 0.45127351,\n", + " 0.453996 , 0.45671848, 0.45944095, 0.46216343, 0.46488592,\n", + " 0.46760838, 0.47033085, 0.47305333, 0.47577581, 0.47849828,\n", + " 0.48122074, 0.48394321, 0.48666569, 0.48938816, 0.49211064,\n", + " 0.4948331 , 0.49755557, 0.50027804, 0.50300052, 0.50572298,\n", + " 0.50844545, 0.51116792, 0.51389038, 0.51661284, 0.51933531,\n", + " 0.52205777, 0.52478024, 0.52750271, 0.53022518, 0.53294765,\n", + " 0.53567012, 0.53839258, 0.54111506, 0.54383753, 0.54656 ,\n", + " 0.54928247, 0.55200494, 0.5547274 , 0.55744986, 0.56017233,\n", + " 0.5628948 , 0.56561729, 0.56833976, 0.57106222, 0.57378469,\n", + " 0.57650716, 0.57922963, 0.5819521 , 0.58467456, 0.58739702,\n", + " 0.59011948, 0.59284194, 0.5955644 , 0.59828687, 0.60100935,\n", + " 0.60373182, 0.60645429, 0.60917677, 0.61189925, 0.61462172,\n", + " 0.61734419, 0.62006666, 0.62278914, 0.62551162, 0.62823408,\n", + " 0.63095656, 0.63367903, 0.6364015 , 0.63912397, 0.64184645,\n", + " 0.64456893, 0.6472914 , 0.65001389, 0.65273637, 0.65545884,\n", + " 0.65818131, 0.66090379, 0.66362625, 0.66634874, 0.66907121,\n", + " 0.67179369, 0.67451616, 0.67723865, 0.67996113, 0.68268361,\n", + " 0.68540608, 0.68812855, 0.69085103, 0.6935735 , 0.69629597,\n", + " 0.69901843, 0.7017409 , 0.70446338, 0.70718585, 0.70990833,\n", + " 0.71263081, 0.71535328, 0.71807574, 0.72079822, 0.72352069,\n", + " 0.72624317, 0.72896564, 0.7316881 , 0.73441057, 0.73713303,\n", + " 0.73985551, 0.74257799, 0.74530047, 0.74802293, 0.7507454 ,\n", + " 0.75346787, 0.75619034, 0.75891281, 0.76163529, 0.76435776,\n", + " 0.76708024, 0.7698027 , 0.77252517, 0.77524765, 0.77797012,\n", + " 0.78069258, 0.78341506, 0.78613753, 0.78885999, 0.79158246,\n", + " 0.79430494, 0.79702741, 0.79974987, 0.80247234, 0.8051948 ,\n", + " 0.80791727, 0.81063974, 0.81336221, 0.81608468, 0.81880714,\n", + " 0.82152961, 0.82425208, 0.82697453, 0.829697 , 0.83241946,\n", + " 0.83514192, 0.83786439, 0.84058684, 0.84330931, 0.84603177,\n", + " 0.84875424, 0.8514767 , 0.85419916, 0.85692162, 0.85964409,\n", + " 0.86236656, 0.86508902, 0.86781149, 0.87053395, 0.87325642,\n", + " 0.87597888, 0.87870135, 0.88142383, 0.8841463 , 0.88686877,\n", + " 0.88959124, 0.89231371, 0.8950362 , 0.89775868, 0.90048116,\n", + " 0.90320364, 0.90592613, 1. ])],\n", + " array([4.4 , 4.2935653 , 4.2768621 , 4.2647018 , 4.2540312 ,\n", + " 4.2449446 , 4.2364879 , 4.2302647 , 4.2225528 , 4.2182574 ,\n", + " 4.213294 , 4.2090373 , 4.2051239 , 4.2012677 , 4.1981564 ,\n", + " 4.1955218 , 4.1931167 , 4.1889744 , 4.1881533 , 4.1865883 ,\n", + " 4.1850228 , 4.1832285 , 4.1808805 , 4.1805749 , 4.1789522 ,\n", + " 4.1768146 , 4.1768146 , 4.1752872 , 4.173111 , 4.1726718 ,\n", + " 4.1710877 , 4.1702285 , 4.168797 , 4.1669831 , 4.1655135 ,\n", + " 4.1634517 , 4.1598248 , 4.1571712 , 4.154079 , 4.1504135 ,\n", + " 4.1466532 , 4.1423388 , 4.1382346 , 4.1338248 , 4.1305799 ,\n", + " 4.1272392 , 4.1228104 , 4.1186109 , 4.114182 , 4.1096005 ,\n", + " 4.1046948 , 4.1004758 , 4.0956464 , 4.0909696 , 4.0864644 ,\n", + " 4.0818448 , 4.077683 , 4.0733309 , 4.0690737 , 4.0647216 ,\n", + " 4.0608654 , 4.0564747 , 4.0527525 , 4.0492401 , 4.0450211 ,\n", + " 4.041986 , 4.0384736 , 4.035171 , 4.0320406 , 4.0289288 ,\n", + " 4.02597 , 4.0227437 , 4.0199757 , 4.0175133 , 4.0149746 ,\n", + " 4.0122066 , 4.009954 , 4.0075679 , 4.0050669 , 4.0023184 ,\n", + " 3.9995501 , 3.9969349 , 3.9926589 , 3.9889555 , 3.9834003 ,\n", + " 3.9783037 , 3.9755929 , 3.9707632 , 3.9681098 , 3.9635665 ,\n", + " 3.9594433 , 3.9556634 , 3.9521511 , 3.9479132 , 3.9438281 ,\n", + " 3.9400866 , 3.9362304 , 3.9314201 , 3.9283848 , 3.9242232 ,\n", + " 3.9192028 , 3.9166257 , 3.9117961 , 3.90815 , 3.9038739 ,\n", + " 3.8995597 , 3.8959136 , 3.8909314 , 3.8872662 , 3.8831048 ,\n", + " 3.8793442 , 3.8747628 , 3.8702576 , 3.8666878 , 3.8623927 ,\n", + " 3.8581741 , 3.854146 , 3.8499846 , 3.8450022 , 3.8422534 ,\n", + " 3.8380919 , 3.8341596 , 3.8309333 , 3.8272109 , 3.823164 ,\n", + " 3.8192315 , 3.8159864 , 3.8123021 , 3.8090379 , 3.8071671 ,\n", + " 3.8040555 , 3.8013639 , 3.7970879 , 3.7953317 , 3.7920673 ,\n", + " 3.788383 , 3.7855389 , 3.7838206 , 3.78111 , 3.7794874 ,\n", + " 3.7769294 , 3.773608 , 3.7695992 , 3.7690265 , 3.7662776 ,\n", + " 3.7642922 , 3.7626889 , 3.7603791 , 3.7575538 , 3.7552056 ,\n", + " 3.7533159 , 3.7507198 , 3.7487535 , 3.7471499 , 3.7442865 ,\n", + " 3.7423012 , 3.7400677 , 3.7385788 , 3.7345319 , 3.7339211 ,\n", + " 3.7301605 , 3.7301033 , 3.7278316 , 3.7251589 , 3.723861 ,\n", + " 3.7215703 , 3.7191267 , 3.7172751 , 3.7157097 , 3.7130945 ,\n", + " 3.7099447 , 3.7071004 , 3.7045615 , 3.703588 , 3.70208 ,\n", + " 3.7002664 , 3.6972122 , 3.6952841 , 3.6929362 , 3.6898055 ,\n", + " 3.6890991 , 3.686522 , 3.6849759 , 3.6821697 , 3.6808143 ,\n", + " 3.6786573 , 3.6761947 , 3.674763 , 3.6712887 , 3.6697233 ,\n", + " 3.6678908 , 3.6652565 , 3.6630611 , 3.660274 , 3.6583652 ,\n", + " 3.6554828 , 3.6522949 , 3.6499848 , 3.6470451 , 3.6405547 ,\n", + " 3.6383405 , 3.635076 , 3.633549 , 3.6322317 , 3.6306856 ,\n", + " 3.6283948 , 3.6268487 , 3.6243098 , 3.6223626 , 3.6193655 ,\n", + " 3.6177621 , 3.6158531 , 3.6128371 , 3.6118062 , 3.6094582 ,\n", + " 3.6072438 , 3.6049912 , 3.6030822 , 3.6012688 , 3.5995889 ,\n", + " 3.5976417 , 3.5951984 , 3.593843 , 3.5916286 , 3.5894907 ,\n", + " 3.587429 , 3.5852909 , 3.5834775 , 3.5817785 , 3.5801177 ,\n", + " 3.5778842 , 3.5763381 , 3.5737801 , 3.5721002 , 3.5702102 ,\n", + " 3.5684922 , 3.5672133 , 3.52302167]))),\n", + " 'Positive electrode OCP entropic change [V.K-1]': 0.0,\n", + " 'Positive electrode active material volume fraction': 0.665,\n", + " 'Positive electrode diffusivity [m2.s-1]': 4e-15,\n", + " 'Positive electrode electrons in reaction': 1.0,\n", + " 'Positive electrode exchange-current density [A.m-2]': ,\n", + " 'Positive electrode porosity': 0.335,\n", + " 'Positive electrode thickness [m]': 7.56e-05,\n", + " 'Positive particle radius [m]': 5.22e-06,\n", + " 'Reference temperature [K]': 298.15,\n", + " 'Separator Bruggeman coefficient (electrolyte)': 1.5,\n", + " 'Separator porosity': 0.47,\n", + " 'Separator thickness [m]': 1.2e-05,\n", + " 'Typical current [A]': 5.0,\n", + " 'Typical electrolyte concentration [mol.m-3]': 1000.0,\n", + " 'Upper voltage cut-off [V]': 4.4}" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def graphite_mcmb2528_diffusivity_Dualfoil1998(sto, T):\n", + " D_ref = 3.9 * 10 ** (-14)\n", + " E_D_s = 42770\n", + " arrhenius = exp(E_D_s / constants.R * (1 / 298.15 - 1 / T))\n", + " return D_ref * arrhenius\n", + "\n", + "neg_ocp = np.array([[0. , 1.81772748],\n", + " [0.03129623, 1.0828807 ],\n", + " [0.03499902, 0.99593794],\n", + " [0.0387018 , 0.90023398],\n", + " [0.04240458, 0.79649431],\n", + " [0.04610736, 0.73354429],\n", + " [0.04981015, 0.66664314],\n", + " [0.05351292, 0.64137149],\n", + " [0.05721568, 0.59813869],\n", + " [0.06091845, 0.5670836 ],\n", + " [0.06462122, 0.54746181],\n", + " [0.06832399, 0.53068399],\n", + " [0.07202675, 0.51304734],\n", + " [0.07572951, 0.49394092],\n", + " [0.07943227, 0.47926274],\n", + " [0.08313503, 0.46065259],\n", + " [0.08683779, 0.45992726],\n", + " [0.09054054, 0.43801501],\n", + " [0.09424331, 0.42438665],\n", + " [0.09794607, 0.41150269],\n", + " [0.10164883, 0.40033659],\n", + " [0.10535158, 0.38957134],\n", + " [0.10905434, 0.37756538],\n", + " [0.1127571 , 0.36292541],\n", + " [0.11645985, 0.34357086],\n", + " [0.12016261, 0.3406314 ],\n", + " [0.12386536, 0.32299468],\n", + " [0.12756811, 0.31379458],\n", + " [0.13127086, 0.30795386],\n", + " [0.13497362, 0.29207319],\n", + " [0.13867638, 0.28697687],\n", + " [0.14237913, 0.27405477],\n", + " [0.14608189, 0.2670497 ],\n", + " [0.14978465, 0.25857493],\n", + " [0.15348741, 0.25265783],\n", + " [0.15719018, 0.24826777],\n", + " [0.16089294, 0.2414345 ],\n", + " [0.1645957 , 0.23362778],\n", + " [0.16829847, 0.22956218],\n", + " [0.17200122, 0.22370236],\n", + " [0.17570399, 0.22181271],\n", + " [0.17940674, 0.22089651],\n", + " [0.1831095 , 0.2194268 ],\n", + " [0.18681229, 0.21830064],\n", + " [0.19051504, 0.21845333],\n", + " [0.1942178 , 0.21753715],\n", + " [0.19792056, 0.21719357],\n", + " [0.20162334, 0.21635373],\n", + " [0.2053261 , 0.21667822],\n", + " [0.20902886, 0.21738444],\n", + " [0.21273164, 0.21469313],\n", + " [0.2164344 , 0.21541846],\n", + " [0.22013716, 0.21465495],\n", + " [0.22383993, 0.2135479 ],\n", + " [0.2275427 , 0.21392964],\n", + " [0.23124547, 0.21074206],\n", + " [0.23494825, 0.20873788],\n", + " [0.23865101, 0.20465319],\n", + " [0.24235377, 0.20205732],\n", + " [0.24605653, 0.19774358],\n", + " [0.2497593 , 0.19444147],\n", + " [0.25346208, 0.19190285],\n", + " [0.25716486, 0.18850531],\n", + " [0.26086762, 0.18581399],\n", + " [0.26457039, 0.18327537],\n", + " [0.26827314, 0.18157659],\n", + " [0.2719759 , 0.17814088],\n", + " [0.27567867, 0.17529686],\n", + " [0.27938144, 0.1719375 ],\n", + " [0.28308421, 0.16934161],\n", + " [0.28678698, 0.16756649],\n", + " [0.29048974, 0.16609676],\n", + " [0.29419251, 0.16414985],\n", + " [0.29789529, 0.16260378],\n", + " [0.30159806, 0.16224113],\n", + " [0.30530083, 0.160027 ],\n", + " [0.30900361, 0.15827096],\n", + " [0.31270637, 0.1588054 ],\n", + " [0.31640913, 0.15552238],\n", + " [0.32011189, 0.15580869],\n", + " [0.32381466, 0.15220118],\n", + " [0.32751744, 0.1511132 ],\n", + " [0.33122021, 0.14987253],\n", + " [0.33492297, 0.14874637],\n", + " [0.33862575, 0.14678037],\n", + " [0.34232853, 0.14620776],\n", + " [0.34603131, 0.14555879],\n", + " [0.34973408, 0.14389819],\n", + " [0.35343685, 0.14359279],\n", + " [0.35713963, 0.14242846],\n", + " [0.36084241, 0.14038612],\n", + " [0.36454517, 0.13882096],\n", + " [0.36824795, 0.13954628],\n", + " [0.37195071, 0.13946992],\n", + " [0.37565348, 0.13780934],\n", + " [0.37935626, 0.13973714],\n", + " [0.38305904, 0.13698858],\n", + " [0.38676182, 0.13523254],\n", + " [0.3904646 , 0.13441178],\n", + " [0.39416737, 0.1352898 ],\n", + " [0.39787015, 0.13507985],\n", + " [0.40157291, 0.13647321],\n", + " [0.40527567, 0.13601512],\n", + " [0.40897844, 0.13435452],\n", + " [0.41268121, 0.1334765 ],\n", + " [0.41638398, 0.1348317 ],\n", + " [0.42008676, 0.13275118],\n", + " [0.42378953, 0.13286571],\n", + " [0.4274923 , 0.13263667],\n", + " [0.43119506, 0.13456447],\n", + " [0.43489784, 0.13471718],\n", + " [0.43860061, 0.13395369],\n", + " [0.44230338, 0.13448814],\n", + " [0.44600615, 0.1334765 ],\n", + " [0.44970893, 0.13298023],\n", + " [0.45341168, 0.13259849],\n", + " [0.45711444, 0.13338107],\n", + " [0.46081719, 0.13309476],\n", + " [0.46451994, 0.13275118],\n", + " [0.46822269, 0.13443087],\n", + " [0.47192545, 0.13315202],\n", + " [0.47562821, 0.132713 ],\n", + " [0.47933098, 0.1330184 ],\n", + " [0.48303375, 0.13278936],\n", + " [0.48673651, 0.13225491],\n", + " [0.49043926, 0.13317111],\n", + " [0.49414203, 0.13263667],\n", + " [0.49784482, 0.13187316],\n", + " [0.50154759, 0.13265574],\n", + " [0.50525036, 0.13250305],\n", + " [0.50895311, 0.13324745],\n", + " [0.51265586, 0.13204496],\n", + " [0.51635861, 0.13242669],\n", + " [0.52006139, 0.13233127],\n", + " [0.52376415, 0.13198769],\n", + " [0.52746692, 0.13254122],\n", + " [0.53116969, 0.13145325],\n", + " [0.53487245, 0.13298023],\n", + " [0.53857521, 0.13168229],\n", + " [0.54227797, 0.1313578 ],\n", + " [0.54598074, 0.13235036],\n", + " [0.5496835 , 0.13120511],\n", + " [0.55338627, 0.13089971],\n", + " [0.55708902, 0.13109058],\n", + " [0.56079178, 0.13082336],\n", + " [0.56449454, 0.13011713],\n", + " [0.5681973 , 0.129869 ],\n", + " [0.57190006, 0.12992626],\n", + " [0.57560282, 0.12942998],\n", + " [0.57930558, 0.12796026],\n", + " [0.58300835, 0.12862831],\n", + " [0.58671112, 0.12656689],\n", + " [0.59041389, 0.12734947],\n", + " [0.59411664, 0.12509716],\n", + " [0.59781941, 0.12110791],\n", + " [0.60152218, 0.11839751],\n", + " [0.60522496, 0.11244226],\n", + " [0.60892772, 0.11307214],\n", + " [0.61263048, 0.1092165 ],\n", + " [0.61633325, 0.10683058],\n", + " [0.62003603, 0.10433014],\n", + " [0.6237388 , 0.10530359],\n", + " [0.62744156, 0.10056993],\n", + " [0.63114433, 0.09950104],\n", + " [0.63484711, 0.09854668],\n", + " [0.63854988, 0.09921473],\n", + " [0.64225265, 0.09541635],\n", + " [0.64595543, 0.09980643],\n", + " [0.64965823, 0.0986612 ],\n", + " [0.653361 , 0.09560722],\n", + " [0.65706377, 0.09755413],\n", + " [0.66076656, 0.09612258],\n", + " [0.66446934, 0.09430929],\n", + " [0.66817212, 0.09661885],\n", + " [0.67187489, 0.09366032],\n", + " [0.67557767, 0.09522548],\n", + " [0.67928044, 0.09535909],\n", + " [0.68298322, 0.09316404],\n", + " [0.686686 , 0.09450016],\n", + " [0.69038878, 0.0930877 ],\n", + " [0.69409156, 0.09343126],\n", + " [0.69779433, 0.0932404 ],\n", + " [0.70149709, 0.09350762],\n", + " [0.70519988, 0.09339309],\n", + " [0.70890264, 0.09291591],\n", + " [0.7126054 , 0.09303043],\n", + " [0.71630818, 0.0926296 ],\n", + " [0.72001095, 0.0932404 ],\n", + " [0.72371371, 0.09261052],\n", + " [0.72741648, 0.09249599],\n", + " [0.73111925, 0.09240055],\n", + " [0.73482204, 0.09253416],\n", + " [0.7385248 , 0.09209515],\n", + " [0.74222757, 0.09234329],\n", + " [0.74593034, 0.09366032],\n", + " [0.74963312, 0.09333583],\n", + " [0.75333589, 0.09322131],\n", + " [0.75703868, 0.09264868],\n", + " [0.76074146, 0.09253416],\n", + " [0.76444422, 0.09243873],\n", + " [0.76814698, 0.09230512],\n", + " [0.77184976, 0.09310678],\n", + " [0.77555253, 0.09165615],\n", + " [0.77925531, 0.09159888],\n", + " [0.78295807, 0.09207606],\n", + " [0.78666085, 0.09175158],\n", + " [0.79036364, 0.09177067],\n", + " [0.79406641, 0.09236237],\n", + " [0.79776918, 0.09241964],\n", + " [0.80147197, 0.09320222],\n", + " [0.80517474, 0.09199972],\n", + " [0.80887751, 0.09167523],\n", + " [0.81258028, 0.09322131],\n", + " [0.81628304, 0.09190428],\n", + " [0.81998581, 0.09167523],\n", + " [0.82368858, 0.09285865],\n", + " [0.82739136, 0.09180884],\n", + " [0.83109411, 0.09150345],\n", + " [0.83479688, 0.09186611],\n", + " [0.83849965, 0.0920188 ],\n", + " [0.84220242, 0.09320222],\n", + " [0.84590519, 0.09131257],\n", + " [0.84960797, 0.09117896],\n", + " [0.85331075, 0.09133166],\n", + " [0.85701353, 0.09089265],\n", + " [0.86071631, 0.09058725],\n", + " [0.86441907, 0.09051091],\n", + " [0.86812186, 0.09033912],\n", + " [0.87182464, 0.09041547],\n", + " [0.87552742, 0.0911217 ],\n", + " [0.87923019, 0.0894611 ],\n", + " [0.88293296, 0.08999555],\n", + " [0.88663573, 0.08921297],\n", + " [0.89033849, 0.08881213],\n", + " [0.89404126, 0.08797229],\n", + " [0.89774404, 0.08709427],\n", + " [0.9014468 , 0.08503284],\n", + " [1. , 0.07601531]])\n", + "\n", + "pos_ocp = np.array([[0.24879728, 4.4 ],\n", + " [0.26614516, 4.2935653 ],\n", + " [0.26886763, 4.2768621 ],\n", + " [0.27159011, 4.2647018 ],\n", + " [0.27431258, 4.2540312 ],\n", + " [0.27703505, 4.2449446 ],\n", + " [0.27975753, 4.2364879 ],\n", + " [0.28248 , 4.2302647 ],\n", + " [0.28520247, 4.2225528 ],\n", + " [0.28792495, 4.2182574 ],\n", + " [0.29064743, 4.213294 ],\n", + " [0.29336992, 4.2090373 ],\n", + " [0.29609239, 4.2051239 ],\n", + " [0.29881487, 4.2012677 ],\n", + " [0.30153735, 4.1981564 ],\n", + " [0.30425983, 4.1955218 ],\n", + " [0.30698231, 4.1931167 ],\n", + " [0.30970478, 4.1889744 ],\n", + " [0.31242725, 4.1881533 ],\n", + " [0.31514973, 4.1865883 ],\n", + " [0.3178722 , 4.1850228 ],\n", + " [0.32059466, 4.1832285 ],\n", + " [0.32331714, 4.1808805 ],\n", + " [0.32603962, 4.1805749 ],\n", + " [0.32876209, 4.1789522 ],\n", + " [0.33148456, 4.1768146 ],\n", + " [0.33420703, 4.1768146 ],\n", + " [0.3369295 , 4.1752872 ],\n", + " [0.33965197, 4.173111 ],\n", + " [0.34237446, 4.1726718 ],\n", + " [0.34509694, 4.1710877 ],\n", + " [0.34781941, 4.1702285 ],\n", + " [0.3505419 , 4.168797 ],\n", + " [0.35326438, 4.1669831 ],\n", + " [0.35598685, 4.1655135 ],\n", + " [0.35870932, 4.1634517 ],\n", + " [0.3614318 , 4.1598248 ],\n", + " [0.36415428, 4.1571712 ],\n", + " [0.36687674, 4.154079 ],\n", + " [0.36959921, 4.1504135 ],\n", + " [0.37232169, 4.1466532 ],\n", + " [0.37504418, 4.1423388 ],\n", + " [0.37776665, 4.1382346 ],\n", + " [0.38048913, 4.1338248 ],\n", + " [0.38321161, 4.1305799 ],\n", + " [0.38593408, 4.1272392 ],\n", + " [0.38865655, 4.1228104 ],\n", + " [0.39137903, 4.1186109 ],\n", + " [0.39410151, 4.114182 ],\n", + " [0.39682398, 4.1096005 ],\n", + " [0.39954645, 4.1046948 ],\n", + " [0.40226892, 4.1004758 ],\n", + " [0.4049914 , 4.0956464 ],\n", + " [0.40771387, 4.0909696 ],\n", + " [0.41043634, 4.0864644 ],\n", + " [0.41315882, 4.0818448 ],\n", + " [0.41588129, 4.077683 ],\n", + " [0.41860377, 4.0733309 ],\n", + " [0.42132624, 4.0690737 ],\n", + " [0.42404872, 4.0647216 ],\n", + " [0.4267712 , 4.0608654 ],\n", + " [0.42949368, 4.0564747 ],\n", + " [0.43221616, 4.0527525 ],\n", + " [0.43493864, 4.0492401 ],\n", + " [0.43766111, 4.0450211 ],\n", + " [0.44038359, 4.041986 ],\n", + " [0.44310607, 4.0384736 ],\n", + " [0.44582856, 4.035171 ],\n", + " [0.44855103, 4.0320406 ],\n", + " [0.45127351, 4.0289288 ],\n", + " [0.453996 , 4.02597 ],\n", + " [0.45671848, 4.0227437 ],\n", + " [0.45944095, 4.0199757 ],\n", + " [0.46216343, 4.0175133 ],\n", + " [0.46488592, 4.0149746 ],\n", + " [0.46760838, 4.0122066 ],\n", + " [0.47033085, 4.009954 ],\n", + " [0.47305333, 4.0075679 ],\n", + " [0.47577581, 4.0050669 ],\n", + " [0.47849828, 4.0023184 ],\n", + " [0.48122074, 3.9995501 ],\n", + " [0.48394321, 3.9969349 ],\n", + " [0.48666569, 3.9926589 ],\n", + " [0.48938816, 3.9889555 ],\n", + " [0.49211064, 3.9834003 ],\n", + " [0.4948331 , 3.9783037 ],\n", + " [0.49755557, 3.9755929 ],\n", + " [0.50027804, 3.9707632 ],\n", + " [0.50300052, 3.9681098 ],\n", + " [0.50572298, 3.9635665 ],\n", + " [0.50844545, 3.9594433 ],\n", + " [0.51116792, 3.9556634 ],\n", + " [0.51389038, 3.9521511 ],\n", + " [0.51661284, 3.9479132 ],\n", + " [0.51933531, 3.9438281 ],\n", + " [0.52205777, 3.9400866 ],\n", + " [0.52478024, 3.9362304 ],\n", + " [0.52750271, 3.9314201 ],\n", + " [0.53022518, 3.9283848 ],\n", + " [0.53294765, 3.9242232 ],\n", + " [0.53567012, 3.9192028 ],\n", + " [0.53839258, 3.9166257 ],\n", + " [0.54111506, 3.9117961 ],\n", + " [0.54383753, 3.90815 ],\n", + " [0.54656 , 3.9038739 ],\n", + " [0.54928247, 3.8995597 ],\n", + " [0.55200494, 3.8959136 ],\n", + " [0.5547274 , 3.8909314 ],\n", + " [0.55744986, 3.8872662 ],\n", + " [0.56017233, 3.8831048 ],\n", + " [0.5628948 , 3.8793442 ],\n", + " [0.56561729, 3.8747628 ],\n", + " [0.56833976, 3.8702576 ],\n", + " [0.57106222, 3.8666878 ],\n", + " [0.57378469, 3.8623927 ],\n", + " [0.57650716, 3.8581741 ],\n", + " [0.57922963, 3.854146 ],\n", + " [0.5819521 , 3.8499846 ],\n", + " [0.58467456, 3.8450022 ],\n", + " [0.58739702, 3.8422534 ],\n", + " [0.59011948, 3.8380919 ],\n", + " [0.59284194, 3.8341596 ],\n", + " [0.5955644 , 3.8309333 ],\n", + " [0.59828687, 3.8272109 ],\n", + " [0.60100935, 3.823164 ],\n", + " [0.60373182, 3.8192315 ],\n", + " [0.60645429, 3.8159864 ],\n", + " [0.60917677, 3.8123021 ],\n", + " [0.61189925, 3.8090379 ],\n", + " [0.61462172, 3.8071671 ],\n", + " [0.61734419, 3.8040555 ],\n", + " [0.62006666, 3.8013639 ],\n", + " [0.62278914, 3.7970879 ],\n", + " [0.62551162, 3.7953317 ],\n", + " [0.62823408, 3.7920673 ],\n", + " [0.63095656, 3.788383 ],\n", + " [0.63367903, 3.7855389 ],\n", + " [0.6364015 , 3.7838206 ],\n", + " [0.63912397, 3.78111 ],\n", + " [0.64184645, 3.7794874 ],\n", + " [0.64456893, 3.7769294 ],\n", + " [0.6472914 , 3.773608 ],\n", + " [0.65001389, 3.7695992 ],\n", + " [0.65273637, 3.7690265 ],\n", + " [0.65545884, 3.7662776 ],\n", + " [0.65818131, 3.7642922 ],\n", + " [0.66090379, 3.7626889 ],\n", + " [0.66362625, 3.7603791 ],\n", + " [0.66634874, 3.7575538 ],\n", + " [0.66907121, 3.7552056 ],\n", + " [0.67179369, 3.7533159 ],\n", + " [0.67451616, 3.7507198 ],\n", + " [0.67723865, 3.7487535 ],\n", + " [0.67996113, 3.7471499 ],\n", + " [0.68268361, 3.7442865 ],\n", + " [0.68540608, 3.7423012 ],\n", + " [0.68812855, 3.7400677 ],\n", + " [0.69085103, 3.7385788 ],\n", + " [0.6935735 , 3.7345319 ],\n", + " [0.69629597, 3.7339211 ],\n", + " [0.69901843, 3.7301605 ],\n", + " [0.7017409 , 3.7301033 ],\n", + " [0.70446338, 3.7278316 ],\n", + " [0.70718585, 3.7251589 ],\n", + " [0.70990833, 3.723861 ],\n", + " [0.71263081, 3.7215703 ],\n", + " [0.71535328, 3.7191267 ],\n", + " [0.71807574, 3.7172751 ],\n", + " [0.72079822, 3.7157097 ],\n", + " [0.72352069, 3.7130945 ],\n", + " [0.72624317, 3.7099447 ],\n", + " [0.72896564, 3.7071004 ],\n", + " [0.7316881 , 3.7045615 ],\n", + " [0.73441057, 3.703588 ],\n", + " [0.73713303, 3.70208 ],\n", + " [0.73985551, 3.7002664 ],\n", + " [0.74257799, 3.6972122 ],\n", + " [0.74530047, 3.6952841 ],\n", + " [0.74802293, 3.6929362 ],\n", + " [0.7507454 , 3.6898055 ],\n", + " [0.75346787, 3.6890991 ],\n", + " [0.75619034, 3.686522 ],\n", + " [0.75891281, 3.6849759 ],\n", + " [0.76163529, 3.6821697 ],\n", + " [0.76435776, 3.6808143 ],\n", + " [0.76708024, 3.6786573 ],\n", + " [0.7698027 , 3.6761947 ],\n", + " [0.77252517, 3.674763 ],\n", + " [0.77524765, 3.6712887 ],\n", + " [0.77797012, 3.6697233 ],\n", + " [0.78069258, 3.6678908 ],\n", + " [0.78341506, 3.6652565 ],\n", + " [0.78613753, 3.6630611 ],\n", + " [0.78885999, 3.660274 ],\n", + " [0.79158246, 3.6583652 ],\n", + " [0.79430494, 3.6554828 ],\n", + " [0.79702741, 3.6522949 ],\n", + " [0.79974987, 3.6499848 ],\n", + " [0.80247234, 3.6470451 ],\n", + " [0.8051948 , 3.6405547 ],\n", + " [0.80791727, 3.6383405 ],\n", + " [0.81063974, 3.635076 ],\n", + " [0.81336221, 3.633549 ],\n", + " [0.81608468, 3.6322317 ],\n", + " [0.81880714, 3.6306856 ],\n", + " [0.82152961, 3.6283948 ],\n", + " [0.82425208, 3.6268487 ],\n", + " [0.82697453, 3.6243098 ],\n", + " [0.829697 , 3.6223626 ],\n", + " [0.83241946, 3.6193655 ],\n", + " [0.83514192, 3.6177621 ],\n", + " [0.83786439, 3.6158531 ],\n", + " [0.84058684, 3.6128371 ],\n", + " [0.84330931, 3.6118062 ],\n", + " [0.84603177, 3.6094582 ],\n", + " [0.84875424, 3.6072438 ],\n", + " [0.8514767 , 3.6049912 ],\n", + " [0.85419916, 3.6030822 ],\n", + " [0.85692162, 3.6012688 ],\n", + " [0.85964409, 3.5995889 ],\n", + " [0.86236656, 3.5976417 ],\n", + " [0.86508902, 3.5951984 ],\n", + " [0.86781149, 3.593843 ],\n", + " [0.87053395, 3.5916286 ],\n", + " [0.87325642, 3.5894907 ],\n", + " [0.87597888, 3.587429 ],\n", + " [0.87870135, 3.5852909 ],\n", + " [0.88142383, 3.5834775 ],\n", + " [0.8841463 , 3.5817785 ],\n", + " [0.88686877, 3.5801177 ],\n", + " [0.88959124, 3.5778842 ],\n", + " [0.89231371, 3.5763381 ],\n", + " [0.8950362 , 3.5737801 ],\n", + " [0.89775868, 3.5721002 ],\n", + " [0.90048116, 3.5702102 ],\n", + " [0.90320364, 3.5684922 ],\n", + " [0.90592613, 3.5672133 ],\n", + " [1. , 3.52302167]])\n", + "\n", + "from pybamm import exp, constants\n", + "\n", + "\n", + "def graphite_LGM50_electrolyte_exchange_current_density_Chen2020(c_e, c_s_surf, c_n_max, T):\n", + " m_ref = 6.48e-7 # (A/m2)(m3/mol)**1.5 - includes ref concentrations\n", + " E_r = 35000\n", + " arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T))\n", + "\n", + " return (\n", + " m_ref * arrhenius * c_e ** 0.5 * c_s_surf ** 0.5 * (c_n_max - c_s_surf) ** 0.5\n", + " )\n", + "\n", + "def nmc_LGM50_electrolyte_exchange_current_density_Chen2020(c_e, c_s_surf, c_p_max, T):\n", + " m_ref = 3.42e-6 # (A/m2)(m3/mol)**1.5 - includes ref concentrations\n", + " E_r = 17800\n", + " arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T))\n", + "\n", + " return (\n", + " m_ref * arrhenius * c_e ** 0.5 * c_s_surf ** 0.5 * (c_p_max - c_s_surf) ** 0.5\n", + " )\n", + "\n", + "\n", + "values = {\n", + " 'Negative electrode thickness [m]': 8.52e-05,\n", + " 'Separator thickness [m]': 1.2e-05,\n", + " 'Positive electrode thickness [m]': 7.56e-05,\n", + " 'Electrode height [m]': 0.065,\n", + " 'Electrode width [m]': 1.58,\n", + " 'Nominal cell capacity [A.h]': 5.0,\n", + " 'Typical current [A]': 5.0,\n", + " 'Current function [A]': 5.0,\n", + " 'Maximum concentration in negative electrode [mol.m-3]': 33133.0,\n", + " 'Negative electrode diffusivity [m2.s-1]': 3.3e-14,\n", + " 'Negative electrode OCP [V]': ('graphite_LGM50_ocp_Chen2020', neg_ocp),\n", + " 'Negative electrode porosity': 0.25,\n", + " 'Negative electrode active material volume fraction': 0.75,\n", + " 'Negative particle radius [m]': 5.86e-06,\n", + " 'Negative electrode Bruggeman coefficient (electrolyte)': 1.5,\n", + " 'Negative electrode Bruggeman coefficient (electrode)': 1.5,\n", + " 'Negative electrode electrons in reaction': 1.0,\n", + " 'Negative electrode exchange-current density [A.m-2]': graphite_LGM50_electrolyte_exchange_current_density_Chen2020,\n", + " 'Negative electrode OCP entropic change [V.K-1]': 0.0,\n", + " 'Maximum concentration in positive electrode [mol.m-3]': 63104.0,\n", + " 'Positive electrode diffusivity [m2.s-1]': 4e-15,\n", + " 'Positive electrode OCP [V]': ('nmc_LGM50_ocp_Chen2020', pos_ocp),\n", + " 'Positive electrode porosity': 0.335,\n", + " 'Positive electrode active material volume fraction': 0.665,\n", + " 'Positive particle radius [m]': 5.22e-06,\n", + " 'Positive electrode Bruggeman coefficient (electrolyte)': 1.5,\n", + " 'Positive electrode Bruggeman coefficient (electrode)': 1.5,\n", + " 'Positive electrode electrons in reaction': 1.0,\n", + " 'Positive electrode exchange-current density [A.m-2]': nmc_LGM50_electrolyte_exchange_current_density_Chen2020,\n", + " 'Positive electrode OCP entropic change [V.K-1]': 0.0,\n", + " 'Separator porosity': 0.47,\n", + " 'Separator Bruggeman coefficient (electrolyte)': 1.5,\n", + " 'Typical electrolyte concentration [mol.m-3]': 1000.0,\n", + " 'Reference temperature [K]': 298.15,\n", + " 'Ambient temperature [K]': 298.15,\n", + " 'Number of electrodes connected in parallel to make a cell': 1.0,\n", + " 'Number of cells connected in series to make a battery': 1.0,\n", + " 'Lower voltage cut-off [V]': 2.5,\n", + " 'Upper voltage cut-off [V]': 4.4,\n", + " 'Initial concentration in negative electrode [mol.m-3]': 29866.0,\n", + " 'Initial concentration in positive electrode [mol.m-3]': 17038.0,\n", + " 'Initial temperature [K]': 298.15\n", + "}\n", + "param = pybamm.ParameterValues(values)\n", + "param" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we would have got the same result by doing" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Negative electrode thickness [m]': 8.52e-05,\n", + " 'Separator thickness [m]': 1.2e-05,\n", + " 'Positive electrode thickness [m]': 7.56e-05,\n", + " 'Electrode height [m]': 0.065,\n", + " 'Electrode width [m]': 1.58,\n", + " 'Nominal cell capacity [A.h]': 5.0,\n", + " 'Typical current [A]': 5.0,\n", + " 'Current function [A]': 5.0,\n", + " 'Maximum concentration in negative electrode [mol.m-3]': 33133.0,\n", + " 'Negative electrode diffusivity [m2.s-1]': 3.3e-14,\n", + " 'Negative electrode OCP [V]': ,\n", + " 'Negative electrode porosity': 0.25,\n", + " 'Negative electrode active material volume fraction': 0.75,\n", + " 'Negative particle radius [m]': 5.86e-06,\n", + " 'Negative electrode Bruggeman coefficient (electrolyte)': 1.5,\n", + " 'Negative electrode Bruggeman coefficient (electrode)': 1.5,\n", + " 'Negative electrode electrons in reaction': 1.0,\n", + " 'Negative electrode exchange-current density [A.m-2]': ,\n", + " 'Negative electrode OCP entropic change [V.K-1]': 0.0,\n", + " 'Maximum concentration in positive electrode [mol.m-3]': 63104.0,\n", + " 'Positive electrode diffusivity [m2.s-1]': 4e-15,\n", + " 'Positive electrode OCP [V]': ,\n", + " 'Positive electrode porosity': 0.335,\n", + " 'Positive electrode active material volume fraction': 0.665,\n", + " 'Positive particle radius [m]': 5.22e-06,\n", + " 'Positive electrode Bruggeman coefficient (electrolyte)': 1.5,\n", + " 'Positive electrode Bruggeman coefficient (electrode)': 1.5,\n", + " 'Positive electrode electrons in reaction': 1.0,\n", + " 'Positive electrode exchange-current density [A.m-2]': ,\n", + " 'Positive electrode OCP entropic change [V.K-1]': 0.0,\n", + " 'Separator porosity': 0.47,\n", + " 'Separator Bruggeman coefficient (electrolyte)': 1.5,\n", + " 'Typical electrolyte concentration [mol.m-3]': 1000.0,\n", + " 'Reference temperature [K]': 298.15,\n", + " 'Ambient temperature [K]': 298.15,\n", + " 'Number of electrodes connected in parallel to make a cell': 1.0,\n", + " 'Number of cells connected in series to make a battery': 1.0,\n", + " 'Lower voltage cut-off [V]': 2.5,\n", + " 'Upper voltage cut-off [V]': 4.2,\n", + " 'Initial concentration in negative electrode [mol.m-3]': 29866.0,\n", + " 'Initial concentration in positive electrode [mol.m-3]': 17038.0,\n", + " 'Initial temperature [K]': 298.15}" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "param_same = pybamm.ParameterValues(\"Chen2020\")\n", + "{k: v for k,v in param_same.items() if k in spm._parameter_info}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Updating a specific parameter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once a parameter set has been defined (either via a dictionary or a pre-built set), single parameters can be updated" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using a constant value:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Current function [A]\t5.0\n" + ] + }, + { + "data": { + "text/plain": [ + "4.0" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "param.search(\"Current function [A]\")\n", + "\n", + "param.update(\n", + " {\n", + " \"Current function [A]\": 4.0\n", + " }\n", + ")\n", + "\n", + "param[\"Current function [A]\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using a function:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def curren_func(time):\n", + " return 1 + pybamm.sin(2 * np.pi * time / 60)\n", + "\n", + "param.update(\n", + " {\n", + " \"Current function [A]\": curren_func\n", + " }\n", + ")\n", + "\n", + "param[\"Current function [A]\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plotting parameter functions\n", + "\n", + "As seen above, functions can be passed as parameter values. These parameter values can then be plotted by using `pybamm.plot`" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plotting \"Current function \\[A]\"" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "currentfunc = param[\"Current function [A]\"]\n", + "time = pybamm.linspace(0, 120, 60)\n", + "evaluated = param.evaluate(currentfunc(time))\n", + "evaluated = pybamm.Array(evaluated)\n", + "pybamm.plot(time, evaluated)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Taking another such example:\n", + "\n", + "### Plotting \"Negative electrode exchange-current density \\[A.m-2]\"" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "negative_electrode_exchange_current_density = param[\"Negative electrode exchange-current density [A.m-2]\"]\n", + "x = pybamm.linspace(3000,6000,100)\n", + "c_n_max = param[\"Maximum concentration in negative electrode [mol.m-3]\"]\n", + "evaluated = param.evaluate(negative_electrode_exchange_current_density(1000,x,c_n_max,300))\n", + "evaluated = pybamm.Array(evaluated)\n", + "pybamm.plot(x, evaluated)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simulating and solving the model\n", + "\n", + "Finally we can simulate the model and solve it using `pybamm.Simulation` and `solve` respectively." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "295e29ce453c47a9a38d9ba176e038b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(FloatSlider(value=0.0, description='t', max=3599.0, step=35.99), Output()), _dom_classes…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sim = pybamm.Simulation(spm, parameter_values=param)\n", + "t_eval = np.arange(0, 3600, 1)\n", + "sim.solve(t_eval=t_eval)\n", + "sim.plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References\n", + "The relevant papers for this notebook are:" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1] Joel A. E. Andersson, Joris Gillis, Greg Horn, James B. Rawlings, and Moritz Diehl. CasADi – A software framework for nonlinear optimization and optimal control. Mathematical Programming Computation, 11(1):1–36, 2019. doi:10.1007/s12532-018-0139-4.\n", + "[2] 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. Journal of The Electrochemical Society, 167(8):080534, 2020. doi:10.1149/1945-7111/ab9050.\n", + "[3] Charles R. Harris, K. Jarrod Millman, Stéfan J. van der Walt, Ralf Gommers, Pauli Virtanen, David Cournapeau, Eric Wieser, Julian Taylor, Sebastian Berg, Nathaniel J. Smith, and others. Array programming with NumPy. Nature, 585(7825):357–362, 2020. doi:10.1038/s41586-020-2649-2.\n", + "[4] Scott G. Marquis, Valentin Sulzer, Robert Timms, Colin P. Please, and S. Jon Chapman. An asymptotic derivation of a single particle model with electrolyte. Journal of The Electrochemical Society, 166(15):A3693–A3706, 2019. doi:10.1149/2.0341915jes.\n", + "[5] Valentin Sulzer, Scott G. Marquis, Robert Timms, Martin Robinson, and S. Jon Chapman. Python Battery Mathematical Modelling (PyBaMM). Journal of Open Research Software, 9(1):14, 2021. doi:10.5334/jors.309.\n", + "[6] Pauli Virtanen, Ralf Gommers, Travis E. Oliphant, Matt Haberland, Tyler Reddy, David Cournapeau, Evgeni Burovski, Pearu Peterson, Warren Weckesser, Jonathan Bright, and others. SciPy 1.0: fundamental algorithms for scientific computing in Python. Nature Methods, 17(3):261–272, 2020. doi:10.1038/s41592-019-0686-2.\n", + "\n" + ] + } + ], + "source": [ + "pybamm.print_citations()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.12" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": true + }, + "vscode": { + "interpreter": { + "hash": "612adcc456652826e82b485a1edaef831aa6d5abc680d008e93d513dd8724f14" + } + } }, - { - "data": { - "text/plain": [ - "4.0" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "param.search(\"Current function [A]\")\n", - "\n", - "param.update(\n", - " {\n", - " \"Current function [A]\": 4.0\n", - " }\n", - ")\n", - "\n", - "param[\"Current function [A]\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Using a function:" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def curren_func(time):\n", - " return 1 + pybamm.sin(2 * np.pi * time / 60)\n", - "\n", - "param.update(\n", - " {\n", - " \"Current function [A]\": curren_func\n", - " }\n", - ")\n", - "\n", - "param[\"Current function [A]\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Plotting parameter functions\n", - "\n", - "As seen above, functions can be passed as parameter values. These parameter values can then be plotted by using `pybamm.plot`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Plotting \"Current function \\[A]\"" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "currentfunc = param[\"Current function [A]\"]\n", - "time = pybamm.linspace(0, 120, 60)\n", - "evaluated = param.evaluate(currentfunc(time))\n", - "evaluated = pybamm.Array(evaluated)\n", - "pybamm.plot(time, evaluated)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Taking another such example:\n", - "\n", - "### Plotting \"Negative electrode exchange-current density \\[A.m-2]\"" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "negative_electrode_exchange_current_density = param[\"Negative electrode exchange-current density [A.m-2]\"]\n", - "x = pybamm.linspace(3000,6000,100)\n", - "c_n_max = param[\"Maximum concentration in negative electrode [mol.m-3]\"]\n", - "evaluated = param.evaluate(negative_electrode_exchange_current_density(1000,x,c_n_max,300))\n", - "evaluated = pybamm.Array(evaluated)\n", - "pybamm.plot(x, evaluated)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simulating and solving the model\n", - "\n", - "Finally we can simulate the model and solve it using `pybamm.Simulation` and `solve` respectively." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "295e29ce453c47a9a38d9ba176e038b8", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "interactive(children=(FloatSlider(value=0.0, description='t', max=3599.0, step=35.99), Output()), _dom_classes…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sim = pybamm.Simulation(spm, parameter_values=param)\n", - "t_eval = np.arange(0, 3600, 1)\n", - "sim.solve(t_eval=t_eval)\n", - "sim.plot()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## References\n", - "The relevant papers for this notebook are:" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1] Joel A. E. Andersson, Joris Gillis, Greg Horn, James B. Rawlings, and Moritz Diehl. CasADi – A software framework for nonlinear optimization and optimal control. Mathematical Programming Computation, 11(1):1–36, 2019. doi:10.1007/s12532-018-0139-4.\n", - "[2] 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. Journal of The Electrochemical Society, 167(8):080534, 2020. doi:10.1149/1945-7111/ab9050.\n", - "[3] Charles R. Harris, K. Jarrod Millman, Stéfan J. van der Walt, Ralf Gommers, Pauli Virtanen, David Cournapeau, Eric Wieser, Julian Taylor, Sebastian Berg, Nathaniel J. Smith, and others. Array programming with NumPy. Nature, 585(7825):357–362, 2020. doi:10.1038/s41586-020-2649-2.\n", - "[4] Scott G. Marquis, Valentin Sulzer, Robert Timms, Colin P. Please, and S. Jon Chapman. An asymptotic derivation of a single particle model with electrolyte. Journal of The Electrochemical Society, 166(15):A3693–A3706, 2019. doi:10.1149/2.0341915jes.\n", - "[5] Valentin Sulzer, Scott G. Marquis, Robert Timms, Martin Robinson, and S. Jon Chapman. Python Battery Mathematical Modelling (PyBaMM). Journal of Open Research Software, 9(1):14, 2021. doi:10.5334/jors.309.\n", - "[6] Pauli Virtanen, Ralf Gommers, Travis E. Oliphant, Matt Haberland, Tyler Reddy, David Cournapeau, Evgeni Burovski, Pearu Peterson, Warren Weckesser, Jonathan Bright, and others. SciPy 1.0: fundamental algorithms for scientific computing in Python. Nature Methods, 17(3):261–272, 2020. doi:10.1038/s41592-019-0686-2.\n", - "\n" - ] - } - ], - "source": [ - "pybamm.print_citations()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.12" - }, - "toc": { - "base_numbering": 1, - "nav_menu": {}, - "number_sections": true, - "sideBar": true, - "skip_h1_title": false, - "title_cell": "Table of Contents", - "title_sidebar": "Contents", - "toc_cell": false, - "toc_position": {}, - "toc_section_display": true, - "toc_window_display": true - }, - "vscode": { - "interpreter": { - "hash": "612adcc456652826e82b485a1edaef831aa6d5abc680d008e93d513dd8724f14" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/examples/scripts/print_model_parameter_combinations.py b/examples/scripts/print_model_parameter_combinations.py index 98ba7e6429..e5314e0c1a 100644 --- a/examples/scripts/print_model_parameter_combinations.py +++ b/examples/scripts/print_model_parameter_combinations.py @@ -5,11 +5,7 @@ import pybamm all_options = pybamm.BatteryModelOptions({}).possible_options -all_parameter_sets = [ - x - for x in dir(pybamm.parameter_sets) - if not x.startswith("__") and x not in ["Sulzer2019"] -] +all_parameter_sets = pybamm.parameter_sets.all_parameter_sets["lithium_ion"] for option_name, option_list in all_options.items(): for parameter_set in all_parameter_sets: diff --git a/pybamm/CITATIONS.txt b/pybamm/CITATIONS.txt index 317cf7b2d9..831f6cbd0e 100644 --- a/pybamm/CITATIONS.txt +++ b/pybamm/CITATIONS.txt @@ -306,6 +306,17 @@ publisher={IOP Publishing} } +@article{Nyman2008, + title={Electrochemical characterisation and modelling of the mass transport phenomena in LiPF6--EC--EMC electrolyte}, + author={Nyman, Andreas and Behm, M{\aa}rten and Lindbergh, G{\"o}ran}, + journal={Electrochimica Acta}, + volume={53}, + number={22}, + pages={6356--6365}, + year={2008}, + publisher={Elsevier} +} + @article{OKane2020, doi = {10.1149/1945-7111/ab90ac}, url = {https://doi.org/10.1149/1945-7111/ab90ac}, @@ -473,6 +484,17 @@ doi = {10.1137/20M1336898}, } +@article{Valoen2005, + title={Transport properties of LiPF6-based Li-ion battery electrolytes}, + author={Val{\o}en, Lars Ole and Reimers, Jan N}, + journal={Journal of The Electrochemical Society}, + volume={152}, + number={5}, + pages={A882}, + year={2005}, + publisher={IOP Publishing} +} + @article{Virtanen2020, title = {{SciPy 1.0: fundamental algorithms for scientific computing in Python}}, author = {Virtanen, Pauli and Gommers, Ralf and Oliphant, Travis E. and Haberland, Matt and Reddy, Tyler and Cournapeau, David and Burovski, Evgeni and Peterson, Pearu and Weckesser, Warren and Bright, Jonathan and others}, diff --git a/pybamm/__init__.py b/pybamm/__init__.py index 6754557e72..f6b49fb748 100644 --- a/pybamm/__init__.py +++ b/pybamm/__init__.py @@ -162,7 +162,8 @@ from .parameters.lithium_ion_parameters import LithiumIonParameters from .parameters.lead_acid_parameters import LeadAcidParameters from .parameters.size_distribution_parameters import * -from .parameters import parameter_sets +from .parameters.parameter_sets import parameter_sets +from .parameters_cli import add_parameter, remove_parameter, edit_parameter # # Mesh and Discretisation classes diff --git a/pybamm/input/parameters/lead_acid/Sulzer2019.py b/pybamm/input/parameters/lead_acid/Sulzer2019.py new file mode 100644 index 0000000000..e10958fe91 --- /dev/null +++ b/pybamm/input/parameters/lead_acid/Sulzer2019.py @@ -0,0 +1,380 @@ +import pybamm + + +def lead_ocp_Bode1977(m): + """ + Dimensional open-circuit voltage in the negative (lead) electrode [V], from [1]_, + as a function of the molar mass m [mol.kg-1]. + + References + ---------- + .. [1] H Bode. Lead-acid batteries. John Wiley and Sons, Inc., New York, NY, 1977. + + """ + U = ( + -0.294 + - 0.074 * pybamm.log10(m) + - 0.030 * pybamm.log10(m) ** 2 + - 0.031 * pybamm.log10(m) ** 3 + - 0.012 * pybamm.log10(m) ** 4 + ) + return U + + +def lead_exchange_current_density_Sulzer2019(c_e, T): + """ + Dimensional exchange-current density in the negative (lead) electrode, from [1]_ + + References + ---------- + .. [1] V. Sulzer, S. J. Chapman, C. P. Please, D. A. Howey, and C. W. Monroe, + “Faster lead-acid battery simulations from porous-electrode theory: Part I. Physical + model.” + [Journal of the Electrochemical Society](https://doi.org/10.1149/2.0301910jes), + 166(12), 2363 (2019). + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + + """ + j0_ref = 0.06 # srinivasan2003mathematical + c_e_typ = pybamm.Parameter("Typical electrolyte concentration [mol.m-3]") + j0 = j0_ref * (c_e / c_e_typ) + + return j0 + + +def lead_dioxide_ocp_Bode1977(m): + """ + Dimensional open-circuit voltage in the positive (lead-dioxide) electrode [V], + from [1]_, as a function of the molar mass m [mol.kg-1]. + + References + ---------- + .. [1] H Bode. Lead-acid batteries. John Wiley and Sons, Inc., New York, NY, 1977. + + """ + U = ( + 1.628 + + 0.074 * pybamm.log10(m) + + 0.033 * pybamm.log10(m) ** 2 + + 0.043 * pybamm.log10(m) ** 3 + + 0.022 * pybamm.log10(m) ** 4 + ) + return U + + +def lead_dioxide_exchange_current_density_Sulzer2019(c_e, T): + """ + Dimensional exchange-current density in the positive electrode, from [1]_ + + References + ---------- + .. [1] V. Sulzer, S. J. Chapman, C. P. Please, D. A. Howey, and C. W. Monroe, + “Faster lead-acid battery simulations from porous-electrode theory: Part I. Physical + model.” + [Journal of the Electrochemical Society](https://doi.org/10.1149/2.0301910jes), + 166(12), 2363 (2019). + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + + """ + c_ox = 0 + c_hy = 0 + param = pybamm.LeadAcidParameters() + c_w_dim = (1 - c_e * param.V_e - c_ox * param.V_ox - c_hy * param.V_hy) / param.V_w + c_w_ref = (1 - param.c_e_typ * param.V_e) / param.V_w + c_w = c_w_dim / c_w_ref + + j0_ref = 0.004 # srinivasan2003mathematical + j0 = j0_ref * (c_e / param.c_e_typ) ** 2 * c_w + + return j0 + + +def oxygen_exchange_current_density_Sulzer2019(c_e, T): + """ + Dimensional oxygen exchange-current density in the positive electrode, from [1]_ + + References + ---------- + .. [1] V. Sulzer, S. J. Chapman, C. P. Please, D. A. Howey, and C. W. Monroe, + “Faster lead-acid battery simulations from porous-electrode theory: Part I. Physical + model.” + [Journal of the Electrochemical Society](https://doi.org/10.1149/2.0301910jes), + 166(12), 2363 (2019). + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + + """ + j0_ref = 2.5e-23 # srinivasan2003mathematical + c_e_typ = pybamm.Parameter("Typical electrolyte concentration [mol.m-3]") + j0 = j0_ref * (c_e / c_e_typ) + + return j0 + + +def conductivity_Gu1997(c_e): + """ + Dimensional conductivity of sulfuric acid [S.m-1], from [1]_ citing [2]_ and + agreeing with data in [3]_, as a function of the electrolyte concentration + c_e [mol.m-3]. + + References + ---------- + .. [1] WB Gu, CY Wang, and BY Liaw. Numerical modeling of coupled electrochemical + and transport processes in lead-acid batteries. Journal of The + Electrochemical Society, 144(6):2053–2061, 1997. + .. [2] WH Tiedemann and J Newman. Battery design and optimization. Journal of + Electrochemical Society, Softbound Proceeding Series, Princeton, New York, + 79(1):23, 1979. + .. [3] TW Chapman and J Newman. Compilation of selected thermodynamic and transport + properties of binary electrolytes in aqueous solution. Technical report, + California Univ., Berkeley. Lawrence Radiation Lab., 1968. + + """ + return c_e * pybamm.exp(6.23 - 1.34e-4 * c_e - 1.61e-8 * c_e**2) * 1e-4 + + +def darken_thermodynamic_factor_Chapman1968(c_e): + """ + Dimensional Darken thermodynamic factor of sulfuric acid, from data in + [1, 2]_, as a function of the electrolyte concentration c_e [mol.m-3]. + + References + ---------- + .. [1] TW Chapman and J Newman. Compilation of selected thermodynamic and transport + properties of binary electrolytes in aqueous solution. Technical report, + California Univ., Berkeley. Lawrence Radiation Lab., 1968. + .. [2] KS Pitzer, RN Roy, and LF Silvester. Thermodynamics of electrolytes. 7. + sulfuric acid. Journal of the American Chemical Society, 99(15):4930–4936, + 1977. + + """ + return 0.49 + 4.1e-4 * c_e + + +def diffusivity_Gu1997(c_e): + """ + Dimensional Fickian diffusivity of sulfuric acid [m2.s-1], from [1]_ citing [2]_ + and agreeing with data in [3]_, as a function of the electrolyte concentration + c_e [mol.m-3]. + + References + ---------- + .. [1] WB Gu, CY Wang, and BY Liaw. Numerical modeling of coupled electrochemical + and transport processes in lead-acid batteries. Journal of The + Electrochemical Society, 144(6):2053–2061, 1997. + .. [2] WH Tiedemann and J Newman. Battery design and optimization. Journal of + Electrochemical Society, Softbound Proceeding Series, Princeton, New York, + 79(1):23, 1979. + .. [3] TW Chapman and J Newman. Compilation of selected thermodynamic and transport + properties of binary electrolytes in aqueous solution. Technical report, + California Univ., Berkeley. Lawrence Radiation Lab., 1968. + + """ + return (1.75 + 260e-6 * c_e) * 1e-9 + + +def viscosity_Chapman1968(c_e): + """ + Dimensional viscosity of sulfuric acid [kg.m-1.s-1], from data in [1]_, as a + function of the electrolyte concentration c_e [mol.m-3]. + + References + ---------- + .. [1] TW Chapman and J Newman. Compilation of selected thermodynamic and transport + properties of binary electrolytes in aqueous solution. Technical report, + California Univ., Berkeley. Lawrence Radiation Lab., 1968. + + """ + return 0.89e-3 + 1.11e-7 * c_e + 3.29e-11 * c_e**2 + + +# Call dict via a function to avoid errors when editing in place +def get_parameter_values(): + """ + Parameters for BBOXX lead-acid cells, from the paper + + > V. Sulzer, S. J. Chapman, C. P. Please, D. A. Howey, and C. W. Monroe, “Faster + lead-acid battery simulations from porous-electrode theory: Part I. Physical model.” + [Journal of the Electrochemical Society](https://doi.org/10.1149/2.0301910jes), + 166(12), 2363 (2019). + + and references therein. + """ + + return { + # cell + "Negative current collector thickness [m]": 0.0, + "Negative electrode thickness [m]": 0.0009, + "Separator thickness [m]": 0.0015, + "Positive electrode thickness [m]": 0.00125, + "Positive current collector thickness [m]": 0.0, + "Electrode height [m]": 0.114, + "Electrode width [m]": 0.065, + "Negative tab width [m]": 0.04, + "Negative tab centre y-coordinate [m]": 0.06, + "Negative tab centre z-coordinate [m]": 0.114, + "Positive tab width [m]": 0.04, + "Positive tab centre y-coordinate [m]": 0.147, + "Positive tab centre z-coordinate [m]": 0.114, + "Cell cooling surface area [m2]": 0.154, + "Cell volume [m3]": 0.00027, + "Nominal cell capacity [A.h]": 17.0, + "Typical current [A]": 1.0, + "Current function [A]": 1.0, + "Negative current collector density [kg.m-3]": 11300.0, + "Positive current collector density [kg.m-3]": 9375.0, + "Negative current collector specific heat capacity [J.kg-1.K-1]": 130.0, + "Positive current collector specific heat capacity [J.kg-1.K-1]": 256.0, + "Negative current collector thermal conductivity [W.m-1.K-1]": 35.0, + "Positive current collector thermal conductivity [W.m-1.K-1]": 35.0, + # negative electrode + "Negative electrode conductivity [S.m-1]": 4800000.0, + "Negative electrode pore size [m]": 1e-07, + "Maximum porosity of negative electrode": 0.53, + "Molar volume of lead [m3.mol-1]": 1.82539682539683e-05, + "Negative electrode volumetric capacity [C.m-3]": 3473000000.0, + "Negative electrode open-circuit potential [V]": lead_ocp_Bode1977, + "Negative electrode surface area to volume ratio [m-1]": 2300000.0, + "Negative electrode Bruggeman coefficient (electrolyte)": 1.5, + "Negative electrode Bruggeman coefficient (electrode)": 1.5, + "Negative electrode morphological parameter": 0.6, + "Negative electrode capacity [C.m-3]": 3473000000.0, + "Negative electrode cation signed stoichiometry": 1.0, + "Negative electrode electrons in reaction": 2.0, + "Negative electrode exchange-current density [A.m-2]" + "": lead_exchange_current_density_Sulzer2019, + "Signed stoichiometry of cations (oxygen reaction)": 4.0, + "Signed stoichiometry of water (oxygen reaction)": -1.0, + "Signed stoichiometry of oxygen (oxygen reaction)": 1.0, + "Electrons in oxygen reaction": 4.0, + "Negative electrode reference exchange-current density (oxygen) [A.m-2]" + "": 2.5e-32, + "Reference oxygen molecule concentration [mol.m-3]": 1000.0, + "Oxygen reference OCP vs SHE [V]": 1.229, + "Signed stoichiometry of cations (hydrogen reaction)": 2.0, + "Signed stoichiometry of hydrogen (hydrogen reaction)": -1.0, + "Electrons in hydrogen reaction": 2.0, + "Negative electrode reference exchange-current density (hydrogen) [A.m-2]" + "": 1.56e-11, + "Hydrogen reference OCP vs SHE [V]": 0.0, + "Negative electrode double-layer capacity [F.m-2]": 0.2, + "Negative electrode density [kg.m-3]": 11300.0, + "Negative electrode specific heat capacity [J.kg-1.K-1]": 130.0, + "Negative electrode thermal conductivity [W.m-1.K-1]": 35.0, + # positive electrode + "Positive electrode conductivity [S.m-1]": 80000.0, + "Positive electrode pore size [m]": 1e-07, + "Maximum porosity of positive electrode": 0.57, + "Molar volume of lead-dioxide [m3.mol-1]": 2.54797441364606e-05, + "Molar volume of lead sulfate [m3.mol-1]": 4.81717011128776e-05, + "Positive electrode volumetric capacity [C.m-3]": 2745000000.0, + "Positive electrode open-circuit potential [V]": lead_dioxide_ocp_Bode1977, + "Positive electrode surface area to volume ratio [m-1]": 23000000.0, + "Positive electrode Bruggeman coefficient (electrolyte)": 1.5, + "Positive electrode Bruggeman coefficient (electrode)": 1.5, + "Positive electrode morphological parameter": 0.6, + "Positive electrode capacity [C.m-3]": 2745000000.0, + "Positive electrode cation signed stoichiometry": 3.0, + "Positive electrode electrons in reaction": 2.0, + "Positive electrode exchange-current density [A.m-2]" + "": lead_dioxide_exchange_current_density_Sulzer2019, + "Signed stoichiometry of cations (oxygen reaction)": 4.0, + "Signed stoichiometry of oxygen (oxygen reaction)": 1.0, + "Electrons in oxygen reaction": 4.0, + "Positive electrode oxygen exchange-current density [A.m-2]" + "": oxygen_exchange_current_density_Sulzer2019, + "Reference oxygen molecule concentration [mol.m-3]": 1000.0, + "Oxygen reference OCP vs SHE [V]": 1.229, + "Signed stoichiometry of cations (hydrogen reaction)": 2.0, + "Electrons in hydrogen reaction": 2.0, + "Positive electrode reference exchange-current density (hydrogen) [A.m-2]" + "": 0.0, + "Hydrogen reference OCP vs SHE [V]": 0.0, + "Positive electrode double-layer capacity [F.m-2]": 0.2, + "Positive electrode density [kg.m-3]": 9375.0, + "Positive electrode specific heat capacity [J.kg-1.K-1]": 256.0, + "Positive electrode thermal conductivity [W.m-1.K-1]": 35.0, + # separator + "Maximum porosity of separator": 0.92, + "Separator Bruggeman coefficient (electrolyte)": 1.5, + "Separator density [kg.m-3]": 1680.0, + "Separator specific heat capacity [J.kg-1.K-1]": 700.0, + "Separator thermal conductivity [W.m-1.K-1]": 0.04, + # electrolyte + "Typical electrolyte concentration [mol.m-3]": 5650.0, + "Cation transference number": 0.7, + "1 + dlnf/dlnc": 1.0, + "Partial molar volume of water [m3.mol-1]": 1.75e-05, + "Partial molar volume of anions [m3.mol-1]": 3.15e-05, + "Partial molar volume of cations [m3.mol-1]": 1.35e-05, + "Cation stoichiometry": 1.0, + "Anion stoichiometry": 1.0, + "Molar mass of water [kg.mol-1]": 0.01801, + "Molar mass of cations [kg.mol-1]": 0.001, + "Molar mass of anions [kg.mol-1]": 0.097, + "Volume change factor": 1.0, + "Electrolyte conductivity [S.m-1]": conductivity_Gu1997, + "Darken thermodynamic factor": darken_thermodynamic_factor_Chapman1968, + "Electrolyte diffusivity [m2.s-1]": diffusivity_Gu1997, + "Electrolyte viscosity [kg.m-1.s-1]": viscosity_Chapman1968, + "Oxygen diffusivity [m2.s-1]": 2.1e-09, + "Typical oxygen concentration [mol.m-3]": 1000.0, + "Hydrogen diffusivity [m2.s-1]": 4.5e-09, + "Partial molar volume of oxygen molecules [m3.mol-1]": 3.21e-05, + "Partial molar volume of hydrogen molecules [m3.mol-1]": 2.31e-05, + "Molar mass of oxygen molecules [kg.mol-1]": 0.032, + "Molar mass of hydrogen molecules [kg.mol-1]": 0.002, + # experiment + "Reference temperature [K]": 294.85, + "Maximum temperature [K]": 333.15, + "Ambient temperature [K]": 294.85, + "Negative current collector surface heat transfer coefficient [W.m-2.K-1]" + "": 0.0, + "Positive current collector surface heat transfer coefficient [W.m-2.K-1]" + "": 0.0, + "Negative tab heat transfer coefficient [W.m-2.K-1]": 10.0, + "Positive tab heat transfer coefficient [W.m-2.K-1]": 10.0, + "Total heat transfer coefficient [W.m-2.K-1]": 10.0, + "Edge heat transfer coefficient [W.m-2.K-1]": 0.3, + "Number of electrodes connected in parallel to make a cell": 8.0, + "Number of cells connected in series to make a battery": 6.0, + "Lower voltage cut-off [V]": 1.75, + "Upper voltage cut-off [V]": 2.42, + "Initial State of Charge": 1.0, + "Initial oxygen concentration [mol.m-3]": 0.0, + "Initial temperature [K]": 294.85, + # citations + "citations": ["Sulzer2019physical"], + } diff --git a/pybamm/input/parameters/lead_acid/cells/BBOXX_Sulzer2019/README.md b/pybamm/input/parameters/lead_acid/cells/BBOXX_Sulzer2019/README.md deleted file mode 100644 index 5544bc0ca9..0000000000 --- a/pybamm/input/parameters/lead_acid/cells/BBOXX_Sulzer2019/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# BBOXX cell parameters - -Cell-specific parameters for BBOXX lead-acid cells, from the paper - -> V. Sulzer, S. J. Chapman, C. P. Please, D. A. Howey, and C. W. Monroe, “Faster lead-acid battery simulations from porous-electrode theory: Part I. Physical model.” [Journal of the Electrochemical Society](https://doi.org/10.1149/2.0301910jes), 166(12), 2363 (2019). diff --git a/pybamm/input/parameters/lead_acid/cells/BBOXX_Sulzer2019/parameters.csv b/pybamm/input/parameters/lead_acid/cells/BBOXX_Sulzer2019/parameters.csv deleted file mode 100644 index ad0b870d6b..0000000000 --- a/pybamm/input/parameters/lead_acid/cells/BBOXX_Sulzer2019/parameters.csv +++ /dev/null @@ -1,36 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Macroscale geometry,,, -Negative current collector thickness [m],0,, -Negative electrode thickness [m],0.0009,Manufacturer, -Separator thickness [m],0.0015,Manufacturer, -Positive electrode thickness [m],0.00125,Manufacturer, -Positive current collector thickness [m],0,, -Electrode height [m],0.114,Manufacturer, -Electrode width [m],0.065,Manufacturer, -Negative tab width [m],0.04,,Estimated value -Negative tab centre y-coordinate [m],0.06,,Estimated value -Negative tab centre z-coordinate [m],0.114,Tab at top, -Positive tab width [m],0.04,,Estimated value -Positive tab centre y-coordinate [m],0.147,,Estimated value -Positive tab centre z-coordinate [m],0.114,Tab at top, -Cell cooling surface area [m2],1.54E-1,, -Cell volume [m3],2.70E-4,, -,,, -# Electrical,,, -Nominal cell capacity [A.h],17,Manufacturer, -Typical current [A],1,, -Current function [A],1,default current function, -,,, -# Density,,, -Negative current collector density [kg.m-3],11300," same as electrode", -Positive current collector density [kg.m-3],9375,same as electrode, -,,, -# Specific heat capacity,,, -Negative current collector specific heat capacity [J.kg-1.K-1],130,CRC Handbook of Chemistry and Physics, -Positive current collector specific heat capacity [J.kg-1.K-1],256,NIST Chemistry WebBook SRD69, -,,, -# Thermal conductivity,,, -Negative current collector thermal conductivity [W.m-1.K-1],35,CRC Handbook of Chemistry and Physics, -Positive current collector thermal conductivity [W.m-1.K-1],35,assume same as lead, \ No newline at end of file diff --git a/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/README.md b/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/README.md deleted file mode 100644 index e51d2f431e..0000000000 --- a/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Sulfuric acid electrolyte parameters - -Parameters for a sulfuric acid electrolyte, from the paper - -> V. Sulzer, S. J. Chapman, C. P. Please, D. A. Howey, and C. W. Monroe, “Faster lead-acid battery simulations from porous-electrode theory: Part I. Physical model.” [Journal of the Electrochemical Society](https://doi.org/10.1149/2.0301910jes), 166(12), 2363 (2019). - -and references therein. diff --git a/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/conductivity_Gu1997.py b/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/conductivity_Gu1997.py deleted file mode 100644 index a5803c2e49..0000000000 --- a/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/conductivity_Gu1997.py +++ /dev/null @@ -1,26 +0,0 @@ -# -# Sulfuric acid conductivity -# -from pybamm import exp - - -def conductivity_Gu1997(c_e): - """ - Dimensional conductivity of sulfuric acid [S.m-1], from [1]_ citing [2]_ and - agreeing with data in [3]_, as a function of the electrolyte concentration - c_e [mol.m-3]. - - References - ---------- - .. [1] WB Gu, CY Wang, and BY Liaw. Numerical modeling of coupled electrochemical - and transport processes in lead-acid batteries. Journal of The - Electrochemical Society, 144(6):2053–2061, 1997. - .. [2] WH Tiedemann and J Newman. Battery design and optimization. Journal of - Electrochemical Society, Softbound Proceeding Series, Princeton, New York, - 79(1):23, 1979. - .. [3] TW Chapman and J Newman. Compilation of selected thermodynamic and transport - properties of binary electrolytes in aqueous solution. Technical report, - California Univ., Berkeley. Lawrence Radiation Lab., 1968. - - """ - return c_e * exp(6.23 - 1.34e-4 * c_e - 1.61e-8 * c_e**2) * 1e-4 diff --git a/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/darken_thermodynamic_factor_Chapman1968.py b/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/darken_thermodynamic_factor_Chapman1968.py deleted file mode 100644 index 27adc99b11..0000000000 --- a/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/darken_thermodynamic_factor_Chapman1968.py +++ /dev/null @@ -1,21 +0,0 @@ -# -# Darken thermodynamic factor of sulfuric acid -# - - -def darken_thermodynamic_factor_Chapman1968(c_e): - """ - Dimensional Darken thermodynamic factor of sulfuric acid, from data in - [1, 2]_, as a function of the electrolyte concentration c_e [mol.m-3]. - - References - ---------- - .. [1] TW Chapman and J Newman. Compilation of selected thermodynamic and transport - properties of binary electrolytes in aqueous solution. Technical report, - California Univ., Berkeley. Lawrence Radiation Lab., 1968. - .. [2] KS Pitzer, RN Roy, and LF Silvester. Thermodynamics of electrolytes. 7. - sulfuric acid. Journal of the American Chemical Society, 99(15):4930–4936, - 1977. - - """ - return 0.49 + 4.1e-4 * c_e diff --git a/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/diffusivity_Gu1997.py b/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/diffusivity_Gu1997.py deleted file mode 100644 index 1ff0743bdb..0000000000 --- a/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/diffusivity_Gu1997.py +++ /dev/null @@ -1,25 +0,0 @@ -# -# Sulfuric acid diffusivity -# - - -def diffusivity_Gu1997(c_e): - """ - Dimensional Fickian diffusivity of sulfuric acid [m2.s-1], from [1]_ citing [2]_ - and agreeing with data in [3]_, as a function of the electrolyte concentration - c_e [mol.m-3]. - - References - ---------- - .. [1] WB Gu, CY Wang, and BY Liaw. Numerical modeling of coupled electrochemical - and transport processes in lead-acid batteries. Journal of The - Electrochemical Society, 144(6):2053–2061, 1997. - .. [2] WH Tiedemann and J Newman. Battery design and optimization. Journal of - Electrochemical Society, Softbound Proceeding Series, Princeton, New York, - 79(1):23, 1979. - .. [3] TW Chapman and J Newman. Compilation of selected thermodynamic and transport - properties of binary electrolytes in aqueous solution. Technical report, - California Univ., Berkeley. Lawrence Radiation Lab., 1968. - - """ - return (1.75 + 260e-6 * c_e) * 1e-9 diff --git a/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/parameters.csv b/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/parameters.csv deleted file mode 100644 index 3336a7fcc2..0000000000 --- a/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/parameters.csv +++ /dev/null @@ -1,29 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrolyte properties,,, -Typical electrolyte concentration [mol.m-3],5650,, -Cation transference number,0.7,, -1 + dlnf/dlnc,1,, -Partial molar volume of water [m3.mol-1],1.75E-05,, -Partial molar volume of anions [m3.mol-1],3.15E-05,, -Partial molar volume of cations [m3.mol-1],1.35E-05,, -Cation stoichiometry,1,,Hydrogen cations -Anion stoichiometry,1,,Hydrogen sulfate anions -Molar mass of water [kg.mol-1],0.01801,, -Molar mass of cations [kg.mol-1],0.001,lide1992crc,Hydrogen cations -Molar mass of anions [kg.mol-1],0.097,lide1992crc,Hydrogen sulfate anions -Volume change factor,1,,factor to artificially control how much big the volume changes are -Electrolyte conductivity [S.m-1],[function]conductivity_Gu1997,, -Darken thermodynamic factor,[function]darken_thermodynamic_factor_Chapman1968,, -Electrolyte diffusivity [m2.s-1],[function]diffusivity_Gu1997,, -Electrolyte viscosity [kg.m-1.s-1],[function]viscosity_Chapman1968,, -,,, -# Other species properties,,, -Oxygen diffusivity [m2.s-1],2.1e-9,cussler2009diffusion -Typical oxygen concentration [mol.m-3],1000,, -Hydrogen diffusivity [m2.s-1],4.5e-9,cussler2009diffusion -Partial molar volume of oxygen molecules [m3.mol-1],3.21E-5,zhou2001partial, -Partial molar volume of hydrogen molecules [m3.mol-1],2.31E-5,zhou2001partial, -Molar mass of oxygen molecules [kg.mol-1],0.032,lide1992crc, -Molar mass of hydrogen molecules [kg.mol-1],0.002,lide1992crc, diff --git a/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/viscosity_Chapman1968.py b/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/viscosity_Chapman1968.py deleted file mode 100644 index b63898cb43..0000000000 --- a/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/viscosity_Chapman1968.py +++ /dev/null @@ -1,18 +0,0 @@ -# -# Sulfuric acid viscosity -# - - -def viscosity_Chapman1968(c_e): - """ - Dimensional viscosity of sulfuric acid [kg.m-1.s-1], from data in [1]_, as a - function of the electrolyte concentration c_e [mol.m-3]. - - References - ---------- - .. [1] TW Chapman and J Newman. Compilation of selected thermodynamic and transport - properties of binary electrolytes in aqueous solution. Technical report, - California Univ., Berkeley. Lawrence Radiation Lab., 1968. - - """ - return 0.89e-3 + 1.11e-7 * c_e + 3.29e-11 * c_e**2 diff --git a/pybamm/input/parameters/lead_acid/experiments/1C_discharge_from_full/README.md b/pybamm/input/parameters/lead_acid/experiments/1C_discharge_from_full/README.md deleted file mode 100644 index dc304345f2..0000000000 --- a/pybamm/input/parameters/lead_acid/experiments/1C_discharge_from_full/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# 1C discharge from full - -Discharge lead-acid battery from full charge at 1C. diff --git a/pybamm/input/parameters/lead_acid/experiments/1C_discharge_from_full/parameters.csv b/pybamm/input/parameters/lead_acid/experiments/1C_discharge_from_full/parameters.csv deleted file mode 100644 index 83f1871487..0000000000 --- a/pybamm/input/parameters/lead_acid/experiments/1C_discharge_from_full/parameters.csv +++ /dev/null @@ -1,25 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Temperature,,, -Reference temperature [K],294.85,Room temperature, -Maximum temperature [K],333.15,, -Ambient temperature [K], 294.85,, -Negative current collector surface heat transfer coefficient [W.m-2.K-1],0,, -Positive current collector surface heat transfer coefficient [W.m-2.K-1],0,, -Negative tab heat transfer coefficient [W.m-2.K-1],10,, -Positive tab heat transfer coefficient [W.m-2.K-1],10,, -Total heat transfer coefficient [W.m-2.K-1],10,, -Edge heat transfer coefficient [W.m-2.K-1],0.3,, - -,,, -# Electrical -Number of electrodes connected in parallel to make a cell,8,Manufacturer, -Number of cells connected in series to make a battery,6,Manufacturer, -Lower voltage cut-off [V],1.75,10.5V across 6-cell battery, -Upper voltage cut-off [V],2.42,14.5V across 6-cell battery, -,,, -# Initial conditions -Initial State of Charge,1,-, -Initial oxygen concentration [mol.m-3],0,, -Initial temperature [K],294.85,Room temperature, diff --git a/pybamm/input/parameters/lead_acid/negative_electrodes/lead_Sulzer2019/README.md b/pybamm/input/parameters/lead_acid/negative_electrodes/lead_Sulzer2019/README.md deleted file mode 100644 index f597e7da38..0000000000 --- a/pybamm/input/parameters/lead_acid/negative_electrodes/lead_Sulzer2019/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Lead negative electrode parameters - -Parameters for a lead negative electrode, from the paper - -> V. Sulzer, S. J. Chapman, C. P. Please, D. A. Howey, and C. W. Monroe, “Faster lead-acid battery simulations from porous-electrode theory: Part I. Physical model.” [Journal of the Electrochemical Society](https://doi.org/10.1149/2.0301910jes), 166(12), 2363 (2019). - -and references therein. diff --git a/pybamm/input/parameters/lead_acid/negative_electrodes/lead_Sulzer2019/lead_exchange_current_density_Sulzer2019.py b/pybamm/input/parameters/lead_acid/negative_electrodes/lead_Sulzer2019/lead_exchange_current_density_Sulzer2019.py deleted file mode 100644 index 601e362031..0000000000 --- a/pybamm/input/parameters/lead_acid/negative_electrodes/lead_Sulzer2019/lead_exchange_current_density_Sulzer2019.py +++ /dev/null @@ -1,33 +0,0 @@ -from pybamm import Parameter - - -def lead_exchange_current_density_Sulzer2019(c_e, T): - """ - Dimensional exchange-current density in the negative (lead) electrode, from [1]_ - - References - ---------- - .. [1] V. Sulzer, S. J. Chapman, C. P. Please, D. A. Howey, and C. W. Monroe, - “Faster lead-acid battery simulations from porous-electrode theory: Part I. Physical - model.” - [Journal of the Electrochemical Society](https://doi.org/10.1149/2.0301910jes), - 166(12), 2363 (2019). - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - - """ - j0_ref = 0.06 # srinivasan2003mathematical - c_e_typ = Parameter("Typical electrolyte concentration [mol.m-3]") - j0 = j0_ref * (c_e / c_e_typ) - - return j0 diff --git a/pybamm/input/parameters/lead_acid/negative_electrodes/lead_Sulzer2019/lead_ocp_Bode1977.py b/pybamm/input/parameters/lead_acid/negative_electrodes/lead_Sulzer2019/lead_ocp_Bode1977.py deleted file mode 100644 index 024d7fc9e2..0000000000 --- a/pybamm/input/parameters/lead_acid/negative_electrodes/lead_Sulzer2019/lead_ocp_Bode1977.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Open-circuit voltage in the negative (lead) electrode -# -from pybamm import log10 - - -def lead_ocp_Bode1977(m): - """ - Dimensional open-circuit voltage in the negative (lead) electrode [V], from [1]_, - as a function of the molar mass m [mol.kg-1]. - - References - ---------- - .. [1] H Bode. Lead-acid batteries. John Wiley and Sons, Inc., New York, NY, 1977. - - """ - U = ( - -0.294 - - 0.074 * log10(m) - - 0.030 * log10(m) ** 2 - - 0.031 * log10(m) ** 3 - - 0.012 * log10(m) ** 4 - ) - return U diff --git a/pybamm/input/parameters/lead_acid/negative_electrodes/lead_Sulzer2019/parameters.csv b/pybamm/input/parameters/lead_acid/negative_electrodes/lead_Sulzer2019/parameters.csv deleted file mode 100644 index 54987b321b..0000000000 --- a/pybamm/input/parameters/lead_acid/negative_electrodes/lead_Sulzer2019/parameters.csv +++ /dev/null @@ -1,43 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Negative electrode conductivity [S.m-1],4800000,,Lead -Negative electrode pore size [m],1E-07,, -Maximum porosity of negative electrode,0.53,, -Molar volume of lead [m3.mol-1],1.82539682539683E-05,,Calculated as 207e-3 / 11.34e3 -Molar volume of lead sulfate [m3.mol-1],4.81717011128776E-05,,Calculated as 303e-3 / 6.29e3 -Negative electrode volumetric capacity [C.m-3],3.473e9,bernardi1995mathematical, -Negative electrode open-circuit potential [V],[function]lead_ocp_Bode1977,, -,,, -# Microstructure,,, -Negative electrode surface area to volume ratio [m-1],2300000,, -Negative electrode Bruggeman coefficient (electrolyte),1.5,, -Negative electrode Bruggeman coefficient (electrode),1.5,, -Negative electrode morphological parameter,0.6,srinivasan2003mathematical, -Negative electrode capacity [C.m-3],3473000000,, -,,, -# Interfacial reactions,,, -Negative electrode cation signed stoichiometry,1,, -Negative electrode electrons in reaction,2,, -Negative electrode exchange-current density [A.m-2],[function]lead_exchange_current_density_Sulzer2019,, -Signed stoichiometry of cations (oxygen reaction),4,, -Signed stoichiometry of water (oxygen reaction),-1,, -Signed stoichiometry of oxygen (oxygen reaction),1,, -Electrons in oxygen reaction,4,, -Negative electrode reference exchange-current density (oxygen) [A.m-2],2.5E-32,srinivasan2003mathematical, -Reference oxygen molecule concentration [mol.m-3],1000,srinivasan2003mathematical, -Oxygen reference OCP vs SHE [V],1.229,srinivasan2003mathematical, -Signed stoichiometry of cations (hydrogen reaction),2,, -Signed stoichiometry of hydrogen (hydrogen reaction),-1,, -Electrons in hydrogen reaction,2,, -Negative electrode reference exchange-current density (hydrogen) [A.m-2],1.56E-11,srinivasan2003mathematical, -Hydrogen reference OCP vs SHE [V],0,srinivasan2003mathematical, -Negative electrode double-layer capacity [F.m-2],0.2,, -,,, -# Density,,, -Negative electrode density [kg.m-3],11300,CRC Handbook of Chemistry and Physics, -,,, -# Thermal parameters,,, -Negative electrode specific heat capacity [J.kg-1.K-1],130,CRC Handbook of Chemistry and Physics, -Negative electrode thermal conductivity [W.m-1.K-1],35,CRC Handbook of Chemistry and Physics, diff --git a/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/README.md b/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/README.md deleted file mode 100644 index 752e3e7cee..0000000000 --- a/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Lead-dioxide positive electrode parameters - -Parameters for a lead-dioxide positive electrode, from the paper - -> V. Sulzer, S. J. Chapman, C. P. Please, D. A. Howey, and C. W. Monroe, “Faster lead-acid battery simulations from porous-electrode theory: Part I. Physical model.” [Journal of the Electrochemical Society](https://doi.org/10.1149/2.0301910jes), 166(12), 2363 (2019). - -and references therein. diff --git a/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/lead_dioxide_exchange_current_density_Sulzer2019.py b/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/lead_dioxide_exchange_current_density_Sulzer2019.py deleted file mode 100644 index a87f16eaff..0000000000 --- a/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/lead_dioxide_exchange_current_density_Sulzer2019.py +++ /dev/null @@ -1,39 +0,0 @@ -from pybamm import LeadAcidParameters - - -def lead_dioxide_exchange_current_density_Sulzer2019(c_e, T): - """ - Dimensional exchange-current density in the positive electrode, from [1]_ - - References - ---------- - .. [1] V. Sulzer, S. J. Chapman, C. P. Please, D. A. Howey, and C. W. Monroe, - “Faster lead-acid battery simulations from porous-electrode theory: Part I. Physical - model.” - [Journal of the Electrochemical Society](https://doi.org/10.1149/2.0301910jes), - 166(12), 2363 (2019). - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - - """ - c_ox = 0 - c_hy = 0 - param = LeadAcidParameters() - c_w_dim = (1 - c_e * param.V_e - c_ox * param.V_ox - c_hy * param.V_hy) / param.V_w - c_w_ref = (1 - param.c_e_typ * param.V_e) / param.V_w - c_w = c_w_dim / c_w_ref - - j0_ref = 0.004 # srinivasan2003mathematical - j0 = j0_ref * (c_e / param.c_e_typ) ** 2 * c_w - - return j0 diff --git a/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/lead_dioxide_ocp_Bode1977.py b/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/lead_dioxide_ocp_Bode1977.py deleted file mode 100644 index 4240588d81..0000000000 --- a/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/lead_dioxide_ocp_Bode1977.py +++ /dev/null @@ -1,24 +0,0 @@ -# -# Open-circuit voltage in the positive (lead-dioxide) electrode -# -from pybamm import log10 - - -def lead_dioxide_ocp_Bode1977(m): - """ - Dimensional open-circuit voltage in the positive (lead-dioxide) electrode [V], - from [1]_, as a function of the molar mass m [mol.kg-1]. - - References - ---------- - .. [1] H Bode. Lead-acid batteries. John Wiley and Sons, Inc., New York, NY, 1977. - - """ - U = ( - 1.628 - + 0.074 * log10(m) - + 0.033 * log10(m) ** 2 - + 0.043 * log10(m) ** 3 - + 0.022 * log10(m) ** 4 - ) - return U diff --git a/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/oxygen_exchange_current_density_Sulzer2019.py b/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/oxygen_exchange_current_density_Sulzer2019.py deleted file mode 100644 index 5152126110..0000000000 --- a/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/oxygen_exchange_current_density_Sulzer2019.py +++ /dev/null @@ -1,33 +0,0 @@ -from pybamm import Parameter - - -def oxygen_exchange_current_density_Sulzer2019(c_e, T): - """ - Dimensional oxygen exchange-current density in the positive electrode, from [1]_ - - References - ---------- - .. [1] V. Sulzer, S. J. Chapman, C. P. Please, D. A. Howey, and C. W. Monroe, - “Faster lead-acid battery simulations from porous-electrode theory: Part I. Physical - model.” - [Journal of the Electrochemical Society](https://doi.org/10.1149/2.0301910jes), - 166(12), 2363 (2019). - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - - """ - j0_ref = 2.5e-23 # srinivasan2003mathematical - c_e_typ = Parameter("Typical electrolyte concentration [mol.m-3]") - j0 = j0_ref * (c_e / c_e_typ) - - return j0 diff --git a/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/parameters.csv b/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/parameters.csv deleted file mode 100644 index c4787c8623..0000000000 --- a/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/parameters.csv +++ /dev/null @@ -1,43 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Positive electrode conductivity [S.m-1],80000,,Lead-oxide -Positive electrode pore size [m],1E-07,, -Maximum porosity of positive electrode,0.57,, -Molar volume of lead-dioxide [m3.mol-1],2.54797441364606E-05,,Calculated as 239e-3 / 9.38e3 -Molar volume of lead sulfate [m3.mol-1],4.81717011128776E-05,,Calculated as 303e-3 / 6.29e3 -Positive electrode volumetric capacity [C.m-3],2.745e9,bernardi1995mathematical, -Positive electrode open-circuit potential [V],[function]lead_dioxide_ocp_Bode1977,, -,,, -# Microstructure,,, -Positive electrode surface area to volume ratio [m-1],23000000,, -Positive electrode Bruggeman coefficient (electrolyte),1.5,, -Positive electrode Bruggeman coefficient (electrode),1.5,, -Positive electrode morphological parameter,0.6,srinivasan2003mathematical, -Positive electrode capacity [C.m-3],2745000000,, -,,, -# Interfacial reactions,,, -Positive electrode cation signed stoichiometry,3,, -Positive electrode electrons in reaction,2,, -Positive electrode exchange-current density [A.m-2],[function]lead_dioxide_exchange_current_density_Sulzer2019,, -Signed stoichiometry of cations (oxygen reaction),4,, -Signed stoichiometry of water (oxygen reaction),-1,, -Signed stoichiometry of oxygen (oxygen reaction),1,, -Electrons in oxygen reaction,4,, -Positive electrode oxygen exchange-current density [A.m-2],[function]oxygen_exchange_current_density_Sulzer2019,, -Reference oxygen molecule concentration [mol.m-3],1000,srinivasan2003mathematical, -Oxygen reference OCP vs SHE [V],1.229,srinivasan2003mathematical, -Signed stoichiometry of cations (hydrogen reaction),2,, -Signed stoichiometry of hydrogen (hydrogen reaction),-1,, -Electrons in hydrogen reaction,2,, -Positive electrode reference exchange-current density (hydrogen) [A.m-2],0,srinivasan2003mathematical, -Hydrogen reference OCP vs SHE [V],0,srinivasan2003mathematical, -Positive electrode double-layer capacity [F.m-2],0.2,, -,,, -# Density,,, -Positive electrode density [kg.m-3],9375,Pubchem, -,,, -# Thermal parameters,,, -Positive electrode specific heat capacity [J.kg-1.K-1],256,NIST Chemistry WebBook SRD69, -Positive electrode thermal conductivity [W.m-1.K-1],35,assume same as lead, diff --git a/pybamm/input/parameters/lead_acid/separators/agm_Sulzer2019/README.md b/pybamm/input/parameters/lead_acid/separators/agm_Sulzer2019/README.md deleted file mode 100644 index b64b644c22..0000000000 --- a/pybamm/input/parameters/lead_acid/separators/agm_Sulzer2019/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# AGM separator parameters - -Parameters for an Absorbent Glass Mat (AGM) separator, from the paper - -> V. Sulzer, S. J. Chapman, C. P. Please, D. A. Howey, and C. W. Monroe, “Faster lead-acid battery simulations from porous-electrode theory: Part I. Physical model.” [Journal of the Electrochemical Society](https://doi.org/10.1149/2.0301910jes), 166(12), 2363 (2019). - -and references therein. diff --git a/pybamm/input/parameters/lead_acid/separators/agm_Sulzer2019/parameters.csv b/pybamm/input/parameters/lead_acid/separators/agm_Sulzer2019/parameters.csv deleted file mode 100644 index 35f4884e81..0000000000 --- a/pybamm/input/parameters/lead_acid/separators/agm_Sulzer2019/parameters.csv +++ /dev/null @@ -1,8 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -Maximum porosity of separator,0.92,, -Separator Bruggeman coefficient (electrolyte),1.5,, -Separator density [kg.m-3],1680, Bulk density from Gigova 2006, -Separator specific heat capacity [J.kg-1.K-1],700, Electronics Cooling (fiberglass), -Separator thermal conductivity [W.m-1.K-1],0.04, University Physics Sears et al. 1999 (fiberglass), \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/Ai2020.py b/pybamm/input/parameters/lithium_ion/Ai2020.py new file mode 100644 index 0000000000..59e2db510a --- /dev/null +++ b/pybamm/input/parameters/lithium_ion/Ai2020.py @@ -0,0 +1,692 @@ +import pybamm +import os + + +def graphite_diffusivity_Dualfoil1998(sto, T): + """ + Graphite diffusivity as a function of stochiometry [1, 2, 3]. + + References + ---------- + .. [1] Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). + Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in + Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 + DOI: 10.1149/2.0122001JES. + .. [2] Rieger, B., Erhard, S. V., Rumpf, K., & Jossen, A. (2016). + A new method to model the thickness change of a commercial pouch cell + during discharge. Journal of The Electrochemical Society, 163(8), A1566-A1575. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature, [K] + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity [m2.s-1] + """ + D_ref = 3.9 * 10 ** (-14) + E_D_s = 5000 + T_ref = 298.15 + arrhenius = pybamm.exp(E_D_s / pybamm.constants.R * (1 / T_ref - 1 / T)) + return D_ref * arrhenius + + +def graphite_electrolyte_exchange_current_density_Dualfoil1998( + c_e, c_s_surf, c_s_max, T +): + """ + Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in + EC:DMC. + + References + ---------- + .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + m_ref = ( + 1 * 10 ** (-11) * pybamm.constants.F + ) # (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 5000 # activation energy for Temperature Dependent Reaction Constant [J/mol] + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def graphite_entropy_Enertech_Ai2020_function(sto, c_s_max): + """ + Lithium Cobalt Oxide (LiCO2) entropic change in open circuit potential (OCP) at + a temperature of 298.15K as a function of the stochiometry. The fit is taken + from Ref [1], which is only accurate + for 0.43 < sto < 0.9936. + + References + ---------- + .. [1] Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). + Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in Lithium-Ion Pouch Cells. # noqa + Journal of The Electrochemical Society, 167(1), 013512. DOI: 10.1149/2.0122001JES # noqa + + Parameters + ---------- + sto: double + Stochiometry of material (li-fraction) + + Returns + ------- + :class:`pybamm.Symbol` + Entropic change [V.K-1] + """ + + du_dT = ( + 0.001 + * ( + 0.005269056 + + 3.299265709 * sto + - 91.79325798 * sto**2 + + 1004.911008 * sto**3 + - 5812.278127 * sto**4 + + 19329.7549 * sto**5 + - 37147.8947 * sto**6 + + 38379.18127 * sto**7 + - 16515.05308 * sto**8 + ) + / ( + 1 + - 48.09287227 * sto + + 1017.234804 * sto**2 + - 10481.80419 * sto**3 + + 59431.3 * sto**4 + - 195881.6488 * sto**5 + + 374577.3152 * sto**6 + - 385821.1607 * sto**7 + + 165705.8597 * sto**8 + ) + ) + + return du_dT + + +def graphite_volume_change_Ai2020(sto, c_s_max): + """ + Graphite particle volume change as a function of stochiometry [1, 2]. + + References + ---------- + .. [1] Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). + Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in + Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 + DOI: 10.1149/2.0122001JES. + .. [2] Rieger, B., Erhard, S. V., Rumpf, K., & Jossen, A. (2016). + A new method to model the thickness change of a commercial pouch cell + during discharge. Journal of The Electrochemical Society, 163(8), A1566-A1575. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry, dimensionless + should be R-averaged particle concentration + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + + Returns + ------- + t_change:class:`pybamm.Symbol` + volume change, dimensionless, normalised by particle volume + """ + p1 = 145.907 + p2 = -681.229 + p3 = 1334.442 + p4 = -1415.710 + p5 = 873.906 + p6 = -312.528 + p7 = 60.641 + p8 = -5.706 + p9 = 0.386 + p10 = -4.966e-05 + t_change = ( + p1 * sto**9 + + p2 * sto**8 + + p3 * sto**7 + + p4 * sto**6 + + p5 * sto**5 + + p6 * sto**4 + + p7 * sto**3 + + p8 * sto**2 + + p9 * sto + + p10 + ) + return t_change + + +def graphite_cracking_rate_Ai2020(T_dim): + """ + graphite particle cracking rate as a function of temperature [1, 2]. + + References + ---------- + .. [1] Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). + Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in + Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 + DOI: 10.1149/2.0122001JES. + .. [2] Deshpande, R., Verbrugge, M., Cheng, Y. T., Wang, J., & Liu, P. (2012). + Battery cycle life prediction with coupled chemical degradation and fatigue + mechanics. Journal of the Electrochemical Society, 159(10), A1730. + + Parameters + ---------- + T_dim: :class:`pybamm.Symbol` + temperature, [K] + + Returns + ------- + k_cr: :class:`pybamm.Symbol` + cracking rate, [m/(Pa.m0.5)^m_cr] + where m_cr is another Paris' law constant + """ + k_cr = 3.9e-20 + T_ref = 298.15 + Eac_cr = pybamm.Parameter( + "Negative electrode activation energy for cracking rate [J.mol-1]" + ) + arrhenius = pybamm.exp(Eac_cr / pybamm.constants.R * (1 / T_dim - 1 / T_ref)) + return k_cr * arrhenius + + +def lico2_diffusivity_Dualfoil1998(sto, T): + """ + LiCo2 diffusivity as a function of stochiometry, in this case the + diffusivity is taken to be a constant. The value is taken from Dualfoil [1]. + + References + ---------- + .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature, [K] + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity [m2.s-1] + """ + D_ref = 5.387 * 10 ** (-15) + E_D_s = 5000 + T_ref = 298.15 + arrhenius = pybamm.exp(E_D_s / pybamm.constants.R * (1 / T_ref - 1 / T)) + return D_ref * arrhenius + + +def lico2_electrolyte_exchange_current_density_Dualfoil1998(c_e, c_s_surf, c_s_max, T): + """ + Exchange-current density for Butler-Volmer reactions between lico2 and LiPF6 in + EC:DMC. + + References + ---------- + .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + m_ref = 1 * 10 ** (-11) * pybamm.constants.F # need to match the unit from m/s + # (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 5000 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def lico2_entropic_change_Ai2020_function(sto, c_s_max): + """ + Lithium Cobalt Oxide (LiCO2) entropic change in open circuit potential (OCP) at + a temperature of 298.15K as a function of the stochiometry. The fit is taken + from Ref [1], which is only accurate + for 0.43 < sto < 0.9936. + + References + ---------- + .. [1] Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). + Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity + in Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, + 167(1), 013512. DOI: 10.1149/2.0122001JES + + Parameters + ---------- + sto: double + Stochiometry of material (li-fraction) + + Returns + ------- + :class:`pybamm.Symbol` + Entropic change [V.K-1] + """ + + # Since the equation for LiCo2 from this ref. has the stretch factor, + # should this too? If not, the "bumps" in the OCV don't line up. + p1 = -3.20392657 + p2 = 14.5719049 + p3 = -27.9047599 + p4 = 29.1744564 + p5 = -17.992018 + p6 = 6.54799331 + p7 = -1.30382445 + p8 = 0.109667298 + + du_dT = ( + p1 * sto**7 + + p2 * sto**6 + + p3 * sto**5 + + p4 * sto**4 + + p5 * sto**3 + + p6 * sto**2 + + p7 * sto + + p8 + ) + + return du_dT + + +def lico2_volume_change_Ai2020(sto, c_s_max): + """ + lico2 particle volume change as a function of stochiometry [1, 2]. + + References + ---------- + .. [1] Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). + Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in + Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 + DOI: 10.1149/2.0122001JES. + .. [2] Rieger, B., Erhard, S. V., Rumpf, K., & Jossen, A. (2016). + A new method to model the thickness change of a commercial pouch cell + during discharge. Journal of The Electrochemical Society, 163(8), A1566-A1575. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry, dimensionless + should be R-averaged particle concentration + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + + Returns + ------- + t_change:class:`pybamm.Symbol` + volume change, dimensionless, normalised by particle volume + """ + omega = pybamm.Parameter("Positive electrode partial molar volume [m3.mol-1]") + t_change = omega * c_s_max * sto + return t_change + + +def lico2_cracking_rate_Ai2020(T_dim): + """ + lico2 particle cracking rate as a function of temperature [1, 2]. + + References + ---------- + .. [1] Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). + Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in + Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 + DOI: 10.1149/2.0122001JES. + .. [2] Deshpande, R., Verbrugge, M., Cheng, Y. T., Wang, J., & Liu, P. (2012). + Battery cycle life prediction with coupled chemical degradation and fatigue + mechanics. Journal of the Electrochemical Society, 159(10), A1730. + + Parameters + ---------- + T: :class:`pybamm.Symbol` + temperature, [K] + + Returns + ------- + k_cr: :class:`pybamm.Symbol` + cracking rate, [m/(Pa.m0.5)^m_cr] + where m_cr is another Paris' law constant + """ + k_cr = 3.9e-20 + T_ref = 298.15 + Eac_cr = pybamm.Parameter( + "Positive electrode activation energy for cracking rate [J.mol-1]" + ) + arrhenius = pybamm.exp(Eac_cr / pybamm.constants.R * (1 / T_dim - 1 / T_ref)) + return k_cr * arrhenius + + +def dlnf_dlnc_Ai2020(c_e, T, T_ref=298.3, t_plus=0.38): + """ + Activity dependence of LiPF6 in EC:DMC as a function of ion concentration. + + References + ---------- + .. [1] Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). + Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity + in Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, + 167(1), 013512. DOI: 10.1149/2.0122001JES. + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration, mol/m^3 + T: :class:`pybamm.Symbol` + Dimensional temperature, K + + Returns + ------- + :class:`pybamm.Symbol` + 1 + dlnf/dlnc + """ + T_ref = 298.15 + t_plus = pybamm.Parameter("Cation transference number") + dlnf_dlnc = ( + 0.601 + - 0.24 * (c_e / 1000) ** 0.5 + + 0.982 * (1 - 0.0052 * (T - T_ref)) * (c_e / 1000) ** 1.5 + ) / (1 - t_plus) + return dlnf_dlnc + + +def electrolyte_diffusivity_Ai2020(c_e, T): + """ + Diffusivity of LiPF6 in EC:DMC as a function of ion concentration. + + References + ---------- + .. [1] Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). + Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity + in Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, + 167(1), 013512. DOI: 10.1149/2.0122001JES. + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration, mol/m^3 + T: :class:`pybamm.Symbol` + Dimensional temperature, K + + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_c_e = 10 ** (-8.43 - 54 / (T - 229 - 5e-3 * c_e) - 0.22e-3 * c_e) + + return D_c_e + + +def electrolyte_conductivity_Ai2020(c_e, T): + """ + Conductivity of LiPF6 in EC:DMC as a function of ion concentration. + Concentration should be in dm3 in the function. + + References + ---------- + .. [1] Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). + Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity + in Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, + 167(1), 013512. DOI: 10.1149/2.0122001JES. + .. [2] Torchio, Marcello, et al. "Lionsimba: a matlab framework based + on a finite volume model suitable for li-ion battery design, simulation, + and control." Journal of The Electrochemical Society 163.7 (2016): A1192. + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + sigma_e = ( + 1e-4 + * c_e + * ( + (-10.5 + 0.668 * 1e-3 * c_e + 0.494 * 1e-6 * c_e**2) + + (0.074 - 1.78 * 1e-5 * c_e - 8.86 * 1e-10 * c_e**2) * T + + (-6.96 * 1e-5 + 2.8 * 1e-8 * c_e) * T**2 + ) + ** 2 + ) + + return sigma_e + + +# Load data in the appropriate format +path, _ = os.path.split(os.path.abspath(__file__)) +graphite_ocp_Enertech_Ai2020 = pybamm.parameters.process_1D_data( + "graphite_ocp_Enertech_Ai2020.csv", path=path +) +lico2_ocp_Ai2020 = pybamm.parameters.process_1D_data("lico2_ocp_Ai2020.csv", path=path) + + +# Call dict via a function to avoid errors when editing in place +def get_parameter_values(): + """ + Parameters for the Enertech cell (Ai2020), from the papers + + > Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). Electrochemical + Thermal-Mechanical Modelling of Stress Inhomogeneity in Lithium-Ion Pouch Cells. + Journal of The Electrochemical Society, 167(1), 013512. DOI: 10.1149/2.0122001JES. + > Rieger, B., Erhard, S. V., Rumpf, K., & Jossen, A. (2016). A new method to model + the thickness change of a commercial pouch cell during discharge. Journal of The + Electrochemical Society, 163(8), A1566-A1575. + + and references therein. + + SEI parameters are example parameters for SEI growth from the papers: + + > Ramadass, P., Haran, B., Gomadam, P. M., White, R., & Popov, B. N. (2004). + Development of first principles capacity fade model for Li-ion cells. Journal of the + Electrochemical Society, 151(2), A196-A203. + > Ploehn, H. J., Ramadass, P., & White, R. E. (2004). Solvent diffusion model for + aging of lithium-ion battery cells. Journal of The Electrochemical Society, 151(3), + A456-A462. + > Single, F., Latz, A., & Horstmann, B. (2018). Identifying the mechanism of + continued growth of the solid–electrolyte interphase. ChemSusChem, 11(12), + 1950-1955. + > Safari, M., Morcrette, M., Teyssot, A., & Delacour, C. (2009). Multimodal Physics- + Based Aging Model for Life Prediction of Li-Ion Batteries. Journal of The + Electrochemical Society, 156(3), + > Yang, X., Leng, Y., Zhang, G., Ge, S., Wang, C. (2017). Modeling of lithium + plating induced aging of lithium-ion batteries: Transition from linear to nonlinear + aging. Journal of Power Sources, 360, 28-40. + + Note: this parameter set does not claim to be representative of the true parameter + values. Instead these are parameter values that were used to fit SEI models to + observed experimental data in the referenced papers. + """ + + return { + # sei + "Ratio of lithium moles to SEI moles": 2.0, + "Inner SEI reaction proportion": 0.5, + "Inner SEI partial molar volume [m3.mol-1]": 9.585e-05, + "Outer SEI partial molar volume [m3.mol-1]": 9.585e-05, + "SEI reaction exchange current density [A.m-2]": 1.5e-07, + "SEI resistivity [Ohm.m]": 200000.0, + "Outer SEI solvent diffusivity [m2.s-1]": 2.5000000000000002e-22, + "Bulk solvent concentration [mol.m-3]": 2636.0, + "Inner SEI open-circuit potential [V]": 0.1, + "Outer SEI open-circuit potential [V]": 0.8, + "Inner SEI electron conductivity [S.m-1]": 8.95e-14, + "Inner SEI lithium interstitial diffusivity [m2.s-1]": 1e-20, + "Lithium interstitial reference concentration [mol.m-3]": 15.0, + "Initial inner SEI thickness [m]": 2.5e-09, + "Initial outer SEI thickness [m]": 2.5e-09, + "EC initial concentration in electrolyte [mol.m-3]": 4541.0, + "EC diffusivity [m2.s-1]": 2e-18, + "SEI kinetic rate constant [m.s-1]": 1e-12, + "SEI open-circuit potential [V]": 0.4, + "SEI growth activation energy [J.mol-1]": 0.0, + "Negative electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + "Positive electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + # cell + "Negative current collector thickness [m]": 1e-05, + "Negative electrode thickness [m]": 7.65e-05, + "Separator thickness [m]": 2.5e-05, + "Positive electrode thickness [m]": 6.8e-05, + "Positive current collector thickness [m]": 1.5e-05, + "Electrode height [m]": 0.051, + "Electrode width [m]": 0.047, + "Cell cooling surface area [m2]": 0.0060484, + "Cell volume [m3]": 1.5341e-05, + "Cell emissivity": 0.95, + "Cell thermal expansion coefficient [m.K-1]": 1.1e-06, + "Negative current collector conductivity [S.m-1]": 58411000.0, + "Positive current collector conductivity [S.m-1]": 36914000.0, + "Negative current collector density [kg.m-3]": 8960.0, + "Positive current collector density [kg.m-3]": 2700.0, + "Negative current collector specific heat capacity [J.kg-1.K-1]": 385.0, + "Positive current collector specific heat capacity [J.kg-1.K-1]": 897.0, + "Negative current collector thermal conductivity [W.m-1.K-1]": 401.0, + "Positive current collector thermal conductivity [W.m-1.K-1]": 237.0, + "Nominal cell capacity [A.h]": 2.28, + "Typical current [A]": 2.28, + "Current function [A]": 2.28, + # negative electrode + "Negative electrode conductivity [S.m-1]": 100.0, + "Maximum concentration in negative electrode [mol.m-3]": 28700.0, + "Negative electrode diffusivity [m2.s-1]": graphite_diffusivity_Dualfoil1998, + "Negative electrode OCP [V]": graphite_ocp_Enertech_Ai2020, + "Negative electrode porosity": 0.33, + "Negative electrode active material volume fraction": 0.61, + "Negative particle radius [m]": 5e-06, + "Negative electrode Bruggeman coefficient (electrolyte)": 2.914, + "Negative electrode Bruggeman coefficient (electrode)": 0.0, + "Negative electrode cation signed stoichiometry": -1.0, + "Negative electrode electrons in reaction": 1.0, + "Negative electrode charge transfer coefficient": 0.5, + "Negative electrode double-layer capacity [F.m-2]": 0.2, + "Negative electrode exchange-current density [A.m-2]" + "": graphite_electrolyte_exchange_current_density_Dualfoil1998, + "Negative electrode density [kg.m-3]": 2470.0, + "Negative electrode specific heat capacity [J.kg-1.K-1]": 1080.2, + "Negative electrode thermal conductivity [W.m-1.K-1]": 1.04, + "Negative electrode OCP entropic change [V.K-1]" + "": graphite_entropy_Enertech_Ai2020_function, + "Negative electrode Poisson's ratio": 0.3, + "Negative electrode Young's modulus [Pa]": 15000000000.0, + "Negative electrode reference concentration for free of deformation [mol.m-3]" + "": 0.0, + "Negative electrode partial molar volume [m3.mol-1]": 3.1e-06, + "Negative electrode volume change": graphite_volume_change_Ai2020, + "Negative electrode initial crack length [m]": 2e-08, + "Negative electrode initial crack width [m]": 1.5e-08, + "Negative electrode number of cracks per unit area [m-2]": 3180000000000000.0, + "Negative electrode Paris' law constant b": 1.12, + "Negative electrode Paris' law constant m": 2.2, + "Negative electrode cracking rate": graphite_cracking_rate_Ai2020, + "Negative electrode activation energy for cracking rate [J.mol-1]": 0.0, + "Negative electrode LAM constant proportional term [s-1]": 0.0, + "Negative electrode LAM constant exponential term": 2.0, + "Negative electrode critical stress [Pa]": 60000000.0, + # positive electrode + "Positive electrode conductivity [S.m-1]": 10.0, + "Maximum concentration in positive electrode [mol.m-3]": 49943.0, + "Positive electrode diffusivity [m2.s-1]": lico2_diffusivity_Dualfoil1998, + "Positive electrode OCP [V]": lico2_ocp_Ai2020, + "Positive electrode porosity": 0.32, + "Positive electrode active material volume fraction": 0.62, + "Positive particle radius [m]": 3e-06, + "Positive electrode surface area to volume ratio [m-1]": 620000.0, + "Positive electrode Bruggeman coefficient (electrolyte)": 1.83, + "Positive electrode Bruggeman coefficient (electrode)": 0.0, + "Positive electrode cation signed stoichiometry": -1.0, + "Positive electrode electrons in reaction": 1.0, + "Positive electrode charge transfer coefficient": 0.5, + "Positive electrode double-layer capacity [F.m-2]": 0.2, + "Positive electrode exchange-current density [A.m-2]" + "": lico2_electrolyte_exchange_current_density_Dualfoil1998, + "Positive electrode density [kg.m-3]": 2470.0, + "Positive electrode specific heat capacity [J.kg-1.K-1]": 1080.2, + "Positive electrode thermal conductivity [W.m-1.K-1]": 1.58, + "Positive electrode OCP entropic change [V.K-1]" + "": lico2_entropic_change_Ai2020_function, + "Positive electrode Poisson's ratio": 0.2, + "Positive electrode Young's modulus [Pa]": 375000000000.0, + "Positive electrode reference concentration for free of deformation [mol.m-3]" + "": 0.0, + "Positive electrode partial molar volume [m3.mol-1]": -7.28e-07, + "Positive electrode volume change": lico2_volume_change_Ai2020, + "Positive electrode initial crack length [m]": 2e-08, + "Positive electrode initial crack width [m]": 1.5e-08, + "Positive electrode number of cracks per unit area [m-2]": 3180000000000000.0, + "Positive electrode Paris' law constant b": 1.12, + "Positive electrode Paris' law constant m": 2.2, + "Positive electrode cracking rate": lico2_cracking_rate_Ai2020, + "Positive electrode activation energy for cracking rate [J.mol-1]": 0.0, + "Positive electrode LAM constant proportional term [s-1]": 2.78e-13, + "Positive electrode LAM constant exponential term": 2.0, + "Positive electrode critical stress [Pa]": 375000000.0, + # separator + "Separator porosity": 0.5, + "Separator Bruggeman coefficient (electrolyte)": 1.5, + "Separator density [kg.m-3]": 2470.0, + "Separator specific heat capacity [J.kg-1.K-1]": 1080.2, + "Separator thermal conductivity [W.m-1.K-1]": 0.334, + # electrolyte + "Typical electrolyte concentration [mol.m-3]": 1000.0, + "Initial concentration in electrolyte [mol.m-3]": 1000.0, + "Cation transference number": 0.38, + "1 + dlnf/dlnc": dlnf_dlnc_Ai2020, + "Electrolyte diffusivity [m2.s-1]": electrolyte_diffusivity_Ai2020, + "Electrolyte conductivity [S.m-1]": electrolyte_conductivity_Ai2020, + # experiment + "Reference temperature [K]": 298.15, + "Total heat transfer coefficient [W.m-2.K-1]": 35.0, + "Ambient temperature [K]": 298.15, + "Number of electrodes connected in parallel to make a cell": 34.0, + "Number of cells connected in series to make a battery": 1.0, + "Lower voltage cut-off [V]": 3.0, + "Upper voltage cut-off [V]": 4.2, + "Initial concentration in negative electrode [mol.m-3]": 24108.0, + "Initial concentration in positive electrode [mol.m-3]": 21725.0, + "Initial temperature [K]": 298.15, + # citations + "citations": ["Ai2019"], + } diff --git a/pybamm/input/parameters/lithium_ion/Chen2020.py b/pybamm/input/parameters/lithium_ion/Chen2020.py new file mode 100644 index 0000000000..5390931ca7 --- /dev/null +++ b/pybamm/input/parameters/lithium_ion/Chen2020.py @@ -0,0 +1,360 @@ +import pybamm + + +def graphite_LGM50_ocp_Chen2020(sto): + """ + LG M50 Graphite open-circuit potential as a function of stochiometry, fit taken + from [1]. + + References + ---------- + .. [1] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + + Returns + ------- + :class:`pybamm.Symbol` + Open circuit potential + """ + + u_eq = ( + 1.9793 * pybamm.exp(-39.3631 * sto) + + 0.2482 + - 0.0909 * pybamm.tanh(29.8538 * (sto - 0.1234)) + - 0.04478 * pybamm.tanh(14.9159 * (sto - 0.2769)) + - 0.0205 * pybamm.tanh(30.4444 * (sto - 0.6103)) + ) + + return u_eq + + +def graphite_LGM50_electrolyte_exchange_current_density_Chen2020( + c_e, c_s_surf, c_s_max, T +): + """ + Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in + EC:DMC. + + References + ---------- + .. [1] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + m_ref = 6.48e-7 # (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 35000 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def nmc_LGM50_ocp_Chen2020(sto): + """ + LG M50 NMC open circuit potential as a function of stochiometry, fit taken + from [1]. + + References + ---------- + .. [1] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + + Returns + ------- + :class:`pybamm.Symbol` + Open circuit potential + """ + + u_eq = ( + -0.8090 * sto + + 4.4875 + - 0.0428 * pybamm.tanh(18.5138 * (sto - 0.5542)) + - 17.7326 * pybamm.tanh(15.7890 * (sto - 0.3117)) + + 17.5842 * pybamm.tanh(15.9308 * (sto - 0.3120)) + ) + + return u_eq + + +def nmc_LGM50_electrolyte_exchange_current_density_Chen2020(c_e, c_s_surf, c_s_max, T): + """ + Exchange-current density for Butler-Volmer reactions between NMC and LiPF6 in + EC:DMC. + + References + ---------- + .. [1] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + m_ref = 3.42e-6 # (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 17800 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def electrolyte_diffusivity_Nyman2008(c_e, T): + """ + 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:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_c_e = 8.794e-11 * (c_e / 1000) ** 2 - 3.972e-10 * (c_e / 1000) + 4.862e-10 + + # Nyman et al. (2008) does not provide temperature dependence + + return D_c_e + + +def electrolyte_conductivity_Nyman2008(c_e, T): + """ + 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:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + sigma_e = ( + 0.1297 * (c_e / 1000) ** 3 - 2.51 * (c_e / 1000) ** 1.5 + 3.329 * (c_e / 1000) + ) + + # Nyman et al. (2008) does not provide temperature dependence + + return sigma_e + + +# Call dict via a function to avoid errors when editing in place +def get_parameter_values(): + """ + 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."](https://iopscience.iop.org/article/10.1149/1945-7111/ab9050) Journal of + the Electrochemical Society 167 (2020): 080534 + + and references therein. + + SEI parameters are example parameters for SEI growth from the papers: + + > Ramadass, P., Haran, B., Gomadam, P. M., White, R., & Popov, B. N. (2004). + Development of first principles capacity fade model for Li-ion cells. Journal of the + Electrochemical Society, 151(2), A196-A203. + > Ploehn, H. J., Ramadass, P., & White, R. E. (2004). Solvent diffusion model for + aging of lithium-ion battery cells. Journal of The Electrochemical Society, 151(3), + A456-A462. + > Single, F., Latz, A., & Horstmann, B. (2018). Identifying the mechanism of + continued growth of the solid–electrolyte interphase. ChemSusChem, 11(12), + 1950-1955. + > Safari, M., Morcrette, M., Teyssot, A., & Delacour, C. (2009). Multimodal Physics- + Based Aging Model for Life Prediction of Li-Ion Batteries. Journal of The + Electrochemical Society, 156(3), + > Yang, X., Leng, Y., Zhang, G., Ge, S., Wang, C. (2017). Modeling of lithium + plating induced aging of lithium-ion batteries: Transition from linear to nonlinear + aging. Journal of Power Sources, 360, 28-40. + + Note: this parameter set does not claim to be representative of the true parameter + values. Instead these are parameter values that were used to fit SEI models to + observed experimental data in the referenced papers. + """ + + return { + # sei + "Ratio of lithium moles to SEI moles": 2.0, + "Inner SEI reaction proportion": 0.5, + "Inner SEI partial molar volume [m3.mol-1]": 9.585e-05, + "Outer SEI partial molar volume [m3.mol-1]": 9.585e-05, + "SEI reaction exchange current density [A.m-2]": 1.5e-07, + "SEI resistivity [Ohm.m]": 200000.0, + "Outer SEI solvent diffusivity [m2.s-1]": 2.5000000000000002e-22, + "Bulk solvent concentration [mol.m-3]": 2636.0, + "Inner SEI open-circuit potential [V]": 0.1, + "Outer SEI open-circuit potential [V]": 0.8, + "Inner SEI electron conductivity [S.m-1]": 8.95e-14, + "Inner SEI lithium interstitial diffusivity [m2.s-1]": 1e-20, + "Lithium interstitial reference concentration [mol.m-3]": 15.0, + "Initial inner SEI thickness [m]": 2.5e-09, + "Initial outer SEI thickness [m]": 2.5e-09, + "EC initial concentration in electrolyte [mol.m-3]": 4541.0, + "EC diffusivity [m2.s-1]": 2e-18, + "SEI kinetic rate constant [m.s-1]": 1e-12, + "SEI open-circuit potential [V]": 0.4, + "SEI growth activation energy [J.mol-1]": 0.0, + "Negative electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + "Positive electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + # cell + "Negative current collector thickness [m]": 1.2e-05, + "Negative electrode thickness [m]": 8.52e-05, + "Separator thickness [m]": 1.2e-05, + "Positive electrode thickness [m]": 7.56e-05, + "Positive current collector thickness [m]": 1.6e-05, + "Electrode height [m]": 0.065, + "Electrode width [m]": 1.58, + "Cell cooling surface area [m2]": 0.00531, + "Cell volume [m3]": 2.42e-05, + "Cell thermal expansion coefficient [m.K-1]": 1.1e-06, + "Negative current collector conductivity [S.m-1]": 58411000.0, + "Positive current collector conductivity [S.m-1]": 36914000.0, + "Negative current collector density [kg.m-3]": 8960.0, + "Positive current collector density [kg.m-3]": 2700.0, + "Negative current collector specific heat capacity [J.kg-1.K-1]": 385.0, + "Positive current collector specific heat capacity [J.kg-1.K-1]": 897.0, + "Negative current collector thermal conductivity [W.m-1.K-1]": 401.0, + "Positive current collector thermal conductivity [W.m-1.K-1]": 237.0, + "Nominal cell capacity [A.h]": 5.0, + "Typical current [A]": 5.0, + "Current function [A]": 5.0, + # negative electrode + "Negative electrode conductivity [S.m-1]": 215.0, + "Maximum concentration in negative electrode [mol.m-3]": 33133.0, + "Negative electrode diffusivity [m2.s-1]": 3.3e-14, + "Negative electrode OCP [V]": graphite_LGM50_ocp_Chen2020, + "Negative electrode porosity": 0.25, + "Negative electrode active material volume fraction": 0.75, + "Negative particle radius [m]": 5.86e-06, + "Negative electrode Bruggeman coefficient (electrolyte)": 1.5, + "Negative electrode Bruggeman coefficient (electrode)": 1.5, + "Negative electrode cation signed stoichiometry": -1.0, + "Negative electrode electrons in reaction": 1.0, + "Negative electrode charge transfer coefficient": 0.5, + "Negative electrode double-layer capacity [F.m-2]": 0.2, + "Negative electrode exchange-current density [A.m-2]" + "": graphite_LGM50_electrolyte_exchange_current_density_Chen2020, + "Negative electrode density [kg.m-3]": 1657.0, + "Negative electrode specific heat capacity [J.kg-1.K-1]": 700.0, + "Negative electrode thermal conductivity [W.m-1.K-1]": 1.7, + "Negative electrode OCP entropic change [V.K-1]": 0.0, + # positive electrode + "Positive electrode conductivity [S.m-1]": 0.18, + "Maximum concentration in positive electrode [mol.m-3]": 63104.0, + "Positive electrode diffusivity [m2.s-1]": 4e-15, + "Positive electrode OCP [V]": nmc_LGM50_ocp_Chen2020, + "Positive electrode porosity": 0.335, + "Positive electrode active material volume fraction": 0.665, + "Positive particle radius [m]": 5.22e-06, + "Positive electrode Bruggeman coefficient (electrolyte)": 1.5, + "Positive electrode Bruggeman coefficient (electrode)": 1.5, + "Positive electrode cation signed stoichiometry": -1.0, + "Positive electrode electrons in reaction": 1.0, + "Positive electrode charge transfer coefficient": 0.5, + "Positive electrode double-layer capacity [F.m-2]": 0.2, + "Positive electrode exchange-current density [A.m-2]" + "": nmc_LGM50_electrolyte_exchange_current_density_Chen2020, + "Positive electrode density [kg.m-3]": 3262.0, + "Positive electrode specific heat capacity [J.kg-1.K-1]": 700.0, + "Positive electrode thermal conductivity [W.m-1.K-1]": 2.1, + "Positive electrode OCP entropic change [V.K-1]": 0.0, + # separator + "Separator porosity": 0.47, + "Separator Bruggeman coefficient (electrolyte)": 1.5, + "Separator density [kg.m-3]": 397.0, + "Separator specific heat capacity [J.kg-1.K-1]": 700.0, + "Separator thermal conductivity [W.m-1.K-1]": 0.16, + # electrolyte + "Typical electrolyte concentration [mol.m-3]": 1000.0, + "Initial concentration in electrolyte [mol.m-3]": 1000.0, + "Cation transference number": 0.2594, + "1 + dlnf/dlnc": 1.0, + "Electrolyte diffusivity [m2.s-1]": electrolyte_diffusivity_Nyman2008, + "Electrolyte conductivity [S.m-1]": electrolyte_conductivity_Nyman2008, + # experiment + "Reference temperature [K]": 298.15, + "Total heat transfer coefficient [W.m-2.K-1]": 10.0, + "Ambient temperature [K]": 298.15, + "Number of electrodes connected in parallel to make a cell": 1.0, + "Number of cells connected in series to make a battery": 1.0, + "Lower voltage cut-off [V]": 2.5, + "Upper voltage cut-off [V]": 4.2, + "Initial concentration in negative electrode [mol.m-3]": 29866.0, + "Initial concentration in positive electrode [mol.m-3]": 17038.0, + "Initial temperature [K]": 298.15, + # citations + "citations": ["Chen2020"], + } diff --git a/pybamm/input/parameters/lithium_ion/Chen2020_composite.py b/pybamm/input/parameters/lithium_ion/Chen2020_composite.py new file mode 100644 index 0000000000..361069aa2e --- /dev/null +++ b/pybamm/input/parameters/lithium_ion/Chen2020_composite.py @@ -0,0 +1,470 @@ +import pybamm +import os + + +def graphite_LGM50_electrolyte_exchange_current_density_Chen2020( + c_e, c_s_surf, c_s_max, T +): + """ + Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in + EC:DMC. + + References + ---------- + .. [1] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + m_ref = 6.48e-7 # (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 35000 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def silicon_ocp_lithiation_Mark2016(sto): + """ + silicon Open Circuit Potential (OCP) as a a function of the + stochiometry. The fit is taken from the Enertech cell [1], which is only accurate + for 0 < sto < 1. + + References + ---------- + .. [1] Verbrugge M, Baker D, Xiao X. Formulation for the treatment of multiple + electrochemical reactions and associated speciation for the Lithium-Silicon + electrode[J]. Journal of The Electrochemical Society, 2015, 163(2): A262. + + Parameters + ---------- + sto: double + Stochiometry of material (li-fraction) + + Returns + ------- + :class:`pybamm.Symbol` + OCP [V] + """ + p1 = -96.63 + p2 = 372.6 + p3 = -587.6 + p4 = 489.9 + p5 = -232.8 + p6 = 62.99 + p7 = -9.286 + p8 = 0.8633 + + U_lithiation = ( + p1 * sto**7 + + p2 * sto**6 + + p3 * sto**5 + + p4 * sto**4 + + p5 * sto**3 + + p6 * sto**2 + + p7 * sto + + p8 + ) + return U_lithiation + + +def silicon_ocp_delithiation_Mark2016(sto): + """ + silicon Open Circuit Potential (OCP) as a a function of the + stochiometry. The fit is taken from the Enertech cell [1], which is only accurate + for 0 < sto < 1. + + References + ---------- + .. [1] Verbrugge M, Baker D, Xiao X. Formulation for the treatment of multiple + electrochemical reactions and associated speciation for the Lithium-Silicon + electrode[J]. Journal of The Electrochemical Society, 2015, 163(2): A262. + + Parameters + ---------- + sto: double + Stochiometry of material (li-fraction) + + Returns + ------- + :class:`pybamm.Symbol` + OCP [V] + """ + p1 = -51.02 + p2 = 161.3 + p3 = -205.7 + p4 = 140.2 + p5 = -58.76 + p6 = 16.87 + p7 = -3.792 + p8 = 0.9937 + + U_delithiation = ( + p1 * sto**7 + + p2 * sto**6 + + p3 * sto**5 + + p4 * sto**4 + + p5 * sto**3 + + p6 * sto**2 + + p7 * sto + + p8 + ) + return U_delithiation + + +def silicon_LGM50_electrolyte_exchange_current_density_Chen2020( + c_e, c_s_surf, c_s_max, T +): + """ + Exchange-current density for Butler-Volmer reactions between silicon and LiPF6 in + EC:DMC. + + References + ---------- + .. [1] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + + m_ref = ( + 6.48e-7 * 28700 / 278000 + ) # (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 35000 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def nmc_LGM50_ocp_Chen2020(sto): + """ + LG M50 NMC open circuit potential as a function of stochiometry, fit taken + from [1]. + + References + ---------- + .. [1] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + + Returns + ------- + :class:`pybamm.Symbol` + Open circuit potential + """ + + u_eq = ( + -0.8090 * sto + + 4.4875 + - 0.0428 * pybamm.tanh(18.5138 * (sto - 0.5542)) + - 17.7326 * pybamm.tanh(15.7890 * (sto - 0.3117)) + + 17.5842 * pybamm.tanh(15.9308 * (sto - 0.3120)) + ) + + return u_eq + + +def nmc_LGM50_electrolyte_exchange_current_density_Chen2020(c_e, c_s_surf, c_s_max, T): + """ + Exchange-current density for Butler-Volmer reactions between NMC and LiPF6 in + EC:DMC. + + References + ---------- + .. [1] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + m_ref = 3.42e-6 # (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 17800 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def electrolyte_diffusivity_Nyman2008(c_e, T): + """ + 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:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_c_e = 8.794e-11 * (c_e / 1000) ** 2 - 3.972e-10 * (c_e / 1000) + 4.862e-10 + + # Nyman et al. (2008) does not provide temperature dependence + + return D_c_e + + +def electrolyte_conductivity_Nyman2008(c_e, T): + """ + 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:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + sigma_e = ( + 0.1297 * (c_e / 1000) ** 3 - 2.51 * (c_e / 1000) ** 1.5 + 3.329 * (c_e / 1000) + ) + + # Nyman et al. (2008) does not provide temperature dependence + + return sigma_e + + +# Load data in the appropriate format +path, _ = os.path.split(os.path.abspath(__file__)) +graphite_ocp_Enertech_Ai2020 = pybamm.parameters.process_1D_data( + "graphite_ocp_Enertech_Ai2020.csv", path=path +) + + +# Call dict via a function to avoid errors when editing in place +def get_parameter_values(): + """ + Parameters for a composite graphite/silicon negative electrode, from the paper + + > Ai, W., Kirkaldy, N., Jiang, Y., Offer, G., Wang, H., & Wu, B. (2022). A composite + electrode model for lithium-ion batteries with silicon/graphite negative + electrodes. Journal of Power Sources, 527, 231142. + + based on 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."](https://iopscience.iop.org/article/10.1149/1945-7111/ab9050) Journal of + the Electrochemical Society 167 (2020): 080534 + + and references therein. + + SEI parameters are example parameters for composite SEI on silicon/graphite. + Both phases use the same values, from the paper + + > Yang, X., Leng, Y., Zhang, G., Ge, S., Wang, C. (2017). Modeling of lithium + plating induced aging of lithium-ion batteries: Transition from linear to nonlinear + aging. Journal of Power Sources, 360, 28-40. + """ + + return { + # sei + "Primary: Ratio of lithium moles to SEI moles": 2.0, + "Primary: Inner SEI partial molar volume [m3.mol-1]": 9.585e-05, + "Primary: Outer SEI partial molar volume [m3.mol-1]": 9.585e-05, + "Primary: SEI resistivity [Ohm.m]": 200000.0, + "Primary: Initial inner SEI thickness [m]": 2.5e-09, + "Primary: Initial outer SEI thickness [m]": 2.5e-09, + "Primary: EC initial concentration in electrolyte [mol.m-3]": 4541.0, + "Primary: EC diffusivity [m2.s-1]": 2e-18, + "Primary: SEI kinetic rate constant [m.s-1]": 1e-12, + "Primary: SEI open-circuit potential [V]": 0.4, + "Primary: SEI growth activation energy [J.mol-1]": 0.0, + "Secondary: Ratio of lithium moles to SEI moles": 2.0, + "Secondary: Inner SEI partial molar volume [m3.mol-1]": 9.585e-05, + "Secondary: Outer SEI partial molar volume [m3.mol-1]": 9.585e-05, + "Secondary: SEI resistivity [Ohm.m]": 200000.0, + "Secondary: Initial inner SEI thickness [m]": 2.5e-09, + "Secondary: Initial outer SEI thickness [m]": 2.5e-09, + "Secondary: EC initial concentration in electrolyte [mol.m-3]": 4541.0, + "Secondary: EC diffusivity [m2.s-1]": 2e-18, + "Secondary: SEI kinetic rate constant [m.s-1]": 1e-12, + "Secondary: SEI open-circuit potential [V]": 0.4, + "Secondary: SEI growth activation energy [J.mol-1]": 0.0, + # cell + "Negative current collector thickness [m]": 1.2e-05, + "Negative electrode thickness [m]": 8.52e-05, + "Separator thickness [m]": 1.2e-05, + "Positive electrode thickness [m]": 7.56e-05, + "Positive current collector thickness [m]": 1.6e-05, + "Electrode height [m]": 0.065, + "Electrode width [m]": 1.58, + "Cell cooling surface area [m2]": 0.00531, + "Cell volume [m3]": 2.42e-05, + "Cell thermal expansion coefficient [m.K-1]": 1.1e-06, + "Negative current collector conductivity [S.m-1]": 58411000.0, + "Positive current collector conductivity [S.m-1]": 36914000.0, + "Negative current collector density [kg.m-3]": 8960.0, + "Positive current collector density [kg.m-3]": 2700.0, + "Negative current collector specific heat capacity [J.kg-1.K-1]": 385.0, + "Positive current collector specific heat capacity [J.kg-1.K-1]": 897.0, + "Negative current collector thermal conductivity [W.m-1.K-1]": 401.0, + "Positive current collector thermal conductivity [W.m-1.K-1]": 237.0, + "Nominal cell capacity [A.h]": 5.0, + "Typical current [A]": 5.0, + "Current function [A]": 5.0, + # negative electrode + "Negative electrode conductivity [S.m-1]": 215.0, + "Primary: Maximum concentration in negative electrode [mol.m-3]": 28700.0, + "Primary: Initial concentration in negative electrode [mol.m-3]": 27700.0, + "Primary: Negative electrode diffusivity [m2.s-1]": 5.5e-14, + "Primary: Negative electrode OCP [V]": graphite_ocp_Enertech_Ai2020, + "Negative electrode porosity": 0.25, + "Primary: Negative electrode active material volume fraction": 0.735, + "Primary: Negative particle radius [m]": 5.86e-06, + "Negative electrode Bruggeman coefficient (electrolyte)": 1.5, + "Negative electrode Bruggeman coefficient (electrode)": 1.5, + "Negative electrode cation signed stoichiometry": -1.0, + "Primary: Negative electrode electrons in reaction": 1.0, + "Negative electrode charge transfer coefficient": 0.5, + "Negative electrode double-layer capacity [F.m-2]": 0.2, + "Primary: Negative electrode exchange-current density [A.m-2]" + "": graphite_LGM50_electrolyte_exchange_current_density_Chen2020, + "Primary: Negative electrode density [kg.m-3]": 1657.0, + "Negative electrode specific heat capacity [J.kg-1.K-1]": 700.0, + "Negative electrode thermal conductivity [W.m-1.K-1]": 1.7, + "Primary: Negative electrode OCP entropic change [V.K-1]": 0.0, + "Secondary: Maximum concentration in negative electrode [mol.m-3]": 278000.0, + "Secondary: Initial concentration in negative electrode [mol.m-3]": 276610.0, + "Secondary: Negative electrode diffusivity [m2.s-1]": 1.67e-14, + "Secondary: Negative electrode lithiation OCP [V]" + "": silicon_ocp_lithiation_Mark2016, + "Secondary: Negative electrode delithiation OCP [V]" + "": silicon_ocp_delithiation_Mark2016, + "Secondary: Negative electrode active material volume fraction": 0.015, + "Secondary: Negative particle radius [m]": 1.52e-06, + "Secondary: Negative electrode electrons in reaction": 1.0, + "Secondary: Negative electrode exchange-current density [A.m-2]" + "": silicon_LGM50_electrolyte_exchange_current_density_Chen2020, + "Secondary: Negative electrode density [kg.m-3]": 2650.0, + "Secondary: Negative electrode OCP entropic change [V.K-1]": 0.0, + # positive electrode + "Positive electrode conductivity [S.m-1]": 0.18, + "Maximum concentration in positive electrode [mol.m-3]": 63104.0, + "Positive electrode diffusivity [m2.s-1]": 4e-15, + "Positive electrode OCP [V]": nmc_LGM50_ocp_Chen2020, + "Positive electrode porosity": 0.335, + "Positive electrode active material volume fraction": 0.665, + "Positive particle radius [m]": 5.22e-06, + "Positive electrode Bruggeman coefficient (electrolyte)": 1.5, + "Positive electrode Bruggeman coefficient (electrode)": 1.5, + "Positive electrode cation signed stoichiometry": -1.0, + "Positive electrode electrons in reaction": 1.0, + "Positive electrode charge transfer coefficient": 0.5, + "Positive electrode double-layer capacity [F.m-2]": 0.2, + "Positive electrode exchange-current density [A.m-2]" + "": nmc_LGM50_electrolyte_exchange_current_density_Chen2020, + "Positive electrode density [kg.m-3]": 3262.0, + "Positive electrode specific heat capacity [J.kg-1.K-1]": 700.0, + "Positive electrode thermal conductivity [W.m-1.K-1]": 2.1, + "Positive electrode OCP entropic change [V.K-1]": 0.0, + # separator + "Separator porosity": 0.47, + "Separator Bruggeman coefficient (electrolyte)": 1.5, + "Separator density [kg.m-3]": 397.0, + "Separator specific heat capacity [J.kg-1.K-1]": 700.0, + "Separator thermal conductivity [W.m-1.K-1]": 0.16, + # electrolyte + "Typical electrolyte concentration [mol.m-3]": 1000.0, + "Initial concentration in electrolyte [mol.m-3]": 1000.0, + "Cation transference number": 0.2594, + "1 + dlnf/dlnc": 1.0, + "Electrolyte diffusivity [m2.s-1]": electrolyte_diffusivity_Nyman2008, + "Electrolyte conductivity [S.m-1]": electrolyte_conductivity_Nyman2008, + # experiment + "Reference temperature [K]": 298.15, + "Total heat transfer coefficient [W.m-2.K-1]": 10.0, + "Ambient temperature [K]": 298.15, + "Number of electrodes connected in parallel to make a cell": 1.0, + "Number of cells connected in series to make a battery": 1.0, + "Lower voltage cut-off [V]": 2.5, + "Upper voltage cut-off [V]": 4.2, + "Initial concentration in negative electrode [mol.m-3]": 29866.0, + "Initial concentration in positive electrode [mol.m-3]": 17038.0, + "Initial temperature [K]": 298.15, + # citations + "citations": ["Chen2020", "Ai2022"], + } diff --git a/pybamm/input/parameters/lithium_ion/Ecker2015.py b/pybamm/input/parameters/lithium_ion/Ecker2015.py new file mode 100644 index 0000000000..c3d560ba96 --- /dev/null +++ b/pybamm/input/parameters/lithium_ion/Ecker2015.py @@ -0,0 +1,591 @@ +import pybamm +import os + + +def graphite_diffusivity_Ecker2015(sto, T): + """ + 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:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_ref = 8.4e-13 * pybamm.exp(-11.3 * sto) + 8.2e-15 + E_D_s = 3.03e4 + arrhenius = pybamm.exp(-E_D_s / (pybamm.constants.R * T)) * pybamm.exp( + E_D_s / (pybamm.constants.R * 296) + ) + + return D_ref * arrhenius + + +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:`pybamm.Symbol` + Electrode stochiometry + + Returns + ------- + :class:`pybamm.Symbol` + Open circuit potential + """ + + # Graphite negative electrode 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 * pybamm.exp(-b * sto) + + c * pybamm.exp(-d * (sto - e)) + - r * pybamm.tanh(s * (sto - t)) + - g * pybamm.tanh(h * (sto - i)) + - j * pybamm.tanh(k * (sto - m)) + - n * pybamm.exp(o * (sto - p)) + + q + ) + + return u_eq + + +def graphite_electrolyte_exchange_current_density_Ecker2015(c_e, c_s_surf, c_s_max, T): + """ + Exchange-current density 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 + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + + k_ref = 1.11 * 1e-10 + + # multiply by Faraday's constant to get correct units + m_ref = ( + pybamm.constants.F * k_ref + ) # (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 53400 + + arrhenius = pybamm.exp(-E_r / (pybamm.constants.R * T)) * pybamm.exp( + E_r / (pybamm.constants.R * 296.15) + ) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def nco_diffusivity_Ecker2015(sto, T): + """ + NCO 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:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_ref = 3.7e-13 - 3.4e-13 * pybamm.exp(-12 * (sto - 0.62) * (sto - 0.62)) + E_D_s = 8.06e4 + arrhenius = pybamm.exp(-E_D_s / (pybamm.constants.R * T)) * pybamm.exp( + E_D_s / (pybamm.constants.R * 296.15) + ) + + return D_ref * arrhenius + + +def nco_ocp_Ecker2015_function(sto): + """ + NCO 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:`pybamm.Symbol` + Stochiometry of material (li-fraction) + + """ + + # LiNiCo from Ecker, Kabitz, Laresgoiti et al. + # Analytical fit (WebPlotDigitizer + gnuplot) + # Parameter m modified by Simon O'Kane to improve fit + a = -2.35211 + c = 0.0747061 + d = 31.886 + e = 0.0219921 + g = 0.640243 + h = 5.48623 + i = 0.439245 + j = 3.82383 + k = 4.12167 + m = 0.176187 + n = 0.0542123 + o = 18.2919 + p = 0.762272 + q = 4.23285 + r = -6.34984 + s = 2.66395 + t = 0.174352 + + u_eq = ( + a * sto + - c * pybamm.tanh(d * (sto - e)) + - r * pybamm.tanh(s * (sto - t)) + - g * pybamm.tanh(h * (sto - i)) + - j * pybamm.tanh(k * (sto - m)) + - n * pybamm.tanh(o * (sto - p)) + + q + ) + return u_eq + + +def nco_electrolyte_exchange_current_density_Ecker2015(c_e, c_s_surf, c_s_max, T): + """ + Exchange-current density for Butler-Volmer reactions between NCO and LiPF6 in + EC:DMC [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 + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + + k_ref = 3.01e-11 + + # multiply by Faraday's constant to get correct units + m_ref = ( + pybamm.constants.F * k_ref + ) # (A/m2)(m3/mol)**1.5 - includes ref concentrations + + E_r = 4.36e4 + arrhenius = pybamm.exp(-E_r / (pybamm.constants.R * T)) * pybamm.exp( + E_r / (pybamm.constants.R * 296.15) + ) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def electrolyte_diffusivity_Ecker2015(c_e, T): + """ + Diffusivity of LiPF6 in EC:DMC as a function of ion concentration [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 + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + # The diffusivity epends on the electrolyte conductivity + inputs = {"Electrolyte concentration [mol.m-3]": c_e, "Temperature [K]": T} + sigma_e = pybamm.FunctionParameter("Electrolyte conductivity [S.m-1]", inputs) + + D_c_e = ( + (pybamm.constants.k_b / (pybamm.constants.F * pybamm.constants.q_e)) + * sigma_e + * T + / c_e + ) + + return D_c_e + + +def electrolyte_conductivity_Ecker2015(c_e, T): + """ + Conductivity of LiPF6 in EC:DMC as a function of ion concentration [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 + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + # mol/m^3 to mol/l + cm = 1e-3 * c_e + + # value at T = 296K + sigma_e_296 = 0.2667 * cm**3 - 1.2983 * cm**2 + 1.7919 * cm + 0.1726 + + # add temperature dependence + E_k_e = 1.71e4 + C = 296 * pybamm.exp(E_k_e / (pybamm.constants.R * 296)) + sigma_e = C * sigma_e_296 * pybamm.exp(-E_k_e / (pybamm.constants.R * T)) / T + + return sigma_e + + +# Load data in the appropriate format +path, _ = os.path.split(os.path.abspath(__file__)) +measured_graphite_diffusivity_Ecker2015 = pybamm.parameters.process_1D_data( + "measured_graphite_diffusivity_Ecker2015.csv", path=path +) +graphite_ocp_Ecker2015 = pybamm.parameters.process_1D_data( + "graphite_ocp_Ecker2015.csv", path=path +) +measured_nco_diffusivity_Ecker2015 = pybamm.parameters.process_1D_data( + "measured_nco_diffusivity_Ecker2015.csv", path=path +) +nco_ocp_Ecker2015 = pybamm.parameters.process_1D_data( + "nco_ocp_Ecker2015.csv", path=path +) + + +# Call dict via a function to avoid errors when editing in place +def get_parameter_values(): + """ + Parameters for a Kokam SLPB 75106100 cell, 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 tab placement parameters are taken from measurements in + + > Hales, Alastair, et al. "The cell cooling coefficient: a standard to define heat + rejection from lithium-ion batteries." Journal of The Electrochemical Society 166.12 + (2019): A2383. + + The thermal material properties are for a 5 Ah power pouch cell by Kokam. The data + are extracted from + + > Zhao, Y., et al. "Modeling the effects of thermal gradients induced by tab and + surface cooling on lithium ion cell performance."" Journal of The Electrochemical + Society, 165.13 (2018): A3169-A3178. + # Graphite negative electrode parameters + + 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 + + SEI parameters are example parameters for SEI growth from the papers: + + > Ramadass, P., Haran, B., Gomadam, P. M., White, R., & Popov, B. N. (2004). + Development of first principles capacity fade model for Li-ion cells. Journal of the + Electrochemical Society, 151(2), A196-A203. + > Ploehn, H. J., Ramadass, P., & White, R. E. (2004). Solvent diffusion model for + aging of lithium-ion battery cells. Journal of The Electrochemical Society, 151(3), + A456-A462. + > Single, F., Latz, A., & Horstmann, B. (2018). Identifying the mechanism of + continued growth of the solid–electrolyte interphase. ChemSusChem, 11(12), + 1950-1955. + > Safari, M., Morcrette, M., Teyssot, A., & Delacour, C. (2009). Multimodal Physics- + Based Aging Model for Life Prediction of Li-Ion Batteries. Journal of The + Electrochemical Society, 156(3), + > Yang, X., Leng, Y., Zhang, G., Ge, S., Wang, C. (2017). Modeling of lithium + plating induced aging of lithium-ion batteries: Transition from linear to nonlinear + aging. Journal of Power Sources, 360, 28-40. + + Note: this parameter set does not claim to be representative of the true parameter + values. Instead these are parameter values that were used to fit SEI models to + observed experimental data in the referenced papers. + """ + + return { + # sei + "Ratio of lithium moles to SEI moles": 2.0, + "Inner SEI reaction proportion": 0.5, + "Inner SEI partial molar volume [m3.mol-1]": 9.585e-05, + "Outer SEI partial molar volume [m3.mol-1]": 9.585e-05, + "SEI reaction exchange current density [A.m-2]": 1.5e-07, + "SEI resistivity [Ohm.m]": 200000.0, + "Outer SEI solvent diffusivity [m2.s-1]": 2.5000000000000002e-22, + "Bulk solvent concentration [mol.m-3]": 2636.0, + "Inner SEI open-circuit potential [V]": 0.1, + "Outer SEI open-circuit potential [V]": 0.8, + "Inner SEI electron conductivity [S.m-1]": 8.95e-14, + "Inner SEI lithium interstitial diffusivity [m2.s-1]": 1e-20, + "Lithium interstitial reference concentration [mol.m-3]": 15.0, + "Initial inner SEI thickness [m]": 2.5e-09, + "Initial outer SEI thickness [m]": 2.5e-09, + "EC initial concentration in electrolyte [mol.m-3]": 4541.0, + "EC diffusivity [m2.s-1]": 2e-18, + "SEI kinetic rate constant [m.s-1]": 1e-12, + "SEI open-circuit potential [V]": 0.4, + "SEI growth activation energy [J.mol-1]": 0.0, + "Negative electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + "Positive electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + # cell + "Negative current collector thickness [m]": 1.4e-05, + "Negative electrode thickness [m]": 7.4e-05, + "Separator thickness [m]": 2e-05, + "Positive electrode thickness [m]": 5.4e-05, + "Positive current collector thickness [m]": 1.5e-05, + "Electrode height [m]": 0.101, + "Electrode width [m]": 0.085, + "Negative tab width [m]": 0.007, + "Negative tab centre y-coordinate [m]": 0.0045, + "Negative tab centre z-coordinate [m]": 0.101, + "Positive tab width [m]": 0.0069, + "Positive tab centre y-coordinate [m]": 0.0309, + "Positive tab centre z-coordinate [m]": 0.101, + "Cell cooling surface area [m2]": 0.0172, + "Cell volume [m3]": 1.52e-06, + "Negative current collector conductivity [S.m-1]": 58411000.0, + "Positive current collector conductivity [S.m-1]": 36914000.0, + "Negative current collector density [kg.m-3]": 8933.0, + "Positive current collector density [kg.m-3]": 2702.0, + "Negative current collector specific heat capacity [J.kg-1.K-1]": 385.0, + "Positive current collector specific heat capacity [J.kg-1.K-1]": 903.0, + "Negative current collector thermal conductivity [W.m-1.K-1]": 398.0, + "Positive current collector thermal conductivity [W.m-1.K-1]": 238.0, + "Nominal cell capacity [A.h]": 0.15625, + "Typical current [A]": 0.15652, + "Current function [A]": 0.15652, + # negative electrode + "Negative electrode conductivity [S.m-1]": 14.0, + "Maximum concentration in negative electrode [mol.m-3]": 31920.0, + "Measured negative electrode diffusivity [m2.s-1]" + "": measured_graphite_diffusivity_Ecker2015, + "Negative electrode diffusivity [m2.s-1]": graphite_diffusivity_Ecker2015, + "Measured negative electrode OCP [V]": graphite_ocp_Ecker2015, + "Negative electrode OCP [V]": graphite_ocp_Ecker2015_function, + "Negative electrode porosity": 0.329, + "Negative electrode active material volume fraction": 0.372403, + "Negative particle radius [m]": 1.37e-05, + "Negative electrode Bruggeman coefficient (electrolyte)": 1.6372789338386007, + "Negative electrode Bruggeman coefficient (electrode)": 0.0, + "Negative electrode cation signed stoichiometry": -1.0, + "Negative electrode electrons in reaction": 1.0, + "Negative electrode exchange-current density [A.m-2]" + "": graphite_electrolyte_exchange_current_density_Ecker2015, + "Negative electrode density [kg.m-3]": 1555.0, + "Negative electrode specific heat capacity [J.kg-1.K-1]": 1437.0, + "Negative electrode thermal conductivity [W.m-1.K-1]": 1.58, + "Negative electrode OCP entropic change [V.K-1]": 0.0, + # positive electrode + "Positive electrode conductivity [S.m-1]": 68.1, + "Maximum concentration in positive electrode [mol.m-3]": 48580.0, + "Measured positive electrode diffusivity [m2.s-1]" + "": measured_nco_diffusivity_Ecker2015, + "Positive electrode diffusivity [m2.s-1]": nco_diffusivity_Ecker2015, + "Measured positive electrode OCP [V]": nco_ocp_Ecker2015, + "Positive electrode OCP [V]": nco_ocp_Ecker2015_function, + "Positive electrode porosity": 0.296, + "Positive electrode active material volume fraction": 0.40832, + "Positive particle radius [m]": 6.5e-06, + "Positive electrode Bruggeman coefficient (electrolyte)": 1.5442267190786427, + "Positive electrode Bruggeman coefficient (electrode)": 0.0, + "Positive electrode exchange-current density [A.m-2]" + "": nco_electrolyte_exchange_current_density_Ecker2015, + "Positive electrode cation signed stoichiometry": -1.0, + "Positive electrode electrons in reaction": 1.0, + "Positive electrode density [kg.m-3]": 2895.0, + "Positive electrode specific heat capacity [J.kg-1.K-1]": 1270.0, + "Positive electrode thermal conductivity [W.m-1.K-1]": 1.04, + "Positive electrode OCP entropic change [V.K-1]": 0.0, + # separator + "Separator porosity": 0.508, + "Separator Bruggeman coefficient (electrolyte)": 1.9804586773134945, + "Separator density [kg.m-3]": 1017.0, + "Separator specific heat capacity [J.kg-1.K-1]": 1978.0, + "Separator thermal conductivity [W.m-1.K-1]": 0.34, + # electrolyte + "Typical electrolyte concentration [mol.m-3]": 1000.0, + "Initial concentration in electrolyte [mol.m-3]": 1000.0, + "Cation transference number": 0.26, + "1 + dlnf/dlnc": 1.0, + "Electrolyte diffusivity [m2.s-1]": electrolyte_diffusivity_Ecker2015, + "Electrolyte conductivity [S.m-1]": electrolyte_conductivity_Ecker2015, + # experiment + "Reference temperature [K]": 296.15, + "Negative current collector surface heat transfer coefficient [W.m-2.K-1]" + "": 10.0, + "Positive current collector surface heat transfer coefficient [W.m-2.K-1]" + "": 10.0, + "Negative tab heat transfer coefficient [W.m-2.K-1]": 10.0, + "Positive tab heat transfer coefficient [W.m-2.K-1]": 10.0, + "Edge heat transfer coefficient [W.m-2.K-1]": 10.0, + "Total heat transfer coefficient [W.m-2.K-1]": 10.0, + "Ambient temperature [K]": 298.15, + "Number of electrodes connected in parallel to make a cell": 1.0, + "Number of cells connected in series to make a battery": 1.0, + "Lower voltage cut-off [V]": 2.5, + "Upper voltage cut-off [V]": 4.2, + "Initial concentration in negative electrode [mol.m-3]": 26120.05, + "Initial concentration in positive electrode [mol.m-3]": 12630.8, + "Initial temperature [K]": 298.15, + # citations + "citations": [ + "Ecker2015i", + "Ecker2015ii", + "Zhao2018", + "Hales2019", + "Richardson2020", + ], + } diff --git a/pybamm/input/parameters/lithium_ion/Marquis2019.py b/pybamm/input/parameters/lithium_ion/Marquis2019.py new file mode 100644 index 0000000000..069d2e3501 --- /dev/null +++ b/pybamm/input/parameters/lithium_ion/Marquis2019.py @@ -0,0 +1,499 @@ +import pybamm + + +def graphite_mcmb2528_diffusivity_Dualfoil1998(sto, T): + """ + Graphite MCMB 2528 diffusivity as a function of stochiometry, in this case the + diffusivity is taken to be a constant. The value is taken from Dualfoil [1]. + + References + ---------- + .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_ref = 3.9 * 10 ** (-14) + E_D_s = 42770 + arrhenius = pybamm.exp(E_D_s / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_ref * arrhenius + + +def graphite_mcmb2528_ocp_Dualfoil1998(sto): + """ + Graphite MCMB 2528 Open Circuit Potential (OCP) as a function of the + stochiometry. The fit is taken from Dualfoil [1]. Dualfoil states that the data + was measured by Chris Bogatu at Telcordia and PolyStor materials, 2000. However, + we could not find any other records of this measurment. + + References + ---------- + .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html + """ + + u_eq = ( + 0.194 + + 1.5 * pybamm.exp(-120.0 * sto) + + 0.0351 * pybamm.tanh((sto - 0.286) / 0.083) + - 0.0045 * pybamm.tanh((sto - 0.849) / 0.119) + - 0.035 * pybamm.tanh((sto - 0.9233) / 0.05) + - 0.0147 * pybamm.tanh((sto - 0.5) / 0.034) + - 0.102 * pybamm.tanh((sto - 0.194) / 0.142) + - 0.022 * pybamm.tanh((sto - 0.9) / 0.0164) + - 0.011 * pybamm.tanh((sto - 0.124) / 0.0226) + + 0.0155 * pybamm.tanh((sto - 0.105) / 0.029) + ) + + return u_eq + + +def graphite_electrolyte_exchange_current_density_Dualfoil1998( + c_e, c_s_surf, c_s_max, T +): + """ + Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in + EC:DMC. + + References + ---------- + .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + m_ref = 2 * 10 ** (-5) # (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 37480 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def graphite_entropic_change_Moura2016(sto, c_s_max): + """ + Graphite entropic change in open circuit potential (OCP) at a temperature of + 298.15K as a function of the stochiometry taken from Scott Moura's FastDFN code + [1]. + + References + ---------- + .. [1] https://github.com/scott-moura/fastDFN + + Parameters + ---------- + sto : :class:`pybamm.Symbol` + Stochiometry of material (li-fraction) + + """ + du_dT = ( + -1.5 * (120.0 / c_s_max) * pybamm.exp(-120 * sto) + + (0.0351 / (0.083 * c_s_max)) * ((pybamm.cosh((sto - 0.286) / 0.083)) ** (-2)) + - (0.0045 / (0.119 * c_s_max)) * ((pybamm.cosh((sto - 0.849) / 0.119)) ** (-2)) + - (0.035 / (0.05 * c_s_max)) * ((pybamm.cosh((sto - 0.9233) / 0.05)) ** (-2)) + - (0.0147 / (0.034 * c_s_max)) * ((pybamm.cosh((sto - 0.5) / 0.034)) ** (-2)) + - (0.102 / (0.142 * c_s_max)) * ((pybamm.cosh((sto - 0.194) / 0.142)) ** (-2)) + - (0.022 / (0.0164 * c_s_max)) * ((pybamm.cosh((sto - 0.9) / 0.0164)) ** (-2)) + - (0.011 / (0.0226 * c_s_max)) * ((pybamm.cosh((sto - 0.124) / 0.0226)) ** (-2)) + + (0.0155 / (0.029 * c_s_max)) * ((pybamm.cosh((sto - 0.105) / 0.029)) ** (-2)) + ) + + return du_dT + + +def lico2_diffusivity_Dualfoil1998(sto, T): + """ + LiCo2 diffusivity as a function of stochiometry, in this case the + diffusivity is taken to be a constant. The value is taken from Dualfoil [1]. + + References + ---------- + .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + D_ref = 1 * 10 ** (-13) + E_D_s = 18550 + arrhenius = pybamm.exp(E_D_s / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_ref * arrhenius + + +def lico2_ocp_Dualfoil1998(sto): + """ + Lithium Cobalt Oxide (LiCO2) Open Circuit Potential (OCP) as a a function of the + stochiometry. The fit is taken from Dualfoil [1]. Dualfoil states that the data + was measured by Oscar Garcia 2001 using Quallion electrodes for 0.5 < sto < 0.99 + and by Marc Doyle for sto<0.4 (for unstated electrodes). We could not find any + other records of the Garcia measurements. Doyles fits can be found in his + thesis [2] but we could not find any other record of his measurments. + + References + ---------- + .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html + .. [2] CM Doyle. Design and simulation of lithium rechargeable batteries, + 1995. + + Parameters + ---------- + sto : :class:`pybamm.Symbol` + Stochiometry of material (li-fraction) + + """ + + stretch = 1.062 + sto = stretch * sto + + u_eq = ( + 2.16216 + + 0.07645 * pybamm.tanh(30.834 - 54.4806 * sto) + + 2.1581 * pybamm.tanh(52.294 - 50.294 * sto) + - 0.14169 * pybamm.tanh(11.0923 - 19.8543 * sto) + + 0.2051 * pybamm.tanh(1.4684 - 5.4888 * sto) + + 0.2531 * pybamm.tanh((-sto + 0.56478) / 0.1316) + - 0.02167 * pybamm.tanh((sto - 0.525) / 0.006) + ) + + return u_eq + + +def lico2_electrolyte_exchange_current_density_Dualfoil1998(c_e, c_s_surf, c_s_max, T): + """ + Exchange-current density for Butler-Volmer reactions between lico2 and LiPF6 in + EC:DMC. + + References + ---------- + .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + m_ref = 6 * 10 ** (-7) # (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 39570 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def lico2_entropic_change_Moura2016(sto, c_s_max): + """ + Lithium Cobalt Oxide (LiCO2) entropic change in open circuit potential (OCP) at + a temperature of 298.15K as a function of the stochiometry. The fit is taken + from Scott Moura's FastDFN code [1]. + + References + ---------- + .. [1] https://github.com/scott-moura/fastDFN + + Parameters + ---------- + sto : :class:`pybamm.Symbol` + Stochiometry of material (li-fraction) + """ + # Since the equation for LiCo2 from this ref. has the stretch factor, + # should this too? If not, the "bumps" in the OCV don't line up. + stretch = 1.062 + sto = stretch * sto + + du_dT = ( + 0.07645 + * (-54.4806 / c_s_max) + * ((1.0 / pybamm.cosh(30.834 - 54.4806 * sto)) ** 2) + + 2.1581 * (-50.294 / c_s_max) * ((pybamm.cosh(52.294 - 50.294 * sto)) ** (-2)) + + 0.14169 + * (19.854 / c_s_max) + * ((pybamm.cosh(11.0923 - 19.8543 * sto)) ** (-2)) + - 0.2051 * (5.4888 / c_s_max) * ((pybamm.cosh(1.4684 - 5.4888 * sto)) ** (-2)) + - (0.2531 / 0.1316 / c_s_max) + * ((pybamm.cosh((-sto + 0.56478) / 0.1316)) ** (-2)) + - (0.02167 / 0.006 / c_s_max) * ((pybamm.cosh((sto - 0.525) / 0.006)) ** (-2)) + ) + + return du_dT + + +def electrolyte_diffusivity_Capiglia1999(c_e, T): + """ + Diffusivity of LiPF6 in EC:DMC as a function of ion concentration. The original data + is from [1]. The fit from Dualfoil [2]. + + References + ---------- + .. [1] C Capiglia et al. 7Li and 19F diffusion coefficients and thermal + properties of non-aqueous electrolyte solutions for rechargeable lithium batteries. + Journal of power sources 81 (1999): 859-862. + .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_c_e = 5.34e-10 * pybamm.exp(-0.65 * c_e / 1000) + E_D_e = 37040 + arrhenius = pybamm.exp(E_D_e / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_c_e * arrhenius + + +def electrolyte_conductivity_Capiglia1999(c_e, T): + """ + Conductivity of LiPF6 in EC:DMC as a function of ion concentration. The original + data is from [1]. The fit is from Dualfoil [2]. + + References + ---------- + .. [1] C Capiglia et al. 7Li and 19F diffusion coefficients and thermal + properties of non-aqueous electrolyte solutions for rechargeable lithium batteries. + Journal of power sources 81 (1999): 859-862. + .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + sigma_e = ( + 0.0911 + + 1.9101 * (c_e / 1000) + - 1.052 * (c_e / 1000) ** 2 + + 0.1554 * (c_e / 1000) ** 3 + ) + + E_k_e = 34700 + arrhenius = pybamm.exp(E_k_e / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return sigma_e * arrhenius + + +# Call dict via a function to avoid errors when editing in place +def get_parameter_values(): + """ + Parameters for a Kokam SLPB78205130H cell, from the paper + + > Marquis, S. G., Sulzer, V., Timms, R., Please, C. P., & Chapman, S. J. (2019). “An + asymptotic derivation of a single particle model with electrolyte”. [Journal of The + Electrochemical Society](https://doi.org/10.1149/2.0341915jes), 166(15), + A3693-A3706. + + and references therein. + + SEI parameters are example parameters for SEI growth from the papers: + + > Ramadass, P., Haran, B., Gomadam, P. M., White, R., & Popov, B. N. (2004). + Development of first principles capacity fade model for Li-ion cells. Journal of the + Electrochemical Society, 151(2), A196-A203. + > Ploehn, H. J., Ramadass, P., & White, R. E. (2004). Solvent diffusion model for + aging of lithium-ion battery cells. Journal of The Electrochemical Society, 151(3), + A456-A462. + > Single, F., Latz, A., & Horstmann, B. (2018). Identifying the mechanism of + continued growth of the solid–electrolyte interphase. ChemSusChem, 11(12), + 1950-1955. + > Safari, M., Morcrette, M., Teyssot, A., & Delacour, C. (2009). Multimodal Physics- + Based Aging Model for Life Prediction of Li-Ion Batteries. Journal of The + Electrochemical Society, 156(3), + > Yang, X., Leng, Y., Zhang, G., Ge, S., Wang, C. (2017). Modeling of lithium + plating induced aging of lithium-ion batteries: Transition from linear to nonlinear + aging. Journal of Power Sources, 360, 28-40. + + Note: this parameter set does not claim to be representative of the true parameter + values. Instead these are parameter values that were used to fit SEI models to + observed experimental data in the referenced papers. + """ + + return { + # sei + "Ratio of lithium moles to SEI moles": 2.0, + "Inner SEI reaction proportion": 0.5, + "Inner SEI partial molar volume [m3.mol-1]": 9.585e-05, + "Outer SEI partial molar volume [m3.mol-1]": 9.585e-05, + "SEI reaction exchange current density [A.m-2]": 1.5e-07, + "SEI resistivity [Ohm.m]": 200000.0, + "Outer SEI solvent diffusivity [m2.s-1]": 2.5000000000000002e-22, + "Bulk solvent concentration [mol.m-3]": 2636.0, + "Inner SEI open-circuit potential [V]": 0.1, + "Outer SEI open-circuit potential [V]": 0.8, + "Inner SEI electron conductivity [S.m-1]": 8.95e-14, + "Inner SEI lithium interstitial diffusivity [m2.s-1]": 1e-20, + "Lithium interstitial reference concentration [mol.m-3]": 15.0, + "Initial inner SEI thickness [m]": 2.5e-09, + "Initial outer SEI thickness [m]": 2.5e-09, + "EC initial concentration in electrolyte [mol.m-3]": 4541.0, + "EC diffusivity [m2.s-1]": 2e-18, + "SEI kinetic rate constant [m.s-1]": 1e-12, + "SEI open-circuit potential [V]": 0.4, + "SEI growth activation energy [J.mol-1]": 0.0, + "Negative electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + "Positive electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + # cell + "Negative current collector thickness [m]": 2.5e-05, + "Negative electrode thickness [m]": 0.0001, + "Separator thickness [m]": 2.5e-05, + "Positive electrode thickness [m]": 0.0001, + "Positive current collector thickness [m]": 2.5e-05, + "Electrode height [m]": 0.137, + "Electrode width [m]": 0.207, + "Negative tab width [m]": 0.04, + "Negative tab centre y-coordinate [m]": 0.06, + "Negative tab centre z-coordinate [m]": 0.137, + "Positive tab width [m]": 0.04, + "Positive tab centre y-coordinate [m]": 0.147, + "Positive tab centre z-coordinate [m]": 0.137, + "Cell cooling surface area [m2]": 0.0569, + "Cell volume [m3]": 7.8e-06, + "Negative current collector conductivity [S.m-1]": 59600000.0, + "Positive current collector conductivity [S.m-1]": 35500000.0, + "Negative current collector density [kg.m-3]": 8954.0, + "Positive current collector density [kg.m-3]": 2707.0, + "Negative current collector specific heat capacity [J.kg-1.K-1]": 385.0, + "Positive current collector specific heat capacity [J.kg-1.K-1]": 897.0, + "Negative current collector thermal conductivity [W.m-1.K-1]": 401.0, + "Positive current collector thermal conductivity [W.m-1.K-1]": 237.0, + "Nominal cell capacity [A.h]": 0.680616, + "Typical current [A]": 0.680616, + "Current function [A]": 0.680616, + # negative electrode + "Negative electrode conductivity [S.m-1]": 100.0, + "Maximum concentration in negative electrode [mol.m-3]": 24983.2619938437, + "Negative electrode diffusivity [m2.s-1]" + "": graphite_mcmb2528_diffusivity_Dualfoil1998, + "Negative electrode OCP [V]": graphite_mcmb2528_ocp_Dualfoil1998, + "Negative electrode porosity": 0.3, + "Negative electrode active material volume fraction": 0.6, + "Negative particle radius [m]": 1e-05, + "Negative electrode Bruggeman coefficient (electrolyte)": 1.5, + "Negative electrode Bruggeman coefficient (electrode)": 1.5, + "Negative electrode cation signed stoichiometry": -1.0, + "Negative electrode electrons in reaction": 1.0, + "Negative electrode charge transfer coefficient": 0.5, + "Negative electrode double-layer capacity [F.m-2]": 0.2, + "Negative electrode exchange-current density [A.m-2]" + "": graphite_electrolyte_exchange_current_density_Dualfoil1998, + "Negative electrode density [kg.m-3]": 1657.0, + "Negative electrode specific heat capacity [J.kg-1.K-1]": 700.0, + "Negative electrode thermal conductivity [W.m-1.K-1]": 1.7, + "Negative electrode OCP entropic change [V.K-1]" + "": graphite_entropic_change_Moura2016, + # positive electrode + "Positive electrode conductivity [S.m-1]": 10.0, + "Maximum concentration in positive electrode [mol.m-3]": 51217.9257309275, + "Positive electrode diffusivity [m2.s-1]": lico2_diffusivity_Dualfoil1998, + "Positive electrode OCP [V]": lico2_ocp_Dualfoil1998, + "Positive electrode porosity": 0.3, + "Positive electrode active material volume fraction": 0.5, + "Positive particle radius [m]": 1e-05, + "Positive electrode Bruggeman coefficient (electrolyte)": 1.5, + "Positive electrode Bruggeman coefficient (electrode)": 1.5, + "Positive electrode cation signed stoichiometry": -1.0, + "Positive electrode electrons in reaction": 1.0, + "Positive electrode charge transfer coefficient": 0.5, + "Positive electrode double-layer capacity [F.m-2]": 0.2, + "Positive electrode exchange-current density [A.m-2]" + "": lico2_electrolyte_exchange_current_density_Dualfoil1998, + "Positive electrode density [kg.m-3]": 3262.0, + "Positive electrode specific heat capacity [J.kg-1.K-1]": 700.0, + "Positive electrode thermal conductivity [W.m-1.K-1]": 2.1, + "Positive electrode OCP entropic change [V.K-1]" + "": lico2_entropic_change_Moura2016, + # separator + "Separator porosity": 1.0, + "Separator Bruggeman coefficient (electrolyte)": 1.5, + "Separator density [kg.m-3]": 397.0, + "Separator specific heat capacity [J.kg-1.K-1]": 700.0, + "Separator thermal conductivity [W.m-1.K-1]": 0.16, + # electrolyte + "Typical electrolyte concentration [mol.m-3]": 1000.0, + "Initial concentration in electrolyte [mol.m-3]": 1000.0, + "Cation transference number": 0.4, + "1 + dlnf/dlnc": 1.0, + "Electrolyte diffusivity [m2.s-1]": electrolyte_diffusivity_Capiglia1999, + "Electrolyte conductivity [S.m-1]": electrolyte_conductivity_Capiglia1999, + # experiment + "Reference temperature [K]": 298.15, + "Ambient temperature [K]": 298.15, + "Negative current collector surface heat transfer coefficient [W.m-2.K-1]" + "": 0.0, + "Positive current collector surface heat transfer coefficient [W.m-2.K-1]" + "": 0.0, + "Negative tab heat transfer coefficient [W.m-2.K-1]": 10.0, + "Positive tab heat transfer coefficient [W.m-2.K-1]": 10.0, + "Edge heat transfer coefficient [W.m-2.K-1]": 0.3, + "Total heat transfer coefficient [W.m-2.K-1]": 10.0, + "Number of electrodes connected in parallel to make a cell": 1.0, + "Number of cells connected in series to make a battery": 1.0, + "Lower voltage cut-off [V]": 3.105, + "Upper voltage cut-off [V]": 4.1, + "Initial concentration in negative electrode [mol.m-3]": 19986.609595075, + "Initial concentration in positive electrode [mol.m-3]": 30730.7554385565, + "Initial temperature [K]": 298.15, + # citations + "citations": ["Marquis2019"], + } diff --git a/pybamm/input/parameters/lithium_ion/Mohtat2020.py b/pybamm/input/parameters/lithium_ion/Mohtat2020.py new file mode 100644 index 0000000000..9befe3055e --- /dev/null +++ b/pybamm/input/parameters/lithium_ion/Mohtat2020.py @@ -0,0 +1,499 @@ +import pybamm + + +def graphite_diffusivity_PeymanMPM(sto, T): + """ + Graphite diffusivity as a function of stochiometry, in this case the + diffusivity is taken to be a constant. The value is taken from Peyman MPM. + + References + ---------- + .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_ref = 5.0 * 10 ** (-15) + E_D_s = 42770 + arrhenius = pybamm.exp(E_D_s / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_ref * arrhenius + + +def graphite_ocp_PeymanMPM(sto): + """ + Graphite Open Circuit Potential (OCP) as a function of the + stochiometry. The fit is taken from Peyman MPM [1]. + + References + ---------- + .. [1] Peyman Mohtat et al, MPM (to be submitted) + """ + + u_eq = ( + 0.063 + + 0.8 * pybamm.exp(-75 * (sto + 0.001)) + - 0.0120 * pybamm.tanh((sto - 0.127) / 0.016) + - 0.0118 * pybamm.tanh((sto - 0.155) / 0.016) + - 0.0035 * pybamm.tanh((sto - 0.220) / 0.020) + - 0.0095 * pybamm.tanh((sto - 0.190) / 0.013) + - 0.0145 * pybamm.tanh((sto - 0.490) / 0.020) + - 0.0800 * pybamm.tanh((sto - 1.030) / 0.055) + ) + + return u_eq + + +def graphite_electrolyte_exchange_current_density_PeymanMPM(c_e, c_s_surf, c_s_max, T): + """ + Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in + EC:DMC. + Check the unit of Reaction rate constant k0 is from Peyman MPM. + + References + ---------- + .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + m_ref = 1.061 * 10 ** (-6) # unit has been converted + # units are (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 37480 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def graphite_entropic_change_PeymanMPM(sto, c_s_max): + """ + Graphite entropic change in open circuit potential (OCP) at a temperature of + 298.15K as a function of the stochiometry taken from [1] + + References + ---------- + .. [1] K.E. Thomas, J. Newman, "Heats of mixing and entropy in porous insertion + electrode", J. of Power Sources 119 (2003) 844-849 + + Parameters + ---------- + sto : :class:`pybamm.Symbol` + Stochiometry of material (li-fraction) + + """ + + du_dT = 10 ** (-3) * ( + 0.28 + - 1.56 * sto + - 8.92 * sto ** (2) + + 57.21 * sto ** (3) + - 110.7 * sto ** (4) + + 90.71 * sto ** (5) + - 27.14 * sto ** (6) + ) + + return du_dT + + +def NMC_diffusivity_PeymanMPM(sto, T): + """ + NMC diffusivity as a function of stochiometry, in this case the + diffusivity is taken to be a constant. The value is taken from Peyman MPM. + + References + ---------- + .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_ref = 8 * 10 ** (-15) + E_D_s = 18550 + arrhenius = pybamm.exp(E_D_s / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_ref * arrhenius + + +def NMC_ocp_PeymanMPM(sto): + """ + Nickel Managanese Cobalt Oxide (NMC) Open Circuit Potential (OCP) as a + function of the stochiometry. The fit is taken from Peyman MPM. + + References + ---------- + Peyman MPM manuscript (to be submitted) + + Parameters + ---------- + sto : :class:`pybamm.Symbol` + Stochiometry of material (li-fraction) + + """ + + u_eq = ( + 4.3452 + - 1.6518 * sto + + 1.6225 * (sto**2) + - 2.0843 * (sto**3) + + 3.5146 * (sto**4) + - 2.2166 * (sto**5) + - 0.5623e-4 * pybamm.exp(109.451 * sto - 100.006) + ) + + return u_eq + + +def NMC_electrolyte_exchange_current_density_PeymanMPM(c_e, c_s_surf, c_s_max, T): + """ + Exchange-current density for Butler-Volmer reactions between NMC and LiPF6 in + EC:DMC. + + References + ---------- + .. Peyman MPM manuscript (to be submitted) + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + m_ref = 4.824 * 10 ** (-6) # (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 39570 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def NMC_entropic_change_PeymanMPM(sto, c_s_max): + """ + Nickel Manganese Cobalt (NMC) entropic change in open circuit potential (OCP) at + a temperature of 298.15K as a function of the OCP. The fit is taken from [1]. + + References + ---------- + .. [1] W. Le, I. Belharouak, D. Vissers, K. Amine, "In situ thermal study of + li1+ x [ni1/ 3co1/ 3mn1/ 3] 1- x o2 using isothermal micro-clorimetric + techniques", + J. of the Electrochemical Society 153 (11) (2006) A2147–A2151. + + Parameters + ---------- + sto : :class:`pybamm.Symbol` + Stochiometry of material (li-fraction) + + """ + + # Since the equation uses the OCP at each stoichiometry as input, + # we need OCP function here + + u_eq = ( + 4.3452 + - 1.6518 * sto + + 1.6225 * sto**2 + - 2.0843 * sto**3 + + 3.5146 * sto**4 + - 0.5623 * 10 ** (-4) * pybamm.exp(109.451 * sto - 100.006) + ) + + du_dT = ( + -800 + 779 * u_eq - 284 * u_eq**2 + 46 * u_eq**3 - 2.8 * u_eq**4 + ) * 10 ** (-3) + + return du_dT + + +def electrolyte_diffusivity_PeymanMPM(c_e, T): + """ + Diffusivity of LiPF6 in EC:DMC as a function of ion concentration. The original data + is from [1]. The fit from Dualfoil [2]. + + References + ---------- + .. [1] C Capiglia et al. 7Li and 19F diffusion coefficients and thermal + properties of non-aqueous electrolyte solutions for rechargeable lithium batteries. + Journal of power sources 81 (1999): 859-862. + .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + + Returns + ------- + :class:`pybamm.Symbol` + Electrolyte diffusivity + """ + + D_c_e = 5.35 * 10 ** (-10) + E_D_e = 37040 + arrhenius = pybamm.exp(E_D_e / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_c_e * arrhenius + + +def electrolyte_conductivity_PeymanMPM(c_e, T): + """ + Conductivity of LiPF6 in EC:DMC as a function of ion concentration. The original + data is from [1]. The fit is from Dualfoil [2]. + + References + ---------- + .. [1] C Capiglia et al. 7Li and 19F diffusion coefficients and thermal + properties of non-aqueous electrolyte solutions for rechargeable lithium batteries. + Journal of power sources 81 (1999): 859-862. + .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + + Returns + ------- + :class:`pybamm.Symbol` + Electrolyte conductivity + """ + + sigma_e = 1.3 + E_k_e = 34700 + arrhenius = pybamm.exp(E_k_e / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return sigma_e * arrhenius + + +# Call dict via a function to avoid errors when editing in place +def get_parameter_values(): + """ + Parameters for a graphite/NMC532 pouch cell from the paper + + > Mohtat, P., Lee, S., Sulzer, V., Siegel, J. B., & Stefanopoulou, A. G. (2020). + Differential expansion and voltage model for li-ion batteries at practical charging + rates. + [Journal of The Electrochemical Society](https://doi.org/10.1149/1945-7111/aba5d1), + 167(11), 110561. + + and references therein. + + Some example parameters for SEI growth from the papers: + + > Ramadass, P., Haran, B., Gomadam, P. M., White, R., & Popov, B. N. (2004). + Development of first principles capacity fade model for Li-ion cells. Journal of the + Electrochemical Society, 151(2), A196-A203. + > Ploehn, H. J., Ramadass, P., & White, R. E. (2004). Solvent diffusion model for + aging of lithium-ion battery cells. Journal of The Electrochemical Society, 151(3), + A456-A462. + > Single, F., Latz, A., & Horstmann, B. (2018). Identifying the mechanism of + continued growth of the solid–electrolyte interphase. ChemSusChem, 11(12), + 1950-1955. + > Safari, M., Morcrette, M., Teyssot, A., & Delacour, C. (2009). Multimodal Physics- + Based Aging Model for Life Prediction of Li-Ion Batteries. Journal of The + Electrochemical Society, 156(3), + > Yang, X., Leng, Y., Zhang, G., Ge, S., Wang, C. (2017). Modeling of lithium + plating induced aging of lithium-ion batteries: Transition from linear to nonlinear + aging. Journal of Power Sources, 360, 28-40. + + Note: this parameter set does not claim to be representative of the true parameter + values. Instead these are parameter values that were used to fit SEI models to + observed experimental data in the referenced papers. + # SEI parameters + + Parameters for lithium plating are from the paper: + + > Yang, X., Leng, Y., Zhang, G., Ge, S., Wang, C. (2017). Modeling of lithium + plating induced aging of lithium-ion batteries: Transition from linear to nonlinear + aging. Journal of Power Sources, 360, 28-40. + + Note: this parameter set does not claim to be representative of the true parameter + values. Instead these are parameter values that were used to fit SEI models to + observed experimental data in the referenced papers. + """ + + return { + # lithium plating + "Lithium metal partial molar volume [m3.mol-1]": 1.3e-05, + "Exchange-current density for plating [A.m-2]": 0.001, + "Initial plated lithium concentration [mol.m-3]": 0.0, + "Typical plated lithium concentration [mol.m-3]": 1000.0, + "Lithium plating transfer coefficient": 0.7, + # sei + "Ratio of lithium moles to SEI moles": 2.0, + "Inner SEI reaction proportion": 0.5, + "Inner SEI partial molar volume [m3.mol-1]": 9.585e-05, + "Outer SEI partial molar volume [m3.mol-1]": 9.585e-05, + "SEI reaction exchange current density [A.m-2]": 1.5e-07, + "SEI resistivity [Ohm.m]": 200000.0, + "Outer SEI solvent diffusivity [m2.s-1]": 2.5000000000000002e-22, + "Bulk solvent concentration [mol.m-3]": 2636.0, + "Inner SEI open-circuit potential [V]": 0.1, + "Outer SEI open-circuit potential [V]": 0.8, + "Inner SEI electron conductivity [S.m-1]": 8.95e-14, + "Inner SEI lithium interstitial diffusivity [m2.s-1]": 1e-20, + "Lithium interstitial reference concentration [mol.m-3]": 15.0, + "Initial inner SEI thickness [m]": 2.5e-09, + "Initial outer SEI thickness [m]": 2.5e-09, + "EC initial concentration in electrolyte [mol.m-3]": 4541.0, + "EC diffusivity [m2.s-1]": 2e-18, + "SEI kinetic rate constant [m.s-1]": 1e-12, + "SEI open-circuit potential [V]": 0.4, + "SEI growth activation energy [J.mol-1]": 0.0, + "Negative electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + "Positive electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + # cell + "Negative current collector thickness [m]": 2.5e-05, + "Negative electrode thickness [m]": 6.2e-05, + "Separator thickness [m]": 1.2e-05, + "Positive electrode thickness [m]": 6.7e-05, + "Positive current collector thickness [m]": 2.5e-05, + "Electrode height [m]": 1.0, + "Electrode width [m]": 0.205, + "Cell cooling surface area [m2]": 0.41, + "Cell volume [m3]": 3.92e-05, + "Negative current collector conductivity [S.m-1]": 59600000.0, + "Positive current collector conductivity [S.m-1]": 35500000.0, + "Negative current collector density [kg.m-3]": 8954.0, + "Positive current collector density [kg.m-3]": 2707.0, + "Negative current collector specific heat capacity [J.kg-1.K-1]": 385.0, + "Positive current collector specific heat capacity [J.kg-1.K-1]": 897.0, + "Negative current collector thermal conductivity [W.m-1.K-1]": 401.0, + "Positive current collector thermal conductivity [W.m-1.K-1]": 237.0, + "Nominal cell capacity [A.h]": 5.0, + "Typical current [A]": 5.0, + "Current function [A]": 5.0, + # negative electrode + "Negative electrode conductivity [S.m-1]": 100.0, + "Maximum concentration in negative electrode [mol.m-3]": 28746.0, + "Negative electrode diffusivity [m2.s-1]": graphite_diffusivity_PeymanMPM, + "Negative electrode OCP [V]": graphite_ocp_PeymanMPM, + "Negative electrode porosity": 0.3, + "Negative electrode active material volume fraction": 0.61, + "Negative particle radius [m]": 2.5e-06, + "Negative electrode Bruggeman coefficient (electrode)": 1.5, + "Negative electrode Bruggeman coefficient (electrolyte)": 1.5, + "Negative electrode transport efficiency": 0.16, + "Negative electrode cation signed stoichiometry": -1.0, + "Negative electrode electrons in reaction": 1.0, + "Negative electrode reference exchange-current density [A.m-2(m3.mol)1.5]" + "": 1.061e-06, + "Negative electrode charge transfer coefficient": 0.5, + "Negative electrode double-layer capacity [F.m-2]": 0.2, + "Negative electrode exchange-current density [A.m-2]" + "": graphite_electrolyte_exchange_current_density_PeymanMPM, + "Negative electrode density [kg.m-3]": 3100.0, + "Negative electrode specific heat capacity [J.kg-1.K-1]": 1100.0, + "Negative electrode thermal conductivity [W.m-1.K-1]": 1.7, + "Negative electrode OCP entropic change [V.K-1]" + "": graphite_entropic_change_PeymanMPM, + # positive electrode + "Positive electrode conductivity [S.m-1]": 100.0, + "Maximum concentration in positive electrode [mol.m-3]": 35380.0, + "Positive electrode diffusivity [m2.s-1]": NMC_diffusivity_PeymanMPM, + "Positive electrode OCP [V]": NMC_ocp_PeymanMPM, + "Positive electrode porosity": 0.3, + "Positive electrode active material volume fraction": 0.445, + "Positive particle radius [m]": 3.5e-06, + "Positive electrode Bruggeman coefficient (electrode)": 1.5, + "Positive electrode Bruggeman coefficient (electrolyte)": 1.5, + "Positive electrode transport efficiency": 0.16, + "Positive electrode cation signed stoichiometry": -1.0, + "Positive electrode electrons in reaction": 1.0, + "Positive electrode reference exchange-current density [A.m-2(m3.mol)1.5]" + "": 4.824e-06, + "Positive electrode charge transfer coefficient": 0.5, + "Positive electrode double-layer capacity [F.m-2]": 0.2, + "Positive electrode exchange-current density [A.m-2]" + "": NMC_electrolyte_exchange_current_density_PeymanMPM, + "Positive electrode density [kg.m-3]": 3100.0, + "Positive electrode specific heat capacity [J.kg-1.K-1]": 1100.0, + "Positive electrode thermal conductivity [W.m-1.K-1]": 2.1, + "Positive electrode OCP entropic change [V.K-1]" + "": NMC_entropic_change_PeymanMPM, + # separator + "Separator porosity": 0.4, + "Separator Bruggeman coefficient (electrolyte)": 1.5, + "Separator density [kg.m-3]": 397.0, + "Separator specific heat capacity [J.kg-1.K-1]": 700.0, + "Separator thermal conductivity [W.m-1.K-1]": 0.16, + "Separator transport efficiency ": 0.25, + # electrolyte + "Typical electrolyte concentration [mol.m-3]": 1000.0, + "Initial concentration in electrolyte [mol.m-3]": 1000.0, + "Cation transference number": 0.38, + "1 + dlnf/dlnc": 1.0, + "Typical lithium ion diffusivity [m2.s-1]": 5.34e-10, + "Electrolyte diffusivity [m2.s-1]": electrolyte_diffusivity_PeymanMPM, + "Electrolyte conductivity [S.m-1]": electrolyte_conductivity_PeymanMPM, + # experiment + "Reference temperature [K]": 298.15, + "Negative current collector surface heat transfer coefficient [W.m-2.K-1]" + "": 0.0, + "Positive current collector surface heat transfer coefficient [W.m-2.K-1]" + "": 0.0, + "Negative tab heat transfer coefficient [W.m-2.K-1]": 0.0, + "Positive tab heat transfer coefficient [W.m-2.K-1]": 0.0, + "Edge heat transfer coefficient [W.m-2.K-1]": 5.0, + "Total heat transfer coefficient [W.m-2.K-1]": 5.0, + "Ambient temperature [K]": 298.15, + "Number of electrodes connected in parallel to make a cell": 1.0, + "Number of cells connected in series to make a battery": 1.0, + "Lower voltage cut-off [V]": 2.8, + "Upper voltage cut-off [V]": 4.2, + "Initial concentration in negative electrode [mol.m-3]": 48.8682, + "Initial concentration in positive electrode [mol.m-3]": 31513.0, + "Initial temperature [K]": 298.15, + # citations + "citations": ["Mohtat2020"], + } diff --git a/pybamm/input/parameters/lithium_ion/NCA_Kim2011.py b/pybamm/input/parameters/lithium_ion/NCA_Kim2011.py new file mode 100644 index 0000000000..07a3f22182 --- /dev/null +++ b/pybamm/input/parameters/lithium_ion/NCA_Kim2011.py @@ -0,0 +1,435 @@ +import pybamm +import os + + +def graphite_diffusivity_Kim2011(sto, T): + """ + Graphite diffusivity [1]. + + References + ---------- + .. [1] Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. + (2011). Multi-domain modeling of lithium-ion batteries encompassing + multi-physics in varied length scales. Journal of The Electrochemical + Society, 158(8), A955-A969. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_ref = 9 * 10 ** (-14) + E_D_s = 4e3 + arrhenius = pybamm.exp(E_D_s / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_ref * arrhenius + + +def graphite_ocp_Kim2011(sto): + """ + Graphite Open Circuit Potential (OCP) as a function of the stochiometry [1]. + + References + ---------- + .. [1] Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. + (2011). Multi-domain modeling of lithium-ion batteries encompassing + multi-physics in varied length scales. Journal of The Electrochemical + Society, 158(8), A955-A969. + """ + + u_eq = ( + 0.124 + + 1.5 * pybamm.exp(-70 * sto) + - 0.0351 * pybamm.tanh((sto - 0.286) / 0.083) + - 0.0045 * pybamm.tanh((sto - 0.9) / 0.119) + - 0.035 * pybamm.tanh((sto - 0.99) / 0.05) + - 0.0147 * pybamm.tanh((sto - 0.5) / 0.034) + - 0.102 * pybamm.tanh((sto - 0.194) / 0.142) + - 0.022 * pybamm.tanh((sto - 0.98) / 0.0164) + - 0.011 * pybamm.tanh((sto - 0.124) / 0.0226) + + 0.0155 * pybamm.tanh((sto - 0.105) / 0.029) + ) + + return u_eq + + +def graphite_electrolyte_exchange_current_density_Kim2011(c_e, c_s_surf, c_s_max, T): + """ + Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in + EC:DMC + [1]. + + References + ---------- + .. [1] Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. + (2011). Multi-domain modeling of lithium-ion batteries encompassing + multi-physics in varied length scales. Journal of The Electrochemical + Society, 158(8), A955-A969. + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + + i0_ref = 36 # reference exchange current density at 100% SOC + sto = 0.36 # stochiometry at 100% SOC + c_s_n_ref = sto * c_s_max # reference electrode concentration + c_e_ref = pybamm.Parameter("Typical electrolyte concentration [mol.m-3]") + alpha = 0.5 # charge transfer coefficient + + m_ref = i0_ref / ( + c_e_ref**alpha * (c_s_max - c_s_n_ref) ** alpha * c_s_n_ref**alpha + ) + + E_r = 3e4 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref + * arrhenius + * c_e**alpha + * c_s_surf**alpha + * (c_s_max - c_s_surf) ** alpha + ) + + +def nca_diffusivity_Kim2011(sto, T): + """ + NCA diffusivity as a function of stochiometry [1]. + + References + ---------- + .. [1] Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. + (2011). Multi-domain modeling of lithium-ion batteries encompassing + multi-physics in varied length scales. Journal of The Electrochemical + Society, 158(8), A955-A969. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + D_ref = 3 * 10 ** (-15) + E_D_s = 2e4 + arrhenius = pybamm.exp(E_D_s / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_ref * arrhenius + + +def nca_electrolyte_exchange_current_density_Kim2011(c_e, c_s_surf, c_s_max, T): + """ + Exchange-current density for Butler-Volmer reactions between NCA and LiPF6 in EC:DMC + [1]. + + References + ---------- + .. [1] Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. + (2011). Multi-domain modeling of lithium-ion batteries encompassing + multi-physics in varied length scales. Journal of The Electrochemical + Society, 158(8), A955-A969. + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + i0_ref = 4 # reference exchange current density at 100% SOC + sto = 0.41 # stochiometry at 100% SOC + c_s_ref = sto * c_s_max # reference electrode concentration + c_e_ref = pybamm.Parameter("Typical electrolyte concentration [mol.m-3]") + alpha = 0.5 # charge transfer coefficient + + m_ref = i0_ref / ( + c_e_ref**alpha * (c_s_max - c_s_ref) ** alpha * c_s_ref**alpha + ) + E_r = 3e4 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref + * arrhenius + * c_e**alpha + * c_s_surf**alpha + * (c_s_max - c_s_surf) ** alpha + ) + + +def electrolyte_diffusivity_Kim2011(c_e, T): + """ + Diffusivity of LiPF6 in EC as a function of ion concentration from [1]. + + References + ---------- + .. [1] Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. + (2011). Multi-domain modeling of lithium-ion batteries encompassing + multi-physics in varied length scales. Journal of The Electrochemical + Society, 158(8), A955-A969. + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_c_e = ( + 5.84 * 10 ** (-7) * pybamm.exp(-2870 / T) * (c_e / 1000) ** 2 + - 33.9 * 10 ** (-7) * pybamm.exp(-2920 / T) * (c_e / 1000) + + 129 * 10 ** (-7) * pybamm.exp(-3200 / T) + ) + + return D_c_e + + +def electrolyte_conductivity_Kim2011(c_e, T): + """ + Conductivity of LiPF6 in EC as a function of ion concentration from [1]. + + References + ---------- + .. [1] Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. + (2011). Multi-domain modeling of lithium-ion batteries encompassing + multi-physics in varied length scales. Journal of The Electrochemical + Society, 158(8), A955-A969. + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + sigma_e = ( + 3.45 * pybamm.exp(-798 / T) * (c_e / 1000) ** 3 + - 48.5 * pybamm.exp(-1080 / T) * (c_e / 1000) ** 2 + + 244 * pybamm.exp(-1440 / T) * (c_e / 1000) + ) + + return sigma_e + + +# Load data in the appropriate format +path, _ = os.path.split(os.path.abspath(__file__)) +nca_ocp_Kim2011_data = pybamm.parameters.process_1D_data( + "nca_ocp_Kim2011_data.csv", path=path +) + + +# Call dict via a function to avoid errors when editing in place +def get_parameter_values(): + """ + Parameters for a "Nominal Design" graphite/NCA pouch cell, from the paper + + > Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. (2011). + Multi-domain modeling of lithium-ion batteries encompassing multi-physics in varied + length scales. Journal of The Electrochemical Society, 158(8), A955-A969. + + Note, only an effective cell volumetric heat capacity is provided in the paper. We + therefore used the values for the density and specific heat capacity reported in the + Marquis2019 parameter set in each region and multiplied each density by the ratio + of the volumetric heat capacity provided in smith to the calculated value. This + ensures that the values produce the same effective cell volumetric heat capacity. + This works fine for thermal models that are averaged over the x-direction but not + for full (PDE in x direction) thermal models. We do the same for the planar + effective thermal conductivity. + + SEI parameters are example parameters for SEI growth from the papers: + + > Ramadass, P., Haran, B., Gomadam, P. M., White, R., & Popov, B. N. (2004). + Development of first principles capacity fade model for Li-ion cells. Journal of the + Electrochemical Society, 151(2), A196-A203. + > Ploehn, H. J., Ramadass, P., & White, R. E. (2004). Solvent diffusion model for + aging of lithium-ion battery cells. Journal of The Electrochemical Society, 151(3), + A456-A462. + > Single, F., Latz, A., & Horstmann, B. (2018). Identifying the mechanism of + continued growth of the solid–electrolyte interphase. ChemSusChem, 11(12), + 1950-1955. + > Safari, M., Morcrette, M., Teyssot, A., & Delacour, C. (2009). Multimodal Physics- + Based Aging Model for Life Prediction of Li-Ion Batteries. Journal of The + Electrochemical Society, 156(3), + > Yang, X., Leng, Y., Zhang, G., Ge, S., Wang, C. (2017). Modeling of lithium + plating induced aging of lithium-ion batteries: Transition from linear to nonlinear + aging. Journal of Power Sources, 360, 28-40. + + Note: this parameter set does not claim to be representative of the true parameter + values. Instead these are parameter values that were used to fit SEI models to + observed experimental data in the referenced papers. + """ + + return { + # sei + "Ratio of lithium moles to SEI moles": 2.0, + "Inner SEI reaction proportion": 0.5, + "Inner SEI partial molar volume [m3.mol-1]": 9.585e-05, + "Outer SEI partial molar volume [m3.mol-1]": 9.585e-05, + "SEI reaction exchange current density [A.m-2]": 1.5e-07, + "SEI resistivity [Ohm.m]": 200000.0, + "Outer SEI solvent diffusivity [m2.s-1]": 2.5000000000000002e-22, + "Bulk solvent concentration [mol.m-3]": 2636.0, + "Inner SEI open-circuit potential [V]": 0.1, + "Outer SEI open-circuit potential [V]": 0.8, + "Inner SEI electron conductivity [S.m-1]": 8.95e-14, + "Inner SEI lithium interstitial diffusivity [m2.s-1]": 1e-20, + "Lithium interstitial reference concentration [mol.m-3]": 15.0, + "Initial inner SEI thickness [m]": 2.5e-09, + "Initial outer SEI thickness [m]": 2.5e-09, + "EC initial concentration in electrolyte [mol.m-3]": 4541.0, + "EC diffusivity [m2.s-1]": 2e-18, + "SEI kinetic rate constant [m.s-1]": 1e-12, + "SEI open-circuit potential [V]": 0.4, + "SEI growth activation energy [J.mol-1]": 0.0, + "Negative electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + "Positive electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + # cell + "Negative current collector thickness [m]": 1e-05, + "Negative electrode thickness [m]": 7e-05, + "Separator thickness [m]": 2.5e-05, + "Positive electrode thickness [m]": 5e-05, + "Positive current collector thickness [m]": 1e-05, + "Electrode height [m]": 0.2, + "Electrode width [m]": 0.14, + "Negative tab width [m]": 0.044, + "Negative tab centre y-coordinate [m]": 0.013, + "Negative tab centre z-coordinate [m]": 0.2, + "Positive tab width [m]": 0.044, + "Positive tab centre y-coordinate [m]": 0.137, + "Positive tab centre z-coordinate [m]": 0.2, + "Cell cooling surface area [m2]": 0.0561, + "Cell volume [m3]": 4.62e-06, + "Negative current collector conductivity [S.m-1]": 59600000.0, + "Positive current collector conductivity [S.m-1]": 37800000.0, + "Negative current collector density [kg.m-3]": 11544.75, + "Positive current collector density [kg.m-3]": 3490.24338, + "Negative current collector specific heat capacity [J.kg-1.K-1]": 385.0, + "Positive current collector specific heat capacity [J.kg-1.K-1]": 897.0, + "Negative current collector thermal conductivity [W.m-1.K-1]": 267.467, + "Positive current collector thermal conductivity [W.m-1.K-1]": 158.079, + "Nominal cell capacity [A.h]": 0.43, + "Typical current [A]": 0.43, + "Current function [A]": 0.43, + # negative electrode + "Negative electrode conductivity [S.m-1]": 100.0, + "Maximum concentration in negative electrode [mol.m-3]": 28700.0, + "Negative electrode diffusivity [m2.s-1]": graphite_diffusivity_Kim2011, + "Negative electrode OCP [V]": graphite_ocp_Kim2011, + "Negative electrode porosity": 0.4, + "Negative electrode active material volume fraction": 0.51, + "Negative particle radius [m]": 5.083e-07, + "Negative electrode Bruggeman coefficient (electrolyte)": 2.0, + "Negative electrode Bruggeman coefficient (electrode)": 2.0, + "Negative electrode cation signed stoichiometry": -1.0, + "Negative electrode electrons in reaction": 1.0, + "Negative electrode charge transfer coefficient": 0.5, + "Negative electrode double-layer capacity [F.m-2]": 0.2, + "Negative electrode exchange-current density [A.m-2]" + "": graphite_electrolyte_exchange_current_density_Kim2011, + "Negative electrode density [kg.m-3]": 2136.43638, + "Negative electrode specific heat capacity [J.kg-1.K-1]": 700.0, + "Negative electrode thermal conductivity [W.m-1.K-1]": 1.1339, + "Negative electrode OCP entropic change [V.K-1]": 0.0, + # positive electrode + "Positive electrode conductivity [S.m-1]": 10.0, + "Maximum concentration in positive electrode [mol.m-3]": 49000.0, + "Positive electrode diffusivity [m2.s-1]": nca_diffusivity_Kim2011, + "Positive electrode OCP [V]": nca_ocp_Kim2011_data, + "Positive electrode porosity": 0.4, + "Positive electrode active material volume fraction": 0.41, + "Positive particle radius [m]": 1.633e-06, + "Positive electrode Bruggeman coefficient (electrolyte)": 2.0, + "Positive electrode Bruggeman coefficient (electrode)": 2.0, + "Positive electrode cation signed stoichiometry": -1.0, + "Positive electrode electrons in reaction": 1.0, + "Positive electrode charge transfer coefficient": 0.5, + "Positive electrode double-layer capacity [F.m-2]": 0.2, + "Positive electrode exchange-current density [A.m-2]" + "": nca_electrolyte_exchange_current_density_Kim2011, + "Positive electrode density [kg.m-3]": 4205.82708, + "Positive electrode specific heat capacity [J.kg-1.K-1]": 700.0, + "Positive electrode thermal conductivity [W.m-1.K-1]": 1.4007, + "Positive electrode OCP entropic change [V.K-1]": 0.0, + # separator + "Separator porosity": 0.4, + "Separator Bruggeman coefficient (electrolyte)": 2.0, + "Separator density [kg.m-3]": 511.86798, + "Separator specific heat capacity [J.kg-1.K-1]": 700.0, + "Separator thermal conductivity [W.m-1.K-1]": 0.10672, + # electrolyte + "Typical electrolyte concentration [mol.m-3]": 1200.0, + "Initial concentration in electrolyte [mol.m-3]": 1200.0, + "Cation transference number": 0.4, + "1 + dlnf/dlnc": 1.0, + "Electrolyte diffusivity [m2.s-1]": electrolyte_diffusivity_Kim2011, + "Electrolyte conductivity [S.m-1]": electrolyte_conductivity_Kim2011, + # experiment + "Reference temperature [K]": 298.15, + "Negative current collector surface heat transfer coefficient [W.m-2.K-1]" + "": 0.0, + "Positive current collector surface heat transfer coefficient [W.m-2.K-1]" + "": 0.0, + "Negative tab heat transfer coefficient [W.m-2.K-1]": 25.0, + "Positive tab heat transfer coefficient [W.m-2.K-1]": 25.0, + "Edge heat transfer coefficient [W.m-2.K-1]": 0.3, + "Total heat transfer coefficient [W.m-2.K-1]": 25.0, + "Ambient temperature [K]": 298.15, + "Number of electrodes connected in parallel to make a cell": 1.0, + "Number of cells connected in series to make a battery": 1.0, + "Lower voltage cut-off [V]": 2.7, + "Upper voltage cut-off [V]": 4.2, + "Initial concentration in negative electrode [mol.m-3]": 18081.0, + "Initial concentration in positive electrode [mol.m-3]": 20090.0, + "Initial temperature [K]": 298.15, + # citations + "citations": ["Kim2011"], + } diff --git a/pybamm/input/parameters/lithium_ion/OKane2022.py b/pybamm/input/parameters/lithium_ion/OKane2022.py new file mode 100644 index 0000000000..64c664d0c1 --- /dev/null +++ b/pybamm/input/parameters/lithium_ion/OKane2022.py @@ -0,0 +1,677 @@ +import pybamm +import os + + +def plating_exchange_current_density_OKane2020(c_e, c_Li, T): + """ + Exchange-current density for Li plating reaction [A.m-2]. + References + ---------- + .. [1] O’Kane, Simon EJ, Ian D. Campbell, Mohamed WJ Marzook, Gregory J. Offer, and + Monica Marinescu. "Physical origin of the differential voltage minimum associated + with lithium plating in Li-ion batteries." Journal of The Electrochemical Society + 167, no. 9 (2020): 090540. + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_Li : :class:`pybamm.Symbol` + Plated lithium concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + + k_plating = pybamm.Parameter("Lithium plating kinetic rate constant [m.s-1]") + + return pybamm.constants.F * k_plating * c_e + + +def stripping_exchange_current_density_OKane2020(c_e, c_Li, T): + """ + Exchange-current density for Li stripping reaction [A.m-2]. + + References + ---------- + + .. [1] O’Kane, Simon EJ, Ian D. Campbell, Mohamed WJ Marzook, Gregory J. Offer, and + Monica Marinescu. "Physical origin of the differential voltage minimum associated + with lithium plating in Li-ion batteries." Journal of The Electrochemical Society + 167, no. 9 (2020): 090540. + + Parameters + ---------- + + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_Li : :class:`pybamm.Symbol` + Plated lithium concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + + k_plating = pybamm.Parameter("Lithium plating kinetic rate constant [m.s-1]") + + return pybamm.constants.F * k_plating * c_Li + + +def SEI_limited_dead_lithium_OKane2022(L_sei): + """ + Decay rate for dead lithium formation [s-1]. + References + ---------- + .. [1] Simon E. J. O'Kane, Weilong Ai, Ganesh Madabattula, Diega Alonso-Alvarez, + Robert Timms, Valentin Sulzer, Jaqueline Sophie Edge, Billy Wu, Gregory J. Offer + and Monica Marinescu. "Lithium-ion battery degradation: how to model it." + Physical Chemistry: Chemical Physics 24, no. 13 (2022): 7909-7922. + Parameters + ---------- + L_sei : :class:`pybamm.Symbol` + Total SEI thickness [m] + Returns + ------- + :class:`pybamm.Symbol` + Dead lithium decay rate [s-1] + """ + + gamma_0 = pybamm.Parameter("Dead lithium decay constant [s-1]") + L_inner_0 = pybamm.Parameter("Initial inner SEI thickness [m]") + L_outer_0 = pybamm.Parameter("Initial outer SEI thickness [m]") + L_sei_0 = L_inner_0 + L_outer_0 + + gamma = gamma_0 * L_sei_0 / L_sei + + return gamma + + +def graphite_LGM50_diffusivity_Chen2020(sto, T): + """ + 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] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_ref = 3.3e-14 + E_D_s = 3.03e4 + # E_D_s not given by Chen et al (2020), so taken from Ecker et al. (2015) instead + arrhenius = pybamm.exp(E_D_s / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_ref * arrhenius + + +def graphite_LGM50_electrolyte_exchange_current_density_Chen2020( + c_e, c_s_surf, c_s_max, T +): + """ + Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in + EC:DMC. + + References + ---------- + .. [1] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + + m_ref = 6.48e-7 # (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 35000 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def graphite_volume_change_Ai2020(sto, c_s_max): + """ + Graphite particle volume change as a function of stochiometry [1, 2]. + + References + ---------- + .. [1] Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). + Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in + Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 + DOI: 10.1149/2.0122001JES. + .. [2] Rieger, B., Erhard, S. V., Rumpf, K., & Jossen, A. (2016). + A new method to model the thickness change of a commercial pouch cell + during discharge. Journal of The Electrochemical Society, 163(8), A1566-A1575. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry, dimensionless + should be R-averaged particle concentration + Returns + ------- + t_change:class:`pybamm.Symbol` + volume change, dimensionless, normalised by particle volume + """ + p1 = 145.907 + p2 = -681.229 + p3 = 1334.442 + p4 = -1415.710 + p5 = 873.906 + p6 = -312.528 + p7 = 60.641 + p8 = -5.706 + p9 = 0.386 + p10 = -4.966e-05 + t_change = ( + p1 * sto**9 + + p2 * sto**8 + + p3 * sto**7 + + p4 * sto**6 + + p5 * sto**5 + + p6 * sto**4 + + p7 * sto**3 + + p8 * sto**2 + + p9 * sto + + p10 + ) + return t_change + + +def graphite_cracking_rate_Ai2020(T_dim): + """ + Graphite particle cracking rate as a function of temperature [1, 2]. + + References + ---------- + .. [1] Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). + Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in + Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 + DOI: 10.1149/2.0122001JES. + .. [2] Deshpande, R., Verbrugge, M., Cheng, Y. T., Wang, J., & Liu, P. (2012). + Battery cycle life prediction with coupled chemical degradation and fatigue + mechanics. Journal of the Electrochemical Society, 159(10), A1730. + + Parameters + ---------- + T_dim: :class:`pybamm.Symbol` + temperature, [K] + + Returns + ------- + k_cr: :class:`pybamm.Symbol` + cracking rate, [m/(Pa.m0.5)^m_cr] + where m_cr is another Paris' law constant + """ + k_cr = 3.9e-20 + Eac_cr = 0 # to be implemented + arrhenius = pybamm.exp(Eac_cr / pybamm.constants.R * (1 / T_dim - 1 / 298.15)) + return k_cr * arrhenius + + +def nmc_LGM50_diffusivity_Chen2020(sto, T): + """ + 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] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_ref = 4e-15 + E_D_s = 25000 # O'Kane et al. (2022), after Cabanero et al. (2018) + arrhenius = pybamm.exp(E_D_s / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_ref * arrhenius + + +def nmc_LGM50_ocp_Chen2020(sto): + """ + LG M50 NMC open circuit potential as a function of stochiometry, fit taken + from [1]. + + References + ---------- + .. [1] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + + Returns + ------- + :class:`pybamm.Symbol` + Open circuit potential + """ + + u_eq = ( + -0.8090 * sto + + 4.4875 + - 0.0428 * pybamm.tanh(18.5138 * (sto - 0.5542)) + - 17.7326 * pybamm.tanh(15.7890 * (sto - 0.3117)) + + 17.5842 * pybamm.tanh(15.9308 * (sto - 0.3120)) + ) + + return u_eq + + +def nmc_LGM50_electrolyte_exchange_current_density_Chen2020(c_e, c_s_surf, c_s_max, T): + """ + Exchange-current density for Butler-Volmer reactions between NMC and LiPF6 in + EC:DMC. + + References + ---------- + .. [1] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + m_ref = 3.42e-6 # (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 17800 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def volume_change_Ai2020(sto, c_s_max): + """ + Particle volume change as a function of stochiometry [1, 2]. + + References + ---------- + .. [1] > Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). + Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in + Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 + DOI: 10.1149/2.0122001JES. + .. [2] > Rieger, B., Erhard, S. V., Rumpf, K., & Jossen, A. (2016). + A new method to model the thickness change of a commercial pouch cell + during discharge. Journal of The Electrochemical Society, 163(8), A1566-A1575. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry, dimensionless + should be R-averaged particle concentration + Returns + ------- + t_change:class:`pybamm.Symbol` + volume change, dimensionless, normalised by particle volume + """ + omega = pybamm.Parameter("Positive electrode partial molar volume [m3.mol-1]") + t_change = omega * c_s_max * sto + return t_change + + +def cracking_rate_Ai2020(T_dim): + """ + Particle cracking rate as a function of temperature [1, 2]. + + References + ---------- + .. [1] > Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). + Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in + Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 + DOI: 10.1149/2.0122001JES. + .. [2] > Deshpande, R., Verbrugge, M., Cheng, Y. T., Wang, J., & Liu, P. (2012). + Battery cycle life prediction with coupled chemical degradation and fatigue + mechanics. Journal of the Electrochemical Society, 159(10), A1730. + + Parameters + ---------- + T: :class:`pybamm.Symbol` + temperature, [K] + + Returns + ------- + k_cr: :class:`pybamm.Symbol` + cracking rate, [m/(Pa.m0.5)^m_cr] + where m_cr is another Paris' law constant + """ + k_cr = 3.9e-20 + Eac_cr = 0 # to be implemented + arrhenius = pybamm.exp(Eac_cr / pybamm.constants.R * (1 / T_dim - 1 / 298.15)) + return k_cr * arrhenius + + +def electrolyte_diffusivity_Nyman2008_arrhenius(c_e, T): + """ + Diffusivity of LiPF6 in EC:EMC (3:7) as a function of ion concentration. The data + comes from [1], with Arrhenius temperature dependence added from [2]. + + 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. + .. [2] 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. + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_c_e = 8.794e-11 * (c_e / 1000) ** 2 - 3.972e-10 * (c_e / 1000) + 4.862e-10 + + # Nyman et al. (2008) does not provide temperature dependence + # So use temperature dependence from Ecker et al. (2015) instead + + E_D_c_e = 17000 + arrhenius = pybamm.exp(E_D_c_e / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_c_e * arrhenius + + +def electrolyte_conductivity_Nyman2008_arrhenius(c_e, T): + """ + Conductivity of LiPF6 in EC:EMC (3:7) as a function of ion concentration. The data + comes from [1], with Arrhenius temperature dependence added from [2]. + + 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. + .. [2] 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. + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + sigma_e = ( + 0.1297 * (c_e / 1000) ** 3 - 2.51 * (c_e / 1000) ** 1.5 + 3.329 * (c_e / 1000) + ) + + # Nyman et al. (2008) does not provide temperature dependence + # So use temperature dependence from Ecker et al. (2015) instead + + E_sigma_e = 17000 + arrhenius = pybamm.exp(E_sigma_e / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return sigma_e * arrhenius + + +# Load data in the appropriate format +path, _ = os.path.split(os.path.abspath(__file__)) +graphite_LGM50_ocp_Chen2020 = pybamm.parameters.process_1D_data( + "graphite_LGM50_ocp_Chen2020.csv", path=path +) + + +# Call dict via a function to avoid errors when editing in place +def get_parameter_values(): + """ + Parameters for an LG M50 cell, from the paper + + > Simon O'Kane, Weilong Ai, Ganesh Madabattula, Diego Alonso-Alvarez, Robert Timms, + Valentin Sulzer, Jacqueline Edge, Billy Wu, Gregory Offer, and Monica Marinescu. + ["Lithium-ion battery degradation: how to model + it."](https://pubs.rsc.org/en/content/articlelanding/2022/cp/d2cp00417h) Physical + Chemistry: Chemical Physics 24 (2022): 7909-7922 + + based on 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."](https://iopscience.iop.org/article/10.1149/1945-7111/ab9050) Journal of + the Electrochemical Society 167 (2020): 080534 + + and references therein. + + Note: the SEI and plating parameters do not claim to be representative of the true + parameter values. These are merely the parameter values that were used in the + referenced papers. + """ + + return { + # lithium plating + "Lithium metal partial molar volume [m3.mol-1]": 1.3e-05, + "Lithium plating kinetic rate constant [m.s-1]": 1e-09, + "Exchange-current density for plating [A.m-2]" + "": plating_exchange_current_density_OKane2020, + "Exchange-current density for stripping [A.m-2]" + "": stripping_exchange_current_density_OKane2020, + "Initial plated lithium concentration [mol.m-3]": 0.0, + "Typical plated lithium concentration [mol.m-3]": 1000.0, + "Lithium plating transfer coefficient": 0.65, + "Dead lithium decay constant [s-1]": 1e-06, + "Dead lithium decay rate [s-1]": SEI_limited_dead_lithium_OKane2022, + # sei + "Ratio of lithium moles to SEI moles": 1.0, + "Inner SEI reaction proportion": 0.0, + "Inner SEI partial molar volume [m3.mol-1]": 9.585e-05, + "Outer SEI partial molar volume [m3.mol-1]": 9.585e-05, + "SEI reaction exchange current density [A.m-2]": 1.5e-07, + "SEI resistivity [Ohm.m]": 200000.0, + "Outer SEI solvent diffusivity [m2.s-1]": 2.5000000000000002e-22, + "Bulk solvent concentration [mol.m-3]": 2636.0, + "Inner SEI open-circuit potential [V]": 0.1, + "Outer SEI open-circuit potential [V]": 0.8, + "Inner SEI electron conductivity [S.m-1]": 8.95e-14, + "Inner SEI lithium interstitial diffusivity [m2.s-1]": 1e-20, + "Lithium interstitial reference concentration [mol.m-3]": 15.0, + "Initial inner SEI thickness [m]": 0.0, + "Initial outer SEI thickness [m]": 5e-09, + "EC initial concentration in electrolyte [mol.m-3]": 4541.0, + "EC diffusivity [m2.s-1]": 2e-18, + "SEI kinetic rate constant [m.s-1]": 1e-12, + "SEI open-circuit potential [V]": 0.4, + "SEI growth activation energy [J.mol-1]": 38000.0, + "Negative electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + "Positive electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + # cell + "Negative current collector thickness [m]": 1.2e-05, + "Negative electrode thickness [m]": 8.52e-05, + "Separator thickness [m]": 1.2e-05, + "Positive electrode thickness [m]": 7.56e-05, + "Positive current collector thickness [m]": 1.6e-05, + "Electrode height [m]": 0.065, + "Electrode width [m]": 1.58, + "Cell cooling surface area [m2]": 0.00531, + "Cell volume [m3]": 2.42e-05, + "Cell thermal expansion coefficient [m.K-1]": 1.1e-06, + "Negative current collector conductivity [S.m-1]": 58411000.0, + "Positive current collector conductivity [S.m-1]": 36914000.0, + "Negative current collector density [kg.m-3]": 8960.0, + "Positive current collector density [kg.m-3]": 2700.0, + "Negative current collector specific heat capacity [J.kg-1.K-1]": 385.0, + "Positive current collector specific heat capacity [J.kg-1.K-1]": 897.0, + "Negative current collector thermal conductivity [W.m-1.K-1]": 401.0, + "Positive current collector thermal conductivity [W.m-1.K-1]": 237.0, + "Nominal cell capacity [A.h]": 5.0, + "Typical current [A]": 5.0, + "Current function [A]": 5.0, + # negative electrode + "Negative electrode conductivity [S.m-1]": 215.0, + "Maximum concentration in negative electrode [mol.m-3]": 33133.0, + "Negative electrode diffusivity [m2.s-1]": graphite_LGM50_diffusivity_Chen2020, + "Negative electrode OCP [V]": graphite_LGM50_ocp_Chen2020, + "Negative electrode porosity": 0.25, + "Negative electrode active material volume fraction": 0.75, + "Negative particle radius [m]": 5.86e-06, + "Negative electrode Bruggeman coefficient (electrolyte)": 1.5, + "Negative electrode Bruggeman coefficient (electrode)": 1.5, + "Negative electrode cation signed stoichiometry": -1.0, + "Negative electrode electrons in reaction": 1.0, + "Negative electrode charge transfer coefficient": 0.5, + "Negative electrode double-layer capacity [F.m-2]": 0.2, + "Negative electrode exchange-current density [A.m-2]" + "": graphite_LGM50_electrolyte_exchange_current_density_Chen2020, + "Negative electrode density [kg.m-3]": 1657.0, + "Negative electrode specific heat capacity [J.kg-1.K-1]": 700.0, + "Negative electrode thermal conductivity [W.m-1.K-1]": 1.7, + "Negative electrode OCP entropic change [V.K-1]": 0.0, + "Negative electrode Poisson's ratio": 0.3, + "Negative electrode Young's modulus [Pa]": 15000000000.0, + "Negative electrode reference concentration for free of deformation [mol.m-3]" + "": 0.0, + "Negative electrode partial molar volume [m3.mol-1]": 3.1e-06, + "Negative electrode volume change": graphite_volume_change_Ai2020, + "Negative electrode initial crack length [m]": 2e-08, + "Negative electrode initial crack width [m]": 1.5e-08, + "Negative electrode number of cracks per unit area [m-2]": 3180000000000000.0, + "Negative electrode Paris' law constant b": 1.12, + "Negative electrode Paris' law constant m": 2.2, + "Negative electrode cracking rate": graphite_cracking_rate_Ai2020, + "Negative electrode LAM constant proportional term [s-1]": 2.7778e-07, + "Negative electrode LAM constant exponential term": 2.0, + "Negative electrode critical stress [Pa]": 60000000.0, + # positive electrode + "Positive electrode conductivity [S.m-1]": 0.18, + "Maximum concentration in positive electrode [mol.m-3]": 63104.0, + "Positive electrode diffusivity [m2.s-1]": nmc_LGM50_diffusivity_Chen2020, + "Positive electrode OCP [V]": nmc_LGM50_ocp_Chen2020, + "Positive electrode porosity": 0.335, + "Positive electrode active material volume fraction": 0.665, + "Positive particle radius [m]": 5.22e-06, + "Positive electrode Bruggeman coefficient (electrolyte)": 1.5, + "Positive electrode Bruggeman coefficient (electrode)": 1.5, + "Positive electrode cation signed stoichiometry": -1.0, + "Positive electrode electrons in reaction": 1.0, + "Positive electrode charge transfer coefficient": 0.5, + "Positive electrode double-layer capacity [F.m-2]": 0.2, + "Positive electrode exchange-current density [A.m-2]" + "": nmc_LGM50_electrolyte_exchange_current_density_Chen2020, + "Positive electrode density [kg.m-3]": 3262.0, + "Positive electrode specific heat capacity [J.kg-1.K-1]": 700.0, + "Positive electrode thermal conductivity [W.m-1.K-1]": 2.1, + "Positive electrode OCP entropic change [V.K-1]": 0.0, + "Positive electrode Poisson's ratio": 0.2, + "Positive electrode Young's modulus [Pa]": 375000000000.0, + "Positive electrode reference concentration for free of deformation [mol.m-3]" + "": 0.0, + "Positive electrode partial molar volume [m3.mol-1]": 1.25e-05, + "Positive electrode volume change": volume_change_Ai2020, + "Positive electrode initial crack length [m]": 2e-08, + "Positive electrode initial crack width [m]": 1.5e-08, + "Positive electrode number of cracks per unit area [m-2]": 3180000000000000.0, + "Positive electrode Paris' law constant b": 1.12, + "Positive electrode Paris' law constant m": 2.2, + "Positive electrode cracking rate": cracking_rate_Ai2020, + "Positive electrode LAM constant proportional term [s-1]": 2.7778e-07, + "Positive electrode LAM constant exponential term": 2.0, + "Positive electrode critical stress [Pa]": 375000000.0, + # separator + "Separator porosity": 0.47, + "Separator Bruggeman coefficient (electrolyte)": 1.5, + "Separator density [kg.m-3]": 397.0, + "Separator specific heat capacity [J.kg-1.K-1]": 700.0, + "Separator thermal conductivity [W.m-1.K-1]": 0.16, + # electrolyte + "Typical electrolyte concentration [mol.m-3]": 1000.0, + "Initial concentration in electrolyte [mol.m-3]": 1000.0, + "Cation transference number": 0.2594, + "1 + dlnf/dlnc": 1.0, + "Electrolyte diffusivity [m2.s-1]" + "": electrolyte_diffusivity_Nyman2008_arrhenius, + "Electrolyte conductivity [S.m-1]" + "": electrolyte_conductivity_Nyman2008_arrhenius, + # experiment + "Reference temperature [K]": 298.15, + "Total heat transfer coefficient [W.m-2.K-1]": 10.0, + "Ambient temperature [K]": 298.15, + "Number of electrodes connected in parallel to make a cell": 1.0, + "Number of cells connected in series to make a battery": 1.0, + "Lower voltage cut-off [V]": 2.5, + "Upper voltage cut-off [V]": 4.2, + "Initial concentration in negative electrode [mol.m-3]": 29866.0, + "Initial concentration in positive electrode [mol.m-3]": 17038.0, + "Initial temperature [K]": 298.15, + # citations + "citations": ["OKane2022", "OKane2020", "Chen2020"], + } diff --git a/pybamm/input/parameters/lithium_ion/ORegan2022.py b/pybamm/input/parameters/lithium_ion/ORegan2022.py new file mode 100644 index 0000000000..17a0a85df7 --- /dev/null +++ b/pybamm/input/parameters/lithium_ion/ORegan2022.py @@ -0,0 +1,1044 @@ +import pybamm +import numpy as np + + +def electrolyte_conductivity_base_Landesfeind2019(c_e, T, coeffs): + """ + Conductivity of LiPF6 in solvent_X as a function of ion concentration and + temperature. The data comes from [1]. + + References + ---------- + .. [1] Landesfeind, J. and Gasteiger, H.A., 2019. Temperature and Concentration + Dependence of the Ionic Transport Properties of Lithium-Ion Battery Electrolytes. + Journal of The Electrochemical Society, 166(14), pp.A3079-A3097. + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + coeffs: :class:`pybamm.Symbol` + Fitting parameter coefficients + + Returns + ------- + :class:`pybamm.Symbol` + Electrolyte conductivity + """ + c = c_e / 1000 # mol.m-3 -> mol.l + p1, p2, p3, p4, p5, p6 = coeffs + A = p1 * (1 + (T - p2)) + B = 1 + p3 * pybamm.sqrt(c) + p4 * (1 + p5 * pybamm.exp(1000 / T)) * c + C = 1 + c**4 * (p6 * pybamm.exp(1000 / T)) + sigma_e = A * c * B / C # mS.cm-1 + + return sigma_e / 10 + + +def electrolyte_diffusivity_base_Landesfeind2019(c_e, T, coeffs): + """ + Diffusivity of LiPF6 in solvent_X as a function of ion concentration and + temperature. The data comes from [1]. + + References + ---------- + .. [1] Landesfeind, J. and Gasteiger, H.A., 2019. Temperature and Concentration + Dependence of the Ionic Transport Properties of Lithium-Ion Battery Electrolytes. + Journal of The Electrochemical Society, 166(14), pp.A3079-A3097. + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + coeffs: :class:`pybamm.Symbol` + Fitting parameter coefficients + + Returns + ------- + :class:`pybamm.Symbol` + Electrolyte diffusivity + """ + c = c_e / 1000 # mol.m-3 -> mol.l + p1, p2, p3, p4 = coeffs + A = p1 * pybamm.exp(p2 * c) + B = pybamm.exp(p3 / T) + C = pybamm.exp(p4 * c / T) + D_e = A * B * C * 1e-10 # m2/s + + return D_e + + +def electrolyte_TDF_base_Landesfeind2019(c_e, T, coeffs): + """ + Thermodynamic factor (TDF) of LiPF6 in solvent_X as a function of ion concentration + and temperature. The data comes from [1]. + + References + ---------- + .. [1] Landesfeind, J. and Gasteiger, H.A., 2019. Temperature and Concentration + Dependence of the Ionic Transport Properties of Lithium-Ion Battery Electrolytes. + Journal of The Electrochemical Society, 166(14), pp.A3079-A3097. + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + coeffs: :class:`pybamm.Symbol` + Fitting parameter coefficients + + Returns + ------- + :class:`pybamm.Symbol` + Electrolyte thermodynamic factor + """ + c = c_e / 1000 # mol.m-3 -> mol.l + p1, p2, p3, p4, p5, p6, p7, p8, p9 = coeffs + tdf = ( + p1 + + p2 * c + + p3 * T + + p4 * c**2 + + p5 * c * T + + p6 * T**2 + + p7 * c**3 + + p8 * c**2 * T + + p9 * c * T**2 + ) + + return tdf + + +def electrolyte_transference_number_base_Landesfeind2019(c_e, T, coeffs): + """ + Transference number of LiPF6 in solvent_X as a function of ion concentration and + temperature. The data comes from [1]. + + References + ---------- + .. [1] Landesfeind, J. and Gasteiger, H.A., 2019. Temperature and Concentration + Dependence of the Ionic Transport Properties of Lithium-Ion Battery Electrolytes. + Journal of The Electrochemical Society, 166(14), pp.A3079-A3097. + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + coeffs: :class:`pybamm.Symbol` + Fitting parameter coefficients + + Returns + ------- + :class:`pybamm.Symbol` + Electrolyte transference number + """ + c = c_e / 1000 # mol.m-3 -> mol.l + p1, p2, p3, p4, p5, p6, p7, p8, p9 = coeffs + tplus = ( + p1 + + p2 * c + + p3 * T + + p4 * c**2 + + p5 * c * T + + p6 * T**2 + + p7 * c**3 + + p8 * c**2 * T + + p9 * c * T**2 + ) + + return tplus + + +def copper_heat_capacity_CRC(T): + """ + Copper specific heat capacity as a function of the temperature from [1]. + + References + ---------- + .. [1] William M. Haynes (Ed.). "CRC handbook of chemistry and physics". CRC Press + (2014). + + Parameters + ---------- + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Specific heat capacity + """ + + cp = 1.445e-6 * T**3 - 1.946e-3 * T**2 + 0.9633 * T + 236 + + return cp + + +def aluminium_heat_capacity_CRC(T): + """ + Aluminium specific heat capacity as a function of the temperature from [1]. + + References + ---------- + .. [1] William M. Haynes (Ed.). "CRC handbook of chemistry and physics". CRC Press + (2014). + + Parameters + ---------- + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Specific heat capacity + """ + + cp = 4.503e-6 * T**3 - 6.256e-3 * T**2 + 3.281 * T + 355.7 + + return cp + + +def copper_thermal_conductivity_CRC(T): + """ + Copper thermal conductivity as a function of the temperature from [1]. + + References + ---------- + .. [1] William M. Haynes (Ed.). "CRC handbook of chemistry and physics". CRC Press + (2014). + + Parameters + ---------- + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Thermal conductivity + """ + + lambda_th = -5.409e-7 * T**3 + 7.054e-4 * T**2 - 0.3727 * T + 463.6 + + return lambda_th + + +def graphite_LGM50_diffusivity_ORegan2022(sto, T): + """ + 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] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma + Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion + cylindrical battery." Electrochimica Acta 425 (2022): 140700 + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + a0 = 11.17 + a1 = -1.553 + a2 = -6.136 + a3 = -9.725 + a4 = 1.85 + b1 = 0.2031 + b2 = 0.5375 + b3 = 0.9144 + b4 = 0.5953 + c0 = -15.11 + c1 = 0.0006091 + c2 = 0.06438 + c3 = 0.0578 + c4 = 0.001356 + d = 2092 + + D_ref = ( + 10 + ** ( + a0 * sto + + c0 + + a1 * pybamm.exp(-((sto - b1) ** 2) / c1) + + a2 * pybamm.exp(-((sto - b2) ** 2) / c2) + + a3 * pybamm.exp(-((sto - b3) ** 2) / c3) + + a4 * pybamm.exp(-((sto - b4) ** 2) / c4) + ) + * 3.0321 # correcting factor (see O'Regan et al 2021) + ) + + E_D_s = d * pybamm.constants.R + arrhenius = pybamm.exp(E_D_s / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_ref * arrhenius + + +def graphite_LGM50_ocp_Chen2020(sto): + """ + LG M50 Graphite open-circuit potential as a function of stochiometry, fit taken + from [1]. + + References + ---------- + .. [1] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + + Returns + ------- + :class:`pybamm.Symbol` + Open-circuit potential + """ + + U = ( + 1.9793 * pybamm.exp(-39.3631 * sto) + + 0.2482 + - 0.0909 * pybamm.tanh(29.8538 * (sto - 0.1234)) + - 0.04478 * pybamm.tanh(14.9159 * (sto - 0.2769)) + - 0.0205 * pybamm.tanh(30.4444 * (sto - 0.6103)) + ) + + return U + + +def graphite_LGM50_electrolyte_exchange_current_density_ORegan2022( + c_e, c_s_surf, c_s_max, T +): + """ + Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in + EC:DMC. + + References + ---------- + .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma + Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion + cylindrical battery." Electrochimica Acta 425 (2022): 140700 + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + + i_ref = 2.668 # (A/m2) + alpha = 0.792 + E_r = 4e4 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + c_e_ref = pybamm.Parameter("Typical electrolyte concentration [mol.m-3]") + + return ( + i_ref + * arrhenius + * (c_e / c_e_ref) ** (1 - alpha) + * (c_s_surf / c_s_max) ** alpha + * (1 - c_s_surf / c_s_max) ** (1 - alpha) + ) + + +def graphite_LGM50_heat_capacity_ORegan2022(T): + """ + Wet negative electrode specific heat capacity as a function of the temperature from + [1]. + + References + ---------- + .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma + Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion + cylindrical battery." Electrochimica Acta 425 (2022): 140700 + + Parameters + ---------- + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Specific heat capacity + """ + + # value for the dry porous electrode (i.e. electrode + air, and we neglect the air + # contribution to density) + cp_dry = 4.932e-4 * T**3 - 0.491 * T**2 + 169.4 * T - 1.897e4 + rho_dry = 1740 + theta_dry = rho_dry * cp_dry + + # value for the bulk electrolyte + rho_e = 1280 + cp_e = 229 + eps_e = pybamm.Parameter("Negative electrode porosity") + theta_e = rho_e * cp_e + + # value for the wet separator + theta_wet = theta_dry + theta_e * eps_e + rho_wet = rho_dry + rho_e * eps_e + cp_wet = theta_wet / rho_wet + + return cp_wet + + +def graphite_LGM50_thermal_conductivity_ORegan2022(T): + """ + Wet negative electrode thermal conductivity as a function of the temperature from + [1]. + + References + ---------- + .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma + Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion + cylindrical battery." Electrochimica Acta 425 (2022): 140700 + + Parameters + ---------- + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Thermal conductivity + """ + + lambda_wet = -2.61e-4 * T**2 + 0.1726 * T - 24.49 + + return lambda_wet + + +def graphite_LGM50_entropic_change_ORegan2022(sto, c_s_max): + """ + LG M50 Graphite 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] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma + Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion + cylindrical battery." Electrochimica Acta 425 (2022): 140700 + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + + Returns + ------- + :class:`pybamm.Symbol` + Entropic change [V.K-1] + """ + + a0 = -0.1112 + a1 = -0.09002 * 0 # fixed fit (see discussion O'Regan et al 2021) + a2 = 0.3561 + b1 = 0.4955 + b2 = 0.08309 + c0 = 0.02914 + c1 = 0.1122 + c2 = 0.004616 + d1 = 63.9 + + dUdT = ( + a0 * sto + + c0 + + a2 * pybamm.exp(-((sto - b2) ** 2) / c2) + + a1 + * (pybamm.tanh(d1 * (sto - (b1 - c1))) - pybamm.tanh(d1 * (sto - (b1 + c1)))) + ) / 1000 # fit in mV / K + + return dUdT + + +def nmc_LGM50_electronic_conductivity_ORegan2022(T): + """ + Positive electrode electronic conductivity as a function of the temperature from + [1]. + + References + ---------- + .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma + Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion + cylindrical battery." Electrochimica Acta 425 (2022): 140700 + + Parameters + ---------- + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Thermal conductivity + """ + + E_r = 3.5e3 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + sigma = 0.8473 * arrhenius + + return sigma + + +def nmc_LGM50_diffusivity_ORegan2022(sto, T): + """ + 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] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma + Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion + cylindrical battery." Electrochimica Acta 425 (2022): 140700 + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + a1 = -0.9231 + a2 = -0.4066 + a3 = -0.993 + b1 = 0.3216 + b2 = 0.4532 + b3 = 0.8098 + c0 = -13.96 + c1 = 0.002534 + c2 = 0.003926 + c3 = 0.09924 + d = 1449 + + D_ref = ( + 10 + ** ( + c0 + + a1 * pybamm.exp(-((sto - b1) ** 2) / c1) + + a2 * pybamm.exp(-((sto - b2) ** 2) / c2) + + a3 * pybamm.exp(-((sto - b3) ** 2) / c3) + ) + * 2.7 # correcting factor (see O'Regan et al 2021) + ) + + E_D_s = d * pybamm.constants.R + arrhenius = pybamm.exp(E_D_s / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_ref * arrhenius + + +def nmc_LGM50_ocp_Chen2020(sto): + """ + LG M50 NMC open-circuit potential as a function of stoichiometry. The fit is + taken from [1]. + + References + ---------- + .. [1] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + + Returns + ------- + :class:`pybamm.Symbol` + Open-circuit potential + """ + + U = ( + -0.809 * sto + + 4.4875 + - 0.0428 * pybamm.tanh(18.5138 * (sto - 0.5542)) + - 17.7326 * pybamm.tanh(15.789 * (sto - 0.3117)) + + 17.5842 * pybamm.tanh(15.9308 * (sto - 0.312)) + ) + + return U + + +def nmc_LGM50_electrolyte_exchange_current_density_ORegan2022( + c_e, c_s_surf, c_s_max, T +): + """ + Exchange-current density for Butler-Volmer reactions between NMC and LiPF6 in + EC:DMC. + + References + ---------- + .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma + Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion + cylindrical battery." Electrochimica Acta 425 (2022): 140700 + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + i_ref = 5.028 # (A/m2) + alpha = 0.43 + E_r = 2.401e4 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + c_e_ref = pybamm.Parameter("Typical electrolyte concentration [mol.m-3]") + + return ( + i_ref + * arrhenius + * (c_e / c_e_ref) ** (1 - alpha) + * (c_s_surf / c_s_max) ** alpha + * (1 - c_s_surf / c_s_max) ** (1 - alpha) + ) + + +def nmc_LGM50_heat_capacity_ORegan2022(T): + """ + Wet positive electrode specific heat capacity as a function of the temperature from + [1]. + + References + ---------- + .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma + Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion + cylindrical battery." Electrochimica Acta 425 (2022): 140700 + + Parameters + ---------- + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Specific heat capacity + """ + + # value for the dry porous electrode (i.e. electrode + air, and we neglect the air + # contribution to density) + cp_dry = -8.414e-4 * T**3 + 0.7892 * T**2 - 241.3 * T + 2.508e4 + rho_dry = 3270 + theta_dry = rho_dry * cp_dry + + # value for the bulk electrolyte + rho_e = 1280 + cp_e = 229 + eps_e = pybamm.Parameter("Positive electrode porosity") + theta_e = rho_e * cp_e + + # value for the wet separator + theta_wet = theta_dry + theta_e * eps_e + rho_wet = rho_dry + rho_e * eps_e + cp_wet = theta_wet / rho_wet + + return cp_wet + + +def nmc_LGM50_thermal_conductivity_ORegan2022(T): + """ + Wet positive electrode thermal conductivity as a function of the temperature from + [1]. + + References + ---------- + .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma + Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion + cylindrical battery." Electrochimica Acta 425 (2022): 140700 + + Parameters + ---------- + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Thermal conductivity + """ + + lambda_wet = 2.063e-5 * T**2 - 0.01127 * T + 2.331 + + return lambda_wet + + +def nmc_LGM50_entropic_change_ORegan2022(sto, c_s_max): + """ + LG M50 NMC 811 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] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma + Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion + cylindrical battery." Electrochimica Acta 425 (2022): 140700 + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + + Returns + ------- + :class:`pybamm.Symbol` + Entropic change [V.K-1] + """ + a1 = 0.04006 + a2 = -0.06656 + b1 = 0.2828 + b2 = 0.8032 + c1 = 0.0009855 + c2 = 0.02179 + + dUdT = ( + a1 * pybamm.exp(-((sto - b1) ** 2) / c1) + + a2 * pybamm.exp(-((sto - b2) ** 2) / c2) + ) / 1000 + # fit in mV / K + + return dUdT + + +def separator_LGM50_heat_capacity_ORegan2022(T): + """ + Wet separator specific heat capacity as a function of the temperature from [1]. + + References + ---------- + .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma + Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion + cylindrical battery." Electrochimica Acta 425 (2022): 140700 + + Parameters + ---------- + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Specific heat capacity + """ + + # value for the dry porous separator (i.e. separator + air, and we neglect the air + # contribution to density) + cp_dry = 1.494e-3 * T**3 - 1.444 * T**2 + 475.5 * T - 5.13e4 + rho_dry = 946 + theta_dry = rho_dry * cp_dry + + # value for the bulk electrolyte + rho_e = 1280 + cp_e = 229 + eps_e = pybamm.Parameter("Separator porosity") + theta_e = rho_e * cp_e + + # value for the wet separator + theta_wet = theta_dry + theta_e * eps_e + rho_wet = rho_dry + rho_e * eps_e + cp_wet = theta_wet / rho_wet + + return cp_wet + + +def electrolyte_transference_number_EC_EMC_3_7_Landesfeind2019(c_e, T): + """ + Transference number of LiPF6 in EC:EMC (3:7 w:w) as a function of ion + concentration and temperature. The data comes from [1]. + + References + ---------- + .. [1] Landesfeind, J. and Gasteiger, H.A., 2019. Temperature and Concentration + Dependence of the Ionic Transport Properties of Lithium-Ion Battery Electrolytes. + Journal of The Electrochemical Society, 166(14), pp.A3079-A3097. + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Electrolyte transference number + """ + coeffs = np.array( + [ + -1.28e1, + -6.12, + 8.21e-2, + 9.04e-1, + 3.18e-2, + -1.27e-4, + 1.75e-2, + -3.12e-3, + -3.96e-5, + ] + ) + + return electrolyte_transference_number_base_Landesfeind2019(c_e, T, coeffs) + + +def electrolyte_TDF_EC_EMC_3_7_Landesfeind2019(c_e, T): + """ + Thermodynamic factor (TDF) of LiPF6 in EC:EMC (3:7 w:w) as a function of ion + concentration and temperature. The data comes from [1]. + + References + ---------- + .. [1] Landesfeind, J. and Gasteiger, H.A., 2019. Temperature and Concentration + Dependence of the Ionic Transport Properties of Lithium-Ion Battery Electrolytes. + Journal of The Electrochemical Society, 166(14), pp.A3079-A3097. + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Electrolyte thermodynamic factor + """ + coeffs = np.array( + [2.57e1, -4.51e1, -1.77e-1, 1.94, 2.95e-1, 3.08e-4, 2.59e-1, -9.46e-3, -4.54e-4] + ) + + return electrolyte_TDF_base_Landesfeind2019(c_e, T, coeffs) + + +def electrolyte_diffusivity_EC_EMC_3_7_Landesfeind2019(c_e, T): + """ + Diffusivity of LiPF6 in EC:EMC (3:7 w:w) as a function of ion concentration and + temperature. The data comes from [1]. + + References + ---------- + .. [1] Landesfeind, J. and Gasteiger, H.A., 2019. Temperature and Concentration + Dependence of the Ionic Transport Properties of Lithium-Ion Battery Electrolytes. + Journal of The Electrochemical Society, 166(14), pp.A3079-A3097. + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Electrolyte diffusivity + """ + coeffs = np.array([1.01e3, 1.01, -1.56e3, -4.87e2]) + + return electrolyte_diffusivity_base_Landesfeind2019(c_e, T, coeffs) + + +def electrolyte_conductivity_EC_EMC_3_7_Landesfeind2019(c_e, T): + """ + Conductivity of LiPF6 in EC:EMC (3:7 w:w) as a function of ion concentration and + temperature. The data comes from [1]. + + References + ---------- + .. [1] Landesfeind, J. and Gasteiger, H.A., 2019. Temperature and Concentration + Dependence of the Ionic Transport Properties of Lithium-Ion Battery Electrolytes. + Journal of The Electrochemical Society, 166(14), pp.A3079-A3097. + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Electrolyte conductivity + """ + coeffs = np.array([5.21e-1, 2.28e2, -1.06, 3.53e-1, -3.59e-3, 1.48e-3]) + + return electrolyte_conductivity_base_Landesfeind2019(c_e, T, coeffs) + + +# Call dict via a function to avoid errors when editing in place +def get_parameter_values(): + """ + Parameters for an LG M50 cell, from the paper + + > Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma Kendrick. + ["Thermal-electrochemical parameters of a high energy lithium-ion cylindrical + battery."](https://www.sciencedirect.com/science/article/pii/S0013468622008593) + Electrochimica Acta 425 (2022): 140700 + + Parameters for a LiPF6 in EC:EMC (3:7 w:w) electrolyte are from the paper + + > Johannes Landesfeind and Hubert A. Gasteiger, ["Temperature and Concentration + Dependence of the Ionic Transport Properties of Lithium-Ion Battery + Electrolytes."](https://iopscience.iop.org/article/10.1149/2.0571912jes) Journal of + the Electrochemical Society 166 (2019): A3079. + + and references therein. + """ + + return { + # cell + "Negative current collector thickness [m]": 1.2e-05, + "Negative electrode thickness [m]": 8.52e-05, + "Separator thickness [m]": 1.2e-05, + "Positive electrode thickness [m]": 7.56e-05, + "Positive current collector thickness [m]": 1.6e-05, + "Electrode height [m]": 0.065, + "Electrode width [m]": 1.58, + "Cell cooling surface area [m2]": 0.00531, + "Cell volume [m3]": 2.42e-05, + "Negative current collector conductivity [S.m-1]": 58411000.0, + "Positive current collector conductivity [S.m-1]": 36914000.0, + "Negative current collector density [kg.m-3]": 8933.0, + "Positive current collector density [kg.m-3]": 2702.0, + "Negative current collector specific heat capacity [J.kg-1.K-1]" + "": copper_heat_capacity_CRC, + "Positive current collector specific heat capacity [J.kg-1.K-1]" + "": aluminium_heat_capacity_CRC, + "Negative current collector thermal conductivity [W.m-1.K-1]" + "": copper_thermal_conductivity_CRC, + "Positive current collector thermal conductivity [W.m-1.K-1]": 237.0, + "Nominal cell capacity [A.h]": 5.0, + "Typical current [A]": 5.0, + "Current function [A]": 5.0, + # negative electrode + "Negative electrode conductivity [S.m-1]": 215.0, + "Maximum concentration in negative electrode [mol.m-3]": 29583.0, + "Negative electrode diffusivity [m2.s-1]" + "": graphite_LGM50_diffusivity_ORegan2022, + "Negative electrode OCP [V]": graphite_LGM50_ocp_Chen2020, + "Negative electrode porosity": 0.25, + "Negative electrode active material volume fraction": 0.75, + "Negative particle radius [m]": 5.86e-06, + "Negative electrode Bruggeman coefficient (electrolyte)": 1.5, + "Negative electrode Bruggeman coefficient (electrode)": 0.0, + "Negative electrode cation signed stoichiometry": -1.0, + "Negative electrode electrons in reaction": 1.0, + "Negative electrode charge transfer coefficient": 0.5, + "Negative electrode double-layer capacity [F.m-2]": 0.2, + "Negative electrode exchange-current density [A.m-2]" + "": graphite_LGM50_electrolyte_exchange_current_density_ORegan2022, + "Negative electrode density [kg.m-3]": 2060.0, + "Negative electrode specific heat capacity [J.kg-1.K-1]" + "": graphite_LGM50_heat_capacity_ORegan2022, + "Negative electrode thermal conductivity [W.m-1.K-1]" + "": graphite_LGM50_thermal_conductivity_ORegan2022, + "Negative electrode OCP entropic change [V.K-1]" + "": graphite_LGM50_entropic_change_ORegan2022, + # positive electrode + "Positive electrode conductivity [S.m-1]" + "": nmc_LGM50_electronic_conductivity_ORegan2022, + "Maximum concentration in positive electrode [mol.m-3]": 51765.0, + "Positive electrode diffusivity [m2.s-1]": nmc_LGM50_diffusivity_ORegan2022, + "Positive electrode OCP [V]": nmc_LGM50_ocp_Chen2020, + "Positive electrode porosity": 0.335, + "Positive electrode active material volume fraction": 0.665, + "Positive particle radius [m]": 5.22e-06, + "Positive electrode Bruggeman coefficient (electrolyte)": 1.5, + "Positive electrode Bruggeman coefficient (electrode)": 0.0, + "Positive electrode cation signed stoichiometry": -1.0, + "Positive electrode electrons in reaction": 1.0, + "Positive electrode charge transfer coefficient": 0.5, + "Positive electrode double-layer capacity [F.m-2]": 0.2, + "Positive electrode exchange-current density [A.m-2]" + "": nmc_LGM50_electrolyte_exchange_current_density_ORegan2022, + "Positive electrode density [kg.m-3]": 3699.0, + "Positive electrode specific heat capacity [J.kg-1.K-1]" + "": nmc_LGM50_heat_capacity_ORegan2022, + "Positive electrode thermal conductivity [W.m-1.K-1]" + "": nmc_LGM50_thermal_conductivity_ORegan2022, + "Positive electrode OCP entropic change [V.K-1]" + "": nmc_LGM50_entropic_change_ORegan2022, + # separator + "Separator porosity": 0.47, + "Separator Bruggeman coefficient (electrolyte)": 1.5, + "Separator Bruggeman coefficient (electrode)": 1.5, + "Separator density [kg.m-3]": 1548.0, + "Separator specific heat capacity [J.kg-1.K-1]" + "": separator_LGM50_heat_capacity_ORegan2022, + "Separator thermal conductivity [W.m-1.K-1]": 0.3344, + # electrolyte + "Typical electrolyte concentration [mol.m-3]": 1000.0, + "Initial concentration in electrolyte [mol.m-3]": 1000.0, + "Cation transference number" + "": electrolyte_transference_number_EC_EMC_3_7_Landesfeind2019, + "1 + dlnf/dlnc": electrolyte_TDF_EC_EMC_3_7_Landesfeind2019, + "Electrolyte diffusivity [m2.s-1]" + "": electrolyte_diffusivity_EC_EMC_3_7_Landesfeind2019, + "Electrolyte conductivity [S.m-1]" + "": electrolyte_conductivity_EC_EMC_3_7_Landesfeind2019, + # experiment + "Reference temperature [K]": 298.15, + "Total heat transfer coefficient [W.m-2.K-1]": 10.0, + "Ambient temperature [K]": 298.15, + "Number of electrodes connected in parallel to make a cell": 1.0, + "Number of cells connected in series to make a battery": 1.0, + "Lower voltage cut-off [V]": 2.5, + "Upper voltage cut-off [V]": 4.4, + "Initial concentration in negative electrode [mol.m-3]": 28866.0, + "Initial concentration in positive electrode [mol.m-3]": 13975.0, + "Initial temperature [K]": 298.15, + # citations + "citations": ["ORegan2022", "Chen2020"], + } diff --git a/pybamm/input/parameters/lithium_ion/Prada2013.py b/pybamm/input/parameters/lithium_ion/Prada2013.py new file mode 100644 index 0000000000..ab14e2a66f --- /dev/null +++ b/pybamm/input/parameters/lithium_ion/Prada2013.py @@ -0,0 +1,334 @@ +import pybamm + + +def graphite_LGM50_ocp_Chen2020(sto): + """ + LG M50 Graphite open-circuit potential as a function of stochiometry, fit taken + from [1]. + + References + ---------- + .. [1] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + + Returns + ------- + :class:`pybamm.Symbol` + Open circuit potential + """ + + u_eq = ( + 1.9793 * pybamm.exp(-39.3631 * sto) + + 0.2482 + - 0.0909 * pybamm.tanh(29.8538 * (sto - 0.1234)) + - 0.04478 * pybamm.tanh(14.9159 * (sto - 0.2769)) + - 0.0205 * pybamm.tanh(30.4444 * (sto - 0.6103)) + ) + + return u_eq + + +def graphite_LGM50_electrolyte_exchange_current_density_Chen2020( + c_e, c_s_surf, c_s_max, T +): + """ + Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in + EC:DMC. + + References + ---------- + .. [1] 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." Journal of the + Electrochemical Society 167 (2020): 080534. + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + m_ref = 6.48e-7 # (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 35000 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def LFP_ocp_ashfar2017(sto): + """ + Open-circuit potential for LFP + + References + ---------- + .. [1] Afshar, S., Morris, K., & Khajepour, A. (2017). Efficient electrochemical + model for lithium-ion cells. arXiv preprint arXiv:1709.03970. + + Parameters + ---------- + sto : :class:`pybamm.Symbol` + Stochiometry of material (li-fraction) + + """ + + c1 = -150 * sto + c2 = -30 * (1 - sto) + k = 3.4077 - 0.020269 * sto + 0.5 * pybamm.exp(c1) - 0.9 * pybamm.exp(c2) + + return k + + +def LFP_electrolyte_exchange_current_density_kashkooli2017(c_e, c_s_surf, c_s_max, T): + """ + Exchange-current density for Butler-Volmer reactions between LFP and electrolyte + + References + ---------- + .. [1] Kashkooli, A. G., Amirfazli, A., Farhad, S., Lee, D. U., Felicelli, S., Park, + H. W., ... & Chen, Z. (2017). Representative volume element model of lithium-ion + battery electrodes based on X-ray nano-tomography. Journal of Applied + Electrochemistry, 47(3), 281-293. + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + + m_ref = 6 * 10 ** (-7) # (A/m2)(m3/mol)**1.5 - includes ref concentrations + E_r = 39570 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def electrolyte_diffusivity_Nyman2008(c_e, T): + """ + 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:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_c_e = 8.794e-11 * (c_e / 1000) ** 2 - 3.972e-10 * (c_e / 1000) + 4.862e-10 + + # Nyman et al. (2008) does not provide temperature dependence + + return D_c_e + + +def electrolyte_conductivity_Nyman2008(c_e, T): + """ + 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:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + sigma_e = ( + 0.1297 * (c_e / 1000) ** 3 - 2.51 * (c_e / 1000) ** 1.5 + 3.329 * (c_e / 1000) + ) + + # Nyman et al. (2008) does not provide temperature dependence + + return sigma_e + + +# Call dict via a function to avoid errors when editing in place +def get_parameter_values(): + """ + Parameters for an A123 LFP cell, from the paper + + > Lain, M. J., Brandon, J., & Kendrick, E. (2019). Design Strategies for High Power + vs. High Energy Lithium Ion Cells. + [Batteries](https://doi.org/10.3390/batteries5040064), 5(4), 64. + # LG M50 Graphite negative electrode parameters + + Parameters for negative electrode (graphite) and separator are 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."](https://iopscience.iop.org/article/10.1149/1945-7111/ab9050) Journal of + the Electrochemical Society 167 (2020): 080534 + + and references therein. + + Parameters for positive electrode (LFP) are from the paper + + > Prada, E., Di Domenico, D., Creff, Y., Bernard, J., Sauvant-Moynot, V., & Huet, F. + (2013). A simplified electrochemical and thermal aging model of LiFePO4-graphite + Li-ion batteries: power and capacity fade simulations. [Journal of The + Electrochemical Society](https://doi.org/10.1149/2.053304jes), 160(4), A616. + + and references therein. The functions used for OCP and exchange-current density are + from separate references (documented within the functions), to provide better fit to + data + + Parameters for a LiPF6 electrolyte are 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. + """ + + return { + # cell + "Negative current collector thickness [m]": 1e-05, + "Negative electrode thickness [m]": 3.6e-05, + "Separator thickness [m]": 1.8e-05, + "Positive electrode thickness [m]": 8.1e-05, + "Positive current collector thickness [m]": 1.9e-05, + "Electrode height [m]": 0.0649, + "Electrode width [m]": 1.78, + "Negative tab width [m]": 0.04, + "Negative tab centre y-coordinate [m]": 0.06, + "Negative tab centre z-coordinate [m]": 0.137, + "Positive tab width [m]": 0.04, + "Positive tab centre y-coordinate [m]": 0.147, + "Positive tab centre z-coordinate [m]": 0.137, + "Negative current collector conductivity [S.m-1]": 58411000.0, + "Positive current collector conductivity [S.m-1]": 36914000.0, + "Negative current collector density [kg.m-3]": 8960.0, + "Positive current collector density [kg.m-3]": 2700.0, + "Negative current collector specific heat capacity [J.kg-1.K-1]": 385.0, + "Positive current collector specific heat capacity [J.kg-1.K-1]": 897.0, + "Negative current collector thermal conductivity [W.m-1.K-1]": 401.0, + "Positive current collector thermal conductivity [W.m-1.K-1]": 237.0, + "Nominal cell capacity [A.h]": 1.1, + "Current function [A]": 1.1, + "Typical current [A]": 1.1, + # negative electrode + "Negative electrode conductivity [S.m-1]": 215.0, + "Maximum concentration in negative electrode [mol.m-3]": 33133.0, + "Negative electrode diffusivity [m2.s-1]": 3.3e-14, + "Negative electrode OCP [V]": graphite_LGM50_ocp_Chen2020, + "Negative electrode porosity": 0.25, + "Negative electrode active material volume fraction": 0.75, + "Negative particle radius [m]": 5.86e-06, + "Negative electrode Bruggeman coefficient (electrolyte)": 1.5, + "Negative electrode Bruggeman coefficient (electrode)": 1.5, + "Negative electrode cation signed stoichiometry": -1.0, + "Negative electrode electrons in reaction": 1.0, + "Negative electrode charge transfer coefficient": 0.5, + "Negative electrode double-layer capacity [F.m-2]": 0.2, + "Negative electrode exchange-current density [A.m-2]" + "": graphite_LGM50_electrolyte_exchange_current_density_Chen2020, + "Negative electrode density [kg.m-3]": 1657.0, + "Negative electrode specific heat capacity [J.kg-1.K-1]": 700.0, + "Negative electrode thermal conductivity [W.m-1.K-1]": 1.7, + "Negative electrode OCP entropic change [V.K-1]": 0.0, + # positive electrode + "Positive electrode conductivity [S.m-1]": 0.33795074, + "Maximum concentration in positive electrode [mol.m-3]": 22806.0, + "Positive electrode diffusivity [m2.s-1]": 5.9e-18, + "Positive electrode OCP [V]": LFP_ocp_ashfar2017, + "Positive electrode porosity": 0.12728395, + "Positive electrode active material volume fraction": 0.28485556, + "Positive particle radius [m]": 1e-08, + "Positive electrode Bruggeman coefficient (electrode)": 1.5, + "Positive electrode Bruggeman coefficient (electrolyte)": 1.5, + "Positive electrode cation signed stoichiometry": -1.0, + "Positive electrode electrons in reaction": 1.0, + "Positive electrode charge transfer coefficient": 0.5, + "Positive electrode double-layer capacity [F.m-2]": 0.2, + "Positive electrode density [kg.m-3]": 2341.17, + "Positive electrode specific heat capacity [J.kg-1.K-1]": 1100.0, + "Positive electrode thermal conductivity [W.m-1.K-1]": 2.1, + "Positive electrode OCP entropic change [V.K-1]": 0.0, + "Positive electrode exchange-current density [A.m-2]" + "": LFP_electrolyte_exchange_current_density_kashkooli2017, + # separator + "Separator porosity": 0.47, + "Separator Bruggeman coefficient (electrolyte)": 1.5, + "Separator density [kg.m-3]": 397.0, + "Separator specific heat capacity [J.kg-1.K-1]": 700.0, + "Separator thermal conductivity [W.m-1.K-1]": 0.16, + # electrolyte + "Typical electrolyte concentration [mol.m-3]": 1000.0, + "Initial concentration in electrolyte [mol.m-3]": 1000.0, + "Cation transference number": 0.2594, + "1 + dlnf/dlnc": 1.0, + "Electrolyte diffusivity [m2.s-1]": electrolyte_diffusivity_Nyman2008, + "Electrolyte conductivity [S.m-1]": electrolyte_conductivity_Nyman2008, + # experiment + "Reference temperature [K]": 298.15, + "Heat transfer coefficient [W.m-2.K-1]": 10.0, + "Ambient temperature [K]": 298.15, + "Number of electrodes connected in parallel to make a cell": 1.0, + "Number of cells connected in series to make a battery": 1.0, + "Lower voltage cut-off [V]": 2.0, + "Upper voltage cut-off [V]": 4.4, + "Initial concentration in negative electrode [mol.m-3]": 28831.45783, + "Initial concentration in positive electrode [mol.m-3]": 35.3766672, + "Initial temperature [K]": 298.15, + # citations + "citations": ["Chen2020", "Lain2019", "Prada2013", "Nyman2008"], + } diff --git a/pybamm/input/parameters/lithium_ion/Ramadass2004.py b/pybamm/input/parameters/lithium_ion/Ramadass2004.py new file mode 100644 index 0000000000..b7f58a1fe0 --- /dev/null +++ b/pybamm/input/parameters/lithium_ion/Ramadass2004.py @@ -0,0 +1,517 @@ +import pybamm + + +def graphite_mcmb2528_diffusivity_Dualfoil1998(sto, T): + """ + Graphite MCMB 2528 diffusivity as a function of stochiometry, in this case the + diffusivity is taken to be a constant. The value is taken from Dualfoil [1]. + + References + ---------- + .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_ref = 3.9 * 10 ** (-14) + E_D_s = 42770 + arrhenius = pybamm.exp(E_D_s / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_ref * arrhenius + + +def graphite_ocp_Ramadass2004(sto): + """ + Graphite Open Circuit Potential (OCP) as a function of the + stochiometry (theta?). The fit is taken from Ramadass 2004. + + References + ---------- + .. [1] P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko + N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." + (2004) + """ + + u_eq = ( + 0.7222 + + 0.1387 * sto + + 0.029 * (sto**0.5) + - 0.0172 / sto + + 0.0019 / (sto**1.5) + + 0.2808 * pybamm.exp(0.9 - 15 * sto) + - 0.7984 * pybamm.exp(0.4465 * sto - 0.4108) + ) + + return u_eq + + +def graphite_electrolyte_exchange_current_density_Ramadass2004( + c_e, c_s_surf, c_s_max, T +): + """ + Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in + EC:DMC. + + References + ---------- + .. [1] P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko + N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." + (2004) + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + m_ref = 4.854 * 10 ** (-6) # (A/m2)(m3/mol)**1.5 + E_r = 37480 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def graphite_entropic_change_Moura2016(sto, c_s_max): + """ + Graphite entropic change in open circuit potential (OCP) at a temperature of + 298.15K as a function of the stochiometry taken from Scott Moura's FastDFN code + [1]. + + References + ---------- + .. [1] https://github.com/scott-moura/fastDFN + + Parameters + ---------- + sto : :class:`pybamm.Symbol` + Stochiometry of material (li-fraction) + + """ + du_dT = ( + -1.5 * (120.0 / c_s_max) * pybamm.exp(-120 * sto) + + (0.0351 / (0.083 * c_s_max)) * ((pybamm.cosh((sto - 0.286) / 0.083)) ** (-2)) + - (0.0045 / (0.119 * c_s_max)) * ((pybamm.cosh((sto - 0.849) / 0.119)) ** (-2)) + - (0.035 / (0.05 * c_s_max)) * ((pybamm.cosh((sto - 0.9233) / 0.05)) ** (-2)) + - (0.0147 / (0.034 * c_s_max)) * ((pybamm.cosh((sto - 0.5) / 0.034)) ** (-2)) + - (0.102 / (0.142 * c_s_max)) * ((pybamm.cosh((sto - 0.194) / 0.142)) ** (-2)) + - (0.022 / (0.0164 * c_s_max)) * ((pybamm.cosh((sto - 0.9) / 0.0164)) ** (-2)) + - (0.011 / (0.0226 * c_s_max)) * ((pybamm.cosh((sto - 0.124) / 0.0226)) ** (-2)) + + (0.0155 / (0.029 * c_s_max)) * ((pybamm.cosh((sto - 0.105) / 0.029)) ** (-2)) + ) + + return du_dT + + +def lico2_diffusivity_Ramadass2004(sto, T): + """ + LiCo2 diffusivity as a function of stochiometry, in this case the + diffusivity is taken to be a constant. The value is taken from Ramadass 2004. + + References + ---------- + .. [1] P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko + N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." + (2004) + + Parameters + ---------- + sto: :class:`pybamm.Symbol` + Electrode stochiometry + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + D_ref = 1 * 10 ** (-14) + E_D_s = 18550 + arrhenius = pybamm.exp(E_D_s / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_ref * arrhenius + + +def lico2_ocp_Ramadass2004(sto): + """ + Lithium Cobalt Oxide (LiCO2) Open Circuit Potential (OCP) as a a function of the + stochiometry. The fit is taken from Ramadass 2004. Stretch is considered the + overhang area negative electrode / area positive electrode, in Ramadass 2002. + + References + ---------- + .. [1] P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko + N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." + (2004) + + Parameters + ---------- + sto : :class:`pybamm.Symbol` + Stochiometry of material (li-fraction) + + """ + + stretch = 1.13 + sto = stretch * sto + + u_eq = ( + -4.656 + + 88.669 * (sto**2) + - 401.119 * (sto**4) + + 342.909 * (sto**6) + - 462.471 * (sto**8) + + 433.434 * (sto**10) + ) / ( + -1 + + 18.933 * (sto**2) + - 79.532 * (sto**4) + + 37.311 * (sto**6) + - 73.083 * (sto**8) + + 95.96 * (sto**10) + ) + + return u_eq + + +def lico2_electrolyte_exchange_current_density_Ramadass2004(c_e, c_s_surf, c_s_max, T): + """ + Exchange-current density for Butler-Volmer reactions between lico2 and LiPF6 in + EC:DMC. + + References + ---------- + .. [1] P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko + N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." + (2004) + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + m_ref = 2.252 * 10 ** (-6) # (A/m2)(m3/mol)**1.5 + E_r = 39570 + arrhenius = pybamm.exp(E_r / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return ( + m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + ) + + +def lico2_entropic_change_Moura2016(sto, c_s_max): + """ + Lithium Cobalt Oxide (LiCO2) entropic change in open circuit potential (OCP) at + a temperature of 298.15K as a function of the stochiometry. The fit is taken + from Scott Moura's FastDFN code [1]. + + References + ---------- + .. [1] https://github.com/scott-moura/fastDFN + + Parameters + ---------- + sto : :class:`pybamm.Symbol` + Stochiometry of material (li-fraction) + """ + # Since the equation for LiCo2 from this ref. has the stretch factor, + # should this too? If not, the "bumps" in the OCV don't line up. + stretch = 1.062 + sto = stretch * sto + + du_dT = ( + 0.07645 + * (-54.4806 / c_s_max) + * ((1.0 / pybamm.cosh(30.834 - 54.4806 * sto)) ** 2) + + 2.1581 * (-50.294 / c_s_max) * ((pybamm.cosh(52.294 - 50.294 * sto)) ** (-2)) + + 0.14169 + * (19.854 / c_s_max) + * ((pybamm.cosh(11.0923 - 19.8543 * sto)) ** (-2)) + - 0.2051 * (5.4888 / c_s_max) * ((pybamm.cosh(1.4684 - 5.4888 * sto)) ** (-2)) + - (0.2531 / 0.1316 / c_s_max) + * ((pybamm.cosh((-sto + 0.56478) / 0.1316)) ** (-2)) + - (0.02167 / 0.006 / c_s_max) * ((pybamm.cosh((sto - 0.525) / 0.006)) ** (-2)) + ) + + return du_dT + + +def electrolyte_diffusivity_Ramadass2004(c_e, T): + """ + Diffusivity of LiPF6 in EC:DMC as a function of ion concentration. + + References + ---------- + .. [1] P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko + N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." + (2004) + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + + D_c_e = 7.5e-10 + E_D_e = 37040 + arrhenius = pybamm.exp(E_D_e / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return D_c_e * arrhenius + + +def electrolyte_conductivity_Ramadass2004(c_e, T): + """ + Conductivity of LiPF6 in EC:DMC as a function of ion concentration. + Concentration should be in dm3 in the function. + + References + ---------- + .. [1] P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko + N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." + (2004) + + Parameters + ---------- + c_e: :class:`pybamm.Symbol` + Dimensional electrolyte concentration + T: :class:`pybamm.Symbol` + Dimensional temperature + + Returns + ------- + :class:`pybamm.Symbol` + Solid diffusivity + """ + # mol.m-3 to mol.dm-3, original function is likely in mS/cm + # The function is not in Arora 2000 as reported in Ramadass 2004 + + cm = 1e-6 * c_e # here it should be only 1e-3 + + sigma_e = ( + 4.1253 * (10 ** (-4)) + + 5.007 * cm + - 4.7212 * (10**3) * (cm**2) + + 1.5094 * (10**6) * (cm**3) + - 1.6018 * (10**8) * (cm**4) + ) * 1e3 # and here there should not be an exponent + + E_k_e = 34700 + arrhenius = pybamm.exp(E_k_e / pybamm.constants.R * (1 / 298.15 - 1 / T)) + + return sigma_e * arrhenius + + +# Call dict via a function to avoid errors when editing in place +def get_parameter_values(): + """ + Ramadass2004 parameter set. This is a bit of a Frankenstein parameter set and + should be used with caution. + + Parameters for a graphite negative electrode, Lithium Cobalt Oxide positive + electrode, and LiPF6 electrolyte are from the papers + + > Marquis, S. G., Sulzer, V., Timms, R., Please, C. P., & Chapman, S. J. (2019). “An + asymptotic derivation of a single particle model with electrolyte”. [Journal of The + Electrochemical Society](https://doi.org/10.1149/2.0341915jes), 166(15), + A3693-A3706. + > P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko N. + Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." + (2004) + > P. Ramadass, Bala Haran, Ralph White, and Branko N. Popov. "Capacity fade of Sony + 18650 cells cycled at elevated temperatures part I." (2002) + + and references therein. + + Parameters for the separator are 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 thermal material properties are for a 5 Ah power pouch cell by Kokam. The data + are extracted from + + > Zhao, Y., et al. "Modeling the effects of thermal gradients induced by tab and + surface cooling on lithium ion cell performance."" Journal of The Electrochemical + Society, 165.13 (2018): A3169-A3178. + # Lithium Cobalt Oxide positive electrode parameters + + Parameters for SEI growth are from the papers + + > Ramadass, P., Haran, B., Gomadam, P. M., White, R., & Popov, B. N. (2004). + Development of first principles capacity fade model for Li-ion cells. Journal of the + Electrochemical Society, 151(2), A196-A203. + > Safari, M., Morcrette, M., Teyssot, A., & Delacour, C. (2009). Multimodal Physics- + Based Aging Model for Life Prediction of Li-Ion Batteries. Journal of The + Electrochemical Society, 156(3), + + Note: Ramadass 2004 has mistakes in units and values of SEI parameters, corrected + by Safari 2009. + """ + + return { + # sei + "Ratio of lithium moles to SEI moles": 2.0, + "Inner SEI reaction proportion": 0.5, + "Inner SEI partial molar volume [m3.mol-1]": 9.585e-05, + "Outer SEI partial molar volume [m3.mol-1]": 9.585e-05, + "SEI reaction exchange current density [A.m-2]": 1.5e-06, + "SEI resistivity [Ohm.m]": 200000.0, + "Outer SEI solvent diffusivity [m2.s-1]": 2.5000000000000002e-22, + "Bulk solvent concentration [mol.m-3]": 2636.0, + "Inner SEI open-circuit potential [V]": 0.1, + "Outer SEI open-circuit potential [V]": 0.8, + "Inner SEI electron conductivity [S.m-1]": 8.95e-14, + "Inner SEI lithium interstitial diffusivity [m2.s-1]": 1e-20, + "Lithium interstitial reference concentration [mol.m-3]": 15.0, + "Initial inner SEI thickness [m]": 2.5e-09, + "Initial outer SEI thickness [m]": 2.5e-09, + "EC initial concentration in electrolyte [mol.m-3]": 4541.0, + "EC diffusivity [m2.s-1]": 2e-18, + "SEI kinetic rate constant [m.s-1]": 1e-12, + "SEI open-circuit potential [V]": 0.0, + "SEI growth activation energy [J.mol-1]": 0.0, + # cell + "Negative current collector thickness [m]": 1.7e-05, + "Negative electrode thickness [m]": 8.8e-05, + "Separator thickness [m]": 2.5e-05, + "Positive electrode thickness [m]": 8e-05, + "Positive current collector thickness [m]": 2.3e-05, + "Electrode height [m]": 0.057, + "Electrode width [m]": 1.060692, + "Negative tab width [m]": 0.04, + "Negative tab centre y-coordinate [m]": 0.06, + "Negative tab centre z-coordinate [m]": 0.137, + "Positive tab width [m]": 0.04, + "Positive tab centre y-coordinate [m]": 0.147, + "Positive tab centre z-coordinate [m]": 0.137, + "Negative current collector conductivity [S.m-1]": 59600000.0, + "Positive current collector conductivity [S.m-1]": 35500000.0, + "Negative current collector density [kg.m-3]": 8954.0, + "Positive current collector density [kg.m-3]": 2707.0, + "Negative current collector specific heat capacity [J.kg-1.K-1]": 385.0, + "Positive current collector specific heat capacity [J.kg-1.K-1]": 897.0, + "Negative current collector thermal conductivity [W.m-1.K-1]": 401.0, + "Positive current collector thermal conductivity [W.m-1.K-1]": 237.0, + "Nominal cell capacity [A.h]": 1.0, + "Typical current [A]": 1.0, + "Current function [A]": 1.0, + # negative electrode + "Negative electrode conductivity [S.m-1]": 100.0, + "Maximum concentration in negative electrode [mol.m-3]": 30555.0, + "Negative electrode diffusivity [m2.s-1]" + "": graphite_mcmb2528_diffusivity_Dualfoil1998, + "Negative electrode OCP [V]": graphite_ocp_Ramadass2004, + "Negative electrode porosity": 0.485, + "Negative electrode active material volume fraction": 0.49, + "Negative particle radius [m]": 2e-06, + "Negative electrode Bruggeman coefficient (electrolyte)": 4.0, + "Negative electrode Bruggeman coefficient (electrode)": 4.0, + "Negative electrode cation signed stoichiometry": -1.0, + "Negative electrode electrons in reaction": 1.0, + "Negative electrode charge transfer coefficient": 0.5, + "Negative electrode double-layer capacity [F.m-2]": 0.2, + "Negative electrode exchange-current density [A.m-2]" + "": graphite_electrolyte_exchange_current_density_Ramadass2004, + "Negative electrode density [kg.m-3]": 1657.0, + "Negative electrode specific heat capacity [J.kg-1.K-1]": 700.0, + "Negative electrode thermal conductivity [W.m-1.K-1]": 1.7, + "Negative electrode OCP entropic change [V.K-1]" + "": graphite_entropic_change_Moura2016, + # positive electrode + "Positive electrode conductivity [S.m-1]": 100.0, + "Maximum concentration in positive electrode [mol.m-3]": 51555.0, + "Positive electrode diffusivity [m2.s-1]": lico2_diffusivity_Ramadass2004, + "Positive electrode OCP [V]": lico2_ocp_Ramadass2004, + "Positive electrode porosity": 0.385, + "Positive electrode active material volume fraction": 0.59, + "Positive particle radius [m]": 2e-06, + "Positive electrode Bruggeman coefficient (electrolyte)": 4.0, + "Positive electrode Bruggeman coefficient (electrode)": 4.0, + "Positive electrode cation signed stoichiometry": -1.0, + "Positive electrode electrons in reaction": 1.0, + "Positive electrode charge transfer coefficient": 0.5, + "Positive electrode double-layer capacity [F.m-2]": 0.2, + "Positive electrode exchange-current density [A.m-2]" + "": lico2_electrolyte_exchange_current_density_Ramadass2004, + "Positive electrode density [kg.m-3]": 3262.0, + "Positive electrode specific heat capacity [J.kg-1.K-1]": 700.0, + "Positive electrode thermal conductivity [W.m-1.K-1]": 2.1, + "Positive electrode OCP entropic change [V.K-1]" + "": lico2_entropic_change_Moura2016, + # separator + "Separator porosity": 0.508, + "Separator Bruggeman coefficient (electrolyte)": 1.9804586773134945, + "Separator density [kg.m-3]": 1017.0, + "Separator specific heat capacity [J.kg-1.K-1]": 1978.0, + "Separator thermal conductivity [W.m-1.K-1]": 0.34, + # electrolyte + "Typical electrolyte concentration [mol.m-3]": 1000.0, + "Initial concentration in electrolyte [mol.m-3]": 1000.0, + "Cation transference number": 0.363, + "1 + dlnf/dlnc": 1.0, + "Electrolyte diffusivity [m2.s-1]": electrolyte_diffusivity_Ramadass2004, + "Electrolyte conductivity [S.m-1]": electrolyte_conductivity_Ramadass2004, + # experiment + "Reference temperature [K]": 298.15, + "Ambient temperature [K]": 298.15, + "Negative current collector surface heat transfer coefficient [W.m-2.K-1]" + "": 0.0, + "Positive current collector surface heat transfer coefficient [W.m-2.K-1]" + "": 0.0, + "Negative tab heat transfer coefficient [W.m-2.K-1]": 10.0, + "Positive tab heat transfer coefficient [W.m-2.K-1]": 10.0, + "Edge heat transfer coefficient [W.m-2.K-1]": 0.3, + "Number of electrodes connected in parallel to make a cell": 1.0, + "Number of cells connected in series to make a battery": 1.0, + "Lower voltage cut-off [V]": 2.8, + "Upper voltage cut-off [V]": 4.2, + "Initial concentration in negative electrode [mol.m-3]": 22610.7, + "Initial concentration in positive electrode [mol.m-3]": 25777.5, + "Initial temperature [K]": 298.15, + # citations + "citations": ["Ramadass2004"], + } diff --git a/pybamm/input/parameters/lithium_ion/Xu2019.py b/pybamm/input/parameters/lithium_ion/Xu2019.py new file mode 100644 index 0000000000..39c3039cf9 --- /dev/null +++ b/pybamm/input/parameters/lithium_ion/Xu2019.py @@ -0,0 +1,320 @@ +import pybamm + + +def li_metal_electrolyte_exchange_current_density_Xu2019(c_e, c_Li, T): + """ + Exchange-current density for Butler-Volmer reactions between li metal and LiPF6 in + EC:DMC. + + References + ---------- + .. [1] Xu, Shanshan, Chen, Kuan-Hung, Dasgupta, Neil P., Siegel, Jason B. and + Stefanopoulou, Anna G. "Evolution of Dead Lithium Growth in Lithium Metal Batteries: + Experimentally Validated Model of the Apparent Capacity Loss." Journal of The + Electrochemical Society 166.14 (2019): A3456-A3463. + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_Li : :class:`pybamm.Symbol` + Pure metal lithium concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + m_ref = 3.5e-8 * pybamm.constants.F # (A/m2)(mol/m3) - includes ref concentrations + + return m_ref * c_Li**0.7 * c_e**0.3 + + +def nmc_ocp_Xu2019(sto): + """ + Nickel Managanese Cobalt Oxide (NMC) Open Circuit Potential (OCP) as a + function of the stochiometry, from [1]. + + References + ---------- + .. [1] Xu, Shanshan, Chen, Kuan-Hung, Dasgupta, Neil P., Siegel, Jason B. and + Stefanopoulou, Anna G. "Evolution of Dead Lithium Growth in Lithium Metal Batteries: + Experimentally Validated Model of the Apparent Capacity Loss." Journal of The + Electrochemical Society 166.14 (2019): A3456-A3463. + + Parameters + ---------- + sto : :class:`pybamm.Symbol` + Stochiometry of material (li-fraction) + + """ + + # Values from Mohtat2020, might be more accurate + u_eq = ( + 4.3452 + - 1.6518 * sto + + 1.6225 * (sto**2) + - 2.0843 * (sto**3) + + 3.5146 * (sto**4) + - 2.2166 * (sto**5) + - 0.5623e-4 * pybamm.exp(109.451 * sto - 100.006) + ) + + # # only valid in range ~(0.25,0.95) + # u_eq = ( + # 5744.862289 * sto ** 9 + # - 35520.41099 * sto ** 8 + # + 95714.29862 * sto ** 7 + # - 147364.5514 * sto ** 6 + # + 142718.3782 * sto ** 5 + # - 90095.81521 * sto ** 4 + # + 37061.41195 * sto ** 3 + # - 9578.599274 * sto ** 2 + # + 1409.309503 * sto + # - 85.31153081 + # - 0.0003 * pybamm.exp(7.657 * sto ** 115) + # ) + + return u_eq + + +def nmc_electrolyte_exchange_current_density_Xu2019(c_e, c_s_surf, c_s_max, T): + """ + Exchange-current density for Butler-Volmer reactions between NMC and LiPF6 in + EC:DMC. + + References + ---------- + .. [1] Xu, Shanshan, Chen, Kuan-Hung, Dasgupta, Neil P., Siegel, Jason B. and + Stefanopoulou, Anna G. "Evolution of Dead Lithium Growth in Lithium Metal Batteries: + Experimentally Validated Model of the Apparent Capacity Loss." Journal of The + Electrochemical Society 166.14 (2019): A3456-A3463. + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Electrolyte concentration [mol.m-3] + c_s_surf : :class:`pybamm.Symbol` + Particle concentration [mol.m-3] + c_s_max : :class:`pybamm.Symbol` + Maximum particle concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Exchange-current density [A.m-2] + """ + # assuming implicit correction of incorrect units from the paper + m_ref = ( + 5.76e-11 * pybamm.constants.F + ) # (A/m2)(m3/mol)**1.5 - includes ref concentrations + + return m_ref * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 + + +def electrolyte_diffusivity_Valoen2005(c_e, T): + """ + Diffusivity of LiPF6 in EC:DMC as a function of ion concentration, from [1] (eqn 14) + + References + ---------- + .. [1] Valøen, Lars Ole, and Jan N. Reimers. "Transport properties of LiPF6-based + Li-ion battery electrolytes." Journal of The Electrochemical Society 152.5 (2005): + A882-A891. + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Dimensional electrolyte concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Dimensional temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Dimensional electrolyte diffusivity [m2.s-1] + """ + # mol/m3 to molar + c_e = c_e / 1000 + + T_g = 229 + 5 * c_e + D_0 = -4.43 - 54 / (T - T_g) + D_1 = -0.22 + + # cm2/s to m2/s + # note, in the Valoen paper, ln means log10, so its inverse is 10^x + return (10 ** (D_0 + D_1 * c_e)) * 1e-4 + + +def electrolyte_conductivity_Valoen2005(c_e, T): + """ + Conductivity of LiPF6 in EC:DMC as a function of ion concentration, from [1] + (eqn 17) + + References + ---------- + .. [1] Valøen, Lars Ole, and Jan N. Reimers. "Transport properties of LiPF6-based + Li-ion battery electrolytes." Journal of The Electrochemical Society 152.5 (2005): + A882-A891. + + Parameters + ---------- + c_e : :class:`pybamm.Symbol` + Dimensional electrolyte concentration [mol.m-3] + T : :class:`pybamm.Symbol` + Dimensional temperature [K] + + Returns + ------- + :class:`pybamm.Symbol` + Dimensional electrolyte conductivity [S.m-1] + """ + # mol/m3 to molar + c_e = c_e / 1000 + # mS/cm to S/m + return (1e-3 / 1e-2) * ( + c_e + * ( + (-10.5 + 0.0740 * T - 6.96e-5 * T**2) + + c_e * (0.668 - 0.0178 * T + 2.80e-5 * T**2) + + c_e**2 * (0.494 - 8.86e-4 * T) + ) + ** 2 + ) + + +# Call dict via a function to avoid errors when editing in place +def get_parameter_values(): + """ + Parameters for a Kokam SLPB78205130H half-cell, from the paper. + Anode is graphite MCMB 2528. + Separator is Celgard 2325. + Cathode is lithium Cobalt Oxide. + Electrolyte is LiPF6. + + > Xu, Shanshan, Chen, Kuan-Hung, Dasgupta, Neil P., Siegel, Jason B. and + Stefanopoulou, Anna G. "Evolution of Dead Lithium Growth in Lithium Metal Batteries: + Experimentally Validated Model of the Apparent Capacity Loss." Journal of The + Electrochemical Society 166.14 (2019): A3456-A3463. + + and references therein. + + Parameters for a LiPF6 electrolyte are from the paper + + > Valøen, Lars Ole, and Jan N. Reimers. "Transport properties of LiPF6-based Li-ion + battery electrolytes." Journal of The Electrochemical Society 152.5 (2005): + A882-A891. [doi: 10.1149/1.1872737](http://dx.doi.org/10.1149/1.1872737) + # 1C discharge from full + + SEI parameters are example parameters for SEI growth from the papers: + + > Ramadass, P., Haran, B., Gomadam, P. M., White, R., & Popov, B. N. (2004). + Development of first principles capacity fade model for Li-ion cells. Journal of the + Electrochemical Society, 151(2), A196-A203. + > Ploehn, H. J., Ramadass, P., & White, R. E. (2004). Solvent diffusion model for + aging of lithium-ion battery cells. Journal of The Electrochemical Society, 151(3), + A456-A462. + > Single, F., Latz, A., & Horstmann, B. (2018). Identifying the mechanism of + continued growth of the solid–electrolyte interphase. ChemSusChem, 11(12), + 1950-1955. + > Safari, M., Morcrette, M., Teyssot, A., & Delacour, C. (2009). Multimodal Physics- + Based Aging Model for Life Prediction of Li-Ion Batteries. Journal of The + Electrochemical Society, 156(3), + > Yang, X., Leng, Y., Zhang, G., Ge, S., Wang, C. (2017). Modeling of lithium + plating induced aging of lithium-ion batteries: Transition from linear to nonlinear + aging. Journal of Power Sources, 360, 28-40. + + Note: this parameter set does not claim to be representative of the true parameter + values. Instead these are parameter values that were used to fit SEI models to + observed experimental data in the referenced papers. + """ + + return { + # sei + "Ratio of lithium moles to SEI moles": 2.0, + "Inner SEI reaction proportion": 0.5, + "Inner SEI partial molar volume [m3.mol-1]": 9.585e-05, + "Outer SEI partial molar volume [m3.mol-1]": 9.585e-05, + "SEI reaction exchange current density [A.m-2]": 1.5e-07, + "SEI resistivity [Ohm.m]": 200000.0, + "Outer SEI solvent diffusivity [m2.s-1]": 2.5000000000000002e-22, + "Bulk solvent concentration [mol.m-3]": 2636.0, + "Inner SEI open-circuit potential [V]": 0.1, + "Outer SEI open-circuit potential [V]": 0.8, + "Inner SEI electron conductivity [S.m-1]": 8.95e-14, + "Inner SEI lithium interstitial diffusivity [m2.s-1]": 1e-20, + "Lithium interstitial reference concentration [mol.m-3]": 15.0, + "Initial inner SEI thickness [m]": 2.5e-09, + "Initial outer SEI thickness [m]": 2.5e-09, + "EC initial concentration in electrolyte [mol.m-3]": 4541.0, + "EC diffusivity [m2.s-1]": 2e-18, + "SEI kinetic rate constant [m.s-1]": 1e-12, + "SEI open-circuit potential [V]": 0.4, + "SEI growth activation energy [J.mol-1]": 0.0, + "Negative electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + "Positive electrode reaction-driven LAM factor [m3.mol-1]": 0.0, + # cell + "Negative electrode thickness [m]": 0.0007, + "Separator thickness [m]": 2.5e-05, + "Positive electrode thickness [m]": 4.2e-05, + "Electrode height [m]": 0.01, + "Electrode width [m]": 0.0154, + "Nominal cell capacity [A.h]": 0.0024, + "Typical current [A]": 0.0024, + "Current function [A]": 0.0024, + # negative electrode + "Negative electrode OCP [V]": 0.0, + "Negative electrode conductivity [S.m-1]": 10776000.0, + "Negative electrode OCP entropic change [V.K-1]": 0.0, + "Negative electrode cation signed stoichiometry": -1.0, + "Negative electrode electrons in reaction": 1.0, + "Typical plated lithium concentration [mol.m-3]": 76900.0, + "Exchange-current density for plating [A.m-2]" + "": li_metal_electrolyte_exchange_current_density_Xu2019, + "Negative electrode charge transfer coefficient": 0.5, + "Negative electrode double-layer capacity [F.m-2]": 0.2, + # positive electrode + "Positive electrode conductivity [S.m-1]": 100.0, + "Maximum concentration in positive electrode [mol.m-3]": 48230.0, + "Positive electrode diffusivity [m2.s-1]": 1e-14, + "Positive electrode OCP [V]": nmc_ocp_Xu2019, + "Positive electrode porosity": 0.331, + "Positive electrode active material volume fraction": 0.518, + "Positive particle radius [m]": 5.3e-06, + "Positive electrode Bruggeman coefficient (electrolyte)": 1.5, + "Positive electrode Bruggeman coefficient (electrode)": 1.5, + "Positive electrode OCP entropic change [V.K-1]": 0.0, + "Positive electrode cation signed stoichiometry": -1.0, + "Positive electrode electrons in reaction": 1.0, + "Positive electrode charge transfer coefficient": 0.5, + "Positive electrode exchange-current density [A.m-2]" + "": nmc_electrolyte_exchange_current_density_Xu2019, + "Positive electrode double-layer capacity [F.m-2]": 0.2, + # separator + "Separator porosity": 0.39, + "Separator Bruggeman coefficient (electrolyte)": 1.5, + "Separator Bruggeman coefficient (electrode)": 1.5, + # electrolyte + "Typical electrolyte concentration [mol.m-3]": 1000.0, + "Initial concentration in electrolyte [mol.m-3]": 1000.0, + "Cation transference number": 0.38, + "Electrolyte diffusivity [m2.s-1]": electrolyte_diffusivity_Valoen2005, + "Electrolyte conductivity [S.m-1]": electrolyte_conductivity_Valoen2005, + "1 + dlnf/dlnc": 1.0, + # experiment + "Ambient temperature [K]": 298.15, + "Reference temperature [K]": 298.15, + "Heat transfer coefficient [W.m-2.K-1]": 10.0, + "Number of electrodes connected in parallel to make a cell": 1.0, + "Number of cells connected in series to make a battery": 1.0, + "Lower voltage cut-off [V]": 3.5, + "Upper voltage cut-off [V]": 4.2, + "Initial concentration in positive electrode [mol.m-3]": 4631.0, + "Initial temperature [K]": 298.15, + # citations + "citations": ["Xu2019", "Valoen2005"], + } diff --git a/pybamm/input/parameters/lithium_ion/cells/A123_Lain2019/README.md b/pybamm/input/parameters/lithium_ion/cells/A123_Lain2019/README.md deleted file mode 100644 index 8c1bc70405..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/A123_Lain2019/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Pouch cell parameters - -Parameters for an A123 LFP cell, from the paper - -> Lain, M. J., Brandon, J., & Kendrick, E. (2019). Design Strategies for High Power vs. High Energy Lithium Ion Cells. [Batteries](https://doi.org/10.3390/batteries5040064), 5(4), 64. diff --git a/pybamm/input/parameters/lithium_ion/cells/A123_Lain2019/parameters.csv b/pybamm/input/parameters/lithium_ion/cells/A123_Lain2019/parameters.csv deleted file mode 100644 index 5b8d6189f5..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/A123_Lain2019/parameters.csv +++ /dev/null @@ -1,38 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Macroscale geometry,,, -Negative current collector thickness [m],1.00E-05,Lain 2019, -Negative electrode thickness [m],3.60E-05,Lain 2019, -Separator thickness [m],1.80E-05,Lain 2019, -Positive electrode thickness [m],8.10E-05,Lain 2019, -Positive current collector thickness [m],1.90E-05,Lain 2019, -Electrode height [m],6.49E-02,A123 18650 datasheet,Not needed for 1D -Electrode width [m],1.78,fit to Severson 2019,Not needed for 1D -Negative tab width [m],0.04,default,Not needed for 1D -Negative tab centre y-coordinate [m],0.06,default,Not needed for 1D -Negative tab centre z-coordinate [m],0.137,default,Not needed for 1D -Positive tab width [m],0.04,default,Not needed for 1D -Positive tab centre y-coordinate [m],0.147,default,Not needed for 1D -Positive tab centre z-coordinate [m],0.137,default,Not needed for 1D -,,, -# Current collector properties ,,, -Negative current collector conductivity [S.m-1],58411000,CRC Handbook,copper -Positive current collector conductivity [S.m-1],36914000,CRC Handbook,aluminium -,,, -# Density,,, -Negative current collector density [kg.m-3],8960,CRC Handbook,copper -Positive current collector density [kg.m-3],2700,CRC Handbook,aluminium -,,, -# Specific heat capacity,,, -Negative current collector specific heat capacity [J.kg-1.K-1],385,CRC Handbook,copper -Positive current collector specific heat capacity [J.kg-1.K-1],897,CRC Handbook,aluminium -,,, -# Thermal conductivity,,, -Negative current collector thermal conductivity [W.m-1.K-1],401,CRC Handbook,copper -Positive current collector thermal conductivity [W.m-1.K-1],237,CRC Handbook,aluminium -,,, -# Electrical,,, -Nominal cell capacity [A.h],1.1,Lain 2019, -Current function [A],1.1,, -Typical current [A],1.1,Lain 2019, diff --git a/pybamm/input/parameters/lithium_ion/cells/Kim2011/README.md b/pybamm/input/parameters/lithium_ion/cells/Kim2011/README.md deleted file mode 100644 index 6213c4a515..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/Kim2011/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Pouch cell parameters - -Parameters for a "Nominal Design" pouch cell, from the paper - -> Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. (2011). Multi-domain modeling of lithium-ion batteries encompassing multi-physics in varied length scales. Journal of The Electrochemical Society, 158(8), A955-A969. diff --git a/pybamm/input/parameters/lithium_ion/cells/Kim2011/parameters.csv b/pybamm/input/parameters/lithium_ion/cells/Kim2011/parameters.csv deleted file mode 100644 index d64200a293..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/Kim2011/parameters.csv +++ /dev/null @@ -1,40 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Macroscale geometry,,, -Negative current collector thickness [m],10E-6,, -Negative electrode thickness [m],70E-6,, -Separator thickness [m],25E-6,, -Positive electrode thickness [m],50E-6,, -Positive current collector thickness [m],10E-6,, -Electrode height [m],0.2,, -Electrode width [m],0.14,, -Negative tab width [m],0.044,, -Negative tab centre y-coordinate [m],0.013,, -Negative tab centre z-coordinate [m],0.2, At top, -Positive tab width [m],0.044,, -Positive tab centre y-coordinate [m],0.137,, -Positive tab centre z-coordinate [m],0.2,At top, -Cell cooling surface area [m2],5.61E-2,,pouch -Cell volume [m3],4.62E-6,,pouch -,,, -# Current collector properties ,,, -Negative current collector conductivity [S.m-1],59.6E6,, -Positive current collector conductivity [S.m-1],37.8E6,, -,,, -# Density,,, -Negative current collector density [kg.m-3],11544.75, 8954 * 1.28934, -Positive current collector density [kg.m-3],3490.24338, 2707 * 1.28934, -,,, -# Specific heat capacity,,, -Negative current collector specific heat capacity [J.kg-1.K-1],385,, -Positive current collector specific heat capacity [J.kg-1.K-1],897,, -,,, -# Thermal conductivity,,, -Negative current collector thermal conductivity [W.m-1.K-1],267.467, 401 * 0.667, -Positive current collector thermal conductivity [W.m-1.K-1],158.079, 237 * 0.667, -,,, -# Electrical,,, -Nominal cell capacity [A.h],0.43,trial and error, -Typical current [A],0.43,0.2857,1C current -Current function [A],0.43,default current function, diff --git a/pybamm/input/parameters/lithium_ion/cells/LGM50_Chen2020/README.md b/pybamm/input/parameters/lithium_ion/cells/LGM50_Chen2020/README.md deleted file mode 100644 index 7429d5f50f..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/LGM50_Chen2020/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 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."](https://iopscience.iop.org/article/10.1149/1945-7111/ab9050) Journal of the Electrochemical Society 167 (2020): 080534 - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/cells/LGM50_Chen2020/parameters.csv b/pybamm/input/parameters/lithium_ion/cells/LGM50_Chen2020/parameters.csv deleted file mode 100644 index 038d2bc76d..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/LGM50_Chen2020/parameters.csv +++ /dev/null @@ -1,35 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Macroscale geometry,,, -Negative current collector thickness [m],12E-6,Chen 2020, -Negative electrode thickness [m],85.2E-6,Chen 2020, -Separator thickness [m],12E-6,Chen 2020, -Positive electrode thickness [m],75.6E-6,Chen 2020, -Positive current collector thickness [m],16E-6,Chen 2020, -Electrode height [m],6.5E-2,Chen 2020, -Electrode width [m],1.58,Chen 2020,accounts for both sides of unwound electrode (double-sided coating) -Cell cooling surface area [m2],5.31E-3,Chen 2020,cylindrical -Cell volume [m3],2.42E-5,Chen 2020,cylindrical -Cell thermal expansion coefficient [m.K-1],1.1E-6,Ai2020, -,,, -# Current collector properties ,,, -Negative current collector conductivity [S.m-1],58411000,CRC Handbook,copper -Positive current collector conductivity [S.m-1],36914000,CRC Handbook,aluminium -,,, -# Density,,, -Negative current collector density [kg.m-3],8960,CRC Handbook,copper -Positive current collector density [kg.m-3],2700,CRC Handbook,aluminium -,,, -# Specific heat capacity,,, -Negative current collector specific heat capacity [J.kg-1.K-1],385,CRC Handbook,copper -Positive current collector specific heat capacity [J.kg-1.K-1],897,CRC Handbook,aluminium -,,, -# Thermal conductivity,,, -Negative current collector thermal conductivity [W.m-1.K-1],401,CRC Handbook,copper -Positive current collector thermal conductivity [W.m-1.K-1],237,CRC Handbook,aluminium -,,, -# Electrical,,, -Nominal cell capacity [A.h],5,Chen 2020, -Typical current [A],5,Chen 2020, -Current function [A],5,default current function, \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/README.md b/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/README.md deleted file mode 100644 index cabdc81835..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# LG M50 cell parameters - -Parameters for an LG M50 cell, from the paper - -> Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma Kendrick. ["Thermal-electrochemical parameters of a high energy lithium-ion cylindrical battery."](https://www.sciencedirect.com/science/article/pii/S0013468622008593) Electrochimica Acta 425 (2022): 140700 - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/aluminium_heat_capacity_CRC.py b/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/aluminium_heat_capacity_CRC.py deleted file mode 100644 index c079d035ae..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/aluminium_heat_capacity_CRC.py +++ /dev/null @@ -1,23 +0,0 @@ -def aluminium_heat_capacity_CRC(T): - """ - Aluminium specific heat capacity as a function of the temperature from [1]. - - References - ---------- - .. [1] William M. Haynes (Ed.). "CRC handbook of chemistry and physics". CRC Press - (2014). - - Parameters - ---------- - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Specific heat capacity - """ - - cp = 4.503e-6 * T**3 - 6.256e-3 * T**2 + 3.281 * T + 355.7 - - return cp diff --git a/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/copper_heat_capacity_CRC.py b/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/copper_heat_capacity_CRC.py deleted file mode 100644 index 1ca23f622f..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/copper_heat_capacity_CRC.py +++ /dev/null @@ -1,23 +0,0 @@ -def copper_heat_capacity_CRC(T): - """ - Copper specific heat capacity as a function of the temperature from [1]. - - References - ---------- - .. [1] William M. Haynes (Ed.). "CRC handbook of chemistry and physics". CRC Press - (2014). - - Parameters - ---------- - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Specific heat capacity - """ - - cp = 1.445e-6 * T**3 - 1.946e-3 * T**2 + 0.9633 * T + 236 - - return cp diff --git a/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/copper_thermal_conductivity_CRC.py b/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/copper_thermal_conductivity_CRC.py deleted file mode 100644 index 372b060ce6..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/copper_thermal_conductivity_CRC.py +++ /dev/null @@ -1,23 +0,0 @@ -def copper_thermal_conductivity_CRC(T): - """ - Copper thermal conductivity as a function of the temperature from [1]. - - References - ---------- - .. [1] William M. Haynes (Ed.). "CRC handbook of chemistry and physics". CRC Press - (2014). - - Parameters - ---------- - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Thermal conductivity - """ - - lambda_th = -5.409e-7 * T**3 + 7.054e-4 * T**2 - 0.3727 * T + 463.6 - - return lambda_th diff --git a/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/parameters.csv b/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/parameters.csv deleted file mode 100644 index 95b3d79b1b..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/parameters.csv +++ /dev/null @@ -1,34 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Macroscale geometry,,, -Negative current collector thickness [m],12E-6,Chen 2020, -Negative electrode thickness [m],85.2E-6,Chen 2020, -Separator thickness [m],12E-6,Chen 2020, -Positive electrode thickness [m],75.6E-6,Chen 2020, -Positive current collector thickness [m],16E-6,Chen 2020, -Electrode height [m],6.5E-2,Chen 2020, -Electrode width [m],1.58,Chen 2020,accounts for both sides of unwound electrode (double-sided coating) -Cell cooling surface area [m2],5.31E-3,Chen 2020,cylindrical -Cell volume [m3],2.42E-5,Chen 2020,cylindrical -,,, -# Current collector properties ,,, -Negative current collector conductivity [S.m-1],58411000,CRC Handbook,copper -Positive current collector conductivity [S.m-1],36914000,CRC Handbook,aluminium -,,, -# Density,,, -Negative current collector density [kg.m-3],8933,CRC Handbook,copper -Positive current collector density [kg.m-3],2702,CRC Handbook,aluminium -,,, -# Specific heat capacity,,, -Negative current collector specific heat capacity [J.kg-1.K-1],[function]copper_heat_capacity_CRC,CRC Handbook,copper -Positive current collector specific heat capacity [J.kg-1.K-1],[function]aluminium_heat_capacity_CRC,CRC Handbook,aluminium -,,, -# Thermal conductivity,,, -Negative current collector thermal conductivity [W.m-1.K-1],[function]copper_thermal_conductivity_CRC,CRC Handbook,copper -Positive current collector thermal conductivity [W.m-1.K-1],237,CRC Handbook,aluminium -,,, -# Electrical,,, -Nominal cell capacity [A.h],5,Chen 2020, -Typical current [A],5,Chen 2020, -Current function [A],5,default current function, \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/cells/UMBL_Mohtat2020/parameters.csv b/pybamm/input/parameters/lithium_ion/cells/UMBL_Mohtat2020/parameters.csv deleted file mode 100644 index 7b53319df1..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/UMBL_Mohtat2020/parameters.csv +++ /dev/null @@ -1,34 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Macroscale geometry,,, -Negative current collector thickness [m],2.5E-05,Scott Moura FastDFN,no info from Peyman MPM -Negative electrode thickness [m],62E-06,Peyman MPM, -Separator thickness [m],12E-06,Peyman MPM, -Positive electrode thickness [m],67E-06,Peyman MPM, -Positive current collector thickness [m],2.5E-05,Scott Moura FastDFN,no info from Peyman MPM -Electrode height [m],1,KOKAM SLPB78205130H,Not needed for 1D -Electrode width [m],0.2050,KOKAM SLPB78205130H,Not needed for 1D -Cell cooling surface area [m2],0.41,,pouch -Cell volume [m3],3.92E-5,,pouch -,,, -# Current collector properties ,,, -Negative current collector conductivity [S.m-1],59600000,LIONSIMBA,carbon -Positive current collector conductivity [S.m-1],35500000,LIONSIMBA,aluminium -,,, -# Density,,, -Negative current collector density [kg.m-3],8954,, -Positive current collector density [kg.m-3],2707,, -,,, -# Specific heat capacity,,, -Negative current collector specific heat capacity [J.kg-1.K-1],385,, -Positive current collector specific heat capacity [J.kg-1.K-1],897,, -,,, -# Thermal conductivity,,, -Negative current collector thermal conductivity [W.m-1.K-1],401,, -Positive current collector thermal conductivity [W.m-1.K-1],237,, -,,, -# Electrical,,, -Nominal cell capacity [A.h],5,Peyman MPM, -Typical current [A],5,,1C current -Current function [A],5,default current function, diff --git a/pybamm/input/parameters/lithium_ion/cells/kokam_Ecker2015/README.md b/pybamm/input/parameters/lithium_ion/cells/kokam_Ecker2015/README.md deleted file mode 100644 index 0285001fca..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/kokam_Ecker2015/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Kokam SLPB 75106100 cell parameters - -Parameters for a Kokam SLPB 75106100 cell, 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 tab placement parameters are taken from measurements in - -> Hales, Alastair, et al. "The cell cooling coefficient: a standard to define heat rejection from lithium-ion batteries." Journal of The Electrochemical Society 166.12 (2019): A2383. - -The thermal material properties are for a 5 Ah power pouch cell by Kokam. The data are extracted from - -> Zhao, Y., et al. "Modeling the effects of thermal gradients induced by tab and surface cooling on lithium ion cell performance."" Journal of The Electrochemical Society, 165.13 (2018): A3169-A3178. diff --git a/pybamm/input/parameters/lithium_ion/cells/kokam_Ecker2015/parameters.csv b/pybamm/input/parameters/lithium_ion/cells/kokam_Ecker2015/parameters.csv deleted file mode 100644 index 9afe32eec2..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/kokam_Ecker2015/parameters.csv +++ /dev/null @@ -1,41 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Macroscale geometry,,, -Negative current collector thickness [m],1.40E-05,, -Negative electrode thickness [m],7.4E-05,, -Separator thickness [m],2E-05,, -Positive electrode thickness [m],5.4E-05,, -Positive current collector thickness [m],1.5E-05,, -Electrode height [m],1.01E-01,, -Electrode width [m],8.50E-02,, -Negative tab width [m],7E-3,,Hales et al. (2019) -Negative tab centre y-coordinate [m],4.5E-3,Hales et al. (2019), -Negative tab centre z-coordinate [m],1.01E-1,Top of cell, -Positive tab width [m],6.9E-3,Hales et al. (2019), -Positive tab centre y-coordinate [m],30.9E-3,Hales et al. (2019), -Positive tab centre z-coordinate [m],1.01E-1,Top of cell, -Cell cooling surface area [m2],1.72E-2,pouch (single layer), -Cell volume [m3],1.52E-6,pouch (single layer), -,,, -,,, -# Current collector properties ,,, -Negative current collector conductivity [S.m-1],58411000,CRC Handbook,copper -Positive current collector conductivity [S.m-1],36914000,CRC Handbook,aluminium -,,, -# Density,,, -Negative current collector density [kg.m-3],8933,Zhao et al. (2018), -Positive current collector density [kg.m-3],2702,Zhao et al. (2018), -,,, -# Specific heat capacity,,, -Negative current collector specific heat capacity [J.kg-1.K-1],385,Zhao et al. (2018), -Positive current collector specific heat capacity [J.kg-1.K-1],903,Zhao et al. (2018), -,,, -# Thermal conductivity,,, -Negative current collector thermal conductivity [W.m-1.K-1],398,Zhao et al. (2018), -Positive current collector thermal conductivity [W.m-1.K-1],238,Zhao et al. (2018), -,,, -# Electrical,,, -Nominal cell capacity [A.h], 0.15625, 7.5/48 (parameter set for a single layer cell), -Typical current [A], 0.15652,, -Current function [A],0.15652,default current function (1C), diff --git a/pybamm/input/parameters/lithium_ion/cells/kokam_Marquis2019/README.md b/pybamm/input/parameters/lithium_ion/cells/kokam_Marquis2019/README.md deleted file mode 100644 index 5b93f198d6..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/kokam_Marquis2019/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Kokam SLPB78205130H cell parameters - -Parameters for a Kokam SLPB78205130H cell, from the paper - -> Marquis, S. G., Sulzer, V., Timms, R., Please, C. P., & Chapman, S. J. (2019). “An asymptotic derivation of a single particle model with electrolyte”. [Journal of The Electrochemical Society](https://doi.org/10.1149/2.0341915jes), 166(15), A3693-A3706. - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/cells/kokam_Marquis2019/parameters.csv b/pybamm/input/parameters/lithium_ion/cells/kokam_Marquis2019/parameters.csv deleted file mode 100644 index 97b6198ccb..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/kokam_Marquis2019/parameters.csv +++ /dev/null @@ -1,40 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Macroscale geometry,,, -Negative current collector thickness [m],2.5E-05,Scott Moura FastDFN, -Negative electrode thickness [m],0.0001,Scott Moura FastDFN, -Separator thickness [m],2.5E-05,Scott Moura FastDFN, -Positive electrode thickness [m],0.0001,Scott Moura FastDFN, -Positive current collector thickness [m],2.5E-05,Scott Moura FastDFN, -Electrode height [m],0.137,KOKAM SLPB78205130H,Not needed for 1D -Electrode width [m],0.207,KOKAM SLPB78205130H,Not needed for 1D -Negative tab width [m],0.04,,Need to find actual value for KOKAM cell -Negative tab centre y-coordinate [m],0.06,,Need to find actual value for KOKAM cell -Negative tab centre z-coordinate [m],0.137,,Need to find actual value for KOKAM cell -Positive tab width [m],0.04,,Need to find actual value for KOKAM cell -Positive tab centre y-coordinate [m],0.147,,Need to find actual value for KOKAM cell -Positive tab centre z-coordinate [m],0.137,,Need to find actual value for KOKAM cell -Cell cooling surface area [m2],5.69E-2,,pouch -Cell volume [m3],7.80E-6,,pouch -,,, -# Current collector properties ,,, -Negative current collector conductivity [S.m-1],59600000,LIONSIMBA,carbon -Positive current collector conductivity [S.m-1],35500000,LIONSIMBA,aluminium -,,, -# Density,,, -Negative current collector density [kg.m-3],8954,, -Positive current collector density [kg.m-3],2707,, -,,, -# Specific heat capacity,,, -Negative current collector specific heat capacity [J.kg-1.K-1],385,, -Positive current collector specific heat capacity [J.kg-1.K-1],897,, -,,, -# Thermal conductivity,,, -Negative current collector thermal conductivity [W.m-1.K-1],401,, -Positive current collector thermal conductivity [W.m-1.K-1],237,, -,,, -# Electrical,,, -Nominal cell capacity [A.h],0.680616,,24 Ah/m2 * 0.137m * 0.207m -Typical current [A],0.680616,,1C current -Current function [A],0.680616,default current function, \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/cells/li_metal_Xu2019/README.md b/pybamm/input/parameters/lithium_ion/cells/li_metal_Xu2019/README.md deleted file mode 100644 index 04eee92a19..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/li_metal_Xu2019/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Kokam SLPB78205130H cell parameters - -Parameters for a Kokam SLPB78205130H cell, from the paper - -> Xu, Shanshan, Chen, Kuan-Hung, Dasgupta, Neil P., Siegel, Jason B. and Stefanopoulou, Anna G. "Evolution of Dead Lithium Growth in Lithium Metal Batteries: Experimentally Validated Model of the Apparent Capacity Loss." Journal of The Electrochemical Society 166.14 (2019): A3456-A3463. - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/cells/li_metal_Xu2019/parameters.csv b/pybamm/input/parameters/lithium_ion/cells/li_metal_Xu2019/parameters.csv deleted file mode 100644 index ce52e485dd..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/li_metal_Xu2019/parameters.csv +++ /dev/null @@ -1,14 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Macroscale geometry,,, -Negative electrode thickness [m],700E-06,, -Separator thickness [m],25E-06,, -Positive electrode thickness [m],42E-06,, -Electrode height [m],0.01,,guess to get correct area -Electrode width [m],0.0154,,guess to get correct area -,,, -# Electrical,,, -Nominal cell capacity [A.h],0.0024,,C/4 is I=0.6 mA -Typical current [A],0.0024,,1C current -Current function [A],0.0024,,1C current diff --git a/pybamm/input/parameters/lithium_ion/cells/sony_Ramadass2004/README.md b/pybamm/input/parameters/lithium_ion/cells/sony_Ramadass2004/README.md deleted file mode 100644 index 5400d34b90..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/sony_Ramadass2004/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Cell geometry parameters - -Parameters for a lithium Cobalt Oxide positive electrode, from the paper - -> Marquis, S. G., Sulzer, V., Timms, R., Please, C. P., & Chapman, S. J. (2019). “An asymptotic derivation of a single particle model with electrolyte”. [Journal of The Electrochemical Society](https://doi.org/10.1149/2.0341915jes), 166(15), A3693-A3706. -> P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." (2004) -> P. Ramadass, Bala Haran, Ralph White, and Branko N. Popov. "Capacity fade of Sony 18650 cells cycled at elevated temperatures part I." (2002) - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/cells/sony_Ramadass2004/parameters.csv b/pybamm/input/parameters/lithium_ion/cells/sony_Ramadass2004/parameters.csv deleted file mode 100644 index 3c97503cbd..0000000000 --- a/pybamm/input/parameters/lithium_ion/cells/sony_Ramadass2004/parameters.csv +++ /dev/null @@ -1,38 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Macroscale geometry,,, -Negative current collector thickness [m],1.7E-05,Ramadass 2002, -Negative electrode thickness [m],8.8e-05,Ramadass, -Separator thickness [m],2.5E-05,Scott Moura FastDFN, -Positive electrode thickness [m],8e-05,Ramadass, -Positive current collector thickness [m],2.3E-05,Ramadass 2002, -Electrode height [m],0.057,Ramadass 2002 negative electrode,Not needed for 1D -Electrode width [m],1.060692,Ramadass 2002 negative electrode twice ,Not needed for 1D -Negative tab width [m],0.04,,Need to find actual value for KOKAM cell -Negative tab centre y-coordinate [m],0.06,,Need to find actual value for KOKAM cell -Negative tab centre z-coordinate [m],0.137,,Need to find actual value for KOKAM cell -Positive tab width [m],0.04,,Need to find actual value for KOKAM cell -Positive tab centre y-coordinate [m],0.147,,Need to find actual value for KOKAM cell -Positive tab centre z-coordinate [m],0.137,,Need to find actual value for KOKAM cell -,,, -# Current collector properties ,,, -Negative current collector conductivity [S.m-1],59600000,LIONSIMBA,carbon -Positive current collector conductivity [S.m-1],35500000,LIONSIMBA,aluminium -,,, -# Density,,, -Negative current collector density [kg.m-3],8954,, -Positive current collector density [kg.m-3],2707,, -,,, -# Specific heat capacity,,, -Negative current collector specific heat capacity [J.kg-1.K-1],385,, -Positive current collector specific heat capacity [J.kg-1.K-1],897,, -,,, -# Thermal conductivity,,, -Negative current collector thermal conductivity [W.m-1.K-1],401,, -Positive current collector thermal conductivity [W.m-1.K-1],237,, -,,, -# Electrical,,, -Nominal cell capacity [A.h],1,,16.54 Ah/m2 * 0.057m * 1.06m -Typical current [A],1,,1C current -Current function [A],1,default current function, diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_LGM50_ocp_Chen2020.csv b/pybamm/input/parameters/lithium_ion/data/graphite_LGM50_ocp_Chen2020.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_LGM50_ocp_Chen2020.csv rename to pybamm/input/parameters/lithium_ion/data/graphite_LGM50_ocp_Chen2020.csv diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/graphite_ocp_Ecker2015.csv b/pybamm/input/parameters/lithium_ion/data/graphite_ocp_Ecker2015.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/graphite_ocp_Ecker2015.csv rename to pybamm/input/parameters/lithium_ion/data/graphite_ocp_Ecker2015.csv diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_ocp_Enertech_Ai2020.csv b/pybamm/input/parameters/lithium_ion/data/graphite_ocp_Enertech_Ai2020.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_ocp_Enertech_Ai2020.csv rename to pybamm/input/parameters/lithium_ion/data/graphite_ocp_Enertech_Ai2020.csv diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/lico2_data_example.csv b/pybamm/input/parameters/lithium_ion/data/lico2_data_example.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/lico2_data_example.csv rename to pybamm/input/parameters/lithium_ion/data/lico2_data_example.csv diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_ocp_Ai2020.csv b/pybamm/input/parameters/lithium_ion/data/lico2_ocp_Ai2020.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_ocp_Ai2020.csv rename to pybamm/input/parameters/lithium_ion/data/lico2_ocp_Ai2020.csv diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/measured_graphite_diffusivity_Ecker2015.csv b/pybamm/input/parameters/lithium_ion/data/measured_graphite_diffusivity_Ecker2015.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/measured_graphite_diffusivity_Ecker2015.csv rename to pybamm/input/parameters/lithium_ion/data/measured_graphite_diffusivity_Ecker2015.csv diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/measured_nco_diffusivity_Ecker2015.csv b/pybamm/input/parameters/lithium_ion/data/measured_nco_diffusivity_Ecker2015.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/measured_nco_diffusivity_Ecker2015.csv rename to pybamm/input/parameters/lithium_ion/data/measured_nco_diffusivity_Ecker2015.csv diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/nca_ocp_Kim2011_data.csv b/pybamm/input/parameters/lithium_ion/data/nca_ocp_Kim2011_data.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/nca_ocp_Kim2011_data.csv rename to pybamm/input/parameters/lithium_ion/data/nca_ocp_Kim2011_data.csv diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/nco_ocp_Ecker2015.csv b/pybamm/input/parameters/lithium_ion/data/nco_ocp_Ecker2015.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/nco_ocp_Ecker2015.csv rename to pybamm/input/parameters/lithium_ion/data/nco_ocp_Ecker2015.csv diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/nmc_LGM50_ocp_Chen2020.csv b/pybamm/input/parameters/lithium_ion/data/nmc_LGM50_ocp_Chen2020.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/nmc_LGM50_ocp_Chen2020.csv rename to pybamm/input/parameters/lithium_ion/data/nmc_LGM50_ocp_Chen2020.csv diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/LiPF6_Mohtat2020/electrolyte_conductivity_PeymanMPM.py b/pybamm/input/parameters/lithium_ion/electrolytes/LiPF6_Mohtat2020/electrolyte_conductivity_PeymanMPM.py deleted file mode 100644 index 229d22cea2..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/LiPF6_Mohtat2020/electrolyte_conductivity_PeymanMPM.py +++ /dev/null @@ -1,33 +0,0 @@ -from pybamm import exp, constants - - -def electrolyte_conductivity_PeymanMPM(c_e, T): - """ - Conductivity of LiPF6 in EC:DMC as a function of ion concentration. The original - data is from [1]. The fit is from Dualfoil [2]. - - References - ---------- - .. [1] C Capiglia et al. 7Li and 19F diffusion coefficients and thermal - properties of non-aqueous electrolyte solutions for rechargeable lithium batteries. - Journal of power sources 81 (1999): 859-862. - .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html - Parameters - ---------- - c_e: :class:`pybamm.Symbol` - Dimensional electrolyte concentration - T: :class:`pybamm.Symbol` - Dimensional temperature - - - Returns - ------- - :class:`pybamm.Symbol` - Electrolyte conductivity - """ - - sigma_e = 1.3 - E_k_e = 34700 - arrhenius = exp(E_k_e / constants.R * (1 / 298.15 - 1 / T)) - - return sigma_e * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/LiPF6_Mohtat2020/electrolyte_diffusivity_PeymanMPM.py b/pybamm/input/parameters/lithium_ion/electrolytes/LiPF6_Mohtat2020/electrolyte_diffusivity_PeymanMPM.py deleted file mode 100644 index 3014398635..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/LiPF6_Mohtat2020/electrolyte_diffusivity_PeymanMPM.py +++ /dev/null @@ -1,34 +0,0 @@ -from pybamm import exp, constants - - -def electrolyte_diffusivity_PeymanMPM(c_e, T): - """ - Diffusivity of LiPF6 in EC:DMC as a function of ion concentration. The original data - is from [1]. The fit from Dualfoil [2]. - - References - ---------- - .. [1] C Capiglia et al. 7Li and 19F diffusion coefficients and thermal - properties of non-aqueous electrolyte solutions for rechargeable lithium batteries. - Journal of power sources 81 (1999): 859-862. - .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html - - Parameters - ---------- - c_e: :class:`pybamm.Symbol` - Dimensional electrolyte concentration - T: :class:`pybamm.Symbol` - Dimensional temperature - - - Returns - ------- - :class:`pybamm.Symbol` - Electrolyte diffusivity - """ - - D_c_e = 5.35 * 10 ** (-10) - E_D_e = 37040 - arrhenius = exp(E_D_e / constants.R * (1 / 298.15 - 1 / T)) - - return D_c_e * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/LiPF6_Mohtat2020/parameters.csv b/pybamm/input/parameters/lithium_ion/electrolytes/LiPF6_Mohtat2020/parameters.csv deleted file mode 100644 index 534aae6cfc..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/LiPF6_Mohtat2020/parameters.csv +++ /dev/null @@ -1,11 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrolyte properties,,, -Typical electrolyte concentration [mol.m-3],1000,Peyman MPM,from MPM code -Initial concentration in electrolyte [mol.m-3],1000,Peyman MPM,from MPM code -Cation transference number,0.38,Peyman MPM, -1 + dlnf/dlnc,1,, -Typical lithium ion diffusivity [m2.s-1],5.34E-10,Scott Moura FastDFN, -Electrolyte diffusivity [m2.s-1],[function]electrolyte_diffusivity_PeymanMPM,, -Electrolyte conductivity [S.m-1],[function]electrolyte_conductivity_PeymanMPM,, diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/__init__.py b/pybamm/input/parameters/lithium_ion/electrolytes/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/__init__.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/__init__.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/__init__.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ecker2015/README.md b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ecker2015/README.md deleted file mode 100644 index 323ef23cda..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ecker2015/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# LiPF6 electrolyte parameters - -Parameters for a LiPF6 electrolyte, 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 diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ecker2015/__init__.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ecker2015/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ecker2015/electrolyte_conductivity_Ecker2015.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ecker2015/electrolyte_conductivity_Ecker2015.py deleted file mode 100644 index d00219c53f..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ecker2015/electrolyte_conductivity_Ecker2015.py +++ /dev/null @@ -1,44 +0,0 @@ -from pybamm import exp, constants - - -def electrolyte_conductivity_Ecker2015(c_e, T): - """ - Conductivity of LiPF6 in EC:DMC as a function of ion concentration [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 - ---------- - c_e: :class:`pybamm.Symbol` - Dimensional electrolyte concentration - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - # mol/m^3 to mol/l - cm = 1e-3 * c_e - - # value at T = 296K - sigma_e_296 = 0.2667 * cm**3 - 1.2983 * cm**2 + 1.7919 * cm + 0.1726 - - # add temperature dependence - E_k_e = 1.71e4 - C = 296 * exp(E_k_e / (constants.R * 296)) - sigma_e = C * sigma_e_296 * exp(-E_k_e / (constants.R * T)) / T - - return sigma_e diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ecker2015/electrolyte_diffusivity_Ecker2015.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ecker2015/electrolyte_diffusivity_Ecker2015.py deleted file mode 100644 index b933363165..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ecker2015/electrolyte_diffusivity_Ecker2015.py +++ /dev/null @@ -1,40 +0,0 @@ -import pybamm -from pybamm import constants - - -def electrolyte_diffusivity_Ecker2015(c_e, T): - """ - Diffusivity of LiPF6 in EC:DMC as a function of ion concentration [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 - ---------- - c_e: :class:`pybamm.Symbol` - Dimensional electrolyte concentration - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - # The diffusivity epends on the electrolyte conductivity - inputs = {"Electrolyte concentration [mol.m-3]": c_e, "Temperature [K]": T} - sigma_e = pybamm.FunctionParameter("Electrolyte conductivity [S.m-1]", inputs) - - D_c_e = (constants.k_b / (constants.F * constants.q_e)) * sigma_e * T / c_e - - return D_c_e diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ecker2015/parameters.csv b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ecker2015/parameters.csv deleted file mode 100644 index 6c1f86d3f4..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ecker2015/parameters.csv +++ /dev/null @@ -1,10 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrolyte properties,,, -Typical electrolyte concentration [mol.m-3],1000,, -Initial concentration in electrolyte [mol.m-3],1000,, -Cation transference number,0.26,, -1 + dlnf/dlnc,1,, -Electrolyte diffusivity [m2.s-1],[function]electrolyte_diffusivity_Ecker2015,, -Electrolyte conductivity [S.m-1],[function]electrolyte_conductivity_Ecker2015,, diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Enertech_Ai2020/__init__.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Enertech_Ai2020/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Kim2011/README.md b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Kim2011/README.md deleted file mode 100644 index d7db16c804..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Kim2011/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# LiPF6 electrolyte parameters - -Parameters for a LiPF6 electrolyte, from the paper - -> Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. (2011). Multi-domain modeling of lithium-ion batteries encompassing multi-physics in varied length scales. Journal of The Electrochemical Society, 158(8), A955-A969. - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Kim2011/__init__.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Kim2011/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Kim2011/electrolyte_conductivity_Kim2011.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Kim2011/electrolyte_conductivity_Kim2011.py deleted file mode 100644 index bbec2015bb..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Kim2011/electrolyte_conductivity_Kim2011.py +++ /dev/null @@ -1,35 +0,0 @@ -from pybamm import exp - - -def electrolyte_conductivity_Kim2011(c_e, T): - """ - Conductivity of LiPF6 in EC as a function of ion concentration from [1]. - - References - ---------- - .. [1] Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. - (2011). Multi-domain modeling of lithium-ion batteries encompassing - multi-physics in varied length scales. Journal of The Electrochemical - Society, 158(8), A955-A969. - - Parameters - ---------- - c_e: :class:`pybamm.Symbol` - Dimensional electrolyte concentration - T: :class:`pybamm.Symbol` - Dimensional temperature - - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - sigma_e = ( - 3.45 * exp(-798 / T) * (c_e / 1000) ** 3 - - 48.5 * exp(-1080 / T) * (c_e / 1000) ** 2 - + 244 * exp(-1440 / T) * (c_e / 1000) - ) - - return sigma_e diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Kim2011/electrolyte_diffusivity_Kim2011.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Kim2011/electrolyte_diffusivity_Kim2011.py deleted file mode 100644 index 2e1f586ac9..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Kim2011/electrolyte_diffusivity_Kim2011.py +++ /dev/null @@ -1,35 +0,0 @@ -from pybamm import exp - - -def electrolyte_diffusivity_Kim2011(c_e, T): - """ - Diffusivity of LiPF6 in EC as a function of ion concentration from [1]. - - References - ---------- - .. [1] Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. - (2011). Multi-domain modeling of lithium-ion batteries encompassing - multi-physics in varied length scales. Journal of The Electrochemical - Society, 158(8), A955-A969. - - Parameters - ---------- - c_e: :class:`pybamm.Symbol` - Dimensional electrolyte concentration - T: :class:`pybamm.Symbol` - Dimensional temperature - - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - D_c_e = ( - 5.84 * 10 ** (-7) * exp(-2870 / T) * (c_e / 1000) ** 2 - - 33.9 * 10 ** (-7) * exp(-2920 / T) * (c_e / 1000) - + 129 * 10 ** (-7) * exp(-3200 / T) - ) - - return D_c_e diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Kim2011/parameters.csv b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Kim2011/parameters.csv deleted file mode 100644 index cf4fb47f96..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Kim2011/parameters.csv +++ /dev/null @@ -1,10 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrolyte properties,,, -Typical electrolyte concentration [mol.m-3],1200,, -Initial concentration in electrolyte [mol.m-3],1200,, -Cation transference number,0.4,Reported as a function in Kim2011 (Implement later), -1 + dlnf/dlnc,1,, -Electrolyte diffusivity [m2.s-1],[function]electrolyte_diffusivity_Kim2011,, -Electrolyte conductivity [S.m-1],[function]electrolyte_conductivity_Kim2011,, diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Marquis2019/README.md b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Marquis2019/README.md deleted file mode 100644 index 5d693ad9c7..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Marquis2019/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# LiPF6 electrolyte parameters - -Parameters for a LiPF6 electrolyte, from the paper - -> Marquis, S. G., Sulzer, V., Timms, R., Please, C. P., & Chapman, S. J. (2019). “An asymptotic derivation of a single particle model with electrolyte”. [Journal of The Electrochemical Society](https://doi.org/10.1149/2.0341915jes), 166(15), A3693-A3706. - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Marquis2019/__init__.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Marquis2019/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Marquis2019/electrolyte_conductivity_Capiglia1999.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Marquis2019/electrolyte_conductivity_Capiglia1999.py deleted file mode 100644 index 5e080d3f33..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Marquis2019/electrolyte_conductivity_Capiglia1999.py +++ /dev/null @@ -1,40 +0,0 @@ -from pybamm import exp, constants - - -def electrolyte_conductivity_Capiglia1999(c_e, T): - """ - Conductivity of LiPF6 in EC:DMC as a function of ion concentration. The original - data is from [1]. The fit is from Dualfoil [2]. - - References - ---------- - .. [1] C Capiglia et al. 7Li and 19F diffusion coefficients and thermal - properties of non-aqueous electrolyte solutions for rechargeable lithium batteries. - Journal of power sources 81 (1999): 859-862. - .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html - - Parameters - ---------- - c_e: :class:`pybamm.Symbol` - Dimensional electrolyte concentration - T: :class:`pybamm.Symbol` - Dimensional temperature - - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - sigma_e = ( - 0.0911 - + 1.9101 * (c_e / 1000) - - 1.052 * (c_e / 1000) ** 2 - + 0.1554 * (c_e / 1000) ** 3 - ) - - E_k_e = 34700 - arrhenius = exp(E_k_e / constants.R * (1 / 298.15 - 1 / T)) - - return sigma_e * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Marquis2019/electrolyte_diffusivity_Capiglia1999.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Marquis2019/electrolyte_diffusivity_Capiglia1999.py deleted file mode 100644 index a0308fb81b..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Marquis2019/electrolyte_diffusivity_Capiglia1999.py +++ /dev/null @@ -1,34 +0,0 @@ -from pybamm import exp, constants - - -def electrolyte_diffusivity_Capiglia1999(c_e, T): - """ - Diffusivity of LiPF6 in EC:DMC as a function of ion concentration. The original data - is from [1]. The fit from Dualfoil [2]. - - References - ---------- - .. [1] C Capiglia et al. 7Li and 19F diffusion coefficients and thermal - properties of non-aqueous electrolyte solutions for rechargeable lithium batteries. - Journal of power sources 81 (1999): 859-862. - .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html - - Parameters - ---------- - c_e: :class:`pybamm.Symbol` - Dimensional electrolyte concentration - T: :class:`pybamm.Symbol` - Dimensional temperature - - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - D_c_e = 5.34e-10 * exp(-0.65 * c_e / 1000) - E_D_e = 37040 - arrhenius = exp(E_D_e / constants.R * (1 / 298.15 - 1 / T)) - - return D_c_e * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Marquis2019/parameters.csv b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Marquis2019/parameters.csv deleted file mode 100644 index a935cd7da6..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Marquis2019/parameters.csv +++ /dev/null @@ -1,10 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrolyte properties,,, -Typical electrolyte concentration [mol.m-3],1000,Scott Moura FastDFN, -Initial concentration in electrolyte [mol.m-3],1000,Scott Moura FastDFN, -Cation transference number,0.4,Scott Moura FastDFN, -1 + dlnf/dlnc,1,, -Electrolyte diffusivity [m2.s-1],[function]electrolyte_diffusivity_Capiglia1999,, -Electrolyte conductivity [S.m-1],[function]electrolyte_conductivity_Capiglia1999,, diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Nyman2008/README.md b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Nyman2008/README.md deleted file mode 100644 index 4c8b672be2..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Nyman2008/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 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. diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Nyman2008/__init__.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Nyman2008/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Nyman2008/electrolyte_conductivity_Nyman2008.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Nyman2008/electrolyte_conductivity_Nyman2008.py deleted file mode 100644 index 001880961a..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Nyman2008/electrolyte_conductivity_Nyman2008.py +++ /dev/null @@ -1,31 +0,0 @@ -def electrolyte_conductivity_Nyman2008(c_e, T): - """ - 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:`pybamm.Symbol` - Dimensional electrolyte concentration - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - sigma_e = ( - 0.1297 * (c_e / 1000) ** 3 - 2.51 * (c_e / 1000) ** 1.5 + 3.329 * (c_e / 1000) - ) - - # Nyman et al. (2008) does not provide temperature dependence - - return sigma_e diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Nyman2008/electrolyte_diffusivity_Nyman2008.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Nyman2008/electrolyte_diffusivity_Nyman2008.py deleted file mode 100644 index 8027f266d5..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Nyman2008/electrolyte_diffusivity_Nyman2008.py +++ /dev/null @@ -1,29 +0,0 @@ -def electrolyte_diffusivity_Nyman2008(c_e, T): - """ - 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:`pybamm.Symbol` - Dimensional electrolyte concentration - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - D_c_e = 8.794e-11 * (c_e / 1000) ** 2 - 3.972e-10 * (c_e / 1000) + 4.862e-10 - - # Nyman et al. (2008) does not provide temperature dependence - - return D_c_e diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Nyman2008/parameters.csv b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Nyman2008/parameters.csv deleted file mode 100644 index 2d177004a3..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Nyman2008/parameters.csv +++ /dev/null @@ -1,10 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrolyte properties,,, -Typical electrolyte concentration [mol.m-3],1000,Chen 2020, -Initial concentration in electrolyte [mol.m-3],1000,Chen 2020, -Cation transference number,0.2594,Chen 2020, -1 + dlnf/dlnc,1,, -Electrolyte diffusivity [m2.s-1],[function]electrolyte_diffusivity_Nyman2008,Nyman 2008, -Electrolyte conductivity [S.m-1],[function]electrolyte_conductivity_Nyman2008,Nyman 2008, diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_OKane2022/README.md b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_OKane2022/README.md deleted file mode 100644 index afbce52778..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_OKane2022/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# LiPF6 electrolyte parameters - -Parameters for a LiPF6 electrolyte, from the paper - -> Simon O'Kane, Weilong Ai, Ganesh Madabattula, Diego Alonso-Alvarez, Robert Timms, Valentin Sulzer, Jacqueline Edge, Billy Wu, Gregory Offer, and Monica Marinescu. ["Lithium-ion battery degradation: how to model it."](https://pubs.rsc.org/en/content/articlelanding/2022/cp/d2cp00417h) Physical Chemistry: Chemical Physics 24 (2022): 7909-7922 - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_OKane2022/__init__.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_OKane2022/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_OKane2022/electrolyte_conductivity_Nyman2008_arrhenius.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_OKane2022/electrolyte_conductivity_Nyman2008_arrhenius.py deleted file mode 100644 index 69d14debea..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_OKane2022/electrolyte_conductivity_Nyman2008_arrhenius.py +++ /dev/null @@ -1,41 +0,0 @@ -from pybamm import exp, constants - - -def electrolyte_conductivity_Nyman2008_arrhenius(c_e, T): - """ - Conductivity of LiPF6 in EC:EMC (3:7) as a function of ion concentration. The data - comes from [1], with Arrhenius temperature dependence added from [2]. - - 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. - .. [2] 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. - - Parameters - ---------- - c_e: :class:`pybamm.Symbol` - Dimensional electrolyte concentration - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - sigma_e = ( - 0.1297 * (c_e / 1000) ** 3 - 2.51 * (c_e / 1000) ** 1.5 + 3.329 * (c_e / 1000) - ) - - # Nyman et al. (2008) does not provide temperature dependence - # So use temperature dependence from Ecker et al. (2015) instead - - E_sigma_e = 17000 - arrhenius = exp(E_sigma_e / constants.R * (1 / 298.15 - 1 / T)) - - return sigma_e * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_OKane2022/electrolyte_diffusivity_Nyman2008_arrhenius.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_OKane2022/electrolyte_diffusivity_Nyman2008_arrhenius.py deleted file mode 100644 index c01bc66320..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_OKane2022/electrolyte_diffusivity_Nyman2008_arrhenius.py +++ /dev/null @@ -1,39 +0,0 @@ -from pybamm import exp, constants - - -def electrolyte_diffusivity_Nyman2008_arrhenius(c_e, T): - """ - Diffusivity of LiPF6 in EC:EMC (3:7) as a function of ion concentration. The data - comes from [1], with Arrhenius temperature dependence added from [2]. - - 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. - .. [2] 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. - - Parameters - ---------- - c_e: :class:`pybamm.Symbol` - Dimensional electrolyte concentration - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - D_c_e = 8.794e-11 * (c_e / 1000) ** 2 - 3.972e-10 * (c_e / 1000) + 4.862e-10 - - # Nyman et al. (2008) does not provide temperature dependence - # So use temperature dependence from Ecker et al. (2015) instead - - E_D_c_e = 17000 - arrhenius = exp(E_D_c_e / constants.R * (1 / 298.15 - 1 / T)) - - return D_c_e * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_OKane2022/parameters.csv b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_OKane2022/parameters.csv deleted file mode 100644 index 97a438f793..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_OKane2022/parameters.csv +++ /dev/null @@ -1,10 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrolyte properties,,, -Typical electrolyte concentration [mol.m-3],1000,Chen 2020, -Initial concentration in electrolyte [mol.m-3],1000,Chen 2020, -Cation transference number,0.2594,Chen 2020, -1 + dlnf/dlnc,1,, -Electrolyte diffusivity [m2.s-1],[function]electrolyte_diffusivity_Nyman2008_arrhenius,OKane 2022, -Electrolyte conductivity [S.m-1],[function]electrolyte_conductivity_Nyman2008_arrhenius,OKane 2022, diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ramadass2004/README.md b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ramadass2004/README.md deleted file mode 100644 index ea35a980e6..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ramadass2004/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# LiPF6 electrolyte parameters - -Parameters for a LiPF6 electrolyte, from the paper - -> Marquis, S. G., Sulzer, V., Timms, R., Please, C. P., & Chapman, S. J. (2019). “An asymptotic derivation of a single particle model with electrolyte”. [Journal of The Electrochemical Society](https://doi.org/10.1149/2.0341915jes), 166(15), A3693-A3706. -> P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." (2004) - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ramadass2004/__init__.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ramadass2004/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ramadass2004/electrolyte_conductivity_Ramadass2004.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ramadass2004/electrolyte_conductivity_Ramadass2004.py deleted file mode 100644 index 884478a6e1..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ramadass2004/electrolyte_conductivity_Ramadass2004.py +++ /dev/null @@ -1,43 +0,0 @@ -from pybamm import exp, constants - - -def electrolyte_conductivity_Ramadass2004(c_e, T): - """ - Conductivity of LiPF6 in EC:DMC as a function of ion concentration. - Concentration should be in dm3 in the function. - - References - ---------- - .. [1] P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko - N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." - (2004) - - Parameters - ---------- - c_e: :class:`pybamm.Symbol` - Dimensional electrolyte concentration - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - # mol.m-3 to mol.dm-3, original function is likely in mS/cm - # The function is not in Arora 2000 as reported in Ramadass 2004 - - cm = 1e-6 * c_e # here it should be only 1e-3 - - sigma_e = ( - 4.1253 * (10 ** (-4)) - + 5.007 * cm - - 4.7212 * (10**3) * (cm**2) - + 1.5094 * (10**6) * (cm**3) - - 1.6018 * (10**8) * (cm**4) - ) * 1e3 # and here there should not be an exponent - - E_k_e = 34700 - arrhenius = exp(E_k_e / constants.R * (1 / 298.15 - 1 / T)) - - return sigma_e * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ramadass2004/electrolyte_diffusivity_Ramadass2004.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ramadass2004/electrolyte_diffusivity_Ramadass2004.py deleted file mode 100644 index 22134a70b7..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ramadass2004/electrolyte_diffusivity_Ramadass2004.py +++ /dev/null @@ -1,32 +0,0 @@ -from pybamm import exp, constants - - -def electrolyte_diffusivity_Ramadass2004(c_e, T): - """ - Diffusivity of LiPF6 in EC:DMC as a function of ion concentration. - - References - ---------- - .. [1] P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko - N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." - (2004) - - Parameters - ---------- - c_e: :class:`pybamm.Symbol` - Dimensional electrolyte concentration - T: :class:`pybamm.Symbol` - Dimensional temperature - - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - D_c_e = 7.5e-10 - E_D_e = 37040 - arrhenius = exp(E_D_e / constants.R * (1 / 298.15 - 1 / T)) - - return D_c_e * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ramadass2004/parameters.csv b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ramadass2004/parameters.csv deleted file mode 100644 index 50374d9dd9..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Ramadass2004/parameters.csv +++ /dev/null @@ -1,10 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrolyte properties,,, -Typical electrolyte concentration [mol.m-3],1000,Ramadass, -Initial concentration in electrolyte [mol.m-3],1000,Ramadass, -Cation transference number,0.363,Ramadass, -1 + dlnf/dlnc,1,, -Electrolyte diffusivity [m2.s-1],[function]electrolyte_diffusivity_Ramadass2004,, -Electrolyte conductivity [S.m-1],[function]electrolyte_conductivity_Ramadass2004,, diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Valoen2005/README.md b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Valoen2005/README.md deleted file mode 100644 index 81065d2876..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Valoen2005/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# LiPF6 electrolyte parameters - -Parameters for a LiPF6 electrolyte, from the paper - -> Valøen, Lars Ole, and Jan N. Reimers. "Transport properties of LiPF6-based Li-ion battery electrolytes." Journal of The Electrochemical Society 152.5 (2005): A882-A891. [doi: 10.1149/1.1872737](http://dx.doi.org/10.1149/1.1872737) diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Valoen2005/__init__.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Valoen2005/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Valoen2005/electrolyte_conductivity_Valoen2005.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Valoen2005/electrolyte_conductivity_Valoen2005.py deleted file mode 100644 index 7058a4a55f..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Valoen2005/electrolyte_conductivity_Valoen2005.py +++ /dev/null @@ -1,35 +0,0 @@ -def electrolyte_conductivity_Valoen2005(c_e, T): - """ - Conductivity of LiPF6 in EC:DMC as a function of ion concentration, from [1] - (eqn 17) - - References - ---------- - .. [1] Valøen, Lars Ole, and Jan N. Reimers. "Transport properties of LiPF6-based - Li-ion battery electrolytes." Journal of The Electrochemical Society 152.5 (2005): - A882-A891. - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Dimensional electrolyte concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Dimensional temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Dimensional electrolyte conductivity [S.m-1] - """ - # mol/m3 to molar - c_e = c_e / 1000 - # mS/cm to S/m - return (1e-3 / 1e-2) * ( - c_e - * ( - (-10.5 + 0.0740 * T - 6.96e-5 * T**2) - + c_e * (0.668 - 0.0178 * T + 2.80e-5 * T**2) - + c_e**2 * (0.494 - 8.86e-4 * T) - ) - ** 2 - ) diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Valoen2005/electrolyte_diffusivity_Valoen2005.py b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Valoen2005/electrolyte_diffusivity_Valoen2005.py deleted file mode 100644 index 9be8653829..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Valoen2005/electrolyte_diffusivity_Valoen2005.py +++ /dev/null @@ -1,32 +0,0 @@ -def electrolyte_diffusivity_Valoen2005(c_e, T): - """ - Diffusivity of LiPF6 in EC:DMC as a function of ion concentration, from [1] (eqn 14) - - References - ---------- - .. [1] Valøen, Lars Ole, and Jan N. Reimers. "Transport properties of LiPF6-based - Li-ion battery electrolytes." Journal of The Electrochemical Society 152.5 (2005): - A882-A891. - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Dimensional electrolyte concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Dimensional temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Dimensional electrolyte diffusivity [m2.s-1] - """ - # mol/m3 to molar - c_e = c_e / 1000 - - T_g = 229 + 5 * c_e - D_0 = -4.43 - 54 / (T - T_g) - D_1 = -0.22 - - # cm2/s to m2/s - # note, in the Valoen paper, ln means log10, so its inverse is 10^x - return (10 ** (D_0 + D_1 * c_e)) * 1e-4 diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Valoen2005/parameters.csv b/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Valoen2005/parameters.csv deleted file mode 100644 index 2c6d668798..0000000000 --- a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Valoen2005/parameters.csv +++ /dev/null @@ -1,10 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrolyte properties,,, -Typical electrolyte concentration [mol.m-3],1000,,By convention -Initial concentration in electrolyte [mol.m-3],1000,,By convention -Cation transference number,0.38,,Assumed to be constant -Electrolyte diffusivity [m2.s-1],[function]electrolyte_diffusivity_Valoen2005,, -Electrolyte conductivity [S.m-1],[function]electrolyte_conductivity_Valoen2005,, -1 + dlnf/dlnc,1,, \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_charge_from_empty_Mohtat2020/parameters.csv b/pybamm/input/parameters/lithium_ion/experiments/1C_charge_from_empty_Mohtat2020/parameters.csv deleted file mode 100644 index 72098e6c04..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/1C_charge_from_empty_Mohtat2020/parameters.csv +++ /dev/null @@ -1,23 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Temperature -Reference temperature [K],298.15,25C, -Negative current collector surface heat transfer coefficient [W.m-2.K-1],0,, -Positive current collector surface heat transfer coefficient [W.m-2.K-1],0,, -Negative tab heat transfer coefficient [W.m-2.K-1],0,, -Positive tab heat transfer coefficient [W.m-2.K-1],0,, -Edge heat transfer coefficient [W.m-2.K-1],5,Peyman MPM, -Total heat transfer coefficient [W.m-2.K-1],5,Peyman MPM, -Ambient temperature [K], 298.15,, -,,, -# Electrical -Number of electrodes connected in parallel to make a cell,1,, -Number of cells connected in series to make a battery,1,, -Lower voltage cut-off [V],2.8,, -Upper voltage cut-off [V],4.2,, -,,, -# Initial conditions -Initial concentration in negative electrode [mol.m-3],48.8682,Peyman MPM, x0 (0.0017) * Csmax_n -Initial concentration in positive electrode [mol.m-3],31513.0,Peyman MPM, y0 (0.8907) * Csmax_p -Initial temperature [K],298.15,, diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Chen2020/README.md b/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Chen2020/README.md deleted file mode 100644 index 49160ef9fd..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Chen2020/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 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."](https://iopscience.iop.org/article/10.1149/1945-7111/ab9050) Journal of the Electrochemical Society 167 (2020): 080534 - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Chen2020/parameters.csv b/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Chen2020/parameters.csv deleted file mode 100644 index 398d5c26e8..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Chen2020/parameters.csv +++ /dev/null @@ -1,18 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Temperature -Reference temperature [K],298.15,25C, -Total heat transfer coefficient [W.m-2.K-1],10,default, -Ambient temperature [K],298.15,, -,,, -# Electrical -Number of electrodes connected in parallel to make a cell,1,, -Number of cells connected in series to make a battery,1,, -Lower voltage cut-off [V],2.5,, -Upper voltage cut-off [V],4.2,, -,,, -# Initial conditions -Initial concentration in negative electrode [mol.m-3],29866,Chen 2020, -Initial concentration in positive electrode [mol.m-3],17038,Chen 2020, -Initial temperature [K],298.15,, diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ecker2015/README.md b/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ecker2015/README.md deleted file mode 100644 index e3eb73f47e..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ecker2015/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# 1C discharge from full - -Discharge lithium-ion battery from full charge at 1C, using the initial conditions from the paper - -> 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.. diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ecker2015/parameters.csv b/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ecker2015/parameters.csv deleted file mode 100644 index c5d0488ece..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ecker2015/parameters.csv +++ /dev/null @@ -1,24 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Temperature -Reference temperature [K],296.15,23C, -Negative current collector surface heat transfer coefficient [W.m-2.K-1],10,Assume uniform heat loss, -Positive current collector surface heat transfer coefficient [W.m-2.K-1],10,Assume uniform heat loss, -Negative tab heat transfer coefficient [W.m-2.K-1],10,Assume uniform heat loss, -Positive tab heat transfer coefficient [W.m-2.K-1],10,Assume uniform heat loss, -Edge heat transfer coefficient [W.m-2.K-1],10,Assume uniform heat loss, -Total heat transfer coefficient [W.m-2.K-1],10,Assume uniform heat loss, -Ambient temperature [K],298.15,, - -,,, -# Electrical -Number of electrodes connected in parallel to make a cell,1,, -Number of cells connected in series to make a battery,1,, -Lower voltage cut-off [V],2.5,, -Upper voltage cut-off [V],4.2,, -,,, -# Initial conditions -Initial concentration in negative electrode [mol.m-3], 26120.05,, -Initial concentration in positive electrode [mol.m-3], 12630.8,, -Initial temperature [K],298.15,, diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Kim2011/README.md b/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Kim2011/README.md deleted file mode 100644 index f83025c2ff..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Kim2011/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 1C discharge from full - -Discharge lithium-ion battery from full charge at 1C, using the initial conditions from the paper - -> Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. (2011). Multi-domain modeling of lithium-ion batteries encompassing multi-physics in varied length scales. Journal of The Electrochemical Society, 158(8), A955-A969. - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Kim2011/parameters.csv b/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Kim2011/parameters.csv deleted file mode 100644 index 35c17b584f..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Kim2011/parameters.csv +++ /dev/null @@ -1,24 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Temperature -Reference temperature [K],298.15,25C, -Negative current collector surface heat transfer coefficient [W.m-2.K-1],0,, -Positive current collector surface heat transfer coefficient [W.m-2.K-1],0,, -Negative tab heat transfer coefficient [W.m-2.K-1],25,, -Positive tab heat transfer coefficient [W.m-2.K-1],25,, -Edge heat transfer coefficient [W.m-2.K-1],0.3,, -Total heat transfer coefficient [W.m-2.K-1],25,, -Ambient temperature [K],298.15,, - -,,, -# Electrical -Number of electrodes connected in parallel to make a cell,1,, -Number of cells connected in series to make a battery,1,, -Lower voltage cut-off [V],2.7,, -Upper voltage cut-off [V],4.2,, -,,, -# Initial conditions -Initial concentration in negative electrode [mol.m-3],18081,0.63*2.84E4, -Initial concentration in positive electrode [mol.m-3],20090,0.41*4.9E4, -Initial temperature [K],298.15,, diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Marquis2019/README.md b/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Marquis2019/README.md deleted file mode 100644 index 92c6a810ae..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Marquis2019/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 1C discharge from full - -Discharge lithium-ion battery from full charge at 1C, using the initial conditions from the paper - -> Marquis, S. G., Sulzer, V., Timms, R., Please, C. P., & Chapman, S. J. (2019). “An asymptotic derivation of a single particle model with electrolyte”. [Journal of The Electrochemical Society](https://doi.org/10.1149/2.0341915jes), 166(15), A3693-A3706. - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Marquis2019/parameters.csv b/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Marquis2019/parameters.csv deleted file mode 100644 index faa617476d..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Marquis2019/parameters.csv +++ /dev/null @@ -1,23 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Temperature -Reference temperature [K],298.15,25C, -Ambient temperature [K],298.15,, -Negative current collector surface heat transfer coefficient [W.m-2.K-1],0,, -Positive current collector surface heat transfer coefficient [W.m-2.K-1],0,, -Negative tab heat transfer coefficient [W.m-2.K-1],10,, -Positive tab heat transfer coefficient [W.m-2.K-1],10,, -Edge heat transfer coefficient [W.m-2.K-1],0.3,, -Total heat transfer coefficient [W.m-2.K-1],10,, -,,, -# Electrical -Number of electrodes connected in parallel to make a cell,1,, -Number of cells connected in series to make a battery,1,, -Lower voltage cut-off [V],3.105,, -Upper voltage cut-off [V],4.1,, -,,, -# Initial conditions -Initial concentration in negative electrode [mol.m-3],19986.609595075,Scott Moura FastDFN, -Initial concentration in positive electrode [mol.m-3],30730.7554385565,Scott Moura FastDFN, -Initial temperature [K],298.15,, diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_ORegan2022/README.md b/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_ORegan2022/README.md deleted file mode 100644 index 904a40e7c9..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_ORegan2022/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 1C discharge from full - -Discharge lithium-ion battery from full charge at 1C, using the initial conditions from the paper - -> Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma Kendrick. ["Thermal-electrochemical parameters of a high energy lithium-ion cylindrical battery."](https://www.sciencedirect.com/science/article/pii/S0013468622008593) Electrochimica Acta 425 (2022): 140700 - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_ORegan2022/parameters.csv b/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_ORegan2022/parameters.csv deleted file mode 100644 index c613fd6f99..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_ORegan2022/parameters.csv +++ /dev/null @@ -1,18 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Temperature -Reference temperature [K],298.15,25C, -Total heat transfer coefficient [W.m-2.K-1],10,default, -Ambient temperature [K],298.15,, -,,, -# Electrical -Number of electrodes connected in parallel to make a cell,1,, -Number of cells connected in series to make a battery,1,, -Lower voltage cut-off [V],2.5,, -Upper voltage cut-off [V],4.4,, -,,, -# Initial conditions -Initial concentration in negative electrode [mol.m-3],28866,Chen 2020, -Initial concentration in positive electrode [mol.m-3],13975,Chen 2020, -Initial temperature [K],298.15,, diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ramadass2004/README.md b/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ramadass2004/README.md deleted file mode 100644 index 92c6a810ae..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ramadass2004/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 1C discharge from full - -Discharge lithium-ion battery from full charge at 1C, using the initial conditions from the paper - -> Marquis, S. G., Sulzer, V., Timms, R., Please, C. P., & Chapman, S. J. (2019). “An asymptotic derivation of a single particle model with electrolyte”. [Journal of The Electrochemical Society](https://doi.org/10.1149/2.0341915jes), 166(15), A3693-A3706. - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ramadass2004/parameters.csv b/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ramadass2004/parameters.csv deleted file mode 100644 index 09fdb802c8..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ramadass2004/parameters.csv +++ /dev/null @@ -1,22 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Temperature -Reference temperature [K],298.15,25C, -Ambient temperature [K], 298.15,, -Negative current collector surface heat transfer coefficient [W.m-2.K-1],0,, -Positive current collector surface heat transfer coefficient [W.m-2.K-1],0,, -Negative tab heat transfer coefficient [W.m-2.K-1],10,, -Positive tab heat transfer coefficient [W.m-2.K-1],10,, -Edge heat transfer coefficient [W.m-2.K-1],0.3,, -,,, -# Electrical -Number of electrodes connected in parallel to make a cell,1,, -Number of cells connected in series to make a battery,1,, -Lower voltage cut-off [V],2.8,, -Upper voltage cut-off [V],4.2,, -,,, -# Initial conditions -Initial concentration in negative electrode [mol.m-3],22610.7,Ramadass 2002, -Initial concentration in positive electrode [mol.m-3],25777.5,Ramadass 2002, -Initial temperature [K],298.15,, diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Xu2019/README.md b/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Xu2019/README.md deleted file mode 100644 index af08096b1e..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Xu2019/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 1C discharge from full - -Discharge lithium-ion battery from full charge at 1C, using the initial conditions from the paper - -> Xu, Shanshan, Chen, Kuan-Hung, Dasgupta, Neil P., Siegel, Jason B. and Stefanopoulou, Anna G. "Evolution of Dead Lithium Growth in Lithium Metal Batteries: Experimentally Validated Model of the Apparent Capacity Loss." Journal of The Electrochemical Society 166.14 (2019): A3456-A3463. - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Xu2019/parameters.csv b/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Xu2019/parameters.csv deleted file mode 100644 index dc33db77bf..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Xu2019/parameters.csv +++ /dev/null @@ -1,17 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Temperature -Ambient temperature [K],298.15,25C, -Reference temperature [K],298.15,25C, -Heat transfer coefficient [W.m-2.K-1],10,, -,,, -# Electrical -Number of electrodes connected in parallel to make a cell,1,, -Number of cells connected in series to make a battery,1,, -Lower voltage cut-off [V],3.5,, -Upper voltage cut-off [V],4.2,, -,,, -# Initial conditions -Initial concentration in positive electrode [mol.m-3],4631,48230*0.096 adjusted so that initial voltage is <4.2V, -Initial temperature [K],298.15,, diff --git a/pybamm/input/parameters/lithium_ion/experiments/4C_discharge_from_full_Prada2013/README.md b/pybamm/input/parameters/lithium_ion/experiments/4C_discharge_from_full_Prada2013/README.md deleted file mode 100644 index 997e2e9233..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/4C_discharge_from_full_Prada2013/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 1C discharge from full - -Discharge lithium-ion battery from full charge at 4C, using the initial conditions from the paper - -> Prada, E., Di Domenico, D., Creff, Y., Bernard, J., Sauvant-Moynot, V., & Huet, F. (2013). A simplified electrochemical and thermal aging model of LiFePO4-graphite Li-ion batteries: power and capacity fade simulations. [Journal of The Electrochemical Society](https://doi.org/10.1149/2.053304jes), 160(4), A616. - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/experiments/4C_discharge_from_full_Prada2013/parameters.csv b/pybamm/input/parameters/lithium_ion/experiments/4C_discharge_from_full_Prada2013/parameters.csv deleted file mode 100644 index ab13c6b7b4..0000000000 --- a/pybamm/input/parameters/lithium_ion/experiments/4C_discharge_from_full_Prada2013/parameters.csv +++ /dev/null @@ -1,19 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Temperature,,, -Reference temperature [K],298.15,25C, -Heat transfer coefficient [W.m-2.K-1],10,, -Ambient temperature [K],298.15,, -,,, -,,, -# Electrical,,, -Number of electrodes connected in parallel to make a cell,1,, -Number of cells connected in series to make a battery,1,, -Lower voltage cut-off [V],2,, -Upper voltage cut-off [V],4.4,, -,,, -# Initial conditions,,, -Initial concentration in negative electrode [mol.m-3],28831.45783,Minimized to Severson Data, -Initial concentration in positive electrode [mol.m-3],35.3766672,Minimized to Severson Data, -Initial temperature [K],298.15,, diff --git a/pybamm/input/parameters/lithium_ion/experiments/__init__.py b/pybamm/input/parameters/lithium_ion/experiments/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/lithium_platings/__init__.py b/pybamm/input/parameters/lithium_ion/lithium_platings/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/README.md b/pybamm/input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/README.md deleted file mode 100644 index ce38eb38c0..0000000000 --- a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Lithium plating parameters - -Some example parameters for lithium plating from the paper: - -> O’Kane, S. E. J., Campbell, I. D., Marzook, M. W. J., Offer, G. J., & Marinescu, M. (2020) Physical origin of the differential voltage minimum associated with lithium plating in Li-ion batteries. Journal of The Electrochemical Society 167(3), 090540. - -Note: this parameter set does not claim to be representative of the true parameter values. Instead these are parameter values that were used to fit plating models to observed experimental data in the referenced papers. diff --git a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/__init__.py b/pybamm/input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/parameters.csv b/pybamm/input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/parameters.csv deleted file mode 100644 index e9a8b381a1..0000000000 --- a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/parameters.csv +++ /dev/null @@ -1,11 +0,0 @@ -Name [units],Value,Reference,Notes -,,, -,,, -# Lithium plating parameters,,, -Lithium metal partial molar volume [m3.mol-1],1.30E-05,Yang2017, -Lithium plating kinetic rate constant [m.s-1],1E-10,, -Exchange-current density for plating [A.m-2],[function]plating_exchange_current_density_OKane2020,, -Exchange-current density for stripping [A.m-2],[function]stripping_exchange_current_density_OKane2020,, -Initial plated lithium concentration [mol.m-3],0.00E+00,, -Typical plated lithium concentration [mol.m-3],1000,1 molar, -Lithium plating transfer coefficient,0.5,, \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/plating_exchange_current_density_OKane2020.py b/pybamm/input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/plating_exchange_current_density_OKane2020.py deleted file mode 100644 index 06db70d846..0000000000 --- a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/plating_exchange_current_density_OKane2020.py +++ /dev/null @@ -1,29 +0,0 @@ -from pybamm import constants, Parameter - - -def plating_exchange_current_density_OKane2020(c_e, c_Li, T): - """ - Exchange-current density for Li plating reaction [A.m-2]. - References - ---------- - .. [1] O’Kane, Simon EJ, Ian D. Campbell, Mohamed WJ Marzook, Gregory J. Offer, and - Monica Marinescu. "Physical origin of the differential voltage minimum associated - with lithium plating in Li-ion batteries." Journal of The Electrochemical Society - 167, no. 9 (2020): 090540. - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_Li : :class:`pybamm.Symbol` - Plated lithium concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - - k_plating = Parameter("Lithium plating kinetic rate constant [m.s-1]") - - return constants.F * k_plating * c_e diff --git a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/stripping_exchange_current_density_OKane2020.py b/pybamm/input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/stripping_exchange_current_density_OKane2020.py deleted file mode 100644 index 7ea44e9c01..0000000000 --- a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/stripping_exchange_current_density_OKane2020.py +++ /dev/null @@ -1,35 +0,0 @@ -from pybamm import constants, Parameter - - -def stripping_exchange_current_density_OKane2020(c_e, c_Li, T): - """ - Exchange-current density for Li stripping reaction [A.m-2]. - - References - ---------- - - .. [1] O’Kane, Simon EJ, Ian D. Campbell, Mohamed WJ Marzook, Gregory J. Offer, and - Monica Marinescu. "Physical origin of the differential voltage minimum associated - with lithium plating in Li-ion batteries." Journal of The Electrochemical Society - 167, no. 9 (2020): 090540. - - Parameters - ---------- - - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_Li : :class:`pybamm.Symbol` - Plated lithium concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - - k_plating = Parameter("Lithium plating kinetic rate constant [m.s-1]") - - return constants.F * k_plating * c_Li diff --git a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/README.md b/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/README.md deleted file mode 100644 index 82095310dc..0000000000 --- a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Lithium plating parameters - -Some example parameters for lithium plating from the paper: - -> Simon O'Kane, Weilong Ai, Ganesh Madabattula, Diego Alonso-Alvarez, Robert Timms, Valentin Sulzer, Jacqueline Edge, Billy Wu, Gregory Offer, and Monica Marinescu. ["Lithium-ion battery degradation: how to model it."](https://pubs.rsc.org/en/content/articlelanding/2022/cp/d2cp00417h) Physical Chemistry: Chemical Physics 24 (2022): 7909-7922 - -and references therein. - -Note: this parameter set does not claim to be representative of the true parameter values. These are merely the parameter values that were used in the referenced papers. diff --git a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/SEI_limited_dead_lithium_OKane2022.py b/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/SEI_limited_dead_lithium_OKane2022.py deleted file mode 100644 index 40e3906065..0000000000 --- a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/SEI_limited_dead_lithium_OKane2022.py +++ /dev/null @@ -1,30 +0,0 @@ -from pybamm import Parameter - - -def SEI_limited_dead_lithium_OKane2022(L_sei): - """ - Decay rate for dead lithium formation [s-1]. - References - ---------- - .. [1] Simon E. J. O'Kane, Weilong Ai, Ganesh Madabattula, Diega Alonso-Alvarez, - Robert Timms, Valentin Sulzer, Jaqueline Sophie Edge, Billy Wu, Gregory J. Offer - and Monica Marinescu. "Lithium-ion battery degradation: how to model it." - Physical Chemistry: Chemical Physics 24, no. 13 (2022): 7909-7922. - Parameters - ---------- - L_sei : :class:`pybamm.Symbol` - Total SEI thickness [m] - Returns - ------- - :class:`pybamm.Symbol` - Dead lithium decay rate [s-1] - """ - - gamma_0 = Parameter("Dead lithium decay constant [s-1]") - L_inner_0 = Parameter("Initial inner SEI thickness [m]") - L_outer_0 = Parameter("Initial outer SEI thickness [m]") - L_sei_0 = L_inner_0 + L_outer_0 - - gamma = gamma_0 * L_sei_0 / L_sei - - return gamma diff --git a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/__init__.py b/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/parameters.csv b/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/parameters.csv deleted file mode 100644 index 250ee33c39..0000000000 --- a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/parameters.csv +++ /dev/null @@ -1,13 +0,0 @@ -Name [units],Value,Reference,Notes -,,, -,,, -# Lithium plating parameters,,, -Lithium metal partial molar volume [m3.mol-1],1.30E-05,Yang2017, -Lithium plating kinetic rate constant [m.s-1],1E-9,, -Exchange-current density for plating [A.m-2],[function]plating_exchange_current_density_OKane2020,, -Exchange-current density for stripping [A.m-2],[function]stripping_exchange_current_density_OKane2020,, -Initial plated lithium concentration [mol.m-3],0.00E+00,, -Typical plated lithium concentration [mol.m-3],1000,1 molar, -Lithium plating transfer coefficient,0.65,, -Dead lithium decay constant [s-1],1E-6,, -Dead lithium decay rate [s-1],[function]SEI_limited_dead_lithium_OKane2022,, \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/plating_exchange_current_density_OKane2020.py b/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/plating_exchange_current_density_OKane2020.py deleted file mode 100644 index 06db70d846..0000000000 --- a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/plating_exchange_current_density_OKane2020.py +++ /dev/null @@ -1,29 +0,0 @@ -from pybamm import constants, Parameter - - -def plating_exchange_current_density_OKane2020(c_e, c_Li, T): - """ - Exchange-current density for Li plating reaction [A.m-2]. - References - ---------- - .. [1] O’Kane, Simon EJ, Ian D. Campbell, Mohamed WJ Marzook, Gregory J. Offer, and - Monica Marinescu. "Physical origin of the differential voltage minimum associated - with lithium plating in Li-ion batteries." Journal of The Electrochemical Society - 167, no. 9 (2020): 090540. - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_Li : :class:`pybamm.Symbol` - Plated lithium concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - - k_plating = Parameter("Lithium plating kinetic rate constant [m.s-1]") - - return constants.F * k_plating * c_e diff --git a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/stripping_exchange_current_density_OKane2020.py b/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/stripping_exchange_current_density_OKane2020.py deleted file mode 100644 index 7ea44e9c01..0000000000 --- a/pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/stripping_exchange_current_density_OKane2020.py +++ /dev/null @@ -1,35 +0,0 @@ -from pybamm import constants, Parameter - - -def stripping_exchange_current_density_OKane2020(c_e, c_Li, T): - """ - Exchange-current density for Li stripping reaction [A.m-2]. - - References - ---------- - - .. [1] O’Kane, Simon EJ, Ian D. Campbell, Mohamed WJ Marzook, Gregory J. Offer, and - Monica Marinescu. "Physical origin of the differential voltage minimum associated - with lithium plating in Li-ion batteries." Journal of The Electrochemical Society - 167, no. 9 (2020): 090540. - - Parameters - ---------- - - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_Li : :class:`pybamm.Symbol` - Plated lithium concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - - k_plating = Parameter("Lithium plating kinetic rate constant [m.s-1]") - - return constants.F * k_plating * c_Li diff --git a/pybamm/input/parameters/lithium_ion/lithium_platings/yang2017_Li_plating/README.md b/pybamm/input/parameters/lithium_ion/lithium_platings/yang2017_Li_plating/README.md deleted file mode 100644 index 77f87c694f..0000000000 --- a/pybamm/input/parameters/lithium_ion/lithium_platings/yang2017_Li_plating/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# SEI parameters - -Parameters for lithium plating from the paper: - -> Yang, X., Leng, Y., Zhang, G., Ge, S., Wang, C. (2017). Modeling of lithium plating induced aging of lithium-ion batteries: Transition from linear to nonlinear aging. Journal of Power Sources, 360, 28-40. diff --git a/pybamm/input/parameters/lithium_ion/lithium_platings/yang2017_Li_plating/parameters.csv b/pybamm/input/parameters/lithium_ion/lithium_platings/yang2017_Li_plating/parameters.csv deleted file mode 100644 index c14d3ce7cd..0000000000 --- a/pybamm/input/parameters/lithium_ion/lithium_platings/yang2017_Li_plating/parameters.csv +++ /dev/null @@ -1,9 +0,0 @@ -Name [units],Value,Reference,Notes -,,, -,,, -# Lithium plating parameters,,, -Lithium metal partial molar volume [m3.mol-1],1.30E-05,Yang2017,6.94e-3/534 -Exchange-current density for plating [A.m-2],0.001,, -Initial plated lithium concentration [mol.m-3],0.00E+00,, -Typical plated lithium concentration [mol.m-3],1000,1 molar, -Lithium plating transfer coefficient,0.7,, \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/__init__.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/__init__.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/README.md b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/README.md deleted file mode 100644 index fb7e086d5c..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# LG M50 Graphite negative electrode parameters - -Parameters for a LG M50 graphite negative electrode, 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."](https://iopscience.iop.org/article/10.1149/1945-7111/ab9050) Journal of the Electrochemical Society 167 (2020): 080534 - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/__init__.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/graphite_LGM50_electrolyte_exchange_current_density_Chen2020.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/graphite_LGM50_electrolyte_exchange_current_density_Chen2020.py deleted file mode 100644 index 03ff68b00d..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/graphite_LGM50_electrolyte_exchange_current_density_Chen2020.py +++ /dev/null @@ -1,40 +0,0 @@ -from pybamm import exp, constants - - -def graphite_LGM50_electrolyte_exchange_current_density_Chen2020( - c_e, c_s_surf, c_s_max, T -): - """ - Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in - EC:DMC. - - References - ---------- - .. [1] 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." Journal of the - Electrochemical Society 167 (2020): 080534. - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - m_ref = 6.48e-7 # (A/m2)(mol/m3)**1.5 - includes ref concentrations - E_r = 35000 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - return ( - m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 - ) diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/graphite_LGM50_ocp_Chen2020.csv b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/graphite_LGM50_ocp_Chen2020.csv deleted file mode 100644 index fe4dd8b61d..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/graphite_LGM50_ocp_Chen2020.csv +++ /dev/null @@ -1,243 +0,0 @@ -# OCP data for LG M50 graphite negative electrode -# sto,ocp -# extra point to avoid extrapolation -0,1.81772748379334 -# experimentally measured data -0.0312962309919435,1.08288070000000 -0.0349990174231383,0.995937940000000 -0.0387017984426739,0.900233980000000 -0.0424045760400907,0.796494310000000 -0.0461073567667969,0.733544290000000 -0.0498101472864833,0.666643140000000 -0.0535129169550513,0.641371490000000 -0.0572156800080452,0.598138690000000 -0.0609184495648372,0.567083600000000 -0.0646212178896581,0.547461810000000 -0.0683239899372943,0.530683990000000 -0.0720267516206726,0.513047340000000 -0.0757295119643203,0.493940920000000 -0.0794322723972667,0.479262740000000 -0.0831350309398288,0.460652590000000 -0.0868377862970441,0.459927260000000 -0.0905405444092937,0.438015010000000 -0.0942433124962634,0.424386650000000 -0.0979460700715639,0.411502690000000 -0.101648825029857,0.400336590000000 -0.105351579051700,0.389571340000000 -0.109054336366249,0.377565380000000 -0.112757097430127,0.362925410000000 -0.116459849153289,0.343570860000000 -0.120162608086248,0.340631400000000 -0.123865356984332,0.322994680000000 -0.127568112208028,0.313794580000000 -0.131270864460474,0.307953860000000 -0.134973620696607,0.292073190000000 -0.138676382618935,0.286976870000000 -0.142379130218803,0.274054770000000 -0.146081890204289,0.267049700000000 -0.149784649866357,0.258574930000000 -0.153487405398072,0.252657830000000 -0.157190175658005,0.248267770000000 -0.160892939040625,0.241434500000000 -0.164595700624986,0.233627780000000 -0.168298470128353,0.229562180000000 -0.172001223759462,0.223702360000000 -0.175703987585269,0.221812710000000 -0.179406738528351,0.220896510000000 -0.183109501186799,0.219426800000000 -0.186812285743759,0.218300640000000 -0.190515043988865,0.218453330000000 -0.194217798449951,0.217537150000000 -0.197920560933317,0.217193570000000 -0.201623337530448,0.216353730000000 -0.205326099907333,0.216678220000000 -0.209028863421514,0.217384440000000 -0.212731637811268,0.214693130000000 -0.216434400018689,0.215418460000000 -0.220137158758552,0.214654950000000 -0.223839932905728,0.213547900000000 -0.227542704859571,0.213929640000000 -0.231245472941435,0.210742060000000 -0.234948246608884,0.208737880000000 -0.238651007030528,0.204653190000000 -0.242353771096756,0.202057320000000 -0.246056534779736,0.197743580000000 -0.249759296042551,0.194441470000000 -0.253462075305427,0.191902850000000 -0.257164855541649,0.188505310000000 -0.260867623398810,0.185813990000000 -0.264570388343682,0.183275370000000 -0.268273141960127,0.181576590000000 -0.271975899008113,0.178140880000000 -0.275678670804876,0.175296860000000 -0.279381437563501,0.171937500000000 -0.283084208890615,0.169341610000000 -0.286786983838099,0.167566490000000 -0.290489741421874,0.166096760000000 -0.294192511321947,0.164149850000000 -0.297895287824777,0.162603780000000 -0.301598064066139,0.162241130000000 -0.305300829766264,0.160027000000000 -0.309003605818808,0.158270960000000 -0.312706366234020,0.158805400000000 -0.316409128935726,0.155522380000000 -0.320111892208735,0.155808690000000 -0.323814657710233,0.152201180000000 -0.327517439807890,0.151113200000000 -0.331220205464159,0.149872530000000 -0.334922968466154,0.148746370000000 -0.338625750725335,0.146780370000000 -0.342328527763104,0.146207760000000 -0.346031309868876,0.145558790000000 -0.349734084397854,0.143898190000000 -0.353436854897322,0.143592790000000 -0.357139627707061,0.142428460000000 -0.360842411597988,0.140386120000000 -0.364545174861915,0.138820960000000 -0.368247948241878,0.139546280000000 -0.371950714867844,0.139469920000000 -0.375653482399388,0.137809340000000 -0.379356259818551,0.139737140000000 -0.383059044551139,0.136988580000000 -0.386761819665088,0.135232540000000 -0.390464596573676,0.134411780000000 -0.394167374371778,0.135289800000000 -0.397870146744550,0.135079850000000 -0.401572911082096,0.136473210000000 -0.405275673810652,0.136015120000000 -0.408978444047454,0.134354520000000 -0.412681205117036,0.133476500000000 -0.416383982346429,0.134831700000000 -0.420086760850234,0.132751180000000 -0.423789528171715,0.132865710000000 -0.427492295549261,0.132636670000000 -0.431195060865253,0.134564470000000 -0.434897836788305,0.134717180000000 -0.438600610939060,0.133953690000000 -0.442303381655562,0.134488140000000 -0.446006148119762,0.133476500000000 -0.449708925504862,0.132980230000000 -0.453411684191202,0.132598490000000 -0.457114440916438,0.133381070000000 -0.460817193028781,0.133094760000000 -0.464519943384457,0.132751180000000 -0.468222694005807,0.134430870000000 -0.471925449273306,0.133152020000000 -0.475628214901007,0.132713000000000 -0.479330982475788,0.133018400000000 -0.483033746549207,0.132789360000000 -0.486736511451955,0.132254910000000 -0.490439263445418,0.133171110000000 -0.494142032545160,0.132636670000000 -0.497844816626510,0.131873160000000 -0.501547587896339,0.132655740000000 -0.505250356183052,0.132503050000000 -0.508953105923419,0.133247450000000 -0.512655855186197,0.132044960000000 -0.516358614974852,0.132426690000000 -0.520061385641280,0.132331270000000 -0.523764153672818,0.131987690000000 -0.527466921773724,0.132541220000000 -0.531169691411363,0.131453250000000 -0.534872451405134,0.132980230000000 -0.538575207372981,0.131682290000000 -0.542277974391093,0.131357800000000 -0.545980740352798,0.132350360000000 -0.549683501204733,0.131205110000000 -0.553386270215891,0.130899710000000 -0.557089019988434,0.131090580000000 -0.560791784265352,0.130823360000000 -0.564494537080197,0.130117130000000 -0.568197299191212,0.129869000000000 -0.571900057449854,0.129926260000000 -0.575602818473649,0.129429980000000 -0.579305581898489,0.127960260000000 -0.583008351078542,0.128628310000000 -0.586711119160506,0.126566890000000 -0.590413885866284,0.127349470000000 -0.594116641691466,0.125097160000000 -0.597819411981392,0.121107910000000 -0.601522182187787,0.118397510000000 -0.605224955391117,0.112442260000000 -0.608927723682774,0.113072140000000 -0.612630478412401,0.109216500000000 -0.616333249893282,0.106830580000000 -0.620036027033193,0.104330140000000 -0.623738797952401,0.105303590000000 -0.627441562394607,0.100569930000000 -0.631144325925059,0.0995010440000000 -0.634847114512325,0.0985466760000000 -0.638549884221743,0.0992147330000000 -0.642252650586067,0.0954163520000000 -0.645955430101924,0.0998064350000000 -0.649658231687418,0.0986611990000000 -0.653361004502960,0.0956072210000000 -0.657063774662737,0.0975541320000000 -0.660766563716793,0.0961225850000000 -0.664469339353229,0.0943092850000000 -0.668172119080598,0.0966188540000000 -0.671874891156802,0.0936603170000000 -0.675577670252883,0.0952254760000000 -0.679280441499295,0.0953590870000000 -0.682983220191922,0.0931640420000000 -0.686686001640506,0.0945001620000000 -0.690388778900278,0.0930876960000000 -0.694091555474028,0.0934312640000000 -0.697794325005044,0.0932403950000000 -0.701497093656894,0.0935076180000000 -0.705199875232905,0.0933930950000000 -0.708902639071993,0.0929159080000000 -0.712605404436496,0.0930304300000000 -0.716308184771416,0.0926295970000000 -0.720010954088915,0.0932403950000000 -0.723713711354927,0.0926105160000000 -0.727416483536807,0.0924959850000000 -0.731119252071337,0.0924005510000000 -0.734822035630127,0.0925341620000000 -0.738524799807680,0.0920951520000000 -0.742227568105003,0.0923432860000000 -0.745930339816929,0.0936603170000000 -0.749633118921535,0.0933358300000000 -0.753335891546580,0.0932213070000000 -0.757038684517004,0.0926486850000000 -0.760741459961769,0.0925341620000000 -0.764444224136151,0.0924387280000000 -0.768146984167905,0.0923051160000000 -0.771849759741077,0.0931067840000000 -0.775552533080109,0.0916561480000000 -0.779255307772044,0.0915988830000000 -0.782958072926225,0.0920760630000000 -0.786660852552783,0.0917515830000000 -0.790363639414952,0.0917706710000000 -0.794066406798143,0.0923623740000000 -0.797769180570730,0.0924196390000000 -0.801471972061922,0.0932022180000000 -0.805174740205057,0.0919997170000000 -0.808877513470830,0.0916752290000000 -0.812580278330776,0.0932213070000000 -0.816283043054478,0.0919042830000000 -0.819985807095308,0.0916752290000000 -0.823688581889439,0.0928586500000000 -0.827391362903273,0.0918088410000000 -0.831094111514778,0.0915034490000000 -0.834796875363559,0.0918661060000000 -0.838499653966946,0.0920188050000000 -0.842202418107843,0.0932022180000000 -0.845905185427703,0.0913125720000000 -0.849607966269499,0.0911789610000000 -0.853310746424072,0.0913316610000000 -0.857013527063463,0.0908926500000000 -0.860716308996327,0.0905872510000000 -0.864419073626463,0.0905109050000000 -0.868121860558204,0.0903391170000000 -0.871824644664188,0.0904154700000000 -0.875527415820355,0.0911216960000000 -0.879230192607003,0.0894611030000000 -0.882932957631799,0.0899955480000000 -0.886635727806255,0.0892129690000000 -0.890338494102966,0.0888121280000000 -0.894041256363904,0.0879722910000000 -0.897744036942199,0.0870942700000000 -0.901446800739041,0.0850328360000000 -# extra point to avoid extrapolation -1,0.0760153081792987 \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/graphite_LGM50_ocp_Chen2020.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/graphite_LGM50_ocp_Chen2020.py deleted file mode 100644 index 8a9b90c8a2..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/graphite_LGM50_ocp_Chen2020.py +++ /dev/null @@ -1,35 +0,0 @@ -from pybamm import exp, tanh - - -def graphite_LGM50_ocp_Chen2020(sto): - """ - LG M50 Graphite open-circuit potential as a function of stochiometry, fit taken - from [1]. - - References - ---------- - .. [1] 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." Journal of the - Electrochemical Society 167 (2020): 080534. - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - - Returns - ------- - :class:`pybamm.Symbol` - Open circuit potential - """ - - u_eq = ( - 1.9793 * exp(-39.3631 * sto) - + 0.2482 - - 0.0909 * tanh(29.8538 * (sto - 0.1234)) - - 0.04478 * tanh(14.9159 * (sto - 0.2769)) - - 0.0205 * tanh(30.4444 * (sto - 0.6103)) - ) - - return u_eq diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/parameters.csv b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/parameters.csv deleted file mode 100644 index 1681f847b2..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/parameters.csv +++ /dev/null @@ -1,30 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Negative electrode conductivity [S.m-1],215,Chen 2020,graphite -Maximum concentration in negative electrode [mol.m-3],33133,Chen 2020,tuned for 1C -Negative electrode diffusivity [m2.s-1],3.3E-14,Chen 2020,tuned for 1C -Negative electrode OCP [V],[function]graphite_LGM50_ocp_Chen2020,Chen 2020, -,,, -# Microstructure,,, -Negative electrode porosity,0.25,Chen 2020, -Negative electrode active material volume fraction,0.75,Chen 2020, -Negative particle radius [m],5.86E-6,Chen 2020, -Negative electrode Bruggeman coefficient (electrolyte),1.5,Chen 2020,theoretical -Negative electrode Bruggeman coefficient (electrode),1.5,default, -,,, -# Interfacial reactions,,, -Negative electrode cation signed stoichiometry,-1,, -Negative electrode electrons in reaction,1,, -Negative electrode charge transfer coefficient,0.5,Chen 2020, -Negative electrode double-layer capacity [F.m-2],0.2,, -Negative electrode exchange-current density [A.m-2],[function]graphite_LGM50_electrolyte_exchange_current_density_Chen2020,, -,,, -# Density,,, -Negative electrode density [kg.m-3],1657,default, -,,, -# Thermal parameters,,, -Negative electrode specific heat capacity [J.kg-1.K-1],700,default, -Negative electrode thermal conductivity [W.m-1.K-1],1.7,default, -Negative electrode OCP entropic change [V.K-1],0,, diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/README.md b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/README.md deleted file mode 100644 index 23562c76c6..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Graphite/silicon negative electrode parameters - -Parameters for a composite graphite/silicon negative electrode, from the paper - -> Ai, W., Kirkaldy, N., Jiang, Y., Offer, G., Wang, H., & Wu, B. (2022). A composite electrode model for lithium-ion batteries with silicon/graphite negative electrodes. Journal of Power Sources, 527, 231142. - -based on 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."](https://iopscience.iop.org/article/10.1149/1945-7111/ab9050) Journal of the Electrochemical Society 167 (2020): 080534 - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/__init__.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/graphite_LGM50_electrolyte_exchange_current_density_Chen2020.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/graphite_LGM50_electrolyte_exchange_current_density_Chen2020.py deleted file mode 100644 index 03ff68b00d..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/graphite_LGM50_electrolyte_exchange_current_density_Chen2020.py +++ /dev/null @@ -1,40 +0,0 @@ -from pybamm import exp, constants - - -def graphite_LGM50_electrolyte_exchange_current_density_Chen2020( - c_e, c_s_surf, c_s_max, T -): - """ - Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in - EC:DMC. - - References - ---------- - .. [1] 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." Journal of the - Electrochemical Society 167 (2020): 080534. - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - m_ref = 6.48e-7 # (A/m2)(mol/m3)**1.5 - includes ref concentrations - E_r = 35000 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - return ( - m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 - ) diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/parameters.csv b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/parameters.csv deleted file mode 100644 index f6bd8704ad..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/parameters.csv +++ /dev/null @@ -1,54 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Negative electrode conductivity [S.m-1],215,Chen 2020,graphite -Primary: Maximum concentration in negative electrode [mol.m-3],28700,Chen 2020,tuned for 1C -Primary: Initial concentration in negative electrode [mol.m-3],27700,, -Primary: Negative electrode diffusivity [m2.s-1],5.5E-14,Chen 2020,tuned for 1C -Primary: Negative electrode OCP [V],[data]graphite_ocp_Enertech_Ai2020,Chen 2020, -,,, -# Microstructure,,, -Negative electrode porosity,0.25,Chen 2020, -Primary: Negative electrode active material volume fraction,0.735,0.75*0.98 -Primary: Negative particle radius [m],5.86E-6,Chen 2020, -Negative electrode Bruggeman coefficient (electrolyte),1.5,Chen 2020,theoretical -Negative electrode Bruggeman coefficient (electrode),1.5,default, -,,, -# Interfacial reactions,,, -Negative electrode cation signed stoichiometry,-1,, -Primary: Negative electrode electrons in reaction,1,, -Negative electrode charge transfer coefficient,0.5,Chen 2020, -Negative electrode double-layer capacity [F.m-2],0.2,, -Primary: Negative electrode exchange-current density [A.m-2],[function]graphite_LGM50_electrolyte_exchange_current_density_Chen2020,, -,,, -# Density,,, -Primary: Negative electrode density [kg.m-3],1657,default, -,,, -# Thermal parameters,,, -Negative electrode specific heat capacity [J.kg-1.K-1],700,default, -Negative electrode thermal conductivity [W.m-1.K-1],1.7,default, -Primary: Negative electrode OCP entropic change [V.K-1],0,, -,,, -,,, -# Secondary particles (silicon) -# Electrode properties,,, -Secondary: Maximum concentration in negative electrode [mol.m-3],278000,, -Secondary: Initial concentration in negative electrode [mol.m-3],276610,, -Secondary: Negative electrode diffusivity [m2.s-1],1.67E-14,, -Secondary: Negative electrode lithiation OCP [V],[function]silicon_ocp_lithiation_Mark2016,, -Secondary: Negative electrode delithiation OCP [V],[function]silicon_ocp_delithiation_Mark2016,, -,,, -# Microstructure,,, -Secondary: Negative electrode active material volume fraction,0.015,,0.75*0.02 -Secondary: Negative particle radius [m],1.52E-6,, -,,, -# Interfacial reactions,,, -Secondary: Negative electrode electrons in reaction,1,, -Secondary: Negative electrode exchange-current density [A.m-2],[function]silicon_LGM50_electrolyte_exchange_current_density_Chen2020,, -,,, -# Density,,, -Secondary: Negative electrode density [kg.m-3],2650,, -,,, -# Thermal parameters,,, -Secondary: Negative electrode OCP entropic change [V.K-1],0,, \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/silicon_LGM50_electrolyte_exchange_current_density_Chen2020.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/silicon_LGM50_electrolyte_exchange_current_density_Chen2020.py deleted file mode 100644 index 42a810bc92..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/silicon_LGM50_electrolyte_exchange_current_density_Chen2020.py +++ /dev/null @@ -1,43 +0,0 @@ -from pybamm import exp, constants - - -def silicon_LGM50_electrolyte_exchange_current_density_Chen2020( - c_e, c_s_surf, c_s_max, T -): - """ - Exchange-current density for Butler-Volmer reactions between silicon and LiPF6 in - EC:DMC. - - References - ---------- - .. [1] 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." Journal of the - Electrochemical Society 167 (2020): 080534. - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - - m_ref = ( - 6.48e-7 * 28700 / 278000 - ) # (A/m2)(mol/m3)**1.5 - includes ref concentrations - E_r = 35000 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - return ( - m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 - ) diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/silicon_ocp_data_Mark2016.csv b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/silicon_ocp_data_Mark2016.csv deleted file mode 100644 index c242c41a25..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/silicon_ocp_data_Mark2016.csv +++ /dev/null @@ -1,61 +0,0 @@ -#SOC_lit V_lit SOC_delit V_delit SOC_avg V_avg -0.0028864 0.877565 0.0028864 0.98404 0.0028864 0.9308025 -0.019830527 0.639348619 0.019830527 0.926149879 0.019830527 0.782749249 -0.036774653 0.559521936 0.036774653 0.870794639 0.036774653 0.715158288 -0.05371878 0.503340001 0.05371878 0.828136636 0.05371878 0.665738318 -0.070662906 0.452149142 0.070662906 0.791728639 0.070662906 0.621938891 -0.087607033 0.41396487 0.087607033 0.761420557 0.087607033 0.587692714 -0.104551159 0.378125085 0.104551159 0.733499923 0.104551159 0.555812504 -0.121495286 0.353343587 0.121495286 0.706921047 0.121495286 0.530132317 -0.138439412 0.329513392 0.138439412 0.680887638 0.138439412 0.505200515 -0.155383539 0.314284395 0.155383539 0.659588161 0.155383539 0.486936278 -0.172327666 0.299055398 0.172327666 0.63954143 0.172327666 0.469298414 -0.189271792 0.288012003 0.189271792 0.62101524 0.189271792 0.454513621 -0.206215919 0.280073198 0.206215919 0.603055551 0.206215919 0.441564374 -0.223160045 0.273151453 0.223160045 0.586471232 0.223160045 0.429811343 -0.240104172 0.266977277 0.240104172 0.570614824 0.240104172 0.41879605 -0.257048298 0.261015793 0.257048298 0.557071177 0.257048298 0.409043485 -0.273992425 0.255126668 0.273992425 0.544673882 0.273992425 0.399900275 -0.290936551 0.249540888 0.290936551 0.533356547 0.290936551 0.391448718 -0.307880678 0.244671154 0.307880678 0.522777511 0.307880678 0.383724332 -0.324824805 0.23980142 0.324824805 0.51279163 0.324824805 0.376296525 -0.341768931 0.235528262 0.341768931 0.50419114 0.341768931 0.369859701 -0.358713058 0.231534022 0.358713058 0.495639015 0.358713058 0.363586518 -0.375657184 0.227591384 0.375657184 0.487366223 0.375657184 0.357478804 -0.392601311 0.223929464 0.392601311 0.479188892 0.392601311 0.351559178 -0.409545437 0.220267544 0.409545437 0.472033799 0.409545437 0.346150672 -0.426489564 0.21622645 0.426489564 0.464878706 0.426489564 0.340552578 -0.44343369 0.211609822 0.44343369 0.457049146 0.44343369 0.334329484 -0.460377817 0.206993193 0.460377817 0.449117738 0.460377817 0.328055466 -0.477321944 0.201770163 0.477321944 0.440413865 0.477321944 0.321092014 -0.49426607 0.196205645 0.49426607 0.431404504 0.49426607 0.313805075 -0.511210197 0.190641127 0.511210197 0.421865663 0.511210197 0.306253395 -0.528154323 0.184861893 0.528154323 0.412191443 0.528154323 0.298526668 -0.54509845 0.178922055 0.54509845 0.401831839 0.54509845 0.290376947 -0.562042576 0.172982216 0.562042576 0.391224104 0.562042576 0.28210316 -0.578986703 0.166269925 0.578986703 0.380575674 0.578986703 0.2734228 -0.595930829 0.159158906 0.595930829 0.369898017 0.595930829 0.264528461 -0.612874956 0.151993753 0.612874956 0.359682518 0.612874956 0.255838135 -0.629819082 0.14392544 0.629819082 0.350048229 0.629819082 0.246986835 -0.646763209 0.135857126 0.646763209 0.341270063 0.646763209 0.238563595 -0.663707336 0.129288788 0.663707336 0.33327359 0.663707336 0.231281189 -0.680651462 0.123187943 0.680651462 0.325601376 0.680651462 0.224394659 -0.697595589 0.117087098 0.697595589 0.318207506 0.697595589 0.217647302 -0.714539715 0.112842294 0.714539715 0.311116446 0.714539715 0.21197937 -0.731483842 0.108744266 0.731483842 0.305034685 0.731483842 0.206889476 -0.748427968 0.104669816 0.748427968 0.298952925 0.748427968 0.201811371 -0.765372095 0.100711069 0.765372095 0.293273917 0.765372095 0.196992493 -0.782316221 0.096752321 0.782316221 0.287660605 0.782316221 0.192206463 -0.799260348 0.093077182 0.799260348 0.281975955 0.799260348 0.187526568 -0.816204475 0.090223022 0.816204475 0.276148813 0.816204475 0.183185917 -0.833148601 0.087368863 0.833148601 0.27032167 0.833148601 0.178845267 -0.850092728 0.084074774 0.850092728 0.264204854 0.850092728 0.174139814 -0.867036854 0.080618479 0.867036854 0.257934149 0.867036854 0.169276314 -0.883980981 0.077162185 0.883980981 0.251663443 0.883980981 0.164412814 -0.900925107 0.073724413 0.900925107 0.244558535 0.900925107 0.159141474 -0.917869234 0.070683533 0.917869234 0.23702954 0.917869234 0.153856536 -0.93481336 0.067642653 0.93481336 0.226643076 0.93481336 0.147142864 -0.951757487 0.063113497 0.951757487 0.214257079 0.951757487 0.138685288 -0.968701614 0.057863063 0.968701614 0.194591752 0.968701614 0.126227407 -0.98564574 0.054363042 0.98564574 0.162358022 0.98564574 0.108360532 -1.002589867 0.05247 1.002589867 0.06088 1.002589867 0.056675 diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/silicon_ocp_delithiation_Mark2016.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/silicon_ocp_delithiation_Mark2016.py deleted file mode 100644 index adc488770d..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/silicon_ocp_delithiation_Mark2016.py +++ /dev/null @@ -1,42 +0,0 @@ -def silicon_ocp_delithiation_Mark2016(sto): - """ - silicon Open Circuit Potential (OCP) as a a function of the - stochiometry. The fit is taken from the Enertech cell [1], which is only accurate - for 0 < sto < 1. - - References - ---------- - .. [1] Verbrugge M, Baker D, Xiao X. Formulation for the treatment of multiple - electrochemical reactions and associated speciation for the Lithium-Silicon - electrode[J]. Journal of The Electrochemical Society, 2015, 163(2): A262. - - Parameters - ---------- - sto: double - Stochiometry of material (li-fraction) - - Returns - ------- - :class:`pybamm.Symbol` - OCP [V] - """ - p1 = -51.02 - p2 = 161.3 - p3 = -205.7 - p4 = 140.2 - p5 = -58.76 - p6 = 16.87 - p7 = -3.792 - p8 = 0.9937 - - U_delithiation = ( - p1 * sto**7 - + p2 * sto**6 - + p3 * sto**5 - + p4 * sto**4 - + p5 * sto**3 - + p6 * sto**2 - + p7 * sto - + p8 - ) - return U_delithiation diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/silicon_ocp_lithiation_Mark2016.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/silicon_ocp_lithiation_Mark2016.py deleted file mode 100644 index 9ce92fbc7b..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/silicon_ocp_lithiation_Mark2016.py +++ /dev/null @@ -1,42 +0,0 @@ -def silicon_ocp_lithiation_Mark2016(sto): - """ - silicon Open Circuit Potential (OCP) as a a function of the - stochiometry. The fit is taken from the Enertech cell [1], which is only accurate - for 0 < sto < 1. - - References - ---------- - .. [1] Verbrugge M, Baker D, Xiao X. Formulation for the treatment of multiple - electrochemical reactions and associated speciation for the Lithium-Silicon - electrode[J]. Journal of The Electrochemical Society, 2015, 163(2): A262. - - Parameters - ---------- - sto: double - Stochiometry of material (li-fraction) - - Returns - ------- - :class:`pybamm.Symbol` - OCP [V] - """ - p1 = -96.63 - p2 = 372.6 - p3 = -587.6 - p4 = 489.9 - p5 = -232.8 - p6 = 62.99 - p7 = -9.286 - p8 = 0.8633 - - U_lithiation = ( - p1 * sto**7 - + p2 * sto**6 - + p3 * sto**5 - + p4 * sto**4 - + p5 * sto**3 - + p6 * sto**2 - + p7 * sto - + p8 - ) - return U_lithiation diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/README.md b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/README.md deleted file mode 100644 index 63a3af5f14..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Graphite negative electrode parameters - -Parameters for a graphite negative electrode, 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 - -The thermal material properties are for a 5 Ah power pouch cell by Kokam. The data are extracted from - -> Zhao, Y., et al. "Modeling the effects of thermal gradients induced by tab and surface cooling on lithium ion cell performance."" Journal of The Electrochemical Society, 165.13 (2018): A3169-A3178. diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/__init__.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/graphite_diffusivity_Ecker2015.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/graphite_diffusivity_Ecker2015.py deleted file mode 100644 index 91103baedc..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/graphite_diffusivity_Ecker2015.py +++ /dev/null @@ -1,37 +0,0 @@ -from pybamm import exp, constants - - -def graphite_diffusivity_Ecker2015(sto, T): - """ - 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:`pybamm.Symbol` - Electrode stochiometry - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - D_ref = 8.4e-13 * exp(-11.3 * sto) + 8.2e-15 - E_D_s = 3.03e4 - arrhenius = exp(-E_D_s / (constants.R * T)) * exp(E_D_s / (constants.R * 296)) - - return D_ref * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/graphite_electrolyte_exchange_current_density_Ecker2015.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/graphite_electrolyte_exchange_current_density_Ecker2015.py deleted file mode 100644 index 4b47ba36b4..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/graphite_electrolyte_exchange_current_density_Ecker2015.py +++ /dev/null @@ -1,48 +0,0 @@ -from pybamm import exp, constants - - -def graphite_electrolyte_exchange_current_density_Ecker2015(c_e, c_s_surf, c_s_max, T): - """ - Exchange-current density 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 - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - - k_ref = 1.11 * 1e-10 - - # multiply by Faraday's constant to get correct units - m_ref = constants.F * k_ref # (A/m2)(mol/m3)**1.5 - includes ref concentrations - E_r = 53400 - - arrhenius = exp(-E_r / (constants.R * T)) * exp(E_r / (constants.R * 296.15)) - - return ( - m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 - ) diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/graphite_ocp_Ecker2015_function.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/graphite_ocp_Ecker2015_function.py deleted file mode 100644 index 8ac61354f4..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/graphite_ocp_Ecker2015_function.py +++ /dev/null @@ -1,62 +0,0 @@ -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:`pybamm.Symbol` - Electrode stochiometry - - Returns - ------- - :class:`pybamm.Symbol` - Open circuit potential - """ - - # Graphite negative electrode 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 diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/parameters.csv b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/parameters.csv deleted file mode 100644 index 77f2805374..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/parameters.csv +++ /dev/null @@ -1,30 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Negative electrode conductivity [S.m-1],14,, -Maximum concentration in negative electrode [mol.m-3],31920,, -Measured negative electrode diffusivity [m2.s-1],[data]measured_graphite_diffusivity_Ecker2015,, -Negative electrode diffusivity [m2.s-1],[function]graphite_diffusivity_Ecker2015,, -Measured negative electrode OCP [V],[data]graphite_ocp_Ecker2015,, -Negative electrode OCP [V],[function]graphite_ocp_Ecker2015_function,, -,,, -# Microstructure,,, -Negative electrode porosity,0.329,, -Negative electrode active material volume fraction, 0.372403,, -Negative particle radius [m],1.37E-05,, -Negative electrode Bruggeman coefficient (electrolyte),1.6372789338386007,Solve for permeability factor B=0.162=eps^b, -Negative electrode Bruggeman coefficient (electrode),0,No Bruggeman correction to the solid conductivity, -,,, -# Interfacial reactions,,, -Negative electrode cation signed stoichiometry,-1,, -Negative electrode electrons in reaction,1,, -Negative electrode exchange-current density [A.m-2],[function]graphite_electrolyte_exchange_current_density_Ecker2015,, -,,, -# Density,,, -Negative electrode density [kg.m-3],1555,Zhao et al. (2018), -,,, -# Thermal parameters,,, -Negative electrode specific heat capacity [J.kg-1.K-1],1437,Zhao et al. (2018), -Negative electrode thermal conductivity [W.m-1.K-1],1.58,Zhao et al. (2018), -Negative electrode OCP entropic change [V.K-1],0,, diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/README.md b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/README.md deleted file mode 100644 index ae085b41d0..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Graphite negative electrode parameters - -Parameters for a graphite negative electrode, from the paper - -> Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. (2011). Multi-domain modeling of lithium-ion batteries encompassing multi-physics in varied length scales. Journal of The Electrochemical Society, 158(8), A955-A969. - -Note, only an effective cell volumetric heat capacity is provided in the paper. We therefore used the values for the density and specific heat capacity reported in the Marquis2019 parameter set in each region and multiplied each density by the ratio of the volumetric heat capacity provided in smith to the calculated value. This ensures that the values produce the same effective cell volumetric heat capacity. This works fine for thermal models that are averaged over the x-direction but not for full (PDE in x direction) thermal models. We do the same for the planar effective thermal conductivity. diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/__init__.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/graphite_diffusivity_Kim2011.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/graphite_diffusivity_Kim2011.py deleted file mode 100644 index 5c76052c25..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/graphite_diffusivity_Kim2011.py +++ /dev/null @@ -1,32 +0,0 @@ -from pybamm import exp, constants - - -def graphite_diffusivity_Kim2011(sto, T): - """ - Graphite diffusivity [1]. - - References - ---------- - .. [1] Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. - (2011). Multi-domain modeling of lithium-ion batteries encompassing - multi-physics in varied length scales. Journal of The Electrochemical - Society, 158(8), A955-A969. - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - D_ref = 9 * 10 ** (-14) - E_D_s = 4e3 - arrhenius = exp(E_D_s / constants.R * (1 / 298.15 - 1 / T)) - - return D_ref * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/graphite_electrolyte_exchange_current_density_Kim2011.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/graphite_electrolyte_exchange_current_density_Kim2011.py deleted file mode 100644 index 380ab86f69..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/graphite_electrolyte_exchange_current_density_Kim2011.py +++ /dev/null @@ -1,53 +0,0 @@ -from pybamm import exp, constants, Parameter - - -def graphite_electrolyte_exchange_current_density_Kim2011(c_e, c_s_surf, c_s_max, T): - """ - Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in - EC:DMC - [1]. - - References - ---------- - .. [1] Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. - (2011). Multi-domain modeling of lithium-ion batteries encompassing - multi-physics in varied length scales. Journal of The Electrochemical - Society, 158(8), A955-A969. - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - - i0_ref = 36 # reference exchange current density at 100% SOC - sto = 0.36 # stochiometry at 100% SOC - c_s_n_ref = sto * c_s_max # reference electrode concentration - c_e_ref = Parameter("Typical electrolyte concentration [mol.m-3]") - alpha = 0.5 # charge transfer coefficient - - m_ref = i0_ref / ( - c_e_ref**alpha * (c_s_max - c_s_n_ref) ** alpha * c_s_n_ref**alpha - ) - - E_r = 3e4 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - return ( - m_ref - * arrhenius - * c_e**alpha - * c_s_surf**alpha - * (c_s_max - c_s_surf) ** alpha - ) diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/graphite_ocp_Kim2011.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/graphite_ocp_Kim2011.py deleted file mode 100644 index f6de52db1b..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/graphite_ocp_Kim2011.py +++ /dev/null @@ -1,29 +0,0 @@ -from pybamm import exp, tanh - - -def graphite_ocp_Kim2011(sto): - """ - Graphite Open Circuit Potential (OCP) as a function of the stochiometry [1]. - - References - ---------- - .. [1] Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. - (2011). Multi-domain modeling of lithium-ion batteries encompassing - multi-physics in varied length scales. Journal of The Electrochemical - Society, 158(8), A955-A969. - """ - - u_eq = ( - 0.124 - + 1.5 * exp(-70 * sto) - - 0.0351 * tanh((sto - 0.286) / 0.083) - - 0.0045 * tanh((sto - 0.9) / 0.119) - - 0.035 * tanh((sto - 0.99) / 0.05) - - 0.0147 * tanh((sto - 0.5) / 0.034) - - 0.102 * tanh((sto - 0.194) / 0.142) - - 0.022 * tanh((sto - 0.98) / 0.0164) - - 0.011 * tanh((sto - 0.124) / 0.0226) - + 0.0155 * tanh((sto - 0.105) / 0.029) - ) - - return u_eq diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/parameters.csv b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/parameters.csv deleted file mode 100644 index 002bfdb1ab..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/parameters.csv +++ /dev/null @@ -1,30 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Negative electrode conductivity [S.m-1],100,, -Maximum concentration in negative electrode [mol.m-3],2.87E4,, -Negative electrode diffusivity [m2.s-1],[function]graphite_diffusivity_Kim2011,, -Negative electrode OCP [V],[function]graphite_ocp_Kim2011, -,,, -# Microstructure,,, -Negative electrode porosity,0.4,, -Negative electrode active material volume fraction,0.51,, -Negative particle radius [m],5.083E-7,, -Negative electrode Bruggeman coefficient (electrolyte),2,, -Negative electrode Bruggeman coefficient (electrode),2,, -,,, -# Interfacial reactions,,, -Negative electrode cation signed stoichiometry,-1,, -Negative electrode electrons in reaction,1,, -Negative electrode charge transfer coefficient,0.5,, -Negative electrode double-layer capacity [F.m-2],0.2,Not reported in Kim2011, -Negative electrode exchange-current density [A.m-2],[function]graphite_electrolyte_exchange_current_density_Kim2011,, -,,, -# Density,,, -Negative electrode density [kg.m-3],2136.43638,1657 * 1.28934, -,,, -# Thermal parameters,,, -Negative electrode specific heat capacity [J.kg-1.K-1],700,, -Negative electrode thermal conductivity [W.m-1.K-1],1.1339,1.7 * 0.667, -Negative electrode OCP entropic change [V.K-1],0,, diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/README.md b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/README.md deleted file mode 100644 index 96ef76cc35..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# LG M50 Graphite anode parameters - -Parameters for an LG M50 graphite negative electrode, from the paper - -> Simon O'Kane, Weilong Ai, Ganesh Madabattula, Diego Alonso-Alvarez, Robert Timms, Valentin Sulzer, Jacqueline Edge, Billy Wu, Gregory Offer, and Monica Marinescu. ["Lithium-ion battery degradation: how to model it."](https://pubs.rsc.org/en/content/articlelanding/2022/cp/d2cp00417h) Physical Chemistry: Chemical Physics 24 (2022): 7909-7922 - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/__init__.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_LGM50_diffusivity_Chen2020.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_LGM50_diffusivity_Chen2020.py deleted file mode 100644 index 1d636463af..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_LGM50_diffusivity_Chen2020.py +++ /dev/null @@ -1,34 +0,0 @@ -from pybamm import exp, constants - - -def graphite_LGM50_diffusivity_Chen2020(sto, T): - """ - 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] 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." Journal of the - Electrochemical Society 167 (2020): 080534. - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - D_ref = 3.3e-14 - E_D_s = 3.03e4 - # E_D_s not given by Chen et al (2020), so taken from Ecker et al. (2015) instead - arrhenius = exp(E_D_s / constants.R * (1 / 298.15 - 1 / T)) - - return D_ref * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_LGM50_electrolyte_exchange_current_density_Chen2020.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_LGM50_electrolyte_exchange_current_density_Chen2020.py deleted file mode 100644 index 02fbdd28a9..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_LGM50_electrolyte_exchange_current_density_Chen2020.py +++ /dev/null @@ -1,41 +0,0 @@ -from pybamm import exp, constants - - -def graphite_LGM50_electrolyte_exchange_current_density_Chen2020( - c_e, c_s_surf, c_s_max, T -): - """ - Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in - EC:DMC. - - References - ---------- - .. [1] 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." Journal of the - Electrochemical Society 167 (2020): 080534. - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - - m_ref = 6.48e-7 # (A/m2)(mol/m3)**1.5 - includes ref concentrations - E_r = 35000 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - return ( - m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 - ) diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_LGM50_ocp_Chen2020.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_LGM50_ocp_Chen2020.py deleted file mode 100644 index f79cea6c0f..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_LGM50_ocp_Chen2020.py +++ /dev/null @@ -1,37 +0,0 @@ -from pybamm import exp, tanh - - -def graphite_LGM50_ocp_Chen2020(sto): - """ - LG M50 Graphite open-circuit potential as a function of stochiometry. The fit is - taken from [1] with an extra term added by Simon O'Kane to capture behaviour in - the high stoichiometry range. - - References - ---------- - .. [1] 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." Journal of the - Electrochemical Society 167 (2020): 080534. - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - - Returns - ------- - :class:`pybamm.Symbol` - Open circuit potential - """ - - u_eq = ( - 1.9793 * exp(-39.3631 * sto) - + 0.15561 - - 0.0909 * tanh(29.8538 * (sto - 0.1234)) - - 0.04478 * tanh(14.9159 * (sto - 0.2769)) - - 0.0205 * tanh(30.4444 * (sto - 0.6103)) - - 0.09259 * tanh(17.08 * (sto - 1)) - ) - - return u_eq diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_cracking_rate_Ai2020.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_cracking_rate_Ai2020.py deleted file mode 100644 index 7871321bdd..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_cracking_rate_Ai2020.py +++ /dev/null @@ -1,32 +0,0 @@ -from pybamm import constants, exp - - -def graphite_cracking_rate_Ai2020(T_dim): - """ - Graphite particle cracking rate as a function of temperature [1, 2]. - - References - ---------- - .. [1] Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). - Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in - Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 - DOI: 10.1149/2.0122001JES. - .. [2] Deshpande, R., Verbrugge, M., Cheng, Y. T., Wang, J., & Liu, P. (2012). - Battery cycle life prediction with coupled chemical degradation and fatigue - mechanics. Journal of the Electrochemical Society, 159(10), A1730. - - Parameters - ---------- - T_dim: :class:`pybamm.Symbol` - temperature, [K] - - Returns - ------- - k_cr: :class:`pybamm.Symbol` - cracking rate, [m/(Pa.m0.5)^m_cr] - where m_cr is another Paris' law constant - """ - k_cr = 3.9e-20 - Eac_cr = 0 # to be implemented - arrhenius = exp(Eac_cr / constants.R * (1 / T_dim - 1 / 298.15)) - return k_cr * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_volume_change_Ai2020.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_volume_change_Ai2020.py deleted file mode 100644 index ea6305b4f7..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/graphite_volume_change_Ai2020.py +++ /dev/null @@ -1,47 +0,0 @@ -def graphite_volume_change_Ai2020(sto, c_s_max): - """ - Graphite particle volume change as a function of stochiometry [1, 2]. - - References - ---------- - .. [1] Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). - Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in - Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 - DOI: 10.1149/2.0122001JES. - .. [2] Rieger, B., Erhard, S. V., Rumpf, K., & Jossen, A. (2016). - A new method to model the thickness change of a commercial pouch cell - during discharge. Journal of The Electrochemical Society, 163(8), A1566-A1575. - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry, dimensionless - should be R-averaged particle concentration - Returns - ------- - t_change:class:`pybamm.Symbol` - volume change, dimensionless, normalised by particle volume - """ - p1 = 145.907 - p2 = -681.229 - p3 = 1334.442 - p4 = -1415.710 - p5 = 873.906 - p6 = -312.528 - p7 = 60.641 - p8 = -5.706 - p9 = 0.386 - p10 = -4.966e-05 - t_change = ( - p1 * sto**9 - + p2 * sto**8 - + p3 * sto**7 - + p4 * sto**6 - + p5 * sto**5 - + p6 * sto**4 - + p7 * sto**3 - + p8 * sto**2 - + p9 * sto - + p10 - ) - return t_change diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/parameters.csv b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/parameters.csv deleted file mode 100644 index 062be61eaa..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_OKane2022/parameters.csv +++ /dev/null @@ -1,51 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Negative electrode conductivity [S.m-1],215,Chen 2020,graphite -Maximum concentration in negative electrode [mol.m-3],33133,Chen 2020,tuned for 1C -Negative electrode diffusivity [m2.s-1],[function]graphite_LGM50_diffusivity_Chen2020,Chen 2020,tuned for 1C -Negative electrode OCP [V],[data]graphite_LGM50_ocp_Chen2020,Chen 2020, -,,, -# Microstructure,,, -Negative electrode porosity,0.25,Chen 2020, -Negative electrode active material volume fraction,0.75,Chen 2020, -Negative particle radius [m],5.86E-06,Chen 2020, -Negative electrode Bruggeman coefficient (electrolyte),1.5,Chen 2020,theoretical -Negative electrode Bruggeman coefficient (electrode),1.5,default, -,,, -# Interfacial reactions,,, -Negative electrode cation signed stoichiometry,-1,, -Negative electrode electrons in reaction,1,, -Negative electrode charge transfer coefficient,0.5,Chen 2020, -Negative electrode double-layer capacity [F.m-2],0.2,, -Negative electrode exchange-current density [A.m-2],[function]graphite_LGM50_electrolyte_exchange_current_density_Chen2020,, -,,, -# Density,,, -Negative electrode density [kg.m-3],1657,default, -,,, -# Thermal parameters,,, -Negative electrode specific heat capacity [J.kg-1.K-1],700,default, -Negative electrode thermal conductivity [W.m-1.K-1],1.7,default, -Negative electrode OCP entropic change [V.K-1],0,, -,,, -# Mechanical properties,,, -Negative electrode Poisson's ratio,0.3,, -Negative electrode Young's modulus [Pa],15e9,, -Negative electrode reference concentration for free of deformation [mol.m-3],0,, -Negative electrode partial molar volume [m3.mol-1],3.1e-6,, -Negative electrode volume change,[function]graphite_volume_change_Ai2020,Ai2020, -,,, -# Crack model,,, -Negative electrode initial crack length [m],20e-9,, -Negative electrode initial crack width [m],15e-9,, -Negative electrode number of cracks per unit area [m-2],3.18e15,, -Negative electrode Paris' law constant b,1.12,, -Negative electrode Paris' law constant m,2.2,, -Negative electrode cracking rate,[function]graphite_cracking_rate_Ai2020,Ai2020, -,,, -# Loss of active materials (LAM) model,,, -Negative electrode LAM constant proportional term [s-1],2.7778E-7,0.001/3600, -Negative electrode LAM constant exponential term,2,, -Negative electrode critical stress [Pa],60e6,, -,,, diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/README.md b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/README.md deleted file mode 100644 index b8bee1b33f..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# LG M50 Graphite negative electrode parameters - -Parameters for a LG M50 graphite negative electrode, from the paper - -> Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma Kendrick. ["Thermal-electrochemical parameters of a high energy lithium-ion cylindrical battery."](https://www.sciencedirect.com/science/article/pii/S0013468622008593) Electrochimica Acta 425 (2022): 140700 - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/__init__.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_diffusivity_ORegan2022.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_diffusivity_ORegan2022.py deleted file mode 100644 index 693b527862..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_diffusivity_ORegan2022.py +++ /dev/null @@ -1,60 +0,0 @@ -from pybamm import exp, constants - - -def graphite_LGM50_diffusivity_ORegan2022(sto, T): - """ - 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] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma - Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion - cylindrical battery." Electrochimica Acta 425 (2022): 140700 - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - a0 = 11.17 - a1 = -1.553 - a2 = -6.136 - a3 = -9.725 - a4 = 1.85 - b1 = 0.2031 - b2 = 0.5375 - b3 = 0.9144 - b4 = 0.5953 - c0 = -15.11 - c1 = 0.0006091 - c2 = 0.06438 - c3 = 0.0578 - c4 = 0.001356 - d = 2092 - - D_ref = ( - 10 - ** ( - a0 * sto - + c0 - + a1 * exp(-((sto - b1) ** 2) / c1) - + a2 * exp(-((sto - b2) ** 2) / c2) - + a3 * exp(-((sto - b3) ** 2) / c3) - + a4 * exp(-((sto - b4) ** 2) / c4) - ) - * 3.0321 # correcting factor (see O'Regan et al 2021) - ) - - E_D_s = d * constants.R - arrhenius = exp(E_D_s / constants.R * (1 / 298.15 - 1 / T)) - - return D_ref * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_electrolyte_exchange_current_density_ORegan2022.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_electrolyte_exchange_current_density_ORegan2022.py deleted file mode 100644 index c66639eef6..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_electrolyte_exchange_current_density_ORegan2022.py +++ /dev/null @@ -1,47 +0,0 @@ -from pybamm import exp, constants, Parameter - - -def graphite_LGM50_electrolyte_exchange_current_density_ORegan2022( - c_e, c_s_surf, c_s_max, T -): - """ - Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in - EC:DMC. - - References - ---------- - .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma - Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion - cylindrical battery." Electrochimica Acta 425 (2022): 140700 - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - - i_ref = 2.668 # (A/m2) - alpha = 0.792 - E_r = 4e4 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - c_e_ref = Parameter("Typical electrolyte concentration [mol.m-3]") - - return ( - i_ref - * arrhenius - * (c_e / c_e_ref) ** (1 - alpha) - * (c_s_surf / c_s_max) ** alpha - * (1 - c_s_surf / c_s_max) ** (1 - alpha) - ) diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_entropic_change_ORegan2022.csv b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_entropic_change_ORegan2022.csv deleted file mode 100644 index 299faca1d1..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_entropic_change_ORegan2022.csv +++ /dev/null @@ -1,19 +0,0 @@ -# Entropic term data for LG M50 graphite negative electrode -# sto,dUdT -# extra point to avoid extrapolation -0,0.0004 -# experimentally measured data -0.0791,0.0003797 -0.0903,0.0003625 -0.1051,0.0003431 -0.2000,0.0000229 -0.2723,0 -0.3721,-0.0000461 -0.4719,-0.0002032 -0.5717,-0.0002130 -0.6715,-0.0000417 -0.7713,-0.0000595 -0.8711,-0.0000655 -0.9709,-0.0000817 -# extra point to avoid extrapolation -1,-0.0000864 \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_entropic_change_ORegan2022.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_entropic_change_ORegan2022.py deleted file mode 100644 index de4a340052..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_entropic_change_ORegan2022.py +++ /dev/null @@ -1,43 +0,0 @@ -from pybamm import exp, tanh - - -def graphite_LGM50_entropic_change_ORegan2022(sto, c_s_max): - """ - LG M50 Graphite 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] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma - Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion - cylindrical battery." Electrochimica Acta 425 (2022): 140700 - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - - Returns - ------- - :class:`pybamm.Symbol` - Entropic change [V.K-1] - """ - - a0 = -0.1112 - a1 = -0.09002 * 0 # fixed fit (see discussion O'Regan et al 2021) - a2 = 0.3561 - b1 = 0.4955 - b2 = 0.08309 - c0 = 0.02914 - c1 = 0.1122 - c2 = 0.004616 - d1 = 63.9 - - dUdT = ( - a0 * sto - + c0 - + a2 * exp(-((sto - b2) ** 2) / c2) - + a1 * (tanh(d1 * (sto - (b1 - c1))) - tanh(d1 * (sto - (b1 + c1)))) - ) / 1000 # fit in mV / K - - return dUdT diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_heat_capacity_ORegan2022.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_heat_capacity_ORegan2022.py deleted file mode 100644 index cde147c201..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_heat_capacity_ORegan2022.py +++ /dev/null @@ -1,43 +0,0 @@ -from pybamm import Parameter - - -def graphite_LGM50_heat_capacity_ORegan2022(T): - """ - Wet negative electrode specific heat capacity as a function of the temperature from - [1]. - - References - ---------- - .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma - Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion - cylindrical battery." Electrochimica Acta 425 (2022): 140700 - - Parameters - ---------- - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Specific heat capacity - """ - - # value for the dry porous electrode (i.e. electrode + air, and we neglect the air - # contribution to density) - cp_dry = 4.932e-4 * T**3 - 0.491 * T**2 + 169.4 * T - 1.897e4 - rho_dry = 1740 - theta_dry = rho_dry * cp_dry - - # value for the bulk electrolyte - rho_e = 1280 - cp_e = 229 - eps_e = Parameter("Negative electrode porosity") - theta_e = rho_e * cp_e - - # value for the wet separator - theta_wet = theta_dry + theta_e * eps_e - rho_wet = rho_dry + rho_e * eps_e - cp_wet = theta_wet / rho_wet - - return cp_wet diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_ocp_Chen2020.csv b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_ocp_Chen2020.csv deleted file mode 100644 index fe4dd8b61d..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_ocp_Chen2020.csv +++ /dev/null @@ -1,243 +0,0 @@ -# OCP data for LG M50 graphite negative electrode -# sto,ocp -# extra point to avoid extrapolation -0,1.81772748379334 -# experimentally measured data -0.0312962309919435,1.08288070000000 -0.0349990174231383,0.995937940000000 -0.0387017984426739,0.900233980000000 -0.0424045760400907,0.796494310000000 -0.0461073567667969,0.733544290000000 -0.0498101472864833,0.666643140000000 -0.0535129169550513,0.641371490000000 -0.0572156800080452,0.598138690000000 -0.0609184495648372,0.567083600000000 -0.0646212178896581,0.547461810000000 -0.0683239899372943,0.530683990000000 -0.0720267516206726,0.513047340000000 -0.0757295119643203,0.493940920000000 -0.0794322723972667,0.479262740000000 -0.0831350309398288,0.460652590000000 -0.0868377862970441,0.459927260000000 -0.0905405444092937,0.438015010000000 -0.0942433124962634,0.424386650000000 -0.0979460700715639,0.411502690000000 -0.101648825029857,0.400336590000000 -0.105351579051700,0.389571340000000 -0.109054336366249,0.377565380000000 -0.112757097430127,0.362925410000000 -0.116459849153289,0.343570860000000 -0.120162608086248,0.340631400000000 -0.123865356984332,0.322994680000000 -0.127568112208028,0.313794580000000 -0.131270864460474,0.307953860000000 -0.134973620696607,0.292073190000000 -0.138676382618935,0.286976870000000 -0.142379130218803,0.274054770000000 -0.146081890204289,0.267049700000000 -0.149784649866357,0.258574930000000 -0.153487405398072,0.252657830000000 -0.157190175658005,0.248267770000000 -0.160892939040625,0.241434500000000 -0.164595700624986,0.233627780000000 -0.168298470128353,0.229562180000000 -0.172001223759462,0.223702360000000 -0.175703987585269,0.221812710000000 -0.179406738528351,0.220896510000000 -0.183109501186799,0.219426800000000 -0.186812285743759,0.218300640000000 -0.190515043988865,0.218453330000000 -0.194217798449951,0.217537150000000 -0.197920560933317,0.217193570000000 -0.201623337530448,0.216353730000000 -0.205326099907333,0.216678220000000 -0.209028863421514,0.217384440000000 -0.212731637811268,0.214693130000000 -0.216434400018689,0.215418460000000 -0.220137158758552,0.214654950000000 -0.223839932905728,0.213547900000000 -0.227542704859571,0.213929640000000 -0.231245472941435,0.210742060000000 -0.234948246608884,0.208737880000000 -0.238651007030528,0.204653190000000 -0.242353771096756,0.202057320000000 -0.246056534779736,0.197743580000000 -0.249759296042551,0.194441470000000 -0.253462075305427,0.191902850000000 -0.257164855541649,0.188505310000000 -0.260867623398810,0.185813990000000 -0.264570388343682,0.183275370000000 -0.268273141960127,0.181576590000000 -0.271975899008113,0.178140880000000 -0.275678670804876,0.175296860000000 -0.279381437563501,0.171937500000000 -0.283084208890615,0.169341610000000 -0.286786983838099,0.167566490000000 -0.290489741421874,0.166096760000000 -0.294192511321947,0.164149850000000 -0.297895287824777,0.162603780000000 -0.301598064066139,0.162241130000000 -0.305300829766264,0.160027000000000 -0.309003605818808,0.158270960000000 -0.312706366234020,0.158805400000000 -0.316409128935726,0.155522380000000 -0.320111892208735,0.155808690000000 -0.323814657710233,0.152201180000000 -0.327517439807890,0.151113200000000 -0.331220205464159,0.149872530000000 -0.334922968466154,0.148746370000000 -0.338625750725335,0.146780370000000 -0.342328527763104,0.146207760000000 -0.346031309868876,0.145558790000000 -0.349734084397854,0.143898190000000 -0.353436854897322,0.143592790000000 -0.357139627707061,0.142428460000000 -0.360842411597988,0.140386120000000 -0.364545174861915,0.138820960000000 -0.368247948241878,0.139546280000000 -0.371950714867844,0.139469920000000 -0.375653482399388,0.137809340000000 -0.379356259818551,0.139737140000000 -0.383059044551139,0.136988580000000 -0.386761819665088,0.135232540000000 -0.390464596573676,0.134411780000000 -0.394167374371778,0.135289800000000 -0.397870146744550,0.135079850000000 -0.401572911082096,0.136473210000000 -0.405275673810652,0.136015120000000 -0.408978444047454,0.134354520000000 -0.412681205117036,0.133476500000000 -0.416383982346429,0.134831700000000 -0.420086760850234,0.132751180000000 -0.423789528171715,0.132865710000000 -0.427492295549261,0.132636670000000 -0.431195060865253,0.134564470000000 -0.434897836788305,0.134717180000000 -0.438600610939060,0.133953690000000 -0.442303381655562,0.134488140000000 -0.446006148119762,0.133476500000000 -0.449708925504862,0.132980230000000 -0.453411684191202,0.132598490000000 -0.457114440916438,0.133381070000000 -0.460817193028781,0.133094760000000 -0.464519943384457,0.132751180000000 -0.468222694005807,0.134430870000000 -0.471925449273306,0.133152020000000 -0.475628214901007,0.132713000000000 -0.479330982475788,0.133018400000000 -0.483033746549207,0.132789360000000 -0.486736511451955,0.132254910000000 -0.490439263445418,0.133171110000000 -0.494142032545160,0.132636670000000 -0.497844816626510,0.131873160000000 -0.501547587896339,0.132655740000000 -0.505250356183052,0.132503050000000 -0.508953105923419,0.133247450000000 -0.512655855186197,0.132044960000000 -0.516358614974852,0.132426690000000 -0.520061385641280,0.132331270000000 -0.523764153672818,0.131987690000000 -0.527466921773724,0.132541220000000 -0.531169691411363,0.131453250000000 -0.534872451405134,0.132980230000000 -0.538575207372981,0.131682290000000 -0.542277974391093,0.131357800000000 -0.545980740352798,0.132350360000000 -0.549683501204733,0.131205110000000 -0.553386270215891,0.130899710000000 -0.557089019988434,0.131090580000000 -0.560791784265352,0.130823360000000 -0.564494537080197,0.130117130000000 -0.568197299191212,0.129869000000000 -0.571900057449854,0.129926260000000 -0.575602818473649,0.129429980000000 -0.579305581898489,0.127960260000000 -0.583008351078542,0.128628310000000 -0.586711119160506,0.126566890000000 -0.590413885866284,0.127349470000000 -0.594116641691466,0.125097160000000 -0.597819411981392,0.121107910000000 -0.601522182187787,0.118397510000000 -0.605224955391117,0.112442260000000 -0.608927723682774,0.113072140000000 -0.612630478412401,0.109216500000000 -0.616333249893282,0.106830580000000 -0.620036027033193,0.104330140000000 -0.623738797952401,0.105303590000000 -0.627441562394607,0.100569930000000 -0.631144325925059,0.0995010440000000 -0.634847114512325,0.0985466760000000 -0.638549884221743,0.0992147330000000 -0.642252650586067,0.0954163520000000 -0.645955430101924,0.0998064350000000 -0.649658231687418,0.0986611990000000 -0.653361004502960,0.0956072210000000 -0.657063774662737,0.0975541320000000 -0.660766563716793,0.0961225850000000 -0.664469339353229,0.0943092850000000 -0.668172119080598,0.0966188540000000 -0.671874891156802,0.0936603170000000 -0.675577670252883,0.0952254760000000 -0.679280441499295,0.0953590870000000 -0.682983220191922,0.0931640420000000 -0.686686001640506,0.0945001620000000 -0.690388778900278,0.0930876960000000 -0.694091555474028,0.0934312640000000 -0.697794325005044,0.0932403950000000 -0.701497093656894,0.0935076180000000 -0.705199875232905,0.0933930950000000 -0.708902639071993,0.0929159080000000 -0.712605404436496,0.0930304300000000 -0.716308184771416,0.0926295970000000 -0.720010954088915,0.0932403950000000 -0.723713711354927,0.0926105160000000 -0.727416483536807,0.0924959850000000 -0.731119252071337,0.0924005510000000 -0.734822035630127,0.0925341620000000 -0.738524799807680,0.0920951520000000 -0.742227568105003,0.0923432860000000 -0.745930339816929,0.0936603170000000 -0.749633118921535,0.0933358300000000 -0.753335891546580,0.0932213070000000 -0.757038684517004,0.0926486850000000 -0.760741459961769,0.0925341620000000 -0.764444224136151,0.0924387280000000 -0.768146984167905,0.0923051160000000 -0.771849759741077,0.0931067840000000 -0.775552533080109,0.0916561480000000 -0.779255307772044,0.0915988830000000 -0.782958072926225,0.0920760630000000 -0.786660852552783,0.0917515830000000 -0.790363639414952,0.0917706710000000 -0.794066406798143,0.0923623740000000 -0.797769180570730,0.0924196390000000 -0.801471972061922,0.0932022180000000 -0.805174740205057,0.0919997170000000 -0.808877513470830,0.0916752290000000 -0.812580278330776,0.0932213070000000 -0.816283043054478,0.0919042830000000 -0.819985807095308,0.0916752290000000 -0.823688581889439,0.0928586500000000 -0.827391362903273,0.0918088410000000 -0.831094111514778,0.0915034490000000 -0.834796875363559,0.0918661060000000 -0.838499653966946,0.0920188050000000 -0.842202418107843,0.0932022180000000 -0.845905185427703,0.0913125720000000 -0.849607966269499,0.0911789610000000 -0.853310746424072,0.0913316610000000 -0.857013527063463,0.0908926500000000 -0.860716308996327,0.0905872510000000 -0.864419073626463,0.0905109050000000 -0.868121860558204,0.0903391170000000 -0.871824644664188,0.0904154700000000 -0.875527415820355,0.0911216960000000 -0.879230192607003,0.0894611030000000 -0.882932957631799,0.0899955480000000 -0.886635727806255,0.0892129690000000 -0.890338494102966,0.0888121280000000 -0.894041256363904,0.0879722910000000 -0.897744036942199,0.0870942700000000 -0.901446800739041,0.0850328360000000 -# extra point to avoid extrapolation -1,0.0760153081792987 \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_ocp_Chen2020.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_ocp_Chen2020.py deleted file mode 100644 index 4093180246..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_ocp_Chen2020.py +++ /dev/null @@ -1,35 +0,0 @@ -from pybamm import exp, tanh - - -def graphite_LGM50_ocp_Chen2020(sto): - """ - LG M50 Graphite open-circuit potential as a function of stochiometry, fit taken - from [1]. - - References - ---------- - .. [1] 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." Journal of the - Electrochemical Society 167 (2020): 080534. - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - - Returns - ------- - :class:`pybamm.Symbol` - Open-circuit potential - """ - - U = ( - 1.9793 * exp(-39.3631 * sto) - + 0.2482 - - 0.0909 * tanh(29.8538 * (sto - 0.1234)) - - 0.04478 * tanh(14.9159 * (sto - 0.2769)) - - 0.0205 * tanh(30.4444 * (sto - 0.6103)) - ) - - return U diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_thermal_conductivity_ORegan2022.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_thermal_conductivity_ORegan2022.py deleted file mode 100644 index 5a29e94a4c..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/graphite_LGM50_thermal_conductivity_ORegan2022.py +++ /dev/null @@ -1,25 +0,0 @@ -def graphite_LGM50_thermal_conductivity_ORegan2022(T): - """ - Wet negative electrode thermal conductivity as a function of the temperature from - [1]. - - References - ---------- - .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma - Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion - cylindrical battery." Electrochimica Acta 425 (2022): 140700 - - Parameters - ---------- - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Thermal conductivity - """ - - lambda_wet = -2.61e-4 * T**2 + 0.1726 * T - 24.49 - - return lambda_wet diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/parameters.csv b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/parameters.csv deleted file mode 100644 index b63056f0bd..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/parameters.csv +++ /dev/null @@ -1,31 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Negative electrode conductivity [S.m-1],215,Chen 2020,graphite -Maximum concentration in negative electrode [mol.m-3],29583,Chen 2020, -Negative electrode diffusivity [m2.s-1],[function]graphite_LGM50_diffusivity_ORegan2022,O'Regan 2022, -Negative electrode OCP [V],[function]graphite_LGM50_ocp_Chen2020,Chen 2020, -,,, -# Microstructure,,, -Negative electrode porosity,0.25,Chen 2020, -Negative electrode active material volume fraction,0.75,Chen 2020, -Negative particle radius [m],5.86E-6,Chen 2020, -Negative electrode Bruggeman coefficient (electrolyte),1.5,Chen 2020,theoretical -Negative electrode Bruggeman coefficient (electrode),0,conductivity already accounts for porous electrode, -,,, -# Interfacial reactions,,, -Negative electrode cation signed stoichiometry,-1,, -Negative electrode electrons in reaction,1,, -Reference OCP vs SHE in the negative electrode [V],,, -Negative electrode charge transfer coefficient,0.5,Chen 2020, -Negative electrode double-layer capacity [F.m-2],0.2,, -Negative electrode exchange-current density [A.m-2],[function]graphite_LGM50_electrolyte_exchange_current_density_ORegan2022,O'Regan 2022, -,,, -# Density,,, -Negative electrode density [kg.m-3],2060,O'Regan 2022,wet electrode -,,, -# Thermal parameters,,, -Negative electrode specific heat capacity [J.kg-1.K-1],[function]graphite_LGM50_heat_capacity_ORegan2022,O'Regan 2022,wet electrode -Negative electrode thermal conductivity [W.m-1.K-1],[function]graphite_LGM50_thermal_conductivity_ORegan2022,O'Regan 2022,wet electrode -Negative electrode OCP entropic change [V.K-1],[function]graphite_LGM50_entropic_change_ORegan2022,, \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/README.md b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/README.md deleted file mode 100644 index 5d735bec6a..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Graphite negative electrode parameters - -Parameters for a graphite negative electrode, from the paper - -> Marquis, S. G., Sulzer, V., Timms, R., Please, C. P., & Chapman, S. J. (2019). “An asymptotic derivation of a single particle model with electrolyte”. [Journal of The Electrochemical Society](https://doi.org/10.1149/2.0341915jes), 166(15), A3693-A3706. -> P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko N. Popov.["Development of First Principles Capacity Fade Model for Li-Ion Cells."](https://scholarcommons.sc.edu/cgi/viewcontent.cgi?article=1161&context=eche_facpub) (2004) - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/__init__.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/graphite_electrolyte_exchange_current_density_Ramadass2004.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/graphite_electrolyte_exchange_current_density_Ramadass2004.py deleted file mode 100644 index e42c9675a1..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/graphite_electrolyte_exchange_current_density_Ramadass2004.py +++ /dev/null @@ -1,39 +0,0 @@ -from pybamm import exp, constants - - -def graphite_electrolyte_exchange_current_density_Ramadass2004( - c_e, c_s_surf, c_s_max, T -): - """ - Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in - EC:DMC. - - References - ---------- - .. [1] P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko - N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." - (2004) - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - m_ref = 4.854 * 10 ** (-6) # (A/m2)(mol/m3)**1.5 - E_r = 37480 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - return ( - m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 - ) diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/graphite_entropic_change_Moura2016.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/graphite_entropic_change_Moura2016.py deleted file mode 100644 index 7547bcf332..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/graphite_entropic_change_Moura2016.py +++ /dev/null @@ -1,32 +0,0 @@ -from pybamm import exp, cosh - - -def graphite_entropic_change_Moura2016(sto, c_s_max): - """ - Graphite entropic change in open circuit potential (OCP) at a temperature of - 298.15K as a function of the stochiometry taken from Scott Moura's FastDFN code - [1]. - - References - ---------- - .. [1] https://github.com/scott-moura/fastDFN - - Parameters - ---------- - sto : :class:`pybamm.Symbol` - Stochiometry of material (li-fraction) - - """ - du_dT = ( - -1.5 * (120.0 / c_s_max) * exp(-120 * sto) - + (0.0351 / (0.083 * c_s_max)) * ((cosh((sto - 0.286) / 0.083)) ** (-2)) - - (0.0045 / (0.119 * c_s_max)) * ((cosh((sto - 0.849) / 0.119)) ** (-2)) - - (0.035 / (0.05 * c_s_max)) * ((cosh((sto - 0.9233) / 0.05)) ** (-2)) - - (0.0147 / (0.034 * c_s_max)) * ((cosh((sto - 0.5) / 0.034)) ** (-2)) - - (0.102 / (0.142 * c_s_max)) * ((cosh((sto - 0.194) / 0.142)) ** (-2)) - - (0.022 / (0.0164 * c_s_max)) * ((cosh((sto - 0.9) / 0.0164)) ** (-2)) - - (0.011 / (0.0226 * c_s_max)) * ((cosh((sto - 0.124) / 0.0226)) ** (-2)) - + (0.0155 / (0.029 * c_s_max)) * ((cosh((sto - 0.105) / 0.029)) ** (-2)) - ) - - return du_dT diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/graphite_mcmb2528_diffusivity_Dualfoil1998.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/graphite_mcmb2528_diffusivity_Dualfoil1998.py deleted file mode 100644 index 5a9a868386..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/graphite_mcmb2528_diffusivity_Dualfoil1998.py +++ /dev/null @@ -1,30 +0,0 @@ -from pybamm import exp, constants - - -def graphite_mcmb2528_diffusivity_Dualfoil1998(sto, T): - """ - Graphite MCMB 2528 diffusivity as a function of stochiometry, in this case the - diffusivity is taken to be a constant. The value is taken from Dualfoil [1]. - - References - ---------- - .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - D_ref = 3.9 * 10 ** (-14) - E_D_s = 42770 - arrhenius = exp(E_D_s / constants.R * (1 / 298.15 - 1 / T)) - - return D_ref * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/graphite_ocp_Ramadass2004.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/graphite_ocp_Ramadass2004.py deleted file mode 100644 index 6ea5876d05..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/graphite_ocp_Ramadass2004.py +++ /dev/null @@ -1,26 +0,0 @@ -from pybamm import exp - - -def graphite_ocp_Ramadass2004(sto): - """ - Graphite Open Circuit Potential (OCP) as a function of the - stochiometry (theta?). The fit is taken from Ramadass 2004. - - References - ---------- - .. [1] P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko - N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." - (2004) - """ - - u_eq = ( - 0.7222 - + 0.1387 * sto - + 0.029 * (sto**0.5) - - 0.0172 / sto - + 0.0019 / (sto**1.5) - + 0.2808 * exp(0.9 - 15 * sto) - - 0.7984 * exp(0.4465 * sto - 0.4108) - ) - - return u_eq diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/parameters.csv b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/parameters.csv deleted file mode 100644 index e601be67f8..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ramadass2004/parameters.csv +++ /dev/null @@ -1,30 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Negative electrode conductivity [S.m-1],100,Ramadass,graphite -Maximum concentration in negative electrode [mol.m-3],30555,Ramadass, -Negative electrode diffusivity [m2.s-1],[function]graphite_mcmb2528_diffusivity_Dualfoil1998,Also valid for Ramadass, -Negative electrode OCP [V],[function]graphite_ocp_Ramadass2004, -,,, -# Microstructure,,, -Negative electrode porosity,0.485,Ramadass,electrolyte volume fraction -Negative electrode active material volume fraction,0.49,Ramadass, -Negative particle radius [m],2e-06,Ramadass, -Negative electrode Bruggeman coefficient (electrolyte),4,Guess, -Negative electrode Bruggeman coefficient (electrode),4,Ramadass, -,,, -# Interfacial reactions,,, -Negative electrode cation signed stoichiometry,-1,, -Negative electrode electrons in reaction,1,, -Negative electrode charge transfer coefficient,0.5,Ramadass, -Negative electrode double-layer capacity [F.m-2],0.2,, -Negative electrode exchange-current density [A.m-2],[function]graphite_electrolyte_exchange_current_density_Ramadass2004,, -,,, -# Density,,, -Negative electrode density [kg.m-3],1657,, -,,, -# Thermal parameters,,, -Negative electrode specific heat capacity [J.kg-1.K-1],700,, -Negative electrode thermal conductivity [W.m-1.K-1],1.7,, -Negative electrode OCP entropic change [V.K-1],[function]graphite_entropic_change_Moura2016,, diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/__init__.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/graphite_diffusivity_PeymanMPM.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/graphite_diffusivity_PeymanMPM.py deleted file mode 100644 index 16880068e8..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/graphite_diffusivity_PeymanMPM.py +++ /dev/null @@ -1,30 +0,0 @@ -from pybamm import exp, constants - - -def graphite_diffusivity_PeymanMPM(sto, T): - """ - Graphite diffusivity as a function of stochiometry, in this case the - diffusivity is taken to be a constant. The value is taken from Peyman MPM. - - References - ---------- - .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - D_ref = 5.0 * 10 ** (-15) - E_D_s = 42770 - arrhenius = exp(E_D_s / constants.R * (1 / 298.15 - 1 / T)) - - return D_ref * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/graphite_electrolyte_exchange_current_density_PeymanMPM.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/graphite_electrolyte_exchange_current_density_PeymanMPM.py deleted file mode 100644 index a2b559ef30..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/graphite_electrolyte_exchange_current_density_PeymanMPM.py +++ /dev/null @@ -1,37 +0,0 @@ -from pybamm import exp, constants - - -def graphite_electrolyte_exchange_current_density_PeymanMPM(c_e, c_s_surf, c_s_max, T): - """ - Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in - EC:DMC. - Check the unit of Reaction rate constant k0 is from Peyman MPM. - - References - ---------- - .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - m_ref = 1.061 * 10 ** (-6) # unit has been converted - # units are (A/m2)(mol/m3)**1.5 - includes ref concentrations - E_r = 37480 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - return ( - m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 - ) diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/graphite_entropic_change_PeymanMPM.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/graphite_entropic_change_PeymanMPM.py deleted file mode 100644 index f857100eee..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/graphite_entropic_change_PeymanMPM.py +++ /dev/null @@ -1,28 +0,0 @@ -def graphite_entropic_change_PeymanMPM(sto, c_s_max): - """ - Graphite entropic change in open circuit potential (OCP) at a temperature of - 298.15K as a function of the stochiometry taken from [1] - - References - ---------- - .. [1] K.E. Thomas, J. Newman, "Heats of mixing and entropy in porous insertion - electrode", J. of Power Sources 119 (2003) 844-849 - - Parameters - ---------- - sto : :class:`pybamm.Symbol` - Stochiometry of material (li-fraction) - - """ - - du_dT = 10 ** (-3) * ( - 0.28 - - 1.56 * sto - - 8.92 * sto ** (2) - + 57.21 * sto ** (3) - - 110.7 * sto ** (4) - + 90.71 * sto ** (5) - - 27.14 * sto ** (6) - ) - - return du_dT diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/graphite_ocp_PeymanMPM.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/graphite_ocp_PeymanMPM.py deleted file mode 100644 index d63fffe337..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/graphite_ocp_PeymanMPM.py +++ /dev/null @@ -1,31 +0,0 @@ -import pybamm - - -def graphite_ocp_PeymanMPM(sto): - """ - Graphite Open Circuit Potential (OCP) as a function of the - stochiometry. The fit is taken from Peyman MPM [1]. - - References - ---------- - .. [1] Peyman Mohtat et al, MPM (to be submitted) - """ - - u_eq = ( - 0.063 - + 0.8 * pybamm.exp(-75 * (sto + 0.001)) - - 0.0120 * pybamm.tanh((sto - 0.127) / 0.016) - - 0.0118 * pybamm.tanh((sto - 0.155) / 0.016) - - 0.0035 * pybamm.tanh((sto - 0.220) / 0.020) - - 0.0095 * pybamm.tanh((sto - 0.190) / 0.013) - - 0.0145 * pybamm.tanh((sto - 0.490) / 0.020) - - 0.0800 * pybamm.tanh((sto - 1.030) / 0.055) - ) - - return u_eq - - -# if __name__ == "__main__": # pragma: no cover -# x = pybamm.linspace(1e-10, 1 - 1e-10, 1000) -# # pybamm.plot(x, graphite_ocp_PeymanMPM(x)) -# pybamm.plot(x, -1e-8 * pybamm.log(x / (1 - x))) diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/parameters.csv b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/parameters.csv deleted file mode 100644 index d6563ccbad..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_UMBL_Mohtat2020/parameters.csv +++ /dev/null @@ -1,33 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Negative electrode conductivity [S.m-1],100,Scott Moura FastDFN,no info from Peyman MPM -Maximum concentration in negative electrode [mol.m-3],28746,Peyman MPM, -Negative electrode diffusion coefficient [m2.s-1],5.0E-15,Peyman MPM, -Negative electrode diffusivity [m2.s-1],[function]graphite_diffusivity_PeymanMPM,, -Negative electrode OCP [V],[function]graphite_ocp_PeymanMPM,Peyman MPM, -,,, -# Microstructure,,, -Negative electrode porosity,0.3,Peyman MPM, -Negative electrode active material volume fraction,0.61,Peyman MPM,rest is binder -Negative particle radius [m],2.5E-06,Peyman MPM, -Negative electrode Bruggeman coefficient (electrode),1.5,Peyman MPM, -Negative electrode Bruggeman coefficient (electrolyte),1.5,Peyman MPM, -Negative electrode transport efficiency, 0.16, -,,, -# Interfacial reactions,,, -Negative electrode cation signed stoichiometry,-1,,no info from Peyman MPM -Negative electrode electrons in reaction,1,,no info from Peyman MPM -Negative electrode reference exchange-current density [A.m-2(m3.mol)1.5],1.061E-6,Peyman MPM,convert unit -Negative electrode charge transfer coefficient,0.5,Peyman MPM, -Negative electrode double-layer capacity [F.m-2],0.2,,no info from Peyman MPM -Negative electrode exchange-current density [A.m-2],[function]graphite_electrolyte_exchange_current_density_PeymanMPM,, -,,, -# Density,,, -Negative electrode density [kg.m-3],3100,Peyman MPM, cell lumped value -,,, -# Thermal parameters,,, -Negative electrode specific heat capacity [J.kg-1.K-1],1100,Peyman MPM,cell lumped value -Negative electrode thermal conductivity [W.m-1.K-1],1.7,,no info from Peyman MPM -Negative electrode OCP entropic change [V.K-1],[function]graphite_entropic_change_PeymanMPM,, diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/README.md b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/README.md deleted file mode 100644 index 0c54f4a684..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Graphite MCMB 2528 negative electrode parameters - -Parameters for a graphite MCMB 2528 negative electrode, from the paper - -> Marquis, S. G., Sulzer, V., Timms, R., Please, C. P., & Chapman, S. J. (2019). “An asymptotic derivation of a single particle model with electrolyte”. [Journal of The Electrochemical Society](https://doi.org/10.1149/2.0341915jes), 166(15), A3693-A3706. - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/__init__.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/graphite_electrolyte_exchange_current_density_Dualfoil1998.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/graphite_electrolyte_exchange_current_density_Dualfoil1998.py deleted file mode 100644 index 9ddd432223..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/graphite_electrolyte_exchange_current_density_Dualfoil1998.py +++ /dev/null @@ -1,37 +0,0 @@ -from pybamm import exp, constants - - -def graphite_electrolyte_exchange_current_density_Dualfoil1998( - c_e, c_s_surf, c_s_max, T -): - """ - Exchange-current density for Butler-Volmer reactions between graphite and LiPF6 in - EC:DMC. - - References - ---------- - .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - m_ref = 2 * 10 ** (-5) # (A/m2)(mol/m3)**1.5 - includes ref concentrations - E_r = 37480 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - return ( - m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 - ) diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/graphite_entropic_change_Moura2016.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/graphite_entropic_change_Moura2016.py deleted file mode 100644 index 7547bcf332..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/graphite_entropic_change_Moura2016.py +++ /dev/null @@ -1,32 +0,0 @@ -from pybamm import exp, cosh - - -def graphite_entropic_change_Moura2016(sto, c_s_max): - """ - Graphite entropic change in open circuit potential (OCP) at a temperature of - 298.15K as a function of the stochiometry taken from Scott Moura's FastDFN code - [1]. - - References - ---------- - .. [1] https://github.com/scott-moura/fastDFN - - Parameters - ---------- - sto : :class:`pybamm.Symbol` - Stochiometry of material (li-fraction) - - """ - du_dT = ( - -1.5 * (120.0 / c_s_max) * exp(-120 * sto) - + (0.0351 / (0.083 * c_s_max)) * ((cosh((sto - 0.286) / 0.083)) ** (-2)) - - (0.0045 / (0.119 * c_s_max)) * ((cosh((sto - 0.849) / 0.119)) ** (-2)) - - (0.035 / (0.05 * c_s_max)) * ((cosh((sto - 0.9233) / 0.05)) ** (-2)) - - (0.0147 / (0.034 * c_s_max)) * ((cosh((sto - 0.5) / 0.034)) ** (-2)) - - (0.102 / (0.142 * c_s_max)) * ((cosh((sto - 0.194) / 0.142)) ** (-2)) - - (0.022 / (0.0164 * c_s_max)) * ((cosh((sto - 0.9) / 0.0164)) ** (-2)) - - (0.011 / (0.0226 * c_s_max)) * ((cosh((sto - 0.124) / 0.0226)) ** (-2)) - + (0.0155 / (0.029 * c_s_max)) * ((cosh((sto - 0.105) / 0.029)) ** (-2)) - ) - - return du_dT diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/graphite_mcmb2528_diffusivity_Dualfoil1998.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/graphite_mcmb2528_diffusivity_Dualfoil1998.py deleted file mode 100644 index 5a9a868386..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/graphite_mcmb2528_diffusivity_Dualfoil1998.py +++ /dev/null @@ -1,30 +0,0 @@ -from pybamm import exp, constants - - -def graphite_mcmb2528_diffusivity_Dualfoil1998(sto, T): - """ - Graphite MCMB 2528 diffusivity as a function of stochiometry, in this case the - diffusivity is taken to be a constant. The value is taken from Dualfoil [1]. - - References - ---------- - .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - D_ref = 3.9 * 10 ** (-14) - E_D_s = 42770 - arrhenius = exp(E_D_s / constants.R * (1 / 298.15 - 1 / T)) - - return D_ref * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/graphite_mcmb2528_ocp_Dualfoil1998.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/graphite_mcmb2528_ocp_Dualfoil1998.py deleted file mode 100644 index 5ed6f91755..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/graphite_mcmb2528_ocp_Dualfoil1998.py +++ /dev/null @@ -1,29 +0,0 @@ -from pybamm import exp, tanh - - -def graphite_mcmb2528_ocp_Dualfoil1998(sto): - """ - Graphite MCMB 2528 Open Circuit Potential (OCP) as a function of the - stochiometry. The fit is taken from Dualfoil [1]. Dualfoil states that the data - was measured by Chris Bogatu at Telcordia and PolyStor materials, 2000. However, - we could not find any other records of this measurment. - - References - ---------- - .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html - """ - - u_eq = ( - 0.194 - + 1.5 * exp(-120.0 * sto) - + 0.0351 * tanh((sto - 0.286) / 0.083) - - 0.0045 * tanh((sto - 0.849) / 0.119) - - 0.035 * tanh((sto - 0.9233) / 0.05) - - 0.0147 * tanh((sto - 0.5) / 0.034) - - 0.102 * tanh((sto - 0.194) / 0.142) - - 0.022 * tanh((sto - 0.9) / 0.0164) - - 0.011 * tanh((sto - 0.124) / 0.0226) - + 0.0155 * tanh((sto - 0.105) / 0.029) - ) - - return u_eq diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/parameters.csv b/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/parameters.csv deleted file mode 100644 index 39ec8877aa..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_mcmb2528_Marquis2019/parameters.csv +++ /dev/null @@ -1,30 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, - -# Electrode properties,,, -Negative electrode conductivity [S.m-1],100,Scott Moura FastDFN,graphite -Maximum concentration in negative electrode [mol.m-3],24983.2619938437,Scott Moura FastDFN, -Negative electrode diffusivity [m2.s-1],[function]graphite_mcmb2528_diffusivity_Dualfoil1998,, -Negative electrode OCP [V],[function]graphite_mcmb2528_ocp_Dualfoil1998, -,,, -# Microstructure,,, -Negative electrode porosity,0.3,Scott Moura FastDFN,electrolyte volume fraction -Negative electrode active material volume fraction,0.6,, -Negative particle radius [m],1E-05,Scott Moura FastDFN, -Negative electrode Bruggeman coefficient (electrolyte),1.5,Scott Moura FastDFN, -Negative electrode Bruggeman coefficient (electrode),1.5,Scott Moura FastDFN, -,,, -# Interfacial reactions,,, -Negative electrode cation signed stoichiometry,-1,, -Negative electrode electrons in reaction,1,, -Negative electrode charge transfer coefficient,0.5,Scott Moura FastDFN, -Negative electrode double-layer capacity [F.m-2],0.2,, -Negative electrode exchange-current density [A.m-2],[function]graphite_electrolyte_exchange_current_density_Dualfoil1998,, -,,, -# Density,,, -Negative electrode density [kg.m-3],1657,, -,,, -# Thermal parameters,,, -Negative electrode specific heat capacity [J.kg-1.K-1],700,, -Negative electrode thermal conductivity [W.m-1.K-1],1.7,, -Negative electrode OCP entropic change [V.K-1],[function]graphite_entropic_change_Moura2016,, diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/li_metal_Xu2019/README.md b/pybamm/input/parameters/lithium_ion/negative_electrodes/li_metal_Xu2019/README.md deleted file mode 100644 index 05881d88e1..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/li_metal_Xu2019/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Graphite MCMB 2528 anode parameters - -Parameters for a graphite MCMB 2528 anode, from the paper - -> Xu, Shanshan, Chen, Kuan-Hung, Dasgupta, Neil P., Siegel, Jason B. and Stefanopoulou, Anna G. "Evolution of Dead Lithium Growth in Lithium Metal Batteries: Experimentally Validated Model of the Apparent Capacity Loss." Journal of The Electrochemical Society 166.14 (2019): A3456-A3463. - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/li_metal_Xu2019/__init__.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/li_metal_Xu2019/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/li_metal_Xu2019/li_metal_electrolyte_exchange_current_density_Xu2019.py b/pybamm/input/parameters/lithium_ion/negative_electrodes/li_metal_Xu2019/li_metal_electrolyte_exchange_current_density_Xu2019.py deleted file mode 100644 index 77c0d53be5..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/li_metal_Xu2019/li_metal_electrolyte_exchange_current_density_Xu2019.py +++ /dev/null @@ -1,32 +0,0 @@ -from pybamm import constants - - -def li_metal_electrolyte_exchange_current_density_Xu2019(c_e, c_Li, T): - """ - Exchange-current density for Butler-Volmer reactions between li metal and LiPF6 in - EC:DMC. - - References - ---------- - .. [1] Xu, Shanshan, Chen, Kuan-Hung, Dasgupta, Neil P., Siegel, Jason B. and - Stefanopoulou, Anna G. "Evolution of Dead Lithium Growth in Lithium Metal Batteries: - Experimentally Validated Model of the Apparent Capacity Loss." Journal of The - Electrochemical Society 166.14 (2019): A3456-A3463. - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_Li : :class:`pybamm.Symbol` - Pure metal lithium concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - m_ref = 3.5e-8 * constants.F # (A/m2)(mol/m3) - includes ref concentrations - - return m_ref * c_Li**0.7 * c_e**0.3 diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/li_metal_Xu2019/parameters.csv b/pybamm/input/parameters/lithium_ion/negative_electrodes/li_metal_Xu2019/parameters.csv deleted file mode 100644 index dd0d85d886..0000000000 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/li_metal_Xu2019/parameters.csv +++ /dev/null @@ -1,17 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Negative electrode OCP [V],0,lithium metal, -Negative electrode conductivity [S.m-1],1.0776e7,li metal conductivity not provided by Xu2019 -,,, -# Thermal parameters,,, -Negative electrode OCP entropic change [V.K-1],0,, -,,, -# Interfacial reactions,,, -Negative electrode cation signed stoichiometry,-1,, -Negative electrode electrons in reaction,1,, -Typical plated lithium concentration [mol.m-3],76900,, -Exchange-current density for plating [A.m-2],[function]li_metal_electrolyte_exchange_current_density_Xu2019,, -Negative electrode charge transfer coefficient,0.5,, -Negative electrode double-layer capacity [F.m-2],0.2,, diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/LFP_Prada2013/LFP_electrolyte_exchange_current_density_kashkooli2017.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/LFP_Prada2013/LFP_electrolyte_exchange_current_density_kashkooli2017.py deleted file mode 100644 index 1a096b392e..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/LFP_Prada2013/LFP_electrolyte_exchange_current_density_kashkooli2017.py +++ /dev/null @@ -1,38 +0,0 @@ -from pybamm import exp, constants - - -def LFP_electrolyte_exchange_current_density_kashkooli2017(c_e, c_s_surf, c_s_max, T): - """ - Exchange-current density for Butler-Volmer reactions between LFP and electrolyte - - References - ---------- - .. [1] Kashkooli, A. G., Amirfazli, A., Farhad, S., Lee, D. U., Felicelli, S., Park, - H. W., ... & Chen, Z. (2017). Representative volume element model of lithium-ion - battery electrodes based on X-ray nano-tomography. Journal of Applied - Electrochemistry, 47(3), 281-293. - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - - m_ref = 6 * 10 ** (-7) # (A/m2)(mol/m3)**1.5 - includes ref concentrations - E_r = 39570 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - return ( - m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 - ) diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/LFP_Prada2013/LFP_ocp_ashfar2017.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/LFP_Prada2013/LFP_ocp_ashfar2017.py deleted file mode 100644 index 9695acfe4b..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/LFP_Prada2013/LFP_ocp_ashfar2017.py +++ /dev/null @@ -1,24 +0,0 @@ -from pybamm import exp - - -def LFP_ocp_ashfar2017(sto): - """ - Open-circuit potential for LFP - - References - ---------- - .. [1] Afshar, S., Morris, K., & Khajepour, A. (2017). Efficient electrochemical - model for lithium-ion cells. arXiv preprint arXiv:1709.03970. - - Parameters - ---------- - sto : :class:`pybamm.Symbol` - Stochiometry of material (li-fraction) - - """ - - c1 = -150 * sto - c2 = -30 * (1 - sto) - k = 3.4077 - 0.020269 * sto + 0.5 * exp(c1) - 0.9 * exp(c2) - - return k diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/LFP_Prada2013/README.md b/pybamm/input/parameters/lithium_ion/positive_electrodes/LFP_Prada2013/README.md deleted file mode 100644 index 8c3a5a8f97..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/LFP_Prada2013/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Lithium Iron Phosphate positive electrode parameters - -Parameters for an LFP positive electrode, from the paper - -> Prada, E., Di Domenico, D., Creff, Y., Bernard, J., Sauvant-Moynot, V., & Huet, F. (2013). A simplified electrochemical and thermal aging model of LiFePO4-graphite Li-ion batteries: power and capacity fade simulations. [Journal of The Electrochemical Society](https://doi.org/10.1149/2.053304jes), 160(4), A616. - -and references therein. The functions used for OCP and exchange-current density are from separate references (documented within the functions), to provide better fit to data diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/LFP_Prada2013/__init__.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/LFP_Prada2013/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/LFP_Prada2013/parameters.csv b/pybamm/input/parameters/lithium_ion/positive_electrodes/LFP_Prada2013/parameters.csv deleted file mode 100644 index 39cc7b63ba..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/LFP_Prada2013/parameters.csv +++ /dev/null @@ -1,33 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with # will be ignored,,, -,,, -# Electrode properties,,, -Positive electrode conductivity [S.m-1],0.33795074,"Calculation, consistant with Hosseinzadeh 2018", -Maximum concentration in positive electrode [mol.m-3],22806,Prada Thermal Aging, -Positive electrode diffusivity [m2.s-1],5.90E-18,Prada Fast Charging, -Positive electrode OCP [V],[function]LFP_ocp_ashfar2017,, -,,, -# Microstructure,,, -Positive electrode porosity,0.12728395,Calculation minimized to Severson, -Positive electrode active material volume fraction,0.28485556,Calculation minimized to Severson, -Positive particle radius [m],1.00E-08,Calculation minimized to Severson, -Positive electrode Bruggeman coefficient (electrode),1.5,, -Positive electrode Bruggeman coefficient (electrolyte),1.5,, -,,, -# Interfacial reactions,,, -Positive electrode cation signed stoichiometry,-1,, -Positive electrode electrons in reaction,1,, -Positive electrode charge transfer coefficient,0.5,adjust, -Positive electrode double-layer capacity [F.m-2],0.2,adjust, -,,, -# Density,,, -Positive electrode density [kg.m-3],2341.17,default, -,,, -,,, -# Thermal parameters,,, -Positive electrode specific heat capacity [J.kg-1.K-1],1100,, -Positive electrode thermal conductivity [W.m-1.K-1],2.1,, -Positive electrode OCP entropic change [V.K-1],0,, -,,, -# exchange-current density,,, -Positive electrode exchange-current density [A.m-2],[function]LFP_electrolyte_exchange_current_density_kashkooli2017,, diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/README.md b/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/README.md deleted file mode 100644 index 3920ccc286..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Lithium Nickel Cobalt Oxide positive electrode parameters - -Parameters for a Lithium Nickel Cobalt Oxide positive electrode, 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 - -The thermal material properties are for a 5 Ah power pouch cell by Kokam. The data are extracted from - -> Zhao, Y., et al. "Modeling the effects of thermal gradients induced by tab and surface cooling on lithium ion cell performance."" Journal of The Electrochemical Society, 165.13 (2018): A3169-A3178. diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/__init__.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/nco_diffusivity_Ecker2015.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/nco_diffusivity_Ecker2015.py deleted file mode 100644 index b30be3138f..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/nco_diffusivity_Ecker2015.py +++ /dev/null @@ -1,37 +0,0 @@ -from pybamm import exp, constants - - -def nco_diffusivity_Ecker2015(sto, T): - """ - NCO 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:`pybamm.Symbol` - Electrode stochiometry - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - D_ref = 3.7e-13 - 3.4e-13 * exp(-12 * (sto - 0.62) * (sto - 0.62)) - E_D_s = 8.06e4 - arrhenius = exp(-E_D_s / (constants.R * T)) * exp(E_D_s / (constants.R * 296.15)) - - return D_ref * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/nco_electrolyte_exchange_current_density_Ecker2015.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/nco_electrolyte_exchange_current_density_Ecker2015.py deleted file mode 100644 index 08fff34a99..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/nco_electrolyte_exchange_current_density_Ecker2015.py +++ /dev/null @@ -1,48 +0,0 @@ -from pybamm import exp, constants - - -def nco_electrolyte_exchange_current_density_Ecker2015(c_e, c_s_surf, c_s_max, T): - """ - Exchange-current density for Butler-Volmer reactions between NCO and LiPF6 in - EC:DMC [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 - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - - k_ref = 3.01e-11 - - # multiply by Faraday's constant to get correct units - m_ref = constants.F * k_ref # (A/m2)(mol/m3)**1.5 - includes ref concentrations - - E_r = 4.36e4 - arrhenius = exp(-E_r / (constants.R * T)) * exp(E_r / (constants.R * 296.15)) - - return ( - m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 - ) diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/nco_ocp_Ecker2015_function.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/nco_ocp_Ecker2015_function.py deleted file mode 100644 index 6b49cb5e38..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/nco_ocp_Ecker2015_function.py +++ /dev/null @@ -1,57 +0,0 @@ -from pybamm import tanh - - -def nco_ocp_Ecker2015_function(sto): - """ - NCO 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:`pybamm.Symbol` - Stochiometry of material (li-fraction) - - """ - - # LiNiCo from Ecker, Kabitz, Laresgoiti et al. - # Analytical fit (WebPlotDigitizer + gnuplot) - # Parameter m modified by Simon O'Kane to improve fit - a = -2.35211 - c = 0.0747061 - d = 31.886 - e = 0.0219921 - g = 0.640243 - h = 5.48623 - i = 0.439245 - j = 3.82383 - k = 4.12167 - m = 0.176187 - n = 0.0542123 - o = 18.2919 - p = 0.762272 - q = 4.23285 - r = -6.34984 - s = 2.66395 - t = 0.174352 - - u_eq = ( - a * sto - - c * tanh(d * (sto - e)) - - r * tanh(s * (sto - t)) - - g * tanh(h * (sto - i)) - - j * tanh(k * (sto - m)) - - n * tanh(o * (sto - p)) - + q - ) - return u_eq diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/parameters.csv b/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/parameters.csv deleted file mode 100644 index 8e6429b34e..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/parameters.csv +++ /dev/null @@ -1,30 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Positive electrode conductivity [S.m-1],68.1,, -Maximum concentration in positive electrode [mol.m-3],48580,, -Measured positive electrode diffusivity [m2.s-1],[data]measured_nco_diffusivity_Ecker2015,, -Positive electrode diffusivity [m2.s-1],[function]nco_diffusivity_Ecker2015,, -Measured positive electrode OCP [V],[data]nco_ocp_Ecker2015,, -Positive electrode OCP [V],[function]nco_ocp_Ecker2015_function,, -,,, -# Microstructure,,, -Positive electrode porosity,0.296,, -Positive electrode active material volume fraction, 0.40832,, -Positive particle radius [m],6.5E-06,, -Positive electrode Bruggeman coefficient (electrolyte),1.5442267190786427,Solve for permeability factor B=0.1526=eps^b, -Positive electrode Bruggeman coefficient (electrode),0,No Bruggeman correction to solid conductivity, -Positive electrode exchange-current density [A.m-2],[function]nco_electrolyte_exchange_current_density_Ecker2015,, -,,, -# Interfacial reactions,,, -Positive electrode cation signed stoichiometry,-1,, -Positive electrode electrons in reaction,1,, -,,, -# Density,,, -Positive electrode density [kg.m-3],2895,Zhao et al. (2018), -,,, -# Thermal parameters,,, -Positive electrode specific heat capacity [J.kg-1.K-1],1270,Zhao et al. (2018), -Positive electrode thermal conductivity [W.m-1.K-1],1.04,Zhao et al. (2018), -Positive electrode OCP entropic change [V.K-1],0,, diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC532_Xu2019/README.md b/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC532_Xu2019/README.md deleted file mode 100644 index c1488b05b5..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC532_Xu2019/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Lithium Cobalt Oxide cathode parameters - -Parameters for a lithium Cobalt Oxide cathode, from the paper - -> Xu, Shanshan, Chen, Kuan-Hung, Dasgupta, Neil P., Siegel, Jason B. and Stefanopoulou, Anna G. "Evolution of Dead Lithium Growth in Lithium Metal Batteries: Experimentally Validated Model of the Apparent Capacity Loss." Journal of The Electrochemical Society 166.14 (2019): A3456-A3463. - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC532_Xu2019/__init__.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC532_Xu2019/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC532_Xu2019/nmc_electrolyte_exchange_current_density_Xu2019.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC532_Xu2019/nmc_electrolyte_exchange_current_density_Xu2019.py deleted file mode 100644 index 9a0f2dbbec..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC532_Xu2019/nmc_electrolyte_exchange_current_density_Xu2019.py +++ /dev/null @@ -1,35 +0,0 @@ -from pybamm import constants - - -def nmc_electrolyte_exchange_current_density_Xu2019(c_e, c_s_surf, c_s_max, T): - """ - Exchange-current density for Butler-Volmer reactions between NMC and LiPF6 in - EC:DMC. - - References - ---------- - .. [1] Xu, Shanshan, Chen, Kuan-Hung, Dasgupta, Neil P., Siegel, Jason B. and - Stefanopoulou, Anna G. "Evolution of Dead Lithium Growth in Lithium Metal Batteries: - Experimentally Validated Model of the Apparent Capacity Loss." Journal of The - Electrochemical Society 166.14 (2019): A3456-A3463. - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - # assuming implicit correction of incorrect units from the paper - m_ref = 5.76e-11 * constants.F # (A/m2)(mol/m3)**1.5 - includes ref concentrations - - return m_ref * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC532_Xu2019/nmc_ocp_Xu2019.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC532_Xu2019/nmc_ocp_Xu2019.py deleted file mode 100644 index 824799838f..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC532_Xu2019/nmc_ocp_Xu2019.py +++ /dev/null @@ -1,49 +0,0 @@ -import pybamm - - -def nmc_ocp_Xu2019(sto): - """ - Nickel Managanese Cobalt Oxide (NMC) Open Circuit Potential (OCP) as a - function of the stochiometry, from [1]. - - References - ---------- - .. [1] Xu, Shanshan, Chen, Kuan-Hung, Dasgupta, Neil P., Siegel, Jason B. and - Stefanopoulou, Anna G. "Evolution of Dead Lithium Growth in Lithium Metal Batteries: - Experimentally Validated Model of the Apparent Capacity Loss." Journal of The - Electrochemical Society 166.14 (2019): A3456-A3463. - - Parameters - ---------- - sto : :class:`pybamm.Symbol` - Stochiometry of material (li-fraction) - - """ - - # Values from Mohtat2020, might be more accurate - u_eq = ( - 4.3452 - - 1.6518 * sto - + 1.6225 * (sto**2) - - 2.0843 * (sto**3) - + 3.5146 * (sto**4) - - 2.2166 * (sto**5) - - 0.5623e-4 * pybamm.exp(109.451 * sto - 100.006) - ) - - # # only valid in range ~(0.25,0.95) - # u_eq = ( - # 5744.862289 * sto ** 9 - # - 35520.41099 * sto ** 8 - # + 95714.29862 * sto ** 7 - # - 147364.5514 * sto ** 6 - # + 142718.3782 * sto ** 5 - # - 90095.81521 * sto ** 4 - # + 37061.41195 * sto ** 3 - # - 9578.599274 * sto ** 2 - # + 1409.309503 * sto - # - 85.31153081 - # - 0.0003 * pybamm.exp(7.657 * sto ** 115) - # ) - - return u_eq diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC532_Xu2019/parameters.csv b/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC532_Xu2019/parameters.csv deleted file mode 100644 index 807231df57..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC532_Xu2019/parameters.csv +++ /dev/null @@ -1,25 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Positive electrode conductivity [S.m-1],100,, -Maximum concentration in positive electrode [mol.m-3],48230,, -Positive electrode diffusivity [m2.s-1],1e-14,, -Positive electrode OCP [V],[function]nmc_ocp_Xu2019,, -,,, -# Microstructure,,, -Positive electrode porosity,0.331,, -Positive electrode active material volume fraction,0.518,, -Positive particle radius [m],5.3E-06,, -Positive electrode Bruggeman coefficient (electrolyte),1.5,, -Positive electrode Bruggeman coefficient (electrode),1.5,, -,,, -# Thermal parameters,,, -Positive electrode OCP entropic change [V.K-1],0,, -,,, -# Interfacial reactions,,, -Positive electrode cation signed stoichiometry,-1,, -Positive electrode electrons in reaction,1,, -Positive electrode charge transfer coefficient,0.5,, -Positive electrode exchange-current density [A.m-2],[function]nmc_electrolyte_exchange_current_density_Xu2019,, -Positive electrode double-layer capacity [F.m-2],0.2,, diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/NMC_diffusivity_PeymanMPM.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/NMC_diffusivity_PeymanMPM.py deleted file mode 100644 index fc968d4e8e..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/NMC_diffusivity_PeymanMPM.py +++ /dev/null @@ -1,30 +0,0 @@ -from pybamm import exp, constants - - -def NMC_diffusivity_PeymanMPM(sto, T): - """ - NMC diffusivity as a function of stochiometry, in this case the - diffusivity is taken to be a constant. The value is taken from Peyman MPM. - - References - ---------- - .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - D_ref = 8 * 10 ** (-15) - E_D_s = 18550 - arrhenius = exp(E_D_s / constants.R * (1 / 298.15 - 1 / T)) - - return D_ref * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/NMC_electrolyte_exchange_current_density_PeymanMPM.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/NMC_electrolyte_exchange_current_density_PeymanMPM.py deleted file mode 100644 index 6589674140..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/NMC_electrolyte_exchange_current_density_PeymanMPM.py +++ /dev/null @@ -1,35 +0,0 @@ -from pybamm import exp, constants - - -def NMC_electrolyte_exchange_current_density_PeymanMPM(c_e, c_s_surf, c_s_max, T): - """ - Exchange-current density for Butler-Volmer reactions between NMC and LiPF6 in - EC:DMC. - - References - ---------- - .. Peyman MPM manuscript (to be submitted) - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - m_ref = 4.824 * 10 ** (-6) # (A/m2)(mol/m3)**1.5 - includes ref concentrations - E_r = 39570 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - return ( - m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 - ) diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/NMC_entropic_change_PeymanMPM.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/NMC_entropic_change_PeymanMPM.py deleted file mode 100644 index d938232f89..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/NMC_entropic_change_PeymanMPM.py +++ /dev/null @@ -1,39 +0,0 @@ -import pybamm - - -def NMC_entropic_change_PeymanMPM(sto, c_s_max): - """ - Nickel Manganese Cobalt (NMC) entropic change in open circuit potential (OCP) at - a temperature of 298.15K as a function of the OCP. The fit is taken from [1]. - - References - ---------- - .. [1] W. Le, I. Belharouak, D. Vissers, K. Amine, "In situ thermal study of - li1+ x [ni1/ 3co1/ 3mn1/ 3] 1- x o2 using isothermal micro-clorimetric - techniques", - J. of the Electrochemical Society 153 (11) (2006) A2147–A2151. - - Parameters - ---------- - sto : :class:`pybamm.Symbol` - Stochiometry of material (li-fraction) - - """ - - # Since the equation uses the OCP at each stoichiometry as input, - # we need OCP function here - - u_eq = ( - 4.3452 - - 1.6518 * sto - + 1.6225 * sto**2 - - 2.0843 * sto**3 - + 3.5146 * sto**4 - - 0.5623 * 10 ** (-4) * pybamm.exp(109.451 * sto - 100.006) - ) - - du_dT = ( - -800 + 779 * u_eq - 284 * u_eq**2 + 46 * u_eq**3 - 2.8 * u_eq**4 - ) * 10 ** (-3) - - return du_dT diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/NMC_ocp_PeymanMPM.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/NMC_ocp_PeymanMPM.py deleted file mode 100644 index c3166727c4..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/NMC_ocp_PeymanMPM.py +++ /dev/null @@ -1,35 +0,0 @@ -import pybamm - - -def NMC_ocp_PeymanMPM(sto): - """ - Nickel Managanese Cobalt Oxide (NMC) Open Circuit Potential (OCP) as a - function of the stochiometry. The fit is taken from Peyman MPM. - - References - ---------- - Peyman MPM manuscript (to be submitted) - - Parameters - ---------- - sto : :class:`pybamm.Symbol` - Stochiometry of material (li-fraction) - - """ - - u_eq = ( - 4.3452 - - 1.6518 * sto - + 1.6225 * (sto**2) - - 2.0843 * (sto**3) - + 3.5146 * (sto**4) - - 2.2166 * (sto**5) - - 0.5623e-4 * pybamm.exp(109.451 * sto - 100.006) - ) - - return u_eq - - -# if __name__ == "__main__": # pragma: no cover -# x = pybamm.linspace(0, 1) -# pybamm.plot(x, NMC_ocp_PeymanMPM(x)) diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/__init__.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/parameters.csv b/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/parameters.csv deleted file mode 100644 index e07eeaf17e..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/NMC_UMBL_Mohtat2020/parameters.csv +++ /dev/null @@ -1,32 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Positive electrode conductivity [S.m-1],100,Scott Moura FastDFN,no info from Peyman MPM -Maximum concentration in positive electrode [mol.m-3],35380,Peyman MPM, nickel manganese cobalt oxide -Positive electrode diffusivity [m2.s-1],[function]NMC_diffusivity_PeymanMPM,, -Positive electrode OCP [V],[function]NMC_ocp_PeymanMPM,, -,,, -# Microstructure,,, -Positive electrode porosity,0.3,Peyman MPM, -Positive electrode active material volume fraction,0.445,Peyman MPM,rest is binder -Positive particle radius [m],3.5E-06,Peyman MPM, -Positive electrode Bruggeman coefficient (electrode),1.5,Peyman MPM, -Positive electrode Bruggeman coefficient (electrolyte),1.5,Peyman MPM, -Positive electrode transport efficiency,0.16, -,,, -# Interfacial reactions,,, -Positive electrode cation signed stoichiometry,-1,,no info from Peyman MPM -Positive electrode electrons in reaction,1,,no info from Peyman MPM -Positive electrode reference exchange-current density [A.m-2(m3.mol)1.5],4.824E-06,Peyman MPM,converted unit -Positive electrode charge transfer coefficient,0.5,Peyman MPM, -Positive electrode double-layer capacity [F.m-2],0.2,,no info from Peyman MPM -Positive electrode exchange-current density [A.m-2],[function]NMC_electrolyte_exchange_current_density_PeymanMPM,, -,,, -# Density,,, -Positive electrode density [kg.m-3],3100,Peyman MPM, cell lumped value -,,, -# Thermal parameters,,, -Positive electrode specific heat capacity [J.kg-1.K-1],1100,Peyman MPM, cell lumped value -Positive electrode thermal conductivity [W.m-1.K-1],2.1,,no info from Peyman MPM -Positive electrode OCP entropic change [V.K-1],[function]NMC_entropic_change_PeymanMPM, diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/__init__.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/__init__.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/README.md b/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/README.md deleted file mode 100644 index 8f2719beb1..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Lithium Cobalt Oxide positive electrode parameters - -Parameters for a lithium Cobalt Oxide positive electrode, from the paper - -> Marquis, S. G., Sulzer, V., Timms, R., Please, C. P., & Chapman, S. J. (2019). “An asymptotic derivation of a single particle model with electrolyte”. [Journal of The Electrochemical Society](https://doi.org/10.1149/2.0341915jes), 166(15), A3693-A3706. - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/__init__.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/lico2_diffusivity_Dualfoil1998.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/lico2_diffusivity_Dualfoil1998.py deleted file mode 100644 index d4c0038ee1..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/lico2_diffusivity_Dualfoil1998.py +++ /dev/null @@ -1,29 +0,0 @@ -from pybamm import exp, constants - - -def lico2_diffusivity_Dualfoil1998(sto, T): - """ - LiCo2 diffusivity as a function of stochiometry, in this case the - diffusivity is taken to be a constant. The value is taken from Dualfoil [1]. - - References - ---------- - .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - D_ref = 1 * 10 ** (-13) - E_D_s = 18550 - arrhenius = exp(E_D_s / constants.R * (1 / 298.15 - 1 / T)) - - return D_ref * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/lico2_electrolyte_exchange_current_density_Dualfoil1998.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/lico2_electrolyte_exchange_current_density_Dualfoil1998.py deleted file mode 100644 index 9ff868ed86..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/lico2_electrolyte_exchange_current_density_Dualfoil1998.py +++ /dev/null @@ -1,35 +0,0 @@ -from pybamm import exp, constants - - -def lico2_electrolyte_exchange_current_density_Dualfoil1998(c_e, c_s_surf, c_s_max, T): - """ - Exchange-current density for Butler-Volmer reactions between lico2 and LiPF6 in - EC:DMC. - - References - ---------- - .. [2] http://www.cchem.berkeley.edu/jsngrp/fortran.html - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - m_ref = 6 * 10 ** (-7) # (A/m2)(mol/m3)**1.5 - includes ref concentrations - E_r = 39570 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - return ( - m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 - ) diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/lico2_entropic_change_Moura2016.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/lico2_entropic_change_Moura2016.py deleted file mode 100644 index 9ff64b554c..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/lico2_entropic_change_Moura2016.py +++ /dev/null @@ -1,33 +0,0 @@ -from pybamm import cosh - - -def lico2_entropic_change_Moura2016(sto, c_s_max): - """ - Lithium Cobalt Oxide (LiCO2) entropic change in open circuit potential (OCP) at - a temperature of 298.15K as a function of the stochiometry. The fit is taken - from Scott Moura's FastDFN code [1]. - - References - ---------- - .. [1] https://github.com/scott-moura/fastDFN - - Parameters - ---------- - sto : :class:`pybamm.Symbol` - Stochiometry of material (li-fraction) - """ - # Since the equation for LiCo2 from this ref. has the stretch factor, - # should this too? If not, the "bumps" in the OCV don't line up. - stretch = 1.062 - sto = stretch * sto - - du_dT = ( - 0.07645 * (-54.4806 / c_s_max) * ((1.0 / cosh(30.834 - 54.4806 * sto)) ** 2) - + 2.1581 * (-50.294 / c_s_max) * ((cosh(52.294 - 50.294 * sto)) ** (-2)) - + 0.14169 * (19.854 / c_s_max) * ((cosh(11.0923 - 19.8543 * sto)) ** (-2)) - - 0.2051 * (5.4888 / c_s_max) * ((cosh(1.4684 - 5.4888 * sto)) ** (-2)) - - (0.2531 / 0.1316 / c_s_max) * ((cosh((-sto + 0.56478) / 0.1316)) ** (-2)) - - (0.02167 / 0.006 / c_s_max) * ((cosh((sto - 0.525) / 0.006)) ** (-2)) - ) - - return du_dT diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/lico2_ocp_Dualfoil1998.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/lico2_ocp_Dualfoil1998.py deleted file mode 100644 index 78dfee5ee4..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/lico2_ocp_Dualfoil1998.py +++ /dev/null @@ -1,39 +0,0 @@ -from pybamm import tanh - - -def lico2_ocp_Dualfoil1998(sto): - """ - Lithium Cobalt Oxide (LiCO2) Open Circuit Potential (OCP) as a a function of the - stochiometry. The fit is taken from Dualfoil [1]. Dualfoil states that the data - was measured by Oscar Garcia 2001 using Quallion electrodes for 0.5 < sto < 0.99 - and by Marc Doyle for sto<0.4 (for unstated electrodes). We could not find any - other records of the Garcia measurements. Doyles fits can be found in his - thesis [2] but we could not find any other record of his measurments. - - References - ---------- - .. [1] http://www.cchem.berkeley.edu/jsngrp/fortran.html - .. [2] CM Doyle. Design and simulation of lithium rechargeable batteries, - 1995. - - Parameters - ---------- - sto : :class:`pybamm.Symbol` - Stochiometry of material (li-fraction) - - """ - - stretch = 1.062 - sto = stretch * sto - - u_eq = ( - 2.16216 - + 0.07645 * tanh(30.834 - 54.4806 * sto) - + 2.1581 * tanh(52.294 - 50.294 * sto) - - 0.14169 * tanh(11.0923 - 19.8543 * sto) - + 0.2051 * tanh(1.4684 - 5.4888 * sto) - + 0.2531 * tanh((-sto + 0.56478) / 0.1316) - - 0.02167 * tanh((sto - 0.525) / 0.006) - ) - - return u_eq diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/parameters.csv b/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/parameters.csv deleted file mode 100644 index 0eb099582c..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Marquis2019/parameters.csv +++ /dev/null @@ -1,30 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -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,, -,,, -# Microstructure,,, -Positive electrode porosity,0.3,Scott Moura FastDFN,electrolyte volume fraction -Positive electrode active material volume fraction,0.5,, -Positive particle radius [m],1E-05,Scott Moura FastDFN, -Positive electrode Bruggeman coefficient (electrolyte),1.5,Scott Moura FastDFN, -Positive electrode Bruggeman coefficient (electrode),1.5,Scott Moura FastDFN, -,,, -# Interfacial reactions,,, -Positive electrode cation signed stoichiometry,-1,, -Positive electrode electrons in reaction,1,, -Positive electrode charge transfer coefficient,0.5,Scott Moura FastDFN, -Positive electrode double-layer capacity [F.m-2],0.2,, -Positive electrode exchange-current density [A.m-2],[function]lico2_electrolyte_exchange_current_density_Dualfoil1998,, -,,, -# Density,,, -Positive electrode density [kg.m-3],3262,, -,,, -# Thermal parameters,,, -Positive electrode specific heat capacity [J.kg-1.K-1],700,, -Positive electrode thermal conductivity [W.m-1.K-1],2.1,, -Positive electrode OCP entropic change [V.K-1],[function]lico2_entropic_change_Moura2016,, diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/README.md b/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/README.md deleted file mode 100644 index 45acd6d53e..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Lithium Cobalt Oxide positive electrode parameters - -Parameters for a lithium Cobalt Oxide positive electrode, from the paper - -> Marquis, S. G., Sulzer, V., Timms, R., Please, C. P., & Chapman, S. J. (2019). “An asymptotic derivation of a single particle model with electrolyte”. [Journal of The Electrochemical Society](https://doi.org/10.1149/2.0341915jes), 166(15), A3693-A3706. -> P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." (2004) - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/__init__.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/lico2_diffusivity_Ramadass2004.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/lico2_diffusivity_Ramadass2004.py deleted file mode 100644 index 7411432e06..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/lico2_diffusivity_Ramadass2004.py +++ /dev/null @@ -1,31 +0,0 @@ -from pybamm import exp, constants - - -def lico2_diffusivity_Ramadass2004(sto, T): - """ - LiCo2 diffusivity as a function of stochiometry, in this case the - diffusivity is taken to be a constant. The value is taken from Ramadass 2004. - - References - ---------- - .. [1] P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko - N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." - (2004) - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - D_ref = 1 * 10 ** (-14) - E_D_s = 18550 - arrhenius = exp(E_D_s / constants.R * (1 / 298.15 - 1 / T)) - - return D_ref * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/lico2_electrolyte_exchange_current_density_Ramadass2004.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/lico2_electrolyte_exchange_current_density_Ramadass2004.py deleted file mode 100644 index a6de549c9e..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/lico2_electrolyte_exchange_current_density_Ramadass2004.py +++ /dev/null @@ -1,37 +0,0 @@ -from pybamm import exp, constants - - -def lico2_electrolyte_exchange_current_density_Ramadass2004(c_e, c_s_surf, c_s_max, T): - """ - Exchange-current density for Butler-Volmer reactions between lico2 and LiPF6 in - EC:DMC. - - References - ---------- - .. [1] P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko - N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." - (2004) - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - m_ref = 2.252 * 10 ** (-6) # (A/m2)(mol/m3)**1.5 - E_r = 39570 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - return ( - m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 - ) diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/lico2_entropic_change_Moura2016.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/lico2_entropic_change_Moura2016.py deleted file mode 100644 index 9ff64b554c..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/lico2_entropic_change_Moura2016.py +++ /dev/null @@ -1,33 +0,0 @@ -from pybamm import cosh - - -def lico2_entropic_change_Moura2016(sto, c_s_max): - """ - Lithium Cobalt Oxide (LiCO2) entropic change in open circuit potential (OCP) at - a temperature of 298.15K as a function of the stochiometry. The fit is taken - from Scott Moura's FastDFN code [1]. - - References - ---------- - .. [1] https://github.com/scott-moura/fastDFN - - Parameters - ---------- - sto : :class:`pybamm.Symbol` - Stochiometry of material (li-fraction) - """ - # Since the equation for LiCo2 from this ref. has the stretch factor, - # should this too? If not, the "bumps" in the OCV don't line up. - stretch = 1.062 - sto = stretch * sto - - du_dT = ( - 0.07645 * (-54.4806 / c_s_max) * ((1.0 / cosh(30.834 - 54.4806 * sto)) ** 2) - + 2.1581 * (-50.294 / c_s_max) * ((cosh(52.294 - 50.294 * sto)) ** (-2)) - + 0.14169 * (19.854 / c_s_max) * ((cosh(11.0923 - 19.8543 * sto)) ** (-2)) - - 0.2051 * (5.4888 / c_s_max) * ((cosh(1.4684 - 5.4888 * sto)) ** (-2)) - - (0.2531 / 0.1316 / c_s_max) * ((cosh((-sto + 0.56478) / 0.1316)) ** (-2)) - - (0.02167 / 0.006 / c_s_max) * ((cosh((sto - 0.525) / 0.006)) ** (-2)) - ) - - return du_dT diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/lico2_ocp_Ramadass2004.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/lico2_ocp_Ramadass2004.py deleted file mode 100644 index 7615a60823..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/lico2_ocp_Ramadass2004.py +++ /dev/null @@ -1,39 +0,0 @@ -def lico2_ocp_Ramadass2004(sto): - """ - Lithium Cobalt Oxide (LiCO2) Open Circuit Potential (OCP) as a a function of the - stochiometry. The fit is taken from Ramadass 2004. Stretch is considered the - overhang area negative electrode / area positive electrode, in Ramadass 2002. - - References - ---------- - .. [1] P. Ramadass, Bala Haran, Parthasarathy M. Gomadam, Ralph White, and Branko - N. Popov. "Development of First Principles Capacity Fade Model for Li-Ion Cells." - (2004) - - Parameters - ---------- - sto : :class:`pybamm.Symbol` - Stochiometry of material (li-fraction) - - """ - - stretch = 1.13 - sto = stretch * sto - - u_eq = ( - -4.656 - + 88.669 * (sto**2) - - 401.119 * (sto**4) - + 342.909 * (sto**6) - - 462.471 * (sto**8) - + 433.434 * (sto**10) - ) / ( - -1 - + 18.933 * (sto**2) - - 79.532 * (sto**4) - + 37.311 * (sto**6) - - 73.083 * (sto**8) - + 95.96 * (sto**10) - ) - - return u_eq diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/parameters.csv b/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/parameters.csv deleted file mode 100644 index ed5a539574..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/parameters.csv +++ /dev/null @@ -1,30 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Positive electrode conductivity [S.m-1],100,Ramadass,lithium cobalt oxide -Maximum concentration in positive electrode [mol.m-3],51555,Ramadass, -Positive electrode diffusivity [m2.s-1],[function]lico2_diffusivity_Ramadass2004,, -Positive electrode OCP [V],[function]lico2_ocp_Ramadass2004,, -,,, -# Microstructure,,, -Positive electrode porosity,0.385,Ramadass,electrolyte volume fraction -Positive electrode active material volume fraction,0.59,Ramadass, -Positive particle radius [m],2e-06,Ramadass, -Positive electrode Bruggeman coefficient (electrolyte),4,Ramadass, -Positive electrode Bruggeman coefficient (electrode),4,Ramadass, -,,, -# Interfacial reactions,,, -Positive electrode cation signed stoichiometry,-1,, -Positive electrode electrons in reaction,1,, -Positive electrode charge transfer coefficient,0.5,Ramadass, -Positive electrode double-layer capacity [F.m-2],0.2,, -Positive electrode exchange-current density [A.m-2],[function]lico2_electrolyte_exchange_current_density_Ramadass2004,, -,,, -# Density,,, -Positive electrode density [kg.m-3],3262,, -,,, -# Thermal parameters,,, -Positive electrode specific heat capacity [J.kg-1.K-1],700,, -Positive electrode thermal conductivity [W.m-1.K-1],2.1,, -Positive electrode OCP entropic change [V.K-1],[function]lico2_entropic_change_Moura2016,, diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/README.md b/pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/README.md deleted file mode 100644 index e87e0422b8..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Nickel Cobalt Aluminium (NCA) positive electrode parameters - -Parameters for an NCA positive electrode, from the paper - -> Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. (2011). Multi-domain modeling of lithium-ion batteries encompassing multi-physics in varied length scales. Journal of The Electrochemical Society, 158(8), A955-A969. - -Note, only an effective cell volumetric heat capacity is provided in the paper. We therefore used the values for the density and specific heat capacity reported in the Marquis2019 parameter set in each region and multiplied each density by the ratio of the volumetric heat capacity provided in smith to the calculated value. This ensures that the values produce the same effective cell volumetric heat capacity. This works fine for thermal models that are averaged over the x-direction but not for full (PDE in x direction) thermal models. We do the same for the planar effective thermal conductivity. diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/__init__.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/nca_diffusivity_Kim2011.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/nca_diffusivity_Kim2011.py deleted file mode 100644 index fec5ecd4ab..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/nca_diffusivity_Kim2011.py +++ /dev/null @@ -1,31 +0,0 @@ -from pybamm import exp, constants - - -def nca_diffusivity_Kim2011(sto, T): - """ - NCA diffusivity as a function of stochiometry [1]. - - References - ---------- - .. [1] Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. - (2011). Multi-domain modeling of lithium-ion batteries encompassing - multi-physics in varied length scales. Journal of The Electrochemical - Society, 158(8), A955-A969. - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - D_ref = 3 * 10 ** (-15) - E_D_s = 2e4 - arrhenius = exp(E_D_s / constants.R * (1 / 298.15 - 1 / T)) - - return D_ref * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/nca_electrolyte_exchange_current_density_Kim2011.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/nca_electrolyte_exchange_current_density_Kim2011.py deleted file mode 100644 index 8c5141875c..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/nca_electrolyte_exchange_current_density_Kim2011.py +++ /dev/null @@ -1,50 +0,0 @@ -from pybamm import exp, constants, Parameter - - -def nca_electrolyte_exchange_current_density_Kim2011(c_e, c_s_surf, c_s_max, T): - """ - Exchange-current density for Butler-Volmer reactions between NCA and LiPF6 in EC:DMC - [1]. - - References - ---------- - .. [1] Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. - (2011). Multi-domain modeling of lithium-ion batteries encompassing - multi-physics in varied length scales. Journal of The Electrochemical - Society, 158(8), A955-A969. - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - i0_ref = 4 # reference exchange current density at 100% SOC - sto = 0.41 # stochiometry at 100% SOC - c_s_ref = sto * c_s_max # reference electrode concentration - c_e_ref = Parameter("Typical electrolyte concentration [mol.m-3]") - alpha = 0.5 # charge transfer coefficient - - m_ref = i0_ref / ( - c_e_ref**alpha * (c_s_max - c_s_ref) ** alpha * c_s_ref**alpha - ) - E_r = 3e4 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - return ( - m_ref - * arrhenius - * c_e**alpha - * c_s_surf**alpha - * (c_s_max - c_s_surf) ** alpha - ) diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/parameters.csv b/pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/parameters.csv deleted file mode 100644 index 8ec2ab9529..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/parameters.csv +++ /dev/null @@ -1,30 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Positive electrode conductivity [S.m-1],10,, -Maximum concentration in positive electrode [mol.m-3],4.9E4,, -Positive electrode diffusivity [m2.s-1],[function]nca_diffusivity_Kim2011,, -Positive electrode OCP [V],[data]nca_ocp_Kim2011_data, -,,, -# Microstructure,,, -Positive electrode porosity,0.4,, -Positive electrode active material volume fraction,0.41,, -Positive particle radius [m],1.633E-6,, -Positive electrode Bruggeman coefficient (electrolyte),2,, -Positive electrode Bruggeman coefficient (electrode),2,, -,,, -# Interfacial reactions,,, -Positive electrode cation signed stoichiometry,-1,, -Positive electrode electrons in reaction,1,, -Positive electrode charge transfer coefficient,0.5,, -Positive electrode double-layer capacity [F.m-2],0.2, Not provided in Kim2011, -Positive electrode exchange-current density [A.m-2],[function]nca_electrolyte_exchange_current_density_Kim2011,, -,,, -# Density,,, -Positive electrode density [kg.m-3],4205.82708, 3262 * 1.28934, -,,, -# Thermal parameters,,, -Positive electrode specific heat capacity [J.kg-1.K-1],700,, -Positive electrode thermal conductivity [W.m-1.K-1],1.4007, 2.1 * 0.667, -Positive electrode OCP entropic change [V.K-1],0,, diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/README.md b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/README.md deleted file mode 100644 index 9bd8671867..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# NMC 811 positive electrode parameters - -Parameters for an LG M50 NMC 811 positive electrode, 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."](https://iopscience.iop.org/article/10.1149/1945-7111/ab9050) Journal of the Electrochemical Society 167 (2020): 080534 - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/__init__.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/nmc_LGM50_electrolyte_exchange_current_density_Chen2020.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/nmc_LGM50_electrolyte_exchange_current_density_Chen2020.py deleted file mode 100644 index d1fca0d6cc..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/nmc_LGM50_electrolyte_exchange_current_density_Chen2020.py +++ /dev/null @@ -1,38 +0,0 @@ -from pybamm import exp, constants - - -def nmc_LGM50_electrolyte_exchange_current_density_Chen2020(c_e, c_s_surf, c_s_max, T): - """ - Exchange-current density for Butler-Volmer reactions between NMC and LiPF6 in - EC:DMC. - - References - ---------- - .. [1] 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." Journal of the - Electrochemical Society 167 (2020): 080534. - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - m_ref = 3.42e-6 # (A/m2)(mol/m3)**1.5 - includes ref concentrations - E_r = 17800 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - return ( - m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 - ) diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/nmc_LGM50_ocp_Chen2020.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/nmc_LGM50_ocp_Chen2020.py deleted file mode 100644 index 2038c2eb76..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/nmc_LGM50_ocp_Chen2020.py +++ /dev/null @@ -1,35 +0,0 @@ -from pybamm import tanh - - -def nmc_LGM50_ocp_Chen2020(sto): - """ - LG M50 NMC open circuit potential as a function of stochiometry, fit taken - from [1]. - - References - ---------- - .. [1] 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." Journal of the - Electrochemical Society 167 (2020): 080534. - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - - Returns - ------- - :class:`pybamm.Symbol` - Open circuit potential - """ - - u_eq = ( - -0.8090 * sto - + 4.4875 - - 0.0428 * tanh(18.5138 * (sto - 0.5542)) - - 17.7326 * tanh(15.7890 * (sto - 0.3117)) - + 17.5842 * tanh(15.9308 * (sto - 0.3120)) - ) - - return u_eq diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/parameters.csv b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/parameters.csv deleted file mode 100644 index 0ba1e0fbe4..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/parameters.csv +++ /dev/null @@ -1,30 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Positive electrode conductivity [S.m-1],0.18,Chen 2020, -Maximum concentration in positive electrode [mol.m-3],63104,Chen 2020,tuned for 1C -Positive electrode diffusivity [m2.s-1],4E-15,Chen 2020,tuned for 1C -Positive electrode OCP [V],[function]nmc_LGM50_ocp_Chen2020,Chen 2020, -,,, -# Microstructure,,, -Positive electrode porosity,0.335,Chen 2020, -Positive electrode active material volume fraction,0.665,Chen 2020, -Positive particle radius [m],5.22E-6,Chen 2020, -Positive electrode Bruggeman coefficient (electrolyte),1.5,Chen 2020,theoretical -Positive electrode Bruggeman coefficient (electrode),1.5,default, -,,, -# Interfacial reactions,,, -Positive electrode cation signed stoichiometry,-1,, -Positive electrode electrons in reaction,1,, -Positive electrode charge transfer coefficient,0.5,Chen 2020, -Positive electrode double-layer capacity [F.m-2],0.2,, -Positive electrode exchange-current density [A.m-2],[function]nmc_LGM50_electrolyte_exchange_current_density_Chen2020,, -,,, -# Density,,, -Positive electrode density [kg.m-3],3262,default, -,,, -# Thermal parameters,,, -Positive electrode specific heat capacity [J.kg-1.K-1],700,default, -Positive electrode thermal conductivity [W.m-1.K-1],2.1,default, -Positive electrode OCP entropic change [V.K-1],0,, diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/README.md b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/README.md deleted file mode 100644 index a3775e61b6..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# NMC 811 positive electrode parameters - -Parameters for an LG M50 NMC 811 positive electrode, from the paper - -> Simon O'Kane, Weilong Ai, Ganesh Madabattula, Diego Alonso-Alvarez, Robert Timms, Valentin Sulzer, Jacqueline Edge, Billy Wu, Gregory Offer, and Monica Marinescu. ["Lithium-ion battery degradation: how to model it."](https://pubs.rsc.org/en/content/articlelanding/2022/cp/d2cp00417h) Physical Chemistry: Chemical Physics 24 (2022): 7909-7922 - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/__init__.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/cracking_rate_Ai2020.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/cracking_rate_Ai2020.py deleted file mode 100644 index 51299a21f0..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/cracking_rate_Ai2020.py +++ /dev/null @@ -1,32 +0,0 @@ -from pybamm import constants, exp - - -def cracking_rate_Ai2020(T_dim): - """ - Particle cracking rate as a function of temperature [1, 2]. - - References - ---------- - .. [1] > Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). - Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in - Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 - DOI: 10.1149/2.0122001JES. - .. [2] > Deshpande, R., Verbrugge, M., Cheng, Y. T., Wang, J., & Liu, P. (2012). - Battery cycle life prediction with coupled chemical degradation and fatigue - mechanics. Journal of the Electrochemical Society, 159(10), A1730. - - Parameters - ---------- - T: :class:`pybamm.Symbol` - temperature, [K] - - Returns - ------- - k_cr: :class:`pybamm.Symbol` - cracking rate, [m/(Pa.m0.5)^m_cr] - where m_cr is another Paris' law constant - """ - k_cr = 3.9e-20 - Eac_cr = 0 # to be implemented - arrhenius = exp(Eac_cr / constants.R * (1 / T_dim - 1 / 298.15)) - return k_cr * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/nmc_LGM50_diffusivity_Chen2020.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/nmc_LGM50_diffusivity_Chen2020.py deleted file mode 100644 index bce5f98105..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/nmc_LGM50_diffusivity_Chen2020.py +++ /dev/null @@ -1,33 +0,0 @@ -from pybamm import exp, constants - - -def nmc_LGM50_diffusivity_Chen2020(sto, T): - """ - 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] 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." Journal of the - Electrochemical Society 167 (2020): 080534. - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - D_ref = 4e-15 - E_D_s = 25000 # O'Kane et al. (2022), after Cabanero et al. (2018) - arrhenius = exp(E_D_s / constants.R * (1 / 298.15 - 1 / T)) - - return D_ref * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/nmc_LGM50_electrolyte_exchange_current_density_Chen2020.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/nmc_LGM50_electrolyte_exchange_current_density_Chen2020.py deleted file mode 100644 index 5dc374143c..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/nmc_LGM50_electrolyte_exchange_current_density_Chen2020.py +++ /dev/null @@ -1,36 +0,0 @@ -from pybamm import exp, constants - - -def nmc_LGM50_electrolyte_exchange_current_density_Chen2020(c_e, c_s_surf, c_s_max, T): - """ - Exchange-current density for Butler-Volmer reactions between NMC and LiPF6 in - EC:DMC. - - References - ---------- - .. [1] 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." Journal of the - Electrochemical Society 167 (2020): 080534. - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - m_ref = 3.42e-6 # (A/m2)(mol/m3)**1.5 - includes ref concentrations - E_r = 17800 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - return ( - m_ref * arrhenius * c_e**0.5 * c_s_surf**0.5 * (c_s_max - c_s_surf) ** 0.5 - ) diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/nmc_LGM50_ocp_Chen2020.csv b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/nmc_LGM50_ocp_Chen2020.csv deleted file mode 100644 index 7dc9adc71c..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/nmc_LGM50_ocp_Chen2020.csv +++ /dev/null @@ -1,243 +0,0 @@ -# OCP data for LG M50 NMC positive electrode -# sto,ocp -# extra point to avoid extrapolation -0.248797280909757,4.40 -# experimentally measured data -0.266145163492257,4.29356530000000 -0.268867632314474,4.27686210000000 -0.271590113475307,4.26470180000000 -0.274312581168247,4.25403120000000 -0.277035051828500,4.24494460000000 -0.279757525339878,4.23648790000000 -0.282479995064952,4.23026470000000 -0.285202473437965,4.22255280000000 -0.287924947671149,4.21825740000000 -0.290647431425727,4.21329400000000 -0.293369917257952,4.20903730000000 -0.296092386692851,4.20512390000000 -0.298814868849636,4.20126770000000 -0.301537350055390,4.19815640000000 -0.304259830904681,4.19552180000000 -0.306982312259254,4.19311670000000 -0.309704783671781,4.18897440000000 -0.312427252746966,4.18815330000000 -0.315149732455743,4.18658830000000 -0.317872201316148,4.18502280000000 -0.320594658973297,4.18322850000000 -0.323317140454362,4.18088050000000 -0.326039617362371,4.18057490000000 -0.328762086363981,4.17895220000000 -0.331484555867675,4.17681460000000 -0.334207025471543,4.17681460000000 -0.336929501255821,4.17528720000000 -0.339651973273663,4.17311100000000 -0.342374462458239,4.17267180000000 -0.345096938615155,4.17108770000000 -0.347819410074246,4.17022850000000 -0.350541895855318,4.16879700000000 -0.353264376316384,4.16698310000000 -0.355986846136589,4.16551350000000 -0.358709322969457,4.16345170000000 -0.361431798807600,4.15982480000000 -0.364154276288401,4.15717120000000 -0.366876742342325,4.15407900000000 -0.369599211442129,4.15041350000000 -0.372321688828519,4.14665320000000 -0.375044179100704,4.14233880000000 -0.377766654413886,4.13823460000000 -0.380489134491185,4.13382480000000 -0.383211609132993,4.13057990000000 -0.385934081264202,4.12723920000000 -0.388656550366338,4.12281040000000 -0.391379033718590,4.11861090000000 -0.394101506024207,4.11418200000000 -0.396823981011550,4.10960050000000 -0.399546445031954,4.10469480000000 -0.402268917913251,4.10047580000000 -0.404991398895142,4.09564640000000 -0.407713868869987,4.09096960000000 -0.410436337723266,4.08646440000000 -0.413158819617673,4.08184480000000 -0.415881292009550,4.07768300000000 -0.418603765047837,4.07333090000000 -0.421326243264316,4.06907370000000 -0.424048721985195,4.06472160000000 -0.426771203785911,4.06086540000000 -0.429493683560302,4.05647470000000 -0.432216157859838,4.05275250000000 -0.434938637930869,4.04924010000000 -0.437661112840513,4.04502110000000 -0.440383593375701,4.04198600000000 -0.443106070903017,4.03847360000000 -0.445828558295681,4.03517100000000 -0.448551031796266,4.03204060000000 -0.451273507249511,4.02892880000000 -0.453996003855954,4.02597000000000 -0.456718484235626,4.02274370000000 -0.459440954945593,4.01997570000000 -0.462163428115050,4.01751330000000 -0.464885915164505,4.01497460000000 -0.467608383790858,4.01220660000000 -0.470330853087581,4.00995400000000 -0.473053327146540,4.00756790000000 -0.475775805779291,4.00506690000000 -0.478498280251222,4.00231840000000 -0.481220742406741,3.99955010000000 -0.483943214533784,3.99693490000000 -0.486665690272151,3.99265890000000 -0.489388163807013,3.98895550000000 -0.492110637403290,3.98340030000000 -0.494833100364319,3.97830370000000 -0.497555571325341,3.97559290000000 -0.500278043298208,3.97076320000000 -0.503000516078447,3.96810980000000 -0.505722984627149,3.96356650000000 -0.508445451410474,3.95944330000000 -0.511167916160712,3.95566340000000 -0.513890383743419,3.95215110000000 -0.516612844491088,3.94791320000000 -0.519335313666282,3.94382810000000 -0.522057772177089,3.94008660000000 -0.524780244833149,3.93623040000000 -0.527502711490113,3.93142010000000 -0.530225181904053,3.92838480000000 -0.532947653094719,3.92422320000000 -0.535670116160643,3.91920280000000 -0.538392582186640,3.91662570000000 -0.541115055303321,3.91179610000000 -0.543837527290114,3.90815000000000 -0.546559999225906,3.90387390000000 -0.549282473099007,3.89955970000000 -0.552004938974192,3.89591360000000 -0.554727397110192,3.89093140000000 -0.557449855597342,3.88726620000000 -0.560172327720750,3.88310480000000 -0.562894802037505,3.87934420000000 -0.565617285773971,3.87476280000000 -0.568339758495162,3.87025760000000 -0.571062218638907,3.86668780000000 -0.573784688274245,3.86239270000000 -0.576507157299816,3.85817410000000 -0.579229628899775,3.85414600000000 -0.581952099068137,3.84998460000000 -0.584674561619127,3.84500220000000 -0.587397020754022,3.84225340000000 -0.590119479693579,3.83809190000000 -0.592841939924731,3.83415960000000 -0.595564403547528,3.83093330000000 -0.598286868612232,3.82721090000000 -0.601009347425258,3.82316400000000 -0.603731818208659,3.81923150000000 -0.606454292118578,3.81598640000000 -0.609176768553542,3.81230210000000 -0.611899246291593,3.80903790000000 -0.614621716230771,3.80716710000000 -0.617344187685711,3.80405550000000 -0.620066659099430,3.80136390000000 -0.622789138734988,3.79708790000000 -0.625511617433531,3.79533170000000 -0.628234084250521,3.79206730000000 -0.630956557807740,3.78838300000000 -0.633679025844496,3.78553890000000 -0.636401495064267,3.78382060000000 -0.639123970191964,3.78111000000000 -0.641846449308652,3.77948740000000 -0.644568927771322,3.77692940000000 -0.647291404914478,3.77360800000000 -0.650013889129768,3.76959920000000 -0.652736367967840,3.76902650000000 -0.655458839536009,3.76627760000000 -0.658181310438348,3.76429220000000 -0.660903786306585,3.76268890000000 -0.663626254736975,3.76037910000000 -0.666348738333431,3.75755380000000 -0.669071213782409,3.75520560000000 -0.671793687532754,3.75331590000000 -0.674516164245807,3.75071980000000 -0.677238646529723,3.74875350000000 -0.679961125087374,3.74714990000000 -0.682683607484084,3.74428650000000 -0.685406075721887,3.74230120000000 -0.688128545911254,3.74006770000000 -0.690851028189204,3.73857880000000 -0.693573498264774,3.73453190000000 -0.696295966701841,3.73392110000000 -0.699018434718856,3.73016050000000 -0.701740901054719,3.73010330000000 -0.704463378887980,3.72783160000000 -0.707185849109592,3.72515890000000 -0.709908327081682,3.72386100000000 -0.712630805246016,3.72157030000000 -0.715353278555653,3.71912670000000 -0.718075742809693,3.71727510000000 -0.720798219830455,3.71570970000000 -0.723520694189328,3.71309450000000 -0.726243165189205,3.70994470000000 -0.728965639893390,3.70710040000000 -0.731688103753489,3.70456150000000 -0.734410565090537,3.70358800000000 -0.737133034756847,3.70208000000000 -0.739855506564427,3.70026640000000 -0.742577987473750,3.69721220000000 -0.745300467667417,3.69528410000000 -0.748022934626483,3.69293620000000 -0.750745403364983,3.68980550000000 -0.753467872385266,3.68909910000000 -0.756190338725858,3.68652200000000 -0.758912814805470,3.68497590000000 -0.761635286778263,3.68216970000000 -0.764357761597942,3.68081430000000 -0.767080238030274,3.67865730000000 -0.769802703134331,3.67619470000000 -0.772525170787922,3.67476300000000 -0.775247647398611,3.67128870000000 -0.777970116013000,3.66972330000000 -0.780692583791189,3.66789080000000 -0.783415062024859,3.66525650000000 -0.786137529881339,3.66306110000000 -0.788859991839412,3.66027400000000 -0.791582456579698,3.65836520000000 -0.794304940665857,3.65548280000000 -0.797027408651066,3.65229490000000 -0.799749868022516,3.64998480000000 -0.802472336866029,3.64704510000000 -0.805194798213859,3.64055470000000 -0.807917271231816,3.63834050000000 -0.810639738427300,3.63507600000000 -0.813362206944959,3.63354900000000 -0.816084680519184,3.63223170000000 -0.818807143264440,3.63068560000000 -0.821529609046551,3.62839480000000 -0.824252075066457,3.62684870000000 -0.826974531979797,3.62430980000000 -0.829696999423772,3.62236260000000 -0.832419462686953,3.61936550000000 -0.835141923021117,3.61776210000000 -0.837864385539901,3.61585310000000 -0.840586843407759,3.61283710000000 -0.843309308653791,3.61180620000000 -0.846031768598797,3.60945820000000 -0.848754235411593,3.60724380000000 -0.851476699467683,3.60499120000000 -0.854199161102801,3.60308220000000 -0.856921623426447,3.60126880000000 -0.859644087674256,3.59958890000000 -0.862366559650803,3.59764170000000 -0.865089024293406,3.59519840000000 -0.867811486910360,3.59384300000000 -0.870533951869352,3.59162860000000 -0.873256418218254,3.58949070000000 -0.875978884501499,3.58742900000000 -0.878701351769785,3.58529090000000 -0.881423826658424,3.58347750000000 -0.884146298809852,3.58177850000000 -0.886868771867091,3.58011770000000 -0.889591240142391,3.57788420000000 -0.892313713281813,3.57633810000000 -0.895036201752086,3.57378010000000 -0.897758683022040,3.57210020000000 -0.900481161991173,3.57021020000000 -0.903203643476430,3.56849220000000 -0.905926128940627,3.56721330000000 -# extra points to avoid extrapolation -1,3.52302166875714 \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/nmc_LGM50_ocp_Chen2020.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/nmc_LGM50_ocp_Chen2020.py deleted file mode 100644 index 2038c2eb76..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/nmc_LGM50_ocp_Chen2020.py +++ /dev/null @@ -1,35 +0,0 @@ -from pybamm import tanh - - -def nmc_LGM50_ocp_Chen2020(sto): - """ - LG M50 NMC open circuit potential as a function of stochiometry, fit taken - from [1]. - - References - ---------- - .. [1] 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." Journal of the - Electrochemical Society 167 (2020): 080534. - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - - Returns - ------- - :class:`pybamm.Symbol` - Open circuit potential - """ - - u_eq = ( - -0.8090 * sto - + 4.4875 - - 0.0428 * tanh(18.5138 * (sto - 0.5542)) - - 17.7326 * tanh(15.7890 * (sto - 0.3117)) - + 17.5842 * tanh(15.9308 * (sto - 0.3120)) - ) - - return u_eq diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/parameters.csv b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/parameters.csv deleted file mode 100644 index 0e5c9a39d2..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/parameters.csv +++ /dev/null @@ -1,50 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Positive electrode conductivity [S.m-1],0.18,Chen 2020, -Maximum concentration in positive electrode [mol.m-3],63104,Chen 2020,tuned for 1C -Positive electrode diffusivity [m2.s-1],[function]nmc_LGM50_diffusivity_Chen2020,Chen 2020,tuned for 1C -Positive electrode OCP [V],[function]nmc_LGM50_ocp_Chen2020,Chen 2020, -,,, -# Microstructure,,, -Positive electrode porosity,0.335,Chen 2020, -Positive electrode active material volume fraction,0.665,Chen 2020, -Positive particle radius [m],5.22E-6,Chen 2020, -Positive electrode Bruggeman coefficient (electrolyte),1.5,Chen 2020,theoretical -Positive electrode Bruggeman coefficient (electrode),1.5,default, -,,, -# Interfacial reactions,,, -Positive electrode cation signed stoichiometry,-1,, -Positive electrode electrons in reaction,1,, -Positive electrode charge transfer coefficient,0.5,Chen 2020, -Positive electrode double-layer capacity [F.m-2],0.2,, -Positive electrode exchange-current density [A.m-2],[function]nmc_LGM50_electrolyte_exchange_current_density_Chen2020,, -,,, -# Density,,, -Positive electrode density [kg.m-3],3262,default, -,,, -# Thermal parameters,,, -Positive electrode specific heat capacity [J.kg-1.K-1],700,default, -Positive electrode thermal conductivity [W.m-1.K-1],2.1,default, -Positive electrode OCP entropic change [V.K-1],0,, -,,, -# Mechanical properties,,, -Positive electrode Poisson's ratio,0.2,, -Positive electrode Young's modulus [Pa],375e9,, -Positive electrode reference concentration for free of deformation [mol.m-3],0,, -Positive electrode partial molar volume [m3.mol-1],12.5e-6,, -Positive electrode volume change,[function]volume_change_Ai2020,Ai2020, -,,, -# Crack model,,, -Positive electrode initial crack length [m],20e-9,, -Positive electrode initial crack width [m],15e-9,, -Positive electrode number of cracks per unit area [m-2],3.18e15,, -Positive electrode Paris' law constant b,1.12,, -Positive electrode Paris' law constant m,2.2,, -Positive electrode cracking rate,[function]cracking_rate_Ai2020,Ai2020, -,,, -# Loss of active materials (LAM) model,,, -Positive electrode LAM constant proportional term [s-1],2.7778E-7,0.001/3600, -Positive electrode LAM constant exponential term,2,, -Positive electrode critical stress [Pa],375e6,, \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/volume_change_Ai2020.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/volume_change_Ai2020.py deleted file mode 100644 index 39589ef50b..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/volume_change_Ai2020.py +++ /dev/null @@ -1,30 +0,0 @@ -from pybamm import Parameter - - -def volume_change_Ai2020(sto, c_s_max): - """ - Particle volume change as a function of stochiometry [1, 2]. - - References - ---------- - .. [1] > Ai, W., Kraft, L., Sturm, J., Jossen, A., & Wu, B. (2020). - Electrochemical Thermal-Mechanical Modelling of Stress Inhomogeneity in - Lithium-Ion Pouch Cells. Journal of The Electrochemical Society, 167(1), 013512 - DOI: 10.1149/2.0122001JES. - .. [2] > Rieger, B., Erhard, S. V., Rumpf, K., & Jossen, A. (2016). - A new method to model the thickness change of a commercial pouch cell - during discharge. Journal of The Electrochemical Society, 163(8), A1566-A1575. - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry, dimensionless - should be R-averaged particle concentration - Returns - ------- - t_change:class:`pybamm.Symbol` - volume change, dimensionless, normalised by particle volume - """ - omega = Parameter("Positive electrode partial molar volume [m3.mol-1]") - t_change = omega * c_s_max * sto - return t_change diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/README.md b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/README.md deleted file mode 100644 index ba9aa6cdd4..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# NMC 811 positive electrode parameters - -Parameters for an LG M50 NMC positive electrode, from the paper - -> Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma Kendrick. ["Thermal-electrochemical parameters of a high energy lithium-ion cylindrical battery."](https://www.sciencedirect.com/science/article/pii/S0013468622008593) Electrochimica Acta 425 (2022): 140700 - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/__init__.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_diffusivity_ORegan2022.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_diffusivity_ORegan2022.py deleted file mode 100644 index 6ec0ca2fd6..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_diffusivity_ORegan2022.py +++ /dev/null @@ -1,54 +0,0 @@ -from pybamm import exp, constants - - -def nmc_LGM50_diffusivity_ORegan2022(sto, T): - """ - 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] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma - Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion - cylindrical battery." Electrochimica Acta 425 (2022): 140700 - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Solid diffusivity - """ - - a1 = -0.9231 - a2 = -0.4066 - a3 = -0.993 - b1 = 0.3216 - b2 = 0.4532 - b3 = 0.8098 - c0 = -13.96 - c1 = 0.002534 - c2 = 0.003926 - c3 = 0.09924 - d = 1449 - - D_ref = ( - 10 - ** ( - c0 - + a1 * exp(-((sto - b1) ** 2) / c1) - + a2 * exp(-((sto - b2) ** 2) / c2) - + a3 * exp(-((sto - b3) ** 2) / c3) - ) - * 2.7 # correcting factor (see O'Regan et al 2021) - ) - - E_D_s = d * constants.R - arrhenius = exp(E_D_s / constants.R * (1 / 298.15 - 1 / T)) - - return D_ref * arrhenius diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_electrolyte_exchange_current_density_ORegan2022.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_electrolyte_exchange_current_density_ORegan2022.py deleted file mode 100644 index 86612c32ae..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_electrolyte_exchange_current_density_ORegan2022.py +++ /dev/null @@ -1,46 +0,0 @@ -from pybamm import exp, constants, Parameter - - -def nmc_LGM50_electrolyte_exchange_current_density_ORegan2022( - c_e, c_s_surf, c_s_max, T -): - """ - Exchange-current density for Butler-Volmer reactions between NMC and LiPF6 in - EC:DMC. - - References - ---------- - .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma - Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion - cylindrical battery." Electrochimica Acta 425 (2022): 140700 - - Parameters - ---------- - c_e : :class:`pybamm.Symbol` - Electrolyte concentration [mol.m-3] - c_s_surf : :class:`pybamm.Symbol` - Particle concentration [mol.m-3] - c_s_max : :class:`pybamm.Symbol` - Maximum particle concentration [mol.m-3] - T : :class:`pybamm.Symbol` - Temperature [K] - - Returns - ------- - :class:`pybamm.Symbol` - Exchange-current density [A.m-2] - """ - i_ref = 5.028 # (A/m2) - alpha = 0.43 - E_r = 2.401e4 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - c_e_ref = Parameter("Typical electrolyte concentration [mol.m-3]") - - return ( - i_ref - * arrhenius - * (c_e / c_e_ref) ** (1 - alpha) - * (c_s_surf / c_s_max) ** alpha - * (1 - c_s_surf / c_s_max) ** (1 - alpha) - ) diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_electronic_conductivity_ORegan2022.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_electronic_conductivity_ORegan2022.py deleted file mode 100644 index 22115666b7..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_electronic_conductivity_ORegan2022.py +++ /dev/null @@ -1,31 +0,0 @@ -from pybamm import exp, constants - - -def nmc_LGM50_electronic_conductivity_ORegan2022(T): - """ - Positive electrode electronic conductivity as a function of the temperature from - [1]. - - References - ---------- - .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma - Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion - cylindrical battery." Electrochimica Acta 425 (2022): 140700 - - Parameters - ---------- - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Thermal conductivity - """ - - E_r = 3.5e3 - arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) - - sigma = 0.8473 * arrhenius - - return sigma diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_entropic_change_ORegan2022.csv b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_entropic_change_ORegan2022.csv deleted file mode 100644 index 804ab7cd90..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_entropic_change_ORegan2022.csv +++ /dev/null @@ -1,19 +0,0 @@ -# Entropic term data for LG M50 NMC positive electrode -# sto,dUdT -# extra point to avoid extrapolation -0.248797280909757,0.0000551 -# experimentally measured data -0.2980,0.0000320 -0.3663,0 -0.4319,0 -0.4975,0 -0.5603,0 -0.6231,0 -0.6914,-0.0000565 -0.7570,-0.0000550 -0.8199,-0.0000620 -0.8772,-0.0000525 -0.9018,-0.0000535 -0.9127,-0.0000302 -# extra points to avoid extrapolation -1,0 \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_entropic_change_ORegan2022.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_entropic_change_ORegan2022.py deleted file mode 100644 index 96e06c0ec0..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_entropic_change_ORegan2022.py +++ /dev/null @@ -1,37 +0,0 @@ -from pybamm import exp - - -def nmc_LGM50_entropic_change_ORegan2022(sto, c_s_max): - """ - LG M50 NMC 811 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] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma - Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion - cylindrical battery." Electrochimica Acta 425 (2022): 140700 - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - - Returns - ------- - :class:`pybamm.Symbol` - Entropic change [V.K-1] - """ - a1 = 0.04006 - a2 = -0.06656 - b1 = 0.2828 - b2 = 0.8032 - c1 = 0.0009855 - c2 = 0.02179 - - dUdT = ( - a1 * exp(-((sto - b1) ** 2) / c1) + a2 * exp(-((sto - b2) ** 2) / c2) - ) / 1000 - # fit in mV / K - - return dUdT diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_heat_capacity_ORegan2022.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_heat_capacity_ORegan2022.py deleted file mode 100644 index bbb5b87625..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_heat_capacity_ORegan2022.py +++ /dev/null @@ -1,43 +0,0 @@ -from pybamm import Parameter - - -def nmc_LGM50_heat_capacity_ORegan2022(T): - """ - Wet positive electrode specific heat capacity as a function of the temperature from - [1]. - - References - ---------- - .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma - Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion - cylindrical battery." Electrochimica Acta 425 (2022): 140700 - - Parameters - ---------- - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Specific heat capacity - """ - - # value for the dry porous electrode (i.e. electrode + air, and we neglect the air - # contribution to density) - cp_dry = -8.414e-4 * T**3 + 0.7892 * T**2 - 241.3 * T + 2.508e4 - rho_dry = 3270 - theta_dry = rho_dry * cp_dry - - # value for the bulk electrolyte - rho_e = 1280 - cp_e = 229 - eps_e = Parameter("Positive electrode porosity") - theta_e = rho_e * cp_e - - # value for the wet separator - theta_wet = theta_dry + theta_e * eps_e - rho_wet = rho_dry + rho_e * eps_e - cp_wet = theta_wet / rho_wet - - return cp_wet diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_ocp_Chen2020.csv b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_ocp_Chen2020.csv deleted file mode 100644 index 7dc9adc71c..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_ocp_Chen2020.csv +++ /dev/null @@ -1,243 +0,0 @@ -# OCP data for LG M50 NMC positive electrode -# sto,ocp -# extra point to avoid extrapolation -0.248797280909757,4.40 -# experimentally measured data -0.266145163492257,4.29356530000000 -0.268867632314474,4.27686210000000 -0.271590113475307,4.26470180000000 -0.274312581168247,4.25403120000000 -0.277035051828500,4.24494460000000 -0.279757525339878,4.23648790000000 -0.282479995064952,4.23026470000000 -0.285202473437965,4.22255280000000 -0.287924947671149,4.21825740000000 -0.290647431425727,4.21329400000000 -0.293369917257952,4.20903730000000 -0.296092386692851,4.20512390000000 -0.298814868849636,4.20126770000000 -0.301537350055390,4.19815640000000 -0.304259830904681,4.19552180000000 -0.306982312259254,4.19311670000000 -0.309704783671781,4.18897440000000 -0.312427252746966,4.18815330000000 -0.315149732455743,4.18658830000000 -0.317872201316148,4.18502280000000 -0.320594658973297,4.18322850000000 -0.323317140454362,4.18088050000000 -0.326039617362371,4.18057490000000 -0.328762086363981,4.17895220000000 -0.331484555867675,4.17681460000000 -0.334207025471543,4.17681460000000 -0.336929501255821,4.17528720000000 -0.339651973273663,4.17311100000000 -0.342374462458239,4.17267180000000 -0.345096938615155,4.17108770000000 -0.347819410074246,4.17022850000000 -0.350541895855318,4.16879700000000 -0.353264376316384,4.16698310000000 -0.355986846136589,4.16551350000000 -0.358709322969457,4.16345170000000 -0.361431798807600,4.15982480000000 -0.364154276288401,4.15717120000000 -0.366876742342325,4.15407900000000 -0.369599211442129,4.15041350000000 -0.372321688828519,4.14665320000000 -0.375044179100704,4.14233880000000 -0.377766654413886,4.13823460000000 -0.380489134491185,4.13382480000000 -0.383211609132993,4.13057990000000 -0.385934081264202,4.12723920000000 -0.388656550366338,4.12281040000000 -0.391379033718590,4.11861090000000 -0.394101506024207,4.11418200000000 -0.396823981011550,4.10960050000000 -0.399546445031954,4.10469480000000 -0.402268917913251,4.10047580000000 -0.404991398895142,4.09564640000000 -0.407713868869987,4.09096960000000 -0.410436337723266,4.08646440000000 -0.413158819617673,4.08184480000000 -0.415881292009550,4.07768300000000 -0.418603765047837,4.07333090000000 -0.421326243264316,4.06907370000000 -0.424048721985195,4.06472160000000 -0.426771203785911,4.06086540000000 -0.429493683560302,4.05647470000000 -0.432216157859838,4.05275250000000 -0.434938637930869,4.04924010000000 -0.437661112840513,4.04502110000000 -0.440383593375701,4.04198600000000 -0.443106070903017,4.03847360000000 -0.445828558295681,4.03517100000000 -0.448551031796266,4.03204060000000 -0.451273507249511,4.02892880000000 -0.453996003855954,4.02597000000000 -0.456718484235626,4.02274370000000 -0.459440954945593,4.01997570000000 -0.462163428115050,4.01751330000000 -0.464885915164505,4.01497460000000 -0.467608383790858,4.01220660000000 -0.470330853087581,4.00995400000000 -0.473053327146540,4.00756790000000 -0.475775805779291,4.00506690000000 -0.478498280251222,4.00231840000000 -0.481220742406741,3.99955010000000 -0.483943214533784,3.99693490000000 -0.486665690272151,3.99265890000000 -0.489388163807013,3.98895550000000 -0.492110637403290,3.98340030000000 -0.494833100364319,3.97830370000000 -0.497555571325341,3.97559290000000 -0.500278043298208,3.97076320000000 -0.503000516078447,3.96810980000000 -0.505722984627149,3.96356650000000 -0.508445451410474,3.95944330000000 -0.511167916160712,3.95566340000000 -0.513890383743419,3.95215110000000 -0.516612844491088,3.94791320000000 -0.519335313666282,3.94382810000000 -0.522057772177089,3.94008660000000 -0.524780244833149,3.93623040000000 -0.527502711490113,3.93142010000000 -0.530225181904053,3.92838480000000 -0.532947653094719,3.92422320000000 -0.535670116160643,3.91920280000000 -0.538392582186640,3.91662570000000 -0.541115055303321,3.91179610000000 -0.543837527290114,3.90815000000000 -0.546559999225906,3.90387390000000 -0.549282473099007,3.89955970000000 -0.552004938974192,3.89591360000000 -0.554727397110192,3.89093140000000 -0.557449855597342,3.88726620000000 -0.560172327720750,3.88310480000000 -0.562894802037505,3.87934420000000 -0.565617285773971,3.87476280000000 -0.568339758495162,3.87025760000000 -0.571062218638907,3.86668780000000 -0.573784688274245,3.86239270000000 -0.576507157299816,3.85817410000000 -0.579229628899775,3.85414600000000 -0.581952099068137,3.84998460000000 -0.584674561619127,3.84500220000000 -0.587397020754022,3.84225340000000 -0.590119479693579,3.83809190000000 -0.592841939924731,3.83415960000000 -0.595564403547528,3.83093330000000 -0.598286868612232,3.82721090000000 -0.601009347425258,3.82316400000000 -0.603731818208659,3.81923150000000 -0.606454292118578,3.81598640000000 -0.609176768553542,3.81230210000000 -0.611899246291593,3.80903790000000 -0.614621716230771,3.80716710000000 -0.617344187685711,3.80405550000000 -0.620066659099430,3.80136390000000 -0.622789138734988,3.79708790000000 -0.625511617433531,3.79533170000000 -0.628234084250521,3.79206730000000 -0.630956557807740,3.78838300000000 -0.633679025844496,3.78553890000000 -0.636401495064267,3.78382060000000 -0.639123970191964,3.78111000000000 -0.641846449308652,3.77948740000000 -0.644568927771322,3.77692940000000 -0.647291404914478,3.77360800000000 -0.650013889129768,3.76959920000000 -0.652736367967840,3.76902650000000 -0.655458839536009,3.76627760000000 -0.658181310438348,3.76429220000000 -0.660903786306585,3.76268890000000 -0.663626254736975,3.76037910000000 -0.666348738333431,3.75755380000000 -0.669071213782409,3.75520560000000 -0.671793687532754,3.75331590000000 -0.674516164245807,3.75071980000000 -0.677238646529723,3.74875350000000 -0.679961125087374,3.74714990000000 -0.682683607484084,3.74428650000000 -0.685406075721887,3.74230120000000 -0.688128545911254,3.74006770000000 -0.690851028189204,3.73857880000000 -0.693573498264774,3.73453190000000 -0.696295966701841,3.73392110000000 -0.699018434718856,3.73016050000000 -0.701740901054719,3.73010330000000 -0.704463378887980,3.72783160000000 -0.707185849109592,3.72515890000000 -0.709908327081682,3.72386100000000 -0.712630805246016,3.72157030000000 -0.715353278555653,3.71912670000000 -0.718075742809693,3.71727510000000 -0.720798219830455,3.71570970000000 -0.723520694189328,3.71309450000000 -0.726243165189205,3.70994470000000 -0.728965639893390,3.70710040000000 -0.731688103753489,3.70456150000000 -0.734410565090537,3.70358800000000 -0.737133034756847,3.70208000000000 -0.739855506564427,3.70026640000000 -0.742577987473750,3.69721220000000 -0.745300467667417,3.69528410000000 -0.748022934626483,3.69293620000000 -0.750745403364983,3.68980550000000 -0.753467872385266,3.68909910000000 -0.756190338725858,3.68652200000000 -0.758912814805470,3.68497590000000 -0.761635286778263,3.68216970000000 -0.764357761597942,3.68081430000000 -0.767080238030274,3.67865730000000 -0.769802703134331,3.67619470000000 -0.772525170787922,3.67476300000000 -0.775247647398611,3.67128870000000 -0.777970116013000,3.66972330000000 -0.780692583791189,3.66789080000000 -0.783415062024859,3.66525650000000 -0.786137529881339,3.66306110000000 -0.788859991839412,3.66027400000000 -0.791582456579698,3.65836520000000 -0.794304940665857,3.65548280000000 -0.797027408651066,3.65229490000000 -0.799749868022516,3.64998480000000 -0.802472336866029,3.64704510000000 -0.805194798213859,3.64055470000000 -0.807917271231816,3.63834050000000 -0.810639738427300,3.63507600000000 -0.813362206944959,3.63354900000000 -0.816084680519184,3.63223170000000 -0.818807143264440,3.63068560000000 -0.821529609046551,3.62839480000000 -0.824252075066457,3.62684870000000 -0.826974531979797,3.62430980000000 -0.829696999423772,3.62236260000000 -0.832419462686953,3.61936550000000 -0.835141923021117,3.61776210000000 -0.837864385539901,3.61585310000000 -0.840586843407759,3.61283710000000 -0.843309308653791,3.61180620000000 -0.846031768598797,3.60945820000000 -0.848754235411593,3.60724380000000 -0.851476699467683,3.60499120000000 -0.854199161102801,3.60308220000000 -0.856921623426447,3.60126880000000 -0.859644087674256,3.59958890000000 -0.862366559650803,3.59764170000000 -0.865089024293406,3.59519840000000 -0.867811486910360,3.59384300000000 -0.870533951869352,3.59162860000000 -0.873256418218254,3.58949070000000 -0.875978884501499,3.58742900000000 -0.878701351769785,3.58529090000000 -0.881423826658424,3.58347750000000 -0.884146298809852,3.58177850000000 -0.886868771867091,3.58011770000000 -0.889591240142391,3.57788420000000 -0.892313713281813,3.57633810000000 -0.895036201752086,3.57378010000000 -0.897758683022040,3.57210020000000 -0.900481161991173,3.57021020000000 -0.903203643476430,3.56849220000000 -0.905926128940627,3.56721330000000 -# extra points to avoid extrapolation -1,3.52302166875714 \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_ocp_Chen2020.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_ocp_Chen2020.py deleted file mode 100644 index ec5318591a..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_ocp_Chen2020.py +++ /dev/null @@ -1,35 +0,0 @@ -from pybamm import tanh - - -def nmc_LGM50_ocp_Chen2020(sto): - """ - LG M50 NMC open-circuit potential as a function of stoichiometry. The fit is - taken from [1]. - - References - ---------- - .. [1] 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." Journal of the - Electrochemical Society 167 (2020): 080534. - - Parameters - ---------- - sto: :class:`pybamm.Symbol` - Electrode stochiometry - - Returns - ------- - :class:`pybamm.Symbol` - Open-circuit potential - """ - - U = ( - -0.809 * sto - + 4.4875 - - 0.0428 * tanh(18.5138 * (sto - 0.5542)) - - 17.7326 * tanh(15.789 * (sto - 0.3117)) - + 17.5842 * tanh(15.9308 * (sto - 0.312)) - ) - - return U diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_thermal_conductivity_ORegan2022.py b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_thermal_conductivity_ORegan2022.py deleted file mode 100644 index 747b50a289..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/nmc_LGM50_thermal_conductivity_ORegan2022.py +++ /dev/null @@ -1,25 +0,0 @@ -def nmc_LGM50_thermal_conductivity_ORegan2022(T): - """ - Wet positive electrode thermal conductivity as a function of the temperature from - [1]. - - References - ---------- - .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma - Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion - cylindrical battery." Electrochimica Acta 425 (2022): 140700 - - Parameters - ---------- - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Thermal conductivity - """ - - lambda_wet = 2.063e-5 * T**2 - 0.01127 * T + 2.331 - - return lambda_wet diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/parameters.csv b/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/parameters.csv deleted file mode 100644 index 977c044d58..0000000000 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/parameters.csv +++ /dev/null @@ -1,31 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# Electrode properties,,, -Positive electrode conductivity [S.m-1],[function]nmc_LGM50_electronic_conductivity_ORegan2022,O'Regan 2022, -Maximum concentration in positive electrode [mol.m-3],51765,Chen 2020, -Positive electrode diffusivity [m2.s-1],[function]nmc_LGM50_diffusivity_ORegan2022,O'Regan 2022, -Positive electrode OCP [V],[function]nmc_LGM50_ocp_Chen2020,Chen 2020, -,,, -# Microstructure,,, -Positive electrode porosity,0.335,Chen 2020, -Positive electrode active material volume fraction,0.665,Chen 2020, -Positive particle radius [m],5.22E-6,Chen 2020, -Positive electrode Bruggeman coefficient (electrolyte),1.5,Chen 2020,theoretical -Positive electrode Bruggeman coefficient (electrode),0,conductivity already accounts for porous electrode, -,,, -# Interfacial reactions,,, -Positive electrode cation signed stoichiometry,-1,, -Positive electrode electrons in reaction,1,, -Reference OCP vs SHE in the positive electrode [V],,, -Positive electrode charge transfer coefficient,0.5,Chen 2020, -Positive electrode double-layer capacity [F.m-2],0.2,, -Positive electrode exchange-current density [A.m-2],[function]nmc_LGM50_electrolyte_exchange_current_density_ORegan2022,O'Regan 2022, -,,, -# Density,,, -Positive electrode density [kg.m-3],3699,O'Regan 2022,wet electrode -,,, -# Thermal parameters,,, -Positive electrode specific heat capacity [J.kg-1.K-1],[function]nmc_LGM50_heat_capacity_ORegan2022,O'Regan 2022,wet electrode -Positive electrode thermal conductivity [W.m-1.K-1],[function]nmc_LGM50_thermal_conductivity_ORegan2022,O'Regan 2022,wet electrode -Positive electrode OCP entropic change [V.K-1],[function]nmc_LGM50_entropic_change_ORegan2022,, \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/seis/OKane2022/README.md b/pybamm/input/parameters/lithium_ion/seis/OKane2022/README.md deleted file mode 100644 index 8ea18c45d7..0000000000 --- a/pybamm/input/parameters/lithium_ion/seis/OKane2022/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# SEI parameters - -Parameters for SEI growth from the paper - -> Simon O'Kane, Weilong Ai, Ganesh Madabattula, Diego Alonso-Alvarez, Robert Timms, Valentin Sulzer, Jacqueline Edge, Billy Wu, Gregory Offer, and Monica Marinescu. ["Lithium-ion battery degradation: how to model it."](https://pubs.rsc.org/en/content/articlelanding/2022/cp/d2cp00417h) Physical Chemistry: Chemical Physics 24 (2022): 7909-7922 - -and references therein. - -Note: this parameter set does not claim to be representative of the true parameter values. These are merely the parameter values that were used in the referenced papers. diff --git a/pybamm/input/parameters/lithium_ion/seis/OKane2022/parameters.csv b/pybamm/input/parameters/lithium_ion/seis/OKane2022/parameters.csv deleted file mode 100644 index 60bce38d96..0000000000 --- a/pybamm/input/parameters/lithium_ion/seis/OKane2022/parameters.csv +++ /dev/null @@ -1,28 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# SEI properties,,, -Ratio of lithium moles to SEI moles,1,,Legacy value to reproduce a bug -Inner SEI reaction proportion,0,, -Inner SEI partial molar volume [m3.mol-1],9.585e-5, Safari paper, -Outer SEI partial molar volume [m3.mol-1],9.585e-5, Safari paper, -SEI reaction exchange current density [A.m-2],1.5E-7, Guess, -SEI resistivity [Ohm.m],2e5, Safari paper, -Outer SEI solvent diffusivity [m2.s-1],2.5E-22, Single paper, -Bulk solvent concentration [mol.m-3],2.636E3, Ploehn paper, -Inner SEI open-circuit potential [V],0.1,, -Outer SEI open-circuit potential [V],0.8,, -Inner SEI electron conductivity [S.m-1],8.95E-14, Single paper, -Inner SEI lithium interstitial diffusivity [m2.s-1],1E-20, Guess, -Lithium interstitial reference concentration [mol.m-3],15, Single paper, -Initial inner SEI thickness [m], 0, 1/2 of initial thickness in Safari paper, -Initial outer SEI thickness [m], 5E-9, 1/2 of initial thickness in Safari paper, -EC initial concentration in electrolyte [mol.m-3], 4.541E3, Safari paper, -EC diffusivity [m2.s-1], 2E-18, adjusted parameter in Yang paper, -SEI kinetic rate constant [m.s-1], 1e-12, adjusted parameter in Yang paper, -SEI open-circuit potential [V], 0.4, Safari paper, -SEI growth activation energy [J.mol-1], 38000, Waldmann paper, -,,, -# Reaction-driven LAM example,,, -Negative electrode reaction-driven LAM factor [m3.mol-1],0,, -Positive electrode reaction-driven LAM factor [m3.mol-1],0,, diff --git a/pybamm/input/parameters/lithium_ion/seis/__init__.py b/pybamm/input/parameters/lithium_ion/seis/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/seis/example_composite/README.md b/pybamm/input/parameters/lithium_ion/seis/example_composite/README.md deleted file mode 100644 index f98642e325..0000000000 --- a/pybamm/input/parameters/lithium_ion/seis/example_composite/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# SEI parameters - -Example parameters for composite SEI on silicon/graphite. Both phases use the same values, from the paper - -> Yang, X., Leng, Y., Zhang, G., Ge, S., Wang, C. (2017). Modeling of lithium plating induced aging of lithium-ion batteries: Transition from linear to nonlinear aging. Journal of Power Sources, 360, 28-40. diff --git a/pybamm/input/parameters/lithium_ion/seis/example_composite/parameters.csv b/pybamm/input/parameters/lithium_ion/seis/example_composite/parameters.csv deleted file mode 100644 index dfe02277dc..0000000000 --- a/pybamm/input/parameters/lithium_ion/seis/example_composite/parameters.csv +++ /dev/null @@ -1,28 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# SEI properties,,, -Primary: Ratio of lithium moles to SEI moles,2,,Assume SEI made of LEDC and/or Li2CO3 -Primary: Inner SEI partial molar volume [m3.mol-1],9.585e-5, Safari paper, -Primary: Outer SEI partial molar volume [m3.mol-1],9.585e-5, Safari paper, -Primary: SEI resistivity [Ohm.m],2e5, Safari paper, -Primary: Initial inner SEI thickness [m], 2.5E-9, 2.5E-9 1/2 of initial thickness in Safari paper, -Primary: Initial outer SEI thickness [m], 2.5E-9, 1/2 of initial thickness in Safari paper, -Primary: EC initial concentration in electrolyte [mol.m-3], 4.541E3, Safari paper, -Primary: EC diffusivity [m2.s-1], 2E-18, adjusted parameter in Yang paper, -Primary: SEI kinetic rate constant [m.s-1], 1e-12, adjusted parameter in Yang paper, -Primary: SEI open-circuit potential [V], 0.4, Safari paper, -Primary: SEI growth activation energy [J.mol-1], 0,, -,,, -Secondary: Ratio of lithium moles to SEI moles,2,,Assume SEI made of LEDC and/or Li2CO3 -Secondary: Inner SEI partial molar volume [m3.mol-1],9.585e-5, Safari paper, -Secondary: Outer SEI partial molar volume [m3.mol-1],9.585e-5, Safari paper, -Secondary: SEI resistivity [Ohm.m],2e5, Safari paper, -Secondary: Initial inner SEI thickness [m], 2.5E-9, 2.5E-9 1/2 of initial thickness in Safari paper, -Secondary: Initial outer SEI thickness [m], 2.5E-9, 1/2 of initial thickness in Safari paper, -Secondary: EC initial concentration in electrolyte [mol.m-3], 4.541E3, Safari paper, -Secondary: EC diffusivity [m2.s-1], 2E-18, adjusted parameter in Yang paper, -Secondary: SEI kinetic rate constant [m.s-1], 1e-12, adjusted parameter in Yang paper, -Secondary: SEI open-circuit potential [V], 0.4, Safari paper, -Secondary: SEI growth activation energy [J.mol-1], 0,, -,,, \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/seis/ramadass2004/README.md b/pybamm/input/parameters/lithium_ion/seis/ramadass2004/README.md deleted file mode 100644 index 54f1505db9..0000000000 --- a/pybamm/input/parameters/lithium_ion/seis/ramadass2004/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# SEI parameters - -Some example parameters for SEI growth from the papers: - -> Ramadass, P., Haran, B., Gomadam, P. M., White, R., & Popov, B. N. (2004). Development of first principles capacity fade model for Li-ion cells. Journal of the Electrochemical Society, 151(2), A196-A203. -> Safari, M., Morcrette, M., Teyssot, A., & Delacour, C. (2009). Multimodal Physics-Based Aging Model for Life Prediction of Li-Ion Batteries. Journal of The Electrochemical Society, 156(3), - -Note: Ramadass 2004 has mistakes in units and values of SEI parameters, corrected by Safari 2009. diff --git a/pybamm/input/parameters/lithium_ion/seis/ramadass2004/parameters.csv b/pybamm/input/parameters/lithium_ion/seis/ramadass2004/parameters.csv deleted file mode 100644 index 18fdf18456..0000000000 --- a/pybamm/input/parameters/lithium_ion/seis/ramadass2004/parameters.csv +++ /dev/null @@ -1,24 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# SEI properties,,, -Ratio of lithium moles to SEI moles,2,,Assume SEI made of LEDC and/or Li2CO3 -Inner SEI reaction proportion,0.5,, -Inner SEI partial molar volume [m3.mol-1],9.585e-5, Safari 2009, -Outer SEI partial molar volume [m3.mol-1],9.585e-5, Safari 2009, -SEI reaction exchange current density [A.m-2],1.5e-6, Ramadass 2004, -SEI resistivity [Ohm.m],2e5, Safari 2009, -Outer SEI solvent diffusivity [m2.s-1],2.5E-22, Single paper, -Bulk solvent concentration [mol.m-3],2.636E3, Ploehn paper, -Inner SEI open-circuit potential [V],0.1,, -Outer SEI open-circuit potential [V],0.8,, -Inner SEI electron conductivity [S.m-1],8.95E-14, Single paper, -Inner SEI lithium interstitial diffusivity [m2.s-1],1E-20, Guess, -Lithium interstitial reference concentration [mol.m-3],15, Single paper, -Initial inner SEI thickness [m], 2.5E-9, 2.5E-9 1/2 of initial thickness in Safari paper, -Initial outer SEI thickness [m], 2.5E-9, 1/2 of initial thickness in Safari paper, -EC initial concentration in electrolyte [mol.m-3], 4.541e3, Safari paper, -EC diffusivity [m2.s-1], 2e-18, adjusted parameter in Yang paper, -SEI kinetic rate constant [m.s-1], 1e-12, adjusted parameter in Yang paper, -SEI open-circuit potential [V], 0, Estimated, -SEI growth activation energy [J.mol-1], 0,, diff --git a/pybamm/input/parameters/lithium_ion/seis/yang2017_sei/README.md b/pybamm/input/parameters/lithium_ion/seis/yang2017_sei/README.md deleted file mode 100644 index 8a82e0e5bc..0000000000 --- a/pybamm/input/parameters/lithium_ion/seis/yang2017_sei/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# SEI parameters - -Some example parameters for SEI growth from the paper: - -> Yang, X., Leng, Y., Zhang, G., Ge, S., Wang, C. (2017). Modeling of lithium plating induced aging of lithium-ion batteries: Transition from linear to nonlinear aging. Journal of Power Sources, 360, 28-40. - -and references therein diff --git a/pybamm/input/parameters/lithium_ion/seis/yang2017_sei/parameters.csv b/pybamm/input/parameters/lithium_ion/seis/yang2017_sei/parameters.csv deleted file mode 100644 index c6bf6a56d1..0000000000 --- a/pybamm/input/parameters/lithium_ion/seis/yang2017_sei/parameters.csv +++ /dev/null @@ -1,15 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -# SEI properties,,, -Ratio of lithium moles to SEI moles,2,,Assume SEI made of LEDC -Inner SEI partial molar volume [m3.mol-1],9.586E-05, Safari paper, 0.162/1690 -Outer SEI partial molar volume [m3.mol-1],9.586E-05, Safari paper, 0.162/1690 -SEI resistivity [Ohm.m],2e5, Safari paper (1/5e-6), -Initial inner SEI thickness [m],0,, -Initial outer SEI thickness [m],5E-09,, -EC initial concentration in electrolyte [mol.m-3],4.541E+03, Safari paper, -EC diffusivity [m2.s-1],2.00E-18, adjusted parameter in Yang paper, -SEI kinetic rate constant [m.s-1],1.00E-12, adjusted parameter in Yang paper, -SEI open-circuit potential [V],0.4, Safari paper, -SEI growth activation energy [J.mol-1], 0,, diff --git a/pybamm/input/parameters/lithium_ion/separators/__init__.py b/pybamm/input/parameters/lithium_ion/separators/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_Chen2020/README.md b/pybamm/input/parameters/lithium_ion/separators/separator_Chen2020/README.md deleted file mode 100644 index b9ed188b91..0000000000 --- a/pybamm/input/parameters/lithium_ion/separators/separator_Chen2020/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 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."](https://iopscience.iop.org/article/10.1149/1945-7111/ab9050) Journal of the Electrochemical Society 167 (2020): 080534 - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_Chen2020/parameters.csv b/pybamm/input/parameters/lithium_ion/separators/separator_Chen2020/parameters.csv deleted file mode 100644 index b6a89ab472..0000000000 --- a/pybamm/input/parameters/lithium_ion/separators/separator_Chen2020/parameters.csv +++ /dev/null @@ -1,8 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -Separator porosity,0.47,Chen 2020, -Separator Bruggeman coefficient (electrolyte),1.5,Chen 2020,theoretical -Separator density [kg.m-3],397,default, -Separator specific heat capacity [J.kg-1.K-1],700,default, -Separator thermal conductivity [W.m-1.K-1],0.16,default, \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_Ecker2015/README.md b/pybamm/input/parameters/lithium_ion/separators/separator_Ecker2015/README.md deleted file mode 100644 index 861f192486..0000000000 --- a/pybamm/input/parameters/lithium_ion/separators/separator_Ecker2015/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Separator parameters - -Parameters for the separator 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 thermal material properties are for a 5 Ah power pouch cell by Kokam. The data are extracted from - -> Zhao, Y., et al. "Modeling the effects of thermal gradients induced by tab and surface cooling on lithium ion cell performance."" Journal of The Electrochemical Society, 165.13 (2018): A3169-A3178. diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_Ecker2015/parameters.csv b/pybamm/input/parameters/lithium_ion/separators/separator_Ecker2015/parameters.csv deleted file mode 100644 index a453a81a81..0000000000 --- a/pybamm/input/parameters/lithium_ion/separators/separator_Ecker2015/parameters.csv +++ /dev/null @@ -1,8 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -Separator porosity,0.508,, -Separator Bruggeman coefficient (electrolyte),1.9804586773134942, Solve for permeability factor B=0.304=eps^b, -Separator density [kg.m-3],1017,Zhao et al. (2018), -Separator specific heat capacity [J.kg-1.K-1],1978,Zhao et al. (2018), -Separator thermal conductivity [W.m-1.K-1],0.34,Zhao et al. (2018), diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_Kim2011/README.md b/pybamm/input/parameters/lithium_ion/separators/separator_Kim2011/README.md deleted file mode 100644 index 502f9b47f5..0000000000 --- a/pybamm/input/parameters/lithium_ion/separators/separator_Kim2011/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Separator parameters - -Parameters for the separator in the paper - -> Kim, G. H., Smith, K., Lee, K. J., Santhanagopalan, S., & Pesaran, A. (2011). Multi-domain modeling of lithium-ion batteries encompassing multi-physics in varied length scales. Journal of The Electrochemical Society, 158(8), A955-A969. - -and references therein. - -Note, only an effective cell volumetric heat capacity is provided in the paper. We therefore used the values for the density and specific heat capacity reported in the Marquis2019 parameter set in each region and multiplied each density by the ratio of the volumetric heat capacity provided in smith to the calculated value. This ensures that the values produce the same effective cell volumetric heat capacity. This works fine for thermal models that are averaged over the x-direction but not for full (PDE in x direction) thermal models. We do the same for the planar effective thermal conductivity. diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_Kim2011/parameters.csv b/pybamm/input/parameters/lithium_ion/separators/separator_Kim2011/parameters.csv deleted file mode 100644 index 63048d1881..0000000000 --- a/pybamm/input/parameters/lithium_ion/separators/separator_Kim2011/parameters.csv +++ /dev/null @@ -1,8 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -Separator porosity,0.4,, -Separator Bruggeman coefficient (electrolyte),2,, -Separator density [kg.m-3],511.86798,397 * 1.28934, -Separator specific heat capacity [J.kg-1.K-1],700,, -Separator thermal conductivity [W.m-1.K-1],0.10672, 0.16 * 0.667, diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_Marquis2019/README.md b/pybamm/input/parameters/lithium_ion/separators/separator_Marquis2019/README.md deleted file mode 100644 index 95556a2cca..0000000000 --- a/pybamm/input/parameters/lithium_ion/separators/separator_Marquis2019/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Separator parameters - -Parameters for the separator in the paper - -> Marquis, S. G., Sulzer, V., Timms, R., Please, C. P., & Chapman, S. J. (2019). “An asymptotic derivation of a single particle model with electrolyte”. [Journal of The Electrochemical Society](https://doi.org/10.1149/2.0341915jes), 166(15), A3693-A3706. - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_Marquis2019/parameters.csv b/pybamm/input/parameters/lithium_ion/separators/separator_Marquis2019/parameters.csv deleted file mode 100644 index 28764ce8ed..0000000000 --- a/pybamm/input/parameters/lithium_ion/separators/separator_Marquis2019/parameters.csv +++ /dev/null @@ -1,8 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -Separator porosity,1,, -Separator Bruggeman coefficient (electrolyte),1.5,, -Separator density [kg.m-3],397,, -Separator specific heat capacity [J.kg-1.K-1],700,, -Separator thermal conductivity [W.m-1.K-1],0.16,, diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_Mohtat2020/parameters.csv b/pybamm/input/parameters/lithium_ion/separators/separator_Mohtat2020/parameters.csv deleted file mode 100644 index 8310a90d23..0000000000 --- a/pybamm/input/parameters/lithium_ion/separators/separator_Mohtat2020/parameters.csv +++ /dev/null @@ -1,9 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -Separator porosity,0.4,Peyman MPM, -Separator Bruggeman coefficient (electrolyte),1.5,Peyman MPM, -Separator density [kg.m-3],397,,no info from Peyman MPM -Separator specific heat capacity [J.kg-1.K-1],700,,no info from Peyman MPM -Separator thermal conductivity [W.m-1.K-1],0.16,,no info from Peyman MPM -Separator transport efficiency , 0.25, diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_ORegan2022/README.md b/pybamm/input/parameters/lithium_ion/separators/separator_ORegan2022/README.md deleted file mode 100644 index 186c8c5cf6..0000000000 --- a/pybamm/input/parameters/lithium_ion/separators/separator_ORegan2022/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Separator parameters - -Parameters for an LG M50 separator, from the paper - -> Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma Kendrick. ["Thermal-electrochemical parameters of a high energy lithium-ion cylindrical battery."](https://www.sciencedirect.com/science/article/pii/S0013468622008593) Electrochimica Acta 425 (2022): 140700 - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_ORegan2022/__init__.py b/pybamm/input/parameters/lithium_ion/separators/separator_ORegan2022/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_ORegan2022/parameters.csv b/pybamm/input/parameters/lithium_ion/separators/separator_ORegan2022/parameters.csv deleted file mode 100644 index 729b6a3a55..0000000000 --- a/pybamm/input/parameters/lithium_ion/separators/separator_ORegan2022/parameters.csv +++ /dev/null @@ -1,9 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -Separator porosity,0.47,Chen 2020, -Separator Bruggeman coefficient (electrolyte),1.5,Chen 2020,theoretical -Separator Bruggeman coefficient (electrode),1.5,default, -Separator density [kg.m-3],1548,O'Regan 2022, -Separator specific heat capacity [J.kg-1.K-1],[function]separator_LGM50_heat_capacity_ORegan2022,O'Regan 2022, -Separator thermal conductivity [W.m-1.K-1],0.3344,O'Regan 2022, \ No newline at end of file diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_ORegan2022/separator_LGM50_heat_capacity_ORegan2022.py b/pybamm/input/parameters/lithium_ion/separators/separator_ORegan2022/separator_LGM50_heat_capacity_ORegan2022.py deleted file mode 100644 index b7b5d87e00..0000000000 --- a/pybamm/input/parameters/lithium_ion/separators/separator_ORegan2022/separator_LGM50_heat_capacity_ORegan2022.py +++ /dev/null @@ -1,42 +0,0 @@ -from pybamm import Parameter - - -def separator_LGM50_heat_capacity_ORegan2022(T): - """ - Wet separator specific heat capacity as a function of the temperature from [1]. - - References - ---------- - .. [1] Kieran O’Regan, Ferran Brosa Planella, W. Dhammika Widanage, and Emma - Kendrick. "Thermal-electrochemical parameters of a high energy lithium-ion - cylindrical battery." Electrochimica Acta 425 (2022): 140700 - - Parameters - ---------- - T: :class:`pybamm.Symbol` - Dimensional temperature - - Returns - ------- - :class:`pybamm.Symbol` - Specific heat capacity - """ - - # value for the dry porous separator (i.e. separator + air, and we neglect the air - # contribution to density) - cp_dry = 1.494e-3 * T**3 - 1.444 * T**2 + 475.5 * T - 5.13e4 - rho_dry = 946 - theta_dry = rho_dry * cp_dry - - # value for the bulk electrolyte - rho_e = 1280 - cp_e = 229 - eps_e = Parameter("Separator porosity") - theta_e = rho_e * cp_e - - # value for the wet separator - theta_wet = theta_dry + theta_e * eps_e - rho_wet = rho_dry + rho_e * eps_e - cp_wet = theta_wet / rho_wet - - return cp_wet diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_Xu2019/README.md b/pybamm/input/parameters/lithium_ion/separators/separator_Xu2019/README.md deleted file mode 100644 index 2777f05f58..0000000000 --- a/pybamm/input/parameters/lithium_ion/separators/separator_Xu2019/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Separator parameters - -Parameters for a Celgard 2325 separator, from the paper - -> Xu, Shanshan, Chen, Kuan-Hung, Dasgupta, Neil P., Siegel, Jason B. and Stefanopoulou, Anna G. "Evolution of Dead Lithium Growth in Lithium Metal Batteries: Experimentally Validated Model of the Apparent Capacity Loss." Journal of The Electrochemical Society 166.14 (2019): A3456-A3463. - -and references therein. diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_Xu2019/parameters.csv b/pybamm/input/parameters/lithium_ion/separators/separator_Xu2019/parameters.csv deleted file mode 100644 index 77febaeb43..0000000000 --- a/pybamm/input/parameters/lithium_ion/separators/separator_Xu2019/parameters.csv +++ /dev/null @@ -1,6 +0,0 @@ -Name [units],Value,Reference,Notes -# Empty rows and rows starting with ‘#’ will be ignored,,, -,,, -Separator porosity,0.39,, -Separator Bruggeman coefficient (electrolyte),1.5,, -Separator Bruggeman coefficient (electrode),1.5,, diff --git a/pybamm/input/parameters/lithium_ion/cells/Enertech_Ai2020/README.md b/pybamm/input/parameters/lithium_ion/testing_only/cells/Enertech_Ai2020/README.md similarity index 100% rename from pybamm/input/parameters/lithium_ion/cells/Enertech_Ai2020/README.md rename to pybamm/input/parameters/lithium_ion/testing_only/cells/Enertech_Ai2020/README.md diff --git a/pybamm/input/parameters/lithium_ion/cells/Enertech_Ai2020/parameters.csv b/pybamm/input/parameters/lithium_ion/testing_only/cells/Enertech_Ai2020/parameters.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/cells/Enertech_Ai2020/parameters.csv rename to pybamm/input/parameters/lithium_ion/testing_only/cells/Enertech_Ai2020/parameters.csv diff --git a/pybamm/input/parameters/lead_acid/cells/__init__.py b/pybamm/input/parameters/lithium_ion/testing_only/cells/__init__.py similarity index 100% rename from pybamm/input/parameters/lead_acid/cells/__init__.py rename to pybamm/input/parameters/lithium_ion/testing_only/cells/__init__.py diff --git a/pybamm/input/parameters/lead_acid/electrolytes/__init__.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/__init__.py similarity index 100% rename from pybamm/input/parameters/lead_acid/electrolytes/__init__.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/__init__.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/README.md b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/README.md similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/README.md rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/README.md diff --git a/pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/__init__.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/__init__.py similarity index 100% rename from pybamm/input/parameters/lead_acid/electrolytes/sulfuric_acid_Sulzer2019/__init__.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/__init__.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_TDF_EC_DMC_1_1_Landesfeind2019.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_TDF_EC_DMC_1_1_Landesfeind2019.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_TDF_EC_DMC_1_1_Landesfeind2019.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_TDF_EC_DMC_1_1_Landesfeind2019.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_base_Landesfeind2019.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_base_Landesfeind2019.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_base_Landesfeind2019.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_base_Landesfeind2019.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_conductivity_EC_DMC_1_1_Landesfeind2019.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_conductivity_EC_DMC_1_1_Landesfeind2019.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_conductivity_EC_DMC_1_1_Landesfeind2019.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_conductivity_EC_DMC_1_1_Landesfeind2019.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_diffusivity_EC_DMC_1_1_Landesfeind2019.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_diffusivity_EC_DMC_1_1_Landesfeind2019.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_diffusivity_EC_DMC_1_1_Landesfeind2019.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_diffusivity_EC_DMC_1_1_Landesfeind2019.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_transference_number_EC_DMC_1_1_Landesfeind2019.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_transference_number_EC_DMC_1_1_Landesfeind2019.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_transference_number_EC_DMC_1_1_Landesfeind2019.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/electrolyte_transference_number_EC_DMC_1_1_Landesfeind2019.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/parameters.csv b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/parameters.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/parameters.csv rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_DMC_1_1_Landesfeind2019/parameters.csv diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/README.md b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/README.md similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/README.md rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/README.md diff --git a/pybamm/input/parameters/lead_acid/experiments/__init__.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/__init__.py similarity index 100% rename from pybamm/input/parameters/lead_acid/experiments/__init__.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/__init__.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_TDF_EC_EMC_3_7_Landesfeind2019.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_TDF_EC_EMC_3_7_Landesfeind2019.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_TDF_EC_EMC_3_7_Landesfeind2019.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_TDF_EC_EMC_3_7_Landesfeind2019.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_base_Landesfeind2019.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_base_Landesfeind2019.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_base_Landesfeind2019.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_base_Landesfeind2019.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_conductivity_EC_EMC_3_7_Landesfeind2019.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_conductivity_EC_EMC_3_7_Landesfeind2019.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_conductivity_EC_EMC_3_7_Landesfeind2019.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_conductivity_EC_EMC_3_7_Landesfeind2019.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_diffusivity_EC_EMC_3_7_Landesfeind2019.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_diffusivity_EC_EMC_3_7_Landesfeind2019.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_diffusivity_EC_EMC_3_7_Landesfeind2019.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_diffusivity_EC_EMC_3_7_Landesfeind2019.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_transference_number_EC_EMC_3_7_Landesfeind2019.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_transference_number_EC_EMC_3_7_Landesfeind2019.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_transference_number_EC_EMC_3_7_Landesfeind2019.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/electrolyte_transference_number_EC_EMC_3_7_Landesfeind2019.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/parameters.csv b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/parameters.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/parameters.csv rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EC_EMC_3_7_Landesfeind2019/parameters.csv diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/README.md b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/README.md similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/README.md rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/README.md diff --git a/pybamm/input/parameters/lead_acid/negative_electrodes/__init__.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/__init__.py similarity index 100% rename from pybamm/input/parameters/lead_acid/negative_electrodes/__init__.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/__init__.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_TDF_EMC_FEC_19_1_Landesfeind2019.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_TDF_EMC_FEC_19_1_Landesfeind2019.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_TDF_EMC_FEC_19_1_Landesfeind2019.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_TDF_EMC_FEC_19_1_Landesfeind2019.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_base_Landesfeind2019.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_base_Landesfeind2019.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_base_Landesfeind2019.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_base_Landesfeind2019.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_conductivity_EMC_FEC_19_1_Landesfeind2019.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_conductivity_EMC_FEC_19_1_Landesfeind2019.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_conductivity_EMC_FEC_19_1_Landesfeind2019.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_conductivity_EMC_FEC_19_1_Landesfeind2019.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_diffusivity_EMC_FEC_19_1_Landesfeind2019.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_diffusivity_EMC_FEC_19_1_Landesfeind2019.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_diffusivity_EMC_FEC_19_1_Landesfeind2019.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_diffusivity_EMC_FEC_19_1_Landesfeind2019.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_transference_number_EMC_FEC_19_1_Landesfeind2019.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_transference_number_EMC_FEC_19_1_Landesfeind2019.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_transference_number_EMC_FEC_19_1_Landesfeind2019.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/electrolyte_transference_number_EMC_FEC_19_1_Landesfeind2019.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/parameters.csv b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/parameters.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/parameters.csv rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_EMC_FEC_19_1_Landesfeind2019/parameters.csv diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Enertech_Ai2020/README.md b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_Enertech_Ai2020/README.md similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Enertech_Ai2020/README.md rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_Enertech_Ai2020/README.md diff --git a/pybamm/input/parameters/lead_acid/negative_electrodes/lead_Sulzer2019/__init__.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_Enertech_Ai2020/__init__.py similarity index 100% rename from pybamm/input/parameters/lead_acid/negative_electrodes/lead_Sulzer2019/__init__.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_Enertech_Ai2020/__init__.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Enertech_Ai2020/dlnf_dlnc_Ai2020.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_Enertech_Ai2020/dlnf_dlnc_Ai2020.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Enertech_Ai2020/dlnf_dlnc_Ai2020.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_Enertech_Ai2020/dlnf_dlnc_Ai2020.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Enertech_Ai2020/electrolyte_conductivity_Ai2020.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_Enertech_Ai2020/electrolyte_conductivity_Ai2020.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Enertech_Ai2020/electrolyte_conductivity_Ai2020.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_Enertech_Ai2020/electrolyte_conductivity_Ai2020.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Enertech_Ai2020/electrolyte_diffusivity_Ai2020.py b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_Enertech_Ai2020/electrolyte_diffusivity_Ai2020.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Enertech_Ai2020/electrolyte_diffusivity_Ai2020.py rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_Enertech_Ai2020/electrolyte_diffusivity_Ai2020.py diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Enertech_Ai2020/parameters.csv b/pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_Enertech_Ai2020/parameters.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/lipf6_Enertech_Ai2020/parameters.csv rename to pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_Enertech_Ai2020/parameters.csv diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ai2020/README.md b/pybamm/input/parameters/lithium_ion/testing_only/experiments/1C_discharge_from_full_Ai2020/README.md similarity index 100% rename from pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ai2020/README.md rename to pybamm/input/parameters/lithium_ion/testing_only/experiments/1C_discharge_from_full_Ai2020/README.md diff --git a/pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ai2020/parameters.csv b/pybamm/input/parameters/lithium_ion/testing_only/experiments/1C_discharge_from_full_Ai2020/parameters.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/experiments/1C_discharge_from_full_Ai2020/parameters.csv rename to pybamm/input/parameters/lithium_ion/testing_only/experiments/1C_discharge_from_full_Ai2020/parameters.csv diff --git a/pybamm/input/parameters/lead_acid/positive_electrodes/__init__.py b/pybamm/input/parameters/lithium_ion/testing_only/experiments/__init__.py similarity index 100% rename from pybamm/input/parameters/lead_acid/positive_electrodes/__init__.py rename to pybamm/input/parameters/lithium_ion/testing_only/experiments/__init__.py diff --git a/pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/__init__.py b/pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/__init__.py similarity index 100% rename from pybamm/input/parameters/lead_acid/positive_electrodes/lead_dioxide_Sulzer2019/__init__.py rename to pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/__init__.py diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/README.md b/pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/README.md similarity index 100% rename from pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/README.md rename to pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/README.md diff --git a/pybamm/input/parameters/lead_acid/separators/__init__.py b/pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/__init__.py similarity index 100% rename from pybamm/input/parameters/lead_acid/separators/__init__.py rename to pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/__init__.py diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_cracking_rate_Ai2020.py b/pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_cracking_rate_Ai2020.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_cracking_rate_Ai2020.py rename to pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_cracking_rate_Ai2020.py diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_diffusivity_Dualfoil1998.py b/pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_diffusivity_Dualfoil1998.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_diffusivity_Dualfoil1998.py rename to pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_diffusivity_Dualfoil1998.py diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_electrolyte_exchange_current_density_Dualfoil1998.py b/pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_electrolyte_exchange_current_density_Dualfoil1998.py similarity index 94% rename from pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_electrolyte_exchange_current_density_Dualfoil1998.py rename to pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_electrolyte_exchange_current_density_Dualfoil1998.py index 9b6b120785..21585c4ccd 100644 --- a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_electrolyte_exchange_current_density_Dualfoil1998.py +++ b/pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_electrolyte_exchange_current_density_Dualfoil1998.py @@ -30,7 +30,7 @@ def graphite_electrolyte_exchange_current_density_Dualfoil1998( """ m_ref = ( 1 * 10 ** (-11) * constants.F - ) # (A/m2)(mol/m3)**1.5 - includes ref concentrations + ) # (A/m2)(m3/mol)**1.5 - includes ref concentrations E_r = 5000 # activation energy for Temperature Dependent Reaction Constant [J/mol] arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_entropy_Enertech_Ai2020.csv b/pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_entropy_Enertech_Ai2020.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_entropy_Enertech_Ai2020.csv rename to pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_entropy_Enertech_Ai2020.csv diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_entropy_Enertech_Ai2020_function.py b/pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_entropy_Enertech_Ai2020_function.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_entropy_Enertech_Ai2020_function.py rename to pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_entropy_Enertech_Ai2020_function.py diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/graphite_ocp_Enertech_Ai2020.csv b/pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_ocp_Enertech_Ai2020.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020_composite/graphite_ocp_Enertech_Ai2020.csv rename to pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_ocp_Enertech_Ai2020.csv diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_ocp_Enertech_Ai2020_function.py b/pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_ocp_Enertech_Ai2020_function.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_ocp_Enertech_Ai2020_function.py rename to pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_ocp_Enertech_Ai2020_function.py diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_volume_change_Ai2020.py b/pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_volume_change_Ai2020.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/graphite_volume_change_Ai2020.py rename to pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/graphite_volume_change_Ai2020.py diff --git a/pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/parameters.csv b/pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/parameters.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/parameters.csv rename to pybamm/input/parameters/lithium_ion/testing_only/negative_electrodes/graphite_Ai2020/parameters.csv diff --git a/pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/__init__.py b/pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/__init__.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/__init__.py rename to pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/__init__.py diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/README.md b/pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/README.md similarity index 100% rename from pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/README.md rename to pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/README.md diff --git a/pybamm/input/parameters/lithium_ion/cells/__init__.py b/pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/__init__.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/cells/__init__.py rename to pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/__init__.py diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_cracking_rate_Ai2020.py b/pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_cracking_rate_Ai2020.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_cracking_rate_Ai2020.py rename to pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_cracking_rate_Ai2020.py diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_diffusivity_Dualfoil1998.py b/pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_diffusivity_Dualfoil1998.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_diffusivity_Dualfoil1998.py rename to pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_diffusivity_Dualfoil1998.py diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_electrolyte_exchange_current_density_Dualfoil1998.py b/pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_electrolyte_exchange_current_density_Dualfoil1998.py similarity index 94% rename from pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_electrolyte_exchange_current_density_Dualfoil1998.py rename to pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_electrolyte_exchange_current_density_Dualfoil1998.py index b43e7913ed..71a6ff4bf0 100644 --- a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_electrolyte_exchange_current_density_Dualfoil1998.py +++ b/pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_electrolyte_exchange_current_density_Dualfoil1998.py @@ -27,7 +27,7 @@ def lico2_electrolyte_exchange_current_density_Dualfoil1998(c_e, c_s_surf, c_s_m Exchange-current density [A.m-2] """ m_ref = 1 * 10 ** (-11) * constants.F # need to match the unit from m/s - # (A/m2)(mol/m3)**1.5 - includes ref concentrations + # (A/m2)(m3/mol)**1.5 - includes ref concentrations E_r = 5000 arrhenius = exp(E_r / constants.R * (1 / 298.15 - 1 / T)) diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_entropic_change_Ai2020.csv b/pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_entropic_change_Ai2020.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_entropic_change_Ai2020.csv rename to pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_entropic_change_Ai2020.csv diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_entropic_change_Ai2020_function.py b/pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_entropic_change_Ai2020_function.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_entropic_change_Ai2020_function.py rename to pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_entropic_change_Ai2020_function.py diff --git a/pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_ocp_Ai2020.csv b/pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_ocp_Ai2020.csv new file mode 100644 index 0000000000..ffd7886e2b --- /dev/null +++ b/pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_ocp_Ai2020.csv @@ -0,0 +1,448 @@ +# OCP for lico2 from Rieger 2016 +# stoichiometry , OCP [V] +0.43,4.3 +0.436639784,4.279907753 +0.437906143,4.276472669 +0.439172502,4.273800938 +0.44043886,4.271129206 +0.441705219,4.268648313 +0.442971578,4.266167419 +0.444237937,4.263686526 +0.445504296,4.261205633 +0.446770655,4.258724739 +0.448037014,4.256243846 +0.449303373,4.253762952 +0.450569732,4.251282059 +0.45183609,4.248992003 +0.453102449,4.24651111 +0.454368808,4.244221054 +0.455635167,4.24174016 +0.456901526,4.239259267 +0.458167885,4.236969211 +0.459434244,4.234679156 +0.460700603,4.232198262 +0.461966961,4.229717369 +0.46323332,4.227236475 +0.464499679,4.225137258 +0.465766038,4.222656364 +0.467032397,4.220366309 +0.468298756,4.217885415 +0.469565115,4.21559536 +0.470831474,4.213305304 +0.472097833,4.211015249 +0.473364191,4.208534355 +0.47463055,4.2062443 +0.475896909,4.203954244 +0.477163268,4.201664189 +0.478429627,4.199374133 +0.479695986,4.197084078 +0.480962345,4.194794022 +0.482228704,4.192503967 +0.483495063,4.190213911 +0.484761421,4.187923856 +0.48602778,4.185824638 +0.487294139,4.183534582 +0.488560498,4.181053689 +0.489826857,4.178954471 +0.491093216,4.176855254 +0.492359575,4.174565198 +0.493625934,4.172275143 +0.494892292,4.169985087 +0.496158651,4.16788587 +0.49742501,4.165786652 +0.498691369,4.163687435 +0.499957728,4.161588217 +0.501224087,4.159298161 +0.502490446,4.157389782 +0.503756805,4.155290564 +0.505023163,4.153191347 +0.506289522,4.151092129 +0.507555881,4.148992912 +0.50882224,4.146893694 +0.510088599,4.144794476 +0.511354958,4.142504421 +0.512621317,4.140405203 +0.513887676,4.138305986 +0.515154035,4.136206768 +0.516420393,4.134107551 +0.517686752,4.131817495 +0.518953111,4.129718278 +0.52021947,4.12761906 +0.521485829,4.125519842 +0.522752188,4.123229787 +0.524018547,4.121130569 +0.525284906,4.11922219 +0.526551264,4.116932134 +0.527817622,4.115023755 +0.52908398,4.112733699 +0.530350338,4.110634481 +0.531616697,4.108726102 +0.532883056,4.106817722 +0.534149415,4.104718505 +0.535415774,4.102619287 +0.536682133,4.100901745 +0.537948492,4.09861169 +0.539214851,4.09670331 +0.54048121,4.094985769 +0.541747568,4.092886551 +0.543013927,4.090978171 +0.544280286,4.089069792 +0.545546645,4.08735225 +0.546813004,4.085443871 +0.548079363,4.083535491 +0.549345722,4.081817949 +0.550612081,4.07990957 +0.551878439,4.078192028 +0.553144798,4.076474486 +0.554411157,4.074566107 +0.555677516,4.072848565 +0.556943875,4.071131024 +0.558210234,4.069413482 +0.559476593,4.06769594 +0.560742952,4.065978399 +0.562009311,4.064451695 +0.563275669,4.062734153 +0.564542028,4.06120745 +0.565808387,4.05929907 +0.567074746,4.057772366 +0.568341105,4.056054825 +0.569607464,4.054528121 +0.570873823,4.052810579 +0.572140182,4.051283876 +0.573406541,4.049566334 +0.574672899,4.04803963 +0.575939258,4.046322089 +0.577205617,4.044795385 +0.578471976,4.043268681 +0.579738335,4.04155114 +0.581004694,4.040024436 +0.582271053,4.038306894 +0.583537412,4.036971029 +0.58480377,4.035253487 +0.586070129,4.033726783 +0.587336488,4.03220008 +0.588602847,4.030673376 +0.589869206,4.029146672 +0.591135565,4.027619968 +0.592401924,4.026093265 +0.593668283,4.024566561 +0.594934642,4.023039857 +0.596201,4.021703992 +0.597467359,4.020177288 +0.598733718,4.018841422 +0.600000077,4.017314719 +0.601266436,4.015788015 +0.602532795,4.014261311 +0.603799154,4.012925445 +0.605065513,4.01158958 +0.606331872,4.010253714 +0.60759823,4.00872701 +0.608864589,4.007391145 +0.610130948,4.006055279 +0.611397307,4.004719413 +0.612663666,4.003383547 +0.613930025,4.001856844 +0.615196384,4.000711816 +0.616462743,3.99937595 +0.617729101,3.997849247 +0.61899546,3.996704219 +0.620261819,3.995368353 +0.621528178,3.994032487 +0.622794537,3.99288746 +0.624060896,3.991551594 +0.625327255,3.990215728 +0.626593614,3.9890707 +0.627859973,3.987734835 +0.629126331,3.986398969 +0.63039269,3.985253941 +0.631659049,3.984108913 +0.632925408,3.982773048 +0.634191767,3.98162802 +0.635458126,3.980292154 +0.636724485,3.979147126 +0.637990844,3.978192937 +0.639257202,3.976857071 +0.640523561,3.975712043 +0.64178992,3.974567015 +0.643056279,3.973421988 +0.644322638,3.97227696 +0.645588997,3.970941094 +0.646855356,3.969986904 +0.648121715,3.968841877 +0.649388074,3.967696849 +0.650654432,3.966742659 +0.651920791,3.965597631 +0.65318715,3.964452603 +0.654453509,3.963498414 +0.655719868,3.962353386 +0.656986227,3.961208358 +0.658252586,3.960254168 +0.659518945,3.959109141 +0.660785304,3.958154951 +0.662051662,3.957200761 +0.663318021,3.956055733 +0.66458438,3.955101543 +0.665850739,3.954147354 +0.667117098,3.953002326 +0.668383457,3.952048136 +0.669649816,3.951284784 +0.670916175,3.950139756 +0.672182533,3.949185567 +0.673448892,3.948231377 +0.674715251,3.947277187 +0.67598161,3.946513835 +0.677247969,3.945368807 +0.678514328,3.944605456 +0.679780687,3.943651266 +0.681047046,3.942697076 +0.682313405,3.941933724 +0.683579763,3.940979534 +0.684846122,3.940025344 +0.686112481,3.939261993 +0.68737884,3.938307803 +0.688645199,3.937544451 +0.689911568,3.936590261 +0.691177927,3.935826909 +0.692444286,3.93487272 +0.693710645,3.934109368 +0.694977004,3.933346016 +0.696243363,3.932582664 +0.697509722,3.931819312 +0.698776081,3.930865122 +0.700042439,3.930292608 +0.701308798,3.929338419 +0.702575157,3.928575067 +0.703841516,3.927811715 +0.705107875,3.927048363 +0.706374234,3.926285011 +0.707640593,3.925521659 +0.708906952,3.924949146 +0.71017331,3.924185794 +0.711439669,3.92361328 +0.712706028,3.922849928 +0.713972387,3.922086576 +0.715238746,3.921323224 +0.716505105,3.92075071 +0.717771464,3.919987359 +0.719037823,3.919224007 +0.720304182,3.918651493 +0.72157054,3.918078979 +0.722836899,3.917506465 +0.724103258,3.916933951 +0.725369617,3.916361437 +0.726635976,3.915788923 +0.727902335,3.915025572 +0.729168694,3.914643896 +0.730435053,3.913880544 +0.731701411,3.91330803 +0.73296777,3.912735516 +0.734234129,3.912163002 +0.735500488,3.911781326 +0.736766847,3.911208812 +0.738033206,3.910636298 +0.739299565,3.910063785 +0.740565924,3.909491271 +0.741832283,3.908918757 +0.743098641,3.908537081 +0.744365,3.908155405 +0.745631359,3.907582891 +0.746897718,3.907010377 +0.748164077,3.906628701 +0.749430436,3.906056187 +0.750696795,3.905865349 +0.751963154,3.905292836 +0.753229513,3.90491116 +0.754495871,3.904529484 +0.75576223,3.90395697 +0.757028589,3.903575294 +0.758294948,3.903193618 +0.759561307,3.902811942 +0.760827666,3.902621104 +0.762094025,3.902239428 +0.763360384,3.901857752 +0.764626742,3.901476076 +0.765893101,3.9010944 +0.76715946,3.900903562 +0.768425819,3.900521887 +0.769692178,3.900140211 +0.770958537,3.899949373 +0.772224896,3.899758535 +0.773491255,3.899376859 +0.774757613,3.899186021 +0.776023972,3.898995183 +0.777290331,3.898613507 +0.77855669,3.898422669 +0.779823049,3.898040993 +0.781089408,3.897850155 +0.782355767,3.897659317 +0.783622126,3.897468479 +0.784888485,3.897277641 +0.786154843,3.897086803 +0.787421202,3.896705127 +0.788687561,3.896705127 +0.78995392,3.896514289 +0.791220279,3.896323451 +0.792486638,3.896323451 +0.793752997,3.896132613 +0.795019356,3.895750938 +0.796285715,3.895750938 +0.797552073,3.8955601 +0.798818432,3.895369262 +0.800084791,3.895178424 +0.80135115,3.894987586 +0.802617509,3.894796748 +0.803883868,3.89460591 +0.805150227,3.89460591 +0.806416586,3.894415072 +0.807682944,3.894224234 +0.808949303,3.894033396 +0.810215662,3.894033396 +0.811482021,3.893842558 +0.81274838,3.89365172 +0.814014739,3.89365172 +0.815281098,3.893460882 +0.816547457,3.893270044 +0.817813816,3.893270044 +0.819080174,3.893079206 +0.820346533,3.892888368 +0.821612892,3.89269753 +0.822879251,3.89269753 +0.82414561,3.892506692 +0.825411969,3.892315854 +0.826678328,3.892125016 +0.827944687,3.891934178 +0.829211045,3.891934178 +0.830477404,3.89174334 +0.831743763,3.891552502 +0.833010122,3.891361664 +0.834276481,3.891170826 +0.83554284,3.890979989 +0.836809199,3.890979989 +0.838075558,3.890789151 +0.839341917,3.890598313 +0.840608275,3.890407475 +0.841874634,3.890216637 +0.843140993,3.890025799 +0.844407352,3.889834961 +0.845673711,3.889834961 +0.84694007,3.889644123 +0.848206429,3.889262447 +0.849472788,3.889071609 +0.850739146,3.888880771 +0.852005505,3.888689933 +0.853271864,3.888499095 +0.854538223,3.888308257 +0.855804582,3.888117419 +0.857070941,3.887735743 +0.8583373,3.887544905 +0.859603659,3.887354067 +0.860870018,3.887163229 +0.862136376,3.886972391 +0.863402735,3.886590715 +0.864669094,3.88620904 +0.865935453,3.886018202 +0.867201812,3.885827364 +0.868468171,3.885445688 +0.86973453,3.885064012 +0.871000889,3.884873174 +0.872267247,3.884491498 +0.873533606,3.88430066 +0.874799965,3.883918984 +0.876066324,3.883728146 +0.877332683,3.88334647 +0.878599042,3.882773956 +0.879865401,3.882583118 +0.88113176,3.882201442 +0.882398119,3.881819766 +0.883664477,3.88143809 +0.884930836,3.881056415 +0.886197195,3.880674739 +0.887463554,3.880102225 +0.888729913,3.879529711 +0.889996272,3.879148035 +0.891262631,3.878575521 +0.89252899,3.878193845 +0.893795349,3.877812169 +0.895061707,3.877239655 +0.896328066,3.876667141 +0.897594425,3.876094628 +0.898860784,3.875522114 +0.900127143,3.8749496 +0.901393502,3.874377086 +0.902659861,3.873613734 +0.90392622,3.87304122 +0.905192579,3.872468706 +0.906458937,3.871705354 +0.907725296,3.871132841 +0.908991655,3.870369489 +0.910258014,3.869415299 +0.911524373,3.868842785 +0.912790732,3.868079433 +0.914057091,3.867125243 +0.915323449,3.866171054 +0.916589808,3.865407702 +0.917856167,3.864453512 +0.919122526,3.863499322 +0.920388885,3.862545132 +0.921655244,3.861400105 +0.922921603,3.860255077 +0.924187962,3.859300887 +0.92545432,3.858155859 +0.926720679,3.856819994 +0.927987038,3.855674966 +0.929253397,3.854148262 +0.930519756,3.853003234 +0.931786115,3.851476531 +0.933052474,3.849949827 +0.934318833,3.848423123 +0.935585192,3.84689642 +0.93685155,3.84498804 +0.938117909,3.843270498 +0.939384268,3.841362119 +0.940650627,3.839262901 +0.941916986,3.837163684 +0.943183345,3.835064466 +0.944449704,3.832583573 +0.945716063,3.830102679 +0.946982421,3.827430948 +0.94824878,3.824759216 +0.949515139,3.821896647 +0.950781498,3.818843239 +0.952047857,3.815598994 +0.953314216,3.812163911 +0.954580575,3.808537989 +0.955846934,3.804912068 +0.957113293,3.800904471 +0.958379651,3.796896874 +0.95964601,3.792698439 +0.960912369,3.788309166 +0.962178728,3.783919893 +0.963445087,3.779148944 +0.964711446,3.774568832 +0.965977805,3.769607045 +0.967244164,3.765026934 +0.968510523,3.760065147 +0.969776881,3.75510336 +0.97104324,3.750141573 +0.972309599,3.745179786 +0.973575958,3.740217999 +0.974842317,3.735065375 +0.976108676,3.72991275 +0.977375035,3.724760125 +0.978641394,3.719416662 +0.979907752,3.713882361 +0.981174111,3.708157222 +0.98244047,3.702241245 +0.983706829,3.696134431 +0.984973188,3.689455102 +0.986239547,3.682394097 +0.987505906,3.674760579 +0.988772265,3.666363709 +0.990038623,3.656630973 +0.991304982,3.645562371 +0.992571341,3.632203714 +0.9938377,3.615219135 +0.995104059,3.591936904 +0.996370418,3.557204395 +0.997636777,3.501098035 +0.998903136,3.4089233 diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_ocp_Ai2020_function.py b/pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_ocp_Ai2020_function.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_ocp_Ai2020_function.py rename to pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_ocp_Ai2020_function.py diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_volume_change_Ai2020.py b/pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_volume_change_Ai2020.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/lico2_volume_change_Ai2020.py rename to pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/lico2_volume_change_Ai2020.py diff --git a/pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/parameters.csv b/pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/parameters.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/parameters.csv rename to pybamm/input/parameters/lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/parameters.csv diff --git a/pybamm/input/parameters/lithium_ion/seis/example/README.md b/pybamm/input/parameters/lithium_ion/testing_only/seis/example/README.md similarity index 100% rename from pybamm/input/parameters/lithium_ion/seis/example/README.md rename to pybamm/input/parameters/lithium_ion/testing_only/seis/example/README.md diff --git a/pybamm/input/parameters/lithium_ion/seis/example/parameters.csv b/pybamm/input/parameters/lithium_ion/testing_only/seis/example/parameters.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/seis/example/parameters.csv rename to pybamm/input/parameters/lithium_ion/testing_only/seis/example/parameters.csv diff --git a/pybamm/input/parameters/lithium_ion/electrolytes/LiPF6_Mohtat2020/__init__.py b/pybamm/input/parameters/lithium_ion/testing_only/separators/__init__.py similarity index 100% rename from pybamm/input/parameters/lithium_ion/electrolytes/LiPF6_Mohtat2020/__init__.py rename to pybamm/input/parameters/lithium_ion/testing_only/separators/__init__.py diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_Ai2020/README.md b/pybamm/input/parameters/lithium_ion/testing_only/separators/separator_Ai2020/README.md similarity index 100% rename from pybamm/input/parameters/lithium_ion/separators/separator_Ai2020/README.md rename to pybamm/input/parameters/lithium_ion/testing_only/separators/separator_Ai2020/README.md diff --git a/pybamm/input/parameters/lithium_ion/separators/separator_Ai2020/parameters.csv b/pybamm/input/parameters/lithium_ion/testing_only/separators/separator_Ai2020/parameters.csv similarity index 100% rename from pybamm/input/parameters/lithium_ion/separators/separator_Ai2020/parameters.csv rename to pybamm/input/parameters/lithium_ion/testing_only/separators/separator_Ai2020/parameters.csv diff --git a/pybamm/models/full_battery_models/lithium_ion/Yang2017.py b/pybamm/models/full_battery_models/lithium_ion/Yang2017.py index b3495c1331..f55df43972 100644 --- a/pybamm/models/full_battery_models/lithium_ion/Yang2017.py +++ b/pybamm/models/full_battery_models/lithium_ion/Yang2017.py @@ -13,19 +13,3 @@ def __init__(self, options=None, name="Yang2017", build=True): } super().__init__(options=options, name=name) pybamm.citations.register("Yang2017") - - @property - def default_parameter_values(self): - return pybamm.ParameterValues( - { - "chemistry": "lithium_ion", - "cell": "LGM50_Chen2020", - "negative electrode": "graphite_Chen2020", - "separator": "separator_Chen2020", - "positive electrode": "nmc_Chen2020", - "electrolyte": "lipf6_Nyman2008", - "experiment": "1C_discharge_from_full_Chen2020", - "sei": "example", - "lithium plating": "okane2020_Li_plating", - } - ) diff --git a/pybamm/parameters/__init__.py b/pybamm/parameters/__init__.py index e69de29bb2..2d86081ecb 100644 --- a/pybamm/parameters/__init__.py +++ b/pybamm/parameters/__init__.py @@ -0,0 +1 @@ +from .process_parameter_data import process_1D_data, process_2D_data diff --git a/pybamm/parameters/parameter_sets.py b/pybamm/parameters/parameter_sets.py index 11c9339ec2..35eb744136 100644 --- a/pybamm/parameters/parameter_sets.py +++ b/pybamm/parameters/parameter_sets.py @@ -1,9 +1,5 @@ -# -# Parameter sets from papers -# """ -Parameter sets from papers. The 'citation' entry provides a reference to the appropriate -paper in the file "pybamm/CITATIONS.txt". To see which parameter sets have been used in +Parameter sets from papers. To see which parameter sets have been used in your simulation, add the line "pybamm.print_citations()" to your script. Lead-acid parameter sets @@ -76,6 +72,11 @@ Dhammika Widanage, and Emma Kendrick. Development of Experimental Techniques for Parameterization of Multi-scale Lithium-ion Battery Models. Journal of The Electrochemical Society, 167(8):080534, 2020. doi:10.1149/1945-7111/ab9050. + - Simon E. J. O'Kane, Ian D. Campbell, Mohamed W. J. Marzook, Gregory J. Offer, + and Monica Marinescu. Physical origin of the differential voltage minimum + associated with lithium plating in li-ion batteries. Journal of The + Electrochemical Society, 167(9):090540, may 2020. URL: + https://doi.org/10.1149/1945-7111/ab90ac, doi:10.1149/1945-7111/ab90ac. - Simon E. J. O'Kane, Weilong Ai, Ganesh Madabattula, Diego Alonso-Alvarez, Robert Timms, Valentin Sulzer, Jacqueline Sophie Edge, Billy Wu, Gregory J. Offer, and Monica Marinescu. Lithium-ion battery degradation: how to model it. @@ -98,6 +99,9 @@ - Michael J. Lain, James Brandon, and Emma Kendrick. Design strategies for high power vs. high energy lithium ion cells. Batteries, 5(4):64, 2019. doi:10.3390/batteries5040064. + - Andreas Nyman, Mårten Behm, and Göran Lindbergh. Electrochemical + characterisation and modelling of the mass transport phenomena in lipf6–ec–emc + electrolyte. Electrochimica Acta, 53(22):6356–6365, 2008. - Eric Prada, D. Di Domenico, Y. Creff, J. Bernard, Valérie Sauvant-Moynot, and François Huet. A simplified electrochemical and thermal aging model of LiFePO4-graphite Li-ion batteries: power and capacity fade simulations. Journal @@ -108,177 +112,58 @@ Journal of the Electrochemical Society, 151(2):A196, 2004. doi:10.1149/1.1634273. * Xu2019 : + - Lars Ole Valøen and Jan N Reimers. Transport properties of lipf6-based li-ion + battery electrolytes. Journal of The Electrochemical Society, 152(5):A882, + 2005. - Shanshan Xu, Kuan-Hung Chen, Neil P Dasgupta, Jason B Siegel, and Anna G Stefanopoulou. Evolution of dead lithium growth in lithium metal batteries: experimentally validated model of the apparent capacity loss. Journal of The Electrochemical Society, 166(14):A3456, 2019. """ - -# -# Lithium-ion -# - -NCA_Kim2011 = { - "chemistry": "lithium_ion", - "cell": "Kim2011", - "negative electrode": "graphite_Kim2011", - "separator": "separator_Kim2011", - "positive electrode": "nca_Kim2011", - "electrolyte": "lipf6_Kim2011", - "experiment": "1C_discharge_from_full_Kim2011", - "sei": "example", - "citation": "Kim2011", -} - -Ecker2015 = { - "chemistry": "lithium_ion", - "cell": "kokam_Ecker2015", - "negative electrode": "graphite_Ecker2015", - "separator": "separator_Ecker2015", - "positive electrode": "LiNiCoO2_Ecker2015", - "electrolyte": "lipf6_Ecker2015", - "experiment": "1C_discharge_from_full_Ecker2015", - "sei": "example", - "citation": [ - "Ecker2015i", - "Ecker2015ii", - "Zhao2018", - "Hales2019", - "Richardson2020", - ], -} - -Marquis2019 = { - "chemistry": "lithium_ion", - "cell": "kokam_Marquis2019", - "negative electrode": "graphite_mcmb2528_Marquis2019", - "separator": "separator_Marquis2019", - "positive electrode": "lico2_Marquis2019", - "electrolyte": "lipf6_Marquis2019", - "experiment": "1C_discharge_from_full_Marquis2019", - "sei": "example", - "citation": "Marquis2019", -} - -Chen2020 = { - "chemistry": "lithium_ion", - "cell": "LGM50_Chen2020", - "negative electrode": "graphite_Chen2020", - "separator": "separator_Chen2020", - "positive electrode": "nmc_Chen2020", - "electrolyte": "lipf6_Nyman2008", - "experiment": "1C_discharge_from_full_Chen2020", - "sei": "example", - "citation": "Chen2020", -} - -Chen2020_composite = { - "chemistry": "lithium_ion", - "cell": "LGM50_Chen2020", - "negative electrode": "graphite_Chen2020_composite", - "separator": "separator_Chen2020", - "positive electrode": "nmc_Chen2020", - "electrolyte": "lipf6_Nyman2008", - "experiment": "1C_discharge_from_full_Chen2020", - "sei": "example_composite", - "citation": ["Chen2020", "Ai2022"], -} - -Mohtat2020 = { - "chemistry": "lithium_ion", - "cell": "UMBL_Mohtat2020", - "negative electrode": "graphite_UMBL_Mohtat2020", - "separator": "separator_Mohtat2020", - "positive electrode": "NMC_UMBL_Mohtat2020", - "electrolyte": "LiPF6_Mohtat2020", - "experiment": "1C_charge_from_empty_Mohtat2020", - "sei": "example", - "lithium plating": "yang2017_Li_plating", - "citation": "Mohtat2020", -} - -Ramadass2004 = { - "chemistry": "lithium_ion", - "cell": "sony_Ramadass2004", - "negative electrode": "graphite_Ramadass2004", - "separator": "separator_Ecker2015", # no values found, relevance? - "positive electrode": "lico2_Ramadass2004", - "electrolyte": "lipf6_Ramadass2004", - "experiment": "1C_discharge_from_full_Ramadass2004", - "sei": "ramadass2004", - "citation": "Ramadass2004", -} - -Prada2013 = { - "chemistry": "lithium_ion", - "cell": "A123_Lain2019", - "negative electrode": "graphite_Chen2020", - "separator": "separator_Chen2020", - "positive electrode": "LFP_Prada2013", - "electrolyte": "lipf6_Nyman2008", - "experiment": "4C_discharge_from_full_Prada2013", - "citation": ["Chen2020", "Lain2019", "Prada2013"], -} - -Ai2020 = { - "chemistry": "lithium_ion", - "cell": "Enertech_Ai2020", - "negative electrode": "graphite_Ai2020", - "separator": "separator_Ai2020", - "positive electrode": "lico2_Ai2020", - "electrolyte": "lipf6_Enertech_Ai2020", - "experiment": "1C_discharge_from_full_Ai2020", - "sei": "example", - "citation": "Ai2019", -} - -Xu2019 = { - "chemistry": "lithium_ion", - "cell": "li_metal_Xu2019", - "negative electrode": "li_metal_Xu2019", - "separator": "separator_Xu2019", - "positive electrode": "NMC532_Xu2019", - "electrolyte": "lipf6_Valoen2005", - "experiment": "1C_discharge_from_full_Xu2019", - "sei": "example", - "citation": "Xu2019", -} - -ORegan2022 = { - "chemistry": "lithium_ion", - "cell": "LGM50_ORegan2022", - "negative electrode": "graphite_ORegan2022", - "separator": "separator_ORegan2022", - "positive electrode": "nmc_ORegan2022", - "electrolyte": "lipf6_EC_EMC_3_7_Landesfeind2019", - "experiment": "1C_discharge_from_full_ORegan2022", - "citation": ["ORegan2022", "Chen2020"], -} - -OKane2022 = { - "chemistry": "lithium_ion", - "cell": "LGM50_Chen2020", - "negative electrode": "graphite_OKane2022", - "separator": "separator_Chen2020", - "positive electrode": "nmc_OKane2022", - "electrolyte": "lipf6_OKane2022", - "experiment": "1C_discharge_from_full_Chen2020", - "sei": "OKane2022", - "lithium plating": "okane2022_Li_plating", - "citation": ["OKane2022", "Chen2020"], -} - -# -# Lead-acid -# - -Sulzer2019 = { - "chemistry": "lead_acid", - "cell": "BBOXX_Sulzer2019", - "negative electrode": "lead_Sulzer2019", - "separator": "agm_Sulzer2019", - "positive electrode": "lead_dioxide_Sulzer2019", - "electrolyte": "sulfuric_acid_Sulzer2019", - "experiment": "1C_discharge_from_full", - "citation": "Sulzer2019physical", -} +import warnings + + +class ParameterSets: + def __init__(self): + self.all_parameter_sets = { + "lead_acid": ["Sulzer2019"], + "lithium_ion": [ + "Ai2020", + "Chen2020", + "Chen2020_composite", + "Ecker2015", + "Marquis2019", + "Mohtat2020", + "NCA_Kim2011", + "OKane2022", + "ORegan2022", + "Prada2013", + "Ramadass2004", + "Xu2019", + ], + } + self.all_parameter_sets_list = [ + *self.all_parameter_sets["lead_acid"], + *self.all_parameter_sets["lithium_ion"], + ] + + def __getattribute__(self, name): + try: + return super().__getattribute__(name) + except AttributeError as error: + # For backwards compatibility, parameter sets that used to be defined in + # this file now return the name as a string, which will load the same + # parameter set as before when passed to `ParameterValues` + if name in self.all_parameter_sets_list: + out = name + else: + raise error + warnings.warn( + f"Parameter sets should be called directly by their name ({name}), " + f"instead of via pybamm.parameter_sets (pybamm.parameter_sets.{name}).", + DeprecationWarning, + ) + return out + + +parameter_sets = ParameterSets() diff --git a/pybamm/parameters/parameter_values.py b/pybamm/parameters/parameter_values.py index ac7073d4c3..fe0db4f82b 100644 --- a/pybamm/parameters/parameter_values.py +++ b/pybamm/parameters/parameter_values.py @@ -10,7 +10,8 @@ from pprint import pformat from collections import defaultdict import inspect -import json +from textwrap import fill +import shutil class ParameterValues: @@ -24,22 +25,8 @@ class ParameterValues: ---------- values : dict or string Explicit set of parameters, or reference to a file of parameters - If string, gets passed to read_parameters_csv to read a file. - chemistry : dict - Dict of strings for default chemistries. Must be of the form: - {"base chemistry": base_chemistry, - "cell": cell_properties_authorYear, - "negative electrode": negative_electrode_chemistry_authorYear, - "separator": separator_chemistry_authorYear, - "positive electrode": positive_electrode_chemistry_authorYear, - "electrolyte": electrolyte_chemistry_authorYear, - "experiment": experimental_conditions_authorYear}. - Then the negative electrode chemistry is loaded from the file - inputs/parameters/base_chemistry/negative electrodes/ - negative_electrode_chemistry_authorYear, etc. - Parameters in "cell" should include geometry and current collector properties. - Parameters in "experiment" should include parameters relating to experimental - conditions, such as initial conditions and currents. + If string and matches one of the inbuilt parameter sets, returns that parameter + set. If non-matching string, gets passed to read_parameters_csv to read a file. Examples -------- @@ -48,11 +35,6 @@ class ParameterValues: >>> param = pybamm.ParameterValues(values) >>> param["some parameter"] 1 - >>> file = "input/parameters/lithium_ion/cells/kokam_Marquis2019/parameters.csv" - >>> values_path = pybamm.get_parameters_filepath(file) - >>> param = pybamm.ParameterValues(values_path) - >>> param["Negative current collector thickness [m]"] - 2.5e-05 >>> param = pybamm.ParameterValues("Marquis2019") >>> param["Reference temperature [K]"] 298.15 @@ -83,16 +65,37 @@ def __init__(self, values=None, chemistry=None): self.update_from_chemistry(chemistry) # Then update with values dictionary or file if values is not None: - if (isinstance(values, str) and hasattr(pybamm.parameter_sets, values)) or ( - isinstance(values, dict) and "chemistry" in values - ): + if isinstance(values, dict) and "chemistry" in values: + warnings.warn( + "Creating a parameter set from a dictionary of components has " + "been deprecated and will be removed in a future release. " + "Define the parameter set in a python script instead.", + DeprecationWarning, + ) self.update_from_chemistry(values) else: - # If base_parameters is a filename, load from that filename if isinstance(values, str): - file_path = self.find_parameter(values) - path = os.path.split(file_path)[0] - values = self.read_parameters_csv(file_path) + # Look for the values name in the standard pybamm parameter sets + found_parameter_set = False + parameter_sets_path = os.path.join( + pybamm.ABSOLUTE_PATH, "pybamm", "input", "parameters" + ) + for chemistry in ["lead_acid", "lithium_ion"]: + path = os.path.join(parameter_sets_path, chemistry) + filename = os.path.join(path, f"{values}.py") + if os.path.exists(filename): + # Use a function call to avoid issues with updating the + # dictionary in place later + func = pybamm.load_function( + filename, "get_parameter_values" + ) + values = func() + found_parameter_set = True + if not found_parameter_set: + # In this case it might be a filename, load from that filename + file_path = self.find_parameter(values) + path = os.path.split(file_path)[0] + values = self.read_parameters_csv(file_path) else: path = "" # Don't check parameter already exists when first creating it @@ -106,6 +109,15 @@ def __init__(self, values=None, chemistry=None): # This is for the conversion to Julia (ModelingToolkit) self._replace_callable_function_parameters = True + # save citations + citations = [] + if hasattr(self, "citations"): + citations = self.citations + elif "citations" in self._dict_items: + citations = self._dict_items["citations"] + for citation in citations: + pybamm.citations.register(citation) + def __getitem__(self, key): return self._dict_items[key] @@ -162,8 +174,7 @@ def update_from_chemistry(self, chemistry): """ Load standard set of components from a 'chemistry' dictionary """ - if isinstance(chemistry, str): - chemistry = getattr(pybamm.parameter_sets, chemistry) + self.chemistry = chemistry base_chemistry = chemistry["chemistry"] @@ -178,6 +189,8 @@ def update_from_chemistry(self, chemistry): "experiment", ] + self.component_params_by_group = {} + # add SEI parameters if provided for extra_group in ["sei", "lithium plating"]: if extra_group in chemistry: @@ -195,16 +208,17 @@ def update_from_chemistry(self, chemistry): ) # Create path to component and load values component_path = os.path.join( - base_chemistry, component_group.replace(" ", "_") + "s", component + base_chemistry, + "testing_only", + component_group.replace(" ", "_") + "s", + component, ) file_path = self.find_parameter( os.path.join(component_path, "parameters.csv") ) - component_params_tmp = self.read_parameters_csv(file_path) + component_params = self.read_parameters_csv(file_path) - component_params = {} - for k, v in component_params_tmp.items(): - component_params[k] = v + self.component_params_by_group[component_group] = component_params # Update parameters, making sure to check any conflicts self.update( @@ -216,11 +230,9 @@ def update_from_chemistry(self, chemistry): # register (list of) citations if "citation" in chemistry: - citations = chemistry["citation"] - if not isinstance(citations, list): - citations = [citations] - for citation in citations: - pybamm.citations.register(citation) + self.citations = chemistry["citation"] + if not isinstance(self.citations, list): + self.citations = [self.citations] def read_parameters_csv(self, filename): """Reads parameters from csv file into dict. @@ -304,27 +316,16 @@ def update(self, values, check_conflict=False, check_already_exists=True, path=" pybamm.root_dir(), "pybamm", "input", "drive_cycles" ) filename = os.path.join(data_path, value[14:] + ".csv") - function_name = value[14:] else: filename = os.path.join(path, value[6:] + ".csv") - function_name = value[6:] filename = pybamm.get_parameters_filepath(filename) - data = pd.read_csv( - filename, comment="#", skip_blank_lines=True, header=None - ).to_numpy() # Save name and data - self._dict_items[name] = (function_name, ([data[:, 0]], data[:, 1])) + self._dict_items[name] = pybamm.parameters.process_1D_data(filename) # parse 2D parameter data elif value.startswith("[2D data]"): filename = os.path.join(path, value[9:] + ".json") - function_name = value[9:] filename = pybamm.get_parameters_filepath(filename) - with open(filename, "r") as jsonfile: - json_data = json.load(jsonfile) - data = json_data["data"] - data[0] = [np.array(el) for el in data[0]] - data[1] = np.array(data[1]) - self._dict_items[name] = (function_name, data) + self._dict_items[name] = pybamm.parameters.process_2D_data(filename) elif value == "[input]": self._dict_items[name] = pybamm.InputParameter(name) @@ -863,48 +864,29 @@ def print_parameters(self, parameters, output_file=None): parameters = parameters_dict evaluated_parameters = defaultdict(list) - # Calculate parameters for each C-rate - for Crate in [1, 10]: - # Update Crate - capacity = self.get("Nominal cell capacity [A.h]") - if capacity is not None: - self.update( - {"Current function [A]": Crate * capacity}, - check_already_exists=False, - ) - # Turn to regular dictionary for faster KeyErrors - self._dict_items = dict(self._dict_items) - - for name, symbol in parameters.items(): - if isinstance(symbol, pybamm.Symbol): - try: - proc_symbol = self.process_symbol(symbol) - except KeyError: - # skip parameters that don't have a value in that parameter set - proc_symbol = None - if not ( - callable(proc_symbol) - or proc_symbol is None - or proc_symbol.has_symbol_of_classes( - (pybamm.Concatenation, pybamm.Broadcast) - ) - ): - evaluated_parameters[name].append(proc_symbol.evaluate(t=0)) + # Turn to regular dictionary for faster KeyErrors + self._dict_items = dict(self._dict_items) + + for name, symbol in parameters.items(): + if isinstance(symbol, pybamm.Symbol): + try: + proc_symbol = self.process_symbol(symbol) + except KeyError: + # skip parameters that don't have a value in that parameter set + proc_symbol = None + if not ( + callable(proc_symbol) + or proc_symbol is None + or proc_symbol.has_symbol_of_classes( + (pybamm.Concatenation, pybamm.Broadcast) + ) + ): + evaluated_parameters[name] = proc_symbol.evaluate(t=0) # Turn back to FuzzyDict self._dict_items = pybamm.FuzzyDict(self._dict_items) - # Calculate C-dependence of the parameters based on the difference between the - # value at 1C and the value at C / 10 - for name, values in evaluated_parameters.items(): - if values[1] == 0 or abs(values[0] / values[1] - 1) < 1e-10: - C_dependence = "" - elif abs(values[0] / values[1] - 10) < 1e-10: - C_dependence = " * Crate" - elif abs(values[0] / values[1] - 0.1) < 1e-10: - C_dependence = " / Crate" - evaluated_parameters[name] = (values[0], C_dependence) # Print the evaluated_parameters dict to output_file if output_file: self.print_evaluated_parameters(evaluated_parameters, output_file) @@ -929,15 +911,11 @@ def print_evaluated_parameters(self, evaluated_parameters, output_file): column_width = max(len(name) for name in evaluated_parameters.keys()) s = "{{:>{}}}".format(column_width) with open(output_file, "w") as file: - for name, (value, C_dependence) in sorted(evaluated_parameters.items()): + for name, value in sorted(evaluated_parameters.items()): if 0.001 < abs(value) < 1000: - file.write( - (s + " : {:10.4g}{!s}\n").format(name, value, C_dependence) - ) + file.write((s + " : {:10.4g}\n").format(name, value)) else: - file.write( - (s + " : {:10.3E}{!s}\n").format(name, value, C_dependence) - ) + file.write((s + " : {:10.3E}\n").format(name, value)) @staticmethod def find_parameter(path): @@ -954,3 +932,170 @@ def find_parameter(path): pybamm.logger.verbose(f"Using path: '{location}' + '{path}'") return trial_path raise FileNotFoundError("Could not find parameter {}".format(path)) + + def export_python_script( + self, name, old_parameters_path="", new_parameters_path="" + ): + """ + Print a python script that can be used to reproduce the parameter set + + Parameters + ---------- + name : string + The name to save the parameter set under + old_parameters_path : string, optional + Optional path for the location where to find the old parameters. + new_parameters_path : string, optional + Optional path for the location where to save the new parameters. + """ + # Initialize + preamble = "import pybamm\n" + function_output = "" + data_output = "" + dict_output = "" + + component_params_by_group = getattr( + self, "component_params_by_group", {"": self} + ) + + # Loop through each component group and add appropriate functions, data, and + # parameters to the relevant strings + for component_group, items in component_params_by_group.items(): + if component_group != "": + dict_output += f"\n # {component_group}" + for k in items.keys(): + v = self[k] + if callable(v): + # write the function body to the file + function_output += inspect.getsource(v) + "\n" + v = v.__name__ + elif isinstance(v, tuple): + # save the data to a separate csv file + # and load it in the parameter set + data_name = v[0] + data_file_old = os.path.join( + old_parameters_path, + component_group.replace(" ", "_") + "s", + self.chemistry[component_group], + f"{data_name}.csv", + ) + data_path = os.path.join(new_parameters_path, "data") + if not os.path.exists(data_path): + os.makedirs(data_path) + data_file_new = os.path.join(data_path, f"{data_name}.csv") + shutil.copyfile(data_file_old, data_file_new) + + # add data output + if data_output == "": + data_output = ( + "# Load data in the appropriate format\n" + "path, _ = os.path.split(os.path.abspath(__file__))\n" + ) + data_output += ( + f"{data_name} = pybamm.parameters.process_1D_data" + f"('{data_name}.csv', path)\n" + ) + v = f"pybamm.{data_name}" + + v = f"{data_name}" + + # add line to the parameter output in the appropriate section + line_output = f'\n "{k}": {v},' + if len(line_output) > 88: + # this will be split into multiple lines by black + line_output = f'\n "{k}""": {v},' + + dict_output += line_output + + # save citation info + if hasattr(self, "citations"): + dict_output += ( + "\n # citations" + f"\n 'citations': {self.citations}," + ) + + # read README.md if they exist and save info + docstring = self._create_docstring_from_readmes(name) + + # construct the output string + output = ( + function_output + + data_output + + "\n# Call dict via a function to avoid errors when editing in place" + + "\ndef get_parameter_values():" + + docstring + + "\n return {" + + dict_output + + "\n }" + ) + + # Add more packages to preamble if needed + if "os." in output: + preamble += "import os\n" + output = preamble + "\n\n" + output + + # Add pybamm. to functions that didn't have it in function body before + for funcname in [ + "Parameter", + "exp", + "tanh", + "cosh", + "log10", + "LeadAcidParameters", + ]: + # add space or ( before so it doesn't do this for middle-of-word matches + output = output.replace(f" {funcname}(", f" pybamm.{funcname}(") + output = output.replace(f"({funcname}(", f"(pybamm.{funcname}(") + output = output.replace("constants", "pybamm.constants") + + # Process file name + filename = name + if not filename.endswith(".py"): + filename = filename + ".py" + filename = os.path.join(new_parameters_path, filename) + + # save to file + with open(filename, "w") as f: + f.write(output) + + def _create_docstring_from_readmes(self, name): + docstring = "" + + if hasattr(self, "chemistry"): + chemistry = self.chemistry + lines = [] + for component_group, component in chemistry.items(): + if component_group in self.component_params_by_group: + readme = os.path.join( + "input", + "parameters", + self.chemistry["chemistry"], + "testing_only", + component_group.replace(" ", "_") + "s", + component, + "README.md", + ) + readme = pybamm.get_parameters_filepath(readme) + if os.path.isfile(readme): + with open(readme, "r") as f: + lines += f.readlines() + + # lines, ind = np.unique(lines, return_index=True) + # lines = lines[np.argsort(ind)] + lines = [ + fill( + line, + 88, + drop_whitespace=False, + initial_indent=" ", + subsequent_indent=" ", + ) + + "\n" + for line in lines + ] + docstring = ( + f'\n """\n # {name} parameter set\n' + + "".join(lines) + + ' """\n' + ) + + return docstring diff --git a/pybamm/parameters/process_parameter_data.py b/pybamm/parameters/process_parameter_data.py new file mode 100644 index 0000000000..dd682ca99b --- /dev/null +++ b/pybamm/parameters/process_parameter_data.py @@ -0,0 +1,60 @@ +# +# Functions to process parameter data (for Interpolants) +# +import os +import pandas as pd +import json +import numpy as np + + +def _process_name(name, path, ext): + if not name.endswith(ext): + name = name + ext + + # Set the path + if path is not None: + # first look in the specified path + filename = os.path.join(path, name) + if not os.path.exists(filename): + # then look in the "data" subfolder + filename = os.path.join(path, "data", name) + if not os.path.exists(filename): + raise FileNotFoundError( + "Could not find file '{}' in '{}' or '{}'".format( + name, path, os.path.join(path, "data") + ) + ) + else: + filename = name + # Split the name (in case original name was a path) + _, name = os.path.split(filename) + + # Remove the extension from the name + return (filename, name.split(".")[0]) + + +def process_1D_data(name, path=None): + """ + Process 1D data from a csv file + """ + filename, name = _process_name(name, path, ".csv") + + data = pd.read_csv( + filename, comment="#", skip_blank_lines=True, header=None + ).to_numpy() + # Save name and data + return (name, ([data[:, 0]], data[:, 1])) + + +def process_2D_data(name, path=None): + """ + Process 2D data from a JSON file + """ + filename, name = _process_name(name, path, ".json") + + with open(filename, "r") as jsonfile: + json_data = json.load(jsonfile) + data = json_data["data"] + data[0] = [np.array(el) for el in data[0]] + data[1] = np.array(data[1]) + return (name, tuple(data)) diff --git a/pybamm/parameters/update_parameter_sets_doc.py b/pybamm/parameters/update_parameter_sets_doc.py index e92ff663bb..99ca492ecf 100644 --- a/pybamm/parameters/update_parameter_sets_doc.py +++ b/pybamm/parameters/update_parameter_sets_doc.py @@ -13,8 +13,7 @@ DOC_INTRO = """ -Parameter sets from papers. The 'citation' entry provides a reference to the appropriate -paper in the file "pybamm/CITATIONS.txt". To see which parameter sets have been used in +Parameter sets from papers. To see which parameter sets have been used in your simulation, add the line "pybamm.print_citations()" to your script.""" @@ -24,20 +23,16 @@ def get_ps_dict(): parameter_sets.py """ parameter_set_dict = defaultdict(list) - for ps_name, ps_dict in parameter_sets.__dict__.items(): - if not isinstance(ps_dict, dict): - continue - elif "citation" not in ps_dict or "chemistry" not in ps_dict: - continue + for chemistry, ps_names in pybamm.parameter_sets.all_parameter_sets.items(): + for ps_name in ps_names: + ps = pybamm.ParameterValues(ps_name) + citation = ps["citations"] - chemistry = ps_dict["chemistry"] - citation = ps_dict["citation"] + # Enclose citation in a list if not already enclosed + if not isinstance(citation, list): + citation = [citation] - # Enclose citation in a list if not already enclosed - if not isinstance(citation, list): - citation = [citation] - - parameter_set_dict[chemistry].append((ps_name, citation)) + parameter_set_dict[chemistry].append((ps_name, citation)) return parameter_set_dict diff --git a/pybamm/parameters_cli.py b/pybamm/parameters_cli.py index 431b5043f5..90950b23ee 100644 --- a/pybamm/parameters_cli.py +++ b/pybamm/parameters_cli.py @@ -1,169 +1,19 @@ -import os -import pybamm -import argparse -import shutil - -from pathlib import Path - - -def yes_or_no(question): - while "Please answer yes(y) or no(n).": - reply = str(input(question + " (y/n): ")).lower().strip() - if reply[:1] == "y": - return True - if reply[:1] == "n": - return False - - -def get_parser(description): - """ - Create a parser with the following arguments: - parameter_dir: str - battery_type: str - component: str - force: bool, optional - - Parameter: - ---------- - description: A description of the command [str] - - Returns - ------- - argparse.ArgumentParser - """ - parser = argparse.ArgumentParser(description=description) - parser.add_argument( - "parameter_dir", type=str, help="Name of the parameter directory" - ) - parser.add_argument("battery_type", choices=["lithium_ion", "lead_acid"]) - parser.add_argument( - "component", - choices=[ - "cells", - "electrolytes", - "experiments", - "negative_electrodes", - "positive_electrodes", - "separators", - ], +def raise_error(): + raise NotImplementedError( + "parameters cli has been deprecated. " + "Parameters should now be defined via python files (see " + "https://github.com/pybamm-team/PyBaMM/tree/develop/pybamm/input/parameters/lithium_ion/Ai2020.py" # noqa: E501 + " for example)" ) - parser.add_argument("-f", "--force", action="store_true") - return parser - - -def copy_directory(source, destination, overwrite): - """ - Copy directory structure source as destination, dealing - with overwriting. - - Parameters: - ----------- - source: Directory structure [str] - destination: Directory structure [str] - overwrite: Whether or not to overwrite [bool] - - Example: - -------- - source = "site-packages/pybamm/input/parameters/lead_acid/negative_electrodes/blah" - destination = "input/parameters/lead_acid/negative_electrodes/blah" - Will copy - "input/parameters/lead_acid/negative_electrodes/blah" - in current working directory. - """ - try: - shutil.copytree(source, destination) - except FileExistsError: - if overwrite: - shutil.rmtree(destination) - shutil.copytree(source, destination) - elif yes_or_no("Parameter set already defined, erase?"): - shutil.rmtree(destination) - shutil.copytree(source, destination) - else: - print("Doing nothing.") - # Implementation note: - # In python 3.7 shutil.copytree() does not provide an option to - # automatically overwrite a directory tree. - # When switching to python 3.8, the following function could be - # written using - # shutil.copytree(args.parameter_dir, destination_dir, exist_ok=True) - # and getting rid of the rmtree calls. - # see https://docs.python.org/3/library/shutil.html def add_parameter(arguments=None): - """ - Add a parameter directory to package input directory. - This allows the parameters to be used from anywhere in the system. - - Example: - "add_parameter foo lithium_ion negative_electrodes" will copy directory foo in - "pybamm/input/parameters/lithium_ion/negative_electrodes". - """ - parser = get_parser("Copy parameter to the PyBaMM package directory.") - args = parser.parse_args(arguments) - - parameters_root_dir = os.path.join(pybamm.__path__[0], "input", "parameters") - - parameter_dir_name = Path(args.parameter_dir).name - destination_dir = os.path.join( - parameters_root_dir, args.battery_type, args.component, parameter_dir_name - ) - - copy_directory(args.parameter_dir, destination_dir, args.force) + raise_error() def remove_parameter(arguments=None): - """ - Remove a parameter directory from package input directory. - - Example: - "rm_parameter foo lithium_ion negative_electrodes" will remove directory foo in - "pybamm/input/parameters/lithium_ion/negative_electrodes". - """ - parser = get_parser("Remove parameters from the PyBaMM package directory.") - args = parser.parse_args(arguments) - - parameters_root_dir = os.path.join(pybamm.__path__[0], "input", "parameters") - - parameter_dir_name = Path(args.parameter_dir).name - destination_dir = os.path.join( - parameters_root_dir, args.battery_type, args.component, parameter_dir_name - ) - - if not args.force: - yes_or_no("This will remove directory {}, continue?".format(destination_dir)) - shutil.rmtree(destination_dir, ignore_errors=True) + raise_error() def edit_parameter(arguments=None): - """ - Copy a given default parameter directory to the current working directory - for editing. For example - - .. code:: - - edit_parameter(["lithium_ion"]) - - will create the directory structure:: - - lithium_ion/ - negative_electrodes/ - graphite_Chen2020 - ... - positive_electrodes/ - ... - - in the current working directory. - """ - desc = "Pull parameter directory dir to current working directory for editing." - parser = argparse.ArgumentParser(description=desc) - parser.add_argument("chemistry", choices=["lithium_ion", "lead_acid"]) - parser.add_argument("-f", "--force", action="store_true") - - args = parser.parse_args(arguments) - - path = os.path.join("input", "parameters", args.chemistry) - - source_dir = os.path.join(pybamm.__path__[0], path) - copy_directory(source_dir, args.chemistry, args.force) + raise_error() diff --git a/pybamm/util.py b/pybamm/util.py index e6b7c3e7aa..00676f6c7f 100644 --- a/pybamm/util.py +++ b/pybamm/util.py @@ -212,7 +212,7 @@ def __eq__(self, other): return self.value == other.value -def load_function(filename): +def load_function(filename, funcname=None): """ Load a python function from an absolute or relative path using `importlib`. Example - pybamm.load_function("pybamm/input/example.py") @@ -221,6 +221,9 @@ def load_function(filename): --------- filename : str The path of the file containing the function. + funcname : str, optional + The name of the function in the file. If None, assumed to be the same as the + filename (ignoring the path) Returns ------- @@ -231,8 +234,9 @@ def load_function(filename): if filename.endswith(".py"): filename = filename.replace(".py", "") - # Assign path to _ and filename to tail - _, tail = os.path.split(filename) + if funcname is None: + # Read funcname by splitting the file (assumes funcname is the same as filename) + _, funcname = os.path.split(filename) # Store the current working directory orig_dir = os.getcwd() @@ -241,7 +245,7 @@ def load_function(filename): if "pybamm/input/parameters" in filename or "pybamm\\input\\parameters" in filename: root_path = filename[filename.rfind("pybamm") :] # If the function is in the current working directory - elif os.getcwd() in filename: + elif os.getcwd() in filename: # pragma: no cover root_path = filename.replace(os.getcwd(), "") # If the function is not in the current working directory and the path provided is # absolute @@ -250,23 +254,23 @@ def load_function(filename): dir_path = os.path.split(filename)[0] os.chdir(dir_path) root_path = filename.replace(os.getcwd(), "") - else: + else: # pragma: no cover root_path = filename # getcwd() returns "C:\\" when in the root drive and "C:\\a\\b\\c" otherwise - if root_path[0] == "\\" or root_path[0] == "/": + if root_path[0] == "\\" or root_path[0] == "/": # pragma: no cover root_path = root_path[1:] path = root_path.replace("/", ".") path = path.replace("\\", ".") pybamm.logger.debug( - f"Importing function '{tail}' from file '{filename}' via path '{path}'" + f"Importing function '{funcname}' from file '{filename}' via path '{path}'" ) module_object = importlib.import_module(path) # Revert back current working directory if it was changed os.chdir(orig_dir) - return getattr(module_object, tail) + return getattr(module_object, funcname) def rmse(x, y): diff --git a/tests/integration/test_models/standard_output_tests.py b/tests/integration/test_models/standard_output_tests.py index 7c7e5bf2ac..641caec961 100644 --- a/tests/integration/test_models/standard_output_tests.py +++ b/tests/integration/test_models/standard_output_tests.py @@ -674,6 +674,13 @@ def __init__(self, model, param, disc, solution, operating_condition): self.a_j_n_sei_av = solution[ "X-averaged negative electrode SEI volumetric interfacial current density" ] + self.a_j_n_pl = solution[ + "Negative electrode lithium plating volumetric interfacial current density" + ] + self.a_j_n_pl_av = solution[ + "X-averaged negative electrode lithium plating " + "volumetric interfacial current density" + ] self.i_s_n = solution["Negative electrode current density"] self.i_s_p = solution["Positive electrode current density"] @@ -687,7 +694,9 @@ def test_interfacial_current_average(self): np.testing.assert_array_almost_equal( np.mean( - self.a_j_n(self.t, self.x_n) + self.a_j_n_sei(self.t, self.x_n), + self.a_j_n(self.t, self.x_n) + + self.a_j_n_sei(self.t, self.x_n) + + self.a_j_n_pl(self.t, self.x_n), axis=0, ), self.i_cell / self.l_n, diff --git a/tests/integration/test_models/test_full_battery_models/test_lithium_ion/base_lithium_ion_tests.py b/tests/integration/test_models/test_full_battery_models/test_lithium_ion/base_lithium_ion_tests.py index 51b1eb395b..6d46766220 100644 --- a/tests/integration/test_models/test_full_battery_models/test_lithium_ion/base_lithium_ion_tests.py +++ b/tests/integration/test_models/test_full_battery_models/test_lithium_ion/base_lithium_ion_tests.py @@ -162,19 +162,7 @@ def test_irreversible_plating_with_porosity(self): "lithium plating": "irreversible", "lithium plating porosity change": "true", } - param = pybamm.ParameterValues( - { - "chemistry": "lithium_ion", - "cell": "LGM50_Chen2020", - "negative electrode": "graphite_Chen2020", - "separator": "separator_Chen2020", - "positive electrode": "nmc_Chen2020", - "electrolyte": "lipf6_Nyman2008", - "experiment": "1C_discharge_from_full_Chen2020", - "sei": "example", - "lithium plating": "okane2020_Li_plating", - } - ) + param = pybamm.ParameterValues("OKane2022") self.run_basic_processing_test(options, parameter_values=param) def test_sei_reaction_limited(self): diff --git a/tests/integration/test_models/test_full_battery_models/test_lithium_ion/test_basic_half_cell_models.py b/tests/integration/test_models/test_full_battery_models/test_lithium_ion/test_basic_half_cell_models.py index 7515afb4af..8b5751bb4a 100644 --- a/tests/integration/test_models/test_full_battery_models/test_lithium_ion/test_basic_half_cell_models.py +++ b/tests/integration/test_models/test_full_battery_models/test_lithium_ion/test_basic_half_cell_models.py @@ -37,7 +37,7 @@ def test_runs_Xu2019(self): solver = pybamm.CasadiSolver(mode="safe", atol=1e-6, rtol=1e-3) solver.solve(model, t_eval) - def test_runs_Chen2020(self): + def test_runs_OKane2022(self): # load model options = {"working electrode": "positive"} model = pybamm.lithium_ion.BasicDFNHalfCell(options=options) @@ -46,19 +46,7 @@ def test_runs_Chen2020(self): geometry = model.default_geometry # load parameter values - param = pybamm.ParameterValues( - { - "chemistry": "lithium_ion", - "cell": "LGM50_Chen2020", - "negative electrode": "graphite_Chen2020", - "separator": "separator_Chen2020", - "positive electrode": "nmc_Chen2020", - "electrolyte": "lipf6_Nyman2008", - "experiment": "1C_discharge_from_full_Chen2020", - "sei": "example", - "lithium plating": "okane2020_Li_plating", - } - ) + param = pybamm.ParameterValues("OKane2022") param["Current function [A]"] = 2.5 diff --git a/tests/integration/test_models/test_full_battery_models/test_lithium_ion/test_yang2017.py b/tests/integration/test_models/test_full_battery_models/test_lithium_ion/test_yang2017.py index c8b3bfdfad..c54d9e2aac 100644 --- a/tests/integration/test_models/test_full_battery_models/test_lithium_ion/test_yang2017.py +++ b/tests/integration/test_models/test_full_battery_models/test_lithium_ion/test_yang2017.py @@ -6,7 +6,8 @@ class TestYang2017(unittest.TestCase): def test_basic_processing(self): model = pybamm.lithium_ion.Yang2017() - modeltest = tests.StandardModelTest(model) + parameter_values = pybamm.ParameterValues("OKane2022") + modeltest = tests.StandardModelTest(model, parameter_values=parameter_values) modeltest.test_all() diff --git a/tests/unit/test_experiments/test_simulation_with_experiment.py b/tests/unit/test_experiments/test_simulation_with_experiment.py index ec7e524b90..8c24bac17b 100644 --- a/tests/unit/test_experiments/test_simulation_with_experiment.py +++ b/tests/unit/test_experiments/test_simulation_with_experiment.py @@ -5,7 +5,6 @@ import pybamm import numpy as np import os -import pandas as pd import unittest @@ -394,16 +393,12 @@ def test_cycle_summary_variables(self): "input", "parameters", "lithium_ion", - "negative_electrodes", - "graphite_Chen2020", + "data", "graphite_LGM50_ocp_Chen2020.csv", ) - function_name = "graphite_Chen2020" - filename = pybamm.get_parameters_filepath(filename) - data = pd.read_csv( - filename, comment="#", skip_blank_lines=True, header=None - ).to_numpy() - param["Negative electrode OCP [V]"] = (function_name, data) + param["Negative electrode OCP [V]"] = pybamm.parameters.process_1D_data( + filename + ) # Load positive electrode OCP data filename = os.path.join( @@ -412,16 +407,12 @@ def test_cycle_summary_variables(self): "input", "parameters", "lithium_ion", - "positive_electrodes", - "nmc_Chen2020", + "data", "nmc_LGM50_ocp_Chen2020.csv", ) - function_name = "nmc_LGM50_ocp_Chen2020.csv" - filename = pybamm.get_parameters_filepath(filename) - data = pd.read_csv( - filename, comment="#", skip_blank_lines=True, header=None - ).to_numpy() - param["Positive electrode OCP [V]"] = (function_name, data) + param["Positive electrode OCP [V]"] = pybamm.parameters.process_1D_data( + filename + ) sim = pybamm.Simulation(model, experiment=experiment, parameter_values=param) sim.solve(solver=pybamm.CasadiSolver("safe"), save_at_cycles=2) diff --git a/tests/unit/test_models/test_full_battery_models/test_lithium_ion/test_Yang2017.py b/tests/unit/test_models/test_full_battery_models/test_lithium_ion/test_Yang2017.py index 7bb321c22a..8dfe6a98ce 100644 --- a/tests/unit/test_models/test_full_battery_models/test_lithium_ion/test_Yang2017.py +++ b/tests/unit/test_models/test_full_battery_models/test_lithium_ion/test_Yang2017.py @@ -3,7 +3,6 @@ # import pybamm import unittest -import numpy as np class TestYang2017(unittest.TestCase): @@ -11,27 +10,6 @@ def test_well_posed(self): model = pybamm.lithium_ion.Yang2017() model.check_well_posedness() - def test_default_parameter_values(self): - model = pybamm.lithium_ion.Yang2017() - parameter_values = pybamm.ParameterValues( - { - "chemistry": "lithium_ion", - "cell": "LGM50_Chen2020", - "negative electrode": "graphite_Chen2020", - "separator": "separator_Chen2020", - "positive electrode": "nmc_Chen2020", - "electrolyte": "lipf6_Nyman2008", - "experiment": "1C_discharge_from_full_Chen2020", - "sei": "example", - "lithium plating": "okane2020_Li_plating", - } - ) - for key, value in parameter_values.items(): - if not isinstance(value, tuple): - np.testing.assert_array_equal( - value, model.default_parameter_values[key] - ) - if __name__ == "__main__": print("Add -v for more debug output") diff --git a/tests/unit/test_parameters/data/process_symbol_test_function.py b/tests/unit/test_parameters/data/process_symbol_test_function.py deleted file mode 100644 index 29bc56662f..0000000000 --- a/tests/unit/test_parameters/data/process_symbol_test_function.py +++ /dev/null @@ -1,11 +0,0 @@ -def process_symbol_test_function(var): - """ - This function tests process_symbol for Function nodes. - - Parameters - ---------- - var: numeric - Some variable - - """ - return 123 * var diff --git a/tests/unit/test_parameters/test_lead_acid_parameters.py b/tests/unit/test_parameters/test_lead_acid_parameters.py index 7a05e910d0..49e9d5d716 100644 --- a/tests/unit/test_parameters/test_lead_acid_parameters.py +++ b/tests/unit/test_parameters/test_lead_acid_parameters.py @@ -28,7 +28,6 @@ def test_parameters_defaults_lead_acid(self): parameters = pybamm.LeadAcidParameters() parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values param_eval = parameter_values.print_parameters(parameters) - param_eval = {k: v[0] for k, v in param_eval.items()} # Diffusional C-rate should be smaller than C-rate self.assertLess(param_eval["C_e"], param_eval["C_rate"]) @@ -140,7 +139,6 @@ def test_functions_lead_acid(self): # Process parameter_values = pybamm.ParameterValues("Sulzer2019") param_eval = parameter_values.print_parameters(parameters) - param_eval = {k: v[0] for k, v in param_eval.items()} # Known values for dimensionless functions self.assertEqual(param_eval["D_e_1"], 1) @@ -155,12 +153,10 @@ def test_update_initial_state_of_charge(self): parameters = pybamm.LeadAcidParameters() parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values param_eval = parameter_values.print_parameters(parameters) - param_eval = {k: v[0] for k, v in param_eval.items()} # Update initial state of charge parameter_values.update({"Initial State of Charge": 0.2}) param_eval_update = parameter_values.print_parameters(parameters) - param_eval_update = {k: v[0] for k, v in param_eval_update.items()} # Test that relevant parameters have changed as expected self.assertLess(param_eval_update["q_init"], param_eval["q_init"]) diff --git a/tests/unit/test_parameters/test_parameter_sets/test_LCO_Ai2020.py b/tests/unit/test_parameters/test_parameter_sets/test_LCO_Ai2020.py index f0a1105375..16ba011c03 100644 --- a/tests/unit/test_parameters/test_parameter_sets/test_LCO_Ai2020.py +++ b/tests/unit/test_parameters/test_parameter_sets/test_LCO_Ai2020.py @@ -3,100 +3,66 @@ # import pybamm import unittest -import os class TestAi2020(unittest.TestCase): - def test_load_params(self): - negative_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/" - "parameters.csv" - ) - ) - self.assertEqual(negative_electrode["Negative electrode porosity"], "0.33") - - positive_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/" - "parameters.csv" - ) - ) - self.assertEqual(positive_electrode["Positive electrode porosity"], "0.32") - - electrolyte = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/electrolytes/lipf6_Enertech_Ai2020/" - + "parameters.csv" - ) - ) - self.assertEqual(electrolyte["Cation transference number"], "0.38") - - cell = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/cells/Enertech_Ai2020/parameters.csv" - ) - ) - self.assertAlmostEqual(cell["Negative current collector thickness [m]"], 10e-6) - def test_functions(self): - root = pybamm.root_dir() param = pybamm.ParameterValues("Ai2020") sto = pybamm.Scalar(0.5) T = pybamm.Scalar(298.15) - # Positive electrode - p = "pybamm/input/parameters/lithium_ion/positive_electrodes/lico2_Ai2020/" - k_path = os.path.join(root, p) - c_p_max = param["Maximum concentration in positive electrode [mol.m-3]"] + c_n_max = param["Maximum concentration in negative electrode [mol.m-3]"] fun_test = { - "lico2_cracking_rate_Ai2020": ([T], 3.9e-20), - "lico2_diffusivity_Dualfoil1998": ([sto, T], 5.387e-15), - "lico2_electrolyte_exchange_current_density_Dualfoil1998": ( + # Positive electrode + "Positive electrode cracking rate": ([T], 3.9e-20), + "Positive electrode diffusivity [m2.s-1]": ([sto, T], 5.387e-15), + "Positive electrode exchange-current density [A.m-2]": ( [1e3, 1e4, c_p_max, T], 0.6098, ), - "lico2_entropic_change_Ai2020_function": ([sto, c_p_max], -2.1373e-4), - "lico2_ocp_Ai2020_function.py": ([sto], 4.1638), - "lico2_volume_change_Ai2020": ([sto, c_p_max], -1.8179e-2), - } - - for name, value in fun_test.items(): - fun = pybamm.load_function(os.path.join(k_path, name)) - self.assertAlmostEqual(param.evaluate(fun(*value[0])), value[1], places=4) - - # Negative electrode - p = "pybamm/input/parameters/lithium_ion/negative_electrodes/graphite_Ai2020/" - k_path = os.path.join(root, p) - - c_n_max = param["Maximum concentration in negative electrode [mol.m-3]"] - fun_test = { - "graphite_cracking_rate_Ai2020.py": ([T], 3.9e-20), - "graphite_diffusivity_Dualfoil1998.py": ([sto, T], 3.9e-14), - "graphite_electrolyte_exchange_current_density_Dualfoil1998.py": ( + "Positive electrode OCP entropic change [V.K-1]": ( + [sto, c_p_max], + -2.1373e-4, + ), + "Positive electrode volume change": ([sto, c_p_max], -1.8179e-2), + # Negative electrode + "Negative electrode cracking rate": ([T], 3.9e-20), + "Negative electrode diffusivity [m2.s-1]": ([sto, T], 3.9e-14), + "Negative electrode exchange-current density [A.m-2]": ( [1e3, 1e4, c_n_max, T], 0.4172, ), - "graphite_entropy_Enertech_Ai2020_function.py": ( + "Negative electrode OCP entropic change [V.K-1]": ( [sto, c_n_max], -1.1033e-4, ), - "graphite_ocp_Enertech_Ai2020_function.py": ([sto], 0.1395), - "graphite_volume_change_Ai2020.py": ([sto, c_n_max], 5.1921e-2), + "Negative electrode volume change": ([sto, c_n_max], 5.1921e-2), } for name, value in fun_test.items(): - fun = pybamm.load_function(os.path.join(k_path, name)) - self.assertAlmostEqual(param.evaluate(fun(*value[0])), value[1], places=4) + self.assertAlmostEqual( + param.evaluate(param[name](*value[0])), value[1], places=4 + ) def test_standard_lithium_parameters(self): - parameter_values = pybamm.ParameterValues("Ai2020") + # test with chemistry dictionary format, for coverage + parameter_values = pybamm.ParameterValues( + { + "chemistry": "lithium_ion", + "cell": "Enertech_Ai2020", + "negative electrode": "graphite_Ai2020", + "separator": "separator_Ai2020", + "positive electrode": "lico2_Ai2020", + "electrolyte": "lipf6_Enertech_Ai2020", + "experiment": "1C_discharge_from_full_Ai2020", + "sei": "example", + "citation": "Ai2019", + } + ) options = {"particle mechanics": "swelling and cracking"} model = pybamm.lithium_ion.DFN(options) - sim = pybamm.Simulation(model, parameter_values=parameter_values) - sim.set_parameters() - sim.build() + parameter_values.process_model(model) if __name__ == "__main__": diff --git a/tests/unit/test_parameters/test_parameter_sets/test_LCO_Ramadass2004.py b/tests/unit/test_parameters/test_parameter_sets/test_LCO_Ramadass2004.py index 3b3e75662b..761e4005b8 100644 --- a/tests/unit/test_parameters/test_parameter_sets/test_LCO_Ramadass2004.py +++ b/tests/unit/test_parameters/test_parameter_sets/test_LCO_Ramadass2004.py @@ -3,100 +3,45 @@ # import pybamm import unittest -import os class TestRamadass2004(unittest.TestCase): - def test_load_params(self): - negative_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/negative_electrodes/" - "graphite_Ramadass2004/parameters.csv" - ) - ) - self.assertEqual(negative_electrode["Negative electrode porosity"], "0.485") - - positive_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/positive_electrodes/lico2_Ramadass2004/" - "parameters.csv" - ) - ) - self.assertEqual(positive_electrode["Positive electrode porosity"], "0.385") - - electrolyte = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/electrolytes/lipf6_Ramadass2004/" - + "parameters.csv" - ) - ) - self.assertEqual(electrolyte["Cation transference number"], "0.363") - - cell = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/cells/sony_Ramadass2004/parameters.csv" - ) - ) - self.assertAlmostEqual( - cell["Negative current collector thickness [m]"], 1.7e-05 - ) - def test_functions(self): - root = pybamm.root_dir() param = pybamm.ParameterValues("Ramadass2004") sto = pybamm.Scalar(0.5) T = pybamm.Scalar(298.15) - # Positive electrode - p = ( - "pybamm/input/parameters/lithium_ion/positive_electrodes/" - "lico2_Ramadass2004/" - ) - k_path = os.path.join(root, p) - c_p_max = param["Maximum concentration in positive electrode [mol.m-3]"] + c_n_max = param["Maximum concentration in negative electrode [mol.m-3]"] fun_test = { - "lico2_diffusivity_Ramadass2004.py": ([sto, T], 1e-14), - "lico2_electrolyte_exchange_current_density_Ramadass2004.py": ( + # Positive electrode + "Positive electrode diffusivity [m2.s-1]": ([sto, T], 1e-14), + "Positive electrode exchange-current density [A.m-2]": ( [1e3, 1e4, c_p_max, T], 1.4517, ), - "lico2_entropic_change_Moura2016.py": ([sto, c_p_max], -3.4664e-5), - "lico2_ocp_Ramadass2004.py": ([sto], 4.1249), - } - - for name, value in fun_test.items(): - fun = pybamm.load_function(os.path.join(k_path, name)) - self.assertAlmostEqual(param.evaluate(fun(*value[0])), value[1], places=4) - - # Negative electrode - p = ( - "pybamm/input/parameters/lithium_ion/negative_electrodes/" - "graphite_Ramadass2004/" - ) - k_path = os.path.join(root, p) - - c_n_max = param["Maximum concentration in negative electrode [mol.m-3]"] - fun_test = { - "graphite_mcmb2528_diffusivity_Dualfoil1998.py": ([sto, T], 3.9e-14), - "graphite_electrolyte_exchange_current_density_Ramadass2004.py": ( + "Positive electrode OCP entropic change [V.K-1]": ( + [sto, c_p_max], + -3.4664e-5, + ), + "Positive electrode OCP [V]": ([sto], 4.1249), + # Negative electrode + "Negative electrode diffusivity [m2.s-1]": ([sto, T], 3.9e-14), + "Negative electrode exchange-current density [A.m-2]": ( [1e3, 1e4, c_n_max, T], 2.2007, ), - "graphite_entropic_change_Moura2016.py": ([sto, c_n_max], -1.5079e-5), - "graphite_ocp_Ramadass2004.py": ([sto], 0.1215), + "Negative electrode OCP entropic change [V.K-1]": ( + [sto, c_n_max], + -1.5079e-5, + ), + "Negative electrode OCP [V]": ([sto], 0.1215), } for name, value in fun_test.items(): - fun = pybamm.load_function(os.path.join(k_path, name)) - self.assertAlmostEqual(param.evaluate(fun(*value[0])), value[1], places=4) - - def test_standard_lithium_parameters(self): - parameter_values = pybamm.ParameterValues("Ramadass2004") - model = pybamm.lithium_ion.DFN() - sim = pybamm.Simulation(model, parameter_values=parameter_values) - sim.set_parameters() - sim.build() + self.assertAlmostEqual( + param.evaluate(param[name](*value[0])), value[1], places=4 + ) if __name__ == "__main__": diff --git a/tests/unit/test_parameters/test_parameter_sets/test_LFP_Prada2013.py b/tests/unit/test_parameters/test_parameter_sets/test_LFP_Prada2013.py deleted file mode 100644 index e8d9c62034..0000000000 --- a/tests/unit/test_parameters/test_parameter_sets/test_LFP_Prada2013.py +++ /dev/null @@ -1,44 +0,0 @@ -# -# Tests for LFP Prada 2013 parameter set -# -import pybamm -import unittest - - -class TestLFPPrada2013(unittest.TestCase): - def test_load_params(self): - positive_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/positive_electrodes/LFP_Prada2013/" - "parameters.csv" - ) - ) - self.assertEqual( - positive_electrode["Positive electrode porosity"], "0.12728395" - ) - - cell = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/cells/A123_Lain2019/parameters.csv" - ) - ) - self.assertAlmostEqual(cell["Negative current collector thickness [m]"], 1e-5) - - def test_standard_lithium_parameters(self): - - parameter_values = pybamm.ParameterValues("Prada2013") - - model = pybamm.lithium_ion.DFN() - sim = pybamm.Simulation(model, parameter_values=parameter_values) - sim.set_parameters() - sim.build() - - -if __name__ == "__main__": - print("Add -v for more debug output") - import sys - - if "-v" in sys.argv: - debug = True - pybamm.settings.debug_mode = True - unittest.main() diff --git a/tests/unit/test_parameters/test_parameter_sets/test_LGM50_Chen2020.py b/tests/unit/test_parameters/test_parameter_sets/test_LGM50_Chen2020.py deleted file mode 100644 index b9e01a4e33..0000000000 --- a/tests/unit/test_parameters/test_parameter_sets/test_LGM50_Chen2020.py +++ /dev/null @@ -1,72 +0,0 @@ -# -# Tests for LG M50 parameter set loads -# -import pybamm -import unittest - - -class TestChen(unittest.TestCase): - def test_load_params(self): - negative_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/negative_electrodes/graphite_Chen2020/" - "parameters.csv" - ) - ) - self.assertEqual(negative_electrode["Negative electrode porosity"], "0.25") - - positive_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/positive_electrodes/nmc_Chen2020/" - "parameters.csv" - ) - ) - self.assertEqual(positive_electrode["Positive electrode porosity"], "0.335") - - electrolyte = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/electrolytes/lipf6_Nyman2008/" - + "parameters.csv" - ) - ) - self.assertEqual(electrolyte["Cation transference number"], "0.2594") - - cell = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/cells/LGM50_Chen2020/parameters.csv" - ) - ) - self.assertAlmostEqual(cell["Negative current collector thickness [m]"], 12e-6) - - def test_standard_lithium_parameters(self): - - parameter_values = pybamm.ParameterValues("Chen2020") - - model = pybamm.lithium_ion.DFN() - sim = pybamm.Simulation(model, parameter_values=parameter_values) - sim.set_parameters() - sim.build() - - def test_standard_lithium_parameters_composite(self): - - parameter_values = pybamm.ParameterValues("Chen2020_composite") - - model = pybamm.lithium_ion.DFN( - { - "particle phases": ("2", "1"), - "open circuit potential": (("single", "current sigmoid"), "single"), - } - ) - sim = pybamm.Simulation(model, parameter_values=parameter_values) - sim.set_parameters() - sim.build() - - -if __name__ == "__main__": - print("Add -v for more debug output") - import sys - - if "-v" in sys.argv: - debug = True - pybamm.settings.debug_mode = True - unittest.main() diff --git a/tests/unit/test_parameters/test_parameter_sets/test_LGM50_ORegan2022.py b/tests/unit/test_parameters/test_parameter_sets/test_LGM50_ORegan2022.py index 87d7986b47..e4c1d44a8e 100644 --- a/tests/unit/test_parameters/test_parameter_sets/test_LGM50_ORegan2022.py +++ b/tests/unit/test_parameters/test_parameter_sets/test_LGM50_ORegan2022.py @@ -3,141 +3,73 @@ # import pybamm import unittest -import os class TestORegan2022(unittest.TestCase): - def test_load_params(self): - negative_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/negative_electrodes/graphite_ORegan2022/" - "parameters.csv" - ) - ) - self.assertEqual( - negative_electrode["Negative electrode diffusivity [m2.s-1]"], - "[function]graphite_LGM50_diffusivity_ORegan2022", - ) - - positive_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/" - "parameters.csv" - ) - ) - self.assertEqual( - positive_electrode["Positive electrode conductivity [S.m-1]"], - "[function]nmc_LGM50_electronic_conductivity_ORegan2022", - ) - - electrolyte = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/electrolytes/lipf6_EC_EMC_3_7_" - "Landesfeind2019/parameters.csv" - ) - ) - self.assertEqual( - electrolyte["Typical electrolyte concentration [mol.m-3]"], "1000" - ) - - cell = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/cells/LGM50_ORegan2022/parameters.csv" - ) - ) - self.assertEqual( - cell["Negative current collector thermal conductivity [W.m-1.K-1]"], - "[function]copper_thermal_conductivity_CRC", - ) - def test_functions(self): - root = pybamm.root_dir() param = pybamm.ParameterValues("ORegan2022") T = pybamm.Scalar(298.15) - # Positive electrode - p = "pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_ORegan2022/" - k_path = os.path.join(root, p) - c_p_max = param["Maximum concentration in positive electrode [mol.m-3]"] + c_n_max = param["Maximum concentration in negative electrode [mol.m-3]"] fun_test = { - "nmc_LGM50_entropic_change_ORegan2022.py": ([0.5, c_p_max], -9.7940e-07), - "nmc_LGM50_heat_capacity_ORegan2022.py": ([298.15], 902.6502), - "nmc_LGM50_diffusivity_ORegan2022.py": ([0.5, 298.15], 7.2627e-15), - "nmc_LGM50_electrolyte_exchange_current_density_ORegan2022.py": ( + # Positive electrode + "Positive electrode OCP entropic change [V.K-1]": ( + [0.5, c_p_max], + -9.7940e-07, + ), + "Positive electrode specific heat capacity [J.kg-1.K-1]": ( + [298.15], + 902.6502, + ), + "Positive electrode diffusivity [m2.s-1]": ([0.5, 298.15], 7.2627e-15), + "Positive electrode exchange-current density [A.m-2]": ( [1e3, 1e4, c_p_max, 298.15], 2.1939, ), - "nmc_LGM50_ocp_Chen2020.py": ([0.5], 3.9720), - "nmc_LGM50_electronic_conductivity_ORegan2022.py": ([298.15], 0.8473), - "nmc_LGM50_thermal_conductivity_ORegan2022.py": ([T], 0.8047), - } - - for name, value in fun_test.items(): - fun = pybamm.load_function(os.path.join(k_path, name)) - self.assertAlmostEqual(param.evaluate(fun(*value[0])), value[1], places=4) - - # Negative electrode - p = ( - "pybamm/input/parameters/lithium_ion/negative_electrodes/" - "graphite_ORegan2022/" - ) - k_path = os.path.join(root, p) - - c_n_max = param["Maximum concentration in negative electrode [mol.m-3]"] - fun_test = { - "graphite_LGM50_entropic_change_ORegan2022.py": ( + "Positive electrode OCP [V]": ([0.5], 3.9720), + "Positive electrode conductivity [S.m-1]": ([298.15], 0.8473), + "Positive electrode thermal conductivity [W.m-1.K-1]": ([T], 0.8047), + # Negative electrode + "Negative electrode OCP entropic change [V.K-1]": ( [0.5, c_n_max], -2.6460e-07, ), - "graphite_LGM50_heat_capacity_ORegan2022.py": ([298.15], 847.7155), - "graphite_LGM50_diffusivity_ORegan2022.py": ([0.5, 298.15], 2.8655e-16), - "graphite_LGM50_electrolyte_exchange_current_density_ORegan2022.py": ( + "Negative electrode specific heat capacity [J.kg-1.K-1]": ( + [298.15], + 847.7155, + ), + "Negative electrode diffusivity [m2.s-1]": ([0.5, 298.15], 2.8655e-16), + "Negative electrode exchange-current density [A.m-2]": ( [1e3, 1e4, c_n_max, 298.15], 1.0372, ), - "graphite_LGM50_ocp_Chen2020.py": ([0.5], 0.1331), - "graphite_LGM50_thermal_conductivity_ORegan2022.py": ([T], 3.7695), - } - - for name, value in fun_test.items(): - fun = pybamm.load_function(os.path.join(k_path, name)) - self.assertAlmostEqual(param.evaluate(fun(*value[0])), value[1], places=4) - - # Cells - p = "pybamm/input/parameters/lithium_ion/cells/LGM50_ORegan2022/" - k_path = os.path.join(root, p) - - fun_test = { - "aluminium_heat_capacity_CRC.py": ([T], 897.1585), - "copper_heat_capacity_CRC.py": ([T], 388.5190), - "copper_thermal_conductivity_CRC.py": ([T], 400.8491), - } - - for name, value in fun_test.items(): - fun = pybamm.load_function(os.path.join(k_path, name)) - self.assertAlmostEqual(param.evaluate(fun(*value[0])), value[1], places=4) - - # Separator - p = "pybamm/input/parameters/lithium_ion/separators/separator_ORegan2022/" - k_path = os.path.join(root, p) - - fun_test = { - "separator_LGM50_heat_capacity_ORegan2022.py": ([298.15], 1130.9656), + "Negative electrode OCP [V]": ([0.5], 0.1331), + "Negative electrode thermal conductivity [W.m-1.K-1]": ([T], 3.7695), + # Cells + "Positive current collector specific heat capacity [J.kg-1.K-1]": ( + [T], + 897.1585, + ), + "Negative current collector specific heat capacity [J.kg-1.K-1]": ( + [T], + 388.5190, + ), + "Negative current collector thermal conductivity [W.m-1.K-1]": ( + [T], + 400.8491, + ), + # Separator + "Separator specific heat capacity [J.kg-1.K-1]": ( + [298.15], + 1130.9656, + ), } for name, value in fun_test.items(): - fun = pybamm.load_function(os.path.join(k_path, name)) - self.assertAlmostEqual(param.evaluate(fun(*value[0])), value[1], places=4) - - def test_standard_lithium_parameters(self): - - parameter_values = pybamm.ParameterValues("ORegan2022") - - model = pybamm.lithium_ion.DFN() - sim = pybamm.Simulation(model, parameter_values=parameter_values) - sim.set_parameters() - sim.build() + self.assertAlmostEqual( + param.evaluate(param[name](*value[0])), value[1], places=4 + ) if __name__ == "__main__": diff --git a/tests/unit/test_parameters/test_parameter_sets/test_Landesfeind2019.py b/tests/unit/test_parameters/test_parameter_sets/test_Landesfeind2019.py index 6c8f276d39..83e17aa6de 100644 --- a/tests/unit/test_parameters/test_parameter_sets/test_Landesfeind2019.py +++ b/tests/unit/test_parameters/test_parameter_sets/test_Landesfeind2019.py @@ -35,7 +35,7 @@ def test_load_params(self): for solvent in ["EC_DMC_1_1", "EC_EMC_3_7", "EMC_FEC_19_1"]: root = pybamm.root_dir() p = ( - "pybamm/input/parameters/lithium_ion/electrolytes/lipf6_" + "pybamm/input/parameters/lithium_ion/testing_only/electrolytes/lipf6_" + solvent + "_Landesfeind2019/" ) @@ -78,16 +78,6 @@ def test_load_params(self): tplus(c[i], T[i]), data_tplus[solvent][i], places=5 ) - def test_standard_lithium_parameters(self): - for solvent in ["EC_DMC_1_1", "EC_EMC_3_7", "EMC_FEC_19_1"]: - chemistry = pybamm.parameter_sets.Chen2020 - chemistry["electrolyte"] = "lipf6_" + solvent + "_Landesfeind2019" - parameter_values = pybamm.ParameterValues(chemistry) - model = pybamm.lithium_ion.DFN() - sim = pybamm.Simulation(model, parameter_values=parameter_values) - sim.set_parameters() - sim.build() - if __name__ == "__main__": print("Add -v for more debug output") diff --git a/tests/unit/test_parameters/test_parameter_sets/test_NCA_Kim2011.py b/tests/unit/test_parameters/test_parameter_sets/test_NCA_Kim2011.py deleted file mode 100644 index c907ca2312..0000000000 --- a/tests/unit/test_parameters/test_parameter_sets/test_NCA_Kim2011.py +++ /dev/null @@ -1,59 +0,0 @@ -# -# Tests for NCA parameter set loads -# -import pybamm -import unittest - - -class TestKim(unittest.TestCase): - def test_load_params(self): - negative_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/negative_electrodes/graphite_Kim2011/" - "parameters.csv" - ) - ) - self.assertEqual(negative_electrode["Negative electrode porosity"], "0.4") - - positive_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/positive_electrodes/nca_Kim2011/" - "parameters.csv" - ) - ) - self.assertEqual(positive_electrode["Positive electrode porosity"], "0.4") - - electrolyte = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/electrolytes/lipf6_Kim2011/parameters.csv" - ) - ) - self.assertEqual(electrolyte["Cation transference number"], "0.4") - - cell = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/cells/Kim2011/parameters.csv" - ) - ) - self.assertAlmostEqual( - cell["Negative current collector thickness [m]"], 10 ** (-5) - ) - - def test_standard_lithium_parameters(self): - - parameter_values = pybamm.ParameterValues("NCA_Kim2011") - - model = pybamm.lithium_ion.DFN() - sim = pybamm.Simulation(model, parameter_values=parameter_values) - sim.set_parameters() - sim.build() - - -if __name__ == "__main__": - print("Add -v for more debug output") - import sys - - if "-v" in sys.argv: - debug = True - pybamm.settings.debug_mode = True - unittest.main() diff --git a/tests/unit/test_parameters/test_parameter_sets/test_NCO_Ecker2015.py b/tests/unit/test_parameters/test_parameter_sets/test_NCO_Ecker2015.py deleted file mode 100644 index 75e87de580..0000000000 --- a/tests/unit/test_parameters/test_parameter_sets/test_NCO_Ecker2015.py +++ /dev/null @@ -1,61 +0,0 @@ -# -# Tests for Ecker parameter set -# -import pybamm -import unittest - - -class TestEcker(unittest.TestCase): - def test_load_params(self): - negative_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/negative_electrodes/graphite_Ecker2015/" - "parameters.csv" - ) - ) - self.assertEqual(negative_electrode["Negative electrode porosity"], "0.329") - - path = ( - "input/parameters/lithium_ion/positive_electrodes/LiNiCoO2_Ecker2015/" - "parameters.csv" - ) - positive_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath(path) - ) - self.assertEqual( - positive_electrode["Positive electrode conductivity [S.m-1]"], "68.1" - ) - - electrolyte = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/electrolytes/lipf6_Ecker2015/" - + "parameters.csv" - ) - ) - self.assertEqual(electrolyte["Cation transference number"], "0.26") - - cell = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/cells/kokam_Ecker2015/parameters.csv" - ) - ) - self.assertAlmostEqual(cell["Negative current collector thickness [m]"], 14e-6) - - def test_standard_lithium_parameters(self): - - parameter_values = pybamm.ParameterValues("Ecker2015") - - model = pybamm.lithium_ion.DFN() - sim = pybamm.Simulation(model, parameter_values=parameter_values) - sim.set_parameters() - sim.build() - - -if __name__ == "__main__": - print("Add -v for more debug output") - import sys - - if "-v" in sys.argv: - debug = True - pybamm.settings.debug_mode = True - unittest.main() diff --git a/tests/unit/test_parameters/test_parameter_sets/test_NMChalfcell_Xu2019.py b/tests/unit/test_parameters/test_parameter_sets/test_NMChalfcell_Xu2019.py deleted file mode 100644 index a68016eca1..0000000000 --- a/tests/unit/test_parameters/test_parameter_sets/test_NMChalfcell_Xu2019.py +++ /dev/null @@ -1,61 +0,0 @@ -# -# Tests for LG M50 parameter set loads -# -import pybamm -import unittest - - -class TestXu(unittest.TestCase): - def test_load_params(self): - negative_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/negative_electrodes/li_metal_Xu2019/" - "parameters.csv" - ) - ) - self.assertEqual( - negative_electrode["Typical plated lithium concentration [mol.m-3]"], - "76900", - ) - - positive_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/positive_electrodes/NMC532_Xu2019/" - "parameters.csv" - ) - ) - self.assertEqual(positive_electrode["Positive electrode porosity"], "0.331") - - electrolyte = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/electrolytes/lipf6_Valoen2005/" - + "parameters.csv" - ) - ) - self.assertEqual(electrolyte["Cation transference number"], "0.38") - - cell = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/cells/li_metal_Xu2019/parameters.csv" - ) - ) - self.assertAlmostEqual(cell["Negative electrode thickness [m]"], 700e-6) - - def test_standard_lithium_parameters(self): - - parameter_values = pybamm.ParameterValues("Xu2019") - - model = pybamm.lithium_ion.BasicDFNHalfCell({"working electrode": "positive"}) - sim = pybamm.Simulation(model, parameter_values=parameter_values) - sim.set_parameters() - sim.build() - - -if __name__ == "__main__": - print("Add -v for more debug output") - import sys - - if "-v" in sys.argv: - debug = True - pybamm.settings.debug_mode = True - unittest.main() diff --git a/tests/unit/test_parameters/test_parameter_sets/test_OKane2020.py b/tests/unit/test_parameters/test_parameter_sets/test_OKane2020.py deleted file mode 100644 index b1a42451f7..0000000000 --- a/tests/unit/test_parameters/test_parameter_sets/test_OKane2020.py +++ /dev/null @@ -1,60 +0,0 @@ -# -# Tests for O'Kane (2020) parameter set -# -import pybamm -import unittest -import os - - -class TestOKane2020(unittest.TestCase): - def test_load_params(self): - Li_plating = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/" - "parameters.csv" - ) - ) - self.assertEqual( - Li_plating["Lithium metal partial molar volume [m3.mol-1]"], "1.30E-05" - ) - - def test_functions(self): - root = pybamm.root_dir() - param = pybamm.ParameterValues( - { - "chemistry": "lithium_ion", - "cell": "LGM50_Chen2020", - "negative electrode": "graphite_Chen2020", - "separator": "separator_Chen2020", - "positive electrode": "nmc_Chen2020", - "electrolyte": "lipf6_Nyman2008", - "experiment": "1C_discharge_from_full_Chen2020", - "lithium plating": "okane2020_Li_plating", - } - ) - T = pybamm.Scalar(298.15) - - p = "pybamm/input/parameters/lithium_ion/lithium_platings/okane2020_Li_plating/" - k_path = os.path.join(root, p) - - fun_test = { - "plating_exchange_current_density_OKane2020.py": ([1e3, 1e4, T], 9.6485e-3), - "stripping_exchange_current_density_OKane2020.py": ( - [1e3, 1e4, T], - 9.6485e-2, - ), - } - - for name, value in fun_test.items(): - fun = pybamm.load_function(os.path.join(k_path, name)) - self.assertAlmostEqual(param.evaluate(fun(*value[0])), value[1], places=4) - - -if __name__ == "__main__": - print("Add -v for more debug output") - import sys - - if "-v" in sys.argv: - debug = True - pybamm.settings.debug_mode = True - unittest.main() diff --git a/tests/unit/test_parameters/test_parameter_sets/test_OKane2022.py b/tests/unit/test_parameters/test_parameter_sets/test_OKane2022.py index 724eb2857f..54452592a7 100644 --- a/tests/unit/test_parameters/test_parameter_sets/test_OKane2022.py +++ b/tests/unit/test_parameters/test_parameter_sets/test_OKane2022.py @@ -3,84 +3,45 @@ # import pybamm import unittest -import os class TestOKane2022(unittest.TestCase): - def test_load_params(self): - Li_plating = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/" - "parameters.csv" - ) - ) - self.assertEqual( - Li_plating["Lithium metal partial molar volume [m3.mol-1]"], "1.30E-05" - ) - def test_functions(self): - root = pybamm.root_dir() param = pybamm.ParameterValues("OKane2022") sto = pybamm.Scalar(0.9) T = pybamm.Scalar(298.15) - # Lithium plating - p = "pybamm/input/parameters/lithium_ion/lithium_platings/okane2022_Li_plating/" - k_path = os.path.join(root, p) - fun_test = { - "plating_exchange_current_density_OKane2020.py": ([1e3, 1e4, T], 9.6485e-2), - "stripping_exchange_current_density_OKane2020.py": ( + # Lithium plating + "Exchange-current density for plating [A.m-2]": ([1e3, 1e4, T], 9.6485e-2), + "Exchange-current density for stripping [A.m-2]": ( [1e3, 1e4, T], 9.6485e-1, ), - "SEI_limited_dead_lithium_OKane2022.py": ([1e-8], 5e-7), - } - - for name, value in fun_test.items(): - fun = pybamm.load_function(os.path.join(k_path, name)) - self.assertAlmostEqual(param.evaluate(fun(*value[0])), value[1], places=4) - - # Negative electrode - p = ( - "pybamm/input/parameters/lithium_ion/negative_electrodes/" - "graphite_OKane2022/" - ) - k_path = os.path.join(root, p) - - fun_test = { - "graphite_LGM50_diffusivity_Chen2020.py": ([sto, T], 3.3e-14), - "graphite_LGM50_electrolyte_exchange_current_density_Chen2020.py": ( + "Dead lithium decay rate [s-1]": ([1e-8], 5e-7), + # Negative electrode + "Negative electrode diffusivity [m2.s-1]": ([sto, T], 3.3e-14), + "Negative electrode exchange-current density [A.m-2]": ( [1000, 16566.5, 33133, T], 0.33947, ), - "graphite_LGM50_ocp_Chen2020.py": ([sto], 0.0861), - "graphite_cracking_rate_Ai2020.py": ([T], 3.9e-20), - "graphite_volume_change_Ai2020.py": ([sto, 33133], 0.0897), - } - - for name, value in fun_test.items(): - fun = pybamm.load_function(os.path.join(k_path, name)) - self.assertAlmostEqual(param.evaluate(fun(*value[0])), value[1], places=4) - - # Positive electrode - p = "pybamm/input/parameters/lithium_ion/positive_electrodes/nmc_OKane2022/" - k_path = os.path.join(root, p) - - fun_test = { - "nmc_LGM50_diffusivity_Chen2020.py": ([sto, T], 4e-15), - "nmc_LGM50_electrolyte_exchange_current_density_Chen2020.py": ( + "Negative electrode cracking rate": ([T], 3.9e-20), + "Negative electrode volume change": ([sto, 33133], 0.0897), + # Positive electrode + "Positive electrode diffusivity [m2.s-1]": ([sto, T], 4e-15), + "Positive electrode exchange-current density [A.m-2]": ( [1000, 31552, 63104, T], 3.4123, ), - "nmc_LGM50_ocp_Chen2020.py": ([sto], 3.5682), - "cracking_rate_Ai2020.py": ([T], 3.9e-20), - "volume_change_Ai2020.py": ([sto, 63104], 0.70992), + "Positive electrode OCP [V]": ([sto], 3.5682), + "Positive electrode cracking rate": ([T], 3.9e-20), + "Positive electrode volume change": ([sto, 63104], 0.70992), } for name, value in fun_test.items(): - fun = pybamm.load_function(os.path.join(k_path, name)) - self.assertAlmostEqual(param.evaluate(fun(*value[0])), value[1], places=4) + self.assertAlmostEqual( + param.evaluate(param[name](*value[0])), value[1], places=4 + ) if __name__ == "__main__": diff --git a/tests/unit/test_parameters/test_parameter_sets/test_UMBL_Mohtat2020.py b/tests/unit/test_parameters/test_parameter_sets/test_UMBL_Mohtat2020.py deleted file mode 100644 index c9ec41cb28..0000000000 --- a/tests/unit/test_parameters/test_parameter_sets/test_UMBL_Mohtat2020.py +++ /dev/null @@ -1,60 +0,0 @@ -# -# Tests for LG M50 parameter set loads -# -import pybamm -import unittest - - -class TestMohtat(unittest.TestCase): - def test_load_params(self): - negative_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/" - + "negative_electrodes/graphite_UMBL_Mohtat2020/parameters.csv" - ) - ) - self.assertEqual(negative_electrode["Negative electrode porosity"], "0.3") - - positive_electrode = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/" - + "positive_electrodes/NMC_UMBL_Mohtat2020/parameters.csv" - ) - ) - self.assertEqual(positive_electrode["Positive electrode porosity"], "0.3") - - electrolyte = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/electrolytes/LiPF6_Mohtat2020/" - + "parameters.csv" - ) - ) - self.assertEqual(electrolyte["Cation transference number"], "0.38") - - cell = pybamm.ParameterValues({}).read_parameters_csv( - pybamm.get_parameters_filepath( - "input/parameters/lithium_ion/cells/UMBL_Mohtat2020/parameters.csv" - ) - ) - self.assertAlmostEqual( - cell["Negative current collector thickness [m]"], 2.5e-05 - ) - - def test_standard_lithium_parameters(self): - - parameter_values = pybamm.ParameterValues("Mohtat2020") - - model = pybamm.lithium_ion.DFN() - sim = pybamm.Simulation(model, parameter_values=parameter_values) - sim.set_parameters() - sim.build() - - -if __name__ == "__main__": - print("Add -v for more debug output") - import sys - - if "-v" in sys.argv: - debug = True - pybamm.settings.debug_mode = True - unittest.main() diff --git a/tests/unit/test_parameters/test_parameter_sets/test_parameters_with_default_models.py b/tests/unit/test_parameters/test_parameter_sets/test_parameters_with_default_models.py new file mode 100644 index 0000000000..f78be45427 --- /dev/null +++ b/tests/unit/test_parameters/test_parameter_sets/test_parameters_with_default_models.py @@ -0,0 +1,50 @@ +# +# Tests each parameter set with the standard model associated with that parameter set +# +import pybamm +import unittest + + +class TestParameterValuesWithModel(unittest.TestCase): + def test_parameter_values_with_model(self): + param_to_model = { + "Ai2020": pybamm.lithium_ion.DFN( + {"particle mechanics": "swelling and cracking"} + ), + "Chen2020": pybamm.lithium_ion.DFN(), + "Chen2020_composite": pybamm.lithium_ion.DFN( + { + "particle phases": ("2", "1"), + "open circuit potential": (("single", "current sigmoid"), "single"), + } + ), + "Ecker2015": pybamm.lithium_ion.DFN(), + "Mohtat2020": pybamm.lithium_ion.DFN(), + "NCA_Kim2011": pybamm.lithium_ion.DFN(), + "OKane2022": pybamm.lithium_ion.DFN( + { + "SEI": "solvent-diffusion limited", + "lithium plating": "partially reversible", + } + ), + "ORegan2022": pybamm.lithium_ion.DFN(), + "Prada2013": pybamm.lithium_ion.DFN(), + "Ramadass2004": pybamm.lithium_ion.DFN(), + "Xu2019": pybamm.lithium_ion.DFN({"working electrode": "positive"}), + } + + # Loop over each parameter set, testing that parameters can be set + for param, model in param_to_model.items(): + with self.subTest(param=param): + parameter_values = pybamm.ParameterValues(param) + parameter_values.process_model(model) + + +if __name__ == "__main__": + print("Add -v for more debug output") + import sys + + if "-v" in sys.argv: + debug = True + pybamm.settings.debug_mode = True + unittest.main() diff --git a/tests/unit/test_parameters/test_parameter_sets_class.py b/tests/unit/test_parameters/test_parameter_sets_class.py new file mode 100644 index 0000000000..42107e84c0 --- /dev/null +++ b/tests/unit/test_parameters/test_parameter_sets_class.py @@ -0,0 +1,24 @@ +# +# Tests for the ParameterSets class +# + +import pybamm + +import unittest + + +class TestParameterSets(unittest.TestCase): + def test_parameter_sets(self): + self.assertEqual(pybamm.parameter_sets.Marquis2019, "Marquis2019") + with self.assertRaises(AttributeError): + pybamm.parameter_sets.not_a_real_parameter_set + + +if __name__ == "__main__": + print("Add -v for more debug output") + import sys + + if "-v" in sys.argv: + debug = True + pybamm.settings.debug_mode = True + unittest.main() diff --git a/tests/unit/test_parameters/test_parameter_values.py b/tests/unit/test_parameters/test_parameter_values.py index 3ab5f613af..3e063dd16c 100644 --- a/tests/unit/test_parameters/test_parameter_values.py +++ b/tests/unit/test_parameters/test_parameter_values.py @@ -5,25 +5,22 @@ import os import tempfile import shutil -import subprocess import unittest +import inspect +import importlib import numpy as np import pandas as pd import pybamm import tests.shared as shared +from pybamm.input.parameters.lithium_ion.Marquis2019 import ( + lico2_ocp_Dualfoil1998, + lico2_diffusivity_Dualfoil1998, +) class TestParameterValues(unittest.TestCase): - def tearDown(self): - # Make sure the local lithium_ion directory is removed - try: - shutil.rmtree("lithium_ion") - except FileNotFoundError: - pass - return super().tearDown() - def test_find_parameter(self): f = tempfile.NamedTemporaryFile() pybamm.PARAMETER_PATH.append(tempfile.gettempdir()) @@ -31,6 +28,9 @@ def test_find_parameter(self): tempfile_name = os.path.basename(f.name) self.assertEqual(pybamm.ParameterValues.find_parameter(tempfile_name), f.name) + with self.assertRaisesRegex(FileNotFoundError, "Could not find parameter"): + pybamm.ParameterValues.find_parameter("not_a_file") + def test_read_parameters_csv(self): data = pybamm.ParameterValues({}).read_parameters_csv( os.path.join( @@ -39,12 +39,13 @@ def test_read_parameters_csv(self): "input", "parameters", "lithium_ion", + "testing_only", "positive_electrodes", - "lico2_Marquis2019", + "lico2_Ai2020", "parameters.csv", ) ) - self.assertEqual(data["Positive electrode porosity"], "0.3") + self.assertEqual(data["Positive electrode porosity"], "0.32") def test_init(self): # from dict @@ -56,9 +57,9 @@ def test_init(self): # from file param = pybamm.ParameterValues( - "lithium_ion/positive_electrodes/lico2_Marquis2019/" + "parameters.csv" + "lithium_ion/testing_only/positive_electrodes/lico2_Ai2020/parameters.csv" ) - self.assertEqual(param["Positive electrode porosity"], 0.3) + self.assertEqual(param["Positive electrode porosity"], 0.32) # from file, absolute path param = pybamm.ParameterValues( @@ -67,10 +68,14 @@ def test_init(self): "pybamm", "input", "parameters", - "lithium_ion/positive_electrodes/lico2_Marquis2019/parameters.csv", + "lithium_ion", + "testing_only", + "positive_electrodes", + "lico2_Ai2020", + "parameters.csv", ) ) - self.assertEqual(param["Positive electrode porosity"], 0.3) + self.assertEqual(param["Positive electrode porosity"], 0.32) # values vs chemistry with self.assertRaisesRegex( @@ -95,24 +100,14 @@ def test_eq(self): def test_update_from_chemistry(self): # incomplete chemistry with self.assertRaisesRegex(KeyError, "must provide 'cell' parameters"): - pybamm.ParameterValues({"chemistry": "lithium_ion"}) - - def test_update_from_chemistry_local(self): - # Copy parameters - cmd = ["pybamm_edit_parameter", "-f", "lithium_ion"] - subprocess.run(cmd) - - # Import parameters from chemistry - pybamm.ParameterValues("Chen2020") - - # Clean up parameter files - shutil.rmtree("lithium_ion") + pybamm.ParameterValues(chemistry={"chemistry": "lithium_ion"}) def test_update(self): # converts to dict if not - param = pybamm.ParameterValues("Chen2020") + param = pybamm.ParameterValues("Ai2020") param_from_csv = pybamm.ParameterValues( - "lithium_ion/negative_electrodes/graphite_Chen2020/parameters.csv" + "lithium_ion/testing_only/" + "negative_electrodes/graphite_Ai2020/parameters.csv" ) param.update(param_from_csv) # equate values @@ -330,18 +325,13 @@ def test_process_input_parameter(self): self.assertEqual(processed_c.evaluate(inputs={"c": 5}), 10) def test_process_function_parameter(self): + def test_function(var): + return 123 * var + parameter_values = pybamm.ParameterValues( { "a": 3, - "func": pybamm.load_function( - os.path.join( - "tests", - "unit", - "test_parameters", - "data", - "process_symbol_test_function.py", - ) - ), + "func": test_function, "const": 254, "float_func": lambda x: 42, "mult": pybamm.InputParameter("b") * 5, @@ -575,20 +565,16 @@ def test_process_interpolant_2d(self): ) def test_interpolant_against_function(self): - parameter_values = pybamm.ParameterValues({}) + parameter_values = pybamm.ParameterValues({"function": lico2_ocp_Dualfoil1998}) parameter_values.update( - { - "function": "[function]lico2_ocp_Dualfoil1998", - "interpolation": "[data]lico2_data_example", - }, + {"interpolation": "[data]lico2_data_example"}, path=os.path.join( pybamm.root_dir(), "pybamm", "input", "parameters", "lithium_ion", - "positive_electrodes", - "lico2_Marquis2019", + "data", ), check_already_exists=False, ) @@ -613,42 +599,14 @@ def test_interpolant_against_function(self): ) def test_interpolant_2d_from_json(self): - - # pv = pybamm.ParameterValues({'interpolation': 0.0, 'function': 0.0}) - # - # pv['interpolation'] = \ - # '[2D data]../tests/unit/test_parameters/lico2_diffusivity_Dualfoil1998_2D' - # - # pv['function'] = '[function]' - parameter_values = pybamm.ParameterValues( - chemistry=pybamm.parameter_sets.Ai2020 - ) - parameter_values.update( - { - "function": "[function]lico2_diffusivity_Dualfoil1998", - }, - path=os.path.join( - pybamm.root_dir(), - "pybamm", - "input", - "parameters", - "lithium_ion", - "positive_electrodes", - "lico2_Ai2020", - ), - check_already_exists=False, + {"function": lico2_diffusivity_Dualfoil1998} ) parameter_values.update( { "interpolation": "[2D data]lico2_diffusivity_Dualfoil1998_2D", }, - path=os.path.join( - pybamm.root_dir(), - "tests", - "unit", - "test_parameters", - ), + path=os.path.join(pybamm.root_dir(), "tests", "unit", "test_parameters"), check_already_exists=False, ) @@ -1002,6 +960,70 @@ def some_function(self): self.assertEqual(df[1]["b"], "[function]some_function") self.assertEqual(df[1]["c"], "[data]some_data") + def test_export_python_script(self): + parameter_values = pybamm.ParameterValues( + { + "chemistry": "lithium_ion", + "cell": "Enertech_Ai2020", + "negative electrode": "graphite_Ai2020", + "separator": "separator_Ai2020", + "positive electrode": "lico2_Ai2020", + "electrolyte": "lipf6_Enertech_Ai2020", + "experiment": "1C_discharge_from_full_Ai2020", + "sei": "example", + "citation": "Ai2019", + } + ) + parameter_values.export_python_script( + "Ai2020_test", + old_parameters_path=os.path.join( + pybamm.root_dir(), + "pybamm", + "input", + "parameters", + "lithium_ion", + "testing_only", + ), + ) + + # test that loading the parameter set works + module = importlib.import_module("Ai2020_test") + function = getattr(module, "get_parameter_values") + new_parameter_values = pybamm.ParameterValues(function()) + + # Parameters should be the same + self.assertEqual( + new_parameter_values["Negative particle radius [m]"], + parameter_values["Negative particle radius [m]"], + ) + + # Functions should be the same, except without 'pybamm.' + self.assertEqual( + inspect.getsource( + new_parameter_values[ + "Negative electrode exchange-current density [A.m-2]" + ] + ).replace(" pybamm.", " "), + inspect.getsource( + parameter_values["Negative electrode exchange-current density [A.m-2]"] + ), + ) + # Data should be the same + np.testing.assert_array_equal( + new_parameter_values["Negative electrode OCP [V]"][1][0], + parameter_values["Negative electrode OCP [V]"][1][0], + ) + np.testing.assert_array_equal( + new_parameter_values["Negative electrode OCP [V]"][1][1], + parameter_values["Negative electrode OCP [V]"][1][1], + ) + + # remove the file + filename = os.path.join("Ai2020_test.py") + if os.path.exists(filename): + os.remove(filename) + shutil.rmtree("data") + if __name__ == "__main__": print("Add -v for more debug output") diff --git a/tests/unit/test_parameters/test_parameters_cli.py b/tests/unit/test_parameters/test_parameters_cli.py index 0f916d7c37..27a5c5db54 100644 --- a/tests/unit/test_parameters/test_parameters_cli.py +++ b/tests/unit/test_parameters/test_parameters_cli.py @@ -3,119 +3,18 @@ # command line interface # -import os -import subprocess import pybamm -import csv -import tempfile import unittest -import platform -@unittest.skipIf(platform.system() == "Windows", "Skipped for Windows") class TestParametersCLI(unittest.TestCase): - def test_add_rm_param(self): - # Read a parameter file thta is shipped with PyBaMM - param_pkg_dir = os.path.join(pybamm.__path__[0], "input", "parameters") - param_filename = os.path.join( - param_pkg_dir, - "lithium_ion", - "negative_electrodes", - "graphite_mcmb2528_Marquis2019", - "parameters.csv", - ) - - negative_electrode = pybamm.ParameterValues({}).read_parameters_csv( - param_filename - ) - - # Write these parameters in current working dir. to mimic - # user-defined parameters - tempdir = tempfile.TemporaryDirectory() - new_parameter_file = os.path.join(tempdir.name, "parameters.csv") - with open(new_parameter_file, "w", newline="") as csvfile: - fieldnames = ["Name [units]", "Value"] - writer = csv.writer(csvfile) - writer.writerow(fieldnames) - for row in negative_electrode.items(): - writer.writerow(row) - - # Use pybamm command line to add new parameters under - # test_parameters_dir directory - cmd = [ - "pybamm_add_parameter", - "-f", - tempdir.name, - "lithium_ion", - "negative_electrodes", - ] - subprocess.run(cmd, check=True) - - # Check that the new parameters can be accessed from the package - # and that content is correct - new_parameter_filename = os.path.join( - param_pkg_dir, - "lithium_ion", - "negative_electrodes", - os.path.basename(tempdir.name), - "parameters.csv", - ) - self.assertTrue(os.path.isfile(new_parameter_filename)) - - new_negative_electrode = pybamm.ParameterValues({}).read_parameters_csv( - new_parameter_filename - ) - self.assertEqual(new_negative_electrode["Negative electrode porosity"], "0.3") - - # Now delete added parameter - cmd = [ - "pybamm_rm_parameter", - "-f", - tempdir.name, - "lithium_ion", - "negative_electrodes", - ] - subprocess.run(cmd, check=True) - self.assertFalse(os.path.isfile(new_parameter_filename)) - - # Clean up directories - tempdir.cleanup() # Remove temporary local directory - - def test_edit_param(self): - negative_electrodes_dir = os.path.join( - "input", "parameters", "lithium_ion", "negative_electrodes" - ) - chemistry = "lithium_ion" - # Write dummy parameters.csv file in temporary directory - # in package input dir - tempdir = tempfile.TemporaryDirectory( - dir=os.path.join(pybamm.__path__[0], negative_electrodes_dir) - ) - with open(os.path.join(tempdir.name, "parameters.csv"), "w") as f: - f.write("hello") - - # Create a temporary directory to perform this test in isolation - sandbox_dir = tempfile.TemporaryDirectory() - - # Copy temporary dir in package to current working directory - cmd = ["pybamm_edit_parameter", "-f", chemistry] - subprocess.run(cmd, cwd=sandbox_dir.name) - - # Read and compare copied parameters.csv file - copied_path_parameters_file = os.path.join( - sandbox_dir.name, - chemistry, - "negative_electrodes", - os.path.basename(tempdir.name), - "parameters.csv", - ) - with open(copied_path_parameters_file, "r") as f: - content = f.read() - self.assertTrue(content == "hello") - - # Clean up temporary dicts - sandbox_dir.cleanup() - tempdir.cleanup() + def test_error(self): + with self.assertRaisesRegex(NotImplementedError, "deprecated"): + pybamm.add_parameter() + with self.assertRaisesRegex(NotImplementedError, "deprecated"): + pybamm.edit_parameter() + with self.assertRaisesRegex(NotImplementedError, "deprecated"): + pybamm.remove_parameter() if __name__ == "__main__": diff --git a/tests/unit/test_parameters/test_process_parameter_data.py b/tests/unit/test_parameters/test_process_parameter_data.py new file mode 100644 index 0000000000..ade04af7d4 --- /dev/null +++ b/tests/unit/test_parameters/test_process_parameter_data.py @@ -0,0 +1,51 @@ +# +# Tests for the parameter processing functions +# + +import os +import numpy as np +import pybamm + +import unittest + + +class TestProcessParameterData(unittest.TestCase): + def test_process_1D_data(self): + name = "lico2_data_example" + path = os.path.join( + pybamm.root_dir(), + "pybamm", + "input", + "parameters", + "lithium_ion", + "data", + ) + processed = pybamm.parameters.process_1D_data(name, path) + self.assertEqual(processed[0], name) + self.assertIsInstance(processed[1], tuple) + self.assertIsInstance(processed[1][0][0], np.ndarray) + self.assertIsInstance(processed[1][1], np.ndarray) + + def test_process_2D_data(self): + name = "lico2_diffusivity_Dualfoil1998_2D" + path = os.path.join(pybamm.root_dir(), "tests", "unit", "test_parameters") + processed = pybamm.parameters.process_2D_data(name, path) + self.assertEqual(processed[0], name) + self.assertIsInstance(processed[1], tuple) + self.assertIsInstance(processed[1][0][0], np.ndarray) + self.assertIsInstance(processed[1][0][1], np.ndarray) + self.assertIsInstance(processed[1][1], np.ndarray) + + def test_error(self): + with self.assertRaisesRegex(FileNotFoundError, "Could not find file"): + pybamm.parameters.process_1D_data("not_a_real_file", "not_a_real_path") + + +if __name__ == "__main__": + print("Add -v for more debug output") + import sys + + if "-v" in sys.argv: + debug = True + pybamm.settings.debug_mode = True + unittest.main() diff --git a/tests/unit/test_parameters/test_update_parameter_sets_doc.py b/tests/unit/test_parameters/test_update_parameter_sets_doc.py index 996234b746..ab17c66de3 100644 --- a/tests/unit/test_parameters/test_update_parameter_sets_doc.py +++ b/tests/unit/test_parameters/test_update_parameter_sets_doc.py @@ -7,8 +7,7 @@ DOC = """ -Parameter sets from papers. The 'citation' entry provides a reference to the appropriate -paper in the file "pybamm/CITATIONS.txt". To see which parameter sets have been used in +Parameter sets from papers. To see which parameter sets have been used in your simulation, add the line "pybamm.print_citations()" to your script. Lead-acid parameter sets @@ -29,6 +28,9 @@ - Michael J. Lain, James Brandon, and Emma Kendrick. Design strategies for high power vs. high energy lithium ion cells. Batteries, 5(4):64, 2019. doi:10.3390/batteries5040064. + - Andreas Nyman, Mårten Behm, and Göran Lindbergh. Electrochemical + characterisation and modelling of the mass transport phenomena in lipf6–ec–emc + electrolyte. Electrochimica Acta, 53(22):6356–6365, 2008. - Eric Prada, D. Di Domenico, Y. Creff, J. Bernard, Valérie Sauvant-Moynot, and François Huet. A simplified electrochemical and thermal aging model of LiFePO4-graphite Li-ion batteries: power and capacity fade simulations. Journal @@ -37,7 +39,7 @@ AUTHOR_YEAR_DICT = { "lithium_ion": [ - ("Prada2013", ["Chen2020", "Lain2019", "Prada2013"]), + ("Prada2013", ["Chen2020", "Lain2019", "Prada2013", "Nyman2008"]), ], "lead_acid": [("Sulzer2019", ["Sulzer2019physical"])], } diff --git a/tests/unit/test_util.py b/tests/unit/test_util.py index d8b9810b1e..cb77637fe5 100644 --- a/tests/unit/test_util.py +++ b/tests/unit/test_util.py @@ -4,20 +4,11 @@ import numpy as np import os import pybamm -import shutil import tempfile import unittest -import importlib -import subprocess from unittest.mock import patch from io import StringIO -# Insert .../x/y/z/PyBaMM in sys.path when running this file individually -import sys - -if os.getcwd() not in sys.path: - sys.path.insert(0, os.getcwd()) - class TestUtil(unittest.TestCase): """ @@ -25,71 +16,26 @@ class TestUtil(unittest.TestCase): """ def test_load_function(self): - # Test function load with absolute path - abs_test_path = os.path.join( - pybamm.root_dir(), - "pybamm", - "input", - "parameters", - "lithium_ion", - "negative_electrodes", - "graphite_Chen2020", - "graphite_LGM50_electrolyte_exchange_current_density_Chen2020.py", - ) - func = pybamm.load_function(abs_test_path) - self.assertEqual( - func, - pybamm.input.parameters.lithium_ion.negative_electrodes.graphite_Chen2020.graphite_LGM50_electrolyte_exchange_current_density_Chen2020.graphite_LGM50_electrolyte_exchange_current_density_Chen2020, # noqa - ) + function = "graphite_LGM50_electrolyte_exchange_current_density_Chen2020" # Test function load with relative path rel_test_path = os.path.join( - "pybamm", - "input", - "parameters", - "lithium_ion", - "negative_electrodes", - "graphite_Chen2020", - "graphite_LGM50_electrolyte_exchange_current_density_Chen2020.py", + "pybamm", "input", "parameters", "lithium_ion", "Chen2020" ) - func = pybamm.load_function(rel_test_path) + func = pybamm.load_function(rel_test_path, function) self.assertEqual( func, - pybamm.input.parameters.lithium_ion.negative_electrodes.graphite_Chen2020.graphite_LGM50_electrolyte_exchange_current_density_Chen2020.graphite_LGM50_electrolyte_exchange_current_density_Chen2020, # noqa + pybamm.input.parameters.lithium_ion.Chen2020.graphite_LGM50_electrolyte_exchange_current_density_Chen2020, # noqa ) - # Test function load for parameters in a directory having "pybamm" in its name - # create a new lithium_ion folder in the root PyBaMM directory - subprocess.run(["pybamm_edit_parameter", "lithium_ion"]) - - # path for a function in the created directory -> - # x/y/z/PyBaMM/lithium_ion/negative_electrode/ .... - test_path = os.path.join( - os.getcwd(), - "lithium_ion", - "negative_electrodes", - "graphite_Chen2020", - "graphite_LGM50_electrolyte_exchange_current_density_Chen2020.py", - ) - - # load the function - func = pybamm.load_function(test_path) - - # cannot directly do - lithium_ion.negative_electrodes.graphite_Chen2020 as - # lithium_ion is not a python module - module_object = importlib.import_module( - "lithium_ion.negative_electrodes.graphite_Chen2020.graphite_LGM50_electrolyte_exchange_current_density_Chen2020" # noqa - ) + # Test function load with absolute path + abs_test_path = os.path.join(pybamm.root_dir(), rel_test_path) + func = pybamm.load_function(abs_test_path, function) self.assertEqual( func, - getattr( - module_object, - "graphite_LGM50_electrolyte_exchange_current_density_Chen2020", - ), + pybamm.input.parameters.lithium_ion.Chen2020.graphite_LGM50_electrolyte_exchange_current_density_Chen2020, # noqa ) - shutil.rmtree("lithium_ion") - def test_rmse(self): self.assertEqual(pybamm.rmse(np.ones(5), np.zeros(5)), 1) self.assertEqual(pybamm.rmse(2 * np.ones(5), np.zeros(5)), 2)