/*!
 * \file
 *
 * \brief This file contains all module definitions for the doxygen documentation.
 *
 */

/* ***************** Porousmediaflow ******************/
/*!
 * \defgroup Porousmediaflow Porous-Medium Flow (fully implicit if not denoted otherwise)
 */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup OnePModels 1p (one-phase Darcy flow)
     */
        /*!
         * \ingroup OnePModels
         * \defgroup OnePModel Implicit
         *
         * \copydetails Dumux::OnePModel
         */
        /*!
         * \ingroup OnePModels
         * \defgroup OnePhase Sequential
         *
         * \copydetails Dumux::FVPressure1P
         */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup OnePTwoCModel 1p2c (one-phase, two-component Darcy flow)
     *
     * \copydetails Dumux::OnePTwoCModel
     */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup TwoPModels 2p (two-phase Darcy flow)
     */
        /*!
         * \ingroup TwoPModels
         * \defgroup TwoPModel Implicit
         *
         * \copydetails Dumux::TwoPModel
         */
    /*!
         * \ingroup TwoPModels
         * \defgroup IMPES Sequential
     *
     * # Pressure
     * \copydetails Dumux::FVPressure2P
     * <br>
     * # Velocity
     * \copydetails Dumux::FVVelocity2P
     * <br>
     * # Saturation
     * \copydetails Dumux::FVSaturation2P
         */
     /*!
     * \ingroup Porousmediaflow
     * \defgroup TwoPOneCModel 2p1c (two-phase, one-component Darcy flow)
     *
     * \copydetails Dumux::TwoPOneCModel
     */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup TwoPOneCModel 2p1c (two-phase, one-component Darcy flow)
     *
     * \copydetails Dumux::TwoPOneCModel
     */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup TwoPTwoCModels 2p2c (two-phase, two-component Darcy flow)
     */
        /*!
         * \ingroup TwoPTwoCModels
         * \defgroup TwoPTwoCModel Implicit
         *
         * \copydetails Dumux::TwoPTwoCModel
         */
    /*!
         * \ingroup TwoPTwoCModels
         * \defgroup IMPEC Sequential
     *
     * # Pressure
     * \copydetails Dumux::FVPressure2P2C
     * <br>
     * # Transport
     * \copydetails Dumux::FVTransport2P2C
         */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup TwoPDFMModel 2pdfm (two-phase Darcy flow in discrete fracture-matrix)
     *
     * \copydetails Dumux::TwoPDFMModel
     */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup TwoPMincModel 2pminc (two-phase Darcy flow dual continuum)
     *
     * \copydetails Dumux::TwoPMincModel
     */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup TwoPNCModel 2pnc (two-phase, n-component Darcy flow)
     *
     * \copydetails Dumux::TwoPNCModel
     */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup TwoPNCMinModel 2pncmin (two-phase, n-component Darcy flow with mineralization)
     *
     * \copydetails Dumux::TwoPNCMinModel
     */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup ThreePModel 3p (three-phase Darcy flow)
     *
     * \copydetails Dumux::ThreePModel
     */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup ThreePThreeCModel 3p3c (three-phase, three-component Darcy flow)
     *
     * \copydetails Dumux::ThreePThreeCModel
     */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup ThreePWaterOilModel 3pwateroil (three-phase, two-component Darcy flow)
     *
     * \copydetails Dumux::ThreePWaterOilModel
     */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup CO2Model CO2 (two-phase, two-component Darcy flow)
     *
     * \copydetails Dumux::CO2Model
     */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup MPNCModel MpNc (m-phase, n-component Darcy flow)
     *
     * \copydetails Dumux::MPNCModel
     */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup NIModel Non-isothermal (energy equation, to be added to an isothermal model)
     *
     * \copydetails Dumux::NIModel
     */
    /*!
     * \ingroup Porousmediaflow
     * \defgroup RichardsModel Richards (Richards flow)
     *
     * \copydetails Dumux::RichardsModel
     */

/* ***************** Geomechanics ******************/
/*!
 * \defgroup Geomechanics Geomechanics (fully implicit)
 */
    /*!
     * \ingroup Geomechanics
     * \defgroup ElOnePTwoCBoxModel El1p2c (one-phase, two-component Darcy flow, linear elastic deformation model)
     *
     * \copydetails Dumux::ElOnePTwoCModel
     */
    /*!
     * \ingroup Geomechanics
     * \defgroup ElTwoPBoxModel El2p (two-phase Darcy flow, linear elastic deformation model)
     *
     * \copydetails Dumux::ElTwoPModel
     */
    /*!
     * \ingroup Geomechanics
     * \defgroup ElasticBoxModel Elastic (linear elastic deformation model)
     *
     * \copydetails Dumux::ElasticModel
     */

/* ***************** Freeflow ******************/
/*!
 * \defgroup Freeflow Free Flow (fully implicit)
 */
    /*!
     * \ingroup Freeflow
     * \defgroup BoxStokesModel Stokes (one-phase Stokes flow)
     *
     * \copydetails Dumux::StokesModel
     */
    /*!
     * \ingroup Freeflow
     * \defgroup BoxStokesncModel Stokesnc (one-phase, n-component Stokes flow)
     *
     * \copydetails Dumux::StokesncModel
     */
    /*!
     * \ingroup Freeflow
     * \defgroup BoxStokesncniModel Stokesncni (one-phase, n-component, non-isothermal Stokes flow)
     *
     * \copydetails Dumux::StokesncniModel
     */
    /*!
     * \ingroup Freeflow
     * \defgroup BoxZeroEqModel Zeroeq (one-phase Stokes flow with zero-eq turbulence model)
     *
     * \copydetails Dumux::ZeroEqModel
     */
    /*!
     * \ingroup Freeflow
     * \defgroup BoxZeroEqncModel Zeroeqnc (one-phase, n-component Stokes flow with zero-eq turbulence model)
     *
     * \copydetails Dumux::ZeroEqncModel
     */
    /*!
     * \ingroup Freeflow
     * \defgroup BoxZeroEqncniModel Zeroeqncni (one-phase, n-component, non-isothermal Stokes flow with zero-eq turbulence model)
     *
     * \copydetails Dumux::ZeroEqncniModel
     */

/* ***************** Multidomain ******************/
/*!
 * \defgroup Multidomain Multidomain (fully implicit)
 */
    /*!
     * \ingroup Multidomain
     * \defgroup MultidomainModel Multidomain
     */
    /*!
     * \ingroup Multidomain
     * \defgroup TwoPTwoCStokesTwoCModel 2cstokes2p2c (1p2c Stokes flow coupled to 2p2c Darcy flow)
     *
     * # Coupling Conditions
     * \copydetails Dumux::TwoCStokesTwoPTwoCLocalOperator
     * <br>
     * # Darcy 2p2c
     * \copydetails Dumux::TwoPTwoCModel
     * <br>
     * # Stokes nc
     * \copydetails Dumux::StokesncModel
     */
    /*!
     * \ingroup Multidomain
     * \defgroup TwoPTwoCNIStokesTwoCNIModel 2cnistokes2p2cni (1p2cni Stokes flow coupled to 2p2cni Darcy flow)
     *
     * # Coupling Conditions
     * \copydetails Dumux::TwoCNIStokesTwoPTwoCNILocalOperator
     * <br>
     * # Darcy 2p2c
     * \copydetails Dumux::TwoPTwoCModel
     * <br>
     * # Darcy non-isothermal extension
     * \copydetails Dumux::NIModel
     * <br>
     * # Stokes nc
     * \copydetails Dumux::StokesncniModel
     */
    /*!
     * \ingroup Multidomain
     * \defgroup TwoPTwoCZeroEqTwoCModel 2czeroeq2p2c (1p2c Stokes flow with zero-eq turbulence model coupled to 2p2c Darcy flow)
     *
     * # Coupling Conditions
     * \copydetails Dumux::TwoCStokesTwoPTwoCLocalOperator
     * <br>
     * # Darcy 2p2c
     * \copydetails Dumux::TwoPTwoCModel
     * <br>
     * # Stokes nc
     * \copydetails Dumux::ZeroEqncModel
     */
    /*!
     * \ingroup Multidomain
     * \defgroup TwoPTwoCNIZeroEqTwoCNIModel 2cnizeroeq2p2cni (1p2cni Stokes flow with zero-eq turbulence model coupled to 2p2cni Darcy flow)
     *
     * # Coupling Conditions
     * \copydetails Dumux::TwoCNIStokesTwoPTwoCNILocalOperator
     * <br>
     * # Darcy 2p2c
     * \copydetails Dumux::TwoPTwoCModel
     * <br>
     * # Darcy non-isothermal extension
     * \copydetails Dumux::NIModel
     * <br>
     * # Stokes nc
     * \copydetails Dumux::ZeroEqncniModel
     */

/* ***************** Fully Implicit ******************/
/*!
 * \defgroup ImplicitModel Fully-Coupled Fully-Implicit Scheme
 */
    /*!
     * \ingroup ImplicitModel
     * \defgroup ImplicitBaseProblems Base Problems
     */
    /*!
     * \ingroup ImplicitModel
     * \defgroup Discretizations Discretizations
     */
         /*!
         * \ingroup Discretizations
         * \defgroup CCModel Fully-implicit cell-centered discretization
         */
         /*!
         * \ingroup Discretizations
         * \defgroup BoxModel Fully-implicit box discretization
         */
    /*!
     * \ingroup ImplicitModel
     * \defgroup ImplicitBoundaryTypes Boundary Types
     */
    /*!
     * \ingroup ImplicitModel
     * \defgroup ImplicitFluxVariables Flux Variables
     */
    /*!
     * \ingroup ImplicitModel
     * \defgroup ImplicitIndices Indices
     */
    /*!
     * \ingroup ImplicitModel
     * \defgroup ImplicitLocalJacobian Local Jacobian
     */
    /*!
     * \ingroup ImplicitModel
     * \defgroup ImplicitLocalResidual Local Residual
     */
    /*!
     * \ingroup ImplicitModel
     * \defgroup ImplicitProperties Properties
     */
    /*!
     * \ingroup ImplicitModel
     * \defgroup ImplicitVolumeVariables Volume Variables
     */

/* ***************** Sequential ******************/
/*!
 * \defgroup Sequential Sequential Scheme (Implicit Pressure, Explicit Transport)
 */
    /*!
     * \ingroup Sequential
     * \defgroup IMPETproblems Base Problems
     */
    /*!
     * \ingroup Sequential
     * \defgroup IMPETProperties Properties
     */

/* ***************** Material ******************/
/*!
 * \defgroup Material Material and Fluid Framework
 * Short description of the most important concepts of the material and fluid framework:
 *
 *  - __Binary coefficient:__  @copydoc Binarycoefficients
 *
 *
 *  - __Component:__ @copydoc Components
 *
 *
 *  - __Constraint solver:__ @copydoc ConstraintSolver
 *
 *
 *  - __Equation of state:__ @copydoc EOS
 *
 *
 *  - __Fluid state:__ @copydoc FluidStates
 *
 *
 *  - __Fluid system:__ @copydoc Fluidsystems
 *
 *
 *  - __Fluid-Matrix Interactions:__ @copydoc fluidmatrixinteractions
 *
 *
 *  - __Parameter cache:__ @copydoc ParameterCache
 *
 *
 *  - __Spatial Parameters:__ @copydoc SpatialParameters
 */
    /*!
     * \ingroup Material
     * \defgroup Binarycoefficients Binary Coefficients
     *  Binary coefficients describe the relations
     *  of a mixture of two components. Typical binary coefficients are
     *  Henry coefficients or binary molecular diffusion
     *  coefficients. So far, the programming interface for accessing binary
     *  coefficients has not been standardized in Dumux.
     */
    /*!
     * \ingroup Material
     * \defgroup Components Components
     * Components are fluid systems which provide the
     *  thermodynamic relations for the liquid and gas phase of a single
     *  chemical species or a fixed mixture of species. Their main purpose
     *  is to provide a convenient way to access these quantities from
     *  full-fledged fluid systems. Components are not supposed to be used
     *  by models directly.
     */
         /*!
         * \ingroup Components
         * \defgroup IAPWS IAPWS
         */
     /*!
     * \ingroup Material
     * \defgroup ConstraintSolver Constraint Solver
     * Constraint solvers are auxiliary tools to
     * make sure that a fluid state is consistent with some thermodynamic
     * constraints. All constraint solvers specify a well defined set of
     * input variables and make sure that the resulting fluid state is
     * consistent with a given set of thermodynamic equations.
     * Constraint solvers connect the thermodynamic relations expressed by
     * fluid systems with the thermodynamic quantities stored by fluid
     * states. Using them is not mandatory for models, but given the fact
     * that some thermodynamic constraints can be quite complex to solve,
     * sharing this code between models makes sense.
     */
    /*!
     * \ingroup Material
     * \defgroup EOS Equation of State
     *
     * Equations of state (EOS) are auxiliary
     * classes which provide relations between a fluid phase's temperature,
     * pressure, composition and density. Since these classes are only used
     * internally in fluid systems, their programming interface is
     * currently ad-hoc.
     */
    /*!
     * \ingroup Material
     * \defgroup FluidStates Fluid States
     * Fluid states are responsible for representing the
     * complete thermodynamic configuration of a system at a given spatial
     * and temporal position. A fluid state always provides access methods
     * to __all__ thermodynamic quantities, but the concept of a fluid state does not
     * mandate what assumptions are made to store these thermodynamic
     * quantities. What fluid states also do __not__ do is to make sure
     * that the thermodynamic state which they represent is physically
     * possible.
     */
    /*!
     * \ingroup Material
     * \defgroup Fluidsystems Fluid Systems
     * Fluid systems express the thermodynamic relations 
    *  Strictly speaking, these relations are
    *  functions, mathematically.} between quantities. Since functions do
    *  not exhibit any internal state, fluid systems are stateless classes,
    *  i.e. all member functions are static. This is a conscious
    *  decision since the thermodynamic state of the system is expressed by
    *  a fluid state!
     */
    /*!
     * \ingroup Material
     *  \defgroup fluidmatrixinteractions Fluid-Matrix Interactions
     * Some parameters are functions of the fluid state as well as parameters of
     * the matrix. For example the capillary pressure is a function of the phase saturation
     * and the shape parameter \f$\lambda\f$ which is dependent on the material. All such relations
     * are gathered in this module.
     */
        /*!
         * \ingroup fluidmatrixinteractions
         *  \defgroup fluidmatrixinteractionslaws Laws for Fluid-Matrix Interactions
         */
         /*!
         * \ingroup fluidmatrixinteractions
         *  \defgroup fluidmatrixinteractionsparams Parameters for Fluid-Matrix Interactions
         */
    /*!
     * \ingroup Material
     * \defgroup ParameterCache Parameter Cache
     * Fluid systems sometimes require
     * computationally expensive parameters for multiple relations. Such
     * parameters can be cached using a so-called parameter
     * cache. Parameter cache objects are specific for each fluid system
     * but they must provide a common interface to update the internal
     * parameters depending on the quantities which changed since the last
     * update.
     * All fluid systems must export a type for their __ParameterCache__
     * objects. Parameter caches can be used to cache parameter that are
     * expensive to compute and are required in multiple thermodynamic
     * relations. For fluid systems which do need to cache parameters,
     * Dumux provides a __NullParameterCache__ class.
     * The actual quantities stored by parameter cache objects are specific
     * to the fluid system and no assumptions on what they provide should be
     * made outside of their fluid system. Parameter cache objects provide a
     * well-defined set of methods to make them coherent with a given fluid
     * state, though.
     * Note, that the parameter cache interface only guarantees that if a
     * more specialized <tt>update()</tt> method is called, it is not slower
     * than the next more-general method (e.g. calling <tt>updateSingleMoleFraction()</tt>
     * may be as expensive as <tt>updateAll()}</tt>. It is thus advisable to
     * rather use a more general <tt>update()</tt> method once than multiple
     * calls to specialized <tt>update()</tt> methods.
     * To make usage of parameter caches easier for the case where all cached
     * quantities ought to be re-calculated if a quantity of a phase was changed,
     * it is possible to only define the <tt>updatePhase()</tt> method and
     * derive the parameter cache from <tt>Dumux::ParameterCacheBase</tt>.
     */
    /*!
     * \ingroup Material
     * \defgroup SpatialParameters Spatial Parameters
     * All parameters which depend on the matrix and
     * therefore on the position within the model domain are defined as spatial
     * parameters. For example permeability, porosity etc.
     *
     */

/* ***************** Common ******************/
/*!
 * \defgroup Common Common Infrastucture
 */
    /*!
     * \ingroup Common
     * \defgroup BC Boundary Conditions
     */
    /*!
     * \ingroup Common
     * \defgroup Math Elementary Math Functions
     */
    /*!
     * \ingroup Common
     * \defgroup Exception Exceptions
     */
    /*!
     * \ingroup Common
     * \defgroup Linear Linear Solver Backends
     */
    /*!
     * \ingroup Common
     * \defgroup Newton Newton Solver
     */
    /*!
     * \ingroup Common
     * \defgroup Parameter Parameters
     * See the file parameterlist for available parameters.
     */
    /*!
     * \ingroup Common
     * \defgroup Properties Property System
     */
    /*!
     * \ingroup Common
     * \defgroup Spline Splines
     */
    /*!
     * \ingroup Common
     * \defgroup Start Starting the Simulation
     */
    /*!
     * \ingroup Common
     * \defgroup SimControl Time Manager
     */
    /*!
     * \ingroup Common
     * \defgroup Valgrind Valgrind
     */
