Repository: pybamm-team/PyBaMM
Pull request #860 (2020-02-26 17:50:22)

Add new electrolyte functions from Landesfeind 2019
# Description

Add new electrolyte functions for conductivity and diffusivity from Landesfeind 2019

Fixes # 859

## Type of change

Please add a line in the relevant section of [CHANGELOG.md](https://github.com/pybamm-team/PyBaMM/blob/master/CHANGELOG.md) to document the change (include PR #) - note reverse order of PR #s. If necessary, also add to the list of breaking changes.

- [x] New feature (non-breaking change which adds functionality)
- [ ] Optimization (back-end change that speeds up the code)
- [ ] Bug fix (non-breaking change which fixes an issue)


# Key checklist:

- [x] No style issues: `$ flake8`
- [x] All tests pass: `$ python run-tests.py --unit`
- [x] The documentation builds: `$ cd docs` and then `$ make clean; make html`

You can run all three at once, using `$ python run-tests.py --quick`.

## Further checks:

- [x] Code is commented, particularly in hard-to-understand areas
- [x] Tests added that prove fix is effective or that feature works



Patch:
diff --git a/.requirements-docs.txt b/.requirements-docs.txt
index 6f64da025..6dbc42b98 100644
--- a/.requirements-docs.txt
+++ b/.requirements-docs.txt
@@ -1,6 +1,6 @@
 # Requirements for readthedocs.io
 numpy>=1.14
-scipy>=1.3
+scipy>=1.0
 pandas>=0.23
 anytree>=2.4.3
 autograd>=1.2
@@ -8,3 +8,4 @@ scikit-fem>=0.2.0
 casadi>=3.5.0
 guzzle-sphinx-theme
 sphinx>=1.5
+python-Levenshtein>=0.12.0
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 27d615ba0..d7a91a959 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,4 @@
-# [v0.2.0](https://github.com/pybamm-team/PyBaMM/tree/v0.2.0) - 2020-02-26
-
-This release introduces many new features and optimizations. All models can now be solved using the pip installation - in particular, the DFN can be solved in around 0.1s. Other highlights include an improved user interface, simulations of experimental protocols (GITT, CCCV, etc), new parameter sets for NCA and LGM50, drive cycles, "input parameters" and "external variables" for quickly solving models with different parameter values and coupling with external software, and general bug fixes and optimizations.
+# [Unreleased](https://github.com/pybamm-team/PyBaMM)
 
 ## Features
 
diff --git a/README.md b/README.md
index 0808ced56..d3e5b0831 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@
 [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/pybamm-team/PyBaMM/master?filepath=examples%2Fnotebooks)
 [![black_code_style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)
 
-PyBaMM (Python Battery Mathematical Modelling) solves physics-based electrochemical DAE models by using state-of-the-art automatic differentiation and numerical solvers. The Doyle-Fuller-Newman model can be solved in under 0.1 seconds, while the reduced-order Single Particle Model and Single Particle Model with electrolyte can be solved in just a few milliseconds. Additional physics can easily be included such as thermal effects, fast particle diffusion, 3D effects, and more. All models are implemented in a flexible manner, and a wide range of models and parameter sets (NCA, NMC, LiCoO2, ...) are available. There is also functionality to simulate any set of experimental instructions, such as CCCV or GITT, or specify drive cycles.
+Python Battery Mathematical Modelling solves continuum models for batteries, using both numerical methods and asymptotic analysis.
 
 ## How do I use PyBaMM?
 
@@ -19,24 +19,6 @@ sim = pybamm.Simulation(model)
 sim.solve()
 sim.plot()
 ```
-or simulate an experiment such as CCCV:
-```python3
-import pybamm
-experiment = pybamm.Experiment(
-    [
-        "Discharge at C/10 for 10 hours or until 3.3 V",
-        "Rest for 1 hour",
-        "Charge at 1 A until 4.1 V",
-        "Hold at 4.1 V until 50 mA",
-        "Rest for 1 hour",
-    ]
-    * 3,
-)
-model = pybamm.lithium_ion.DFN()
-sim = pybamm.Simulation(model, experiment=experiment, solver=pybamm.CasadiSolver())
-sim.solve()
-sim.plot()
-```
 However, much greater customisation is available. It is possible to change the physics, parameter values, geometry, submesh type,  number of submesh points, methods for spatial discretisation and solver for integration (see DFN [script](examples/scripts/DFN.py) or [notebook](examples/notebooks/models/dfn.ipynb)).
 
 For new users we recommend the [Getting Started](examples/notebooks/Getting%20Started/) guides. These are intended to be very simple step-by-step guides to show the basic functionality of PyBaMM.
@@ -68,7 +50,7 @@ instructions please see [here](INSTALL-WINDOWS.md)
 
 If you use PyBaMM in your work, please cite our paper
 
-> Sulzer, V., Marquis, S. G., Timms, R., Robinson, M., & Chapman, S. J. (2020). Python Battery Mathematical Modelling (PyBaMM). _ECSarXiv. February, 7_.
+"Sulzer, V., Marquis, S. G., Timms, R., Robinson, M., & Chapman, S. J. (2020). Python Battery Mathematical Modelling (PyBaMM). _ECSarXiv. February, 7_."
 
 You can use the bibtex
 
diff --git a/docs/conf.py b/docs/conf.py
index e7cd1274e..732f8082a 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -22,13 +22,13 @@ sys.path.insert(0, os.path.abspath("../"))
 # -- Project information -----------------------------------------------------
 
 project = "PyBaMM"
-copyright = "2020, Valentin Sulzer"
-author = "The PyBaMM Team"
+copyright = "2018, Valentin Sulzer"
+author = "Valentin Sulzer"
 
 # The short X.Y version
-version = "0.2"
+version = ""
 # The full version, including alpha/beta/rc tags
-release = "0.2.0"
+release = ""
 
 
 # -- General configuration ---------------------------------------------------
diff --git a/examples/scripts/compare_lead_acid_3D.py b/examples/scripts/compare_lead_acid_3D.py
new file mode 100644
index 000000000..4828408b2
--- /dev/null
+++ b/examples/scripts/compare_lead_acid_3D.py
@@ -0,0 +1,96 @@
+#
+# Compare lead-acid battery models
+#
+import argparse
+import numpy as np
+import pybamm
+
+parser = argparse.ArgumentParser()
+parser.add_argument(
+    "--debug", action="store_true", help="Set logging level to 'DEBUG'."
+)
+args = parser.parse_args()
+if args.debug:
+    pybamm.set_logging_level("DEBUG")
+else:
+    pybamm.set_logging_level("INFO")
+
+# load models
+models = [
+    # pybamm.lead_acid.LOQS(
+    #     {"current collector": "potential pair", "dimensionality": 2}, name="2+1D LOQS"
+    # ),
+    pybamm.lead_acid.Full(
+        {"current collector": "potential pair", "dimensionality": 1}, name="1+1D Full"
+    ),
+    # pybamm.lead_acid.Full(
+    #     {"dimensionality": 1}, name="1+1D uniform Full"
+    # ),
+    pybamm.lead_acid.Composite(
+        {"current collector": "potential pair quite conductive", "dimensionality": 1},
+        name="1+1D composite",
+    ),
+    pybamm.lead_acid.Composite(
+        {"current collector": "potential pair", "dimensionality": 1},
+        name="1+1D composite",
+    ),
+    # # pybamm.lead_acid.Composite({"dimensionality": 1}, name="composite"),
+    pybamm.lead_acid.LOQS(
+        {"current collector": "potential pair", "dimensionality": 1}, name="1+1D LOQS"
+    ),
+    # pybamm.lead_acid.LOQS({"dimensionality": 1}, name="LOQS"),
+]
+
+# load parameter values and process models and geometry
+param = models[0].default_parameter_values
+param.update(
+    {
+        "Current function [A]": 1,
+        "Initial State of Charge": 1,
+        "Typical electrolyte concentration [mol.m-3]": 5600,
+        "Negative electrode reference exchange-current density [A.m-2]": 0.08,
+        "Positive electrode reference exchange-current density [A.m-2]": 0.006,
+        "Negative electrode conductivity [S.m-1]": 500000,
+        "Positive electrode conductivity [S.m-1]": 500000,
+    }
+)
+for model in models:
+    param.process_model(model)
+
+# discretise models
+for model in models:
+    geometry = model.default_geometry
+    param.process_geometry(geometry)
+    var = pybamm.standard_spatial_vars
+    var_pts = {
+        var.x_n: 10,
+        var.x_s: 10,
+        var.x_p: 10,
+        var.r_n: 10,
+        var.r_p: 10,
+        var.y: 10,
+        var.z: 10,
+    }
+    mesh = pybamm.Mesh(geometry, model.default_submesh_types, var_pts)
+    disc = pybamm.Discretisation(mesh, model.default_spatial_methods)
+    disc.process_model(model)
+
+# solve model
+solutions = [None] * len(models)
+t_eval = np.linspace(0, 3600 * 15, 1000)
+for i, model in enumerate(models):
+    solution = model.default_solver.solve(model, t_eval)
+    solutions[i] = solution
+
+# plot
+output_variables = [
+    "Local voltage [V]",
+    "Negative current collector potential [V]",
+    "Positive current collector potential [V]",
+    "X-averaged electrolyte concentration",
+    # "Leading-order current collector current density",
+    "Current collector current density",
+    "Terminal voltage [V]",
+]
+plot = pybamm.QuickPlot(solutions, output_variables)
+plot.dynamic_plot()
diff --git a/examples/scripts/experimental_protocols/cccv.py b/examples/scripts/experimental_protocols/cccv.py
index c04e4eaae..c20dc90b6 100644
--- a/examples/scripts/experimental_protocols/cccv.py
+++ b/examples/scripts/experimental_protocols/cccv.py
@@ -7,15 +7,16 @@ import matplotlib.pyplot as plt
 pybamm.set_logging_level("INFO")
 experiment = pybamm.Experiment(
     [
-        "Discharge at C/10 for 10 hours or until 3.3 V",
+        "Discharge at C/10 for 13 hours or until 3.3 V",
         "Rest for 1 hour",
         "Charge at 1 A until 4.1 V",
         "Hold at 4.1 V until 50 mA",
         "Rest for 1 hour",
     ]
     * 3,
+    period="2 minutes",
 )
-model = pybamm.lithium_ion.DFN()
+model = pybamm.lithium_ion.DFN()  # use {"thermal": "x-lumped"} for thermal effects
 sim = pybamm.Simulation(model, experiment=experiment, solver=pybamm.CasadiSolver())
 sim.solve()
 
diff --git a/examples/scripts/experimental_protocols/cccv_lead_acid.py b/examples/scripts/experimental_protocols/cccv_lead_acid.py
new file mode 100644
index 000000000..4614fd514
--- /dev/null
+++ b/examples/scripts/experimental_protocols/cccv_lead_acid.py
@@ -0,0 +1,19 @@
+#
+# Constant-current constant-voltage charge
+#
+import pybamm
+
+pybamm.set_logging_level("INFO")
+experiment = pybamm.Experiment(
+    [
+        "Discharge at C/2 until 11 V",
+        "Rest for 1 hour",
+        "Charge at C/2 until 14.5 V",
+        "Hold at 14.5 V until 200 mA",
+        "Rest for 1 hour",
+    ]
+)
+model = pybamm.lead_acid.Full()
+sim = pybamm.Simulation(model, experiment=experiment, solver=pybamm.CasadiSolver())
+sim.solve()
+sim.plot()
diff --git a/pybamm/CITATIONS.txt b/pybamm/CITATIONS.txt
index 416790a95..8b77fb447 100644
--- a/pybamm/CITATIONS.txt
+++ b/pybamm/CITATIONS.txt
@@ -123,15 +123,3 @@ journal={ECSarXiv. February},
 volume={7},
 year={2020}
 }
-
-@software{scikit-fem,
-  author       = {Tom Gustafsson and
-                  Geordie McBain},
-  title        = {kinnala/scikit-fem 0.4.0},
-  month        = jan,
-  year         = 2020,
-  publisher    = {Zenodo},
-  version      = {0.4.0},
-  doi          = {10.5281/zenodo.3597656},
-  url          = {https://doi.org/10.5281/zenodo.3597656}
-}
diff --git a/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_conductivity_Landesfeind2019_EC_DMC_1_1.py b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_conductivity_Landesfeind2019_EC_DMC_1_1.py
new file mode 100644
index 000000000..164382f1d
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_conductivity_Landesfeind2019_EC_DMC_1_1.py
@@ -0,0 +1,31 @@
+import electrolyte_conductivity_Landesfeind2019_base as base
+import numpy as np
+
+
+def electrolyte_conductivity_Landesfeind2019_EC_DMC_1_1(c_e, T, T_inf, E_k_e, R_g):
+    """
+    Conductivity of LiPF6 in EC:DMC (1:1) 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.
+    ----------
+    c_e: :class: `numpy.Array`
+        Dimensional electrolyte concentration
+    T: :class: `numpy.Array`
+        Dimensional temperature
+    Returns
+    -------
+    :`numpy.Array`
+        Electrolyte diffusivity
+    """
+    coeffs = np.array([7.98e-1,
+                       2.28e2,
+                       -1.22,
+                       5.09e-1,
+                       -4e-3,
+                       3.79e-3])
+
+    return base.electrolyte_conductivity_Landesfeind2019_base(c_e, T, coeffs)
diff --git a/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_conductivity_Landesfeind2019_EC_EMC_3_7.py b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_conductivity_Landesfeind2019_EC_EMC_3_7.py
new file mode 100644
index 000000000..40330ac1e
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_conductivity_Landesfeind2019_EC_EMC_3_7.py
@@ -0,0 +1,30 @@
+import electrolyte_conductivity_Landesfeind2019_base as base
+import numpy as np
+
+
+def electrolyte_conductivity_Landesfeind2019_EC_EMC_3_7(c_e, T, T_inf, E_k_e, R_g):
+    """
+    Conductivity of LiPF6 in EC:EMC (3:7) 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.
+    ----------
+    c_e: :class: `numpy.Array`
+        Dimensional electrolyte concentration
+    T: :class: `numpy.Array`
+        Dimensional temperature
+    Returns
+    -------
+    :`numpy.Array`
+        Electrolyte diffusivity
+    """
+    coeffs = np.array([5.21e-1,
+                       2.28e2,
+                       -1.06,
+                       3.53e-1,
+                       -3.59e-3,
+                       1.48e-3])
+    return base.electrolyte_conductivity_Landesfeind2019_base(c_e, T, coeffs)
diff --git a/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_conductivity_Landesfeind2019_EMC_FEC_19_1.py b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_conductivity_Landesfeind2019_EMC_FEC_19_1.py
new file mode 100644
index 000000000..9c683adc9
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_conductivity_Landesfeind2019_EMC_FEC_19_1.py
@@ -0,0 +1,30 @@
+import electrolyte_conductivity_Landesfeind2019_base as base
+import numpy as np
+
+
+def electrolyte_conductivity_Landesfeind2019_EMC_FEC_19_1(c_e, T, T_inf, E_k_e, R_g):
+    """
+    Conductivity of LiPF6 in EMC:FEC (19:1) 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.
+    ----------
+    c_e: :class: `numpy.Array`
+        Dimensional electrolyte concentration
+    T: :class: `numpy.Array`
+        Dimensional temperature
+    Returns
+    -------
+    :`numpy.Array`
+        Electrolyte diffusivity
+    """
+    coeffs = np.array([2.51e-2,
+                       1.75e2,
+                       1.23,
+                       2.05e-1,
+                       -8.81e-2,
+                       2.83e-3])
+    return base.electrolyte_conductivity_Landesfeind2019_base(c_e, T, coeffs)
diff --git a/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_conductivity_Landesfeind2019_base.py b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_conductivity_Landesfeind2019_base.py
new file mode 100644
index 000000000..60fe7a1ed
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_conductivity_Landesfeind2019_base.py
@@ -0,0 +1,32 @@
+from pybamm import exp, sqrt
+
+
+def electrolyte_conductivity_Landesfeind2019_base(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.
+    ----------
+    c_e: :class: `numpy.Array`
+        Dimensional electrolyte concentration
+    T: :class: `numpy.Array`
+        Dimensional temperature
+    coeffs: :class: `numpy.Array`
+        Fitting parameter coefficients
+    Returns
+    -------
+    :`numpy.Array`
+        Electrolyte diffusivity
+    """
+    c = c_e / 1000  # mol.m-3 -> mol.l
+    p1, p2, p3, p4, p5, p6 = coeffs
+    A = p1 * (1 + (T - p2))
+    B = (1 + p3 * sqrt(c) + p4 * (1 + p5 * exp(1000 / T)) * c)
+    C = 1 + c**4 * (p6 * exp(1000 / T))
+    sigma_e = A * c * B / C  # mS.cm-1
+
+    return sigma_e / 10
diff --git a/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_diffusivity_Landesfeind2019_EC_DMC_1_1.py b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_diffusivity_Landesfeind2019_EC_DMC_1_1.py
new file mode 100644
index 000000000..dbe94362e
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_diffusivity_Landesfeind2019_EC_DMC_1_1.py
@@ -0,0 +1,29 @@
+import electrolyte_diffusivity_Landesfeind2019_base as base
+import numpy as np
+
+
+def electrolyte_diffusivity_Landesfeind2019_EC_DMC_1_1(c_e, T, T_inf, E_k_e, R_g):
+    """
+    Diffusivity of LiPF6 in EC:DMC (1:1) 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.
+    ----------
+    c_e: :class: `numpy.Array`
+        Dimensional electrolyte concentration
+    T: :class: `numpy.Array`
+        Dimensional temperature
+    Returns
+    -------
+    :`numpy.Array`
+        Electrolyte diffusivity
+    """
+    coeffs = np.array([1.47e3,
+                       1.33,
+                       -1.69e3,
+                       -5.63e2])
+
+    return base.electrolyte_diffusivity_Landesfeind2019_base(c_e, T, coeffs)
diff --git a/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_diffusivity_Landesfeind2019_EC_EMC_3_7.py b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_diffusivity_Landesfeind2019_EC_EMC_3_7.py
new file mode 100644
index 000000000..8af791f5d
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_diffusivity_Landesfeind2019_EC_EMC_3_7.py
@@ -0,0 +1,28 @@
+import electrolyte_diffusivity_Landesfeind2019_base as base
+import numpy as np
+
+
+def electrolyte_diffusivity_Landesfeind2019_EC_EMC_3_7(c_e, T, T_inf, E_k_e, R_g):
+    """
+    Diffusivity of LiPF6 in EC:EMC (3:7) 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.
+    ----------
+    c_e: :class: `numpy.Array`
+        Dimensional electrolyte concentration
+    T: :class: `numpy.Array`
+        Dimensional temperature
+    Returns
+    -------
+    :`numpy.Array`
+        Electrolyte diffusivity
+    """
+    coeffs = np.array([1.01e3,
+                       1.01,
+                       -1.56e3,
+                       -4.87e2])
+    return base.electrolyte_diffusivity_Landesfeind2019_base(c_e, T, coeffs)
diff --git a/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_diffusivity_Landesfeind2019_EMC_FEC_19_1.py b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_diffusivity_Landesfeind2019_EMC_FEC_19_1.py
new file mode 100644
index 000000000..e83349fe4
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_diffusivity_Landesfeind2019_EMC_FEC_19_1.py
@@ -0,0 +1,28 @@
+import electrolyte_diffusivity_Landesfeind2019_base as base
+import numpy as np
+
+
+def electrolyte_diffusivity_Landesfeind2019_EMC_FEC_19_1(c_e, T, T_inf, E_k_e, R_g):
+    """
+    Diffusivity of LiPF6 in EMC:FEC (19:1) 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.
+    ----------
+    c_e: :class: `numpy.Array`
+        Dimensional electrolyte concentration
+    T: :class: `numpy.Array`
+        Dimensional temperature
+    Returns
+    -------
+    :`numpy.Array`
+        Electrolyte diffusivity
+    """
+    coeffs = np.array([5.86e2,
+                       1.33,
+                       -1.38e3,
+                       -5.82e2])
+    return base.electrolyte_diffusivity_Landesfeind2019_base(c_e, T, coeffs)
diff --git a/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_diffusivity_Landesfeind2019_base.py b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_diffusivity_Landesfeind2019_base.py
new file mode 100644
index 000000000..7c78b9415
--- /dev/null
+++ b/pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019/electrolyte_diffusivity_Landesfeind2019_base.py
@@ -0,0 +1,32 @@
+from pybamm import exp
+
+
+def electrolyte_diffusivity_Landesfeind2019_base(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.
+    ----------
+    c_e: :class: `numpy.Array`
+        Dimensional electrolyte concentration
+    T: :class: `numpy.Array`
+        Dimensional temperature
+    coeffs: :class: `numpy.Array`
+        Fitting parameter coefficients
+    Returns
+    -------
+    :`numpy.Array`
+        Electrolyte diffusivity
+    """
+    c = c_e / 1000  # mol.m-3 -> mol.l
+    p1, p2, p3, p4 = coeffs
+    A = p1 * exp(p2 * c)
+    B = exp(p3 / T)
+    C = exp(p4 * c / T)
+    D_e = A * B * C * 1e-10  # m2/s
+
+    return D_e
diff --git a/pybamm/spatial_methods/scikit_finite_element.py b/pybamm/spatial_methods/scikit_finite_element.py
index 48f01d393..a4d8a7693 100644
--- a/pybamm/spatial_methods/scikit_finite_element.py
+++ b/pybamm/spatial_methods/scikit_finite_element.py
@@ -29,7 +29,6 @@ class ScikitFiniteElement(pybamm.SpatialMethod):
 
     def __init__(self, options=None):
         super().__init__(options)
-        pybamm.citations.register("scikit-fem")
 
     def build(self, mesh):
         super().build(mesh)
diff --git a/pybamm/version b/pybamm/version
index 6e91a93f8..c7cff60e5 100644
--- a/pybamm/version
+++ b/pybamm/version
@@ -1,1 +1,1 @@
-0, 2, 0
+0, 1, 0


Test patch:
diff --git a/tests/unit/test_citations.py b/tests/unit/test_citations.py
index 0590120f2..cb7a064c7 100644
--- a/tests/unit/test_citations.py
+++ b/tests/unit/test_citations.py
@@ -74,14 +74,6 @@ class TestCitations(unittest.TestCase):
         pybamm.lead_acid.Full(build=False)
         self.assertIn("sulzer2019physical", citations._papers_to_cite)
 
-    def test_scikit_fem(self):
-        citations = pybamm.citations
-
-        citations._reset()
-        self.assertNotIn("scikit-fem", citations._papers_to_cite)
-        pybamm.ScikitFiniteElement()
-        self.assertIn("scikit-fem", citations._papers_to_cite)
-
     def test_parameter_citations(self):
         citations = pybamm.citations
 
diff --git a/tests/unit/test_parameters/test_parameter_sets/test_Landesfeind2020.py b/tests/unit/test_parameters/test_parameter_sets/test_Landesfeind2020.py
new file mode 100644
index 000000000..0e68ef745
--- /dev/null
+++ b/tests/unit/test_parameters/test_parameter_sets/test_Landesfeind2020.py
@@ -0,0 +1,72 @@
+#
+# Tests for LG M50 parameter set loads
+#
+import pybamm
+import unittest
+import os
+import numpy as np
+
+
+class TestLandesfeind(unittest.TestCase):
+
+    def test_electrolyte_conductivity(self):
+        root = pybamm.root_dir()
+        p = "pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019"
+        k_path = os.path.join(root, p)
+        files = [f for f in os.listdir(k_path) if '.py' in f
+                 and '_base' not in f
+                 and 'conductivity' in f]
+        files.sort()
+        funcs = [pybamm.load_function(os.path.join(k_path, f)) for f in files]
+        T_ref = 298.15
+        T = T_ref + 30.0
+        c = 1000.0
+        k = [np.around(f(c, T, np.nan, np.nan, np.nan).value, 6) for f in funcs]
+        self.assertEqual(k, [1.839786, 1.361015, 0.750259])
+        T += 20
+        k = [np.around(f(c, T, np.nan, np.nan, np.nan).value, 6) for f in funcs]
+        self.assertEqual(k, [2.292425, 1.664438, 0.880755])
+
+        chemistry = pybamm.parameter_sets.Chen2020
+        param = pybamm.ParameterValues(chemistry=chemistry)
+        param['Electrolyte conductivity [S.m-1]'] = funcs[0]
+        model = pybamm.lithium_ion.SPM()
+        sim = pybamm.Simulation(model, parameter_values=param)
+        sim.set_parameters()
+        sim.build()
+
+    def test_electrolyte_diffusivity(self):
+        root = pybamm.root_dir()
+        p = "pybamm/input/parameters/lithium-ion/electrolytes/lipf6_Landesfeind2019"
+        d_path = os.path.join(root, p)
+        files = [f for f in os.listdir(d_path) if '.py' in f
+                 and '_base' not in f
+                 and 'diffusivity' in f]
+        files.sort()
+        funcs = [pybamm.load_function(os.path.join(d_path, f)) for f in files]
+        T_ref = 298.15
+        T = T_ref + 30.0
+        c = 1000.0
+        D = [np.around(f(c, T, np.nan, np.nan, np.nan).value, 16) for f in funcs]
+        self.assertEqual(D, [5.796505e-10, 5.417881e-10, 5.608856e-10])
+        T += 20
+        D = [np.around(f(c, T, np.nan, np.nan, np.nan).value, 16) for f in funcs]
+        self.assertEqual(D, [8.5992e-10, 7.752815e-10, 7.907549e-10])
+
+        chemistry = pybamm.parameter_sets.Chen2020
+        param = pybamm.ParameterValues(chemistry=chemistry)
+        param['Electrolyte diffusivity [m2.s-1]'] = funcs[0]
+        model = pybamm.lithium_ion.SPM()
+        sim = pybamm.Simulation(model, parameter_values=param)
+        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()