Repository: pybamm-team/PyBaMM

Issue:
Add Ecker parameter set
**Summary**
Add the parameter set in: http://jes.ecsdl.org/content/162/9/A1836.full


Discussion:

Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cd3fd0e6c..230344efb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,11 +3,15 @@
 ## Features
 
 -   Store variable slices in model for inspection ([#925](https://github.com/pybamm-team/PyBaMM/pull/925))
+-   Added LiNiCoO2 parameter set from Ecker et. al. ([#922](https://github.com/pybamm-team/PyBaMM/pull/922))
 -   Made t_plus (optionally) a function of electrolyte concentration, and added (1 + dlnf/dlnc) to models ([#921](https://github.com/pybamm-team/PyBaMM/pull/921))
 -   Added `DummySolver` for empty models ([#915](https://github.com/pybamm-team/PyBaMM/pull/915))
 -   Added functionality to broadcast to edges ([#891](https://github.com/pybamm-team/PyBaMM/pull/891))
 -   Reformatted and cleaned up `QuickPlot` ([#886](https://github.com/pybamm-team/PyBaMM/pull/886))
 -   Added thermal effects to lead-acid models ([#885](https://github.com/pybamm-team/PyBaMM/pull/885))
+-   Add new symbols `VariableDot`, representing the derivative of a variable wrt time,
+    and `StateVectorDot`, representing the derivative of a state vector wrt time
+    ([#858](https://github.com/pybamm-team/PyBaMM/issues/858))
 -   Added a helper function for info on function parameters ([#881](https://github.com/pybamm-team/PyBaMM/pull/881))
 -   Added additional notebooks showing how to create and compare models ([#877](https://github.com/pybamm-team/PyBaMM/pull/877))
 -   Added `Minimum`, `Maximum` and `Sign` operators
diff --git a/examples/notebooks/compare-comsol-discharge-curve.ipynb b/examples/notebooks/compare-comsol-discharge-curve.ipynb
index 645d516f9..563036061 100644
--- a/examples/notebooks/compare-comsol-discharge-curve.ipynb
+++ b/examples/notebooks/compare-comsol-discharge-curve.ipynb
@@ -214,7 +214,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.7.6"
+   "version": "3.6.9"
   }
  },
  "nbformat": 4,
diff --git a/examples/notebooks/compare-ecker-data.ipynb b/examples/notebooks/compare-ecker-data.ipynb
new file mode 100644
index 000000000..23fdc414d
--- /dev/null
+++ b/examples/notebooks/compare-ecker-data.ipynb
@@ -0,0 +1,243 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Comparing with Experimental Data\n",
+    "\n",
+    "In this notebook we show how to compare results generated in PyBaMM with experimental data. We compare the results of the DFN model (see the [DFN notebook](./models/DFN.ipynb)) with the experimental data from Ecker et. al. [1]. Results are compared for a constant current discharge at 1C and at 5C."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "First we import pybamm and any other packages required by this example, and then change our working directory to the root of the pybamm folder."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import pybamm\n",
+    "import os\n",
+    "import pandas as pd\n",
+    "import numpy as np\n",
+    "import matplotlib.pyplot as plt\n",
+    "os.chdir(pybamm.__path__[0]+'/..')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "We then load the Ecker data in from the `.csv` files using `pandas`"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "voltage_data_1C = pd.read_csv(\"pybamm/input/discharge_data/Ecker_1C.csv\", header=None).to_numpy()\n",
+    "voltage_data_5C = pd.read_csv(\"pybamm/input/discharge_data/Ecker_5C.csv\", header=None).to_numpy()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Note that the data is Time [s] vs Voltage [V]."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "We load the DFN model and select the parameter set from the Ecker paper [1]. We update the C-rate an `InputParameter` so that we can re-run the same model at different C-rates without the need to rebuild the model. This is done by passing the flag `[input]`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# choose DFN\n",
+    "model = pybamm.lithium_ion.DFN()\n",
+    "\n",
+    "# pick parameters, keeping C-rate as an input to be changed for each solve\n",
+    "chemistry = pybamm.parameter_sets.Ecker2015\n",
+    "parameter_values = pybamm.ParameterValues(chemistry=chemistry)\n",
+    "parameter_values.update({\"C-rate\": \"[input]\"})"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "For this comparison we choose a fine mesh of 1 finite volume per micron in the electrodes and separator and 1 finite volume per 0.1 micron in the particles"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "var = pybamm.standard_spatial_vars\n",
+    "var_pts = {\n",
+    "    var.x_n: int(parameter_values.evaluate(pybamm.geometric_parameters.L_n / 1e-6)),\n",
+    "    var.x_s: int(parameter_values.evaluate(pybamm.geometric_parameters.L_s / 1e-6)),\n",
+    "    var.x_p: int(parameter_values.evaluate(pybamm.geometric_parameters.L_p / 1e-6)),\n",
+    "    var.r_n: int(parameter_values.evaluate(pybamm.geometric_parameters.R_n / 1e-7)),\n",
+    "    var.r_p: int(parameter_values.evaluate(pybamm.geometric_parameters.R_p / 1e-7)),\n",
+    "}"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "We create a simulation using our model, parameters and number of grid points"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "sim =  pybamm.Simulation(model, parameter_values=parameter_values, var_pts=var_pts)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "We can then solve the model for a 1C and 5C discharge "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "C_rates = [1, 5]  # C-rates to solve for\n",
+    "t_evals = [\n",
+    "    np.linspace(0, 3800, 100), \n",
+    "    np.linspace(0, 720, 100)\n",
+    "] # times to return the solution at\n",
+    "solutions = [None] * len(C_rates)  # empty list that will hold solutions\n",
+    "\n",
+    "# loop over C-rates\n",
+    "for i, C_rate in enumerate(C_rates):\n",
+    "    sim.solve(t_eval=t_evals[i], solver=pybamm.CasadiSolver(mode=\"fast\"),inputs={\"C-rate\": C_rate})\n",
+    "    solutions[i] = sim.solution"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Finally we plot the numerical solution against the experimental data"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 936x288 with 2 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13, 4))\n",
+    "\n",
+    "# plot the 1C results\n",
+    "t_sol = solutions[0].t\n",
+    "ax1.plot(solutions[0][\"Time [s]\"](t_sol), solutions[0][\"Terminal voltage [V]\"](t_sol))\n",
+    "ax1.plot(voltage_data_1C[:,0], voltage_data_1C[:,1], \"o\")\n",
+    "ax1.set_xlabel(\"Time [s]\")\n",
+    "ax1.set_ylabel(\"Voltage [V]\")\n",
+    "ax1.set_title(\"1C\")\n",
+    "ax1.legend([\"DFN\", \"Experiment\"], loc=\"best\")\n",
+    "\n",
+    "# plot the 5C results\n",
+    "t_sol = solutions[1].t\n",
+    "ax2.plot(solutions[1][\"Time [s]\"](t_sol), solutions[1][\"Terminal voltage [V]\"](t_sol))\n",
+    "ax2.plot(voltage_data_5C[:,0], voltage_data_5C[:,1], \"o\")\n",
+    "ax2.set_xlabel(\"Time [s]\")\n",
+    "ax2.set_ylabel(\"Voltage [V]\")\n",
+    "ax2.set_title(\"5C\")\n",
+    "ax2.legend([\"DFN\", \"Experiment\"], loc=\"best\")\n",
+    "\n",
+    "plt.tight_layout()\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "For a 1C discharge we observe an excellent agreement between the model and experiment, both in terms of the overall shape of the curve and the capacity. The agreement between model and experiment is less good at 5C, but in line with other implementations of the DFN (e.g. [2]). "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## References\n",
+    "\n",
+    "[1] 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.\n",
+    "\n",
+    "[2] 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"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "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.6.9"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/examples/notebooks/models/DFN.ipynb b/examples/notebooks/models/DFN.ipynb
index 97358cdb0..d837a6c55 100644
--- a/examples/notebooks/models/DFN.ipynb
+++ b/examples/notebooks/models/DFN.ipynb
@@ -271,7 +271,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.7.3"
+   "version": "3.6.9"
   }
  },
  "nbformat": 4,
diff --git a/pybamm/CITATIONS.txt b/pybamm/CITATIONS.txt
index 416790a95..318c1fcd8 100644
--- a/pybamm/CITATIONS.txt
+++ b/pybamm/CITATIONS.txt
@@ -135,3 +135,37 @@ year={2020}
   doi          = {10.5281/zenodo.3597656},
   url          = {https://doi.org/10.5281/zenodo.3597656}
 }
+
+@article{ecker2015i,
+  title={Parameterization of a physico-chemical model of a lithium-ion battery i. determination of parameters},
+  author={Ecker, Madeleine and Tran, Thi Kim Dung and Dechent, Philipp and K{\"a}bitz, Stefan and Warnecke, Alexander and Sauer, Dirk Uwe},
+  journal={Journal of the Electrochemical Society},
+  volume={162},
+  number={9},
+  pages={A1836--A1848},
+  year={2015},
+  publisher={The Electrochemical Society}
+}
+
+@article{ecker2015ii,
+  title={Parameterization of a physico-chemical model of a lithium-ion battery ii. model validation},
+  author={Ecker, Madeleine and K{\"a}bitz, Stefan and Laresgoiti, Izaro and Sauer, Dirk Uwe},
+  journal={Journal of The Electrochemical Society},
+  volume={162},
+  number={9},
+  pages={A1849--A1857},
+  year={2015},
+  publisher={The Electrochemical Society}
+}
+
+@article{richardson2020,
+title = "Generalised single particle models for high-rate operation of graded lithium-ion electrodes: Systematic derivation and validation",
+journal = "Electrochimica Acta",
+volume = "339",
+pages = "135862",
+year = "2020",
+issn = "0013-4686",
+doi = "https://doi.org/10.1016/j.electacta.2020.135862",
+url = "http://www.sciencedirect.com/science/article/pii/S0013468620302541",
+author = "G. Richardson and I. Korotkin and R. Ranom and M. Castle and J.M. Foster",
+}
diff --git a/pybamm/expression_tree/symbol.py b/pybamm/expression_tree/symbol.py
index b5032ab88..5b0f89512 100644
--- a/pybamm/expression_tree/symbol.py
+++ b/pybamm/expression_tree/symbol.py
@@ -737,7 +737,7 @@ class Symbol(anytree.NodeMixin):
                 )
                 # Pick a y that won't cause RuntimeWarnings
                 y = np.linspace(0.1, 0.9, min_y_size)
-            evaluated_self = self.evaluate(0, y, y)
+            evaluated_self = self.evaluate(0, y, y, inputs="shape test")
 
         # Return shape of evaluated object
         if isinstance(evaluated_self, numbers.Number):
diff --git a/pybamm/input/discharge_data/Ecker_1C.csv b/pybamm/input/discharge_data/Ecker_1C.csv
new file mode 100644
index 000000000..dbd121588
--- /dev/null
+++ b/pybamm/input/discharge_data/Ecker_1C.csv
@@ -0,0 +1,31 @@
+20.3084233101775,4.10984760218981
+137.255118370379,4.06170981679401
+247.454888715569,4.02086563524606
+393.638257540821,3.98148017446767
+530.825726746058,3.94063599291972
+670.262170856298,3.91146157752832
+820.943489491555,3.87499355828908
+955.88198379179,3.84581914289769
+1097.56740280703,3.81226856519758
+1243.75077163228,3.79038775365404
+1383.18721574253,3.76121333826264
+1529.37058456778,3.73641508517996
+1666.55805377301,3.7247453190234
+1808.24347278826,3.70578194901899
+1947.6799168985,3.69848834517114
+2087.11636100874,3.68827729978416
+2231.05075492899,3.67514881285803
+2379.48309865925,3.66056160516233
+2521.16851767449,3.63576335207965
+2658.35598687973,3.60075405360997
+2802.29038079997,3.55407498898374
+2939.47785000521,3.51031336589665
+3081.16326902045,3.47384534665741
+3225.0976629407,3.43008372357031
+3344.29333290591,3.38194593817451
+3470.23592758612,3.30755117892646
+3553.44799907126,3.21273432890442
+3616.41929641137,3.11500003734325
+3652.40289489144,3.01872446655165
+3688.3864933715,2.89910936344693
+3715.37419223154,2.76636577341609
diff --git a/pybamm/input/discharge_data/Ecker_5C.csv b/pybamm/input/discharge_data/Ecker_5C.csv
new file mode 100644
index 000000000..621281ddf
--- /dev/null
+++ b/pybamm/input/discharge_data/Ecker_5C.csv
@@ -0,0 +1,33 @@
+0,4.00772806063782
+2.10996257174233,3.9630519063978
+9.53641973294314,3.90466605332464
+22.2674891521443,3.85148732048119
+40.7157517827462,3.80418814691602
+60.9764236014983,3.75781321732131
+82.7105988252504,3.72697310974463
+103.708022346502,3.69851401469471
+126.547325124005,3.67723564231538
+149.386627901507,3.65476333775538
+175.172937489009,3.63351237271449
+204.643005589013,3.60393814158189
+277.21304828527,3.55566182788309
+341.310446402776,3.51924603989306
+391.409562172782,3.4910575923102
+409.091603032784,3.47331305363065
+430.457402405285,3.45679670630482
+454.401832736538,3.43791647603876
+477.60951136529,3.41067186867334
+499.712062440292,3.38938664445941
+530.287258094045,3.35265909799465
+551.653057466548,3.32539736104271
+574.123984392801,3.29098230875862
+594.384656211552,3.25535276879001
+615.013703881554,3.214950926016
+634.169248146556,3.17572931175344
+650.377785601557,3.11737737526159
+664.37606794906,3.06736240853066
+677.63759859406,3.00540126815833
+685.373491470311,2.94219480684576
+693.846136049062,2.87660733300644
+701.213653074063,2.79787632742773
+706.002539140314,2.71195774734383
diff --git a/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/README.md b/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/README.md
new file mode 100644
index 000000000..48d5988c4
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/README.md
@@ -0,0 +1,12 @@
+# Graphite anode parameters
+
+Parameters for a graphite anode, from the papers:
+
+> Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of a lithium-ion battery I. determination of parameters." Journal of the Electrochemical Society 162.9 (2015): A1836-A1848.
+
+>Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of a lithium-ion battery II. Model validation." Journal of The Electrochemical Society 162.9 (2015): A1849-A1857.
+
+The fits to data for the electrode and electrolyte properties are those provided
+by Dr. Simon O’Kane in the paper:
+
+> Richardson, Giles, et. al. "Generalised single particle models for high-rate operation of graded lithium-ion electrodes: Systematic derivation and validation." Electrochemica Acta 339 (2020): 135862
diff --git a/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/graphite_diffusivity_Ecker2015.py b/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/graphite_diffusivity_Ecker2015.py
new file mode 100644
index 000000000..7d8ffab42
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/graphite_diffusivity_Ecker2015.py
@@ -0,0 +1,42 @@
+from pybamm import exp
+
+
+def graphite_diffusivity_Ecker2015(sto, T, T_inf, E_D_s, R_g):
+    """
+    Graphite diffusivity as a function of stochiometry [1, 2, 3].
+
+    References
+    ----------
+     .. [1] Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of
+    a lithium-ion battery i. determination of parameters." Journal of the
+    Electrochemical Society 162.9 (2015): A1836-A1848.
+    .. [2] Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of
+    a lithium-ion battery ii. model validation." Journal of The Electrochemical
+    Society 162.9 (2015): A1849-A1857.
+    .. [3] Richardson, Giles, et. al. "Generalised single particle models for
+    high-rate operation of graded lithium-ion electrodes: Systematic derivation
+    and validation." Electrochemica Acta 339 (2020): 135862
+
+    Parameters
+    ----------
+    sto: :class: `numpy.Array`
+        Electrode stochiometry
+    T: :class: `numpy.Array`
+        Dimensional temperature
+    T_inf: double
+        Reference temperature
+    E_D_s: double
+        Solid diffusion activation energy
+    R_g: double
+        The ideal gas constant
+
+    Returns
+    -------
+    : double
+        Solid diffusivity
+   """
+
+    D_ref = 8.4e-13 * exp(-11.3 * sto) + 8.2e-15
+    arrhenius = exp(-E_D_s / (R_g * T)) * exp(E_D_s / (R_g * 296))
+
+    return D_ref * arrhenius
diff --git a/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/graphite_electrolyte_reaction_rate_Ecker2015.py b/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/graphite_electrolyte_reaction_rate_Ecker2015.py
new file mode 100644
index 000000000..0b08fce44
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/graphite_electrolyte_reaction_rate_Ecker2015.py
@@ -0,0 +1,46 @@
+from pybamm import exp
+from scipy import constants
+
+
+def graphite_electrolyte_reaction_rate_Ecker2015(T, T_inf, E_r, R_g):
+    """
+    Reaction rate for Butler-Volmer reactions between graphite and LiPF6 in EC:DMC.
+
+    References
+    ----------
+    .. [1] Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of
+    a lithium-ion battery i. determination of parameters." Journal of the
+    Electrochemical Society 162.9 (2015): A1836-A1848.
+    .. [2] Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of
+    a lithium-ion battery ii. model validation." Journal of The Electrochemical
+    Society 162.9 (2015): A1849-A1857.
+    .. [3] Richardson, Giles, et. al. "Generalised single particle models for
+    high-rate operation of graded lithium-ion electrodes: Systematic derivation
+    and validation." Electrochemica Acta 339 (2020): 135862
+
+    Parameters
+    ----------
+    T: :class: `numpy.Array`
+        Dimensional temperature
+    T_inf: double
+        Reference temperature
+    E_r: double
+        Reaction activation energy
+    R_g: double
+        The ideal gas constant
+
+    Returns
+    -------
+    :`numpy.Array`
+        Reaction rate
+    """
+
+    k_ref = 1.995 * 1e-10
+
+    # multiply by Faraday's constant to get correct units
+    F = constants.physical_constants["Faraday constant"][0]
+    m_ref = F * k_ref
+
+    arrhenius = exp(-E_r / (R_g * T)) * exp(E_r / (R_g * T_inf))
+
+    return m_ref * arrhenius
diff --git a/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/graphite_ocp_Ecker2015.csv b/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/graphite_ocp_Ecker2015.csv
new file mode 100644
index 000000000..a578a7fa0
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/graphite_ocp_Ecker2015.csv
@@ -0,0 +1,41 @@
+0.0015151515151514694, 1.4325153374233128
+0.0060606060606061, 0.8619631901840491
+0.010606060606060619, 0.7914110429447854
+0.016666666666666607, 0.6595092024539877
+0.021212121212121238, 0.5797546012269938
+0.022727272727272707, 0.5245398773006136
+0.030303030303030276, 0.4754601226993864
+0.039393939393939315, 0.4141104294478526
+0.045454545454545414, 0.3680981595092023
+0.05303030303030298, 0.3312883435582821
+0.06666666666666665, 0.28220858895705514
+0.07878787878787874, 0.24846625766871155
+0.08939393939393936, 0.2239263803680982
+0.10151515151515145, 0.22085889570552153
+0.12727272727272732, 0.21165644171779152
+0.14242424242424245, 0.2024539877300613
+0.15909090909090917, 0.19938650306748462
+0.17727272727272725, 0.19325153374233128
+0.19393939393939397, 0.18404907975460127
+0.21363636363636362, 0.1809815950920246
+0.23333333333333328, 0.17177914110429437
+0.25757575757575757, 0.16564417177914104
+0.2787878787878788, 0.16257668711656437
+0.303030303030303, 0.15337423312883436
+0.32878787878787885, 0.14110429447852746
+0.35151515151515156, 0.13496932515337412
+0.3712121212121211, 0.13190184049079745
+0.39242424242424234, 0.128834355828221
+0.5681818181818183, 0.1257668711656441
+0.5878787878787879, 0.12269938650306744
+0.6060606060606062, 0.1165644171779141
+0.6272727272727272, 0.10122699386503076
+0.6545454545454545, 0.0950920245398772
+0.6742424242424243, 0.0950920245398772
+0.6939393939393939, 0.08895705521472386
+0.7181818181818183, 0.08895705521472386
+0.7393939393939393, 0.08588957055214719
+0.8909090909090911, 0.08282208588957074
+0.956060606060606, 0.08272208588957074
+0.9772727272727273, 0.07975460122699385
+1, 0.07055214723926384
diff --git a/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/graphite_ocp_Ecker2015_function.py b/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/graphite_ocp_Ecker2015_function.py
new file mode 100644
index 000000000..5b57c4fb5
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/graphite_ocp_Ecker2015_function.py
@@ -0,0 +1,62 @@
+from pybamm import exp, tanh
+
+
+def graphite_ocp_Ecker2015_function(sto):
+    """
+    Graphite OCP as a function of stochiometry [1, 2, 3].
+
+    References
+    ----------
+     .. [1] Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of
+    a lithium-ion battery i. determination of parameters." Journal of the
+    Electrochemical Society 162.9 (2015): A1836-A1848.
+    .. [2] Ecker, Madeleine, et al. "Parameterization of a physico-chemical model of
+    a lithium-ion battery ii. model validation." Journal of The Electrochemical
+    Society 162.9 (2015): A1849-A1857.
+    .. [3] Richardson, Giles, et. al. "Generalised single particle models for
+    high-rate operation of graded lithium-ion electrodes: Systematic derivation
+    and validation." Electrochemica Acta 339 (2020): 135862
+
+    Parameters
+    ----------
+    sto: :class: `numpy.Array`
+        Electrode stochiometry
+
+    Returns
+    -------
+    : double
+        Open circuit potential
+    """
+
+    # Graphite Anode from Ecker, Kabitz, Laresgoiti et al.
+    # Analytical fit (WebPlotDigitizer + gnuplot)
+    a = 0.716502
+    b = 369.028
+    c = 0.12193
+    d = 35.6478
+    e = 0.0530947
+    g = 0.0169644
+    h = 27.1365
+    i = 0.312832
+    j = 0.0199313
+    k = 28.5697
+    m = 0.614221
+    n = 0.931153
+    o = 36.328
+    p = 1.10743
+    q = 0.140031
+    r = 0.0189193
+    s = 21.1967
+    t = 0.196176
+
+    u_eq = (
+        a * exp(-b * sto)
+        + c * exp(-d * (sto - e))
+        - r * tanh(s * (sto - t))
+        - g * tanh(h * (sto - i))
+        - j * tanh(k * (sto - m))
+        - n * exp(o * (sto - p))
+        + q
+    )
+
+    return u_eq
diff --git a/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/measured_graphite_diffusivity_Ecker2015.csv b/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/measured_graphite_diffusivity_Ecker2015.csv
new file mode 100644
index 000000000..936c491f9
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/measured_graphite_diffusivity_Ecker2015.csv
@@ -0,0 +1,23 @@
+0.04291659469592768,2.5318983605709854e-13
+0.08025337997334403,4.438292394020732e-14
+0.12014956931041065,3.1947426343055446e-14
+0.15796120718295306,2.6077962994674755e-14
+0.19575227382393767,2.255908580891848e-14
+0.2357650334731653,1.16865022242173e-14
+0.27144412034088194,1.2386927328130891e-14
+0.3100288936661386,2.0291954487412547e-14
+0.3484165260222996,3.2604716406478646e-15
+0.3866704453733347,7.640156635519089e-16
+0.4264157790123111,8.417747371928056e-16
+0.4641862744217376,7.717093525037831e-16
+0.5018779134435263,8.837921553351043e-16
+0.5412118224513462,3.109171322297572e-15
+0.5766749113877059,6.062184667385398e-15
+0.6148036890800979,3.595937210129949e-14
+0.6545815938357071,2.0323093806678467e-15
+0.7681399348426814,7.802664217099549e-16
+0.8089429726375879,7.728942922045022e-16
+0.8823034129113143,9.65829674321414e-16
+0.9220864604748132,9.566999594213241e-16
+0.9607500901877076,1.2545776383613633e-15
+0.9976360226401492,1.395684713792463e-14
diff --git a/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/parameters.csv b/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/parameters.csv
new file mode 100644
index 000000000..bebcb7dcd
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/anodes/graphite_Ecker2015/parameters.csv
@@ -0,0 +1,32 @@
+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.555,,
+Negative particle radius [m],1.37E-05,,
+Negative particle distribution in x,1,,
+Negative electrode surface area density [m-1], 81548,,
+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,,
+,,,
+# Thermal parameters,,,
+Negative electrode OCP entropic change [V.K-1],0,,
+,,,
+# Activation energies,,,
+Reference temperature [K],296.15,23C,
+Negative electrode reaction rate,[function]graphite_electrolyte_reaction_rate_Ecker2015,,
+Negative reaction rate activation energy [J.mol-1],53400,,
+Negative solid diffusion activation energy [J.mol-1],3.03E+04,,
diff --git a/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/README.md b/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/README.md
new file mode 100644
index 000000000..7d9d9dca8
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/README.md
@@ -0,0 +1,12 @@
+# Lithium Nickel Cobalt Oxide cathode parameters
+
+Parameters for a Lithium Nickel Cobalt Oxide cathode, 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/cathodes/LiNiCoO2_Ecker2015/measured_nco_diffusivity_Ecker2015.csv b/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/measured_nco_diffusivity_Ecker2015.csv
new file mode 100644
index 000000000..72c9f0796
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/measured_nco_diffusivity_Ecker2015.csv
@@ -0,0 +1,15 @@
+0.13943217665615135,1.8256540288152508e-13
+0.2,3.329858559514642e-13
+0.2618296529968453,3.0801228532525374e-13
+0.32239747634069404,2.6333920293821577e-13
+0.38675078864353307,1.9811969945521707e-13
+0.4460567823343848,1.418878868334243e-13
+0.5078864353312302,7.201182417750914e-14
+0.5684542586750789,2.857708698828691e-14
+0.6315457413249213,4.541608403537004e-15
+0.6933753943217664,5.479444754774098e-14
+0.7526813880126184,2.0296886656972416e-13
+0.8157728706624605,1.5882865084008814e-13
+0.8750788643533123,1.3446092039291705e-13
+0.9406940063091483,2.0545053272039484e-14
+1.0,5.4462929807295865e-15
diff --git a/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/nco_diffusivity_Ecker2015.py b/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/nco_diffusivity_Ecker2015.py
new file mode 100644
index 000000000..db3b91eea
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/nco_diffusivity_Ecker2015.py
@@ -0,0 +1,42 @@
+from pybamm import exp
+
+
+def nco_diffusivity_Ecker2015(sto, T, T_inf, E_D_s, R_g):
+    """
+    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: `numpy.Array`
+        Electrode stochiometry
+    T: :class: `numpy.Array`
+        Dimensional temperature
+    T_inf: double
+        Reference temperature
+    E_D_s: double
+        Solid diffusion activation energy
+    R_g: double
+        The ideal gas constant
+
+    Returns
+    -------
+    : double
+        Solid diffusivity
+    """
+
+    D_ref = 3.7e-13 - 3.4e-13 * exp(-12 * (sto - 0.62) * (sto - 0.62))
+    arrhenius = exp(-E_D_s / (R_g * T)) * exp(E_D_s / (R_g * T_inf))
+
+    return D_ref * arrhenius
diff --git a/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/nco_electrolyte_reaction_rate_Ecker2015.py b/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/nco_electrolyte_reaction_rate_Ecker2015.py
new file mode 100644
index 000000000..29555c2ea
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/nco_electrolyte_reaction_rate_Ecker2015.py
@@ -0,0 +1,46 @@
+from pybamm import exp
+from scipy import constants
+
+
+def nco_electrolyte_reaction_rate_Ecker2015(T, T_inf, E_r, R_g):
+    """
+    Reaction rate 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
+    ----------
+    T: :class: `numpy.Array`
+        Dimensional temperature
+    T_inf: double
+        Reference temperature
+    E_r: double
+        Reaction activation energy
+    R_g: double
+        The ideal gas constant
+
+    Returns
+    -------
+    : double
+        Reaction rate
+    """
+
+    k_ref = 5.196e-11
+
+    # multiply by Faraday's constant to get correct units
+    F = constants.physical_constants["Faraday constant"][0]
+    m_ref = F * k_ref
+
+    arrhenius = exp(-E_r / (R_g * T)) * exp(E_r / (R_g * T_inf))
+
+    return m_ref * arrhenius
diff --git a/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/nco_ocp_Ecker2015.csv b/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/nco_ocp_Ecker2015.csv
new file mode 100644
index 000000000..eb8776016
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/nco_ocp_Ecker2015.csv
@@ -0,0 +1,43 @@
+0.001066078485433497, 4.584263211444843
+0.041273779983457604, 4.542437342855614
+0.065398400882272, 4.52965007211667
+0.08722543883834222, 4.523324753404195
+0.11154152498238534, 4.4989323580008005
+0.13547468063597112, 4.46985870879382
+0.15940783628955701, 4.429538485743097
+0.18174544823290373, 4.389207099839924
+0.2056786038864893, 4.3421389324829525
+0.228016215829836, 4.29955823181103
+0.25115159962830247, 4.2547337977965825
+0.275084755281888, 4.216662889514609
+0.2982201390803543, 4.178586399806408
+0.3221532947339403, 4.147263435830681
+0.3452886785324063, 4.111436260891228
+0.3692218341859923, 4.082362611684249
+0.3939527616946974, 4.055543858672244
+0.41469482992780504, 4.030946513297861
+0.4402235292916299, 4.006382656480829
+0.46176336937985707, 3.9840402073014207
+0.4864942968885624, 3.9684680281331595
+0.5088319088319091, 3.9528791046862226
+0.5327650644854949, 3.941799973629234
+0.5566982201390807, 3.923972898265999
+0.5782380602273078, 3.919624967236581
+0.598182356605296, 3.913016558585964
+0.6484419834778261, 3.911118873669402
+0.6723751391314119, 3.9112863164561573
+0.6971060666401172, 3.897963452056645
+0.7194436785834639, 3.882374528609708
+0.7433768342370495, 3.860048823708975
+0.7649166743252769, 3.817462541610827
+0.7880520581237431, 3.7883833109776224
+0.8127829856324482, 3.759315243196868
+0.8351205975757949, 3.732479745906187
+0.8590537532293809, 3.7079047262367046
+0.8821891370278472, 3.6810748103722486
+0.9053245208263132, 3.649746264970295
+0.9300554483350187, 3.6116809381145454
+0.9515952884232457, 3.5780919150913926
+0.9683484973807557, 3.557965292123382
+0.9827083907729073, 3.5423205544141934
+0.9994615997304173, 3.5199446166774333
diff --git a/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/nco_ocp_Ecker2015_function.py b/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/nco_ocp_Ecker2015_function.py
new file mode 100644
index 000000000..27905fca4
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/nco_ocp_Ecker2015_function.py
@@ -0,0 +1,56 @@
+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: double
+       Stochiometry of material (li-fraction)
+
+    """
+
+    # LiNiCo from Ecker, Kabitz, Laresgoiti et al.
+    # Analytical fit (WebPlotDigitizer + gnuplot)
+    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/cathodes/LiNiCoO2_Ecker2015/parameters.csv b/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/parameters.csv
new file mode 100644
index 000000000..208ed621b
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/parameters.csv
@@ -0,0 +1,33 @@
+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.58,,
+Positive particle radius [m],6.5E-06,,
+Positive particle distribution in x,1,,
+Positive electrode surface area density [m-1],188455,,
+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,
+,,,
+# Interfacial reactions,,,
+Positive electrode cation signed stoichiometry,-1,,
+Positive electrode electrons in reaction,1,,
+
+,,,
+# Thermal parameters,,,
+Positive electrode OCP entropic change [V.K-1],0,,
+,,,
+# Activation energies,,,
+Reference temperature [K],296.15,23C,
+Positive electrode reaction rate,[function]nco_electrolyte_reaction_rate_Ecker2015,,
+Positive reaction rate activation energy [J.mol-1],4.36E+04,,
+Positive solid diffusion activation energy [J.mol-1],8.06E+04,,
diff --git a/pybamm/input/parameters/lithium-ion/cells/kokam_Ecker2015/README.md b/pybamm/input/parameters/lithium-ion/cells/kokam_Ecker2015/README.md
new file mode 100644
index 000000000..c2ecfde14
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/cells/kokam_Ecker2015/README.md
@@ -0,0 +1,7 @@
+# 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.
diff --git a/pybamm/input/parameters/lithium-ion/cells/kokam_Ecker2015/parameters.csv b/pybamm/input/parameters/lithium-ion/cells/kokam_Ecker2015/parameters.csv
new file mode 100644
index 000000000..d6f636959
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/cells/kokam_Ecker2015/parameters.csv
@@ -0,0 +1,15 @@
+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],2.5E-05,,
+Electrode height [m],1.01E-01,,
+Electrode width [m],8.50E-02,,
+,,,
+# Electrical,,,
+Cell capacity [A.h], 0.15625, 7.5/48 (parameter set for a single layer cell),
+Typical current [A], 0.15652,,
diff --git a/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Ecker2015/README.md b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Ecker2015/README.md
new file mode 100644
index 000000000..a7524227f
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Ecker2015/README.md
@@ -0,0 +1,12 @@
+# 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/electrolyte_conductivity_Ecker2015.py b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Ecker2015/electrolyte_conductivity_Ecker2015.py
new file mode 100644
index 000000000..45609d47e
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Ecker2015/electrolyte_conductivity_Ecker2015.py
@@ -0,0 +1,49 @@
+from pybamm import exp
+
+
+def electrolyte_conductivity_Ecker2015(c_e, T, T_inf, E_k_e, R_g):
+    """
+    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: `numpy.Array`
+        Dimensional electrolyte concentration
+    T: :class: `numpy.Array`
+        Dimensional temperature
+    T_inf: double
+        Reference temperature
+    E_k_e: double
+        Electrolyte conductivity activation energy
+    R_g: double
+        The ideal gas constant
+
+    Returns
+    -------
+    :`numpy.Array`
+        Solid diffusivity
+    """
+
+    # 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
+    C = 296 * exp(E_k_e / (R_g * 296))
+    sigma_e = C * sigma_e_296 * exp(-E_k_e / (R_g * 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
new file mode 100644
index 000000000..f476343de
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Ecker2015/electrolyte_diffusivity_Ecker2015.py
@@ -0,0 +1,58 @@
+import pybamm
+from scipy import constants
+
+
+def electrolyte_diffusivity_Ecker2015(c_e, T, T_inf, E_D_e, R_g):
+    """
+    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: `numpy.Array`
+        Dimensional electrolyte concentration
+    T: :class: `numpy.Array`
+        Dimensional temperature
+    T_inf: double
+        Reference temperature
+    E_D_e: double
+        Electrolyte diffusion activation energy
+    R_g: double
+        The ideal gas constant
+
+    Returns
+    -------
+    :`numpy.Array`
+        Solid diffusivity
+    """
+
+    # The diffusivity epends on the electrolyte conductivity
+    E_k_e = pybamm.Parameter("Electrolyte conductivity activation energy [J.mol-1]")
+    inputs = {
+        "Electrolyte concentration [mol.m-3]": c_e,
+        "Temperature [K]": T,
+        "Reference temperature [K]": T_inf,
+        "Activation energy [J.mol-1]": E_k_e,
+        "Ideal gas constant [J.mol-1.K-1]": R_g,
+    }
+    sigma_e = pybamm.FunctionParameter("Electrolyte conductivity [S.m-1]", inputs)
+
+    # constants
+    k_b = constants.physical_constants["Boltzmann constant"][0]
+    F = constants.physical_constants["Faraday constant"][0]
+    q_e = constants.physical_constants["electron volt"][0]
+
+    D_c_e = (k_b / (F * 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
new file mode 100644
index 000000000..3d5d6eee4
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Ecker2015/parameters.csv
@@ -0,0 +1,14 @@
+Name [units],Value,Reference,Notes
+# Empty rows and rows starting with ‘#’ will be ignored,,,
+,,,
+# Electrolyte properties,,,
+Typical electrolyte concentration [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,,
+,,,
+# Activation energies,,,
+Reference temperature [K],296.15,23C,
+Electrolyte diffusion activation energy [J.mol-1],1.71E+04,,
+Electrolyte conductivity activation energy [J.mol-1],1.71E+04,,
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
new file mode 100644
index 000000000..ae69fbf33
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/experiments/1C_discharge_from_full_Ecker2015/README.md
@@ -0,0 +1,6 @@
+# 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
new file mode 100644
index 000000000..fd2cc7c03
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/experiments/1C_discharge_from_full_Ecker2015/parameters.csv
@@ -0,0 +1,21 @@
+Name [units],Value,Reference,Notes
+# Empty rows and rows starting with ‘#’ will be ignored,,,
+,,,
+# Temperature
+Reference temperature [K],296.15,23C,
+Heat transfer coefficient [W.m-2.K-1],10, The paper does not consider thermal effects so a typical value is chosen,
+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,,
+C-rate,1,,
+,,,
+# Initial conditions
+Initial concentration in negative electrode [mol.m-3], 26120.05,,
+Initial concentration in positive electrode [mol.m-3], 12630.8,,
+Initial concentration in electrolyte [mol.m-3],1000,,
+Initial temperature [K],298.15,,
diff --git a/pybamm/input/parameters/lithium-ion/separators/separator_Ecker2015/README.md b/pybamm/input/parameters/lithium-ion/separators/separator_Ecker2015/README.md
new file mode 100644
index 000000000..27cf2f78f
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/separators/separator_Ecker2015/README.md
@@ -0,0 +1,7 @@
+# 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.
diff --git a/pybamm/input/parameters/lithium-ion/separators/separator_Ecker2015/parameters.csv b/pybamm/input/parameters/lithium-ion/separators/separator_Ecker2015/parameters.csv
new file mode 100644
index 000000000..b1f6cf21a
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/separators/separator_Ecker2015/parameters.csv
@@ -0,0 +1,6 @@
+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 Bruggeman coefficient (electrode),0,No Bruggeman correction to solid conductivity,
diff --git a/pybamm/parameters/parameter_sets.py b/pybamm/parameters/parameter_sets.py
index 3b6747c68..b3d42c028 100644
--- a/pybamm/parameters/parameter_sets.py
+++ b/pybamm/parameters/parameter_sets.py
@@ -10,17 +10,6 @@ your simulation, add the line "pybamm.print_citations()" to your script.
 #
 # Lithium-ion
 #
-Marquis2019 = {
-    "chemistry": "lithium-ion",
-    "cell": "kokam_Marquis2019",
-    "anode": "graphite_mcmb2528_Marquis2019",
-    "separator": "separator_Marquis2019",
-    "cathode": "lico2_Marquis2019",
-    "electrolyte": "lipf6_Marquis2019",
-    "experiment": "1C_discharge_from_full_Marquis2019",
-    "citation": "marquis2019asymptotic",
-}
-
 NCA_Kim2011 = {
     "chemistry": "lithium-ion",
     "cell": "Kim2011",
@@ -32,6 +21,28 @@ NCA_Kim2011 = {
     "citation": "kim2011multi",
 }
 
+Ecker2015 = {
+    "chemistry": "lithium-ion",
+    "cell": "kokam_Ecker2015",
+    "anode": "graphite_Ecker2015",
+    "separator": "separator_Ecker2015",
+    "cathode": "LiNiCoO2_Ecker2015",
+    "electrolyte": "lipf6_Ecker2015",
+    "experiment": "1C_discharge_from_full_Ecker2015",
+    "citation": ["ecker2015i", "ecker2015ii", "richardson2020"],
+}
+
+Marquis2019 = {
+    "chemistry": "lithium-ion",
+    "cell": "kokam_Marquis2019",
+    "anode": "graphite_mcmb2528_Marquis2019",
+    "separator": "separator_Marquis2019",
+    "cathode": "lico2_Marquis2019",
+    "electrolyte": "lipf6_Marquis2019",
+    "experiment": "1C_discharge_from_full_Marquis2019",
+    "citation": "marquis2019asymptotic",
+}
+
 Chen2020 = {
     "chemistry": "lithium-ion",
     "cell": "LGM50_Chen2020",
diff --git a/pybamm/parameters/parameter_values.py b/pybamm/parameters/parameter_values.py
index 53c0c2b49..ec939e2e9 100644
--- a/pybamm/parameters/parameter_values.py
+++ b/pybamm/parameters/parameter_values.py
@@ -158,10 +158,13 @@ class ParameterValues:
                 path=component_path,
             )
 
-        # register citations
+        # register (list of) citations
         if "citation" in chemistry:
-            citation = chemistry["citation"]
-            pybamm.citations.register(citation)
+            citations = chemistry["citation"]
+            if not isinstance(citations, list):
+                citations = [citations]
+            for citation in citations:
+                pybamm.citations.register(citation)
 
     def read_parameters_csv(self, filename):
         """Reads parameters from csv file into dict.
diff --git a/pybamm/parameters_cli.py b/pybamm/parameters_cli.py
index 39c6290fc..7b85af5f7 100644
--- a/pybamm/parameters_cli.py
+++ b/pybamm/parameters_cli.py
@@ -33,7 +33,7 @@ def get_parser(description):
     """
     parser = argparse.ArgumentParser(description=description)
     parser.add_argument(
-        "parameter_dir", type=str, help="Name of the parameter directory",
+        "parameter_dir", type=str, help="Name of the parameter directory"
     )
     parser.add_argument("battery_type", choices=["lithium-ion", "lead-acid"])
     parser.add_argument(
@@ -148,6 +148,7 @@ def list_parameters(arguments=None):
     >>> from pybamm.parameters_cli import list_parameters
     >>> list_parameters(["lithium-ion", "anodes"])
     Available package parameters:
+      * graphite_Ecker2015
       * graphite_Chen2020
       * graphite_mcmb2528_Marquis2019
       * graphite_Kim2011
diff --git a/pybamm/simulation.py b/pybamm/simulation.py
index 1ae9621a4..6e85bf856 100644
--- a/pybamm/simulation.py
+++ b/pybamm/simulation.py
@@ -387,6 +387,8 @@ class Simulation:
             # to correspond to a single discharge
             elif t_eval is None:
                 C_rate = self._parameter_values["C-rate"]
+                if isinstance(C_rate, pybamm.InputParameter):
+                    C_rate = inputs["C-rate"]
                 try:
                     t_end = 3600 / C_rate
                 except TypeError:


Test patch:
diff --git a/tests/unit/test_citations.py b/tests/unit/test_citations.py
index a930f7ac3..39ed2da20 100644
--- a/tests/unit/test_citations.py
+++ b/tests/unit/test_citations.py
@@ -101,6 +101,12 @@ class TestCitations(unittest.TestCase):
         pybamm.ParameterValues(chemistry=pybamm.parameter_sets.Sulzer2019)
         self.assertIn("sulzer2019physical", citations._papers_to_cite)
 
+        citations._reset()
+        pybamm.ParameterValues(chemistry=pybamm.parameter_sets.Ecker2015)
+        self.assertIn("ecker2015i", citations._papers_to_cite)
+        self.assertIn("ecker2015ii", citations._papers_to_cite)
+        self.assertIn("richardson2020", citations._papers_to_cite)
+
     def test_solver_citations(self):
         # Test that solving each solver adds the right citations
         citations = pybamm.citations
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
new file mode 100644
index 000000000..5d8392318
--- /dev/null
+++ b/tests/unit/test_parameters/test_parameter_sets/test_NCO_Ecker2015.py
@@ -0,0 +1,56 @@
+#
+# Tests for Ecker parameter set
+#
+import pybamm
+import unittest
+
+
+class TestEcker(unittest.TestCase):
+    def test_load_params(self):
+        anode = pybamm.ParameterValues({}).read_parameters_csv(
+            pybamm.get_parameters_filepath(
+                "input/parameters/lithium-ion/anodes/graphite_Ecker2015/parameters.csv"
+            )
+        )
+        self.assertEqual(anode["Negative electrode porosity"], "0.329")
+
+        path = "input/parameters/lithium-ion/cathodes/LiNiCoO2_Ecker2015/parameters.csv"
+        cathode = pybamm.ParameterValues({}).read_parameters_csv(
+            pybamm.get_parameters_filepath(path)
+        )
+        self.assertEqual(cathode["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["Reference temperature [K]"], "296.15")
+
+        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):
+
+        chemistry = pybamm.parameter_sets.Ecker2015
+        parameter_values = pybamm.ParameterValues(chemistry=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")
+    import sys
+
+    if "-v" in sys.argv:
+        debug = True
+    pybamm.settings.debug_mode = True
+    unittest.main()