Repository: pybamm-team/PyBaMM

Issue:
Comments on pull request 503
Implement the small comments in:

https://github.com/pybamm-team/PyBaMM/pull/503


Discussion:

Patch:
diff --git a/docs/source/models/submodels/interface/index.rst b/docs/source/models/submodels/interface/index.rst
index a7f9e0f06..f741d57c6 100644
--- a/docs/source/models/submodels/interface/index.rst
+++ b/docs/source/models/submodels/interface/index.rst
@@ -5,6 +5,7 @@ Interface
   :maxdepth: 1
 
   base_interface
+  inverse_kinetics/index
   kinetics/index
   lead_acid
   lithium_ion
diff --git a/docs/source/models/submodels/interface/inverse_kinetics/index.rst b/docs/source/models/submodels/interface/inverse_kinetics/index.rst
new file mode 100644
index 000000000..d36fa6110
--- /dev/null
+++ b/docs/source/models/submodels/interface/inverse_kinetics/index.rst
@@ -0,0 +1,7 @@
+Inverse Interface Kinetics
+==========================
+
+.. toctree::
+  :maxdepth: 1
+
+  inverse_butler_volmer
diff --git a/docs/source/models/submodels/interface/inverse_kinetics/inverse_butler_volmer.rst b/docs/source/models/submodels/interface/inverse_kinetics/inverse_butler_volmer.rst
new file mode 100644
index 000000000..21b9ed60d
--- /dev/null
+++ b/docs/source/models/submodels/interface/inverse_kinetics/inverse_butler_volmer.rst
@@ -0,0 +1,5 @@
+Inverse Butler-Volmer
+=====================
+
+.. autoclass:: pybamm.interface.inverse_kinetics.BaseInverseButlerVolmer
+    :members:
diff --git a/docs/source/models/submodels/interface/kinetics/index.rst b/docs/source/models/submodels/interface/kinetics/index.rst
index 2f14f495a..d354d9198 100644
--- a/docs/source/models/submodels/interface/kinetics/index.rst
+++ b/docs/source/models/submodels/interface/kinetics/index.rst
@@ -1,10 +1,9 @@
-Interface
-=========
+Interface Kinetics
+==================
 
 .. toctree::
   :maxdepth: 1
 
   base_kinetics
   butler_volmer
-  inverse_butler_volmer
   tafel
diff --git a/docs/source/models/submodels/interface/kinetics/inverse_butler_volmer.rst b/docs/source/models/submodels/interface/kinetics/inverse_butler_volmer.rst
deleted file mode 100644
index f7bf8b643..000000000
--- a/docs/source/models/submodels/interface/kinetics/inverse_butler_volmer.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-Inverse Butler-Volmer
-=====================
-
-.. autoclass:: pybamm.interface.kinetics.BaseInverseButlerVolmer
-    :members:
diff --git a/pybamm/models/full_battery_models/lead_acid/base_lead_acid_model.py b/pybamm/models/full_battery_models/lead_acid/base_lead_acid_model.py
index 9671bd779..eac516a9d 100644
--- a/pybamm/models/full_battery_models/lead_acid/base_lead_acid_model.py
+++ b/pybamm/models/full_battery_models/lead_acid/base_lead_acid_model.py
@@ -24,9 +24,7 @@ class BaseModel(pybamm.BaseBatteryModel):
     def default_parameter_values(self):
         input_path = os.path.join(pybamm.root_dir(), "input", "parameters", "lead-acid")
         return pybamm.ParameterValues(
-            os.path.join(
-                input_path, "default.csv"
-            ),
+            os.path.join(input_path, "default.csv"),
             {
                 "Typical current [A]": 1,
                 "Current function": os.path.join(
@@ -74,4 +72,3 @@ class BaseModel(pybamm.BaseBatteryModel):
                 "Discharge capacity [A.h]": I * pybamm.t * time_scale / 3600,
             }
         )
-
diff --git a/pybamm/models/submodels/electrolyte/base_electrolyte_conductivity.py b/pybamm/models/submodels/electrolyte/base_electrolyte_conductivity.py
index 58d258ff8..3e7131539 100644
--- a/pybamm/models/submodels/electrolyte/base_electrolyte_conductivity.py
+++ b/pybamm/models/submodels/electrolyte/base_electrolyte_conductivity.py
@@ -149,7 +149,7 @@ class BaseElectrolyteConductivity(pybamm.BaseSubModel):
         pot_scale = self.param.potential_scale
         delta_phi_av = pybamm.average(delta_phi)
 
-        return {
+        variables = {
             self.domain + " electrode surface potential difference": delta_phi,
             "Average "
             + self.domain.lower()
@@ -161,6 +161,8 @@ class BaseElectrolyteConductivity(pybamm.BaseSubModel):
             + " electrode surface potential difference [V]": delta_phi_av * pot_scale,
         }
 
+        return variables
+
     def _get_domain_potential_variables(self, phi_e, domain):
         """
         A private function to obtain the standard variables which
diff --git a/pybamm/models/submodels/interface/base_interface.py b/pybamm/models/submodels/interface/base_interface.py
index 994f89c7b..f61ebc553 100644
--- a/pybamm/models/submodels/interface/base_interface.py
+++ b/pybamm/models/submodels/interface/base_interface.py
@@ -40,7 +40,7 @@ class BaseInterface(pybamm.BaseSubModel):
 
         i_typ = self.param.i_typ
 
-        return {
+        variables = {
             self.domain + " electrode interfacial current density": j,
             "Average "
             + self.domain.lower()
@@ -51,6 +51,8 @@ class BaseInterface(pybamm.BaseSubModel):
             + " electrode interfacial current density [A.m-2]": i_typ * j_av,
         }
 
+        return variables
+
     def _get_standard_whole_cell_interfacial_current_variables(self, variables):
 
         i_typ = self.param.i_typ
@@ -74,7 +76,7 @@ class BaseInterface(pybamm.BaseSubModel):
         i_typ = self.param.i_typ
         j0_av = pybamm.average(j0)
 
-        return {
+        variables = {
             self.domain + " electrode exchange current density": j0,
             "Average "
             + self.domain.lower()
@@ -85,6 +87,8 @@ class BaseInterface(pybamm.BaseSubModel):
             + " electrode exchange current density [A.m-2]": i_typ * j0_av,
         }
 
+        return variables
+
     def _get_standard_whole_cell_exchange_current_variables(self, variables):
 
         i_typ = self.param.i_typ
@@ -108,7 +112,7 @@ class BaseInterface(pybamm.BaseSubModel):
         pot_scale = self.param.potential_scale
         eta_r_av = pybamm.average(eta_r)
 
-        return {
+        variables = {
             self.domain + " electrode reaction overpotential": eta_r,
             "Average "
             + self.domain.lower()
@@ -119,6 +123,8 @@ class BaseInterface(pybamm.BaseSubModel):
             + " electrode reaction overpotential [V]": eta_r_av * pot_scale,
         }
 
+        return variables
+
     def _get_standard_surface_potential_difference_variables(self, delta_phi):
 
         if self.domain == "Negative":
@@ -129,7 +135,7 @@ class BaseInterface(pybamm.BaseSubModel):
 
         delta_phi_av = pybamm.average(delta_phi)
 
-        return {
+        variables = {
             self.domain + " electrode surface potential difference": delta_phi,
             "Average "
             + self.domain.lower()
@@ -142,3 +148,5 @@ class BaseInterface(pybamm.BaseSubModel):
             + " electrode surface potential difference [V]": ocp_ref
             + delta_phi_av * pot_scale,
         }
+
+        return variables
diff --git a/pybamm/models/submodels/interface/inverse_kinetics/__init__.py b/pybamm/models/submodels/interface/inverse_kinetics/__init__.py
new file mode 100644
index 000000000..eff57af1f
--- /dev/null
+++ b/pybamm/models/submodels/interface/inverse_kinetics/__init__.py
@@ -0,0 +1,1 @@
+from .inverse_butler_volmer import BaseInverseButlerVolmer
diff --git a/pybamm/models/submodels/interface/kinetics/inverse_butler_volmer.py b/pybamm/models/submodels/interface/inverse_kinetics/inverse_butler_volmer.py
similarity index 100%
rename from pybamm/models/submodels/interface/kinetics/inverse_butler_volmer.py
rename to pybamm/models/submodels/interface/inverse_kinetics/inverse_butler_volmer.py
diff --git a/pybamm/models/submodels/interface/kinetics/__init__.py b/pybamm/models/submodels/interface/kinetics/__init__.py
index 3e4f4ae2d..aacb13ef4 100644
--- a/pybamm/models/submodels/interface/kinetics/__init__.py
+++ b/pybamm/models/submodels/interface/kinetics/__init__.py
@@ -1,4 +1,3 @@
 from .base_kinetics import BaseModel
 from .butler_volmer import BaseButlerVolmer
-from .inverse_butler_volmer import BaseInverseButlerVolmer
 from .tafel import BaseForwardTafel, BaseBackwardTafel
diff --git a/pybamm/models/submodels/interface/lead_acid.py b/pybamm/models/submodels/interface/lead_acid.py
index d77bd2c32..b4e290327 100644
--- a/pybamm/models/submodels/interface/lead_acid.py
+++ b/pybamm/models/submodels/interface/lead_acid.py
@@ -3,10 +3,10 @@
 #
 import pybamm
 from .base_interface import BaseInterface
-from . import kinetics
+from . import inverse_kinetics, kinetics
 
 
-class BaseModel(BaseInterface, pybamm.lead_acid.BaseModel):
+class BaseInterfaceLeadAcid(BaseInterface):
     """
     Base lead-acid interface class
 
@@ -19,7 +19,6 @@ class BaseModel(BaseInterface, pybamm.lead_acid.BaseModel):
 
 
     **Extends:** :class:`pybamm.interface.BaseInterface`
-    and :class:`pybamm.lead_acid.BaseModel`
     """
 
     def __init__(self, param, domain):
@@ -79,7 +78,7 @@ class BaseModel(BaseInterface, pybamm.lead_acid.BaseModel):
         ocp_av = pybamm.average(ocp)
         ocp_av_dim = pybamm.average(ocp_dim)
 
-        return {
+        variables = {
             self.domain + " electrode open circuit potential": ocp,
             self.domain + " electrode open circuit potential [V]": ocp_dim,
             "Average "
@@ -90,12 +89,26 @@ class BaseModel(BaseInterface, pybamm.lead_acid.BaseModel):
             + " electrode open circuit potential [V]": ocp_av_dim,
         }
 
+        return variables
+
+
+class ButlerVolmer(BaseInterfaceLeadAcid, kinetics.BaseButlerVolmer):
+    """
+    Extends :class:`BaseInterfaceLeadIon` (for exchange-current density, etc) and
+    :class:`kinetics.BaseButlerVolmer` (for kinetics)
+    """
 
-class ButlerVolmer(BaseModel, kinetics.BaseButlerVolmer):
     def __init__(self, param, domain):
         super().__init__(param, domain)
 
 
-class InverseButlerVolmer(BaseModel, kinetics.BaseInverseButlerVolmer):
+class InverseButlerVolmer(
+    BaseInterfaceLeadAcid, inverse_kinetics.BaseInverseButlerVolmer
+):
+    """
+    Extends :class:`BaseInterfaceLeadAcid` (for exchange-current density, etc) and
+    :class:`inverse_kinetics.BaseInverseButlerVolmer` (for kinetics)
+    """
+
     def __init__(self, param, domain):
         super().__init__(param, domain)
diff --git a/pybamm/models/submodels/interface/lithium_ion.py b/pybamm/models/submodels/interface/lithium_ion.py
index 86471bf71..e98861000 100644
--- a/pybamm/models/submodels/interface/lithium_ion.py
+++ b/pybamm/models/submodels/interface/lithium_ion.py
@@ -3,12 +3,12 @@
 #
 import pybamm
 from .base_interface import BaseInterface
-from . import kinetics
+from . import inverse_kinetics, kinetics
 
 
-class BaseModel(BaseInterface, pybamm.lithium_ion.BaseModel):
+class BaseInterfaceLithiumIon(BaseInterface):
     """
-    Base lead-acid interface class
+    Base lthium-ion interface class
 
     Parameters
     ----------
@@ -19,7 +19,6 @@ class BaseModel(BaseInterface, pybamm.lithium_ion.BaseModel):
 
 
     **Extends:** :class:`pybamm.interface.BaseInterface`
-    and :class:`pybamm.lithium_ion.BaseModel`
     """
 
     def __init__(self, param, domain):
@@ -27,7 +26,7 @@ class BaseModel(BaseInterface, pybamm.lithium_ion.BaseModel):
 
     def _get_exchange_current_density(self, variables):
         """
-        A private function to obtain the exchange current density for a lead acid
+        A private function to obtain the exchange current density for a lithium-ion
         deposition reaction.
 
         Parameters
@@ -87,11 +86,23 @@ class BaseModel(BaseInterface, pybamm.lithium_ion.BaseModel):
         }
 
 
-class ButlerVolmer(BaseModel, kinetics.BaseButlerVolmer):
+class ButlerVolmer(BaseInterfaceLithiumIon, kinetics.BaseButlerVolmer):
+    """
+    Extends :class:`BaseInterfaceLithiumIon` (for exchange-current density, etc) and
+    :class:`kinetics.BaseButlerVolmer` (for kinetics)
+    """
+
     def __init__(self, param, domain):
         super().__init__(param, domain)
 
 
-class InverseButlerVolmer(BaseModel, kinetics.BaseInverseButlerVolmer):
+class InverseButlerVolmer(
+    BaseInterfaceLithiumIon, inverse_kinetics.BaseInverseButlerVolmer
+):
+    """
+    Extends :class:`BaseInterfaceLithiumIon` (for exchange-current density, etc) and
+    :class:`inverse_kinetics.BaseInverseButlerVolmer` (for kinetics)
+    """
+
     def __init__(self, param, domain):
         super().__init__(param, domain)


Test patch:
diff --git a/tests/integration/test_models/test_submodels/test_interface/test_butler_volmer.py b/tests/integration/test_models/test_submodels/test_interface/test_butler_volmer.py
index d03c4bc76..d4219771f 100644
--- a/tests/integration/test_models/test_submodels/test_interface/test_butler_volmer.py
+++ b/tests/integration/test_models/test_submodels/test_interface/test_butler_volmer.py
@@ -74,7 +74,8 @@ class TestButlerVolmer(unittest.TestCase):
         ]
 
         # Process parameters
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lithium_ion.BaseModel().default_parameter_values
+
         j_n = parameter_values.process_symbol(j_n)
         j_p = parameter_values.process_symbol(j_p)
         # Test
@@ -96,7 +97,7 @@ class TestButlerVolmer(unittest.TestCase):
         j = pybamm.Concatenation(j_n, pybamm.Broadcast(0, ["separator"]), j_p)
 
         # Process parameters and discretise
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lithium_ion.BaseModel().default_parameter_values
         disc = get_discretisation_for_testing()
         mesh = disc.mesh
         disc.set_variable_slices(
@@ -137,7 +138,7 @@ class TestButlerVolmer(unittest.TestCase):
         param = pybamm.standard_parameters_lead_acid
         model_n = pybamm.interface.lead_acid.ButlerVolmer(param, "Negative")
         model_p = pybamm.interface.lead_acid.ButlerVolmer(param, "Positive")
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values
 
         def j_n(c_e):
             variables = {
@@ -182,7 +183,7 @@ class TestButlerVolmer(unittest.TestCase):
         param = pybamm.standard_parameters_lead_acid
         model_n = pybamm.interface.lead_acid.ButlerVolmer(param, "Negative")
         model_p = pybamm.interface.lead_acid.ButlerVolmer(param, "Positive")
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values
 
         def j_n(delta_phi):
             variables = {
diff --git a/tests/integration/test_models/test_submodels/test_interface/test_lead_acid.py b/tests/integration/test_models/test_submodels/test_interface/test_lead_acid.py
index 707fb3ccb..e2f6de28b 100644
--- a/tests/integration/test_models/test_submodels/test_interface/test_lead_acid.py
+++ b/tests/integration/test_models/test_submodels/test_interface/test_lead_acid.py
@@ -25,9 +25,9 @@ class TestMainReaction(unittest.TestCase):
     def test_creation_main_reaction(self):
         # With intercalation
         param = pybamm.standard_parameters_lead_acid
-        model_n = pybamm.interface.lead_acid.BaseModel(param, "Negative")
+        model_n = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Negative")
         j0_n = model_n._get_exchange_current_density(self.variables)
-        model_p = pybamm.interface.lead_acid.BaseModel(param, "Positive")
+        model_p = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Positive")
         j0_p = model_p._get_exchange_current_density(self.variables)
         self.assertEqual(j0_n.domain, ["negative electrode"])
         self.assertEqual(j0_p.domain, ["positive electrode"])
@@ -35,12 +35,12 @@ class TestMainReaction(unittest.TestCase):
     def test_set_parameters_main_reaction(self):
         # With intercalation
         param = pybamm.standard_parameters_lead_acid
-        model_n = pybamm.interface.lead_acid.BaseModel(param, "Negative")
+        model_n = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Negative")
         j0_n = model_n._get_exchange_current_density(self.variables)
-        model_p = pybamm.interface.lead_acid.BaseModel(param, "Positive")
+        model_p = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Positive")
         j0_p = model_p._get_exchange_current_density(self.variables)
         # Process parameters
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values
         j0_n = parameter_values.process_symbol(j0_n)
         j0_p = parameter_values.process_symbol(j0_p)
         # Test
@@ -52,12 +52,12 @@ class TestMainReaction(unittest.TestCase):
     def test_discretisation_main_reaction(self):
         # With intercalation
         param = pybamm.standard_parameters_lead_acid
-        model_n = pybamm.interface.lead_acid.BaseModel(param, "Negative")
+        model_n = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Negative")
         j0_n = model_n._get_exchange_current_density(self.variables)
-        model_p = pybamm.interface.lead_acid.BaseModel(param, "Positive")
+        model_p = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Positive")
         j0_p = model_p._get_exchange_current_density(self.variables)
         # Process parameters and discretise
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values
         disc = get_discretisation_for_testing()
         mesh = disc.mesh
         disc.set_variable_slices([self.c_e])
@@ -79,9 +79,9 @@ class TestMainReaction(unittest.TestCase):
     def test_diff_main_reaction(self):
         # With intercalation
         param = pybamm.standard_parameters_lead_acid
-        model_n = pybamm.interface.lead_acid.BaseModel(param, "Negative")
-        model_p = pybamm.interface.lead_acid.BaseModel(param, "Positive")
-        parameter_values = model_n.default_parameter_values
+        model_n = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Negative")
+        model_p = pybamm.interface.lead_acid.BaseInterfaceLeadAcid(param, "Positive")
+        parameter_values = pybamm.lead_acid.BaseModel().default_parameter_values
 
         def j0_n(c_e):
             variables = {**self.variables, "Negative electrolyte concentration": c_e}
diff --git a/tests/integration/test_models/test_submodels/test_interface/test_lithium_ion.py b/tests/integration/test_models/test_submodels/test_interface/test_lithium_ion.py
index f8b9104d4..c59ef5a69 100644
--- a/tests/integration/test_models/test_submodels/test_interface/test_lithium_ion.py
+++ b/tests/integration/test_models/test_submodels/test_interface/test_lithium_ion.py
@@ -35,21 +35,29 @@ class TestExchangeCurrentDensity(unittest.TestCase):
 
     def test_creation_lithium_ion(self):
         param = pybamm.standard_parameters_lithium_ion
-        model_n = pybamm.interface.lithium_ion.BaseModel(param, "Negative")
+        model_n = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
+            param, "Negative"
+        )
         j0_n = model_n._get_exchange_current_density(self.variables)
-        model_p = pybamm.interface.lithium_ion.BaseModel(param, "Positive")
+        model_p = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
+            param, "Positive"
+        )
         j0_p = model_p._get_exchange_current_density(self.variables)
         self.assertEqual(j0_n.domain, ["negative electrode"])
         self.assertEqual(j0_p.domain, ["positive electrode"])
 
     def test_set_parameters_lithium_ion(self):
         param = pybamm.standard_parameters_lithium_ion
-        model_n = pybamm.interface.lithium_ion.BaseModel(param, "Negative")
+        model_n = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
+            param, "Negative"
+        )
         j0_n = model_n._get_exchange_current_density(self.variables)
-        model_p = pybamm.interface.lithium_ion.BaseModel(param, "Positive")
+        model_p = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
+            param, "Positive"
+        )
         j0_p = model_p._get_exchange_current_density(self.variables)
         # Process parameters
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lithium_ion.BaseModel().default_parameter_values
         j0_n = parameter_values.process_symbol(j0_n)
         j0_p = parameter_values.process_symbol(j0_p)
         # Test
@@ -60,12 +68,16 @@ class TestExchangeCurrentDensity(unittest.TestCase):
 
     def test_discretisation_lithium_ion(self):
         param = pybamm.standard_parameters_lithium_ion
-        model_n = pybamm.interface.lithium_ion.BaseModel(param, "Negative")
+        model_n = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
+            param, "Negative"
+        )
         j0_n = model_n._get_exchange_current_density(self.variables)
-        model_p = pybamm.interface.lithium_ion.BaseModel(param, "Positive")
+        model_p = pybamm.interface.lithium_ion.BaseInterfaceLithiumIon(
+            param, "Positive"
+        )
         j0_p = model_p._get_exchange_current_density(self.variables)
         # Process parameters and discretise
-        parameter_values = model_n.default_parameter_values
+        parameter_values = pybamm.lithium_ion.BaseModel().default_parameter_values
         disc = get_discretisation_for_testing()
         mesh = disc.mesh
         disc.set_variable_slices(
diff --git a/tests/unit/test_models/test_submodels/test_interface/test_kinetics/test_inverse_butler_volmer.py b/tests/unit/test_models/test_submodels/test_interface/test_inverse_kinetics/test_inverse_butler_volmer.py
similarity index 78%
rename from tests/unit/test_models/test_submodels/test_interface/test_kinetics/test_inverse_butler_volmer.py
rename to tests/unit/test_models/test_submodels/test_interface/test_inverse_kinetics/test_inverse_butler_volmer.py
index 4cb7dd016..3e51def77 100644
--- a/tests/unit/test_models/test_submodels/test_interface/test_kinetics/test_inverse_butler_volmer.py
+++ b/tests/unit/test_models/test_submodels/test_interface/test_inverse_kinetics/test_inverse_butler_volmer.py
@@ -13,14 +13,18 @@ class TestBaseModel(unittest.TestCase):
 
         a = pybamm.Scalar(0)
         variables = {"Negative electrode open circuit potential": a}
-        submodel = pybamm.interface.kinetics.BaseInverseButlerVolmer(param, "Negative")
+        submodel = pybamm.interface.inverse_kinetics.BaseInverseButlerVolmer(
+            param, "Negative"
+        )
         std_tests = tests.StandardSubModelTests(submodel, variables)
 
         with self.assertRaises(NotImplementedError):
             std_tests.test_all()
 
         variables = {"Positive electrode open circuit potential": a}
-        submodel = pybamm.interface.kinetics.BaseInverseButlerVolmer(param, "Positive")
+        submodel = pybamm.interface.inverse_kinetics.BaseInverseButlerVolmer(
+            param, "Positive"
+        )
         std_tests = tests.StandardSubModelTests(submodel, variables)
         with self.assertRaises(NotImplementedError):
             std_tests.test_all()