diff --git a/doc/doxygen/modules.txt b/doc/doxygen/modules.txt index e5f2e1980047ca76ac1c0ff62902bb762536f89d..e5585c0d3b4795ab5820af17a560b53df00c6605 100644 --- a/doc/doxygen/modules.txt +++ b/doc/doxygen/modules.txt @@ -235,37 +235,36 @@ /* ***************** Discretization ******************/ /*! * \defgroup Discretization Discretization schemes + * \brief The discretization schemes available in DuMu<sup>x</sup> */ /*! * \ingroup Discretization - * \defgroup BoxDiscretization Box finite volume scheme + * \defgroup BoxDiscretization Box FV scheme * - * \copydetails ./discretization/box/properties.hh + * \brief The box method is a collocated finite volume scheme with control volumes centered at grid nodes */ /*! * \ingroup Discretization - * \defgroup CCDiscretization Cell-centered finite volume scheme - * # Tpfa - * \copybrief ./discretization/cellcentered/tpfa/properties.hh - * # Mpfa - * \copybrief ./discretization/cellcentered/mpfa/properties.hh + * \defgroup CCDiscretization Cell-centered FV scheme + * \brief Finite volume schemes with degrees of freedom located at grid cell centers */ /*! * \ingroup CCDiscretization - * \defgroup CCTpfaDiscretization Cell-centered finite volume scheme with two-point flux-approximuation (Tpfa) + * \defgroup CCTpfaDiscretization Two-point flux approximation (Tpfa) * - * \copydetails ./discretization/cellcentered/tpfa/properties.hh + * \brief A cell-centered finite volume scheme with two-point flux approximation */ /*! * \ingroup CCDiscretization - * \defgroup CCMpfaDiscretization Cell-centered finite volume scheme with multi-point flux-approximuation (Mpfa) + * \defgroup CCMpfaDiscretization Multi-point flux approximation (Mpfa) * - * \copydetails ./discretization/cellcentered/mpfa/properties.hh + * \brief A cell-centered finite volume scheme with multi-point flux approximation */ /*! * \ingroup Discretization - * \defgroup StaggeredDiscretization Staggered finite volume scheme - * \copydetails ./discretization/staggered/properties.hh + * \defgroup StaggeredDiscretization Staggered FV scheme + * + * \brief A staggered finite volume scheme with degrees of freedom at cell-centers and facets */ /* ***************** Material ******************/ diff --git a/dumux/discretization/basefvgridgeometry.hh b/dumux/discretization/basefvgridgeometry.hh index 8a674d44125a44c5d69ecefed46ebf448de673c4..6e5064f9058683e22659ad8800b4f455e0ff56e5 100644 --- a/dumux/discretization/basefvgridgeometry.hh +++ b/dumux/discretization/basefvgridgeometry.hh @@ -18,6 +18,7 @@ *****************************************************************************/ /*! * \file + * \ingroup Discretization * \brief Base class for all finite volume grid geometries */ #ifndef DUMUX_DISCRETIZATION_BASE_FV_GRID_GEOMETRY_HH @@ -35,7 +36,7 @@ namespace Dumux { /*! - * \ingroup ImplicitModel + * \ingroup Discretization * \brief Base class for all finite volume grid geometries */ template<class TypeTag> @@ -56,7 +57,7 @@ class BaseFVGridGeometry using GlobalPosition = Dune::FieldVector<CoordScalar, dimWorld>; public: - //! Constructor + //! Constructor computes the bouding box of the entire domain, for e.g. setting boundary conditions BaseFVGridGeometry(const GridView& gridView) : gridView_(gridView) #if DUNE_VERSION_NEWER(DUNE_COMMON,2,6) @@ -69,13 +70,12 @@ public: , bBoxMin_(std::numeric_limits<double>::max()) , bBoxMax_(-std::numeric_limits<double>::max()) { - //! Compute the bouding box of the entire domain, for e.g. setting boundary conditions computeGlobalBoundingBox_(); } /*! - * \brief Return a local restriction of this global object - * The local object is only functional after calling its bind/bindElement method + * \brief Return a local restriction of this global object. + * The local object is only functional after calling its bind/bindElement method. * This is a free function that will be found by means of ADL */ friend inline FVElementGeometry localView(const Implementation& fvGridGeometry) @@ -99,7 +99,7 @@ public: } /*! - * \brief Return the gridView this global object lives on + * \brief Return the gridView this grid geometry object lives on */ const GridView& gridView() const { return gridView_; } @@ -196,20 +196,20 @@ private: } } - // the process grid view + //! the process grid view const GridView gridView_; - // entity mappers + //! entity mappers ElementMapper elementMapper_; VertexMapper vertexMapper_; - // the bounding box tree of the grid view for effecient element intersections + //! the bounding box tree of the grid view for effecient element intersections mutable std::unique_ptr<BoundingBoxTree> boundingBoxTree_; - // a map from element index to elements (needed in the bounding box tree and for assembling cell-centered discretization) + //! a map from element index to elements (needed in the bounding box tree and for assembling cell-centered discretization) mutable std::shared_ptr<ElementMap> elementMap_; - // the bounding box of the whole domain + //! the bounding box of the whole domain GlobalPosition bBoxMin_; GlobalPosition bBoxMax_; }; diff --git a/dumux/discretization/cellcentered/connectivitymap.hh b/dumux/discretization/cellcentered/connectivitymap.hh index 5c69551e779f3e361c2753411ba21e616d9d84ff..efca535243efd8066a8ee7abbabf31981083fb74 100644 --- a/dumux/discretization/cellcentered/connectivitymap.hh +++ b/dumux/discretization/cellcentered/connectivitymap.hh @@ -18,6 +18,7 @@ *****************************************************************************/ /*! * \file + * \ingroup CCDiscretization * \brief Stores the face indices corresponding to the neighbors of an element * that contribute to the derivative calculation. This is used for * finite-volume schemes with symmetric sparsity pattern in the global matrix. @@ -34,7 +35,7 @@ namespace Dumux { /*! - * \ingroup CellCentered + * \ingroup CCDiscretization * \brief A simple version of the connectivity map for cellcentered schemes. * This implementation works for schemes in which for a given cell I only * those cells J have to be prepared in whose stencil the cell I appears. diff --git a/dumux/discretization/cellcentered/elementboundarytypes.hh b/dumux/discretization/cellcentered/elementboundarytypes.hh index 82baa1e88e80d829309a077c97fb946ef01ae227..188439bb480e030a0e8b624ee9b78b0174ab6928 100644 --- a/dumux/discretization/cellcentered/elementboundarytypes.hh +++ b/dumux/discretization/cellcentered/elementboundarytypes.hh @@ -18,6 +18,7 @@ *****************************************************************************/ /*! * \file + * \ingroup CCDiscretization * \brief Boundary types gathered on an element */ #ifndef DUMUX_CC_ELEMENT_BOUNDARY_TYPES_HH @@ -29,8 +30,9 @@ namespace Dumux { /*! - * \ingroup CCModel - * \brief This class exists only for compatibility purposes with the + * \ingroup CCDiscretization + * \brief Boundary types gathered on an element + * \note This class exists only for compatibility purposes with the * box scheme. The cell-centered schemes and the box scheme use * a common base local residual, which passes an ElementBoundaryTypes * object to the implemented interfaces. diff --git a/dumux/discretization/cellcentered/elementsolution.hh b/dumux/discretization/cellcentered/elementsolution.hh index 6cc65557f0720cb197086bccbc1b225d19a8b0fb..1ab481db9b31b871b7dc260d41b6ac01c635e7fb 100644 --- a/dumux/discretization/cellcentered/elementsolution.hh +++ b/dumux/discretization/cellcentered/elementsolution.hh @@ -18,6 +18,7 @@ *****************************************************************************/ /*! * \file + * \ingroup CCDiscretization * \brief The local element solution class for cell-centered methods */ #ifndef DUMUX_CC_ELEMENT_SOLUTION_HH @@ -30,7 +31,7 @@ namespace Dumux { /*! - * \ingroup CCModel + * \ingroup CCDiscretization * \brief The element solution vector */ template<class TypeTag> @@ -46,7 +47,6 @@ class CCElementSolution public: using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables); - //! Default constructors CCElementSolution() = default; //! Constructor with element and solution diff --git a/dumux/discretization/cellcentered/gridvolumevariables.hh b/dumux/discretization/cellcentered/gridvolumevariables.hh index e1322345f3289538caefbec56c5546308c1f9bc8..9f970c2c4bef5f5e44998500d90a19f688984241 100644 --- a/dumux/discretization/cellcentered/gridvolumevariables.hh +++ b/dumux/discretization/cellcentered/gridvolumevariables.hh @@ -18,6 +18,7 @@ *****************************************************************************/ /*! * \file + * \ingroup CCDiscretization * \brief The grid volume variables class for cell centered models */ #ifndef DUMUX_DISCRETIZATION_CC_GRID_VOLUMEVARIABLES_HH @@ -29,8 +30,11 @@ namespace Dumux { /*! - * \ingroup CCModel + * \ingroup CCDiscretization * \brief Base class for the grid volume variables + * \note This class has a cached version and a non-cached version + * \tparam TypeTag the TypeTag + * \tparam enableGridVolVarsCache if the cache is enabled */ template<class TypeTag, bool enableGridVolVarsCache> class CCGridVolumeVariables diff --git a/dumux/discretization/cellcentered/subcontrolvolume.hh b/dumux/discretization/cellcentered/subcontrolvolume.hh index f8875526ff5f8602001239761db6aeaff233d797..c9521b8bbe4481579a1b7d376edfbda546523c61 100644 --- a/dumux/discretization/cellcentered/subcontrolvolume.hh +++ b/dumux/discretization/cellcentered/subcontrolvolume.hh @@ -18,7 +18,8 @@ *****************************************************************************/ /*! * \file - * \brief Base class for a sub control volume + * \ingroup CCDiscretization + * \brief Sub control volumes for cell-centered discretization schemes */ #ifndef DUMUX_DISCRETIZATION_CC_SUBCONTROLVOLUME_HH #define DUMUX_DISCRETIZATION_CC_SUBCONTROLVOLUME_HH @@ -28,6 +29,10 @@ namespace Dumux { +/*! + * \ingroup CCDiscretization + * \brief Sub control volumes for cell-centered discretization schemes + */ template<class ScvGeometryTraits> class CCSubControlVolume : public SubControlVolumeBase<CCSubControlVolume<ScvGeometryTraits>, ScvGeometryTraits> { @@ -42,7 +47,6 @@ public: //! state the traits public and thus export all types using Traits = ScvGeometryTraits; - // the default constructor CCSubControlVolume() = default; // the contructor in the cc case diff --git a/dumux/discretization/cellcentered/tpfa/computetransmissibility.hh b/dumux/discretization/cellcentered/tpfa/computetransmissibility.hh index 04be34b5c87de935bec949883aa0283ef67e0bac..d0c8a430e5119dfeda2f429f3882ea72e5a81631 100644 --- a/dumux/discretization/cellcentered/tpfa/computetransmissibility.hh +++ b/dumux/discretization/cellcentered/tpfa/computetransmissibility.hh @@ -18,7 +18,8 @@ *****************************************************************************/ /*! * \file - * \brief This file contains free functions to evaluate the transmissibilities + * \ingroup CCTpfaDiscretization + * \brief Free functions to evaluate the transmissibilities * associated with flux evaluations across sub-control volume faces * in the context of the cell-centered TPFA scheme. */ @@ -32,10 +33,9 @@ namespace Dumux { /*! - * \ingroup Tpfa - * - * \brief Free function to evaluate the Tpfa transmissibility associated - * with the flux (in the form of flux = T*gradU) across a + * \ingroup CCTpfaDiscretization + * \brief Free function to evaluate the Tpfa transmissibility + * associated with the flux (in the form of flux = T*gradU) across a * sub-control volume face stemming from a given sub-control * volume with corresponding tensor T. * @@ -62,9 +62,11 @@ typename Tensor::field_type computeTpfaTransmissibility(const SubControlVolumeFa } /*! - * \ingroup Tpfa - * - * \brief Specialization of the above function for scalar T. + * \ingroup CCTpfaDiscretization + * \brief Free function to evaluate the Tpfa transmissibility + * associated with the flux (in the form of flux = T*gradU) across a + * sub-control volume face stemming from a given sub-control + * volume for the case where T is just a scalar * * \param scvf The sub-control volume face * \param scv The neighboring sub-control volume diff --git a/dumux/discretization/cellcentered/tpfa/darcyslaw.hh b/dumux/discretization/cellcentered/tpfa/darcyslaw.hh index 1dcb394f668242aeec8996cc5ec48aaeb6901da4..aa2f60977f61451fbd714a7c4e40484ed89d99c5 100644 --- a/dumux/discretization/cellcentered/tpfa/darcyslaw.hh +++ b/dumux/discretization/cellcentered/tpfa/darcyslaw.hh @@ -18,9 +18,8 @@ *****************************************************************************/ /*! * \file - * \brief This file contains the data which is required to calculate - * volume and mass fluxes of fluid phases over a face of a finite volume by means - * of the Darcy approximation. Specializations are provided for the different discretization methods. + * \ingroup CCTpfaDiscretization + * \brief Darcy's law for cell-centered finite volume schemes with two-point flux approximation */ #ifndef DUMUX_DISCRETIZATION_CC_TPFA_DARCYS_LAW_HH #define DUMUX_DISCRETIZATION_CC_TPFA_DARCYS_LAW_HH @@ -42,15 +41,19 @@ template<class TypeTag, bool isNetwork> class CCTpfaDarcysLaw; /*! - * \ingroup DarcysLaw - * \brief Specialization of Darcy's Law for the CCTpfa method. + * \ingroup CCTpfaDiscretization + * \brief Darcy's law for cell-centered finite volume schemes with two-point flux approximation + * \note Darcy's law is speialized for network and surface grids (i.e. if grid dim < dimWorld) */ template <class TypeTag> class DarcysLawImplementation<TypeTag, DiscretizationMethods::CCTpfa> - : public CCTpfaDarcysLaw<TypeTag, (GET_PROP_TYPE(TypeTag, Grid)::dimension < GET_PROP_TYPE(TypeTag, Grid)::dimensionworld) > +: public CCTpfaDarcysLaw<TypeTag, (GET_PROP_TYPE(TypeTag, Grid)::dimension < GET_PROP_TYPE(TypeTag, Grid)::dimensionworld) > {}; -//! Class that fills the cache corresponding to tpfa Darcy's Law +/*! + * \ingroup CCTpfaDiscretization + * \brief Class that fills the cache corresponding to tpfa Darcy's Law + */ template<class TypeTag> class TpfaDarcysLawCacheFiller { @@ -77,7 +80,10 @@ public: } }; -//! the cache corresponding to tpfa Darcy's Law +/*! + * \ingroup CCTpfaDiscretization + * \brief The cache corresponding to tpfa Darcy's Law + */ template<class TypeTag> class TpfaDarcysLawCache { @@ -108,7 +114,10 @@ private: Scalar tij_; }; -//! Specialization of the CCTpfaDarcysLaw grids where dim=dimWorld +/*! + * \ingroup CCTpfaDiscretization + * \brief Specialization of the CCTpfaDarcysLaw grids where dim=dimWorld + */ template<class TypeTag> class CCTpfaDarcysLaw<TypeTag, /*isNetwork*/ false> { @@ -133,12 +142,13 @@ class CCTpfaDarcysLaw<TypeTag, /*isNetwork*/ false> using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>; public: - // state the discretization method this implementation belongs to + //! state the discretization method this implementation belongs to static const DiscretizationMethods myDiscretizationMethod = DiscretizationMethods::CCTpfa; - // state the type for the corresponding cache + //! state the type for the corresponding cache using Cache = TpfaDarcysLawCache<TypeTag>; + //! Compute the advective flux static Scalar flux(const Problem& problem, const Element& element, const FVElementGeometry& fvGeometry, @@ -260,7 +270,10 @@ class CCTpfaDarcysLaw<TypeTag, /*isNetwork*/ false> } }; -//! Specialization of the CCTpfaDarcysLaw for network/surface grids +/*! + * \ingroup CCTpfaDiscretization + * \brief Specialization of the CCTpfaDarcysLaw grids where dim < dimWorld (network/surface grids) + */ template<class TypeTag> class CCTpfaDarcysLaw<TypeTag, /*isNetwork*/ true> { @@ -285,12 +298,13 @@ class CCTpfaDarcysLaw<TypeTag, /*isNetwork*/ true> using GlobalPosition = Dune::FieldVector<Scalar, dimWorld>; public: - // state the discretization method this implementation belongs to + //! state the discretization method this implementation belongs to static const DiscretizationMethods myDiscretizationMethod = DiscretizationMethods::CCTpfa; - // state the type for the corresponding cache + //! state the type for the corresponding cache using Cache = TpfaDarcysLawCache<TypeTag>; + //! Compute the advective flux static Scalar flux(const Problem& problem, const Element& element, const FVElementGeometry& fvGeometry, diff --git a/dumux/discretization/cellcentered/tpfa/elementfluxvariablescache.hh b/dumux/discretization/cellcentered/tpfa/elementfluxvariablescache.hh index 0ab9da19087b930b7fd5f8caa850f52235ea0d95..c0a210c6f2d5956d4eda15f9c0117b116d0b183a 100644 --- a/dumux/discretization/cellcentered/tpfa/elementfluxvariablescache.hh +++ b/dumux/discretization/cellcentered/tpfa/elementfluxvariablescache.hh @@ -18,7 +18,8 @@ *****************************************************************************/ /*! * \file - * \brief The global object of flux var caches + * \ingroup CCTpfaDiscretization + * \brief The flux variables caches for an element */ #ifndef DUMUX_DISCRETIZATION_CCTPFA_ELEMENT_FLUXVARSCACHE_HH #define DUMUX_DISCRETIZATION_CCTPFA_ELEMENT_FLUXVARSCACHE_HH @@ -31,15 +32,19 @@ namespace Dumux { /*! - * \ingroup ImplicitModel - * \brief Base class for the stencil local flux variables cache + * \ingroup CCTpfaDiscretization + * \brief The flux variables caches for an element + * \note The class is specialized for a version with and without caching + * If grid caching is enabled the flux caches are stored for the whole gridview in the corresponding + * GridFluxVariablesCache which is memory intensive but faster. For caching disabled the + * flux caches are locally computed for each element whenever needed. */ template<class TypeTag, bool EnableGridFluxVariablesCache> class CCTpfaElementFluxVariablesCache; /*! - * \ingroup ImplicitModel - * \brief Spezialization when caching globally + * \ingroup CCTpfaDiscretization + * \brief The flux variables caches for an element with caching enabled */ template<class TypeTag> class CCTpfaElementFluxVariablesCache<TypeTag, true> @@ -58,23 +63,23 @@ public: CCTpfaElementFluxVariablesCache(const GridFluxVariablesCache& global) : gridFluxVarsCachePtr_(&global) {} - // Specialization for the global caching being enabled - do nothing here + //! Specialization for the global caching being enabled - do nothing here void bindElement(const Element& element, const FVElementGeometry& fvGeometry, const ElementVolumeVariables& elemVolVars) {} - // Specialization for the global caching being enabled - do nothing here + //! Specialization for the global caching being enabled - do nothing here void bind(const Element& element, const FVElementGeometry& fvGeometry, const ElementVolumeVariables& elemVolVars) {} - // Specialization for the global caching being enabled - do nothing here + //! Specialization for the global caching being enabled - do nothing here void bindScvf(const Element& element, const FVElementGeometry& fvGeometry, const ElementVolumeVariables& elemVolVars, const SubControlVolumeFace& scvf) {} - // Specialization for the global caching being enabled - do nothing here + //! Specialization for the global caching being enabled - do nothing here void update(const Element& element, const FVElementGeometry& fvGeometry, const ElementVolumeVariables& elemVolVars) @@ -82,7 +87,7 @@ public: DUNE_THROW(Dune::InvalidStateException, "In case of enabled caching, the grid flux variables cache has to be updated"); } - // access operators in the case of caching + //! access operators in the case of caching const FluxVariablesCache& operator [](const SubControlVolumeFace& scvf) const { return gridFluxVarsCache()[scvf]; } @@ -95,8 +100,8 @@ private: }; /*! - * \ingroup ImplicitModel - * \brief Spezialization when not using global caching + * \ingroup CCTpfaDiscretization + * \brief The flux variables caches for an element with caching disabled */ template<class TypeTag> class CCTpfaElementFluxVariablesCache<TypeTag, false> @@ -116,8 +121,11 @@ public: CCTpfaElementFluxVariablesCache(const GridFluxVariablesCache& global) : gridFluxVarsCachePtr_(&global) {} - // This function has to be called prior to flux calculations on the element. - // Prepares the transmissibilities of the scv faces in an element. The FvGeometry is assumed to be bound. + /*! + * \brief Prepares the transmissibilities of the scv faces in an element + * \note the fvGeometry is assumed to be bound to the same element + * \note this function has to be called prior to flux calculations on the element. + */ void bindElement(const Element& element, const FVElementGeometry& fvGeometry, const ElementVolumeVariables& elemVolVars) @@ -140,8 +148,11 @@ public: } } - // This function is called by the CCLocalResidual before flux calculations during assembly. - // Prepares the transmissibilities of the scv faces in the stencil. The FvGeometries are assumed to be bound. + /*! + * \brief Prepares the transmissibilities of the scv faces in the stencil of an element + * \note the fvGeometry is assumed to be bound to the same element + * \note this function has to be called prior to flux calculations on the element. + */ void bind(const Element& element, const FVElementGeometry& fvGeometry, const ElementVolumeVariables& elemVolVars) @@ -185,6 +196,11 @@ public: } } + /*! + * \brief Prepares the transmissibilities of a single scv face + * \note the fvGeometry is assumed to be bound to the same element + * \note this function has to be called prior to flux calculations on the element. + */ void bindScvf(const Element& element, const FVElementGeometry& fvGeometry, const ElementVolumeVariables& elemVolVars, @@ -200,8 +216,10 @@ public: globalScvfIndices_[0] = scvf.index(); } - // This function is used to update the transmissibilities if the volume variables have changed - // Results in undefined behaviour if called before bind() or with a different element + /*! + * \brief Update the transmissibilities if the volume variables have changed + * \note Results in undefined behaviour if called before bind() or with a different element + */ void update(const Element& element, const FVElementGeometry& fvGeometry, const ElementVolumeVariables& elemVolVars) @@ -229,10 +247,11 @@ public: } } - // access operators in the case of no caching + //! access operators in the case of no caching const FluxVariablesCache& operator [](const SubControlVolumeFace& scvf) const { return fluxVarsCache_[getLocalScvfIdx_(scvf.index())]; } + //! access operators in the case of no caching FluxVariablesCache& operator [](const SubControlVolumeFace& scvf) { return fluxVarsCache_[getLocalScvfIdx_(scvf.index())]; } @@ -243,7 +262,7 @@ public: private: const GridFluxVariablesCache* gridFluxVarsCachePtr_; - // get index of scvf in the local container + //! get index of scvf in the local container int getLocalScvfIdx_(const int scvfIdx) const { auto it = std::find(globalScvfIndices_.begin(), globalScvfIndices_.end(), scvfIdx); @@ -255,6 +274,6 @@ private: std::vector<IndexType> globalScvfIndices_; }; -} // end namespace +} // end namespace Dumux #endif diff --git a/dumux/discretization/cellcentered/tpfa/elementvolumevariables.hh b/dumux/discretization/cellcentered/tpfa/elementvolumevariables.hh index 35e2ddf7b6d6da7ad75b079344ee548f8881abc5..ba2bda23e0bf1447a74caca6fdc336544e7d4e60 100644 --- a/dumux/discretization/cellcentered/tpfa/elementvolumevariables.hh +++ b/dumux/discretization/cellcentered/tpfa/elementvolumevariables.hh @@ -18,7 +18,8 @@ *****************************************************************************/ /*! * \file - * \brief The local (stencil) volume variables class for cell centered models + * \ingroup CCTpfaDiscretization + * \brief The local (stencil) volume variables class for cell centered tpfa models */ #ifndef DUMUX_DISCRETIZATION_CCTPFA_ELEMENT_VOLUMEVARIABLES_HH #define DUMUX_DISCRETIZATION_CCTPFA_ELEMENT_VOLUMEVARIABLES_HH @@ -29,14 +30,19 @@ namespace Dumux { /*! - * \ingroup ImplicitModel - * \brief Base class for the volume variables vector + * \ingroup CCTpfaDiscretization + * \brief The local (stencil) volume variables class for cell centered tpfa models + * \note The class is specilized for versions with and without caching */ template<class TypeTag, bool enableGridVolVarsCache> class CCTpfaElementVolumeVariables {}; -// specialization in case of storing the volume variables globally +/*! + * \ingroup CCTpfaDiscretization + * \brief The local (stencil) volume variables class for cell centered tpfa models with caching + * \note the volume variables are stored for the whole grid view in the corresponding GridVolumeVariables class + */ template<class TypeTag> class CCTpfaElementVolumeVariables<TypeTag, /*enableGridVolVarsCache*/true> { @@ -58,22 +64,21 @@ public: CCTpfaElementVolumeVariables(const GridVolumeVariables& gridVolVars) : gridVolVarsPtr_(&gridVolVars) {} + //! operator for the access with an index const VolumeVariables& operator [](const SubControlVolume& scv) const { return gridVolVars().volVars(scv.dofIndex()); } - // operator for the access with an index - // needed for cc methods for the access to the boundary volume variables + //! operator for the access with an index const VolumeVariables& operator [](const IndexType scvIdx) const { return gridVolVars().volVars(scvIdx); } - // For compatibility reasons with the case of not storing the vol vars. - // function to be called before assembling an element, preparing the vol vars within the stencil + //! precompute all volume variables in a stencil of an element - do nothing volVars: are cached void bind(const Element& element, const FVElementGeometry& fvGeometry, const SolutionVector& sol) {} - // function to prepare the vol vars within the element + //! precompute the volume variables of an element - do nothing: volVars are cached void bindElement(const Element& element, const FVElementGeometry& fvGeometry, const SolutionVector& sol) @@ -87,8 +92,10 @@ private: const GridVolumeVariables* gridVolVarsPtr_; }; - -// Specialization when the current volume variables are not stored +/*! + * \ingroup CCTpfaDiscretization + * \brief The local (stencil) volume variables class for cell centered tpfa models with caching + */ template<class TypeTag> class CCTpfaElementVolumeVariables<TypeTag, /*enableGridVolVarsCache*/false> { @@ -111,8 +118,7 @@ public: CCTpfaElementVolumeVariables(const GridVolumeVariables& gridVolVars) : gridVolVarsPtr_(&gridVolVars) {} - // Binding of an element, prepares the volume variables within the element stencil - // called by the local jacobian to prepare element assembly + //! Prepares the volume variables within the element stencil void bind(const Element& element, const FVElementGeometry& fvGeometry, const SolutionVector& sol) @@ -198,8 +204,7 @@ public: // } } - // Binding of an element, prepares only the volume variables of the element - // specialization for cc models + //! Prepares the volume variables of an element void bindElement(const Element& element, const FVElementGeometry& fvGeometry, const SolutionVector& sol) @@ -219,15 +224,19 @@ public: volVarIndices_[0] = scv.dofIndex(); } + //! access operator with scv const VolumeVariables& operator [](const SubControlVolume& scv) const { return volumeVariables_[getLocalIdx_(scv.dofIndex())]; } + //! access operator with scv VolumeVariables& operator [](const SubControlVolume& scv) { return volumeVariables_[getLocalIdx_(scv.dofIndex())]; } + //! access operator with scv index const VolumeVariables& operator [](IndexType scvIdx) const { return volumeVariables_[getLocalIdx_(scvIdx)]; } + //! access operator with scv index VolumeVariables& operator [](IndexType scvIdx) { return volumeVariables_[getLocalIdx_(scvIdx)]; } @@ -244,6 +253,7 @@ public: private: const GridVolumeVariables* gridVolVarsPtr_; + //! map a global scv index to the local storage index int getLocalIdx_(const int volVarIdx) const { auto it = std::find(volVarIndices_.begin(), volVarIndices_.end(), volVarIdx); @@ -255,6 +265,6 @@ private: std::vector<VolumeVariables> volumeVariables_; }; -} // end namespace +} // end namespace Dumux #endif diff --git a/dumux/discretization/cellcentered/tpfa/fickslaw.hh b/dumux/discretization/cellcentered/tpfa/fickslaw.hh index ae84a0203fdefd09ee7edf44009cbc095327cf31..b1f4bf7b47e3d66f29eaff1e437e5bb50ff154d9 100644 --- a/dumux/discretization/cellcentered/tpfa/fickslaw.hh +++ b/dumux/discretization/cellcentered/tpfa/fickslaw.hh @@ -18,8 +18,8 @@ *****************************************************************************/ /*! * \file - * \brief This file contains the data which is required to calculate - * diffusive mass fluxes due to molecular diffusion with Fick's law. + * \ingroup CCTpfaDiscretization + * \brief Fick's law for cell-centered finite volume schemes with two-point flux approximation */ #ifndef DUMUX_DISCRETIZATION_CC_TPFA_FICKS_LAW_HH #define DUMUX_DISCRETIZATION_CC_TPFA_FICKS_LAW_HH @@ -37,8 +37,8 @@ template<class TypeTag, DiscretizationMethods discMethod> class FicksLawImplementation; /*! - * \ingroup CCTpfaFicksLaw - * \brief Specialization of Fick's Law for the CCTpfa method. + * \ingroup CCTpfaDiscretization + * \brief Fick's law for cell-centered finite volume schemes with two-point flux approximation */ template <class TypeTag> class FicksLawImplementation<TypeTag, DiscretizationMethods::CCTpfa> @@ -114,12 +114,13 @@ class FicksLawImplementation<TypeTag, DiscretizationMethods::CCTpfa> }; public: - // state the discretization method this implementation belongs to + //! state the discretization method this implementation belongs to static const DiscretizationMethods myDiscretizationMethod = DiscretizationMethods::CCTpfa; //! state the type for the corresponding cache and its filler using Cache = TpfaFicksLawCache; + //! return diffusive fluxes for all components in a phase static ComponentFluxVector flux(const Problem& problem, const Element& element, const FVElementGeometry& fvGeometry, @@ -159,6 +160,7 @@ public: return componentFlux; } + //! compute diffusive transmissibilities static Scalar calculateTransmissibility(const Problem& problem, const Element& element, const FVElementGeometry& fvGeometry, @@ -257,6 +259,7 @@ private: return rho/(scvf.numOutsideScvs()+1); } }; -} // end namespace + +} // end namespace Dumux #endif diff --git a/dumux/discretization/cellcentered/tpfa/fluxvariablescachefiller.hh b/dumux/discretization/cellcentered/tpfa/fluxvariablescachefiller.hh index 8b282b69c467e419ce2a0bb321a7fef1425dcc14..17d8890746ef5e65def282daf5a37c44df386d15 100644 --- a/dumux/discretization/cellcentered/tpfa/fluxvariablescachefiller.hh +++ b/dumux/discretization/cellcentered/tpfa/fluxvariablescachefiller.hh @@ -16,9 +16,10 @@ * You should have received a copy of the GNU General Public License * * along with this program. If not, see <http://www.gnu.org/licenses/>. * *****************************************************************************/ -/*! + /*! * \file - * \brief The flux variables cache filler class for the cell-centered TPFA scheme + * \ingroup CCTpfaDiscretization + * \brief A helper class to fill the flux variable caches used in the flux constitutive laws */ #ifndef DUMUX_DISCRETIZATION_CCTPFA_FLUXVARSCACHE_FILLER_HH #define DUMUX_DISCRETIZATION_CCTPFA_FLUXVARSCACHE_FILLER_HH @@ -30,9 +31,9 @@ namespace Dumux { /*! - * \ingroup ImplicitModel - * \brief Helper class to fill the flux var caches - */ +* \ingroup CCTpfaDiscretization +* \brief A helper class to fill the flux variable caches used in the flux constitutive laws +*/ template<class TypeTag> class CCTpfaFluxVariablesCacheFiller { @@ -193,6 +194,6 @@ private: const Problem* problemPtr_; }; -} // end namespace +} // end namespace Dumux #endif diff --git a/dumux/discretization/cellcentered/tpfa/fourierslaw.hh b/dumux/discretization/cellcentered/tpfa/fourierslaw.hh index bc468651361549342a25a94496dc015a64351e96..c6ba00912f2a744cf3b3c16884bce903ca84df46 100644 --- a/dumux/discretization/cellcentered/tpfa/fourierslaw.hh +++ b/dumux/discretization/cellcentered/tpfa/fourierslaw.hh @@ -17,10 +17,10 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * *****************************************************************************/ /*! - * \file - * \brief This file contains the data which is required to calculate - * heat conduction fluxes with Fourier's law. - */ +* \file +* \ingroup CCTpfaDiscretization +* \brief Fourier's law for cell-centered finite volume schemes with two-point flux approximation +*/ #ifndef DUMUX_DISCRETIZATION_CC_TPFA_FOURIERS_LAW_HH #define DUMUX_DISCRETIZATION_CC_TPFA_FOURIERS_LAW_HH @@ -37,9 +37,9 @@ template<class TypeTag, DiscretizationMethods discMethod> class FouriersLawImplementation; /*! - * \ingroup FouriersLaw - * \brief Specialization of Fourier's Law for the CCTpfa method. - */ +* \ingroup CCTpfaDiscretization +* \brief Fourier's law for cell-centered finite volume schemes with two-point flux approximation +*/ template <class TypeTag> class FouriersLawImplementation<TypeTag, DiscretizationMethods::CCTpfa> { @@ -106,12 +106,13 @@ class FouriersLawImplementation<TypeTag, DiscretizationMethods::CCTpfa> }; public: - // state the discretization method this implementation belongs to + //! state the discretization method this implementation belongs to static const DiscretizationMethods myDiscretizationMethod = DiscretizationMethods::CCTpfa; //! export the type for the corresponding cache using Cache = TpfaFouriersLawCache; + //! Compute the heat condution flux assuming thermal equilibrium static Scalar flux(const Problem& problem, const Element& element, const FVElementGeometry& fvGeometry, @@ -130,6 +131,7 @@ public: return tij*(tInside - tOutside); } + //! Compute transmissibilities static Scalar calculateTransmissibility(const Problem& problem, const Element& element, const FVElementGeometry& fvGeometry, diff --git a/dumux/discretization/cellcentered/tpfa/fvelementgeometry.hh b/dumux/discretization/cellcentered/tpfa/fvelementgeometry.hh index 9205a26c806547ea4bbc3ec680ccfb9663d2c524..12837c09b265a23fdba0819608df3a9daac31aeb 100644 --- a/dumux/discretization/cellcentered/tpfa/fvelementgeometry.hh +++ b/dumux/discretization/cellcentered/tpfa/fvelementgeometry.hh @@ -18,7 +18,8 @@ *****************************************************************************/ /*! * \file - * \brief Base class for a local finite volume geometry for cell-centered TPFA models + * \ingroup CCTpfaDiscretization + * \brief Stencil-local finite volume geometry (scvs and scvfs) for cell-centered TPFA models * This builds up the sub control volumes and sub control volume faces * for each element in the local scope we are restricting to, e.g. stencil or element. */ @@ -38,17 +39,22 @@ template<class TypeTag, bool EnableFVGridGeometryCache> class CCTpfaFVGridGeometry; /*! - * \ingroup ImplicitModel - * \brief Base class for the finite volume geometry vector for cell-centered TPFA models + * \ingroup CCTpfaDiscretization + * \brief Stencil-local finite volume geometry (scvs and scvfs) for cell-centered TPFA models * This builds up the sub control volumes and sub control volume faces - * for each element. + * for each element in the local scope we are restricting to, e.g. stencil or element. + * \note This class is specialized for versions with and without caching the fv geometries on the grid view */ template<class TypeTag, bool EnableFVGridGeometryCache> class CCTpfaFVElementGeometry {}; -//! specialization in case the FVElementGeometries are stored globally -//! In this case we just forward internally to the global object +/*! + * \ingroup CCTpfaDiscretization + * \brief Stencil-local finite volume geometry (scvs and scvfs) for cell-centered TPFA models + * Specialization for grid caching enabled + * \note The finite volume geometries are stored in the corresponding FVGridGeometry + */ template<class TypeTag> class CCTpfaFVElementGeometry<TypeTag, true> { @@ -151,7 +157,11 @@ private: const FVGridGeometry* fvGridGeometryPtr_; }; -//! specialization in case the FVElementGeometries are not stored +/*! + * \ingroup CCTpfaDiscretization + * \brief Stencil-local finite volume geometry (scvs and scvfs) for cell-centered TPFA models + * Specialization for grid caching disabled + */ template<class TypeTag> class CCTpfaFVElementGeometry<TypeTag, false> { @@ -526,7 +536,7 @@ private: flippedNeighborScvfIndices_.clear(); } - // the bound element + //! the bound element const Element* elementPtr_; const FVGridGeometry* fvGridGeometryPtr_; @@ -545,6 +555,6 @@ private: std::vector<std::vector<IndexType>> flippedNeighborScvfIndices_; }; -} // end namespace +} // end namespace Dumux #endif diff --git a/dumux/discretization/cellcentered/tpfa/fvgridgeometry.hh b/dumux/discretization/cellcentered/tpfa/fvgridgeometry.hh index 3373a48799657c5c6353d2ec7d9c884a47ac6df6..f71a30ea60989698801ff931a22dad27b616e5a4 100644 --- a/dumux/discretization/cellcentered/tpfa/fvgridgeometry.hh +++ b/dumux/discretization/cellcentered/tpfa/fvgridgeometry.hh @@ -18,7 +18,8 @@ *****************************************************************************/ /*! * \file - * \brief Base class for the finite volume geometry vector for cell-centered TPFA models + * \ingroup CCTpfaDiscretization + * \brief The finite volume geometry (scvs and scvfs) for cell-centered TPFA models on a grid view * This builds up the sub control volumes and sub control volume faces * for each element of the grid partition. */ @@ -35,16 +36,21 @@ namespace Dumux { /*! - * \ingroup ImplicitModel - * \brief Base class for the finite volume geometry vector for cell-centered TPFA models + * \ingroup CCTpfaDiscretization + * \brief The finite volume geometry (scvs and scvfs) for cell-centered TPFA models on a grid view * This builds up the sub control volumes and sub control volume faces - * for each element. + * \note This class is specialized for versions with and without caching the fv geometries on the grid view */ template<class TypeTag, bool EnableFVGridGeometryCache> class CCTpfaFVGridGeometry {}; -// specialization in case the FVElementGeometries are stored globally +/*! + * \ingroup CCTpfaDiscretization + * \brief The finite volume geometry (scvs and scvfs) for cell-centered TPFA models on a grid view + * This builds up the sub control volumes and sub control volume faces + * \note For caching enabled we store the fv geometries for the whole grid view which is memory intensive but faster + */ template<class TypeTag> class CCTpfaFVGridGeometry<TypeTag, true> : public BaseFVGridGeometry<TypeTag> { @@ -100,11 +106,11 @@ public: std::size_t numDofs() const { return this->gridView().size(0); } - // Get an element from a sub control volume contained in it + //! Get an element from a sub control volume contained in it Element element(const SubControlVolume& scv) const { return this->elementMap()[scv.elementIndex()]; } - // Get an element from a global element index + //! Get an element from a global element index Element element(IndexType eIdx) const { return this->elementMap()[eIdx]; } @@ -285,20 +291,26 @@ private: DUNE_THROW(Dune::InvalidStateException, "No flipped version of this scvf found!"); } - // connectivity map for efficient assembly + //! connectivity map for efficient assembly ConnectivityMap connectivityMap_; - // containers storing the global data + //! containers storing the global data std::vector<SubControlVolume> scvs_; std::vector<SubControlVolumeFace> scvfs_; std::vector<std::vector<IndexType>> scvfIndicesOfScv_; IndexType numBoundaryScvf_; - // needed for embedded surface and network grids (dim < dimWorld) + //! needed for embedded surface and network grids (dim < dimWorld) std::vector<std::vector<IndexType>> flipScvfIndices_; }; -// specialization in case the FVElementGeometries are not stored +/*! + * \ingroup CCTpfaDiscretization + * \brief The finite volume geometry (scvs and scvfs) for cell-centered TPFA models on a grid view + * This builds up the sub control volumes and sub control volume faces + * \note For caching disabled we store only some essential index maps to build up local systems on-demand in + * the corresponding FVElementGeometry + */ template<class TypeTag> class CCTpfaFVGridGeometry<TypeTag, false> : public BaseFVGridGeometry<TypeTag> { @@ -468,15 +480,15 @@ public: private: - // Information on the global number of geometries + //! Information on the global number of geometries IndexType numScvs_; IndexType numScvf_; IndexType numBoundaryScvf_; - // connectivity map for efficient assembly + //! connectivity map for efficient assembly ConnectivityMap connectivityMap_; - // vectors that store the global data + //! vectors that store the global data std::vector<std::vector<IndexType>> scvfIndicesOfScv_; std::vector<std::vector<std::vector<IndexType>>> neighborVolVarIndices_; }; diff --git a/dumux/discretization/cellcentered/tpfa/gridfluxvariablescache.hh b/dumux/discretization/cellcentered/tpfa/gridfluxvariablescache.hh index da39f3755cb01816b3e41ef6b9f648e4da7eefc6..88a551240492507080e1b6524b024b9cf61bce6a 100644 --- a/dumux/discretization/cellcentered/tpfa/gridfluxvariablescache.hh +++ b/dumux/discretization/cellcentered/tpfa/gridfluxvariablescache.hh @@ -18,7 +18,8 @@ *****************************************************************************/ /*! * \file - * \brief The global object of flux var caches + * \ingroup CCTpfaDiscretization + * \brief Flux variable caches on a gridview */ #ifndef DUMUX_DISCRETIZATION_CCTPFA_GRID_FLUXVARSCACHE_HH #define DUMUX_DISCRETIZATION_CCTPFA_GRID_FLUXVARSCACHE_HH @@ -30,15 +31,17 @@ namespace Dumux { /*! - * \ingroup ImplicitModel - * \brief Base class for the flux variables cache vector, we store one cache per face + * \ingroup CCTpfaDiscretization + * \brief Flux variable caches on a gridview + * \note The class is specialized for a version with and without grid caching */ template<class TypeTag, bool EnableGridFluxVariablesCache> class CCTpfaGridFluxVariablesCache; /*! - * \ingroup ImplicitModel - * \brief Spezialization when caching globally + * \ingroup CCTpfaDiscretization + * \brief Flux variable caches on a gridview with grid caching enabled + * \note The flux caches of the gridview are stored which is memory intensive but faster */ template<class TypeTag> class CCTpfaGridFluxVariablesCache<TypeTag, true> @@ -145,8 +148,8 @@ private: }; /*! - * \ingroup ImplicitModel - * \brief Spezialization when not using global caching + * \ingroup CCTpfaDiscretization + * \brief Flux variable caches on a gridview with grid caching disabled */ template<class TypeTag> class CCTpfaGridFluxVariablesCache<TypeTag, false> @@ -165,12 +168,13 @@ public: // The constructor CCTpfaGridFluxVariablesCache(const Problem& problem) : problemPtr_(&problem) {} - // When global flux variables caching is disabled, we don't need to update the cache + //! When global flux variables caching is disabled, we don't need to update the cache void update(const FVGridGeometry& fvGridGeometry, const GridVolumeVariables& gridVolVars, const SolutionVector& sol, bool forceUpdate = false) {} + //! When global flux variables caching is disabled, we don't need to update the cache void updateElement(const Element& element, const FVElementGeometry& fvGeometry, const ElementVolumeVariables& elemVolVars) {} @@ -190,6 +194,6 @@ private: const Problem* problemPtr_; }; -} // end namespace +} // end namespace Dumux #endif diff --git a/dumux/discretization/cellcentered/tpfa/properties.hh b/dumux/discretization/cellcentered/tpfa/properties.hh index 22de02dac9bcea98cb47c6bb64bfb9933ba7b965..8e2bca2a4857885649ade46a74e54528762004b1 100644 --- a/dumux/discretization/cellcentered/tpfa/properties.hh +++ b/dumux/discretization/cellcentered/tpfa/properties.hh @@ -17,11 +17,10 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * *****************************************************************************/ /*! - * \ingroup Properties * \file - * - * \brief Defines a type tag and some properties for models using - * a cell-centered scheme with two-point flux approximation. + * \ingroup CCTpfaDiscretization + * \brief Properties for all models using cell-centered finite volume scheme with TPFA + * \note Inherit from these properties to use a cell-centered finite volume scheme with TPFA */ #ifndef DUMUX_CC_TPFA_PROPERTIES_HH diff --git a/dumux/discretization/cellcentered/tpfa/subcontrolvolumeface.hh b/dumux/discretization/cellcentered/tpfa/subcontrolvolumeface.hh index 5cdd51465e4d6afffced44b4acf5f8d623bf244f..58c837af98aa0982817d2e04d1f706a75baa93c9 100644 --- a/dumux/discretization/cellcentered/tpfa/subcontrolvolumeface.hh +++ b/dumux/discretization/cellcentered/tpfa/subcontrolvolumeface.hh @@ -18,7 +18,8 @@ *****************************************************************************/ /*! * \file - * \brief Base class for a sub control volume face + * \ingroup CCTpfaDiscretization + * \brief The sub control volume face */ #ifndef DUMUX_DISCRETIZATION_CC_TPFA_SUBCONTROLVOLUMEFACE_HH #define DUMUX_DISCRETIZATION_CC_TPFA_SUBCONTROLVOLUMEFACE_HH @@ -31,9 +32,8 @@ namespace Dumux { /*! - * \ingroup Discretization - * \brief Class for a sub control volume face in the box method, i.e a part of the boundary - * of a sub control volume we compute fluxes on. We simply use the base class here. + * \ingroup CCTpfaDiscretization + * \brief The sub control volume face */ template<class ScvfGeometryTraits> class CCTpfaSubControlVolumeFace : public SubControlVolumeFaceBase<CCTpfaSubControlVolumeFace<ScvfGeometryTraits>,ScvfGeometryTraits> @@ -170,6 +170,6 @@ private: BoundaryFlag boundaryFlag_; }; -} // end namespace +} // end namespace Dumux #endif diff --git a/dumux/discretization/darcyslaw.hh b/dumux/discretization/darcyslaw.hh index 44c1523c8ea5564a5f67441683c8282cddb5b52f..f63e7fb77a6035279eed7a2f71f20c2a8d012786 100644 --- a/dumux/discretization/darcyslaw.hh +++ b/dumux/discretization/darcyslaw.hh @@ -18,7 +18,9 @@ *****************************************************************************/ /*! * \file - * \brief This file contains the data which is required to calculate + * \ingroup Discretization + * \brief Darcy's law specialized for different discretization schemes + * This file contains the data which is required to calculate * volume and mass fluxes of fluid phases over a face of a finite volume by means * of the Darcy approximation. Specializations are provided for the different discretization methods. */ @@ -35,16 +37,15 @@ class DarcysLawImplementation {}; /*! - * \ingroup DarcysLaw - * \brief Evaluates the normal component of the Darcy velocity - * on a (sub)control volume face. Specializations are provided - * for the different discretization methods. These specializations - * are found in the headers included below. + * \ingroup Discretization + * \brief Evaluates the normal component of the Darcy velocity on a (sub)control volume face. + * \note Specializations are provided for the different discretization methods. + * These specializations are found in the headers included below. */ template <class TypeTag> using DarcysLaw = DarcysLawImplementation<TypeTag, GET_PROP_VALUE(TypeTag, DiscretizationMethod)>; -} // end namespace +} // end namespace Dumux #include <dumux/discretization/box/darcyslaw.hh> #include <dumux/discretization/cellcentered/tpfa/darcyslaw.hh> diff --git a/dumux/discretization/evalgradients.hh b/dumux/discretization/evalgradients.hh index 2b0e7f7316234bca217ea3d9b5519bcc3543045f..bd16f4b67ceadeca91284bdb4fa09e9a3a504c2b 100644 --- a/dumux/discretization/evalgradients.hh +++ b/dumux/discretization/evalgradients.hh @@ -18,7 +18,6 @@ *****************************************************************************/ /*! * \file - * * \ingroup Discretization * \brief free functions for the evaluation of primary variable gradients inside elements. */ @@ -35,9 +34,10 @@ namespace Dumux /*! * \brief Evaluates the gradient of a given box element solution to a given global position. + * \ingroup Discretization * - * \return the interpolated Primary Variables * \param element The element + * \param geometry The element geometry * \param fvGridGeometry The finite volume grid geometry * \param elemSol The primary variables at the dofs of the element * \param globalPos The global position @@ -91,22 +91,23 @@ evalGradients(const Element& element, } /*! + * \ingroup Discretization * \brief Evaluates the gradient of a given CCElementSolution to a given global position. * This function is only here for (compilation) compatibility reasons with the box scheme. * The solution within the control volumes is constant and thus gradients are zero. * One can compute gradients towards the sub-control volume faces after reconstructing - * the solution on the faces. However, this has to be done manually. Here, we simply - * throw an exception that this shouldn't be used. + * the solution on the faces. * - * \return throw statement * \param element The element + * \param geometry The element geometry * \param fvGridGeometry The finite volume grid geometry * \param elemSol The primary variables at the dofs of the element * \param globalPos The global position + * \throws Dune::NotImplemented */ - template< class Element, class FVGridGeometry, class TypeTag > - Dune::FieldVector<typename Element::Geometry::GlobalCoordinate, - CCElementSolution<TypeTag>::PrimaryVariables::dimension> +template< class Element, class FVGridGeometry, class TypeTag > +Dune::FieldVector<typename Element::Geometry::GlobalCoordinate, + CCElementSolution<TypeTag>::PrimaryVariables::dimension> evalGradients(const Element& element, const typename Element::Geometry& geometry, const FVGridGeometry& fvGridGeometry, diff --git a/dumux/discretization/evalsolution.hh b/dumux/discretization/evalsolution.hh index 74668851d75cbee908ecac5e9585e2c95afabb41..14588be953e46ef92f50dd54c22b4d21b5da12fa 100644 --- a/dumux/discretization/evalsolution.hh +++ b/dumux/discretization/evalsolution.hh @@ -18,7 +18,6 @@ *****************************************************************************/ /*! * \file - * * \ingroup Discretization * \brief free functions for the evaluation of primary variables inside elements. */ @@ -34,10 +33,11 @@ namespace Dumux { /*! - * \brief Interpolates a given box element solution to a given global position. + * \brief Interpolates a given box element solution at a given global position. * Uses the finite element cache of the grid geometry. + * \ingroup Discretization * - * \return the interpolated Primary Variables + * \return the interpolated primary variables * \param element The element * \param geometry The element geometry * \param fvGridGeometry The finite volume grid geometry @@ -75,11 +75,12 @@ evalSolution(const Element& element, } /*! - * \brief Interpolates a given box element solution to a given global position. + * \ingroup Discretization + * \brief Interpolates a given box element solution at a given global position. * Overload of the above evalSolution() function without a given fvGridGeometry. * The local basis is computed on the fly. * - * \return the interpolated Primary Variables + * \return the interpolated primary variables * \param element The element * \param geometry The element geometry * \param elemSol The primary variables at the dofs of the element @@ -122,9 +123,10 @@ evalSolution(const Element& element, } /*! - * \brief Interpolates a given CCElementSolution to a given global position. + * \brief Interpolates a given cell-centered element solution at a given global position. + * \ingroup Discretization * - * \return the (constant over the element) Primary Variables + * \return the primary variables (constant over the element) * \param element The element * \param geometry The element geometry * \param fvGridGeometry The finite volume grid geometry @@ -143,11 +145,12 @@ evalSolution(const Element& element, } /*! - * \brief Interpolates a given CCElementSolution to a given global position. + * \brief Interpolates a given cell-centered element solution at a given global position. * Overload of the above evalSolution() function without a given fvGridGeometry. * For compatibility reasons with the box scheme. + * \ingroup Discretization * - * \return the (constant over the element) Primary Variables + * \return the primary variables (constant over the element) * \param element The element * \param geometry The element geometry * \param elemSol The primary variables at the dofs of the element diff --git a/dumux/discretization/fickslaw.hh b/dumux/discretization/fickslaw.hh index c0e975085b7f3e5e298273f352f0221fc02c2664..bb880162b2cec7f8a6f31b8c8d966fb040b8e74a 100644 --- a/dumux/discretization/fickslaw.hh +++ b/dumux/discretization/fickslaw.hh @@ -18,7 +18,9 @@ *****************************************************************************/ /*! * \file - * \brief This file contains the data which is required to calculate + * \ingroup Discretization + * \brief Fick's law specilized for different discretization schemes. + * This file contains the data which is required to calculate * diffusive mass fluxes due to molecular diffusion with Fick's law. */ #ifndef DUMUX_DISCRETIZATION_FICKS_LAW_HH @@ -34,13 +36,13 @@ template <class TypeTag, DiscretizationMethods Method> class FicksLawImplementation; /*! - * \ingroup CCTpfaFicksLaw + * \ingroup Discretization * \brief Evaluates the diffusive mass flux according to Fick's law */ template <class TypeTag> using FicksLaw = FicksLawImplementation<TypeTag, GET_PROP_VALUE(TypeTag, DiscretizationMethod)>; -} // end namespace +} // end namespace Dumux #include <dumux/discretization/cellcentered/tpfa/fickslaw.hh> #include <dumux/discretization/cellcentered/mpfa/fickslaw.hh> diff --git a/dumux/discretization/fluxstencil.hh b/dumux/discretization/fluxstencil.hh index 23a6090db01892b6af9db1f99a12bd9e4a10bc2a..0f24ee01654c42b9d7f7e074f9c0915a65b96ab1 100644 --- a/dumux/discretization/fluxstencil.hh +++ b/dumux/discretization/fluxstencil.hh @@ -18,7 +18,8 @@ *****************************************************************************/ /*! * \file - * \brief Base class the flux stencil + * \ingroup Discretization + * \brief The flux stencil specialized for different discretization schemes */ #ifndef DUMUX_DISCRETIZATION_FLUXSTENCIL_HH #define DUMUX_DISCRETIZATION_FLUXSTENCIL_HH @@ -35,7 +36,7 @@ class FluxStencilImplementation; /*! * \ingroup Discretization - * \brief The flux stencil specialized for each discretization method + * \brief The flux stencil specialized for different discretization schemes * \note There might be different stencils used for e.g. advection and diffusion for schemes * where the stencil depends on variables. Also schemes might even have solution dependent * stencil. However, we always reserve the stencil or all DOFs that are possibly involved @@ -45,7 +46,10 @@ class FluxStencilImplementation; template<class TypeTag> using FluxStencil = FluxStencilImplementation<TypeTag, GET_PROP_VALUE(TypeTag, DiscretizationMethod)>; -//! Flux stencil for the cell-centered TPFA scheme +/* + * \ingroup Discretization + * \brief Flux stencil specialization for the cell-centered tpfa scheme + */ template<class TypeTag> class FluxStencilImplementation<TypeTag, DiscretizationMethods::CCTpfa> { @@ -75,7 +79,10 @@ public: } }; -//! Specialization for cell-centered MPFA schemes +/* + * \ingroup Discretization + * \brief Flux stencil specialization for the cell-centered mpfa scheme + */ template<class TypeTag> class FluxStencilImplementation<TypeTag, DiscretizationMethods::CCMpfa> { diff --git a/dumux/discretization/fluxvariablesbase.hh b/dumux/discretization/fluxvariablesbase.hh index 5df9c1dfd89c798ac1e907fb9c0ced86d322398a..1de501c7a26fb301adae6a850d3929377cb89e3e 100644 --- a/dumux/discretization/fluxvariablesbase.hh +++ b/dumux/discretization/fluxvariablesbase.hh @@ -18,7 +18,8 @@ *****************************************************************************/ /*! * \file - * \brief Base class for the flux variables + * \ingroup Discretization + * \brief Base class for the flux variables living on a sub control volume face */ #ifndef DUMUX_DISCRETIZATION_FLUXVARIABLESBASE_HH #define DUMUX_DISCRETIZATION_FLUXVARIABLESBASE_HH @@ -28,23 +29,24 @@ namespace Dumux { +// forward declaration template<class TypeTag, class UpwindScheme> class FluxVariablesBaseImplementation; /*! * \ingroup Discretization - * \brief The flux variables base class class - * The upwind scheme is chosen depending on the discretization method + * \brief Base class for the flux variables living on a sub control volume face + * \note The upwind scheme is chosen depending on the discretization method */ template<class TypeTag> using FluxVariablesBase = FluxVariablesBaseImplementation<TypeTag, UpwindScheme<TypeTag>>; /*! * \ingroup Discretization - * \brief Implementation of the base class of the flux variables + * \brief Base class for the flux variables living on a sub control volume face * - * \param TypeTag The type tag - * \param UpwindScheme The type used for the upwinding of the advective fluxes + * \tparam TypeTag The type tag + * \tparam UpwindScheme The type of the upwind scheme used for upwinding of advective fluxes */ template<class TypeTag, class UpwindScheme> class FluxVariablesBaseImplementation @@ -62,6 +64,7 @@ class FluxVariablesBaseImplementation public: + //! Initialize the flux variables storing some temporary pointers void init(const Problem& problem, const Element& element, const FVElementGeometry& fvGeometry, diff --git a/dumux/discretization/fluxvariablescaching.hh b/dumux/discretization/fluxvariablescaching.hh index cb4abf11eb71cf2e237835e5175441b2c1e8a592..b8168b61e9e3ac1250b1b86a9266c1471554ed9f 100644 --- a/dumux/discretization/fluxvariablescaching.hh +++ b/dumux/discretization/fluxvariablescaching.hh @@ -18,6 +18,7 @@ *****************************************************************************/ /*! * \file + * \ingroup Discretization * \brief Classes related to flux variables caching */ #ifndef DUMUX_DISCRETIZATION_FLUXVAR_CACHING_HH @@ -25,11 +26,11 @@ #include <dumux/common/properties.hh> -namespace Dumux -{ - +namespace Dumux { namespace FluxVariablesCaching { +#ifndef DOXYGEN // hide the empty caches from doxygen + //! The empty filler class corresponding to EmptyCache template<class TypeTag> class EmptyCacheFiller @@ -42,7 +43,7 @@ class EmptyCacheFiller using SubControlVolumeFace = typename GET_PROP_TYPE(TypeTag, SubControlVolumeFace); using FluxVariablesCache = typename GET_PROP_TYPE(TypeTag, FluxVariablesCache); public: - //! For advection filler + //! Fill, signature for advection filler template<class FluxVariablesCacheFiller> static void fill(FluxVariablesCache& scvfFluxVarsCache, const Problem& problem, @@ -53,7 +54,7 @@ public: const FluxVariablesCacheFiller& fluxVarsCacheFiller) {} - //! For diffusion filler + //! Fill, signature for diffusion filler template<class FluxVariablesCacheFiller> static void fill(FluxVariablesCache& scvfFluxVarsCache, unsigned int phaseIdx, unsigned int compIdx, @@ -67,20 +68,21 @@ public: }; // an empty cache filler +// \note Never use the _EmptyCache directly as it lead to ambiguous definitions template<class TypeTag> struct _EmptyCache { using Filler = EmptyCacheFiller<TypeTag>; }; +#endif // DOXYGEN + /*! - * \ingroup ImplicitModel - * \brief Empty caches to use in a law/process, e.g. Darcy's law - * \note Never use the _EmptyCache directly as it lead to ambiguous definitions + * \ingroup Discretization + * \brief Empty caches to use in a constitutive flux law/process, e.g. Darcy's law */ template<class TypeTag> class EmptyAdvectionCache : public _EmptyCache<TypeTag> {}; template<class TypeTag> class EmptyDiffusionCache : public _EmptyCache<TypeTag> {}; template<class TypeTag> class EmptyHeatConductionCache : public _EmptyCache<TypeTag> {}; } // end namespace FluxVariablesCaching - } // end namespace Dumux #endif diff --git a/dumux/discretization/fourierslaw.hh b/dumux/discretization/fourierslaw.hh index 1b674f59d40a44fdac975a7d8493f5de762e8415..ff5efe572860cac26bc03c419dfb39a3102389d1 100644 --- a/dumux/discretization/fourierslaw.hh +++ b/dumux/discretization/fourierslaw.hh @@ -18,7 +18,9 @@ *****************************************************************************/ /*! * \file - * \brief This file contains the data which is required to calculate + * \ingroup Discretization + * \brief Fourier's law specialized for different discretization schemes + * This file contains the data which is required to calculate * diffusive mass fluxes due to molecular diffusion with Fourier's law. */ #ifndef DUMUX_DISCRETIZATION_FOURIERS_LAW_HH @@ -27,15 +29,15 @@ #include <dumux/common/properties.hh> #include <dumux/discretization/methods.hh> -namespace Dumux -{ +namespace Dumux { + // forward declaration template <class TypeTag, DiscretizationMethods Method> class FouriersLawImplementation {}; /*! - * \ingroup FouriersLaw + * \ingroup Discretization * \brief Evaluates the heat conduction flux according to Fouriers's law */ template <class TypeTag> diff --git a/dumux/discretization/fvgridvariables.hh b/dumux/discretization/fvgridvariables.hh index 0f7d69e474d2590972851c6a367b6f8810e26993..926c8aa3dfce79a5be75d103bff6a402c9652981 100644 --- a/dumux/discretization/fvgridvariables.hh +++ b/dumux/discretization/fvgridvariables.hh @@ -18,7 +18,8 @@ *****************************************************************************/ /*! * \file - * \brief Class storing scv and scvf variables + * \ingroup Discretization + * \brief The grid variable class for finite volume schemes storing variables on scv and scvf (volume and flux variables) */ #ifndef DUMUX_FV_GRID_VARIABLES_HH #define DUMUX_FV_GRID_VARIABLES_HH @@ -30,7 +31,8 @@ namespace Dumux { /*! - * \brief Class storing scv and scvf variables + * \ingroup Discretization + * \brief The grid variable class for finite volume schemes storing variables on scv and scvf (volume and flux variables) */ template<class TypeTag> class FVGridVariables @@ -42,7 +44,6 @@ class FVGridVariables using SolutionVector = typename GET_PROP_TYPE(TypeTag, SolutionVector); public: - //! Constructor FVGridVariables(std::shared_ptr<const Problem> problem, std::shared_ptr<const FVGridGeometry> fvGridGeometry) : problem_(problem) @@ -85,8 +86,10 @@ public: prevGridVolVars_.update(*fvGridGeometry_, initSol); } - //! Sets the current state as the previous for next time step - //! this has to be called at the end of each time step + /*! + * \brief Sets the current state as the previous for next time step + * \note this has to be called at the end of each time step + */ void advanceTimeStep() { prevGridVolVars_ = curGridVolVars_; @@ -102,34 +105,38 @@ public: gridFluxVarsCache_.update(*fvGridGeometry_, curGridVolVars_, solution); } + //! return the flux variables cache const GridFluxVariablesCache& gridFluxVarsCache() const { return gridFluxVarsCache_; } - const GridVolumeVariables& curGridVolVars() const - { return curGridVolVars_; } - - const GridVolumeVariables& prevGridVolVars() const - { return prevGridVolVars_; } - + //! return the flux variables cache GridFluxVariablesCache& gridFluxVarsCache() { return gridFluxVarsCache_; } + //! return the current volume variables + const GridVolumeVariables& curGridVolVars() const + { return curGridVolVars_; } + + //! return the current volume variables GridVolumeVariables& curGridVolVars() { return curGridVolVars_; } + //! return the volume variables of the previous time step (for instationary problems) + const GridVolumeVariables& prevGridVolVars() const + { return prevGridVolVars_; } + + //! return the volume variables of the previous time step (for instationary problems) GridVolumeVariables& prevGridVolVars() { return prevGridVolVars_; } private: - std::shared_ptr<const Problem> problem_; - std::shared_ptr<const FVGridGeometry> fvGridGeometry_; + std::shared_ptr<const Problem> problem_; //!< pointer to the constant problem definition + std::shared_ptr<const FVGridGeometry> fvGridGeometry_; //!< pointer to the constant grid geometry - // the current and previous variables (primary and secondary variables) - GridVolumeVariables curGridVolVars_; - GridVolumeVariables prevGridVolVars_; + GridVolumeVariables curGridVolVars_; //!< the current volume variables (primary and secondary variables) + GridVolumeVariables prevGridVolVars_; //!< the previous time step's volume variables (primary and secondary variables) - // the flux variables cache vector vector - GridFluxVariablesCache gridFluxVarsCache_; + GridFluxVariablesCache gridFluxVarsCache_; //!< the flux variables cache }; } // end namespace Dumux diff --git a/dumux/discretization/fvproperties.hh b/dumux/discretization/fvproperties.hh index 2fe65eda292af480f0580a4c80c2a9a01898575f..56e2e5fe3b3ff4406cfd495ae7859c31b7924fd7 100644 --- a/dumux/discretization/fvproperties.hh +++ b/dumux/discretization/fvproperties.hh @@ -17,9 +17,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * *****************************************************************************/ /*! - * \ingroup Properties * \file - * + * \ingroup Discretization * \brief Declares properties required for finite-volume models models. */ @@ -77,9 +76,9 @@ public: using type = typename Dune::BCRSMatrix<MatrixBlock>; }; -// set the block level to 1, suitable for e.g. a simple Dune::BCRSMatrix. -// Set this to more than one if the matrix to solve is nested multiple times -// e.g. for Dune::MultiTypeBlockMatrix'es. TODO: move to LinearAlgebra traits +//! set the block level to 1, suitable for e.g. a simple Dune::BCRSMatrix. +//! Set this to more than one if the matrix to solve is nested multiple times +//! e.g. for Dune::MultiTypeBlockMatrix'es. TODO: move to LinearAlgebra traits SET_INT_PROP(FiniteVolumeModel, LinearSolverPreconditionerBlockLevel, 1); } // namespace Properties diff --git a/dumux/discretization/methods.hh b/dumux/discretization/methods.hh index 7648bcd42eb0623a4e1f2f77f53b8a301b8589f9..d6a216a4d350c9c04f0fb03fa8a1ece8525aa9b9 100644 --- a/dumux/discretization/methods.hh +++ b/dumux/discretization/methods.hh @@ -18,7 +18,7 @@ *****************************************************************************/ /*! * \file - * + * \ingroup Discretization * \brief The available discretization methods in Dumux */ #ifndef DUMUX_DISCRETIZARION_METHODS_HH @@ -26,10 +26,13 @@ namespace Dumux { - //! The discretization methods - //! \note Use none if specifying a discretization method is required but - //! the class in question is not specific to a a discretization method - //! or the classification is non-applicable + /*! + * \brief The available discretization methods in Dumux + * \ingroup Discretization + * \note Use none if specifying a discretization method is required but + * the class in question is not specific to a a discretization method + * or the classification is non-applicable + */ enum class DiscretizationMethods : unsigned int { None, Box, CCTpfa, CCMpfa, Staggered diff --git a/dumux/discretization/scvandscvfiterators.hh b/dumux/discretization/scvandscvfiterators.hh index fc947d9e41a8d91b203c1e9c5e950bafdf070cb3..d37341e588bebce233467939ac19415259c4f9f3 100644 --- a/dumux/discretization/scvandscvfiterators.hh +++ b/dumux/discretization/scvandscvfiterators.hh @@ -18,8 +18,8 @@ *****************************************************************************/ /*! * \file - * \brief Class providing iterators over sub control volumes and sub control - * volume faces of an element. + * \ingroup Discretization + * \brief Class providing iterators over sub control volumes and sub control volume faces of an element. */ #ifndef DUMUX_SCV_AND_SCVF_ITERATORS_HH #define DUMUX_SCV_AND_SCVF_ITERATORS_HH @@ -27,12 +27,12 @@ #include <dune/common/iteratorrange.hh> #include <dune/common/iteratorfacades.hh> -namespace Dumux -{ +namespace Dumux { /*! * \ingroup Discretization - * \brief An iterator over sub control volumes + * \brief Iterators over sub control volumes + * \note usage: for(const auto& scv : scvs(fvGeometry)) */ template<class SubControlVolume, class Vector, class FVElementGeometry> class ScvIterator : public Dune::ForwardIteratorFacade<ScvIterator<SubControlVolume, @@ -46,9 +46,9 @@ public: ScvIterator(const Iterator& it, const FVElementGeometry& fvGeometry) : it_(it), fvGeometryPtr_(&fvGeometry) {} - //! default constructor ScvIterator() : it_(Iterator()), fvGeometryPtr_(nullptr) {} + //! dereferencing yields a subcontrol volume const SubControlVolume& dereference() const { return fvGeometryPtr_->scv(*it_); @@ -70,8 +70,9 @@ private: }; /*! - * \ingroup ImplcititModel - * \brief An iterator over sub control volume faces + * \ingroup Discretization + * \brief Iterators over sub control volume faces of an fv geometry + * \note usage: for(const auto& scvf : scvfs(fvGeometry)) */ template<class SubControlVolumeFace, class Vector, class FVElementGeometry> class ScvfIterator : public Dune::ForwardIteratorFacade<ScvfIterator<SubControlVolumeFace, @@ -85,9 +86,9 @@ public: ScvfIterator(const Iterator& it, const FVElementGeometry& fvGeometry) : it_(it), fvGeometryPtr_(&fvGeometry) {} - //! default constructor ScvfIterator() : it_(Iterator()), fvGeometryPtr_(nullptr) {} + //! dereferencing yields a subcontrol volume face const SubControlVolumeFace& dereference() const { return fvGeometryPtr_->scvf(*it_); diff --git a/dumux/discretization/scvoperator.hh b/dumux/discretization/scvoperator.hh index 6f44a68a3f9d3756ca24ad3ce87241b8a986700b..2856fc6e570a744ab70ec7e6fc151fa371271534 100644 --- a/dumux/discretization/scvoperator.hh +++ b/dumux/discretization/scvoperator.hh @@ -19,7 +19,7 @@ /*! * \file * - * \ingroup Material + * \ingroup Discretization * \brief Class for the evaluation of primary variables and gradients on sub-control volumes. */ #ifndef DUMUX_SUBCONTROL_VOLUME_OPERATOR_HH diff --git a/dumux/discretization/stationaryvelocityfield.hh b/dumux/discretization/stationaryvelocityfield.hh index ec798f73aa7d5bb51126222d3458fca2948b555a..d7a304fa058c23d83646dd9be020c97d9de68958 100644 --- a/dumux/discretization/stationaryvelocityfield.hh +++ b/dumux/discretization/stationaryvelocityfield.hh @@ -18,7 +18,9 @@ *****************************************************************************/ /*! * \file - * \brief This file contains the data which is required to calculate + * \ingroup Discretization + * \brief Constant velocity advective law for transport models. + * This file contains the data which is required to calculate * volume and mass fluxes of fluid phases over a face of a finite volume. * A stationary velocity field is given by the user for use in tracer models. */ @@ -32,7 +34,7 @@ namespace Dumux { /*! - * \ingroup StationaryVelocityField + * \ingroup Discretization * \brief Evaluates a user given velocity field */ template <class TypeTag> @@ -48,13 +50,13 @@ class StationaryVelocityField using Element = typename GridView::template Codim<0>::Entity; public: - // state the discretization method this implementation belongs to + //! state the discretization method this implementation belongs to static const DiscretizationMethods myDiscretizationMethod = DiscretizationMethods::None; //! state the type for the corresponding cache - //! We don't cache anything for this law using Cache = FluxVariablesCaching::EmptyAdvectionCache<TypeTag>; + //! returns the volume flux given in the spatial params static Scalar flux(const Problem& problem, const Element& element, const FVElementGeometry& fvGeometry, diff --git a/dumux/discretization/subcontrolvolumebase.hh b/dumux/discretization/subcontrolvolumebase.hh index 810fcee75948743594a6274100251b74fa2292a7..6479200dd3092c1199e10ca667411800ab824d1d 100644 --- a/dumux/discretization/subcontrolvolumebase.hh +++ b/dumux/discretization/subcontrolvolumebase.hh @@ -18,6 +18,7 @@ *****************************************************************************/ /*! * \file + * \ingroup Discretization * \brief Base class for a sub control volume */ #ifndef DUMUX_SUBCONTROLVOLUME_HH @@ -26,9 +27,11 @@ namespace Dumux { /*! - * \ingroup ImplicitModel + * \ingroup Discretization * \brief Base class for a sub control volume, i.e a part of the control * volume we are making the balance for. Defines the general interface. + * \tparam Imp the implementation + * \tparam ScvGeometryTraits traits of this class */ template<class Imp, class ScvGeometryTraits> class SubControlVolumeBase @@ -61,7 +64,7 @@ public: return asImp_().dofIndex(); } - //! The index of the dof this scv is embedded in (box) + //! The index of the dof this scv is embedded in (box) LocalIndexType indexInElement() const { return asImp_().indexInElement(); @@ -87,6 +90,6 @@ private: { return *static_cast<Implementation*>(this);} }; -} // end namespace +} // end namespace Dumux #endif diff --git a/dumux/discretization/subcontrolvolumefacebase.hh b/dumux/discretization/subcontrolvolumefacebase.hh index 20bea52cbd63565764e1b0afad7901cbf5dd3332..3a19a7f0afa309084c7ca4da4f4936b69c790dd5 100644 --- a/dumux/discretization/subcontrolvolumefacebase.hh +++ b/dumux/discretization/subcontrolvolumefacebase.hh @@ -18,6 +18,7 @@ *****************************************************************************/ /*! * \file + * \ingroup Discretization * \brief Base class for a sub control volume face */ #ifndef DUMUX_DISCRETIZATION_SUBCONTROLVOLUMEFACEBASE_HH @@ -33,6 +34,8 @@ namespace Dumux * \ingroup Discretization * \brief Base class for a sub control volume face, i.e a part of the boundary * of a sub control volume we computing a flux on. + * \tparam Imp the implementation + * \tparam ScvGeometryTraits traits of this class */ template<class Imp, class ScvfGeometryTraits> class SubControlVolumeFaceBase @@ -71,6 +74,7 @@ public: return asImp_().boundary(); } + //! the unit outward pointing normal on the scv face GlobalPosition unitOuterNormal() const { return asImp_().unitOuterNormal(); @@ -106,5 +110,4 @@ private: } // end namespace Dumux - #endif diff --git a/dumux/discretization/upwindscheme.hh b/dumux/discretization/upwindscheme.hh index 620d1a03f96ba2e386c0e5d08216147ed9d4958e..38eb68b2299b36883176f3e61143c08bb56ab213 100644 --- a/dumux/discretization/upwindscheme.hh +++ b/dumux/discretization/upwindscheme.hh @@ -18,6 +18,7 @@ *****************************************************************************/ /*! * \file + * \ingroup Discretization * \brief Base class for the upwind scheme */ #ifndef DUMUX_DISCRETIZATION_UPWINDSCHEME_HH @@ -71,7 +72,7 @@ public: } }; -//! Upwind scheme for the cell-centered TPFA scheme +//! Upwind scheme for the cell-centered tpfa scheme template<class TypeTag> class UpwindSchemeImplementation<TypeTag, DiscretizationMethods::CCTpfa> { @@ -185,7 +186,7 @@ public: } }; -//! Specialization for cell-centered MPFA schemes +//! Upwind scheme for cell-centered mpfa schemes template<class TypeTag> class UpwindSchemeImplementation<TypeTag, DiscretizationMethods::CCMpfa> : public UpwindSchemeImplementation<TypeTag, DiscretizationMethods::CCTpfa> {}; diff --git a/dumux/discretization/volumevariables.hh b/dumux/discretization/volumevariables.hh index 304740e6f483dd9f629a141db9cab1ae4e5d68aa..b6e5056a1f7c84303e7c6b455d26ceb62e4dc110 100644 --- a/dumux/discretization/volumevariables.hh +++ b/dumux/discretization/volumevariables.hh @@ -18,6 +18,7 @@ *****************************************************************************/ /*! * \file + * \ingroup PorousMediumFlow * \brief Base class for the model specific class which provides * access to all volume averaged quantities. */