From 14c0271f4c29453c43e4f1e6886bc3c41ff984bb Mon Sep 17 00:00:00 2001
From: Yue Wang <yue.wang@iws.uni-stuttgart.de>
Date: Sat, 27 Feb 2021 00:03:20 +0100
Subject: [PATCH] [test][1p] Separate properties into their own header

---
 .../1p/compressible/instationary/main.cc      |   5 +-
 .../1p/compressible/instationary/problem.hh   |  66 +---------
 .../compressible/instationary/properties.hh   |  88 +++++++++++++
 .../1p/compressible/stationary/main.cc        |   2 +-
 .../1p/compressible/stationary/problem.hh     |  68 +---------
 .../1p/compressible/stationary/properties.hh  |  86 +++++++++++++
 .../analyticsolution/properties.hh            |   4 +
 .../1p/convergence/discretesolution/main.cc   |   2 +-
 .../convergence/discretesolution/problem.hh   | 106 +++++-----------
 .../discretesolution/properties.hh            |  84 +++++++++++++
 .../1p/convergence/discretesolution/solver.hh |   2 +-
 test/porousmediumflow/1p/fracture2d3d/main.cc |   2 +-
 .../1p/fracture2d3d/problem.hh                |  64 +---------
 .../1p/fracture2d3d/properties.hh             |  91 ++++++++++++++
 .../1p/incompressible/main.cc                 |   3 +-
 .../1p/incompressible/problem.hh              |  85 +------------
 .../1p/incompressible/properties.hh           | 108 ++++++++++++++++
 .../1p/internaldirichlet/problem.hh           |  20 +--
 .../1p/internaldirichlet/properties.hh        |  46 +++++++
 test/porousmediumflow/1p/isothermal/main.cc   |   2 +-
 .../porousmediumflow/1p/isothermal/problem.hh |  67 +---------
 .../1p/isothermal/properties.hh               |  93 ++++++++++++++
 test/porousmediumflow/1p/network1d3d/main.cc  |   2 +-
 .../1p/network1d3d/problem.hh                 |  89 +------------
 .../1p/network1d3d/properties.hh              | 119 ++++++++++++++++++
 .../porousmediumflow/1p/nonisothermal/main.cc |   4 +-
 .../1p/nonisothermal/problem_conduction.hh    |  55 +-------
 .../1p/nonisothermal/problem_convection.hh    |  54 +-------
 .../1p/nonisothermal/properties_conduction.hh |  82 ++++++++++++
 .../1p/nonisothermal/properties_convection.hh |  83 ++++++++++++
 test/porousmediumflow/1p/periodicbc/main.cc   |   2 +-
 .../porousmediumflow/1p/periodicbc/problem.hh |  66 +---------
 .../1p/periodicbc/properties.hh               |  91 ++++++++++++++
 .../1p/pointsources/timedependent/main.cc     |   2 +-
 .../1p/pointsources/timedependent/problem.hh  |  18 ---
 .../pointsources/timedependent/properties.hh  |  47 +++++++
 .../1p/pointsources/timeindependent/main.cc   |   2 +-
 .../pointsources/timeindependent/problem.hh   |  54 +-------
 .../timeindependent/properties.hh             |  81 ++++++++++++
 39 files changed, 1181 insertions(+), 764 deletions(-)
 create mode 100644 test/porousmediumflow/1p/compressible/instationary/properties.hh
 create mode 100644 test/porousmediumflow/1p/compressible/stationary/properties.hh
 create mode 100644 test/porousmediumflow/1p/convergence/discretesolution/properties.hh
 create mode 100644 test/porousmediumflow/1p/fracture2d3d/properties.hh
 create mode 100644 test/porousmediumflow/1p/incompressible/properties.hh
 create mode 100644 test/porousmediumflow/1p/internaldirichlet/properties.hh
 create mode 100644 test/porousmediumflow/1p/isothermal/properties.hh
 create mode 100644 test/porousmediumflow/1p/network1d3d/properties.hh
 create mode 100644 test/porousmediumflow/1p/nonisothermal/properties_conduction.hh
 create mode 100644 test/porousmediumflow/1p/nonisothermal/properties_convection.hh
 create mode 100644 test/porousmediumflow/1p/periodicbc/properties.hh
 create mode 100644 test/porousmediumflow/1p/pointsources/timedependent/properties.hh
 create mode 100644 test/porousmediumflow/1p/pointsources/timeindependent/properties.hh

diff --git a/test/porousmediumflow/1p/compressible/instationary/main.cc b/test/porousmediumflow/1p/compressible/instationary/main.cc
index 509e4eb9fa..d9b60a4b39 100644
--- a/test/porousmediumflow/1p/compressible/instationary/main.cc
+++ b/test/porousmediumflow/1p/compressible/instationary/main.cc
@@ -23,9 +23,6 @@
  */
 
 #include <config.h>
-
-#include "problem.hh"
-
 #include <ctime>
 #include <iostream>
 
@@ -48,6 +45,8 @@
 #include <dumux/io/vtkoutputmodule.hh>
 #include <dumux/io/grid/gridmanager.hh>
 
+#include "properties.hh"
+
 int main(int argc, char** argv)
 {
     using namespace Dumux;
diff --git a/test/porousmediumflow/1p/compressible/instationary/problem.hh b/test/porousmediumflow/1p/compressible/instationary/problem.hh
index 2477aa5cc9..561252815b 100644
--- a/test/porousmediumflow/1p/compressible/instationary/problem.hh
+++ b/test/porousmediumflow/1p/compressible/instationary/problem.hh
@@ -25,73 +25,15 @@
 #ifndef DUMUX_COMPRESSIBLE_ONEP_TEST_PROBLEM_HH
 #define DUMUX_COMPRESSIBLE_ONEP_TEST_PROBLEM_HH
 
-#include <dune/grid/yaspgrid.hh>
-
-#include <dumux/material/components/h2o.hh>
-#include <dumux/material/components/tabulatedcomponent.hh>
-#include <dumux/material/fluidsystems/1pliquid.hh>
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
 
 #include <dumux/common/boundarytypes.hh>
-
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/ccmpfa.hh>
-#include <dumux/discretization/box.hh>
-
 #include <dumux/porousmediumflow/problem.hh>
-#include <dumux/porousmediumflow/1p/model.hh>
-
-#include "spatialparams.hh"
 
+#include <dumux/material/components/h2o.hh>
+#include <dumux/material/components/tabulatedcomponent.hh>
 namespace Dumux {
-// forward declarations
-template<class TypeTag> class OnePTestProblem;
-
-namespace Properties {
-// create the type tag nodes
-// Create new type tags
-namespace TTag {
-struct OnePCompressible { using InheritsFrom = std::tuple<OneP>; };
-struct OnePCompressibleTpfa { using InheritsFrom = std::tuple<OnePCompressible, CCTpfaModel>; };
-struct OnePCompressibleMpfa { using InheritsFrom = std::tuple<OnePCompressible, CCMpfaModel>; };
-struct OnePCompressibleBox { using InheritsFrom = std::tuple<OnePCompressible, BoxModel>; };
-} // end namespace TTag
-
-// Set the grid type
-template<class TypeTag>
-struct Grid<TypeTag, TTag::OnePCompressible> { using type = Dune::YaspGrid<2>; };
-
-// Set the problem type
-template<class TypeTag>
-struct Problem<TypeTag, TTag::OnePCompressible> { using type = OnePTestProblem<TypeTag>; };
-
-// set the spatial params
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::OnePCompressible>
-{
-    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = OnePTestSpatialParams<GridGeometry, Scalar>;
-};
-
-// the fluid system
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::OnePCompressible>
-{
-private:
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-public:
-    using type = FluidSystems::OnePLiquid<Scalar, Components::TabulatedComponent<Components::H2O<Scalar>>>;
-};
-
-// Disable caching (for testing purposes)
-template<class TypeTag>
-struct EnableGridVolumeVariablesCache<TypeTag, TTag::OnePCompressible> { static constexpr bool value = false; };
-template<class TypeTag>
-struct EnableGridFluxVariablesCache<TypeTag, TTag::OnePCompressible> { static constexpr bool value = false; };
-template<class TypeTag>
-struct EnableGridGeometryCache<TypeTag, TTag::OnePCompressible> { static constexpr bool value = false; };
-} // end namespace Properties
-
 /*!
  * \ingroup OnePTests
  * \brief  Test problem for the compressible one-phase model.
diff --git a/test/porousmediumflow/1p/compressible/instationary/properties.hh b/test/porousmediumflow/1p/compressible/instationary/properties.hh
new file mode 100644
index 0000000000..c3e71c6a9b
--- /dev/null
+++ b/test/porousmediumflow/1p/compressible/instationary/properties.hh
@@ -0,0 +1,88 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 3 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup OnePTests
+ * \brief The properties for the incompressible test
+ */
+
+#ifndef DUMUX_COMPRESSIBLE_ONEP_TEST_PROPERTIES_HH
+#define DUMUX_COMPRESSIBLE_ONEP_TEST_PROPERTIES_HH
+
+#include <dune/grid/yaspgrid.hh>
+
+
+#include <dumux/material/fluidsystems/1pliquid.hh>
+
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/ccmpfa.hh>
+#include <dumux/discretization/box.hh>
+
+#include <dumux/porousmediumflow/1p/model.hh>
+
+#include "problem.hh"
+#include "spatialparams.hh"
+
+namespace Dumux::Properties {
+// create the type tag nodes
+// Create new type tags
+namespace TTag {
+struct OnePCompressible { using InheritsFrom = std::tuple<OneP>; };
+struct OnePCompressibleTpfa { using InheritsFrom = std::tuple<OnePCompressible, CCTpfaModel>; };
+struct OnePCompressibleMpfa { using InheritsFrom = std::tuple<OnePCompressible, CCMpfaModel>; };
+struct OnePCompressibleBox { using InheritsFrom = std::tuple<OnePCompressible, BoxModel>; };
+} // end namespace TTag
+
+// Set the grid type
+template<class TypeTag>
+struct Grid<TypeTag, TTag::OnePCompressible> { using type = Dune::YaspGrid<2>; };
+
+// Set the problem type
+template<class TypeTag>
+struct Problem<TypeTag, TTag::OnePCompressible> { using type = OnePTestProblem<TypeTag>; };
+
+// set the spatial params
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::OnePCompressible>
+{
+    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = OnePTestSpatialParams<GridGeometry, Scalar>;
+};
+
+// the fluid system
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::OnePCompressible>
+{
+private:
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+public:
+    using type = FluidSystems::OnePLiquid<Scalar, Components::TabulatedComponent<Components::H2O<Scalar>>>;
+};
+
+// Disable caching (for testing purposes)
+template<class TypeTag>
+struct EnableGridVolumeVariablesCache<TypeTag, TTag::OnePCompressible> { static constexpr bool value = false; };
+template<class TypeTag>
+struct EnableGridFluxVariablesCache<TypeTag, TTag::OnePCompressible> { static constexpr bool value = false; };
+template<class TypeTag>
+struct EnableGridGeometryCache<TypeTag, TTag::OnePCompressible> { static constexpr bool value = false; };
+}
+
+#endif
\ No newline at end of file
diff --git a/test/porousmediumflow/1p/compressible/stationary/main.cc b/test/porousmediumflow/1p/compressible/stationary/main.cc
index 26566d80be..947fa53ad3 100644
--- a/test/porousmediumflow/1p/compressible/stationary/main.cc
+++ b/test/porousmediumflow/1p/compressible/stationary/main.cc
@@ -24,7 +24,7 @@
 
 #include <config.h>
 
-#include "problem.hh"
+#include "properties.hh"
 
 #include <ctime>
 #include <iostream>
diff --git a/test/porousmediumflow/1p/compressible/stationary/problem.hh b/test/porousmediumflow/1p/compressible/stationary/problem.hh
index 2477aa5cc9..b777963f3a 100644
--- a/test/porousmediumflow/1p/compressible/stationary/problem.hh
+++ b/test/porousmediumflow/1p/compressible/stationary/problem.hh
@@ -25,72 +25,16 @@
 #ifndef DUMUX_COMPRESSIBLE_ONEP_TEST_PROBLEM_HH
 #define DUMUX_COMPRESSIBLE_ONEP_TEST_PROBLEM_HH
 
-#include <dune/grid/yaspgrid.hh>
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
+#include <dumux/common/boundarytypes.hh>
 
 #include <dumux/material/components/h2o.hh>
 #include <dumux/material/components/tabulatedcomponent.hh>
-#include <dumux/material/fluidsystems/1pliquid.hh>
-
-#include <dumux/common/boundarytypes.hh>
-
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/ccmpfa.hh>
-#include <dumux/discretization/box.hh>
 
 #include <dumux/porousmediumflow/problem.hh>
-#include <dumux/porousmediumflow/1p/model.hh>
-
-#include "spatialparams.hh"
-
-namespace Dumux {
-// forward declarations
-template<class TypeTag> class OnePTestProblem;
-
-namespace Properties {
-// create the type tag nodes
-// Create new type tags
-namespace TTag {
-struct OnePCompressible { using InheritsFrom = std::tuple<OneP>; };
-struct OnePCompressibleTpfa { using InheritsFrom = std::tuple<OnePCompressible, CCTpfaModel>; };
-struct OnePCompressibleMpfa { using InheritsFrom = std::tuple<OnePCompressible, CCMpfaModel>; };
-struct OnePCompressibleBox { using InheritsFrom = std::tuple<OnePCompressible, BoxModel>; };
-} // end namespace TTag
-
-// Set the grid type
-template<class TypeTag>
-struct Grid<TypeTag, TTag::OnePCompressible> { using type = Dune::YaspGrid<2>; };
-
-// Set the problem type
-template<class TypeTag>
-struct Problem<TypeTag, TTag::OnePCompressible> { using type = OnePTestProblem<TypeTag>; };
-
-// set the spatial params
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::OnePCompressible>
-{
-    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = OnePTestSpatialParams<GridGeometry, Scalar>;
-};
 
-// the fluid system
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::OnePCompressible>
-{
-private:
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-public:
-    using type = FluidSystems::OnePLiquid<Scalar, Components::TabulatedComponent<Components::H2O<Scalar>>>;
-};
-
-// Disable caching (for testing purposes)
-template<class TypeTag>
-struct EnableGridVolumeVariablesCache<TypeTag, TTag::OnePCompressible> { static constexpr bool value = false; };
-template<class TypeTag>
-struct EnableGridFluxVariablesCache<TypeTag, TTag::OnePCompressible> { static constexpr bool value = false; };
-template<class TypeTag>
-struct EnableGridGeometryCache<TypeTag, TTag::OnePCompressible> { static constexpr bool value = false; };
-} // end namespace Properties
+namespace Dumux{
 
 /*!
  * \ingroup OnePTests
@@ -116,8 +60,8 @@ public:
     OnePTestProblem(std::shared_ptr<const GridGeometry> gridGeometry)
     : ParentType(gridGeometry)
     {
-        Components::TabulatedComponent<Components::H2O<Scalar>>::init(272.15, 294.15, 10,
-                                                      1.0e4, 1.0e6, 200);
+        Components::TabulatedComponent<Components::H2O<Scalar>>
+            ::init(272.15, 294.15, 10, 1.0e4, 1.0e6, 200);
     }
 
     /*!
diff --git a/test/porousmediumflow/1p/compressible/stationary/properties.hh b/test/porousmediumflow/1p/compressible/stationary/properties.hh
new file mode 100644
index 0000000000..a5419cf66e
--- /dev/null
+++ b/test/porousmediumflow/1p/compressible/stationary/properties.hh
@@ -0,0 +1,86 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 3 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup OnePTests
+ * \brief The properties for the incompressible test
+ */
+
+#ifndef DUMUX_COMPRESSIBLE_ONEP_TEST_PROPERTIES_HH
+#define DUMUX_COMPRESSIBLE_ONEP_TEST_PROPERTIES_HH
+
+#include <dune/grid/yaspgrid.hh>
+
+#include <dumux/material/fluidsystems/1pliquid.hh>
+
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/ccmpfa.hh>
+#include <dumux/discretization/box.hh>
+
+#include <dumux/porousmediumflow/1p/model.hh>
+
+#include "problem.hh"
+#include "spatialparams.hh"
+
+namespace Dumux::Properties {
+// create the type tag nodes
+// Create new type tags
+namespace TTag {
+struct OnePCompressible { using InheritsFrom = std::tuple<OneP>; };
+struct OnePCompressibleTpfa { using InheritsFrom = std::tuple<OnePCompressible, CCTpfaModel>; };
+struct OnePCompressibleMpfa { using InheritsFrom = std::tuple<OnePCompressible, CCMpfaModel>; };
+struct OnePCompressibleBox { using InheritsFrom = std::tuple<OnePCompressible, BoxModel>; };
+} // end namespace TTag
+
+// Set the grid type
+template<class TypeTag>
+struct Grid<TypeTag, TTag::OnePCompressible> { using type = Dune::YaspGrid<2>; };
+
+// Set the problem type
+template<class TypeTag>
+struct Problem<TypeTag, TTag::OnePCompressible> { using type = OnePTestProblem<TypeTag>; };
+
+// set the spatial params
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::OnePCompressible>
+{
+    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = OnePTestSpatialParams<GridGeometry, Scalar>;
+};
+
+// the fluid system
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::OnePCompressible>
+{
+private:
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+public:
+    using type = FluidSystems::OnePLiquid<Scalar, Components::TabulatedComponent<Components::H2O<Scalar>>>;
+};
+
+// Disable caching (for testing purposes)
+template<class TypeTag>
+struct EnableGridVolumeVariablesCache<TypeTag, TTag::OnePCompressible> { static constexpr bool value = false; };
+template<class TypeTag>
+struct EnableGridFluxVariablesCache<TypeTag, TTag::OnePCompressible> { static constexpr bool value = false; };
+template<class TypeTag>
+struct EnableGridGeometryCache<TypeTag, TTag::OnePCompressible> { static constexpr bool value = false; };
+}
+#endif
diff --git a/test/porousmediumflow/1p/convergence/analyticsolution/properties.hh b/test/porousmediumflow/1p/convergence/analyticsolution/properties.hh
index c72ed92748..46048a9b9d 100644
--- a/test/porousmediumflow/1p/convergence/analyticsolution/properties.hh
+++ b/test/porousmediumflow/1p/convergence/analyticsolution/properties.hh
@@ -40,6 +40,10 @@
 #include "spatialparams.hh"
 #include "problem.hh"
 
+#ifndef GRIDTYPE
+#define GRIDTYPE Dune::YaspGrid<2>
+#endif
+
 namespace Dumux::Properties {
 
 // Create new type tags
diff --git a/test/porousmediumflow/1p/convergence/discretesolution/main.cc b/test/porousmediumflow/1p/convergence/discretesolution/main.cc
index a1e8344c32..0205eedb68 100644
--- a/test/porousmediumflow/1p/convergence/discretesolution/main.cc
+++ b/test/porousmediumflow/1p/convergence/discretesolution/main.cc
@@ -5,7 +5,7 @@
  *                                                                           *
  *   This program is free software: you can redistribute it and/or modify    *
  *   it under the terms of the GNU General Public License as published by    *
- *   the Free Software Foundation, either version 2 of the License, or       *
+ *   the Free Software Foundation, either version 3 of the License, or       *
  *   (at your option) any later version.                                     *
  *                                                                           *
  *   This program is distributed in the hope that it will be useful,         *
diff --git a/test/porousmediumflow/1p/convergence/discretesolution/problem.hh b/test/porousmediumflow/1p/convergence/discretesolution/problem.hh
index cd2a157519..f51d671aaf 100644
--- a/test/porousmediumflow/1p/convergence/discretesolution/problem.hh
+++ b/test/porousmediumflow/1p/convergence/discretesolution/problem.hh
@@ -25,74 +25,22 @@
 #define DUMUX_INCOMPRESSIBLE_ONEP_CONVERGENCETEST_PROBLEM_HH
 
 #include <cmath>
-#include <dune/grid/yaspgrid.hh>
-#include <dune/geometry/quadraturerules.hh>
 
-#include <dumux/common/boundarytypes.hh>
+#include <dune/geometry/quadraturerules.hh>
 
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/ccmpfa.hh>
-#include <dumux/discretization/box.hh>
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
 
+#include <dumux/common/boundarytypes.hh>
 #include <dumux/porousmediumflow/problem.hh>
-#include <dumux/porousmediumflow/1p/model.hh>
-#include <dumux/porousmediumflow/1p/incompressiblelocalresidual.hh>
-
-#include <dumux/material/components/constant.hh>
-#include <dumux/material/fluidsystems/1pliquid.hh>
-
-#include "spatialparams.hh"
 
 namespace Dumux {
-// forward declarations
-template<class TypeTag> class OnePTestProblem;
-
-namespace Properties {
-
-// create the type tag nodes
-namespace TTag {
-struct OnePIncompressible { using InheritsFrom = std::tuple<OneP>; };
-struct OnePIncompressibleTpfa { using InheritsFrom = std::tuple<OnePIncompressible, CCTpfaModel>; };
-struct OnePIncompressibleMpfa { using InheritsFrom = std::tuple<OnePIncompressible, CCMpfaModel>; };
-struct OnePIncompressibleBox { using InheritsFrom = std::tuple<OnePIncompressible, BoxModel>; };
-} // end namespace TTag
-
-// Set the grid type
-template<class TypeTag>
-struct Grid<TypeTag, TTag::OnePIncompressible> { using type = Dune::YaspGrid<2>; };
-
-// Set the problem type
-template<class TypeTag>
-struct Problem<TypeTag, TTag::OnePIncompressible> { using type = OnePTestProblem<TypeTag>; };
-
-// set the spatial params
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::OnePIncompressible>
-{
-    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = OnePTestSpatialParams<GridGeometry, Scalar>;
-};
-
-// use the incompressible local residual (provides analytic jacobian)
-template<class TypeTag>
-struct LocalResidual<TypeTag, TTag::OnePIncompressible> { using type = OnePIncompressibleLocalResidual<TypeTag>; };
-
-// the fluid system
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::OnePIncompressible>
-{
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = FluidSystems::OnePLiquid<Scalar, Components::Constant<0, Scalar> >;
-};
-
-} // end namespace Properties
 
 /*!
  * \ingroup OnePTests
  * \brief problem setup for the convergence test
  */
-template<class TypeTag>
+template <class TypeTag>
 class OnePTestProblem : public PorousMediumFlowProblem<TypeTag>
 {
     using ParentType = PorousMediumFlowProblem<TypeTag>;
@@ -123,7 +71,7 @@ public:
      *        used for which equation on a given boundary control volume.
      * \param globalPos The position of the center of the finite volume
      */
-    BoundaryTypes boundaryTypesAtPos(const GlobalPosition& globalPos) const
+    BoundaryTypes boundaryTypesAtPos(const GlobalPosition &globalPos) const
     {
         BoundaryTypes values;
         values.setAllDirichlet();
@@ -134,8 +82,10 @@ public:
      * \brief Evaluates the boundary conditions for a Dirichlet control volume.
      * \param globalPos The center of the finite volume for which it is to be set.
      */
-    PrimaryVariables dirichletAtPos(const GlobalPosition& globalPos) const
-    { return exact(globalPos); }
+    PrimaryVariables dirichletAtPos(const GlobalPosition &globalPos) const
+    {
+        return exact(globalPos);
+    }
 
     /*!
      * \brief Evaluates the source term within a sub-control volume.
@@ -144,18 +94,18 @@ public:
      * \param elemVolVars The element volume variables
      * \param scv The sub-control volume for which the source term is evaluated
      */
-    template<class ElementVolumeVariables>
-    NumEqVector source(const Element& element,
-                       const FVElementGeometry& fvGeometry,
-                       const ElementVolumeVariables& elemVolVars,
-                       const SubControlVolume& scv) const
+    template <class ElementVolumeVariables>
+    NumEqVector source(const Element &element,
+                        const FVElementGeometry &fvGeometry,
+                        const ElementVolumeVariables &elemVolVars,
+                        const SubControlVolume &scv) const
     {
         static const auto order = getParam<Scalar>("Problem.SourceIntegrationOrder");
         static const auto periodLength = getParam<Scalar>("Problem.ExactSolPeriodLength");
-        const auto& k = this->spatialParams().permeabilityAtPos(scv.center());
+        const auto &k = this->spatialParams().permeabilityAtPos(scv.center());
 
-        using std::sin;
         using std::cos;
+        using std::sin;
 
         const auto eg = element.geometry();
         const auto rule = Dune::QuadratureRules<Scalar, GridView::dimension>::rule(eg.type(), order);
@@ -167,14 +117,14 @@ public:
             const auto x = p[0];
             const auto y = p[1];
 
-            const auto preFactor = -1.0*periodLength*periodLength*M_PI*M_PI;
-            const auto preFactorArg = periodLength*M_PI;
-            const auto sineTerm = sin(preFactorArg*x);
-            const auto cosTerm = cos(preFactorArg*y);
-            const auto secondDeriv = preFactor*sineTerm*cosTerm;
+            const auto preFactor = -1.0 * periodLength * periodLength * M_PI * M_PI;
+            const auto preFactorArg = periodLength * M_PI;
+            const auto sineTerm = sin(preFactorArg * x);
+            const auto cosTerm = cos(preFactorArg * y);
+            const auto secondDeriv = preFactor * sineTerm * cosTerm;
 
             // derivative in x and y are identical
-            source -= 2.0*k*secondDeriv*qp.weight()*eg.integrationElement(qp.position());
+            source -= 2.0 * k * secondDeriv * qp.weight() * eg.integrationElement(qp.position());
         }
 
         source /= eg.volume();
@@ -185,7 +135,9 @@ public:
      * \brief Returns the temperature \f$\mathrm{[K]}\f$ for an isothermal problem.
      */
     Scalar temperature() const
-    { return 283.15; }
+    {
+        return 283.15;
+    }
 
     /*!
      * \brief Returns the exact solution at a position.
@@ -196,12 +148,12 @@ public:
         const auto x = globalPos[0];
         const auto y = globalPos[1];
 
-        using std::sin;
         using std::cos;
+        using std::sin;
 
         static const auto periodLength = getParam<Scalar>("Problem.ExactSolPeriodLength");
-        const auto preFactorArg = periodLength*M_PI;
-        const auto u = sin(preFactorArg*x)*cos(preFactorArg*y);
+        const auto preFactorArg = periodLength * M_PI;
+        const auto u = sin(preFactorArg * x) * cos(preFactorArg * y);
 
         return PrimaryVariables(u);
     }
diff --git a/test/porousmediumflow/1p/convergence/discretesolution/properties.hh b/test/porousmediumflow/1p/convergence/discretesolution/properties.hh
new file mode 100644
index 0000000000..d833179586
--- /dev/null
+++ b/test/porousmediumflow/1p/convergence/discretesolution/properties.hh
@@ -0,0 +1,84 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 3 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup OnePTests
+ * \brief The properties & problem setup for the convergence test
+ */
+#ifndef DUMUX_INCOMPRESSIBLE_ONEP_CONVERGENCETEST_PROPERTIES_HH
+#define DUMUX_INCOMPRESSIBLE_ONEP_CONVERGENCETEST_PROPERTIES_HH
+
+#include <cmath>
+#include <dune/grid/yaspgrid.hh>
+
+
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/ccmpfa.hh>
+#include <dumux/discretization/box.hh>
+
+#include <dumux/porousmediumflow/1p/model.hh>
+#include <dumux/porousmediumflow/1p/incompressiblelocalresidual.hh>
+
+#include <dumux/material/components/constant.hh>
+#include <dumux/material/fluidsystems/1pliquid.hh>
+
+#include "problem.hh"
+#include "spatialparams.hh"
+
+namespace Dumux::Properties {
+
+// create the type tag nodes
+namespace TTag {
+struct OnePIncompressible { using InheritsFrom = std::tuple<OneP>; };
+struct OnePIncompressibleTpfa { using InheritsFrom = std::tuple<OnePIncompressible, CCTpfaModel>; };
+struct OnePIncompressibleMpfa { using InheritsFrom = std::tuple<OnePIncompressible, CCMpfaModel>; };
+struct OnePIncompressibleBox { using InheritsFrom = std::tuple<OnePIncompressible, BoxModel>; };
+} // end namespace TTag
+
+// Set the grid type
+template<class TypeTag>
+struct Grid<TypeTag, TTag::OnePIncompressible> { using type = Dune::YaspGrid<2>; };
+
+// Set the problem type
+template<class TypeTag>
+struct Problem<TypeTag, TTag::OnePIncompressible> { using type = OnePTestProblem<TypeTag>; };
+
+// set the spatial params
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::OnePIncompressible>
+{
+    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = OnePTestSpatialParams<GridGeometry, Scalar>;
+};
+
+// use the incompressible local residual (provides analytic jacobian)
+template<class TypeTag>
+struct LocalResidual<TypeTag, TTag::OnePIncompressible> { using type = OnePIncompressibleLocalResidual<TypeTag>; };
+
+// the fluid system
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::OnePIncompressible>
+{
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = FluidSystems::OnePLiquid<Scalar, Components::Constant<0, Scalar> >;
+};
+
+}
+#endif
diff --git a/test/porousmediumflow/1p/convergence/discretesolution/solver.hh b/test/porousmediumflow/1p/convergence/discretesolution/solver.hh
index 38608680a0..51ce8280a2 100644
--- a/test/porousmediumflow/1p/convergence/discretesolution/solver.hh
+++ b/test/porousmediumflow/1p/convergence/discretesolution/solver.hh
@@ -42,7 +42,7 @@
 #include <dumux/assembly/fvassembler.hh>
 #include <dumux/assembly/diffmethod.hh>
 
-#include "problem.hh"
+#include "properties.hh"
 
 // return type of solveRefinementLevel()
 // stores the grid geometry and the produced solution
diff --git a/test/porousmediumflow/1p/fracture2d3d/main.cc b/test/porousmediumflow/1p/fracture2d3d/main.cc
index 8e8d1e13e0..afed760585 100644
--- a/test/porousmediumflow/1p/fracture2d3d/main.cc
+++ b/test/porousmediumflow/1p/fracture2d3d/main.cc
@@ -32,7 +32,7 @@
 #include <dune/grid/io/file/vtk.hh>
 #include <dune/istl/io.hh>
 
-#include "problem.hh"
+#include "properties.hh"
 
 #include <dumux/common/properties.hh>
 #include <dumux/common/parameters.hh>
diff --git a/test/porousmediumflow/1p/fracture2d3d/problem.hh b/test/porousmediumflow/1p/fracture2d3d/problem.hh
index 51d2673f95..114bb47a5e 100644
--- a/test/porousmediumflow/1p/fracture2d3d/problem.hh
+++ b/test/porousmediumflow/1p/fracture2d3d/problem.hh
@@ -27,72 +27,14 @@
 #ifndef DUMUX_ONEP_FRACTURE_TEST_PROBLEM_HH
 #define DUMUX_ONEP_FRACTURE_TEST_PROBLEM_HH
 
-#if HAVE_DUNE_FOAMGRID
-#include <dune/foamgrid/foamgrid.hh>
-#endif
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
 
-#include <dumux/material/components/simpleh2o.hh>
-#include <dumux/material/fluidsystems/1pliquid.hh>
-#include <dumux/porousmediumflow/1p/model.hh>
-#include <dumux/porousmediumflow/problem.hh>
 #include <dumux/common/boundarytypes.hh>
-
-#include <dumux/discretization/box.hh>
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/ccmpfa.hh>
-
-#include "spatialparams.hh"
+#include <dumux/porousmediumflow/problem.hh>
 
 namespace Dumux {
 
-template <class TypeTag>
-class FractureProblem;
-
-namespace Properties {
-// Create new type tags
-namespace TTag {
-struct Fracture { using InheritsFrom = std::tuple<OneP>; };
-struct FractureBox { using InheritsFrom = std::tuple<Fracture, BoxModel>; };
-struct FractureCCTpfa { using InheritsFrom = std::tuple<Fracture, CCTpfaModel>; };
-struct FractureCCMpfa { using InheritsFrom = std::tuple<Fracture, CCMpfaModel>; };
-} // end namespace TTag
-
-//! Enable caching (more memory, but faster runtime)
-template<class TypeTag>
-struct EnableGridGeometryCache<TypeTag, TTag::Fracture> { static constexpr bool value = true; };
-template<class TypeTag>
-struct EnableGridVolumeVariablesCache<TypeTag, TTag::Fracture> { static constexpr bool value = true; };
-template<class TypeTag>
-struct EnableGridFluxVariablesCache<TypeTag, TTag::Fracture> { static constexpr bool value = true; };
-
-//! The grid type
-#if HAVE_DUNE_FOAMGRID
-template<class TypeTag>
-struct Grid<TypeTag, TTag::Fracture> { using type = Dune::FoamGrid<2, 3>; };
-#endif
-
-// Set the problem property
-template<class TypeTag>
-struct Problem<TypeTag, TTag::Fracture> { using type = Dumux::FractureProblem<TypeTag>; };
-
-// the fluid system
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::Fracture>
-{
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
-};
-// Set the spatial parameters
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::Fracture>
-{
-    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = FractureSpatialParams<GridGeometry, Scalar>;
-};
-
-} // end namespace Properties
-
 /*!
  * \ingroup OnePTests
  * \brief A discrete fracture network embedded in an impermeable matrix.
diff --git a/test/porousmediumflow/1p/fracture2d3d/properties.hh b/test/porousmediumflow/1p/fracture2d3d/properties.hh
new file mode 100644
index 0000000000..a6536aaebd
--- /dev/null
+++ b/test/porousmediumflow/1p/fracture2d3d/properties.hh
@@ -0,0 +1,91 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 3 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup OnePTests
+ * \brief A discrete fracture network embedded in an impermeable matrix.
+ *
+ * The fracture is a 2D network embedded in 3D.
+ */
+
+#ifndef DUMUX_ONEP_FRACTURE_TEST_PROPERTIES_HH
+#define DUMUX_ONEP_FRACTURE_TEST_PROPERTIES_HH
+
+#if HAVE_DUNE_FOAMGRID
+#include <dune/foamgrid/foamgrid.hh>
+#endif
+
+#include <dumux/material/components/simpleh2o.hh>
+#include <dumux/material/fluidsystems/1pliquid.hh>
+
+#include <dumux/porousmediumflow/1p/model.hh>
+
+#include <dumux/discretization/box.hh>
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/ccmpfa.hh>
+
+#include "problem.hh"
+#include "spatialparams.hh"
+
+namespace Dumux::Properties {
+// Create new type tags
+namespace TTag {
+struct Fracture { using InheritsFrom = std::tuple<OneP>; };
+struct FractureBox { using InheritsFrom = std::tuple<Fracture, BoxModel>; };
+struct FractureCCTpfa { using InheritsFrom = std::tuple<Fracture, CCTpfaModel>; };
+struct FractureCCMpfa { using InheritsFrom = std::tuple<Fracture, CCMpfaModel>; };
+} // end namespace TTag
+
+//! Enable caching (more memory, but faster runtime)
+template<class TypeTag>
+struct EnableGridGeometryCache<TypeTag, TTag::Fracture> { static constexpr bool value = true; };
+template<class TypeTag>
+struct EnableGridVolumeVariablesCache<TypeTag, TTag::Fracture> { static constexpr bool value = true; };
+template<class TypeTag>
+struct EnableGridFluxVariablesCache<TypeTag, TTag::Fracture> { static constexpr bool value = true; };
+
+//! The grid type
+#if HAVE_DUNE_FOAMGRID
+template<class TypeTag>
+struct Grid<TypeTag, TTag::Fracture> { using type = Dune::FoamGrid<2, 3>; };
+#endif
+
+// Set the problem property
+template<class TypeTag>
+struct Problem<TypeTag, TTag::Fracture> { using type = Dumux::FractureProblem<TypeTag>; };
+
+// the fluid system
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::Fracture>
+{
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
+};
+// Set the spatial parameters
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::Fracture>
+{
+    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = FractureSpatialParams<GridGeometry, Scalar>;
+};
+
+} // end namespace Dumux::Properties
+
+#endif
diff --git a/test/porousmediumflow/1p/incompressible/main.cc b/test/porousmediumflow/1p/incompressible/main.cc
index 4f3818bcb7..3f8e191a6c 100644
--- a/test/porousmediumflow/1p/incompressible/main.cc
+++ b/test/porousmediumflow/1p/incompressible/main.cc
@@ -48,8 +48,9 @@
 
 #include <dumux/assembly/fvassembler.hh>
 
+#include "properties.hh"
 #include "problem.hh"
-#include "../internaldirichlet/problem.hh"
+#include "../internaldirichlet/properties.hh"
 
 //! Function to write out the scv-wise velocities (overload for mpfa)
 template<class GridGeometry, class GridVariables, class Sol,
diff --git a/test/porousmediumflow/1p/incompressible/problem.hh b/test/porousmediumflow/1p/incompressible/problem.hh
index ffdd06e237..5a8992178d 100644
--- a/test/porousmediumflow/1p/incompressible/problem.hh
+++ b/test/porousmediumflow/1p/incompressible/problem.hh
@@ -25,91 +25,12 @@
 #ifndef DUMUX_INCOMPRESSIBLE_ONEP_TEST_PROBLEM_HH
 #define DUMUX_INCOMPRESSIBLE_ONEP_TEST_PROBLEM_HH
 
-#if HAVE_UG
-#include <dune/grid/uggrid.hh>
-#endif
-#include <dune/grid/yaspgrid.hh>
-#if HAVE_QUADMATH
-#include <dune/common/quadmath.hh>
-#endif
-#include <dumux/common/boundarytypes.hh>
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/ccmpfa.hh>
-#include <dumux/discretization/box.hh>
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
 
+#include <dumux/common/boundarytypes.hh>
 #include <dumux/porousmediumflow/problem.hh>
-#include <dumux/porousmediumflow/1p/model.hh>
-#include <dumux/porousmediumflow/1p/incompressiblelocalresidual.hh>
-
-#include <dumux/material/components/simpleh2o.hh>
-#include <dumux/material/fluidsystems/1pliquid.hh>
-
-#include "spatialparams.hh"
-
-#ifndef GRIDTYPE // default to yasp grid if not provided by CMake
-#define GRIDTYPE Dune::YaspGrid<2>
-#endif
-
 namespace Dumux {
-// forward declarations
-template<class TypeTag> class OnePTestProblem;
-
-namespace Properties {
-// Create new type tags
-namespace TTag {
-struct OnePIncompressible { using InheritsFrom = std::tuple<OneP>; };
-struct OnePIncompressibleTpfa { using InheritsFrom = std::tuple<OnePIncompressible, CCTpfaModel>; };
-struct OnePIncompressibleMpfa { using InheritsFrom = std::tuple<OnePIncompressible, CCMpfaModel>; };
-struct OnePIncompressibleBox { using InheritsFrom = std::tuple<OnePIncompressible, BoxModel>; };
-} // end namespace TTag
-
-// Set the grid type
-template<class TypeTag>
-struct Grid<TypeTag, TTag::OnePIncompressible> { using type = GRIDTYPE; };
-
-// Set the problem type
-template<class TypeTag>
-struct Problem<TypeTag, TTag::OnePIncompressible> { using type = OnePTestProblem<TypeTag>; };
-
-// set the spatial params
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::OnePIncompressible>
-{
-    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = OnePTestSpatialParams<GridGeometry, Scalar>;
-};
-
-// use the incompressible local residual (provides analytic jacobian)
-template<class TypeTag>
-struct LocalResidual<TypeTag, TTag::OnePIncompressible> { using type = OnePIncompressibleLocalResidual<TypeTag>; };
-
-// the fluid system
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::OnePIncompressible>
-{
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
-};
-
-// Enable caching
-template<class TypeTag>
-struct EnableGridVolumeVariablesCache<TypeTag, TTag::OnePIncompressible> { static constexpr bool value = false; };
-template<class TypeTag>
-struct EnableGridFluxVariablesCache<TypeTag, TTag::OnePIncompressible> { static constexpr bool value = false; };
-template<class TypeTag>
-struct EnableGridGeometryCache<TypeTag, TTag::OnePIncompressible> { static constexpr bool value = false; };
-
-// define a TypeTag for a quad precision test
-#if HAVE_QUADMATH
-namespace TTag {
-struct OnePIncompressibleTpfaQuad { using InheritsFrom = std::tuple<OnePIncompressibleTpfa>; };
-} // end namespace TTag
-template<class TypeTag>
-struct Scalar<TypeTag, TTag::OnePIncompressibleTpfaQuad> { using type = Dune::Float128; };
-#endif
-} // end namespace Properties
-
 /*!
  * \ingroup OnePTests
  * \brief  Test problem for the incompressible one-phase model
diff --git a/test/porousmediumflow/1p/incompressible/properties.hh b/test/porousmediumflow/1p/incompressible/properties.hh
new file mode 100644
index 0000000000..d333cff6fa
--- /dev/null
+++ b/test/porousmediumflow/1p/incompressible/properties.hh
@@ -0,0 +1,108 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 3 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup OnePTests
+ * \brief The properties for the incompressible test
+ */
+
+#ifndef DUMUX_INCOMPRESSIBLE_ONEP_TEST_PROBLEM_PROPERTIES_HH
+#define DUMUX_INCOMPRESSIBLE_ONEP_TEST_PROBLEM_PROPERTIES_HH
+
+#if HAVE_UG
+#include <dune/grid/uggrid.hh>
+#endif
+#include <dune/grid/yaspgrid.hh>
+#if HAVE_QUADMATH
+#include <dune/common/quadmath.hh>
+#endif
+#include <dumux/common/boundarytypes.hh>
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/ccmpfa.hh>
+#include <dumux/discretization/box.hh>
+
+#include <dumux/porousmediumflow/1p/model.hh>
+#include <dumux/porousmediumflow/1p/incompressiblelocalresidual.hh>
+
+#include <dumux/material/components/simpleh2o.hh>
+#include <dumux/material/fluidsystems/1pliquid.hh>
+
+#include "problem.hh"
+#include "spatialparams.hh"
+
+#ifndef GRIDTYPE // default to yasp grid if not provided by CMake
+#define GRIDTYPE Dune::YaspGrid<2>
+#endif
+
+namespace Dumux::Properties {
+// Create new type tags
+namespace TTag {
+struct OnePIncompressible { using InheritsFrom = std::tuple<OneP>; };
+struct OnePIncompressibleTpfa { using InheritsFrom = std::tuple<OnePIncompressible, CCTpfaModel>; };
+struct OnePIncompressibleMpfa { using InheritsFrom = std::tuple<OnePIncompressible, CCMpfaModel>; };
+struct OnePIncompressibleBox { using InheritsFrom = std::tuple<OnePIncompressible, BoxModel>; };
+} // end namespace TTag
+
+// Set the grid type
+template<class TypeTag>
+struct Grid<TypeTag, TTag::OnePIncompressible> { using type = GRIDTYPE; };
+
+// Set the problem type
+template<class TypeTag>
+struct Problem<TypeTag, TTag::OnePIncompressible> { using type = OnePTestProblem<TypeTag>; };
+
+// set the spatial params
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::OnePIncompressible>
+{
+    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = OnePTestSpatialParams<GridGeometry, Scalar>;
+};
+
+// use the incompressible local residual (provides analytic jacobian)
+template<class TypeTag>
+struct LocalResidual<TypeTag, TTag::OnePIncompressible> { using type = OnePIncompressibleLocalResidual<TypeTag>; };
+
+// the fluid system
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::OnePIncompressible>
+{
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
+};
+
+// Enable caching
+template<class TypeTag>
+struct EnableGridVolumeVariablesCache<TypeTag, TTag::OnePIncompressible> { static constexpr bool value = false; };
+template<class TypeTag>
+struct EnableGridFluxVariablesCache<TypeTag, TTag::OnePIncompressible> { static constexpr bool value = false; };
+template<class TypeTag>
+struct EnableGridGeometryCache<TypeTag, TTag::OnePIncompressible> { static constexpr bool value = false; };
+
+// define a TypeTag for a quad precision test
+#if HAVE_QUADMATH
+namespace TTag {
+struct OnePIncompressibleTpfaQuad { using InheritsFrom = std::tuple<OnePIncompressibleTpfa>; };
+} // end namespace TTag
+template<class TypeTag>
+struct Scalar<TypeTag, TTag::OnePIncompressibleTpfaQuad> { using type = Dune::Float128; };
+#endif
+}
+#endif
diff --git a/test/porousmediumflow/1p/internaldirichlet/problem.hh b/test/porousmediumflow/1p/internaldirichlet/problem.hh
index 5d925402e6..fa973da804 100644
--- a/test/porousmediumflow/1p/internaldirichlet/problem.hh
+++ b/test/porousmediumflow/1p/internaldirichlet/problem.hh
@@ -25,29 +25,11 @@
 #ifndef DUMUX_INCOMPRESSIBLE_ONEP_TEST_PROBLEM_INTERNAL_DIRICHLET_HH
 #define DUMUX_INCOMPRESSIBLE_ONEP_TEST_PROBLEM_INTERNAL_DIRICHLET_HH
 
-#include <bitset>
 #include <dumux/common/boundarytypes.hh>
+
 #include <test/porousmediumflow/1p/incompressible/problem.hh>
 
 namespace Dumux {
-// forward declarations
-template<class TypeTag> class OnePTestProblemInternalDirichlet;
-
-namespace Properties {
-// Create new type tags
-namespace TTag {
-struct OnePInternalDirichlet {};
-struct OnePInternalDirichletTpfa { using InheritsFrom = std::tuple<OnePInternalDirichlet, OnePIncompressibleTpfa>; };
-struct OnePInternalDirichletBox { using InheritsFrom = std::tuple<OnePInternalDirichlet, OnePIncompressibleBox>; };
-} // end namespace TTag
-
-// Set the problem type
-template<class TypeTag>
-struct Problem<TypeTag, TTag::OnePInternalDirichlet>
-{ using type = OnePTestProblemInternalDirichlet<TypeTag>; };
-
-} // end namespace Properties
-
 /*!
  * \ingroup OnePTests
  * \brief A test for internal Dirichlet constraints
diff --git a/test/porousmediumflow/1p/internaldirichlet/properties.hh b/test/porousmediumflow/1p/internaldirichlet/properties.hh
new file mode 100644
index 0000000000..7f2468b294
--- /dev/null
+++ b/test/porousmediumflow/1p/internaldirichlet/properties.hh
@@ -0,0 +1,46 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 3 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup OnePTests
+ * \brief A test for internal Dirichlet constraints
+ */
+
+#ifndef DUMUX_INCOMPRESSIBLE_ONEP_TEST_PROBLEM_INTERNAL_DIRICHLET_PROPERTIES_HH
+#define DUMUX_INCOMPRESSIBLE_ONEP_TEST_PROBLEM_INTERNAL_DIRICHLET_PROPERTIES_HH
+
+#include <test/porousmediumflow/1p/incompressible/properties.hh>
+#include "problem.hh"
+
+namespace Dumux::Properties {
+// Create new type tags
+namespace TTag {
+struct OnePInternalDirichlet {};
+struct OnePInternalDirichletTpfa { using InheritsFrom = std::tuple<OnePInternalDirichlet, OnePIncompressibleTpfa>; };
+struct OnePInternalDirichletBox { using InheritsFrom = std::tuple<OnePInternalDirichlet, OnePIncompressibleBox>; };
+} // end namespace TTag
+
+// Set the problem type
+template<class TypeTag>
+struct Problem<TypeTag, TTag::OnePInternalDirichlet>
+{ using type = OnePTestProblemInternalDirichlet<TypeTag>; };
+
+} // end namespace Dumux::Properties
+
+#endif
diff --git a/test/porousmediumflow/1p/isothermal/main.cc b/test/porousmediumflow/1p/isothermal/main.cc
index 53eae1f381..70f8f1c5e6 100644
--- a/test/porousmediumflow/1p/isothermal/main.cc
+++ b/test/porousmediumflow/1p/isothermal/main.cc
@@ -32,7 +32,7 @@
 #include <dune/grid/io/file/vtk.hh>
 #include <dune/istl/io.hh>
 
-#include "problem.hh"
+#include "properties.hh"
 
 #include <dumux/common/properties.hh>
 #include <dumux/common/parameters.hh>
diff --git a/test/porousmediumflow/1p/isothermal/problem.hh b/test/porousmediumflow/1p/isothermal/problem.hh
index e011bd383e..0295789b71 100644
--- a/test/porousmediumflow/1p/isothermal/problem.hh
+++ b/test/porousmediumflow/1p/isothermal/problem.hh
@@ -25,76 +25,13 @@
 
 #ifndef DUMUX_1PTEST_PROBLEM_HH
 #define DUMUX_1PTEST_PROBLEM_HH
-
-#include <dune/grid/yaspgrid.hh>
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
 
 #include <dumux/common/boundarytypes.hh>
-
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/ccmpfa.hh>
-#include <dumux/discretization/box.hh>
-#include <dumux/porousmediumflow/1p/model.hh>
 #include <dumux/porousmediumflow/problem.hh>
-#include <dumux/material/components/simpleh2o.hh>
-#include <dumux/material/fluidsystems/1pliquid.hh>
-
-#include "spatialparams.hh"
-
-#if FORCHHEIMER
-#include <dumux/flux/forchheimerslaw.hh>
-#endif
-
 namespace Dumux {
 
-template <class TypeTag>
-class OnePTestProblem;
-
-namespace Properties {
-
-// Create new type tags
-namespace TTag {
-struct OnePTest { using InheritsFrom = std::tuple<OneP>; };
-struct OnePTestBox { using InheritsFrom = std::tuple<BoxModel, OnePTest>; };
-struct OnePTestCCTpfa { using InheritsFrom = std::tuple<CCTpfaModel, OnePTest>; };
-struct OnePTestCCMpfa { using InheritsFrom = std::tuple<CCMpfaModel, OnePTest>; };
-} // end namespace TTag
-
-// Specialize the fluid system type for this type tag
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::OnePTest>
-{
-    using Scalar = GetPropType<TypeTag, Scalar>;
-    using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
-};
-
-// Specialize the grid type for this type tag
-template<class TypeTag>
-struct Grid<TypeTag, TTag::OnePTest>
-{ using type = Dune::YaspGrid<2>; };
-
-// Specialize the problem type for this type tag
-template<class TypeTag>
-struct Problem<TypeTag, TTag::OnePTest>
-{ using type = OnePTestProblem<TypeTag>; };
-
-// Specialize the spatial params type for this type tag
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::OnePTest>
-{
-    using GridGeometry = GetPropType<TypeTag, GridGeometry>;
-    using Scalar = GetPropType<TypeTag, Scalar>;
-    using type = OnePTestSpatialParams<GridGeometry, Scalar>;
-};
-
-#ifdef FORCHHEIMER
-// Specialize the advection type for this type tag
-template<class TypeTag>
-struct AdvectionType<TypeTag, TTag::OnePTest>
-{ using type = ForchheimersLaw<TypeTag>; };
-#endif
-
-} // end namespace Properties
-
 /*!
  * \ingroup OnePTests
  * \brief  Test problem for the one-phase model:
diff --git a/test/porousmediumflow/1p/isothermal/properties.hh b/test/porousmediumflow/1p/isothermal/properties.hh
new file mode 100644
index 0000000000..64c9d189ce
--- /dev/null
+++ b/test/porousmediumflow/1p/isothermal/properties.hh
@@ -0,0 +1,93 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 3 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup OnePTests
+ * \brief A test problem for the one-phase model:
+ * water is flowing from bottom to top through and around a low permeable lens.
+ */
+
+#ifndef DUMUX_1PTEST_PROBLEM_PROPERTIES_HH
+#define DUMUX_1PTEST_PROBLEM_PROPERTIES_HH
+
+#include <dune/grid/yaspgrid.hh>
+
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/ccmpfa.hh>
+#include <dumux/discretization/box.hh>
+
+#include <dumux/porousmediumflow/1p/model.hh>
+
+#include <dumux/material/components/simpleh2o.hh>
+#include <dumux/material/fluidsystems/1pliquid.hh>
+
+#include "problem.hh"
+#include "spatialparams.hh"
+
+#if FORCHHEIMER
+#include <dumux/flux/forchheimerslaw.hh>
+#endif
+
+namespace Dumux::Properties {
+
+// Create new type tags
+namespace TTag {
+struct OnePTest { using InheritsFrom = std::tuple<OneP>; };
+struct OnePTestBox { using InheritsFrom = std::tuple<BoxModel, OnePTest>; };
+struct OnePTestCCTpfa { using InheritsFrom = std::tuple<CCTpfaModel, OnePTest>; };
+struct OnePTestCCMpfa { using InheritsFrom = std::tuple<CCMpfaModel, OnePTest>; };
+} // end namespace TTag
+
+// Specialize the fluid system type for this type tag
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::OnePTest>
+{
+    using Scalar = GetPropType<TypeTag, Scalar>;
+    using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
+};
+
+// Specialize the grid type for this type tag
+template<class TypeTag>
+struct Grid<TypeTag, TTag::OnePTest>
+{ using type = Dune::YaspGrid<2>; };
+
+// Specialize the problem type for this type tag
+template<class TypeTag>
+struct Problem<TypeTag, TTag::OnePTest>
+{ using type = OnePTestProblem<TypeTag>; };
+
+// Specialize the spatial params type for this type tag
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::OnePTest>
+{
+    using GridGeometry = GetPropType<TypeTag, GridGeometry>;
+    using Scalar = GetPropType<TypeTag, Scalar>;
+    using type = OnePTestSpatialParams<GridGeometry, Scalar>;
+};
+
+#ifdef FORCHHEIMER
+// Specialize the advection type for this type tag
+template<class TypeTag>
+struct AdvectionType<TypeTag, TTag::OnePTest>
+{ using type = ForchheimersLaw<TypeTag>; };
+#endif
+
+} // end namespace Dumux::Properties
+
+#endif
diff --git a/test/porousmediumflow/1p/network1d3d/main.cc b/test/porousmediumflow/1p/network1d3d/main.cc
index c82ffbe05f..f0f9d5a25c 100644
--- a/test/porousmediumflow/1p/network1d3d/main.cc
+++ b/test/porousmediumflow/1p/network1d3d/main.cc
@@ -32,7 +32,7 @@
 #include <dune/grid/io/file/vtk.hh>
 #include <dune/istl/io.hh>
 
-#include "problem.hh"
+#include "properties.hh"
 
 #include <dumux/common/properties.hh>
 #include <dumux/common/parameters.hh>
diff --git a/test/porousmediumflow/1p/network1d3d/problem.hh b/test/porousmediumflow/1p/network1d3d/problem.hh
index 8f096b1525..9859ab9734 100644
--- a/test/porousmediumflow/1p/network1d3d/problem.hh
+++ b/test/porousmediumflow/1p/network1d3d/problem.hh
@@ -26,101 +26,18 @@
 #ifndef DUMUX_ONEP_TUBES_TEST_PROBLEM_HH
 #define DUMUX_ONEP_TUBES_TEST_PROBLEM_HH
 
-#include <dune/localfunctions/lagrange/pqkfactory.hh>
 #include <dune/geometry/quadraturerules.hh>
-#include <dune/geometry/type.hh>
-
-#if HAVE_DUNE_FOAMGRID
-#include <dune/foamgrid/foamgrid.hh>
-#endif
+#include <dune/localfunctions/lagrange/pqkfactory.hh>
 
-#include <dumux/common/reorderingdofmapper.hh>
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
 #include <dumux/common/boundarytypes.hh>
 
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/box.hh>
-#include <dumux/discretization/method.hh>
 #include <dumux/discretization/elementsolution.hh>
-#include <dumux/porousmediumflow/1p/model.hh>
 #include <dumux/porousmediumflow/problem.hh>
-#include <dumux/material/components/constant.hh>
-#include <dumux/material/fluidsystems/1pliquid.hh>
-
-#include "spatialparams.hh"
 
 namespace Dumux {
 
-template <class TypeTag>
-class TubesTestProblem;
-
-namespace Properties {
-
-// Create new type tags
-namespace TTag {
-struct TubesTest { using InheritsFrom = std::tuple<OneP>; };
-struct TubesTestCCTpfa { using InheritsFrom = std::tuple<TubesTest, CCTpfaModel>; };
-struct TubesTestBox { using InheritsFrom = std::tuple<TubesTest, BoxModel>; };
-} // end namespace TTag
-
-// Set the grid type
-#if HAVE_DUNE_FOAMGRID
-template<class TypeTag>
-struct Grid<TypeTag, TTag::TubesTest> { using type = Dune::FoamGrid<1, 3>; };
-#endif
-
-// if we have pt scotch use the reordering dof mapper to optimally sort the dofs (cc)
-template<class TypeTag>
-struct GridGeometry<TypeTag, TTag::TubesTestCCTpfa>
-{
-private:
-    static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
-    using GridView = typename GetPropType<TypeTag, Properties::Grid>::LeafGridView;
-
-    using ElementMapper = ReorderingDofMapper<GridView>;
-    using VertexMapper = Dune::MultipleCodimMultipleGeomTypeMapper<GridView>;
-    using MapperTraits = DefaultMapperTraits<GridView, ElementMapper, VertexMapper>;
-public:
-    using type = CCTpfaFVGridGeometry<GridView, enableCache, CCTpfaDefaultGridGeometryTraits<GridView, MapperTraits>>;
-};
-
-// if we have pt scotch use the reordering dof mapper to optimally sort the dofs (box)
-template<class TypeTag>
-struct GridGeometry<TypeTag, TTag::TubesTestBox>
-{
-private:
-    static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
-    using GridView = typename GetPropType<TypeTag, Properties::Grid>::LeafGridView;
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-
-    using ElementMapper = Dune::MultipleCodimMultipleGeomTypeMapper<GridView>;
-    using VertexMapper = ReorderingDofMapper<GridView>;
-    using MapperTraits = DefaultMapperTraits<GridView, ElementMapper, VertexMapper>;
-public:
-    using type = BoxFVGridGeometry<Scalar, GridView, enableCache, BoxDefaultGridGeometryTraits<GridView, MapperTraits>>;
-};
-
-// Set the problem property
-template<class TypeTag>
-struct Problem<TypeTag, TTag::TubesTest> { using type = TubesTestProblem<TypeTag>; };
-
-// Set the spatial parameters
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::TubesTest>
-{
-    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = TubesTestSpatialParams<GridGeometry, Scalar>;
-};
-
-// the fluid system
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::TubesTest>
-{
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = FluidSystems::OnePLiquid<Scalar, Components::Constant<1, Scalar> >;
-};
-} // end namespace Properties
-
 /*!
  * \ingroup OnePTests
  * \brief A test problem for the 1p model: A pipe system with circular cross-section
diff --git a/test/porousmediumflow/1p/network1d3d/properties.hh b/test/porousmediumflow/1p/network1d3d/properties.hh
new file mode 100644
index 0000000000..3f45ecd368
--- /dev/null
+++ b/test/porousmediumflow/1p/network1d3d/properties.hh
@@ -0,0 +1,119 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 3 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup OnePTests
+ * \brief A test problem for the 1p model. A pipe system with circular cross-section
+ *        and a branching point embedded in a three-dimensional world
+ */
+
+#ifndef DUMUX_ONEP_TUBES_TEST_PROBLEM_PROPERTIES_HH
+#define DUMUX_ONEP_TUBES_TEST_PROBLEM_PROPERTIES_HH
+
+
+#include <dune/geometry/type.hh>
+
+#if HAVE_DUNE_FOAMGRID
+#include <dune/foamgrid/foamgrid.hh>
+#endif
+
+#include <dumux/common/reorderingdofmapper.hh>
+
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/box.hh>
+#include <dumux/discretization/method.hh>
+
+
+#include <dumux/porousmediumflow/1p/model.hh>
+
+#include <dumux/material/components/constant.hh>
+#include <dumux/material/fluidsystems/1pliquid.hh>
+
+#include "problem.hh"
+#include "spatialparams.hh"
+
+namespace Dumux::Properties {
+
+// Create new type tags
+namespace TTag {
+struct TubesTest { using InheritsFrom = std::tuple<OneP>; };
+struct TubesTestCCTpfa { using InheritsFrom = std::tuple<TubesTest, CCTpfaModel>; };
+struct TubesTestBox { using InheritsFrom = std::tuple<TubesTest, BoxModel>; };
+} // end namespace TTag
+
+// Set the grid type
+#if HAVE_DUNE_FOAMGRID
+template<class TypeTag>
+struct Grid<TypeTag, TTag::TubesTest> { using type = Dune::FoamGrid<1, 3>; };
+#endif
+
+// if we have pt scotch use the reordering dof mapper to optimally sort the dofs (cc)
+template<class TypeTag>
+struct GridGeometry<TypeTag, TTag::TubesTestCCTpfa>
+{
+private:
+    static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
+    using GridView = typename GetPropType<TypeTag, Properties::Grid>::LeafGridView;
+
+    using ElementMapper = ReorderingDofMapper<GridView>;
+    using VertexMapper = Dune::MultipleCodimMultipleGeomTypeMapper<GridView>;
+    using MapperTraits = DefaultMapperTraits<GridView, ElementMapper, VertexMapper>;
+public:
+    using type = CCTpfaFVGridGeometry<GridView, enableCache, CCTpfaDefaultGridGeometryTraits<GridView, MapperTraits>>;
+};
+
+// if we have pt scotch use the reordering dof mapper to optimally sort the dofs (box)
+template<class TypeTag>
+struct GridGeometry<TypeTag, TTag::TubesTestBox>
+{
+private:
+    static constexpr bool enableCache = getPropValue<TypeTag, Properties::EnableGridGeometryCache>();
+    using GridView = typename GetPropType<TypeTag, Properties::Grid>::LeafGridView;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+
+    using ElementMapper = Dune::MultipleCodimMultipleGeomTypeMapper<GridView>;
+    using VertexMapper = ReorderingDofMapper<GridView>;
+    using MapperTraits = DefaultMapperTraits<GridView, ElementMapper, VertexMapper>;
+public:
+    using type = BoxFVGridGeometry<Scalar, GridView, enableCache, BoxDefaultGridGeometryTraits<GridView, MapperTraits>>;
+};
+
+// Set the problem property
+template<class TypeTag>
+struct Problem<TypeTag, TTag::TubesTest> { using type = TubesTestProblem<TypeTag>; };
+
+// Set the spatial parameters
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::TubesTest>
+{
+    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = TubesTestSpatialParams<GridGeometry, Scalar>;
+};
+
+// the fluid system
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::TubesTest>
+{
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = FluidSystems::OnePLiquid<Scalar, Components::Constant<1, Scalar> >;
+};
+} // end namespace Dumux::Properties
+
+#endif
diff --git a/test/porousmediumflow/1p/nonisothermal/main.cc b/test/porousmediumflow/1p/nonisothermal/main.cc
index c1569a4c94..a60a35b3ac 100644
--- a/test/porousmediumflow/1p/nonisothermal/main.cc
+++ b/test/porousmediumflow/1p/nonisothermal/main.cc
@@ -32,8 +32,8 @@
 #include <dune/grid/io/file/vtk.hh>
 #include <dune/istl/io.hh>
 
-#include "problem_conduction.hh"
-#include "problem_convection.hh"
+#include "properties_conduction.hh"
+#include "properties_convection.hh"
 
 #include <dumux/common/properties.hh>
 #include <dumux/common/parameters.hh>
diff --git a/test/porousmediumflow/1p/nonisothermal/problem_conduction.hh b/test/porousmediumflow/1p/nonisothermal/problem_conduction.hh
index b233b5bab3..dccf141048 100644
--- a/test/porousmediumflow/1p/nonisothermal/problem_conduction.hh
+++ b/test/porousmediumflow/1p/nonisothermal/problem_conduction.hh
@@ -28,63 +28,16 @@
 #define DUMUX_1PNI_CONDUCTION_PROBLEM_HH
 
 #include <cmath>
-#include <dune/grid/yaspgrid.hh>
 
-#include <dumux/common/boundarytypes.hh>
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
 
-#include <dumux/discretization/elementsolution.hh>
-#include <dumux/discretization/box.hh>
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/ccmpfa.hh>
-#include <dumux/discretization/box.hh>
-#include <dumux/porousmediumflow/1p/model.hh>
+#include <dumux/common/boundarytypes.hh>
 #include <dumux/porousmediumflow/problem.hh>
-#include <dumux/material/components/h2o.hh>
-#include <dumux/material/fluidsystems/1pliquid.hh>
-#include <dumux/material/fluidmatrixinteractions/1p/thermalconductivityaverage.hh>
-
-#include "spatialparams.hh"
 
+#include <dumux/material/components/h2o.hh>
 namespace Dumux {
 
-template <class TypeTag>
-class OnePNIConductionProblem;
-
-namespace Properties {
-// Create new type tags
-namespace TTag {
-struct OnePNIConduction { using InheritsFrom = std::tuple<OnePNI>; };
-struct OnePNIConductionBox { using InheritsFrom = std::tuple<OnePNIConduction, BoxModel>; };
-struct OnePNIConductionCCTpfa { using InheritsFrom = std::tuple<OnePNIConduction, CCTpfaModel>; };
-struct OnePNIConductionCCMpfa { using InheritsFrom = std::tuple<OnePNIConduction, CCMpfaModel>; };
-} // end namespace TTag
-
-// Set the grid type
-template<class TypeTag>
-struct Grid<TypeTag, TTag::OnePNIConduction> { using type = Dune::YaspGrid<2>; };
-
-// Set the problem property
-template<class TypeTag>
-struct Problem<TypeTag, TTag::OnePNIConduction> { using type = OnePNIConductionProblem<TypeTag>; };
-
-// Set the fluid system
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::OnePNIConduction>
-{
-    using type = FluidSystems::OnePLiquid<GetPropType<TypeTag, Properties::Scalar>,
-                                          Components::H2O<GetPropType<TypeTag, Properties::Scalar>> >;
-};
-
-// Set the spatial parameters
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::OnePNIConduction>
-{
-    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = OnePNISpatialParams<GridGeometry, Scalar>;
-};
-}
-
 /*!
  * \ingroup OnePTests
  * \brief Test for the OnePModel in combination with the NI model for a conduction problem.
diff --git a/test/porousmediumflow/1p/nonisothermal/problem_convection.hh b/test/porousmediumflow/1p/nonisothermal/problem_convection.hh
index 0bfd075707..e63db68855 100644
--- a/test/porousmediumflow/1p/nonisothermal/problem_convection.hh
+++ b/test/porousmediumflow/1p/nonisothermal/problem_convection.hh
@@ -29,62 +29,16 @@
 #define DUMUX_1PNI_CONVECTION_PROBLEM_HH
 
 #include <cmath>
-#include <dune/grid/yaspgrid.hh>
 
-#include <dumux/common/boundarytypes.hh>
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
 
-#include <dumux/discretization/elementsolution.hh>
-#include <dumux/discretization/box.hh>
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/ccmpfa.hh>
-#include <dumux/porousmediumflow/1p/model.hh>
+#include <dumux/common/boundarytypes.hh>
 #include <dumux/porousmediumflow/problem.hh>
-#include <dumux/material/components/h2o.hh>
-#include <dumux/material/fluidsystems/1pliquid.hh>
-#include <dumux/material/fluidmatrixinteractions/1p/thermalconductivityaverage.hh>
-#include "spatialparams.hh"
 
+#include <dumux/material/components/h2o.hh>
 namespace Dumux {
 
-template <class TypeTag>
-class OnePNIConvectionProblem;
-
-namespace Properties {
-
-// Create new type tags
-namespace TTag {
-struct OnePNIConvection { using InheritsFrom = std::tuple<OnePNI>; };
-struct OnePNIConvectionBox { using InheritsFrom = std::tuple<OnePNIConvection, BoxModel>; };
-struct OnePNIConvectionCCTpfa { using InheritsFrom = std::tuple<OnePNIConvection, CCTpfaModel>; };
-struct OnePNIConvectionCCMpfa { using InheritsFrom = std::tuple<OnePNIConvection, CCMpfaModel>; };
-} // end namespace TTag
-
-// Set the grid type
-template<class TypeTag>
-struct Grid<TypeTag, TTag::OnePNIConvection> { using type = Dune::YaspGrid<1>; };
-
-// Set the problem property
-template<class TypeTag>
-struct Problem<TypeTag, TTag::OnePNIConvection> { using type = OnePNIConvectionProblem<TypeTag>; };
-
-// Set the fluid system
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::OnePNIConvection>
-{
-    using type = FluidSystems::OnePLiquid<GetPropType<TypeTag, Properties::Scalar>,
-                                          Components::H2O<GetPropType<TypeTag, Properties::Scalar>> >;
-};
-
-// Set the spatial parameters
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::OnePNIConvection>
-{
-    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = OnePNISpatialParams<GridGeometry, Scalar>;
-};
-} // end namespace Properties
-
 /*!
  * \ingroup OnePTests
  * \brief Test for the OnePModel in combination with the NI model for a convection problem.
diff --git a/test/porousmediumflow/1p/nonisothermal/properties_conduction.hh b/test/porousmediumflow/1p/nonisothermal/properties_conduction.hh
new file mode 100644
index 0000000000..d982262833
--- /dev/null
+++ b/test/porousmediumflow/1p/nonisothermal/properties_conduction.hh
@@ -0,0 +1,82 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 3 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/**
+ * \file
+ * \ingroup OnePTests
+ * \brief Test for the OnePModel in combination with the NI model for a conduction problem.
+ *
+ * The simulation domain is a tube with an elevated temperature on the left hand side.
+ */
+
+#ifndef DUMUX_1PNI_CONDUCTION_PROBLEM_PROPERTIES_HH
+#define DUMUX_1PNI_CONDUCTION_PROBLEM_PROPERTIES_HH
+
+#include <cmath>
+#include <dune/grid/yaspgrid.hh>
+
+#include <dumux/discretization/elementsolution.hh>
+#include <dumux/discretization/box.hh>
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/ccmpfa.hh>
+#include <dumux/discretization/box.hh>
+
+#include <dumux/porousmediumflow/1p/model.hh>
+
+#include <dumux/material/fluidsystems/1pliquid.hh>
+#include <dumux/material/fluidmatrixinteractions/1p/thermalconductivityaverage.hh>
+
+#include "problem_conduction.hh"
+#include "spatialparams.hh"
+
+namespace Dumux::Properties {
+// Create new type tags
+namespace TTag {
+struct OnePNIConduction { using InheritsFrom = std::tuple<OnePNI>; };
+struct OnePNIConductionBox { using InheritsFrom = std::tuple<OnePNIConduction, BoxModel>; };
+struct OnePNIConductionCCTpfa { using InheritsFrom = std::tuple<OnePNIConduction, CCTpfaModel>; };
+struct OnePNIConductionCCMpfa { using InheritsFrom = std::tuple<OnePNIConduction, CCMpfaModel>; };
+} // end namespace TTag
+
+// Set the grid type
+template<class TypeTag>
+struct Grid<TypeTag, TTag::OnePNIConduction> { using type = Dune::YaspGrid<2>; };
+
+// Set the problem property
+template<class TypeTag>
+struct Problem<TypeTag, TTag::OnePNIConduction> { using type = OnePNIConductionProblem<TypeTag>; };
+
+// Set the fluid system
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::OnePNIConduction>
+{
+    using type = FluidSystems::OnePLiquid<GetPropType<TypeTag, Properties::Scalar>,
+                                          Components::H2O<GetPropType<TypeTag, Properties::Scalar>> >;
+};
+
+// Set the spatial parameters
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::OnePNIConduction>
+{
+    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = OnePNISpatialParams<GridGeometry, Scalar>;
+};
+} // end namespace Dumux
+
+#endif
diff --git a/test/porousmediumflow/1p/nonisothermal/properties_convection.hh b/test/porousmediumflow/1p/nonisothermal/properties_convection.hh
new file mode 100644
index 0000000000..b0aa62911c
--- /dev/null
+++ b/test/porousmediumflow/1p/nonisothermal/properties_convection.hh
@@ -0,0 +1,83 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 3 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/**
+ * \file
+ * \ingroup OnePTests
+ * \brief Test for the OnePModel in combination with the NI model for a convection problem.
+ *
+ * The simulation domain is a tube where water with an elevated temperature is injected
+ * at a constant rate on the left hand side.
+ */
+
+#ifndef DUMUX_1PNI_CONVECTION_PROBLEM_PROPERTIES_HH
+#define DUMUX_1PNI_CONVECTION_PROBLEM_PROPERTIES_HH
+
+#include <cmath>
+#include <dune/grid/yaspgrid.hh>
+
+#include <dumux/discretization/elementsolution.hh>
+#include <dumux/discretization/box.hh>
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/ccmpfa.hh>
+
+#include <dumux/porousmediumflow/1p/model.hh>
+
+#include <dumux/material/fluidsystems/1pliquid.hh>
+#include <dumux/material/fluidmatrixinteractions/1p/thermalconductivityaverage.hh>
+
+#include "problem_convection.hh"
+#include "spatialparams.hh"
+
+namespace Dumux::Properties {
+
+// Create new type tags
+namespace TTag {
+struct OnePNIConvection { using InheritsFrom = std::tuple<OnePNI>; };
+struct OnePNIConvectionBox { using InheritsFrom = std::tuple<OnePNIConvection, BoxModel>; };
+struct OnePNIConvectionCCTpfa { using InheritsFrom = std::tuple<OnePNIConvection, CCTpfaModel>; };
+struct OnePNIConvectionCCMpfa { using InheritsFrom = std::tuple<OnePNIConvection, CCMpfaModel>; };
+} // end namespace TTag
+
+// Set the grid type
+template<class TypeTag>
+struct Grid<TypeTag, TTag::OnePNIConvection> { using type = Dune::YaspGrid<1>; };
+
+// Set the problem property
+template<class TypeTag>
+struct Problem<TypeTag, TTag::OnePNIConvection> { using type = OnePNIConvectionProblem<TypeTag>; };
+
+// Set the fluid system
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::OnePNIConvection>
+{
+    using type = FluidSystems::OnePLiquid<GetPropType<TypeTag, Properties::Scalar>,
+                                          Components::H2O<GetPropType<TypeTag, Properties::Scalar>> >;
+};
+
+// Set the spatial parameters
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::OnePNIConvection>
+{
+    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = OnePNISpatialParams<GridGeometry, Scalar>;
+};
+} // end namespace Dumux::Properties
+
+#endif
diff --git a/test/porousmediumflow/1p/periodicbc/main.cc b/test/porousmediumflow/1p/periodicbc/main.cc
index 9a420da9df..5eff6fc9bf 100644
--- a/test/porousmediumflow/1p/periodicbc/main.cc
+++ b/test/porousmediumflow/1p/periodicbc/main.cc
@@ -43,7 +43,7 @@
 
 #include <dumux/assembly/fvassembler.hh>
 
-#include "problem.hh"
+#include "properties.hh"
 
 int main(int argc, char** argv)
 {
diff --git a/test/porousmediumflow/1p/periodicbc/problem.hh b/test/porousmediumflow/1p/periodicbc/problem.hh
index c2a434613d..3314322229 100644
--- a/test/porousmediumflow/1p/periodicbc/problem.hh
+++ b/test/porousmediumflow/1p/periodicbc/problem.hh
@@ -25,77 +25,15 @@
 #ifndef DUMUX_INCOMPRESSIBLE_ONEP_TEST_PROBLEM_HH
 #define DUMUX_INCOMPRESSIBLE_ONEP_TEST_PROBLEM_HH
 
-#if HAVE_DUNE_SPGRID
-#include <dune/grid/spgrid.hh>
-#endif
-
-#include <dumux/common/boundarytypes.hh>
 
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/ccmpfa.hh>
-#include <dumux/discretization/box.hh>
-
-#include <dumux/porousmediumflow/problem.hh>
-#include <dumux/porousmediumflow/1p/model.hh>
-#include <dumux/porousmediumflow/1p/incompressiblelocalresidual.hh>
-
-#include <dumux/material/components/simpleh2o.hh>
-#include <dumux/material/fluidsystems/1pliquid.hh>
-
-#include "spatialparams.hh"
 
 #ifndef FVGEOMCACHING
 #define FVGEOMCACHING 0
 #endif
 
-namespace Dumux {
-// forward declarations
-template<class TypeTag> class OnePTestProblem;
-
-namespace Properties {
-// create the type tag nodes
-// Create new type tags
-namespace TTag {
-struct OnePIncompressible { using InheritsFrom = std::tuple<OneP>; };
-struct OnePIncompressibleTpfa { using InheritsFrom = std::tuple<OnePIncompressible, CCTpfaModel>; };
-struct OnePIncompressibleMpfa { using InheritsFrom = std::tuple<OnePIncompressible, CCMpfaModel>; };
-struct OnePIncompressibleBox { using InheritsFrom = std::tuple<OnePIncompressible, BoxModel>; };
-} // end namespace TTag
-
-// Set the grid type
-#if HAVE_DUNE_SPGRID
-template<class TypeTag>
-struct Grid<TypeTag, TTag::OnePIncompressible> { using type = Dune::SPGrid<double, 2>; };
-#endif
-
-// Set the problem type
-template<class TypeTag>
-struct Problem<TypeTag, TTag::OnePIncompressible> { using type = OnePTestProblem<TypeTag>; };
-
-// set the spatial params
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::OnePIncompressible> { using type = OnePTestSpatialParams<TypeTag>; };
-
-// use the incompressible local residual (provides analytic jacobian)
-template<class TypeTag>
-struct LocalResidual<TypeTag, TTag::OnePIncompressible> { using type = OnePIncompressibleLocalResidual<TypeTag>; };
-
-// the fluid system
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::OnePIncompressible>
-{
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
-};
+#include <dumux/porousmediumflow/problem.hh>
 
-// Enable caching
-template<class TypeTag>
-struct EnableGridVolumeVariablesCache<TypeTag, TTag::OnePIncompressible> { static constexpr bool value = false; };
-template<class TypeTag>
-struct EnableGridFluxVariablesCache<TypeTag, TTag::OnePIncompressible> { static constexpr bool value = false; };
-template<class TypeTag>
-struct EnableGridGeometryCache<TypeTag, TTag::OnePIncompressible> { static constexpr bool value = FVGEOMCACHING; };
-} // end namespace Properties
+namespace Dumux {
 
 /*!
  * \ingroup OnePTests
diff --git a/test/porousmediumflow/1p/periodicbc/properties.hh b/test/porousmediumflow/1p/periodicbc/properties.hh
new file mode 100644
index 0000000000..596adee974
--- /dev/null
+++ b/test/porousmediumflow/1p/periodicbc/properties.hh
@@ -0,0 +1,91 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 3 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup OnePTests
+ * \brief The properties for the incompressible test
+ */
+
+#ifndef DUMUX_INCOMPRESSIBLE_ONEP_TEST_PROBLEM_PROPERTIES_HH
+#define DUMUX_INCOMPRESSIBLE_ONEP_TEST_PROBLEM_PROPERTIES_HH
+
+#if HAVE_DUNE_SPGRID
+#include <dune/grid/spgrid.hh>
+#endif
+
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/ccmpfa.hh>
+#include <dumux/discretization/box.hh>
+
+#include <dumux/porousmediumflow/1p/model.hh>
+#include <dumux/porousmediumflow/1p/incompressiblelocalresidual.hh>
+
+#include <dumux/material/components/simpleh2o.hh>
+#include <dumux/material/fluidsystems/1pliquid.hh>
+
+#include "problem.hh"
+#include "spatialparams.hh"
+
+#ifndef FVGEOMCACHING
+#define FVGEOMCACHING 0
+#endif
+
+namespace Dumux::Properties {
+namespace TTag {
+struct OnePIncompressible { using InheritsFrom = std::tuple<OneP>; };
+struct OnePIncompressibleTpfa { using InheritsFrom = std::tuple<OnePIncompressible, CCTpfaModel>; };
+struct OnePIncompressibleMpfa { using InheritsFrom = std::tuple<OnePIncompressible, CCMpfaModel>; };
+struct OnePIncompressibleBox { using InheritsFrom = std::tuple<OnePIncompressible, BoxModel>; };
+} // end namespace TTag
+
+// Set the grid type
+#if HAVE_DUNE_SPGRID
+template<class TypeTag>
+struct Grid<TypeTag, TTag::OnePIncompressible> { using type = Dune::SPGrid<double, 2>; };
+#endif
+
+// Set the problem type
+template<class TypeTag>
+struct Problem<TypeTag, TTag::OnePIncompressible> { using type = OnePTestProblem<TypeTag>; };
+
+// set the spatial params
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::OnePIncompressible> { using type = OnePTestSpatialParams<TypeTag>; };
+
+// use the incompressible local residual (provides analytic jacobian)
+template<class TypeTag>
+struct LocalResidual<TypeTag, TTag::OnePIncompressible> { using type = OnePIncompressibleLocalResidual<TypeTag>; };
+
+// the fluid system
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::OnePIncompressible>
+{
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
+};
+
+// Enable caching
+template<class TypeTag>
+struct EnableGridVolumeVariablesCache<TypeTag, TTag::OnePIncompressible> { static constexpr bool value = false; };
+template<class TypeTag>
+struct EnableGridFluxVariablesCache<TypeTag, TTag::OnePIncompressible> { static constexpr bool value = false; };
+template<class TypeTag>
+struct EnableGridGeometryCache<TypeTag, TTag::OnePIncompressible> { static constexpr bool value = FVGEOMCACHING; };
+} // end namespace Dumux::Properties
+#endif
diff --git a/test/porousmediumflow/1p/pointsources/timedependent/main.cc b/test/porousmediumflow/1p/pointsources/timedependent/main.cc
index d6c388f43e..3426e6fb00 100644
--- a/test/porousmediumflow/1p/pointsources/timedependent/main.cc
+++ b/test/porousmediumflow/1p/pointsources/timedependent/main.cc
@@ -32,7 +32,7 @@
 #include <dune/grid/io/file/vtk.hh>
 #include <dune/istl/io.hh>
 
-#include "problem.hh"
+#include "properties.hh"
 
 #include <dumux/common/properties.hh>
 #include <dumux/common/parameters.hh>
diff --git a/test/porousmediumflow/1p/pointsources/timedependent/problem.hh b/test/porousmediumflow/1p/pointsources/timedependent/problem.hh
index 724055ef6a..4e66184c4c 100644
--- a/test/porousmediumflow/1p/pointsources/timedependent/problem.hh
+++ b/test/porousmediumflow/1p/pointsources/timedependent/problem.hh
@@ -29,24 +29,6 @@
 #include "../timeindependent/problem.hh"
 
 namespace Dumux {
-template <class TypeTag>
-class OnePSingularityProblemTimeDependent;
-
-namespace Properties {
-// Create new type tags
-namespace TTag {
-struct OnePSingularityTimeDependentCCTpfa { using InheritsFrom = std::tuple<OnePSingularityCCTpfa>; };
-} // end namespace TTag
-
-// Set the problem property
-template<class TypeTag>
-struct Problem<TypeTag, TTag::OnePSingularityTimeDependentCCTpfa> { using type = OnePSingularityProblemTimeDependent<TypeTag>; };
-
-// point source
-template<class TypeTag>
-struct PointSource<TypeTag, TTag::OnePSingularityTimeDependentCCTpfa> { using type = SolDependentPointSource<TypeTag>; };
-}
-
 /*!
  * \ingroup OnePTests
  * \brief  Test problem for the one-phase model:
diff --git a/test/porousmediumflow/1p/pointsources/timedependent/properties.hh b/test/porousmediumflow/1p/pointsources/timedependent/properties.hh
new file mode 100644
index 0000000000..9456ce8046
--- /dev/null
+++ b/test/porousmediumflow/1p/pointsources/timedependent/properties.hh
@@ -0,0 +1,47 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 3 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup OnePTests
+ * \brief A test problem for the one-phase model:
+ * Water is injected in one single point in the middle of the domain.
+ */
+
+#ifndef DUMUX_1P_SINGULARITY_TIME_DEP_PROBLEM_PROPERTIES_HH
+#define DUMUX_1P_SINGULARITY_TIME_DEP_PROBLEM_PROPERTIES_HH
+
+#include "../timeindependent/properties.hh"
+#include "problem.hh"
+
+namespace Dumux::Properties {
+// Create new type tags
+namespace TTag {
+struct OnePSingularityTimeDependentCCTpfa { using InheritsFrom = std::tuple<OnePSingularityCCTpfa>; };
+} // end namespace TTag
+
+// Set the problem property
+template<class TypeTag>
+struct Problem<TypeTag, TTag::OnePSingularityTimeDependentCCTpfa> { using type = OnePSingularityProblemTimeDependent<TypeTag>; };
+
+// point source
+template<class TypeTag>
+struct PointSource<TypeTag, TTag::OnePSingularityTimeDependentCCTpfa> { using type = SolDependentPointSource<TypeTag>; };
+} // end namespace Dumux::Properties
+
+#endif
diff --git a/test/porousmediumflow/1p/pointsources/timeindependent/main.cc b/test/porousmediumflow/1p/pointsources/timeindependent/main.cc
index ed1c0563a7..6f4e0b8aca 100644
--- a/test/porousmediumflow/1p/pointsources/timeindependent/main.cc
+++ b/test/porousmediumflow/1p/pointsources/timeindependent/main.cc
@@ -32,7 +32,7 @@
 #include <dune/grid/io/file/vtk.hh>
 #include <dune/istl/io.hh>
 
-#include "problem.hh"
+#include "properties.hh"
 
 #include <dumux/common/properties.hh>
 #include <dumux/common/parameters.hh>
diff --git a/test/porousmediumflow/1p/pointsources/timeindependent/problem.hh b/test/porousmediumflow/1p/pointsources/timeindependent/problem.hh
index 24a79d327f..651181f968 100644
--- a/test/porousmediumflow/1p/pointsources/timeindependent/problem.hh
+++ b/test/porousmediumflow/1p/pointsources/timeindependent/problem.hh
@@ -24,63 +24,13 @@
  */
 #ifndef DUMUX_1P_SINGULARITY_PROBLEM_HH
 #define DUMUX_1P_SINGULARITY_PROBLEM_HH
-
-#if HAVE_UG
-#include <dune/grid/uggrid.hh>
-#endif
-#include <dune/grid/yaspgrid.hh>
+#include <dumux/common/properties.hh>
+#include <dumux/common/parameters.hh>
 
 #include <dumux/common/boundarytypes.hh>
-
-#include <dumux/discretization/cctpfa.hh>
-#include <dumux/discretization/box.hh>
-#include <dumux/porousmediumflow/1p/model.hh>
 #include <dumux/porousmediumflow/problem.hh>
-#include <dumux/material/components/simpleh2o.hh>
-#include <dumux/material/fluidsystems/1pliquid.hh>
-#include <dumux/material/spatialparams/fv1pconstant.hh>
-
-#ifndef GRIDTYPE // default to yasp grid if not provided by CMake
-#define GRIDTYPE Dune::YaspGrid<2, Dune::EquidistantOffsetCoordinates<GetPropType<TypeTag, Properties::Scalar>, 2> >
-#endif
 
 namespace Dumux {
-template <class TypeTag>
-class OnePSingularityProblem;
-
-namespace Properties {
-// Create new type tags
-namespace TTag {
-struct OnePSingularity { using InheritsFrom = std::tuple<OneP>; };
-struct OnePSingularityBox { using InheritsFrom = std::tuple<OnePSingularity, BoxModel>; };
-struct OnePSingularityCCTpfa { using InheritsFrom = std::tuple<OnePSingularity, CCTpfaModel>; };
-} // end namespace TTag
-
-// the fluid system
-template<class TypeTag>
-struct FluidSystem<TypeTag, TTag::OnePSingularity>
-{
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
-};
-
-// Set the grid type
-template<class TypeTag>
-struct Grid<TypeTag, TTag::OnePSingularity> { using type = GRIDTYPE; };
-
-// Set the problem property
-template<class TypeTag>
-struct Problem<TypeTag, TTag::OnePSingularity> { using type = OnePSingularityProblem<TypeTag> ; };
-
-// Set the spatial parameters
-template<class TypeTag>
-struct SpatialParams<TypeTag, TTag::OnePSingularity>
-{
-    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
-    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
-    using type = FVSpatialParamsOnePConstant<GridGeometry, Scalar>;
-};
-} // end namespace Dumux
 
 /*!
  * \ingroup OnePTests
diff --git a/test/porousmediumflow/1p/pointsources/timeindependent/properties.hh b/test/porousmediumflow/1p/pointsources/timeindependent/properties.hh
new file mode 100644
index 0000000000..efd3e803b7
--- /dev/null
+++ b/test/porousmediumflow/1p/pointsources/timeindependent/properties.hh
@@ -0,0 +1,81 @@
+// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+// vi: set et ts=4 sw=4 sts=4:
+/*****************************************************************************
+ *   See the file COPYING for full copying permissions.                      *
+ *                                                                           *
+ *   This program is free software: you can redistribute it and/or modify    *
+ *   it under the terms of the GNU General Public License as published by    *
+ *   the Free Software Foundation, either version 3 of the License, or       *
+ *   (at your option) any later version.                                     *
+ *                                                                           *
+ *   This program is distributed in the hope that it will be useful,         *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
+ *   GNU General Public License for more details.                            *
+ *                                                                           *
+ *   You should have received a copy of the GNU General Public License       *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
+ *****************************************************************************/
+/*!
+ * \file
+ * \ingroup OnePTests
+ * \brief A test problem for the one-phase model:
+ * Water is injected in one single point in the middle of the domain.
+ */
+#ifndef DUMUX_1P_SINGULARITY_PROBLEM_PROPERTIES_HH
+#define DUMUX_1P_SINGULARITY_PROBLEM_PROPERTIES_HH
+
+#if HAVE_UG
+#include <dune/grid/uggrid.hh>
+#endif
+#include <dune/grid/yaspgrid.hh>
+
+#include <dumux/discretization/cctpfa.hh>
+#include <dumux/discretization/box.hh>
+#include <dumux/porousmediumflow/1p/model.hh>
+
+#include <dumux/material/components/simpleh2o.hh>
+#include <dumux/material/fluidsystems/1pliquid.hh>
+#include <dumux/material/spatialparams/fv1pconstant.hh>
+
+#ifndef GRIDTYPE // default to yasp grid if not provided by CMake
+#define GRIDTYPE Dune::YaspGrid<2, Dune::EquidistantOffsetCoordinates<GetPropType<TypeTag, Properties::Scalar>, 2> >
+#endif
+
+#include "problem.hh"
+namespace Dumux::Properties {
+// Create new type tags
+namespace TTag {
+struct OnePSingularity { using InheritsFrom = std::tuple<OneP>; };
+struct OnePSingularityBox { using InheritsFrom = std::tuple<OnePSingularity, BoxModel>; };
+struct OnePSingularityCCTpfa { using InheritsFrom = std::tuple<OnePSingularity, CCTpfaModel>; };
+} // end namespace TTag
+
+// the fluid system
+template<class TypeTag>
+struct FluidSystem<TypeTag, TTag::OnePSingularity>
+{
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = FluidSystems::OnePLiquid<Scalar, Components::SimpleH2O<Scalar> >;
+};
+
+// Set the grid type
+template<class TypeTag>
+struct Grid<TypeTag, TTag::OnePSingularity> { using type = GRIDTYPE; };
+
+// Set the problem property
+template<class TypeTag>
+struct Problem<TypeTag, TTag::OnePSingularity> { using type = OnePSingularityProblem<TypeTag> ; };
+
+// Set the spatial parameters
+template<class TypeTag>
+struct SpatialParams<TypeTag, TTag::OnePSingularity>
+{
+    using GridGeometry = GetPropType<TypeTag, Properties::GridGeometry>;
+    using Scalar = GetPropType<TypeTag, Properties::Scalar>;
+    using type = FVSpatialParamsOnePConstant<GridGeometry, Scalar>;
+};
+
+} // end namespace Dumux
+
+#endif
-- 
GitLab