From 2788e0583741bf55efd2e4fac006502340bb60ba Mon Sep 17 00:00:00 2001
From: Michael Sinsbeck <michael@sinsbeck.com>
Date: Mon, 29 Aug 2011 15:02:57 +0000
Subject: [PATCH] Copied test/decoupled/2p to test/decoupled/2padaptive as a
 trunc for extension to grid adaption. Not modified yet

git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk@6551 2fb0f335-1f38-0410-981e-8018bf24f1b0
---
 configure.ac                                  |   1 +
 test/decoupled/2padaptive/CMakeLists.txt      |  18 ++
 test/decoupled/2padaptive/Makefile.am         |   8 +
 .../2padaptive/grids/test_transport.dgf       |  11 +
 .../2padaptive/test_impes_adaptive.cc         | 130 ++++++++
 .../2padaptive/test_impes_adaptive_problem.hh | 290 ++++++++++++++++++
 .../test_impes_adaptive_spatialparams.hh      | 128 ++++++++
 test/decoupled/Makefile.am                    |   3 +-
 8 files changed, 588 insertions(+), 1 deletion(-)
 create mode 100644 test/decoupled/2padaptive/CMakeLists.txt
 create mode 100644 test/decoupled/2padaptive/Makefile.am
 create mode 100644 test/decoupled/2padaptive/grids/test_transport.dgf
 create mode 100644 test/decoupled/2padaptive/test_impes_adaptive.cc
 create mode 100644 test/decoupled/2padaptive/test_impes_adaptive_problem.hh
 create mode 100644 test/decoupled/2padaptive/test_impes_adaptive_spatialparams.hh

diff --git a/configure.ac b/configure.ac
index c395bf8396..702ef8b0ac 100644
--- a/configure.ac
+++ b/configure.ac
@@ -73,6 +73,7 @@ AC_CONFIG_FILES([dumux.pc
     test/decoupled/Makefile
     test/decoupled/1p/Makefile
     test/decoupled/2p/Makefile
+    test/decoupled/2padaptive/Makefile
     test/decoupled/2p2c/Makefile
     test/material/Makefile
     test/material/tabulation/Makefile
diff --git a/test/decoupled/2padaptive/CMakeLists.txt b/test/decoupled/2padaptive/CMakeLists.txt
new file mode 100644
index 0000000000..1983f9041f
--- /dev/null
+++ b/test/decoupled/2padaptive/CMakeLists.txt
@@ -0,0 +1,18 @@
+add_definitions(-DYASPGRID -DGRIDDIM=2 -DENABLE_UG)
+
+# add build targets
+ADD_EXECUTABLE("test_impes_adaptive" test_impes.cc)
+TARGET_LINK_LIBRARIES("test_impes_adaptive" ${DumuxLinkLibraries})
+
+# add required libraries and includes to the build flags 
+LINK_DIRECTORIES(${DumuxLinkDirectories})
+INCLUDE_DIRECTORIES(${DumuxIncludeDirectories})
+
+# make sure the grids are present in the build directory
+add_custom_command(TARGET "test_transport"
+                   POST_BUILD
+                   COMMAND ${CMAKE_COMMAND} -E
+                        copy_directory 
+                           "${CMAKE_CURRENT_SOURCE_DIR}/grids"
+                           "${CMAKE_CURRENT_BINARY_DIR}/grids")
+
diff --git a/test/decoupled/2padaptive/Makefile.am b/test/decoupled/2padaptive/Makefile.am
new file mode 100644
index 0000000000..110918e0b1
--- /dev/null
+++ b/test/decoupled/2padaptive/Makefile.am
@@ -0,0 +1,8 @@
+check_PROGRAMS = test_impes_adaptive
+
+noinst_HEADERS = *.hh
+EXTRA_DIST = grids/*.dgf CMakeLists.txt
+
+test_impes_adaptive_SOURCES = test_impes_adaptive.cc
+
+include $(top_srcdir)/am/global-rules
diff --git a/test/decoupled/2padaptive/grids/test_transport.dgf b/test/decoupled/2padaptive/grids/test_transport.dgf
new file mode 100644
index 0000000000..0321c37549
--- /dev/null
+++ b/test/decoupled/2padaptive/grids/test_transport.dgf
@@ -0,0 +1,11 @@
+DGF
+Interval
+0 0   % first corner 
+1 1   % second corner
+10 10   % cells in x and y direction
+# 
+
+BOUNDARYDOMAIN
+default 1    % all boundaries have id 1
+#BOUNDARYDOMAIN
+# unitcube.dgf 
diff --git a/test/decoupled/2padaptive/test_impes_adaptive.cc b/test/decoupled/2padaptive/test_impes_adaptive.cc
new file mode 100644
index 0000000000..42f9bcd0c6
--- /dev/null
+++ b/test/decoupled/2padaptive/test_impes_adaptive.cc
@@ -0,0 +1,130 @@
+/*****************************************************************************
+ *   Copyright (C) 20010 by Markus Wolff                                     *
+ *   Copyright (C) 2007-2008 by Bernd Flemisch                               *
+ *   Copyright (C) 2008-2009 by Andreas Lauser                               *
+ *   Institute of Hydraulic Engineering                                      *
+ *   University of Stuttgart, Germany                                        *
+ *   email: <givenname>.<name>@iws.uni-stuttgart.de                          *
+ *                                                                           *
+ *   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       *
+ *   (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 IMPETtests
+ * \brief test for the sequential 2p model
+ */
+#include "config.h"
+
+#include "test_impes_adaptive_problem.hh"
+
+#include <dune/grid/common/gridinfo.hh>
+
+#include <dune/common/exceptions.hh>
+#include <dune/common/mpihelper.hh>
+
+#include <iostream>
+#include <boost/format.hpp>
+
+
+////////////////////////
+// the main function
+////////////////////////
+void usage(const char *progname)
+{
+    std::cout << boost::format("usage: %s [--restart restartTime] tEnd\n")%progname;
+    exit(1);
+}
+
+int main(int argc, char** argv)
+{
+    try {
+        typedef TTAG(IMPESTestProblem) TypeTag;
+        typedef GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar;
+        typedef GET_PROP_TYPE(TypeTag, PTAG(Grid)) Grid;
+        typedef GET_PROP_TYPE(TypeTag, PTAG(Problem)) Problem;
+        typedef GET_PROP_TYPE(TypeTag, PTAG(TimeManager)) TimeManager;
+        typedef Dune::FieldVector<Scalar, Grid::dimensionworld> GlobalPosition;
+
+        static const int dim = Grid::dimension;
+
+        // initialize MPI, finalize is done automatically on exit
+        Dune::MPIHelper::instance(argc, argv);
+
+        ////////////////////////////////////////////////////////////
+        // parse the command line arguments
+        ////////////////////////////////////////////////////////////
+        if (argc < 2)
+            usage(argv[0]);
+
+        // deal with the restart stuff
+        int argPos = 1;
+        bool restart = false;
+        double restartTime = 0;
+        if (std::string("--restart") == argv[argPos]) {
+            restart = true;
+            ++argPos;
+
+            std::istringstream(argv[argPos++]) >> restartTime;
+        }
+
+        if (argc - argPos != 1) {
+            usage(argv[0]);
+        }
+
+        // read the initial time step and the end time
+        double tEnd, dt;
+        std::istringstream(argv[argPos++]) >> tEnd;
+        dt = tEnd;
+
+        ////////////////////////////////////////////////////////////
+        // create the grid
+        ////////////////////////////////////////////////////////////
+        Dune::FieldVector<int,dim> numCells;
+        numCells[0] = 30;
+        numCells[1] = 6;
+        Dune::FieldVector<double,dim> lowerLeft;
+        lowerLeft[0] = 0;
+        lowerLeft[1] = 0;
+        Dune::FieldVector<double,dim> upperRight;
+        upperRight[0] = 300;
+        upperRight[1] = 60;
+        Dune::FieldVector<bool,dim> periodic(false);
+
+        Grid grid(Dune::MPIHelper::getCommunicator(), upperRight, numCells, periodic, /*overlap=*/1);
+        grid.loadBalance();
+        ////////////////////////////////////////////////////////////
+        // instantiate and run the concrete problem
+        ////////////////////////////////////////////////////////////
+        TimeManager timeManager;
+        Problem problem(timeManager, grid.leafView());
+
+        // load restart file if necessarry
+        if (restart)
+            problem.deserialize(restartTime);
+
+        timeManager.init(problem, 0, dt, tEnd, !restart);
+        timeManager.run();
+        return 0;
+    }
+    catch (Dune::Exception &e) {
+        std::cerr << "Dune reported error: " << e << std::endl;
+    }
+    catch (...) {
+        std::cerr << "Unknown exception thrown!\n";
+        throw;
+    }
+
+    return 3;
+}
diff --git a/test/decoupled/2padaptive/test_impes_adaptive_problem.hh b/test/decoupled/2padaptive/test_impes_adaptive_problem.hh
new file mode 100644
index 0000000000..892b8a30f7
--- /dev/null
+++ b/test/decoupled/2padaptive/test_impes_adaptive_problem.hh
@@ -0,0 +1,290 @@
+/*****************************************************************************
+ *   Copyright (C) 2007-2008 by Klaus Mosthaf                                *
+ *   Copyright (C) 2007-2008 by Bernd Flemisch                               *
+ *   Copyright (C) 2008-2009 by Andreas Lauser                               *
+ *   Institute of Hydraulic Engineering                                      *
+ *   University of Stuttgart, Germany                                        *
+ *   email: <givenname>.<name>@iws.uni-stuttgart.de                          *
+ *                                                                           *
+ *   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       *
+ *   (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
+ *
+ * \brief test problem for the sequential 2p model
+ */
+#ifndef DUMUX_TEST_IMPES_PROBLEM_HH
+#define DUMUX_TEST_IMPES_PROBLEM_HH
+
+#if HAVE_UG
+#include <dune/grid/uggrid.hh>
+#endif
+
+#include <dune/grid/yaspgrid.hh>
+#include <dune/grid/sgrid.hh>
+
+#include <dumux/material/fluidsystems/liquidphase.hh>
+#include <dumux/material/components/simpleh2o.hh>
+#include <dumux/material/components/oil.hh>
+
+#include <dumux/decoupled/2p/impes/impesproblem2p.hh>
+#include <dumux/decoupled/2p/diffusion/fv/fvvelocity2p.hh>
+#include <dumux/decoupled/2p/transport/fv/fvsaturation2p.hh>
+#include <dumux/decoupled/2p/transport/fv/capillarydiffusion.hh>
+#include <dumux/decoupled/2p/transport/fv/gravitypart.hh>
+
+#include "test_impes_adaptive_spatialparams.hh"
+
+#include<dumux/decoupled/2p/transport/fv/evalcflflux_coats.hh>
+
+namespace Dumux
+{
+
+template<class TypeTag>
+class TestIMPESProblem;
+
+//////////
+// Specify the properties
+//////////
+namespace Properties
+{
+NEW_TYPE_TAG(IMPESTestProblem, INHERITS_FROM(DecoupledTwoP, Transport, TestIMPESSpatialParams));
+
+// Set the grid type
+SET_PROP(IMPESTestProblem, Grid)
+{
+    typedef Dune::YaspGrid<2> type;
+    //typedef Dune::SGrid<2, 2> type;
+};
+
+// Set the problem property
+SET_TYPE_PROP(IMPESTestProblem, Problem, Dumux::TestIMPESProblem<TTAG(IMPESTestProblem)>);
+
+// Set the model properties
+SET_TYPE_PROP(IMPESTestProblem, TransportModel, Dumux::FVSaturation2P<TTAG(IMPESTestProblem)>);
+
+SET_TYPE_PROP(IMPESTestProblem, DiffusivePart, Dumux::CapillaryDiffusion<TypeTag>);
+SET_TYPE_PROP(IMPESTestProblem, ConvectivePart, Dumux::GravityPart<TypeTag>);
+
+SET_PROP(IMPESTestProblem, PressureModel)
+{
+    typedef Dumux::FVVelocity2P<TTAG(IMPESTestProblem)> type;
+};
+
+//SET_INT_PROP(IMPESTestProblem, Formulation,
+//        DecoupledTwoPCommonIndices::pnSn);
+
+
+// Set the wetting phase
+SET_PROP(IMPESTestProblem, WettingPhase)
+{
+private:
+    typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar;
+public:
+    typedef Dumux::LiquidPhase<Scalar, Dumux::SimpleH2O<Scalar> > type;
+};
+
+// Set the non-wetting phase
+SET_PROP(IMPESTestProblem, NonwettingPhase)
+{
+private:
+    typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar;
+public:
+    typedef Dumux::LiquidPhase<Scalar, Dumux::SimpleH2O<Scalar> > type;
+};
+
+// Enable gravity
+SET_BOOL_PROP(IMPESTestProblem, EnableGravity, false);
+
+SET_TYPE_PROP(IMPESTestProblem, EvalCflFluxFunction, Dumux::EvalCflFluxCoats<TypeTag>);
+
+SET_SCALAR_PROP(IMPESTestProblem, CFLFactor, 0.95);
+}
+
+/*!
+ * \ingroup IMPETtests
+ *
+ * \brief test problem for the sequential 2p model
+ *
+ * Water is injected from the left side into a rectangular 2D domain also
+ * filled with water. Upper and lower boundary is closed (Neumann = 0),
+ * and there is free outflow on the right side.
+ *
+ * To run the simulation execute the following line in shell:
+ * <tt>./test_impes 1e8</tt>,
+ * where the argument defines the simulation endtime.
+ */
+template<class TypeTag = TTAG(IMPESTestProblem)>
+class TestIMPESProblem: public IMPESProblem2P<TypeTag>
+{
+typedef IMPESProblem2P<TypeTag> ParentType;
+typedef typename GET_PROP_TYPE(TypeTag, PTAG(GridView)) GridView;
+
+typedef typename GET_PROP_TYPE(TypeTag, PTAG(TwoPIndices)) Indices;
+
+typedef typename GET_PROP_TYPE(TypeTag, PTAG(FluidSystem)) FluidSystem;
+typedef typename GET_PROP_TYPE(TypeTag, PTAG(FluidState)) FluidState;
+
+typedef typename GET_PROP_TYPE(TypeTag, PTAG(TimeManager)) TimeManager;
+
+enum
+{
+    dim = GridView::dimension, dimWorld = GridView::dimensionworld
+};
+
+enum
+{
+    wPhaseIdx = Indices::wPhaseIdx, nPhaseIdx = Indices::nPhaseIdx,
+    pWIdx = Indices::pwIdx,
+    SwIdx = Indices::SwIdx,
+    eqIdxPress = Indices::pressEqIdx,
+    eqIdxSat = Indices::satEqIdx
+};
+
+typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar;
+
+typedef typename GridView::Traits::template Codim<0>::Entity Element;
+typedef typename GridView::Intersection Intersection;
+typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition;
+
+typedef typename GET_PROP_TYPE(TypeTag, PTAG(BoundaryTypes)) BoundaryTypes;
+typedef typename GET_PROP(TypeTag, PTAG(SolutionTypes))::PrimaryVariables PrimaryVariables;
+
+public:
+TestIMPESProblem(TimeManager &timeManager, const GridView &gridView) :
+ParentType(timeManager, gridView)
+{
+}
+
+/*!
+ * \name Problem parameters
+ */
+// \{
+
+/*!
+ * \brief The problem name.
+ *
+ * This is used as a prefix for files generated by the simulation.
+ */
+const char *name() const
+{
+    return "test2p";
+}
+
+bool shouldWriteRestartFile() const
+{
+    return false;
+}
+
+/*!
+ * \brief Returns the temperature within the domain.
+ *
+ * This problem assumes a temperature of 10 degrees Celsius.
+ */
+Scalar temperature(const Element& element) const
+{
+    return 273.15 + 10; // -> 10°C
+}
+
+// \}
+
+//! Returns the reference pressure for evaluation of constitutive relations
+Scalar referencePressure(const Element& element) const
+{
+    return 1e5; // -> 10°C
+}
+
+void source(PrimaryVariables &values,const Element& element) const
+{
+    values = 0;
+}
+
+/*!
+* \brief Returns the type of boundary condition.
+*
+* BC for pressure equation can be dirichlet (pressure) or neumann (flux).
+*
+* BC for saturation equation can be dirichlet (saturation), neumann (flux), or outflow.
+*/
+void boundaryTypesAtPos(BoundaryTypes &bcTypes, const GlobalPosition& globalPos) const
+{
+        if (globalPos[0] < eps_)
+        {
+            bcTypes.setAllDirichlet();
+        }
+        else if (globalPos[0] > this->bboxMax()[0] - eps_)
+        {
+            bcTypes.setNeumann(eqIdxPress);
+            bcTypes.setOutflow(eqIdxSat);
+        }
+        // all other boundaries
+        else
+        {
+            bcTypes.setAllNeumann();
+        }
+}
+
+//! set dirichlet condition  (pressure [Pa], saturation [-])
+void dirichletAtPos(PrimaryVariables &values, const GlobalPosition& globalPos) const
+{
+    values = 0;
+    if (globalPos[0] < eps_)
+    {
+        if (GET_PARAM(TypeTag, bool, EnableGravity))
+        {
+            Scalar pRef = referencePressureAtPos(globalPos);
+            Scalar temp = temperatureAtPos(globalPos);
+            Scalar sat = 1;
+
+            FluidState fluidState;
+            fluidState.update(sat, pRef, pRef, temp);
+            values[pWIdx] = (2e5 + (this->bboxMax()[dim-1] - globalPos[dim-1]) * FluidSystem::phaseDensity(wPhaseIdx, temp, pRef, fluidState) * this->gravity().two_norm());
+        }
+        else
+        {
+            values[pWIdx] = 2e5;
+        }
+        values[SwIdx] = 0.8;
+    }
+    else
+    {
+        values[pWIdx] = 2e5;
+        values[SwIdx] = 0.2;
+    }
+}
+
+//! set neumann condition for phases (flux, [kg/(m^2 s)])
+void neumannAtPos(PrimaryVariables &values, const GlobalPosition& globalPos) const
+{
+    values = 0;
+    if (globalPos[0] > this->bboxMax()[0] - eps_)
+    {
+        values[nPhaseIdx] = 3e-4;
+    }
+}
+//! return initial solution -> only saturation values have to be given!
+void initial(PrimaryVariables &values,
+        const Element& element) const
+{
+    values[pWIdx] = 0;
+    values[SwIdx] = 0.2;
+}
+
+private:
+
+static constexpr Scalar eps_ = 1e-6;
+};
+} //end namespace
+
+#endif
diff --git a/test/decoupled/2padaptive/test_impes_adaptive_spatialparams.hh b/test/decoupled/2padaptive/test_impes_adaptive_spatialparams.hh
new file mode 100644
index 0000000000..0f11e9e237
--- /dev/null
+++ b/test/decoupled/2padaptive/test_impes_adaptive_spatialparams.hh
@@ -0,0 +1,128 @@
+/*****************************************************************************
+ *   Copyright (C) 2008-2009 by Markus Wolff                                 *
+ *   Institute of Hydraulic Engineering                                      *
+ *   University of Stuttgart, Germany                                        *
+ *   email: <givenname>.<name>@iws.uni-stuttgart.de                          *
+ *                                                                           *
+ *   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       *
+ *   (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
+ *
+ * \brief spatial parameters for the sequential 2p test
+ */
+#ifndef TEST_IMPES_SPATIALPARAMETERS_HH
+#define TEST_IMPES_SPATIALPARAMETERS_HH
+
+#include <dumux/material/spatialparameters/fvspatialparameters.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/linearmaterial.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/regularizedbrookscorey.hh>
+#include <dumux/material/fluidmatrixinteractions/2p/efftoabslaw.hh>
+
+namespace Dumux
+{
+
+//forward declaration
+template<class TypeTag>
+class TestIMPESSpatialParams;
+
+namespace Properties
+{
+// The spatial parameters TypeTag
+NEW_TYPE_TAG(TestIMPESSpatialParams);
+
+// Set the spatial parameters
+SET_TYPE_PROP(TestIMPESSpatialParams, SpatialParameters, Dumux::TestIMPESSpatialParams<TypeTag>);
+
+// Set the material law
+SET_PROP(TestIMPESSpatialParams, MaterialLaw)
+{
+private:
+    typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar;
+    typedef RegularizedBrooksCorey<Scalar> RawMaterialLaw;
+public:
+    typedef EffToAbsLaw<RawMaterialLaw> type;
+};
+}
+
+/*!
+ *
+ * \ingroup IMPETtests
+ * \brief spatial parameters for the sequential 2p test
+ */
+template<class TypeTag>
+class TestIMPESSpatialParams: public FVSpatialParameters<TypeTag>
+{
+    typedef typename GET_PROP_TYPE(TypeTag, PTAG(Grid)) Grid;
+    typedef typename GET_PROP_TYPE(TypeTag, PTAG(GridView)) GridView;
+    typedef typename GET_PROP_TYPE(TypeTag, PTAG(Scalar)) Scalar;
+    typedef FVSpatialParameters<TypeTag> ParentType;
+    typedef typename Grid::ctype CoordScalar;
+
+    enum
+        {dim=Grid::dimension, dimWorld=Grid::dimensionworld};
+    typedef typename Grid::Traits::template Codim<0>::Entity Element;
+
+    typedef Dune::FieldVector<CoordScalar, dimWorld> GlobalPosition;
+    typedef Dune::FieldMatrix<Scalar,dim,dim> FieldMatrix;
+
+public:
+    typedef typename GET_PROP_TYPE(TypeTag, PTAG(MaterialLaw)) MaterialLaw;
+    typedef typename MaterialLaw::Params MaterialLawParams;
+
+
+    Scalar intrinsicPermeability (const Element& element) const
+    {
+        return 1.0e-7;
+    }
+
+    double porosity(const Element& element) const
+    {
+        return 0.2;
+    }
+
+
+    // return the parameter object for the Brooks-Corey material law which depends on the position
+//    const MaterialLawParams& materialLawParamsAtPos(const GlobalPosition& globalPos) const
+    const MaterialLawParams& materialLawParams(const Element& element) const
+    {
+            return materialLawParams_;
+    }
+
+
+    TestIMPESSpatialParams(const GridView& gridView)
+    : ParentType(gridView)
+    {
+        // residual saturations
+        materialLawParams_.setSwr(0.2);
+        materialLawParams_.setSnr(0.2);
+
+//        // parameters for the Brooks-Corey Law
+//        // entry pressures
+        materialLawParams_.setPe(0);
+//        // Brooks-Corey shape parameters
+        materialLawParams_.setLambda(2);
+
+        // parameters for the linear
+        // entry pressures function
+//        materialLawParams_.setEntryPC(0);
+//        materialLawParams_.setMaxPC(0);
+    }
+
+private:
+    MaterialLawParams materialLawParams_;
+};
+
+} // end namespace
+#endif
diff --git a/test/decoupled/Makefile.am b/test/decoupled/Makefile.am
index 7d5a2780d7..8ac24c502d 100644
--- a/test/decoupled/Makefile.am
+++ b/test/decoupled/Makefile.am
@@ -1,5 +1,6 @@
 SUBDIRS = 1p \
-	  2p  \
+	  2p \
+	  2padaptive \
 	  2p2c
 
 EXTRA_DIST = CMakeLists.txt
-- 
GitLab