From c1082b22dc7b5621d049727b23231f1451f1ff02 Mon Sep 17 00:00:00 2001
From: Bernd Flemisch <bernd@iws.uni-stuttgart.de>
Date: Tue, 27 Nov 2012 19:50:11 +0000
Subject: [PATCH] implicit branch: add CC* type tags in addition to Box* ones.

git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/branches/implicit@9685 2fb0f335-1f38-0410-981e-8018bf24f1b0
---
 dumux/implicit/1p/1pproperties.hh             |   7 +-
 dumux/implicit/1p/1ppropertydefaults.hh       |  26 ++---
 dumux/implicit/1p2c/1p2cproperties.hh         |   7 +-
 dumux/implicit/1p2c/1p2cpropertydefaults.hh   |  28 ++---
 dumux/implicit/2p/2pproperties.hh             |   7 +-
 dumux/implicit/2p/2ppropertydefaults.hh       |  36 +++----
 dumux/implicit/2p2c/2p2cproperties.hh         |   7 +-
 dumux/implicit/2p2c/2p2cpropertydefaults.hh   |  36 +++----
 dumux/implicit/2p2cni/2p2cniproperties.hh     |   6 +-
 .../implicit/2p2cni/2p2cnipropertydefaults.hh |  12 +--
 dumux/implicit/2pdfm/2pdfmproperties.hh       |   7 +-
 dumux/implicit/2pdfm/2pdfmpropertydefaults.hh |  36 +++----
 dumux/implicit/2pni/2pniproperties.hh         |   6 +-
 dumux/implicit/2pni/2pnipropertydefaults.hh   |  12 +--
 dumux/implicit/3p3c/3p3cproperties.hh         |   7 +-
 dumux/implicit/3p3c/3p3cpropertydefaults.hh   |  32 +++---
 dumux/implicit/3p3cni/3p3cniproperties.hh     |   6 +-
 .../implicit/3p3cni/3p3cnipropertydefaults.hh |  12 +--
 dumux/implicit/mpnc/mpncproperties.hh         |   9 +-
 dumux/implicit/mpnc/mpncpropertydefaults.hh   | 102 +++++++++---------
 dumux/implicit/richards/richardsproperties.hh |   7 +-
 .../richards/richardspropertydefaults.hh      |  32 +++---
 22 files changed, 234 insertions(+), 206 deletions(-)

diff --git a/dumux/implicit/1p/1pproperties.hh b/dumux/implicit/1p/1pproperties.hh
index 43c97bb0f4..13942f47df 100644
--- a/dumux/implicit/1p/1pproperties.hh
+++ b/dumux/implicit/1p/1pproperties.hh
@@ -28,6 +28,7 @@
 #define DUMUX_1P_PROPERTIES_DATA_HH
 
 #include <dumux/implicit/box/boxproperties.hh>
+#include <dumux/implicit/cellcentered/ccproperties.hh>
 
 namespace Dumux
 {
@@ -41,8 +42,10 @@ namespace Properties {
 // Type tags
 //////////////////////////////////////////////////////////////////
 
-//! The type tag for the isothermal single phase problems
-NEW_TYPE_TAG(BoxOneP, INHERITS_FROM(BoxModel));
+//! The type tags for the implicit single-phase problems
+NEW_TYPE_TAG(OneP);
+NEW_TYPE_TAG(BoxOneP, INHERITS_FROM(BoxModel, OneP));
+NEW_TYPE_TAG(CCOneP, INHERITS_FROM(CCModel, OneP));
 
 //////////////////////////////////////////////////////////////////
 // Property tags
diff --git a/dumux/implicit/1p/1ppropertydefaults.hh b/dumux/implicit/1p/1ppropertydefaults.hh
index 2738c782eb..34b3c254d4 100644
--- a/dumux/implicit/1p/1ppropertydefaults.hh
+++ b/dumux/implicit/1p/1ppropertydefaults.hh
@@ -49,42 +49,42 @@ namespace Dumux
 // default property values for the isothermal single phase model
 ///////////////////////////////////////////////////////////////////////////
 namespace Properties {
-SET_INT_PROP(BoxOneP, NumEq, 1); //!< set the number of equations to 1
-SET_INT_PROP(BoxOneP, NumPhases, 1); //!< The number of phases in the 1p model is 1
+SET_INT_PROP(OneP, NumEq, 1); //!< set the number of equations to 1
+SET_INT_PROP(OneP, NumPhases, 1); //!< The number of phases in the 1p model is 1
 
 //! The local residual function
-SET_TYPE_PROP(BoxOneP,
+SET_TYPE_PROP(OneP,
               LocalResidual,
               OnePLocalResidual<TypeTag>);
 
 //! the Model property
-SET_TYPE_PROP(BoxOneP, Model, OnePBoxModel<TypeTag>);
+SET_TYPE_PROP(OneP, Model, OnePBoxModel<TypeTag>);
 
 //! the VolumeVariables property
-SET_TYPE_PROP(BoxOneP, VolumeVariables, OnePVolumeVariables<TypeTag>);
+SET_TYPE_PROP(OneP, VolumeVariables, OnePVolumeVariables<TypeTag>);
 
 //! the FluxVariables property
-SET_TYPE_PROP(BoxOneP, FluxVariables, BoxDarcyFluxVariables<TypeTag>);
+SET_TYPE_PROP(OneP, FluxVariables, BoxDarcyFluxVariables<TypeTag>);
 
 //! The indices required by the isothermal single-phase model
-SET_TYPE_PROP(BoxOneP, Indices, OnePIndices);
+SET_TYPE_PROP(OneP, Indices, OnePIndices);
 
 //! The spatial parameters to be employed. 
 //! Use BoxSpatialParamsOneP by default.
-SET_TYPE_PROP(BoxOneP, SpatialParams, BoxSpatialParamsOneP<TypeTag>);
+SET_TYPE_PROP(OneP, SpatialParams, BoxSpatialParamsOneP<TypeTag>);
 
 //! The weight of the upwind control volume when calculating
 //! fluxes. Use central differences by default.
-SET_SCALAR_PROP(BoxOneP, ImplicitMassUpwindWeight, 0.5);
+SET_SCALAR_PROP(OneP, ImplicitMassUpwindWeight, 0.5);
 
 //! weight for the upwind mobility in the velocity calculation
 //! fluxes. Use central differences by default.
-SET_SCALAR_PROP(BoxOneP, ImplicitMobilityUpwindWeight, 0.5);
+SET_SCALAR_PROP(OneP, ImplicitMobilityUpwindWeight, 0.5);
 
 //! The fluid system to use by default
-SET_TYPE_PROP(BoxOneP, FluidSystem, Dumux::FluidSystems::OneP<typename GET_PROP_TYPE(TypeTag, Scalar), typename GET_PROP_TYPE(TypeTag, Fluid)>);
+SET_TYPE_PROP(OneP, FluidSystem, Dumux::FluidSystems::OneP<typename GET_PROP_TYPE(TypeTag, Scalar), typename GET_PROP_TYPE(TypeTag, Fluid)>);
 
-SET_PROP(BoxOneP, Fluid)
+SET_PROP(OneP, Fluid)
 { private:
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
 public:
@@ -92,7 +92,7 @@ public:
 };
 
 // enable gravity by default
-SET_BOOL_PROP(BoxOneP, ProblemEnableGravity, true);
+SET_BOOL_PROP(OneP, ProblemEnableGravity, true);
 
 //! default value for the forchheimer coefficient
 // Source: Ward, J.C. 1964 Turbulent flow in porous media. ASCE J. Hydraul. Div 90.
diff --git a/dumux/implicit/1p2c/1p2cproperties.hh b/dumux/implicit/1p2c/1p2cproperties.hh
index ff7641ac33..37aa1eb857 100644
--- a/dumux/implicit/1p2c/1p2cproperties.hh
+++ b/dumux/implicit/1p2c/1p2cproperties.hh
@@ -31,6 +31,7 @@
 
 
 #include<dumux/implicit/box/boxproperties.hh>
+#include<dumux/implicit/cellcentered/ccproperties.hh>
 
 namespace Dumux
 {
@@ -42,8 +43,10 @@ namespace Properties
 // Type tags
 //////////////////////////////////////////////////////////////////
 
-//! The type tag for the isothermal single-phase, two-component problems
-NEW_TYPE_TAG(BoxOnePTwoC, INHERITS_FROM(BoxModel));
+//! The type tags for the implicit one-phase two-component problems
+NEW_TYPE_TAG(OnePTwoC);
+NEW_TYPE_TAG(BoxOnePTwoC, INHERITS_FROM(BoxModel, OnePTwoC));
+NEW_TYPE_TAG(CCOnePTwoC, INHERITS_FROM(CCModel, OnePTwoC));
 
 //////////////////////////////////////////////////////////////////
 // Property tags
diff --git a/dumux/implicit/1p2c/1p2cpropertydefaults.hh b/dumux/implicit/1p2c/1p2cpropertydefaults.hh
index 79cd1e11f3..79cf057d37 100644
--- a/dumux/implicit/1p2c/1p2cpropertydefaults.hh
+++ b/dumux/implicit/1p2c/1p2cpropertydefaults.hh
@@ -48,39 +48,39 @@ namespace Properties
 // Property values
 //////////////////////////////////////////////////////////////////
 
-SET_INT_PROP(BoxOnePTwoC, NumEq, 2); //!< set the number of equations to 2
-SET_INT_PROP(BoxOnePTwoC, NumPhases, 1); //!< The number of phases in the 1p2c model is 1
-SET_INT_PROP(BoxOnePTwoC, NumComponents, 2); //!< The number of components in the 1p2c model is 2
-SET_SCALAR_PROP(BoxOnePTwoC, Scaling, 1); //!< Scaling of the model is set to 1 by default
-SET_BOOL_PROP(BoxOnePTwoC, UseMoles, false); //!< Define that mass fractions are used in the balance equations
+SET_INT_PROP(OnePTwoC, NumEq, 2); //!< set the number of equations to 2
+SET_INT_PROP(OnePTwoC, NumPhases, 1); //!< The number of phases in the 1p2c model is 1
+SET_INT_PROP(OnePTwoC, NumComponents, 2); //!< The number of components in the 1p2c model is 2
+SET_SCALAR_PROP(OnePTwoC, Scaling, 1); //!< Scaling of the model is set to 1 by default
+SET_BOOL_PROP(OnePTwoC, UseMoles, false); //!< Define that mass fractions are used in the balance equations
 
 //! Use the 1p2c local residual function for the 1p2c model
-SET_TYPE_PROP(BoxOnePTwoC, LocalResidual, OnePTwoCLocalResidual<TypeTag>);
+SET_TYPE_PROP(OnePTwoC, LocalResidual, OnePTwoCLocalResidual<TypeTag>);
 
 //! define the model
-SET_TYPE_PROP(BoxOnePTwoC, Model, OnePTwoCBoxModel<TypeTag>);
+SET_TYPE_PROP(OnePTwoC, Model, OnePTwoCBoxModel<TypeTag>);
 
 //! define the VolumeVariables
-SET_TYPE_PROP(BoxOnePTwoC, VolumeVariables, OnePTwoCVolumeVariables<TypeTag>);
+SET_TYPE_PROP(OnePTwoC, VolumeVariables, OnePTwoCVolumeVariables<TypeTag>);
 
 //! define the FluxVariables
-SET_TYPE_PROP(BoxOnePTwoC, FluxVariables, OnePTwoCFluxVariables<TypeTag>);
+SET_TYPE_PROP(OnePTwoC, FluxVariables, OnePTwoCFluxVariables<TypeTag>);
 
 //! set default upwind weight to 1.0, i.e. fully upwind
-SET_SCALAR_PROP(BoxOnePTwoC, ImplicitMassUpwindWeight, 1.0);
+SET_SCALAR_PROP(OnePTwoC, ImplicitMassUpwindWeight, 1.0);
 
 //! Set the indices used by the 1p2c model
-SET_TYPE_PROP(BoxOnePTwoC, Indices, Dumux::OnePTwoCIndices<TypeTag, 0>);
+SET_TYPE_PROP(OnePTwoC, Indices, Dumux::OnePTwoCIndices<TypeTag, 0>);
 
 //! The spatial parameters to be employed. 
 //! Use BoxSpatialParamsOneP by default.
-SET_TYPE_PROP(BoxOnePTwoC, SpatialParams, BoxSpatialParamsOneP<TypeTag>);
+SET_TYPE_PROP(OnePTwoC, SpatialParams, BoxSpatialParamsOneP<TypeTag>);
 
 //! Set the phaseIndex per default to zero (important for two-phase fluidsystems).
-SET_INT_PROP(BoxOnePTwoC, PhaseIdx, 0);
+SET_INT_PROP(OnePTwoC, PhaseIdx, 0);
 
 // enable gravity by default
-SET_BOOL_PROP(BoxOnePTwoC, ProblemEnableGravity, true);
+SET_BOOL_PROP(OnePTwoC, ProblemEnableGravity, true);
 
 //! default value for the forchheimer coefficient
 // Source: Ward, J.C. 1964 Turbulent flow in porous media. ASCE J. Hydraul. Div 90.
diff --git a/dumux/implicit/2p/2pproperties.hh b/dumux/implicit/2p/2pproperties.hh
index 18668890a3..69d1942c9c 100644
--- a/dumux/implicit/2p/2pproperties.hh
+++ b/dumux/implicit/2p/2pproperties.hh
@@ -31,6 +31,7 @@
 #define DUMUX_2P_PROPERTIES_HH
 
 #include <dumux/implicit/box/boxproperties.hh>
+#include <dumux/implicit/cellcentered/ccproperties.hh>
 
 namespace Dumux
 {
@@ -47,8 +48,10 @@ namespace Properties
 // Type tags
 //////////////////////////////////////////////////////////////////
 
-//! The type tag for the two-phase problems
-NEW_TYPE_TAG(BoxTwoP, INHERITS_FROM(BoxModel));
+//! The type tags for the implicit two-phase problems
+NEW_TYPE_TAG(TwoP);
+NEW_TYPE_TAG(BoxTwoP, INHERITS_FROM(BoxModel, TwoP));
+NEW_TYPE_TAG(CCTwoP, INHERITS_FROM(CCModel, TwoP));
 
 //////////////////////////////////////////////////////////////////
 // Property tags
diff --git a/dumux/implicit/2p/2ppropertydefaults.hh b/dumux/implicit/2p/2ppropertydefaults.hh
index 8d0c77d5ce..ff139c3bf7 100644
--- a/dumux/implicit/2p/2ppropertydefaults.hh
+++ b/dumux/implicit/2p/2ppropertydefaults.hh
@@ -48,66 +48,66 @@ namespace Properties
 //////////////////////////////////////////////////////////////////
 // Property defaults
 //////////////////////////////////////////////////////////////////
-SET_INT_PROP(BoxTwoP, NumEq, 2); //!< set the number of equations to 2
-SET_INT_PROP(BoxTwoP, NumPhases, 2); //!< The number of phases in the 2p model is 2
+SET_INT_PROP(TwoP, NumEq, 2); //!< set the number of equations to 2
+SET_INT_PROP(TwoP, NumPhases, 2); //!< The number of phases in the 2p model is 2
 
 //! Set the default formulation to pWsN
-SET_INT_PROP(BoxTwoP,
+SET_INT_PROP(TwoP,
              Formulation,
              TwoPFormulation::pwSn);
 
 //! Use the 2p local jacobian operator for the 2p model
-SET_TYPE_PROP(BoxTwoP,
+SET_TYPE_PROP(TwoP,
               LocalResidual,
               TwoPLocalResidual<TypeTag>);
 
 //! the Model property
-SET_TYPE_PROP(BoxTwoP, Model, TwoPModel<TypeTag>);
+SET_TYPE_PROP(TwoP, Model, TwoPModel<TypeTag>);
 
 //! the VolumeVariables property
-SET_TYPE_PROP(BoxTwoP, VolumeVariables, TwoPVolumeVariables<TypeTag>);
+SET_TYPE_PROP(TwoP, VolumeVariables, TwoPVolumeVariables<TypeTag>);
 
 //! the FluxVariables property
-SET_TYPE_PROP(BoxTwoP, FluxVariables, BoxDarcyFluxVariables<TypeTag>);
+SET_TYPE_PROP(TwoP, FluxVariables, BoxDarcyFluxVariables<TypeTag>);
 
 //! the upwind weight for the mass conservation equations.
-SET_SCALAR_PROP(BoxTwoP, ImplicitMassUpwindWeight, 1.0);
+SET_SCALAR_PROP(TwoP, ImplicitMassUpwindWeight, 1.0);
 
 //! weight for the upwind mobility in the velocity calculation
-SET_SCALAR_PROP(BoxTwoP, ImplicitMobilityUpwindWeight, 1.0);
+SET_SCALAR_PROP(TwoP, ImplicitMobilityUpwindWeight, 1.0);
 
 //! The indices required by the isothermal 2p model
-SET_TYPE_PROP(BoxTwoP, 
+SET_TYPE_PROP(TwoP, 
               Indices, 
               TwoPIndices<TypeTag, GET_PROP_VALUE(TypeTag, Formulation), 0>);
 
 //! The spatial parameters to be employed. 
 //! Use BoxSpatialParams by default.
-SET_TYPE_PROP(BoxTwoP, SpatialParams, BoxSpatialParams<TypeTag>);
+SET_TYPE_PROP(TwoP, SpatialParams, BoxSpatialParams<TypeTag>);
 
 /*!
  * \brief Set the property for the material parameters by extracting
  *        it from the material law.
  */
-SET_TYPE_PROP(BoxTwoP,
+SET_TYPE_PROP(TwoP,
               MaterialLawParams,
               typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params);
 
-SET_PROP(BoxTwoP, WettingPhase)
+SET_PROP(TwoP, WettingPhase)
 { private:
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
 public:
     typedef Dumux::LiquidPhase<Scalar, Dumux::NullComponent<Scalar> > type;
 };
 
-SET_PROP(BoxTwoP, NonwettingPhase)
+SET_PROP(TwoP, NonwettingPhase)
 { private:
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
 public:
     typedef Dumux::LiquidPhase<Scalar, Dumux::NullComponent<Scalar> > type;
 };
 
-SET_PROP(BoxTwoP, FluidSystem)
+SET_PROP(TwoP, FluidSystem)
 { private:
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
     typedef typename GET_PROP_TYPE(TypeTag, WettingPhase) WettingPhase;
@@ -119,7 +119,7 @@ public:
                                                 NonwettingPhase> type;
 };
 
-SET_PROP(BoxTwoP, FluidState)
+SET_PROP(TwoP, FluidState)
 {
 private:
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
@@ -129,10 +129,10 @@ public:
 };
 
 // disable velocity output by default
-SET_BOOL_PROP(BoxTwoP, VtkAddVelocity, false);
+SET_BOOL_PROP(TwoP, VtkAddVelocity, false);
 
 // enable gravity by default
-SET_BOOL_PROP(BoxTwoP, ProblemEnableGravity, true);
+SET_BOOL_PROP(TwoP, ProblemEnableGravity, true);
 
 //! default value for the forchheimer coefficient
 // Source: Ward, J.C. 1964 Turbulent flow in porous media. ASCE J. Hydraul. Div 90.
diff --git a/dumux/implicit/2p2c/2p2cproperties.hh b/dumux/implicit/2p2c/2p2cproperties.hh
index c57ae2f635..35f26eb4e6 100644
--- a/dumux/implicit/2p2c/2p2cproperties.hh
+++ b/dumux/implicit/2p2c/2p2cproperties.hh
@@ -30,6 +30,7 @@
 #define DUMUX_2P2C_PROPERTIES_HH
 
 #include <dumux/implicit/box/boxproperties.hh>
+#include <dumux/implicit/cellcentered/ccproperties.hh>
 
 namespace Dumux
 {
@@ -40,8 +41,10 @@ namespace Properties
 // Type tags
 //////////////////////////////////////////////////////////////////
 
-//! The type tag for the isothermal single phase problems
-NEW_TYPE_TAG(BoxTwoPTwoC, INHERITS_FROM(BoxModel));
+//! The type tags for the implicit two-phase two-component problems
+NEW_TYPE_TAG(TwoPTwoC);
+NEW_TYPE_TAG(BoxTwoPTwoC, INHERITS_FROM(BoxModel, TwoPTwoC));
+NEW_TYPE_TAG(CCTwoPTwoC, INHERITS_FROM(CCModel, TwoPTwoC));
 
 //////////////////////////////////////////////////////////////////
 // Property tags
diff --git a/dumux/implicit/2p2c/2p2cpropertydefaults.hh b/dumux/implicit/2p2c/2p2cpropertydefaults.hh
index 83e73fbb4b..8a41d48987 100644
--- a/dumux/implicit/2p2c/2p2cpropertydefaults.hh
+++ b/dumux/implicit/2p2c/2p2cpropertydefaults.hh
@@ -52,7 +52,7 @@ namespace Properties {
  * We just forward the number from the fluid system and use an static
  * assert to make sure it is 2.
  */
-SET_PROP(BoxTwoPTwoC, NumComponents)
+SET_PROP(TwoPTwoC, NumComponents)
 {
  private:
     typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem;
@@ -70,7 +70,7 @@ SET_PROP(BoxTwoPTwoC, NumComponents)
  * We just forward the number from the fluid system and use an static
  * assert to make sure it is 2.
  */
-SET_PROP(BoxTwoPTwoC, NumPhases)
+SET_PROP(TwoPTwoC, NumPhases)
 {
  private:
     typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem;
@@ -81,21 +81,21 @@ SET_PROP(BoxTwoPTwoC, NumPhases)
                   "Only fluid systems with 2 phases are supported by the 2p-2c model!");
 };
 
-SET_INT_PROP(BoxTwoPTwoC, NumEq, 2); //!< set the number of equations to 2
+SET_INT_PROP(TwoPTwoC, NumEq, 2); //!< set the number of equations to 2
 
 //! Set the default formulation to pw-Sn
-SET_INT_PROP(BoxTwoPTwoC,
+SET_INT_PROP(TwoPTwoC,
              Formulation,
              TwoPTwoCFormulation::pwSn);
 
 //! set as default that no component mass balance is replaced by the total mass balance
-SET_INT_PROP(BoxTwoPTwoC, ReplaceCompEqIdx, 2);
+SET_INT_PROP(TwoPTwoC, ReplaceCompEqIdx, 2);
 
 /*!
  * \brief Set the property for the material parameters by extracting
  *        it from the material law.
  */
-SET_PROP(BoxTwoPTwoC, MaterialLawParams)
+SET_PROP(TwoPTwoC, MaterialLawParams)
 {
  private:
     typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
@@ -105,33 +105,33 @@ SET_PROP(BoxTwoPTwoC, MaterialLawParams)
 };
 
 //! Use the 2p2c local jacobian operator for the 2p2c model
-SET_TYPE_PROP(BoxTwoPTwoC,
+SET_TYPE_PROP(TwoPTwoC,
               LocalResidual,
               TwoPTwoCLocalResidual<TypeTag>);
 
 //! Use the 2p2c specific newton controller for the 2p2c model
-SET_TYPE_PROP(BoxTwoPTwoC, NewtonController, TwoPTwoCNewtonController<TypeTag>);
+SET_TYPE_PROP(TwoPTwoC, NewtonController, TwoPTwoCNewtonController<TypeTag>);
 
 //! the Model property
-SET_TYPE_PROP(BoxTwoPTwoC, Model, TwoPTwoCModel<TypeTag>);
+SET_TYPE_PROP(TwoPTwoC, Model, TwoPTwoCModel<TypeTag>);
 
 //! the VolumeVariables property
-SET_TYPE_PROP(BoxTwoPTwoC, VolumeVariables, TwoPTwoCVolumeVariables<TypeTag>);
+SET_TYPE_PROP(TwoPTwoC, VolumeVariables, TwoPTwoCVolumeVariables<TypeTag>);
 
 //! the FluxVariables property
-SET_TYPE_PROP(BoxTwoPTwoC, FluxVariables, TwoPTwoCFluxVariables<TypeTag>);
+SET_TYPE_PROP(TwoPTwoC, FluxVariables, TwoPTwoCFluxVariables<TypeTag>);
 
 //! define the base flux variables to realize Darcy flow
-SET_TYPE_PROP(BoxTwoPTwoC, BaseFluxVariables, BoxDarcyFluxVariables<TypeTag>);
+SET_TYPE_PROP(TwoPTwoC, BaseFluxVariables, BoxDarcyFluxVariables<TypeTag>);
 
 //! the upwind weight for the mass conservation equations.
-SET_SCALAR_PROP(BoxTwoPTwoC, ImplicitMassUpwindWeight, 1.0);
+SET_SCALAR_PROP(TwoPTwoC, ImplicitMassUpwindWeight, 1.0);
 
 //! set default mobility upwind weight to 1.0, i.e. fully upwind
-SET_SCALAR_PROP(BoxTwoPTwoC, ImplicitMobilityUpwindWeight, 1.0);
+SET_SCALAR_PROP(TwoPTwoC, ImplicitMobilityUpwindWeight, 1.0);
 
 //! The indices required by the isothermal 2p2c model
-SET_PROP(BoxTwoPTwoC, Indices) 
+SET_PROP(TwoPTwoC, Indices) 
 { private:
     enum { Formulation = GET_PROP_VALUE(TypeTag, Formulation) };
  public:
@@ -140,13 +140,13 @@ SET_PROP(BoxTwoPTwoC, Indices)
 
 //! The spatial parameters to be employed. 
 //! Use BoxSpatialParams by default.
-SET_TYPE_PROP(BoxTwoPTwoC, SpatialParams, BoxSpatialParams<TypeTag>);
+SET_TYPE_PROP(TwoPTwoC, SpatialParams, BoxSpatialParams<TypeTag>);
 
 // disable velocity output by default
-SET_BOOL_PROP(BoxTwoPTwoC, VtkAddVelocity, false);
+SET_BOOL_PROP(TwoPTwoC, VtkAddVelocity, false);
 
 // enable gravity by default
-SET_BOOL_PROP(BoxTwoPTwoC, ProblemEnableGravity, true);
+SET_BOOL_PROP(TwoPTwoC, ProblemEnableGravity, true);
 
 //! default value for the forchheimer coefficient
 // Source: Ward, J.C. 1964 Turbulent flow in porous media. ASCE J. Hydraul. Div 90.
diff --git a/dumux/implicit/2p2cni/2p2cniproperties.hh b/dumux/implicit/2p2cni/2p2cniproperties.hh
index ecf888a987..92fb6fab82 100644
--- a/dumux/implicit/2p2cni/2p2cniproperties.hh
+++ b/dumux/implicit/2p2cni/2p2cniproperties.hh
@@ -39,8 +39,10 @@ namespace Properties
 // Type tags
 //////////////////////////////////////////////////////////////////
 
-//! The type tag for the non-isothermal two-phase, two-component problems
-NEW_TYPE_TAG(BoxTwoPTwoCNI, INHERITS_FROM(BoxTwoPTwoC));
+//! The type tags for the implicit non-isothermal two-phase two-component problems
+NEW_TYPE_TAG(TwoPTwoCNI, INHERITS_FROM(TwoPTwoC));
+NEW_TYPE_TAG(BoxTwoPTwoCNI, INHERITS_FROM(BoxModel, TwoPTwoCNI));
+NEW_TYPE_TAG(CCTwoPTwoCNI, INHERITS_FROM(CCModel, TwoPTwoCNI));
 }
 }
 
diff --git a/dumux/implicit/2p2cni/2p2cnipropertydefaults.hh b/dumux/implicit/2p2cni/2p2cnipropertydefaults.hh
index 1277dce919..a9c7e3063f 100644
--- a/dumux/implicit/2p2cni/2p2cnipropertydefaults.hh
+++ b/dumux/implicit/2p2cni/2p2cnipropertydefaults.hh
@@ -45,25 +45,25 @@ namespace Properties
 // Property values
 //////////////////////////////////////////////////////////////////
 
-SET_INT_PROP(BoxTwoPTwoCNI, NumEq, 3); //!< set the number of equations to 3
+SET_INT_PROP(TwoPTwoCNI, NumEq, 3); //!< set the number of equations to 3
 
 //! Use the 2p2cni local jacobian operator for the 2p2cni model
-SET_TYPE_PROP(BoxTwoPTwoCNI,
+SET_TYPE_PROP(TwoPTwoCNI,
               LocalResidual,
               TwoPTwoCNILocalResidual<TypeTag>);
 
 //! the Model property
-SET_TYPE_PROP(BoxTwoPTwoCNI, Model, TwoPTwoCNIModel<TypeTag>);
+SET_TYPE_PROP(TwoPTwoCNI, Model, TwoPTwoCNIModel<TypeTag>);
 
 //! the VolumeVariables property
-SET_TYPE_PROP(BoxTwoPTwoCNI, VolumeVariables, TwoPTwoCNIVolumeVariables<TypeTag>);
+SET_TYPE_PROP(TwoPTwoCNI, VolumeVariables, TwoPTwoCNIVolumeVariables<TypeTag>);
 
 
 //! the FluxVariables property
-SET_TYPE_PROP(BoxTwoPTwoCNI, FluxVariables, TwoPTwoCNIFluxVariables<TypeTag>);
+SET_TYPE_PROP(TwoPTwoCNI, FluxVariables, TwoPTwoCNIFluxVariables<TypeTag>);
 
 //! The indices required by the non-isothermal 2p2c model
-SET_PROP(BoxTwoPTwoCNI, Indices) 
+SET_PROP(TwoPTwoCNI, Indices) 
 { private:
     enum { formulation = GET_PROP_VALUE(TypeTag, Formulation) };
  public:
diff --git a/dumux/implicit/2pdfm/2pdfmproperties.hh b/dumux/implicit/2pdfm/2pdfmproperties.hh
index a3e7d4c9ad..2d7b414b10 100644
--- a/dumux/implicit/2pdfm/2pdfmproperties.hh
+++ b/dumux/implicit/2pdfm/2pdfmproperties.hh
@@ -28,6 +28,7 @@
 #define DUMUX_BOXMODELS_2PDFM_PROPERTIES_HH
 
 #include <dumux/implicit/box/boxproperties.hh>
+#include <dumux/implicit/cellcentered/ccproperties.hh>
 
 namespace Dumux
 {
@@ -42,8 +43,10 @@ namespace Properties
 // Type tags
 //////////////////////////////////////////////////////////////////
 
-//! The type tag for 2pDFM problems
-NEW_TYPE_TAG(BoxTwoPDFM, INHERITS_FROM(BoxModel));
+//! The type tags for the implicit two-phase DFM problems
+NEW_TYPE_TAG(TwoPDFM);
+NEW_TYPE_TAG(BoxTwoPDFM, INHERITS_FROM(BoxModel, TwoPDFM));
+NEW_TYPE_TAG(CCTwoPDFM, INHERITS_FROM(CCModel, TwoPDFM));
 
 //////////////////////////////////////////////////////////////////
 // Property tags
diff --git a/dumux/implicit/2pdfm/2pdfmpropertydefaults.hh b/dumux/implicit/2pdfm/2pdfmpropertydefaults.hh
index 9e34e57d83..1af745335d 100644
--- a/dumux/implicit/2pdfm/2pdfmpropertydefaults.hh
+++ b/dumux/implicit/2pdfm/2pdfmpropertydefaults.hh
@@ -49,36 +49,36 @@ namespace Properties
 //////////////////////////////////////////////////////////////////
 // Property defaults
 //////////////////////////////////////////////////////////////////
-SET_INT_PROP(BoxTwoPDFM, NumEq, 2); //!< set the number of equations to 2
-SET_INT_PROP(BoxTwoPDFM, NumPhases, 2); //!< The number of phases in the 2p model is 2
+SET_INT_PROP(TwoPDFM, NumEq, 2); //!< set the number of equations to 2
+SET_INT_PROP(TwoPDFM, NumPhases, 2); //!< The number of phases in the 2p model is 2
 
 //! Set the default formulation to pWsN
-SET_INT_PROP(BoxTwoPDFM,
+SET_INT_PROP(TwoPDFM,
              Formulation,
              TwoPFormulation::pwSn);
 
 //! Use the 2p local jacobian operator for the 2p model
-SET_TYPE_PROP(BoxTwoPDFM,
+SET_TYPE_PROP(TwoPDFM,
               LocalResidual,
               TwoPDFMLocalResidual<TypeTag>);
 
 //! the Model property
-SET_TYPE_PROP(BoxTwoPDFM, Model, TwoPDFMModel<TypeTag>);
+SET_TYPE_PROP(TwoPDFM, Model, TwoPDFMModel<TypeTag>);
 
 //! the VolumeVariables property
-SET_TYPE_PROP(BoxTwoPDFM, VolumeVariables, TwoPDFMVolumeVariables<TypeTag>);
+SET_TYPE_PROP(TwoPDFM, VolumeVariables, TwoPDFMVolumeVariables<TypeTag>);
 
 //! the FluxVariables property
-SET_TYPE_PROP(BoxTwoPDFM, FluxVariables, TwoPDFMFluxVariables<TypeTag>);
+SET_TYPE_PROP(TwoPDFM, FluxVariables, TwoPDFMFluxVariables<TypeTag>);
 
 //! the upwind weight for the mass conservation equations.
-SET_SCALAR_PROP(BoxTwoPDFM, ImplicitMassUpwindWeight, 1.0);
+SET_SCALAR_PROP(TwoPDFM, ImplicitMassUpwindWeight, 1.0);
 
 //! weight for the upwind mobility in the velocity calculation
-SET_SCALAR_PROP(BoxTwoPDFM, ImplicitMobilityUpwindWeight, 1.0);
+SET_SCALAR_PROP(TwoPDFM, ImplicitMobilityUpwindWeight, 1.0);
 
 //! The indices required by the isothermal 2pDFM model
-SET_PROP(BoxTwoPDFM, Indices)
+SET_PROP(TwoPDFM, Indices)
 { private:
     enum { Formulation = GET_PROP_VALUE(TypeTag, Formulation) };
  public:
@@ -88,31 +88,31 @@ SET_PROP(BoxTwoPDFM, Indices)
 
 //! The spatial parameters to be employed.
 //! Use BoxSpatialParams by default.
-SET_TYPE_PROP(BoxTwoPDFM, SpatialParams, BoxSpatialParams<TypeTag>);
+SET_TYPE_PROP(TwoPDFM, SpatialParams, BoxSpatialParams<TypeTag>);
 
 /*!
  * \brief Set the property for the material parameters by extracting
  *        it from the material law.
  */
-SET_TYPE_PROP(BoxTwoPDFM,
+SET_TYPE_PROP(TwoPDFM,
               MaterialLawParams,
               typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params);
 
-SET_PROP(BoxTwoPDFM, WettingPhase)
+SET_PROP(TwoPDFM, WettingPhase)
 { private:
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
 public:
     typedef Dumux::LiquidPhase<Scalar, Dumux::NullComponent<Scalar> > type;
 };
 
-SET_PROP(BoxTwoPDFM, NonwettingPhase)
+SET_PROP(TwoPDFM, NonwettingPhase)
 { private:
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
 public:
     typedef Dumux::LiquidPhase<Scalar, Dumux::NullComponent<Scalar> > type;
 };
 
-SET_PROP(BoxTwoPDFM, FluidSystem)
+SET_PROP(TwoPDFM, FluidSystem)
 { private:
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
     typedef typename GET_PROP_TYPE(TypeTag, WettingPhase) WettingPhase;
@@ -124,7 +124,7 @@ public:
                                                 NonwettingPhase> type;
 };
 
-SET_PROP(BoxTwoPDFM, FluidState)
+SET_PROP(TwoPDFM, FluidState)
 {
 private:
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
@@ -134,10 +134,10 @@ public:
 };
 
 // disable velocity output by default
-SET_BOOL_PROP(BoxTwoPDFM, VtkAddVelocity, false);
+SET_BOOL_PROP(TwoPDFM, VtkAddVelocity, false);
 
 // enable gravity by default
-SET_BOOL_PROP(BoxTwoPDFM, ProblemEnableGravity, true);
+SET_BOOL_PROP(TwoPDFM, ProblemEnableGravity, true);
 } // end namespace Properties
 } // end namespace Dumux
 
diff --git a/dumux/implicit/2pni/2pniproperties.hh b/dumux/implicit/2pni/2pniproperties.hh
index 43da2c0ed4..7a77f2d0a9 100644
--- a/dumux/implicit/2pni/2pniproperties.hh
+++ b/dumux/implicit/2pni/2pniproperties.hh
@@ -38,8 +38,10 @@ namespace Properties
 // Type tags
 //////////////////////////////////////////////////////////////////
 
-//! The type tag for the non-isothermal two-phase problems
-NEW_TYPE_TAG(BoxTwoPNI, INHERITS_FROM(BoxTwoP));
+//! The type tags for the implicit non-isothermal two-phase problems
+NEW_TYPE_TAG(TwoPNI, INHERITS_FROM(TwoP));
+NEW_TYPE_TAG(BoxTwoPNI, INHERITS_FROM(BoxModel, TwoPNI));
+NEW_TYPE_TAG(CCTwoPNI, INHERITS_FROM(CCModel, TwoPNI));
 
 }
 }
diff --git a/dumux/implicit/2pni/2pnipropertydefaults.hh b/dumux/implicit/2pni/2pnipropertydefaults.hh
index 2a96f75eb1..d19cbe21b6 100644
--- a/dumux/implicit/2pni/2pnipropertydefaults.hh
+++ b/dumux/implicit/2pni/2pnipropertydefaults.hh
@@ -46,24 +46,24 @@ namespace Properties
 // Property values
 //////////////////////////////////////////////////////////////////
 
-SET_INT_PROP(BoxTwoPNI, NumEq, 3); //!< set the number of equations to 3
+SET_INT_PROP(TwoPNI, NumEq, 3); //!< set the number of equations to 3
 
 //! Use the 2pni local jacobian operator for the 2pni model
-SET_TYPE_PROP(BoxTwoPNI,
+SET_TYPE_PROP(TwoPNI,
               LocalResidual,
               TwoPNILocalResidual<TypeTag>);
 
 //! the Model property
-SET_TYPE_PROP(BoxTwoPNI, Model, TwoPNIModel<TypeTag>);
+SET_TYPE_PROP(TwoPNI, Model, TwoPNIModel<TypeTag>);
 
 //! the VolumeVariables property
-SET_TYPE_PROP(BoxTwoPNI, VolumeVariables, TwoPNIVolumeVariables<TypeTag>);
+SET_TYPE_PROP(TwoPNI, VolumeVariables, TwoPNIVolumeVariables<TypeTag>);
 
 //! the FluxVariables property
-SET_TYPE_PROP(BoxTwoPNI, FluxVariables, TwoPNIFluxVariables<TypeTag>);
+SET_TYPE_PROP(TwoPNI, FluxVariables, TwoPNIFluxVariables<TypeTag>);
 
 //! The indices required by the non-isothermal two-phase model
-SET_TYPE_PROP(BoxTwoPNI, Indices, TwoPNIIndices<TypeTag, 0>);
+SET_TYPE_PROP(TwoPNI, Indices, TwoPNIIndices<TypeTag, 0>);
 
 }
 
diff --git a/dumux/implicit/3p3c/3p3cproperties.hh b/dumux/implicit/3p3c/3p3cproperties.hh
index 29d4e3416c..b3f5a415e5 100644
--- a/dumux/implicit/3p3c/3p3cproperties.hh
+++ b/dumux/implicit/3p3c/3p3cproperties.hh
@@ -28,6 +28,7 @@
 #define DUMUX_3P3C_PROPERTIES_HH
 
 #include <dumux/implicit/box/boxproperties.hh>
+#include <dumux/implicit/cellcentered/ccproperties.hh>
 
 namespace Dumux
 {
@@ -38,8 +39,10 @@ namespace Properties
 // Type tags
 //////////////////////////////////////////////////////////////////
 
-//! The type tag for the isothermal single phase problems
-NEW_TYPE_TAG(BoxThreePThreeC, INHERITS_FROM(BoxModel));
+//! The type tags for the implicit three-phase three-component problems
+NEW_TYPE_TAG(ThreePThreeC);
+NEW_TYPE_TAG(BoxThreePThreeC, INHERITS_FROM(BoxModel, ThreePThreeC));
+NEW_TYPE_TAG(CCThreePThreeC, INHERITS_FROM(CCModel, ThreePThreeC));
 
 //////////////////////////////////////////////////////////////////
 // Property tags
diff --git a/dumux/implicit/3p3c/3p3cpropertydefaults.hh b/dumux/implicit/3p3c/3p3cpropertydefaults.hh
index 1815459d88..a644c778c9 100644
--- a/dumux/implicit/3p3c/3p3cpropertydefaults.hh
+++ b/dumux/implicit/3p3c/3p3cpropertydefaults.hh
@@ -55,7 +55,7 @@ namespace Properties {
  * We just forward the number from the fluid system and use an static
  * assert to make sure it is 2.
  */
-SET_PROP(BoxThreePThreeC, NumComponents)
+SET_PROP(ThreePThreeC, NumComponents)
 {
  private:
     typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem;
@@ -73,7 +73,7 @@ SET_PROP(BoxThreePThreeC, NumComponents)
  * We just forward the number from the fluid system and use an static
  * assert to make sure it is 2.
  */
-SET_PROP(BoxThreePThreeC, NumPhases)
+SET_PROP(ThreePThreeC, NumPhases)
 {
  private:
     typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem;
@@ -84,50 +84,50 @@ SET_PROP(BoxThreePThreeC, NumPhases)
                   "Only fluid systems with 3 phases are supported by the 3p3c model!");
 };
 
-SET_INT_PROP(BoxThreePThreeC, NumEq, 3); //!< set the number of equations to 2
+SET_INT_PROP(ThreePThreeC, NumEq, 3); //!< set the number of equations to 2
 
 /*!
  * \brief Set the property for the material parameters by extracting
  *        it from the material law.
  */
-SET_TYPE_PROP(BoxThreePThreeC, MaterialLawParams, typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params);
+SET_TYPE_PROP(ThreePThreeC, MaterialLawParams, typename GET_PROP_TYPE(TypeTag, MaterialLaw)::Params);
 
 //! The local residual function of the conservation equations
-SET_TYPE_PROP(BoxThreePThreeC, LocalResidual, ThreePThreeCLocalResidual<TypeTag>);
+SET_TYPE_PROP(ThreePThreeC, LocalResidual, ThreePThreeCLocalResidual<TypeTag>);
 
 //! Use the 3p3c specific newton controller for the 3p3c model
-SET_TYPE_PROP(BoxThreePThreeC, NewtonController, ThreePThreeCNewtonController<TypeTag>);
+SET_TYPE_PROP(ThreePThreeC, NewtonController, ThreePThreeCNewtonController<TypeTag>);
 
 //! the Model property
-SET_TYPE_PROP(BoxThreePThreeC, Model, ThreePThreeCModel<TypeTag>);
+SET_TYPE_PROP(ThreePThreeC, Model, ThreePThreeCModel<TypeTag>);
 
 //! the VolumeVariables property
-SET_TYPE_PROP(BoxThreePThreeC, VolumeVariables, ThreePThreeCVolumeVariables<TypeTag>);
+SET_TYPE_PROP(ThreePThreeC, VolumeVariables, ThreePThreeCVolumeVariables<TypeTag>);
 
 //! the FluxVariables property
-SET_TYPE_PROP(BoxThreePThreeC, FluxVariables, ThreePThreeCFluxVariables<TypeTag>);
+SET_TYPE_PROP(ThreePThreeC, FluxVariables, ThreePThreeCFluxVariables<TypeTag>);
 
 //! define the base flux variables to realize Darcy flow
-SET_TYPE_PROP(BoxThreePThreeC, BaseFluxVariables, BoxDarcyFluxVariables<TypeTag>);
+SET_TYPE_PROP(ThreePThreeC, BaseFluxVariables, BoxDarcyFluxVariables<TypeTag>);
 
 //! the upwind factor for the mobility.
-SET_SCALAR_PROP(BoxThreePThreeC, ImplicitMassUpwindWeight, 1.0);
+SET_SCALAR_PROP(ThreePThreeC, ImplicitMassUpwindWeight, 1.0);
 
 //! set default mobility upwind weight to 1.0, i.e. fully upwind
-SET_SCALAR_PROP(BoxThreePThreeC, ImplicitMobilityUpwindWeight, 1.0);
+SET_SCALAR_PROP(ThreePThreeC, ImplicitMobilityUpwindWeight, 1.0);
 
 //! Determines whether a constraint solver should be used explicitly
-SET_BOOL_PROP(BoxThreePThreeC, UseConstraintSolver, false);
+SET_BOOL_PROP(ThreePThreeC, UseConstraintSolver, false);
 
 //! The indices required by the isothermal 3p3c model
-SET_TYPE_PROP(BoxThreePThreeC, Indices, ThreePThreeCIndices<TypeTag, /*PVOffset=*/0>);
+SET_TYPE_PROP(ThreePThreeC, Indices, ThreePThreeCIndices<TypeTag, /*PVOffset=*/0>);
 
 //! The spatial parameters to be employed. 
 //! Use BoxSpatialParams by default.
-SET_TYPE_PROP(BoxThreePThreeC, SpatialParams, BoxSpatialParams<TypeTag>);
+SET_TYPE_PROP(ThreePThreeC, SpatialParams, BoxSpatialParams<TypeTag>);
 
 // enable gravity by default
-SET_BOOL_PROP(BoxThreePThreeC, ProblemEnableGravity, true);
+SET_BOOL_PROP(ThreePThreeC, ProblemEnableGravity, true);
 
 //! default value for the forchheimer coefficient
 // Source: Ward, J.C. 1964 Turbulent flow in porous media. ASCE J. Hydraul. Div 90.
diff --git a/dumux/implicit/3p3cni/3p3cniproperties.hh b/dumux/implicit/3p3cni/3p3cniproperties.hh
index 030449838e..009cf1abc4 100644
--- a/dumux/implicit/3p3cni/3p3cniproperties.hh
+++ b/dumux/implicit/3p3cni/3p3cniproperties.hh
@@ -39,8 +39,10 @@ namespace Properties
 // Type tags
 //////////////////////////////////////////////////////////////////
 
-//! The type tag for the non-isothermal three-phase, three-component problems
-NEW_TYPE_TAG(BoxThreePThreeCNI, INHERITS_FROM(BoxThreePThreeC));
+//! The type tags for the implicit non-isothermal three-phase three-component problems
+NEW_TYPE_TAG(ThreePThreeCNI, INHERITS_FROM(ThreePThreeC));
+NEW_TYPE_TAG(BoxThreePThreeCNI, INHERITS_FROM(BoxModel, ThreePThreeCNI));
+NEW_TYPE_TAG(CCThreePThreeCNI, INHERITS_FROM(CCModel, ThreePThreeCNI));
 }
 }
 
diff --git a/dumux/implicit/3p3cni/3p3cnipropertydefaults.hh b/dumux/implicit/3p3cni/3p3cnipropertydefaults.hh
index bddfccabc9..ee65746658 100644
--- a/dumux/implicit/3p3cni/3p3cnipropertydefaults.hh
+++ b/dumux/implicit/3p3cni/3p3cnipropertydefaults.hh
@@ -45,25 +45,25 @@ namespace Properties
 // Property values
 //////////////////////////////////////////////////////////////////
 
-SET_INT_PROP(BoxThreePThreeCNI, NumEq, 4); //!< set the number of equations to 4
+SET_INT_PROP(ThreePThreeCNI, NumEq, 4); //!< set the number of equations to 4
 
 //! Use the 3p3cni local jacobian operator for the 3p3cni model
-SET_TYPE_PROP(BoxThreePThreeCNI,
+SET_TYPE_PROP(ThreePThreeCNI,
               LocalResidual,
               ThreePThreeCNILocalResidual<TypeTag>);
 
 //! the Model property
-SET_TYPE_PROP(BoxThreePThreeCNI, Model, ThreePThreeCNIModel<TypeTag>);
+SET_TYPE_PROP(ThreePThreeCNI, Model, ThreePThreeCNIModel<TypeTag>);
 
 //! the VolumeVariables property
-SET_TYPE_PROP(BoxThreePThreeCNI, VolumeVariables, ThreePThreeCNIVolumeVariables<TypeTag>);
+SET_TYPE_PROP(ThreePThreeCNI, VolumeVariables, ThreePThreeCNIVolumeVariables<TypeTag>);
 
 
 //! the FluxVariables property
-SET_TYPE_PROP(BoxThreePThreeCNI, FluxVariables, ThreePThreeCNIFluxVariables<TypeTag>);
+SET_TYPE_PROP(ThreePThreeCNI, FluxVariables, ThreePThreeCNIFluxVariables<TypeTag>);
 
 //! The indices required by the non-isothermal 3p3c model
-SET_TYPE_PROP(BoxThreePThreeCNI, Indices, ThreePThreeCNIIndices<TypeTag, 0>);
+SET_TYPE_PROP(ThreePThreeCNI, Indices, ThreePThreeCNIIndices<TypeTag, 0>);
 
 }
 
diff --git a/dumux/implicit/mpnc/mpncproperties.hh b/dumux/implicit/mpnc/mpncproperties.hh
index 32651752ec..160fc74846 100644
--- a/dumux/implicit/mpnc/mpncproperties.hh
+++ b/dumux/implicit/mpnc/mpncproperties.hh
@@ -20,6 +20,7 @@
 #define DUMUX_MPNC_PROPERTIES_HH
 
 #include <dumux/implicit/box/boxproperties.hh>
+#include <dumux/implicit/cellcentered/ccproperties.hh>
 
 /*!
  * \ingroup Properties
@@ -37,10 +38,10 @@ namespace Properties
 // Type tags
 //////////////////////////////////////////////////////////////////
 
-/*!
- * \brief Define the type tag for the compositional twophase box model.
- */
-NEW_TYPE_TAG(BoxMPNC, INHERITS_FROM(BoxModel));
+//! The type tags for the implicit m-phase n-component problems
+NEW_TYPE_TAG(MPNC);
+NEW_TYPE_TAG(BoxMPNC, INHERITS_FROM(BoxModel, MPNC));
+NEW_TYPE_TAG(CCMPNC, INHERITS_FROM(CCModel, MPNC));
 
 //////////////////////////////////////////////////////////////////
 // Property tags
diff --git a/dumux/implicit/mpnc/mpncpropertydefaults.hh b/dumux/implicit/mpnc/mpncpropertydefaults.hh
index 0ead27ef49..04c5948613 100644
--- a/dumux/implicit/mpnc/mpncpropertydefaults.hh
+++ b/dumux/implicit/mpnc/mpncpropertydefaults.hh
@@ -57,7 +57,7 @@ namespace Properties
  *
  * We just forward the number from the fluid system.
  */
-SET_PROP(BoxMPNC, NumComponents)
+SET_PROP(MPNC, NumComponents)
 {
 private:
     typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem;
@@ -72,7 +72,7 @@ public:
  * We just forward the number from the fluid system and use an static
  * assert to make sure it is 2.
  */
-SET_PROP(BoxMPNC, NumPhases)
+SET_PROP(MPNC, NumPhases)
 {
 private:
     typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem;
@@ -84,7 +84,7 @@ public:
 /*!
  * \brief Set the property for the number of equations and primary variables.
  */
-SET_PROP(BoxMPNC, NumEq)
+SET_PROP(MPNC, NumEq)
 {
 private:
     typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices;
@@ -97,7 +97,7 @@ public:
  * \brief Set the property for the material parameters by extracting
  *        it from the material law.
  */
-SET_PROP(BoxMPNC, MaterialLawParams)
+SET_PROP(MPNC, MaterialLawParams)
 {
 private:
     typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
@@ -112,7 +112,7 @@ public:
  *
  *        \deprecated version. Use "ConstraintSolver" instead of "CompositionFromFugacitiesSolver"
  */
-SET_PROP(BoxMPNC, CompositionFromFugacitiesSolver) // DEPRECATED version. Use "ConstraintSolver" instead of "CompositionFromFugacitiesSolver"
+SET_PROP(MPNC, CompositionFromFugacitiesSolver) // DEPRECATED version. Use "ConstraintSolver" instead of "CompositionFromFugacitiesSolver"
 {
 private:
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
@@ -126,7 +126,7 @@ public:
  * \brief Set the thermodynamic constraint solver which calculates the
  *        composition of any phase given all component fugacities.
  */
-SET_PROP(BoxMPNC, ConstraintSolver)
+SET_PROP(MPNC, ConstraintSolver)
 {
 private:
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
@@ -138,68 +138,68 @@ public:
 
 
 //! Use the MpNc local jacobian operator for the MpNc model
-SET_TYPE_PROP(BoxMPNC,
+SET_TYPE_PROP(MPNC,
               LocalResidual,
               MPNCLocalResidual<TypeTag>);
 
 //! Use the MpNc specific newton controller for the MpNc model
-SET_PROP(BoxMPNC, NewtonController)
+SET_PROP(MPNC, NewtonController)
 {public:
     typedef MPNCNewtonController<TypeTag> type;
 };
 
 //! the Model property
-SET_TYPE_PROP(BoxMPNC, Model, MPNCModel<TypeTag>);
+SET_TYPE_PROP(MPNC, Model, MPNCModel<TypeTag>);
 
 //! use an isothermal model by default
-SET_BOOL_PROP(BoxMPNC, EnableEnergy, false);
+SET_BOOL_PROP(MPNC, EnableEnergy, false);
 
 //! disable diffusion by default
-SET_BOOL_PROP(BoxMPNC, EnableDiffusion, false);
+SET_BOOL_PROP(MPNC, EnableDiffusion, false);
 
 //! disable kinetic mass transfer by default
-SET_BOOL_PROP(BoxMPNC, EnableKinetic, false);
+SET_BOOL_PROP(MPNC, EnableKinetic, false);
 
 //! disable kinetic energy transfer by default
-SET_BOOL_PROP(BoxMPNC, EnableKineticEnergy, false);
+SET_BOOL_PROP(MPNC, EnableKineticEnergy, false);
 
 //! enable smooth upwinding by default
-SET_BOOL_PROP(BoxMPNC, ImplicitEnableSmoothUpwinding, false);
+SET_BOOL_PROP(MPNC, ImplicitEnableSmoothUpwinding, false);
 
 //! the VolumeVariables property
-SET_TYPE_PROP(BoxMPNC, VolumeVariables, MPNCVolumeVariables<TypeTag>);
+SET_TYPE_PROP(MPNC, VolumeVariables, MPNCVolumeVariables<TypeTag>);
 
 //! the FluxVariables property
-SET_TYPE_PROP(BoxMPNC, FluxVariables, MPNCFluxVariables<TypeTag>);
+SET_TYPE_PROP(MPNC, FluxVariables, MPNCFluxVariables<TypeTag>);
 
 //! the Base of the Fluxvariables property (Darcy / Forchheimer)
-SET_TYPE_PROP(BoxMPNC, BaseFluxVariables, BoxDarcyFluxVariables<TypeTag>);
+SET_TYPE_PROP(MPNC, BaseFluxVariables, BoxDarcyFluxVariables<TypeTag>);
 
 //! truncate the newton update for the first few Newton iterations of a time step
-SET_BOOL_PROP(BoxMPNC, NewtonEnableChop, true);
+SET_BOOL_PROP(MPNC, NewtonEnableChop, true);
 
 //! The indices required by the mpnc model
-SET_TYPE_PROP(BoxMPNC, Indices, MPNCIndices<TypeTag, 0>);
+SET_TYPE_PROP(MPNC, Indices, MPNCIndices<TypeTag, 0>);
 
 //! the upwind weight for the mass conservation equations.
-SET_SCALAR_PROP(BoxMPNC, ImplicitMassUpwindWeight, 1.0);
+SET_SCALAR_PROP(MPNC, ImplicitMassUpwindWeight, 1.0);
 
 //! weight for the upwind mobility in the velocity calculation
-SET_SCALAR_PROP(BoxMPNC, ImplicitMobilityUpwindWeight, 1.0);
+SET_SCALAR_PROP(MPNC, ImplicitMobilityUpwindWeight, 1.0);
 
 //! The spatial parameters to be employed. 
 //! Use BoxSpatialParams by default.
-SET_TYPE_PROP(BoxMPNC, SpatialParams, BoxSpatialParams<TypeTag>);
+SET_TYPE_PROP(MPNC, SpatialParams, BoxSpatialParams<TypeTag>);
 
 //! The VTK writer module for common quantities
-SET_PROP(BoxMPNC, MPNCVtkCommonModule)
+SET_PROP(MPNC, MPNCVtkCommonModule)
 {
     typedef MPNCVtkWriterCommon<TypeTag> type;
 };
 
 //! The VTK writer module for quantities which are specific for each
 //! mass module
-SET_PROP(BoxMPNC, MPNCVtkMassModule)
+SET_PROP(MPNC, MPNCVtkMassModule)
 {
 private: enum { enableKinetic = GET_PROP_VALUE(TypeTag, EnableKinetic) };
 public: typedef MPNCVtkWriterMass<TypeTag, enableKinetic> type;
@@ -207,7 +207,7 @@ public: typedef MPNCVtkWriterMass<TypeTag, enableKinetic> type;
 
 //! The VTK writer module for quantities which are specific for each
 //! energy module
-SET_PROP(BoxMPNC, MPNCVtkEnergyModule)
+SET_PROP(MPNC, MPNCVtkEnergyModule)
 {
 private:
     enum { enableEnergy = GET_PROP_VALUE(TypeTag, EnableEnergy) };
@@ -217,7 +217,7 @@ public:
 };
 
 //! The VTK writer for user specified data (does nothing by default)
-SET_PROP(BoxMPNC, MPNCVtkCustomModule)
+SET_PROP(MPNC, MPNCVtkCustomModule)
 { typedef MPNCVtkWriterModule<TypeTag> type; };
 
 /*!
@@ -226,7 +226,7 @@ SET_PROP(BoxMPNC, MPNCVtkCustomModule)
  *        appropriately for the model ((non-)isothermal, equilibrium, ...).
  *        This can be done in the problem.
  */
-SET_PROP(BoxMPNC, FluidState){
+SET_PROP(MPNC, FluidState){
     private:
         typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
         typedef typename GET_PROP_TYPE(TypeTag, FluidSystem) FluidSystem;
@@ -243,34 +243,34 @@ SET_SCALAR_PROP(BoxModel, SpatialParamsForchCoeff, 0.55);
 
 
 //!< Should the averaging of velocities be done in the Model? (By default in the output)
-SET_BOOL_PROP(BoxMPNC, VelocityAveragingInModel, false);
+SET_BOOL_PROP(MPNC, VelocityAveragingInModel, false);
 
 //! Specify what to add to the VTK output by default
-SET_BOOL_PROP(BoxMPNC, VtkAddPorosity, true);
-SET_BOOL_PROP(BoxMPNC, VtkAddBoundaryTypes, false);
-SET_BOOL_PROP(BoxMPNC, VtkAddSaturations, true);
-SET_BOOL_PROP(BoxMPNC, VtkAddPressures, true);
-SET_BOOL_PROP(BoxMPNC, VtkAddVarPressures, false);
-SET_BOOL_PROP(BoxMPNC, VtkAddVelocities, false);
-SET_BOOL_PROP(BoxMPNC, VtkAddDensities, true);
-SET_BOOL_PROP(BoxMPNC, VtkAddMobilities, true);
-SET_BOOL_PROP(BoxMPNC, VtkAddAverageMolarMass, false);
-SET_BOOL_PROP(BoxMPNC, VtkAddMassFractions, false);
-SET_BOOL_PROP(BoxMPNC, VtkAddMoleFractions, true);
-SET_BOOL_PROP(BoxMPNC, VtkAddMolarities, false);
-SET_BOOL_PROP(BoxMPNC, VtkAddFugacities, false);
-SET_BOOL_PROP(BoxMPNC, VtkAddFugacityCoefficients, false);
-SET_BOOL_PROP(BoxMPNC, VtkAddTemperatures, false);
-SET_BOOL_PROP(BoxMPNC, VtkAddEnthalpies, true);
-SET_BOOL_PROP(BoxMPNC, VtkAddInternalEnergies, false);
-SET_BOOL_PROP(BoxMPNC, VtkAddReynolds, false);
-SET_BOOL_PROP(BoxMPNC, VtkAddPrandtl, false);
-SET_BOOL_PROP(BoxMPNC, VtkAddNusselt, false);
-SET_BOOL_PROP(BoxMPNC, VtkAddInterfacialArea, false);
-SET_BOOL_PROP(BoxMPNC, VtkAddxEquil, false);
+SET_BOOL_PROP(MPNC, VtkAddPorosity, true);
+SET_BOOL_PROP(MPNC, VtkAddBoundaryTypes, false);
+SET_BOOL_PROP(MPNC, VtkAddSaturations, true);
+SET_BOOL_PROP(MPNC, VtkAddPressures, true);
+SET_BOOL_PROP(MPNC, VtkAddVarPressures, false);
+SET_BOOL_PROP(MPNC, VtkAddVelocities, false);
+SET_BOOL_PROP(MPNC, VtkAddDensities, true);
+SET_BOOL_PROP(MPNC, VtkAddMobilities, true);
+SET_BOOL_PROP(MPNC, VtkAddAverageMolarMass, false);
+SET_BOOL_PROP(MPNC, VtkAddMassFractions, false);
+SET_BOOL_PROP(MPNC, VtkAddMoleFractions, true);
+SET_BOOL_PROP(MPNC, VtkAddMolarities, false);
+SET_BOOL_PROP(MPNC, VtkAddFugacities, false);
+SET_BOOL_PROP(MPNC, VtkAddFugacityCoefficients, false);
+SET_BOOL_PROP(MPNC, VtkAddTemperatures, false);
+SET_BOOL_PROP(MPNC, VtkAddEnthalpies, true);
+SET_BOOL_PROP(MPNC, VtkAddInternalEnergies, false);
+SET_BOOL_PROP(MPNC, VtkAddReynolds, false);
+SET_BOOL_PROP(MPNC, VtkAddPrandtl, false);
+SET_BOOL_PROP(MPNC, VtkAddNusselt, false);
+SET_BOOL_PROP(MPNC, VtkAddInterfacialArea, false);
+SET_BOOL_PROP(MPNC, VtkAddxEquil, false);
 
 // enable gravity by default
-SET_BOOL_PROP(BoxMPNC, ProblemEnableGravity, true);
+SET_BOOL_PROP(MPNC, ProblemEnableGravity, true);
 
 }
 
diff --git a/dumux/implicit/richards/richardsproperties.hh b/dumux/implicit/richards/richardsproperties.hh
index 67b1ed751f..78cd276a9c 100644
--- a/dumux/implicit/richards/richardsproperties.hh
+++ b/dumux/implicit/richards/richardsproperties.hh
@@ -29,6 +29,7 @@
 #define DUMUX_RICHARDS_PROPERTIES_HH
 
 #include <dumux/implicit/box/boxproperties.hh>
+#include <dumux/implicit/cellcentered/ccproperties.hh>
 
 namespace Dumux
 {
@@ -42,8 +43,10 @@ namespace Properties {
 // Type tags
 //////////////////////////////////////////////////////////////////
 
-//! The type tag for problems discretized using the Richards model
-NEW_TYPE_TAG(BoxRichards, INHERITS_FROM(BoxModel));
+//! The type tags for the implicit Richards problems
+NEW_TYPE_TAG(Richards);
+NEW_TYPE_TAG(BoxRichards, INHERITS_FROM(BoxModel, Richards));
+NEW_TYPE_TAG(CCRichards, INHERITS_FROM(CCModel, Richards));
 
 //////////////////////////////////////////////////////////////////
 // Property tags
diff --git a/dumux/implicit/richards/richardspropertydefaults.hh b/dumux/implicit/richards/richardspropertydefaults.hh
index 44aeb46141..2e312d0805 100644
--- a/dumux/implicit/richards/richardspropertydefaults.hh
+++ b/dumux/implicit/richards/richardspropertydefaults.hh
@@ -49,46 +49,46 @@ namespace Properties {
 // Properties values
 //////////////////////////////////////////////////////////////////
 //! Number of equations required by the model
-SET_INT_PROP(BoxRichards, NumEq, 1);
+SET_INT_PROP(Richards, NumEq, 1);
 //! Number of fluid phases considered
-SET_INT_PROP(BoxRichards, NumPhases, 2);
+SET_INT_PROP(Richards, NumPhases, 2);
 
 //! The local residual operator
-SET_TYPE_PROP(BoxRichards,
+SET_TYPE_PROP(Richards,
               LocalResidual,
               RichardsLocalResidual<TypeTag>);
 
 //! The global model used
-SET_TYPE_PROP(BoxRichards, Model, RichardsModel<TypeTag>);
+SET_TYPE_PROP(Richards, Model, RichardsModel<TypeTag>);
 
 //! The class for the volume averaged quantities
-SET_TYPE_PROP(BoxRichards, VolumeVariables, RichardsVolumeVariables<TypeTag>);
+SET_TYPE_PROP(Richards, VolumeVariables, RichardsVolumeVariables<TypeTag>);
 
 //! The class for the quantities required for the flux calculation
-SET_TYPE_PROP(BoxRichards, FluxVariables, BoxDarcyFluxVariables<TypeTag>);
+SET_TYPE_PROP(Richards, FluxVariables, BoxDarcyFluxVariables<TypeTag>);
 
 //! The class of the newton controller
-SET_TYPE_PROP(BoxRichards, NewtonController, RichardsNewtonController<TypeTag>);
+SET_TYPE_PROP(Richards, NewtonController, RichardsNewtonController<TypeTag>);
 
 //! The upwind weight for the mass conservation equations
-SET_SCALAR_PROP(BoxRichards, ImplicitMassUpwindWeight, 1.0);
+SET_SCALAR_PROP(Richards, ImplicitMassUpwindWeight, 1.0);
 
 //! weight for the upwind mobility in the velocity calculation
-SET_SCALAR_PROP(BoxRichards, ImplicitMobilityUpwindWeight, 1.0);
+SET_SCALAR_PROP(Richards, ImplicitMobilityUpwindWeight, 1.0);
 
 //! The class with all index definitions for the model
-SET_TYPE_PROP(BoxRichards, Indices, RichardsIndices<TypeTag>);
+SET_TYPE_PROP(Richards, Indices, RichardsIndices<TypeTag>);
 
 //! The spatial parameters to be employed. 
 //! Use BoxSpatialParams by default.
-SET_TYPE_PROP(BoxRichards, SpatialParams, BoxSpatialParams<TypeTag>);
+SET_TYPE_PROP(Richards, SpatialParams, BoxSpatialParams<TypeTag>);
 
 /*!
  * \brief Set type of the parameter objects for the material law
  *
  * By default this is just retrieved from the material law.
  */
-SET_PROP(BoxRichards, MaterialLawParams)
+SET_PROP(Richards, MaterialLawParams)
 {
 private:
     typedef typename GET_PROP_TYPE(TypeTag, MaterialLaw) MaterialLaw;
@@ -107,7 +107,7 @@ public:
  * of the liquid phase is _much_ lower than the viscosity of the
  * wetting phase.
  */
-SET_PROP(BoxRichards, WettingPhase)
+SET_PROP(Richards, WettingPhase)
 { private:
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
 public:
@@ -122,7 +122,7 @@ public:
  * specified by the problem for the Richards model to work because the
  * Richards model does not conserve the non-wetting phase.
  */
-SET_PROP(BoxRichards, NonwettingPhase)
+SET_PROP(Richards, NonwettingPhase)
 { private:
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
 public:
@@ -138,7 +138,7 @@ public:
  * using different fluid systems in conjunction with the Richards
  * model only makes very limited sense.
  */
-SET_PROP(BoxRichards, FluidSystem)
+SET_PROP(Richards, FluidSystem)
 { private:
     typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
     typedef typename GET_PROP_TYPE(TypeTag, WettingPhase) WettingPhase;
@@ -151,7 +151,7 @@ public:
 };
 
 // enable gravity by default
-SET_BOOL_PROP(BoxRichards, ProblemEnableGravity, true);
+SET_BOOL_PROP(Richards, ProblemEnableGravity, true);
 
 //! default value for the forchheimer coefficient
 // Source: Ward, J.C. 1964 Turbulent flow in porous media. ASCE J. Hydraul. Div 90.
-- 
GitLab