From aae93b0249e11ef984d80f57c877eb74ca6561d6 Mon Sep 17 00:00:00 2001
From: Benjamin Faigle <benjamin.faigle@posteo.de>
Date: Thu, 4 Oct 2012 15:58:26 +0000
Subject: [PATCH] Correct and remove decoupled 2p2c doxygen errors. Improved
 docu on adaptive models: Everything should be properly doxygened now. Added
 Adaptive2p2c doxygen module.

git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk@9203 2fb0f335-1f38-0410-981e-8018bf24f1b0
---
 doc/doxygen/modules                           |  6 +-
 .../decoupled/2p2c/2p2cadaptiveproperties.hh  |  1 +
 dumux/decoupled/2p2c/cellData2p2cadaptive.hh  | 19 ++--
 dumux/decoupled/2p2c/fvpressure2p2c.hh        |  4 +-
 .../decoupled/2p2c/fvpressure2p2cadaptive.hh  |  8 +-
 .../2p2c/fvpressure2p2cmultiphysics.hh        | 15 ++--
 dumux/decoupled/2p2c/fvtransport2p2c.hh       | 50 ++++++-----
 .../decoupled/2p2c/fvtransport2p2cadaptive.hh | 30 +++++--
 .../2p2c/fvtransport2p2cmultiphysics.hh       | 16 ++--
 dumux/decoupled/2p2c/pseudo1p2cfluidstate.hh  |  9 +-
 .../2p2c/variableclass2p2cadaptive.hh         | 89 ++++++++++++++-----
 .../2p2c/test_adaptive2p2cproblem.hh          |  5 +-
 12 files changed, 164 insertions(+), 88 deletions(-)

diff --git a/doc/doxygen/modules b/doc/doxygen/modules
index 20f483b875..7c410ac308 100644
--- a/doc/doxygen/modules
+++ b/doc/doxygen/modules
@@ -261,12 +261,16 @@
 			 	*/	
 		/*!
 		 * \ingroup IMPET
-		 * \defgroup IMPEC Miscible IMPEC
+		 * \defgroup IMPEC Miscible (Compositional) IMPEC
 		 */
 			/*!
 			 * \ingroup IMPEC
 			 * \defgroup multiphase Multiphase Compositional Models
 			 */
+				/*!
+				* \ingroup multiphase
+				* \defgroup Adaptive2p2c (Grid-)Adaptive Multiphase Compositional Models
+				*/
 			/*!
 			 * \ingroup IMPEC
 			 * \defgroup multiphysics Multiphysics Compositional Models
diff --git a/dumux/decoupled/2p2c/2p2cadaptiveproperties.hh b/dumux/decoupled/2p2c/2p2cadaptiveproperties.hh
index fc964db411..a17f427394 100644
--- a/dumux/decoupled/2p2c/2p2cadaptiveproperties.hh
+++ b/dumux/decoupled/2p2c/2p2cadaptiveproperties.hh
@@ -19,6 +19,7 @@
 
 /*!
  * \ingroup IMPEC
+ * \ingroup Adaptive2p2c
  * \ingroup IMPETProperties
  *
  * \file
diff --git a/dumux/decoupled/2p2c/cellData2p2cadaptive.hh b/dumux/decoupled/2p2c/cellData2p2cadaptive.hh
index d289fc1664..db268908de 100644
--- a/dumux/decoupled/2p2c/cellData2p2cadaptive.hh
+++ b/dumux/decoupled/2p2c/cellData2p2cadaptive.hh
@@ -30,7 +30,7 @@
 namespace Dumux
 {
 /*!
- * \ingroup IMPET
+ * \ingroup Adaptive2p2c
  */
 //! Class including the data of a grid cell needed if an adaptive grid is used.
 /*! The class provides model-specific functions needed to adapt the stored cell data to a new (adapted) grid.
@@ -73,7 +73,7 @@ private:
 
 public:
     //! A container for all necessary variables to map an old solution to a new grid
-    /*
+    /**
      * If the primary variables (pressure, total concentrations) are mapped to a new grid,
      * the secondary variables can be calulated. For the mapping between sons and father, it
      * is in addition necessary to know about how many sons live in each father ("count").
@@ -85,14 +85,15 @@ public:
      */
     struct AdaptedValues
     {
-        Dune::FieldVector<Scalar,2> totalConcentration_;
-        Dune::FieldVector<Scalar,2> pressure_;
+        Dune::FieldVector<Scalar,2> totalConcentration_; //!< Transport primary variables
+        Dune::FieldVector<Scalar,2> pressure_; //!< Pressure primary variables
+        //! Storage for volume derivatives, as transport estimate on old pressure field is not correct after refinement
         Dune::FieldVector<Scalar,3> volumeDerivatives_;
-        Scalar cellVolume;
-        FluxData2P2C<TypeTag> fluxData_;
-        int subdomain;
-        int count;
-        int isRefined;
+        Scalar cellVolume; //!< Cell volume for transformation of volume-specific primary variables
+        FluxData2P2C<TypeTag> fluxData_; //!< Information on old flux direction
+        int subdomain; //!< subdomain
+        int count; //!< counts the number of cells averaged
+        int isRefined; //!< Indicates if cell is refined
         AdaptedValues()
         {
             totalConcentration_=0.;
diff --git a/dumux/decoupled/2p2c/fvpressure2p2c.hh b/dumux/decoupled/2p2c/fvpressure2p2c.hh
index fa87f2a14b..f828162410 100644
--- a/dumux/decoupled/2p2c/fvpressure2p2c.hh
+++ b/dumux/decoupled/2p2c/fvpressure2p2c.hh
@@ -181,8 +181,8 @@ public:
 
 protected:
     Problem& problem_;
-    Scalar maxError_; //!> Maximum volume error of all cells
-    bool enableVolumeIntegral; //!> Enables the volume integral of the pressure equation
+    Scalar maxError_; //!< Maximum volume error of all cells
+    bool enableVolumeIntegral; //!< Enables the volume integral of the pressure equation
     Scalar ErrorTermFactor_; //!< Handling of error term: relaxation factor
     Scalar ErrorTermLowerBound_; //!< Handling of error term: lower bound for error dampening
     Scalar ErrorTermUpperBound_; //!< Handling of error term: upper bound for error dampening
diff --git a/dumux/decoupled/2p2c/fvpressure2p2cadaptive.hh b/dumux/decoupled/2p2c/fvpressure2p2cadaptive.hh
index db02b9fda3..00f0cf19ed 100644
--- a/dumux/decoupled/2p2c/fvpressure2p2cadaptive.hh
+++ b/dumux/decoupled/2p2c/fvpressure2p2cadaptive.hh
@@ -55,7 +55,7 @@ NEW_PROP_TAG(GridAdaptEnableSecondHalfEdge);
 }
 
 //! The finite volume model for the solution of the compositional pressure equation
-/*! \ingroup multiphase
+/*! \ingroup Adaptive2p2c
  *  Provides a Finite Volume implementation for the pressure equation of a compressible
  *  system with two components. An IMPES-like method is used for the sequential
  *  solution of the problem.  Diffusion is neglected, capillarity can be regarded.
@@ -224,9 +224,9 @@ protected:
 
     //! Matrix for vector rotation used in mpfa
     DimMatrix R_;
-    bool enableVolumeIntegral; //!> Enables the volume integral of the pressure equation
-    bool enableMPFA; //!> Enables mpfa method to calculate the fluxes near hanging nodes
-    bool enableSecondHalfEdge; //!> If possible, 2 interaction volumes are used for the mpfa method near hanging nodes
+    bool enableVolumeIntegral; //!< Enables the volume integral of the pressure equation
+    bool enableMPFA; //!< Enables mpfa method to calculate the fluxes near hanging nodes
+    bool enableSecondHalfEdge; //!< If possible, 2 interaction volumes are used for the mpfa method near hanging nodes
     //! The 2p Mpfa pressure module, that is only used for the calulation of transmissibility of the second interaction volumes
     FVMPFAL2PFABoundPressure2PAdaptive<TypeTag>* pressureModelAdaptive2p_;
 };
diff --git a/dumux/decoupled/2p2c/fvpressure2p2cmultiphysics.hh b/dumux/decoupled/2p2c/fvpressure2p2cmultiphysics.hh
index 76ed05bd32..ffe43829fa 100644
--- a/dumux/decoupled/2p2c/fvpressure2p2cmultiphysics.hh
+++ b/dumux/decoupled/2p2c/fvpressure2p2cmultiphysics.hh
@@ -114,7 +114,8 @@ class FVPressure2P2CMultiPhysics : public FVPressure2P2C<TypeTag>
     typedef Dune::FieldVector<Scalar, GET_PROP_VALUE(TypeTag, NumPhases)> PhaseVector;
     typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables;
 
-
+    //! @copydoc FVPressure::EntryType
+    typedef Dune::FieldVector<Scalar, 2> EntryType;
 //! Access functions to the current problem object
     Problem& problem()
     {    return this->problem_;   }
@@ -124,13 +125,13 @@ public:
     //function which assembles the system of equations to be solved
     void assemble(bool first);
 
-    void get1pSource(Dune::FieldVector<Scalar, 2>&, const Element&, const CellData&);
+    void get1pSource(EntryType&, const Element&, const CellData&);
 
-    void get1pStorage(Dune::FieldVector<Scalar, 2>&, const Element&, CellData&);
+    void get1pStorage(EntryType&, const Element&, CellData&);
 
-    void get1pFlux(Dune::FieldVector<Scalar, 2>&, const Intersection&, const CellData&);
+    void get1pFlux(EntryType&, const Intersection&, const CellData&);
 
-    void get1pFluxOnBoundary(Dune::FieldVector<Scalar, 2>&,
+    void get1pFluxOnBoundary(EntryType&,
                             const Intersection&, const CellData&);
 
     //initialize mult-physics-specific pressure model stuff
@@ -189,7 +190,7 @@ protected:
     Dune::BlockVector<Dune::FieldVector<int,1> > nextSubdomain;  //! vector holding next subdomain
     const GlobalPosition& gravity_; //!< vector including the gravity constant
     static constexpr int pressureType = GET_PROP_VALUE(TypeTag, PressureFormulation); //!< gives kind of pressure used (\f$ 0 = p_w \f$, \f$ 1 = p_n \f$, \f$ 2 = p_{global} \f$)
-    Dune::Timer timer_; //!> A timer for the time spent on the multiphysics framework.
+    Dune::Timer timer_; //!< A timer for the time spent on the multiphysics framework.
 
     //! Indices of matrix and rhs entries
     /**
@@ -306,7 +307,6 @@ void FVPressure2P2CMultiPhysics<TypeTag>::assemble(bool first)
  * \param sourceEntry The Matrix and RHS entries
  * \param elementI The element I
  * \param cellDataI Data of cell I
- * \param first Flag if pressure field is unknown
  */
 template<class TypeTag>
 void FVPressure2P2CMultiPhysics<TypeTag>::get1pSource(Dune::FieldVector<Scalar, 2>& sourceEntry, const Element& elementI, const CellData& cellDataI)
@@ -823,6 +823,7 @@ void FVPressure2P2CMultiPhysics<TypeTag>::updateMaterialLaws(bool postTimeStep)
  * primary variables. Only a simple flash calulation has to be carried out,
  * as phase distribution is already known: single-phase.
  * \param elementI The element
+ * \param cellData The cell data of the current element
  * \param postTimeStep Flag indicating if we have just completed a time step
  */
 template<class TypeTag>
diff --git a/dumux/decoupled/2p2c/fvtransport2p2c.hh b/dumux/decoupled/2p2c/fvtransport2p2c.hh
index b856b6dc5e..1eb5ce96fa 100644
--- a/dumux/decoupled/2p2c/fvtransport2p2c.hh
+++ b/dumux/decoupled/2p2c/fvtransport2p2c.hh
@@ -31,7 +31,7 @@
 
 namespace Dumux
 {
-//! Miscible Transport step in a Finite Volume discretization
+//! Compositional transport step in a Finite Volume discretization
 /*! \ingroup multiphase
  *  The finite volume model for the solution of the transport equation for compositional
  *  two-phase flow.
@@ -98,7 +98,9 @@ class FVTransport2P2C
     typedef Dune::FieldMatrix<Scalar,dim,dim> DimMatrix;
     typedef Dune::FieldVector<Scalar, NumPhases> PhaseVector;
     typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables;
-
+protected:
+    //! @copydoc FVPressure::EntryType
+    typedef Dune::FieldVector<Scalar, 2> EntryType;
     //! Acess function for the current problem
     Problem& problem()
     {return problem_;};
@@ -109,11 +111,11 @@ public:
     void updateTransportedQuantity(TransportSolutionType& updateVector);
 
     // Function which calculates the flux update
-    void getFlux(Dune::FieldVector<Scalar, 2>&, Dune::FieldVector<Scalar, 2>&,
+    void getFlux(EntryType&, EntryType&,
             const Intersection&, CellData&);
 
     // Function which calculates the boundary flux update
-    void getFluxOnBoundary(Dune::FieldVector<Scalar, 2>&, Dune::FieldVector<Scalar, 2>&,
+    void getFluxOnBoundary(EntryType&, EntryType&,
                             const Intersection&, const CellData&);
 
     void evalBoundary(GlobalPosition,const Intersection&,FluidState &, PhaseVector &);
@@ -128,7 +130,7 @@ public:
         totalConcentration_[nCompIdx].resize(problem_.gridView().size(0));
     };
 
-    //! \brief Write data files
+    //! \brief Write transport variables into the output files
      /*  \param writer applied VTK-writer */
     template<class MultiWriter>
     void addOutputVtkFields(MultiWriter &writer)
@@ -164,7 +166,7 @@ public:
     /*! \name Access functions for protected variables  */
     //@{
     //! Return the vector of the transported quantity
-    /*! For an immiscible IMPES scheme, this is the saturation. For Miscible simulations, however,
+    /*! For an immiscible IMPES scheme, this is the saturation. For compositional simulations, however,
      *  the total concentration of all components is transported.
      */
     TransportSolutionType& transportedQuantity() DUNE_DEPRECATED
@@ -189,7 +191,7 @@ public:
     //@}
     //! Constructs a FVTransport2P2C object
     /*!
-     * Currently, the miscible transport scheme can not be applied with a global pressure / total velocity
+     * Currently, the compositional transport scheme can not be applied with a global pressure / total velocity
      * formulation.
      *
      * \param problem a problem class object
@@ -209,13 +211,13 @@ public:
     }
 
 protected:
-    TransportSolutionType totalConcentration_;
+    TransportSolutionType totalConcentration_; //!< private vector of transported primary variables
     Problem& problem_;
-    bool impet_;
-    int averagedFaces_;
+    bool impet_; //!< indicating if we are in an estimate (false) or real impet (true) step.
+    int averagedFaces_; //!< number of faces were flux was restricted
 
     static const int pressureType = GET_PROP_VALUE(TypeTag, PressureFormulation); //!< gives kind of pressure used (\f$ 0 = p_w \f$, \f$ 1 = p_n \f$, \f$ 2 = p_{global} \f$)
-    int restrictFluxInTransport_;
+    int restrictFluxInTransport_; //!< Restriction of flux on new pressure field if direction reverses from the pressure equation
     bool switchNormals;
 };
 
@@ -225,12 +227,11 @@ protected:
  *  \f[
        C^{\kappa , new} = C^{\kappa , old} + u,
  *  \f]
- *  where \f$ u = \sum_{element faces} \boldsymbol{v}_{\alpha} * \varrho_{\alpha} * X^{\kappa}_{\alpha} * \boldsymbol{n} * A_{element face} \f$,
- *  \f$ \boldsymbol{n} \f$ is the face normal and \f$ A_{element face} \f$ is the face area.
+ *  where \f$ u = \sum_{\gamma} \boldsymbol{v}_{\alpha} * \varrho_{\alpha} * X^{\kappa}_{\alpha} * \boldsymbol{n} * A_{\gamma} \f$,
+ *  \f$ \boldsymbol{n} \f$ is the face normal and \f$ A_{\gamma} \f$ is the face area of face \f$ \gamma \f$.
  *
  *  In addition to the \a update vector, the recommended time step size \a dt is calculated
  *  employing a CFL condition.
- *  This method = old concentrationUpdate()
  *
  *  \param t Current simulation time \f$\mathrm{[s]}\f$
  *  \param[out] dt Time step size \f$\mathrm{[s]}\f$
@@ -340,14 +341,15 @@ void FVTransport2P2C<TypeTag>::updateTransportedQuantity(TransportSolutionType&
 }
 
 //! Get flux at an interface between two cells
-/** The flux thorugh \f$ \gamma{ij} \f$  is calculated according to the underlying pressure field,
+/** The flux through \f$ \gamma \f$  is calculated according to the underlying pressure field,
  * calculated by the pressure model.
- *  \f[ - A_{\gamma_{ij}}  \cdot \mathbf{u} \cdot (\mathbf{n}_{\gamma_{ij}} \cdot \mathbf{u})\cdot \mathbf{K}
-      \sum_{\alpha} \varrho_{\alpha} \lambda_{\alpha} \sum_{\kappa} X^{\kappa}_{\alpha}
-    \left( \frac{p_{\alpha,j}^t - p^{t}_{\alpha,i}}{\Delta x} + \varrho_{\alpha} \mathbf{g}\right) \f]
- * Here, \f$ \mathbf{u} \f$ is the normalized vector connecting the cell centers, and \f$ \mathbf{n}_{\gamma_{ij}} \f$
- * represents the normal of the face \f$ \gamma{ij} \f$. Due to the nature of the Primay Variable, the (volume-)specific
+ *  \f[ - A_{\gamma} \mathbf{n}^T_{\gamma} \mathbf{K}  \sum_{\alpha} \varrho_{\alpha} \lambda_{\alpha}
+     \mathbf{d}_{ij}  \left( \frac{p_{\alpha,j}^t - p^{t}_{\alpha,i}}{\Delta x} + \varrho_{\alpha} \mathbf{g}^T \mathbf{d}_{ij} \right)
+                \sum_{\kappa} X^{\kappa}_{\alpha} \f]
+ * Here, \f$ \mathbf{d}_{ij} \f$ is the normalized vector connecting the cell centers, and \f$ \mathbf{n}_{\gamma} \f$
+ * represents the normal of the face \f$ \gamma \f$. Due to the nature of the primay Variable, the (volume-)specific
  * total mass concentration, this represents a mass flux per cell volume.
+ *
  * \param fluxEntries The flux entries, mass influx from cell \f$j\f$ to \f$i\f$.
  * \param timestepFlux flow velocities for timestep estimation
  * \param intersection The intersection
@@ -587,11 +589,11 @@ void FVTransport2P2C<TypeTag>::getFlux(Dune::FieldVector<Scalar, 2>& fluxEntries
     return;
 }
 //! Get flux on Boundary
-/** The flux thorugh \f$ \gamma{ij} \f$  is calculated according to the underlying pressure field,
+/** The flux through \f$ \gamma \f$  is calculated according to the underlying pressure field,
  * calculated by the pressure model.
- *  \f[ - A_{\gamma_{ij}}  \cdot \mathbf{u} \cdot (\mathbf{n}_{\gamma_{ij}} \cdot \mathbf{u})\cdot \mathbf{K}
+ *  \f[ - A_{\gamma}  \mathbf{n}^T_{\gamma} \mathbf{K} \mathbf{d}_{i-Boundary}
       \sum_{\alpha} \varrho_{\alpha} \lambda_{\alpha} \sum_{\kappa} X^{\kappa}_{\alpha}
-    \left( \frac{p_{\alpha,j}^t - p^{t}_{\alpha,i}}{\Delta x} + \varrho_{\alpha} \mathbf{g}\right) \f]
+    \left( \frac{p_{\alpha,Boundary}^t - p^{t}_{\alpha,i}}{\Delta x} + \varrho_{\alpha}\mathbf{g}^T \mathbf{d}_{i-Boundary}\right) \f]
  * Here, \f$ \mathbf{u} \f$ is the normalized vector connecting the cell centers, and \f$ \mathbf{n}_{\gamma_{ij}} \f$
  * represents the normal of the face \f$ \gamma{ij} \f$.
  * \param fluxEntries The flux entries, mass influx from cell \f$j\f$ to \f$i\f$.
@@ -805,7 +807,7 @@ void FVTransport2P2C<TypeTag>::getFluxOnBoundary(Dune::FieldVector<Scalar, 2>& f
  *  possible to define boundaries by means of a saturation. This choice determines
  *  which version of flash calculation is necessary to get to the composition at
  *  the boundary.
- *  \param globalPosFace Face of the current boundary
+ *  \param globalPosFace The global position of the face of the current boundary cell
  *  \param intersection The current intersection
  *  \param BCfluidState FluidState object that is used for the boundary
  *  \param pressBound Boundary values of phase pressures
diff --git a/dumux/decoupled/2p2c/fvtransport2p2cadaptive.hh b/dumux/decoupled/2p2c/fvtransport2p2cadaptive.hh
index cc5970f70a..b61756fb68 100644
--- a/dumux/decoupled/2p2c/fvtransport2p2cadaptive.hh
+++ b/dumux/decoupled/2p2c/fvtransport2p2cadaptive.hh
@@ -39,8 +39,8 @@ namespace Properties
 // forward declaration of properties
 NEW_PROP_TAG(GridAdaptEnableMultiPointFluxApproximation);
 }
-//! Miscible Transport step in a Finite Volume discretization
-/*! \ingroup multiphase
+//! Compositional Transport step in a Finite Volume discretization
+/*! \ingroup Adaptive2p2c
  *  The finite volume model for the solution of the transport equation for compositional
  *  two-phase flow.
  *  \f[
@@ -144,12 +144,12 @@ protected:
  *  \f[
        C^{\kappa , new} = C^{\kappa , old} + u,
  *  \f]
- *  where \f$ u = \sum_{element faces} \boldsymbol{v}_{\alpha} * \varrho_{\alpha} * X^{\kappa}_{\alpha} * \boldsymbol{n} * A_{element face} \f$,
- *  \f$ \boldsymbol{n} \f$ is the face normal and \f$ A_{element face} \f$ is the face area.
+ *  where \f$ u = \sum_{\gamma} \boldsymbol{v}_{\alpha} * \varrho_{\alpha} * X^{\kappa}_{\alpha} * \boldsymbol{n} * A_{\gamma} \f$,
+ *  \f$ \boldsymbol{n} \f$ is the face normal and \f$ A_{\gamma} \f$ is the face area of face \f$ \gamma \f$.
  *
  *  In addition to the \a update vector, the recommended time step size \a dt is calculated
- *  employing a CFL condition.
- *  This method = old concentrationUpdate()
+ *  employing a CFL condition. This method uses a standard \a Tpfa method for regular fluxes,
+ *  and a \a mpfa can be used near hanging nodes.
  *
  *  \param t Current simulation time \f$\mathrm{[s]}\f$
  *  \param[out] dt Time step size \f$\mathrm{[s]}\f$
@@ -261,6 +261,24 @@ void FVTransport2P2CAdaptive<TypeTag>::update(const Scalar t, Scalar& dt, Transp
     return;
 }
 
+//! Compute flux over an irregular interface using a \a mpfa method
+/** A mpfa l-method is applied to calculate fluxes near hanging nodes, using:
+ * \f[
+      - \sum_{\alpha} \varrho_{\alpha} \lambda_{\alpha}
+        \left( \sum_k \tau_{2k} p^t_{\alpha,k} + \varrho_{\alpha} \sum_k \tau_{2k} \mathbf{g}^T \mathbf{x}_{k} \right)
+                \sum_{\kappa} X^{\kappa}_{\alpha}
+    \f]
+ *
+ * We provide two options: Calculating the flux expressed by twice the flux
+ * through the one unique interaction region on the hanging node if one
+ * halfedge is stored (eg on boundaries). Or using the second interaction
+ * region covering neighboring cells.
+ *
+ * \param fluxEntries The flux entries, mass influx from cell \f$j\f$ to \f$i\f$.
+ * \param timestepFlux flow velocities for timestep estimation
+ * \param intersectionIterator Iterator of the intersection between cell I and J
+ * \param cellDataI The cell data for cell \f$i\f$
+ */
 template<class TypeTag>
 void FVTransport2P2CAdaptive<TypeTag>::getMpfaFlux(Dune::FieldVector<Scalar, 2>& fluxEntries, Dune::FieldVector<Scalar, 2>& timestepFlux,
                                         const IntersectionIterator& intersectionIterator, CellData& cellDataI)
diff --git a/dumux/decoupled/2p2c/fvtransport2p2cmultiphysics.hh b/dumux/decoupled/2p2c/fvtransport2p2cmultiphysics.hh
index dd066b98ca..775d075cfe 100644
--- a/dumux/decoupled/2p2c/fvtransport2p2cmultiphysics.hh
+++ b/dumux/decoupled/2p2c/fvtransport2p2cmultiphysics.hh
@@ -28,7 +28,7 @@
 
 namespace Dumux
 {
-//! Miscible Transport step in a Finite Volume discretization
+//! Compositional Transport Step in a Finite Volume discretization
 /*!
  * \ingroup multiphysics
  *  The finite volume model for the solution of the transport equation for compositional
@@ -40,10 +40,10 @@ namespace Dumux
  *  \f$ p_{\alpha} \f$ denotes the phase pressure, \f$ \bf{K} \f$ the absolute permeability, \f$ \lambda_{\alpha} \f$ the phase mobility,
  *  \f$ \rho_{\alpha} \f$ the phase density and \f$ \bf{g} \f$ the gravity constant and \f$ C^{\kappa} \f$ the total Component concentration.
  *
- * The model domain is automatically divided
- * in a single-phase and a two-phase domain. The full 2p2c model is only evaluated within the
- * two-phase subdomain, whereas a single-phase transport model is computed in the rest of the
- * domain.
+ * The model domain is automatically divided into a single-phase and a two-phase domain. As the flux computation is relatively cheap,
+ * the same method is used for the real transport step independently of the subdomain.
+ * The pressure equation does not need any derivatives in simple
+ * subdomains, therefore in the transport estimate step inter-cell fluxes in the simple subdomain are omitted.
  *
  *  \tparam TypeTag The Type Tag
  */
@@ -99,7 +99,6 @@ public:
     /**
      * \param problem a problem class object
      */
-
     FVTransport2P2CMultiPhysics(Problem& problem) : FVTransport2P2C<TypeTag>(problem)
     {}
 
@@ -113,12 +112,11 @@ public:
  *  \f[
        C^{\kappa , new} = C^{\kappa , old} + u,
  *  \f]
- *  where \f$ u = \sum_{element faces} \boldsymbol{v}_{\alpha} * \varrho_{\alpha} * X^{\kappa}_{\alpha} * \boldsymbol{n} * A_{element face} \f$,
- *  \f$ \boldsymbol{n} \f$ is the face normal and \f$ A_{element face} \f$ is the face area.
+ *  where \f$ u = \sum_{\gamma} \boldsymbol{v}_{\alpha} * \varrho_{\alpha} * X^{\kappa}_{\alpha} * \boldsymbol{n} * A_{\gamma} \f$,
+ *  \f$ \boldsymbol{n} \f$ is the face normal and \f$ A_{\gamma} \f$ is the face area of face \f$ \gamma \f$.
  *
  *  In addition to the \a update vector, the recommended time step size \a dt is calculated
  *  employing a CFL condition.
- *  This method = old concentrationUpdate()
  *
  *  \param t Current simulation time \f$\mathrm{[s]}\f$
  *  \param[out] dt Time step size \f$\mathrm{[s]}\f$
diff --git a/dumux/decoupled/2p2c/pseudo1p2cfluidstate.hh b/dumux/decoupled/2p2c/pseudo1p2cfluidstate.hh
index 474e9bddc1..c95ddb3ca0 100644
--- a/dumux/decoupled/2p2c/pseudo1p2cfluidstate.hh
+++ b/dumux/decoupled/2p2c/pseudo1p2cfluidstate.hh
@@ -36,7 +36,7 @@ namespace Dumux
  *  It is used in case of a multiphysics approach. For the non-present phase,
  *  no information is stored but 0-values are returned to allow for general output
  *  methods.
- *  The "flash" calulation routines are in the decoupled flash constrain solver, see
+ *  The "flash" calculation routines are in the decoupled flash constrain solver, see
  *  Dumux::CompositionalFlash .
  *  \tparam TypeTag The property Type Tag
  */
@@ -72,6 +72,7 @@ public:
             return 0.;
     };
 
+    //! \brief Returns the index of the phase that is present in that cell.
     int presentPhaseIdx() const
     {
         return presentPhaseIdx_;
@@ -82,7 +83,11 @@ public:
      */
     Scalar pressure(int phaseIdx) const
     { return pressure_[phaseIdx]; }
-
+    /*!
+     * \brief Returns the density of a phase \f$\mathrm{[kg/m^3]}\f$.
+     *
+     * \param phaseIdx the index of the phase
+     */
     Scalar density(int phaseIdx) const
     {
         if(phaseIdx == presentPhaseIdx_)
diff --git a/dumux/decoupled/2p2c/variableclass2p2cadaptive.hh b/dumux/decoupled/2p2c/variableclass2p2cadaptive.hh
index 8010a81cfb..632ff38910 100644
--- a/dumux/decoupled/2p2c/variableclass2p2cadaptive.hh
+++ b/dumux/decoupled/2p2c/variableclass2p2cadaptive.hh
@@ -35,7 +35,7 @@
 namespace Dumux
 {
 /*!
- * \ingroup IMPET
+ * \ingroup Adaptive2p2c
  */
 //! Class holding additionally mpfa data of adaptive compositional models.
 /*!
@@ -71,51 +71,57 @@ private:
     {
         dim = GridView::dimension, dimWorld = GridView::dimensionworld
     };
-    enum    // for first and second half edge 2D / subvolume face 3D
+    enum    //!< for first and second half edge (2D) or subvolume face (3D)
     {
         first = 0, second = 1
     };
     // convenience shortcuts for Vectors/Matrices
     typedef Dune::FieldVector<Scalar, GridView::dimensionworld> GlobalPosition;
-    typedef Dune::FieldVector<Scalar,dim+1> T1ransmissivityMatrix;
+    typedef Dune::FieldVector<Scalar,dim+1> TransmissivityMatrix;
 
 protected:
-    // in the 2D case, we need to store 1 additional cell. In 3D, we store
-    // dim-1=2 cells for one interaction volume, and 4 if two interaction volumes
-    // are regarded.
+    /** in the 2D case, we need to store 1 additional cell. In 3D, we store
+    * dim-1=2 cells for one interaction volume, and 4 if two interaction volumes
+    * are regarded.
+    */
     const static int storageRequirement = (dim-1)*(dim-1);
     //! Storage object for data related to the MPFA method
-    /*
+    /**
      * This Struct stores the transmissibility coefficients
      * for the two half-eges of an irregular interface (one
      * near a hanging node) in an h-adaptive simulation.
      */
     struct mpfaData
     {
-        T1ransmissivityMatrix T1_[2];
+        TransmissivityMatrix T1_[2];
         int globalIdx3_[storageRequirement];
         GlobalPosition globalPos3_[storageRequirement];
         std::vector<IntersectionIterator> secondHalfEdgeIntersection_;
         bool hasSecondHalfEdge;
 
+        //! Constructor for the local storage object of mpfa data
         mpfaData()
         {
             hasSecondHalfEdge = false;
         }
-
+        //! stores an intersection
+        /** This also provides the information that both half-edges are
+         * regarded and information was stored.
+         * \param is23 Intersection pointing to 3rd cell of additional interaction region
+         */
         void setIntersection(IntersectionIterator& is23)
         {
             secondHalfEdgeIntersection_.push_back(is23);
             hasSecondHalfEdge = true;
         };
+        //! Acess method to the stored intersection
         const IntersectionIterator& getIntersection()
         {
             return secondHalfEdgeIntersection_[0];
         };
     };
-    std::map<IdType, mpfaData> irregularInterfaceMap_;
-
-    const Grid& grid_;
+    std::map<IdType, mpfaData> irregularInterfaceMap_; //!< Storage container for mpfa information
+    const Grid& grid_; //!< The grid
 
 public:
     //! Constructs a VariableClass object
@@ -153,8 +159,20 @@ public:
         problem.pressureModel().adaptPressure();
     }
 
+    //! Stores Mpfa Data on an intersection
+    /** The method stores information to the interaction region (Transmissitivity
+     * as well as details of the 3rd cell in the region) into a storage container.
+     * The key to each element is the index of the intersection, seen from the smaller
+     * cell (only this is unique).
+     * If we arrive from the "wrong" (i.e. non-unique) direction, we invert fluxes.
+     *
+     * \param irregularIs The current irregular intersection
+     * \param T1 Transmissitivity matrix for flux calculations
+     * \param globalPos3 The position of the 3rd cell of the interaction region
+     * \param globalIdx3 The index of the 3rd cell of the interaction region
+     */
     void storeMpfaData(const typename GridView::Intersection & irregularIs,
-    					const T1ransmissivityMatrix& T1,
+    					const TransmissivityMatrix& T1,
     					const GlobalPosition& globalPos3,
     					const int& globalIdx3)
     {
@@ -182,11 +200,24 @@ public:
 		irregularInterfaceMap_[intersectionID].globalIdx3_[0] = globalIdx3;
         return;
     }
-
+    //! Stores Mpfa Data on an intersection for both half-edges
+    /** The method stores information of both interaction regions (Transmissitivity
+     * as well as details of the 3rd cells of both regions) into a storage container.
+     * The key to each element is the index of the intersection, seen from the smaller
+     * cell (only this is unique).
+     * If we arrive from the "wrong" (i.e. non-unique) direction, we invert fluxes.
+     *
+     * \param irregularIs The current irregular intersection
+     * \param secondHalfEdgeIntersectionIt Iterator to the intersection connecting the second interaction region
+     * \param T1 Transmissitivity matrix for flux calculations: unique interaction region
+     * \param T1_secondHalfEdge Second transmissitivity matrix for flux calculations for non-unique interaction region
+     * \param globalPos3 The position of the 3rd cell of the first interaction region
+     * \param globalIdx3 The index of the 3rd cell of the first interaction region
+     */
     void storeMpfaData(const typename GridView::Intersection & irregularIs,
                         IntersectionIterator& secondHalfEdgeIntersectionIt,
-                        const T1ransmissivityMatrix& T1,
-                        const T1ransmissivityMatrix& T11_secondHalfEdge,
+                        const TransmissivityMatrix& T1,
+                        const TransmissivityMatrix& T1_secondHalfEdge,
                         const GlobalPosition& globalPos3,
                         const int& globalIdx3)
     {
@@ -207,16 +238,16 @@ public:
             irregularInterfaceMap_[intersectionID].T1_[first][1] = - T1[1];
             irregularInterfaceMap_[intersectionID].T1_[first][0] = - T1[2];
 
-            irregularInterfaceMap_[intersectionID].T1_[second][2] = - T11_secondHalfEdge[0];
-            irregularInterfaceMap_[intersectionID].T1_[second][1] = - T11_secondHalfEdge[1];
-            irregularInterfaceMap_[intersectionID].T1_[second][0] = - T11_secondHalfEdge[2];
+            irregularInterfaceMap_[intersectionID].T1_[second][2] = - T1_secondHalfEdge[0];
+            irregularInterfaceMap_[intersectionID].T1_[second][1] = - T1_secondHalfEdge[1];
+            irregularInterfaceMap_[intersectionID].T1_[second][0] = - T1_secondHalfEdge[2];
 
         }
         else // we look from smaller cell = unique interface
         {
             // proceed with numbering according to Aavatsmark, seen from cell i
             irregularInterfaceMap_[intersectionID].T1_[first] = T1;
-            irregularInterfaceMap_[intersectionID].T1_[second] = T11_secondHalfEdge;
+            irregularInterfaceMap_[intersectionID].T1_[second] = T1_secondHalfEdge;
         }
 
         irregularInterfaceMap_[intersectionID].globalPos3_[0] = globalPos3;
@@ -228,10 +259,24 @@ public:
         return;
     }
 
+    //! Provides acess to stored Mpfa Data on an intersection for both half-edges
+    /** The method gets information of both interaction regions (Transmissitivity
+     * as well as details of the 3rd cells of both regions) into a storage container.
+     * The key to each element is the index of the intersection, seen from the smaller
+     * cell (only this is unique).
+     * If we arrive from the "wrong" (i.e. non-unique) direction, we invert fluxes.
+     *
+     * \param irregularIs The current irregular intersection
+     * \param secondHalfEdgeIntersectionIt Iterator to the intersection connecting the second interaction region
+     * \param T1 Transmissitivity matrix for flux calculations: unique interaction region
+     * \param T1_secondHalfEdge Second transmissitivity matrix for flux calculations for non-unique interaction region
+     * \param globalPos3 The position of the 3rd cell of the first interaction region
+     * \param globalIdx3 The index of the 3rd cell of the first interaction region
+     */
     int getMpfaData(const Intersection& irregularIs,
                         IntersectionIterator& secondHalfEdgeIntersectionIt,
-                        T1ransmissivityMatrix& T1,
-                        T1ransmissivityMatrix& T1_secondHalfEdge,
+                        TransmissivityMatrix& T1,
+                        TransmissivityMatrix& T1_secondHalfEdge,
                         GlobalPosition& globalPos3,
                         int& globalIdx3)
     {
diff --git a/test/decoupled/2p2c/test_adaptive2p2cproblem.hh b/test/decoupled/2p2c/test_adaptive2p2cproblem.hh
index 77fe24213b..b0c2252bcb 100644
--- a/test/decoupled/2p2c/test_adaptive2p2cproblem.hh
+++ b/test/decoupled/2p2c/test_adaptive2p2cproblem.hh
@@ -19,7 +19,7 @@
 /*!
  * \file
  *
- * \brief test problem for the sequential 2p2c model
+ * \brief Test problem for the adaptive sequential 2p2c model
  */
 #ifndef DUMUX_TEST_ADAPTIVE_2P2C_PROBLEM_HH
 #define DUMUX_TEST_ADAPTIVE_2P2C_PROBLEM_HH
@@ -102,6 +102,7 @@ SET_INT_PROP(Adaptive2p2c, PressureFormulation,
 
 /*!
  * \ingroup Adaptive2p2cs
+ * \ingroup IMPETtests
  */
 template<class TypeTag = TTAG(Adaptive2p2c)>
 class Adaptive2p2c: public IMPETProblem2P2C<TypeTag>
@@ -255,7 +256,7 @@ void neumannAtPos(PrimaryVariables &neumannValues, const GlobalPosition& globalP
     this->setZero(neumannValues, Indices::contiWEqIdx);
 }
 /*!
- * \copydoc Dumux::TestDecTwoPTwoCProblem::sourceAtPos()
+ * \copydoc Dumux::IMPETProblem::source()
  */
 void source(PrimaryVariables &values, const Element &element)
 {
-- 
GitLab