diff --git a/doc/doxygen/DoxygenDumuxLayout.xml b/doc/doxygen/DoxygenDumuxLayout.xml index 3cfe34c877d9e8546d0bb6917fc5d309eb2dbb60..e9d42835a406e55851c77235a7c7022907aacfd5 100644 --- a/doc/doxygen/DoxygenDumuxLayout.xml +++ b/doc/doxygen/DoxygenDumuxLayout.xml @@ -131,7 +131,7 @@ <variables title=""/> </memberdef> <includegraph visible="yes"/> - <includedbygraph visible="yes"/> + <includedbygraph visible="no"/> <authorsection/> </file> diff --git a/doc/doxygen/Doxylocal b/doc/doxygen/Doxylocal index 3dfd4bec026c05ab508b8b2f748c859b3f2428ca..7c2abc2116908d639910132f928d1620c1858b5f 100644 --- a/doc/doxygen/Doxylocal +++ b/doc/doxygen/Doxylocal @@ -14,8 +14,8 @@ INPUT += @srcdir@/mainpage.txt \ @srcdir@/modules.txt \ @top_srcdir@/dumux \ @top_srcdir@/test \ - @srcdir@/extradoc/parameterlist.txt \ - @srcdir@/extradoc/featurelist.txt + # @srcdir@/extradoc/parameterlist.txt \ # we currently do not have a parameter list. Should be back for 3.1 + # @srcdir@/extradoc/featurelist.txt # we currently do not have a feature list. Should be back for 3.1 EXAMPLE_PATH += @srcdir@/extradoc diff --git a/doc/doxygen/customdoxygendumux.css b/doc/doxygen/customdoxygendumux.css index df09ae1acf454c85e2d3b535801af27e11559061..ad8a591e2929be995fb0689ff12d8098e583e75a 100644 --- a/doc/doxygen/customdoxygendumux.css +++ b/doc/doxygen/customdoxygendumux.css @@ -2,6 +2,7 @@ body, table, div, p, dl { font: 400 14px/22px Roboto,sans-serif; + min-width: 500px } p.reference, p.definition { diff --git a/doc/doxygen/modules.txt b/doc/doxygen/modules.txt index eedaf67e9ab17dbbb5a06789b136a1fbf6390d5f..151586de80ec7b7ddcf29c770ae04b751d706aec 100644 --- a/doc/doxygen/modules.txt +++ b/doc/doxygen/modules.txt @@ -375,7 +375,7 @@ */ /* ***************** Flux ******************/ /*! - * \defgroup Flux + * \defgroup Flux Flux * \brief All flux related things available in DuMu<sup>x</sup> */ /* ***************** Material ******************/ diff --git a/doc/doxygen/sanitizelinks.sh b/doc/doxygen/sanitizelinks.sh index 3c07e38642e5d47dcfa12633fecafd0990b9284b..76a4079b17e28991a5845e49c5cb76f57ee32790 100755 --- a/doc/doxygen/sanitizelinks.sh +++ b/doc/doxygen/sanitizelinks.sh @@ -2,3 +2,6 @@ if [ -e html/modules.html ]; then sed -i 's/\(init_search();\)/\1 toggleLevel(1);/' html/modules.html fi +if [ -e html/modules.HTML ]; then + sed -i 's/\(init_search();\)/\1 toggleLevel(1);/' html/modules.HTML +fi diff --git a/doc/handbook/dumux-handbook.bib b/doc/handbook/dumux-handbook.bib index 4e61894b70634f753934f53935d74bc45eec32a1..4ea2fe68427f72273c3fd379acb35dd5807b71fd 100644 --- a/doc/handbook/dumux-handbook.bib +++ b/doc/handbook/dumux-handbook.bib @@ -464,6 +464,29 @@ url={https://dx.doi.org/10.1021/jp021943g} } +@article{witherspoon1965, +author = {Witherspoon, P. A. and Saraf, D. N.}, +title = {{Diffusion of Methane, Ethane, Propane, and n-Butane in Water from 25 to 43°}}, +journal = {The Journal of Physical Chemistry}, +volume = {69}, +number = {11}, +pages = {3752--3755}, +year = {1965}, +doi = {10.1021/j100895a017}, +url = {https://doi.org/10.1021/j100895a017}, +} + +@article{han2003, + title={{Description of fluid flow around a wellbore with stress-dependent porosity and permeability}}, + author={Han, Gang and Dusseault, Maurice B}, + journal={Journal of Petroleum science and engineering}, + volume={40}, + number={1-2}, + pages={1--16}, + year={2003}, + publisher={Elsevier} +} + @INPROCEEDINGS{A3:aavatsmark:1994, author = {Aavatsmark, I. and Barkve, T. and B{\o}e, {\O}. and Mannseth, T.}, title = {{Discretization on non-orthogonal, curvilinear grids for multiphase @@ -1715,6 +1738,19 @@ url={http://dx.doi.org/10.1007/s11242-015-0599-1} url = {https://doi.org/10.2514/1.36541} } +@Article{launder1974a, +author = {B.E. Launder and B.I. Sharma}, +title = {{Application of the energy-dissipation model of turbulence to the calculation of flow near a spinning disc}}, +journal = {Letters in Heat and Mass Transfer}, +volume = {1}, +number = {2}, +pages = {131 -- 137}, +year = {1974}, +issn = {0094--4548}, +doi = {https://doi.org/10.1016/0094-4548(74)90150-7}, +url = {http://www.sciencedirect.com/science/article/pii/0094454874901507}, +} + @Book{Versteeg2009a, title = {{An Introduction to Computational Fluid Dynamics}}, publisher = {Pearson Education}, diff --git a/dumux/discretization/cellcentered/elementsolution.hh b/dumux/discretization/cellcentered/elementsolution.hh index 47dc7b7e026da179ceb486f56e5bb09233e1d410..892ffe0c818009ba12356836fbfb9365a8734212 100644 --- a/dumux/discretization/cellcentered/elementsolution.hh +++ b/dumux/discretization/cellcentered/elementsolution.hh @@ -18,7 +18,7 @@ *****************************************************************************/ /*! * \file - * \ingroup CCDiscretization + * \ingroup Discretization * \brief The local element solution class for cell-centered methods */ #ifndef DUMUX_CC_ELEMENT_SOLUTION_HH @@ -32,7 +32,7 @@ namespace Dumux { /*! - * \ingroup CCDiscretization + * \ingroup Discretization * \brief The element solution vector */ template<class FVElementGeometry, class PV> @@ -106,7 +106,7 @@ private: }; /*! - * \ingroup CCDiscretization + * \ingroup Discretization * \brief Make an element solution for cell-centered schemes */ template<class Element, class SolutionVector, class FVGridGeometry> @@ -122,7 +122,7 @@ auto elementSolution(const Element& element, const SolutionVector& sol, const FV } /*! -* \ingroup CCDiscretization +* \ingroup Discretization * \brief Make an element solution for cell-centered schemes */ template<class Element, class ElementVolumeVariables, class FVElementGeometry> @@ -136,7 +136,7 @@ auto elementSolution(const Element& element, const ElementVolumeVariables& elemV } /*! - * \ingroup CCDiscretization + * \ingroup Discretization * \brief Make an element solution for cell-centered schemes * \note This is e.g. used to contruct an element solution at Dirichlet boundaries */ @@ -150,7 +150,7 @@ auto elementSolution(PrimaryVariables&& priVars) } /*! - * \ingroup CCDiscretization + * \ingroup Discretization * \brief Make an element solution for cell-centered schemes * \note This is e.g. used to contruct an element solution at Dirichlet boundaries */ diff --git a/dumux/discretization/cellcentered/mpfa/elementvolumevariables.hh b/dumux/discretization/cellcentered/mpfa/elementvolumevariables.hh index 483bcc0eccc25f7b4644a6a6c8ff8b672b1297cc..f1fe3f285220bd08555941e4f1e88ea44a437329 100644 --- a/dumux/discretization/cellcentered/mpfa/elementvolumevariables.hh +++ b/dumux/discretization/cellcentered/mpfa/elementvolumevariables.hh @@ -73,6 +73,7 @@ namespace CCMpfa { * \param volVars The container where the volume variables are stored * \param volVarIndices The container where the volume variable indices are stored * \param problem The problem containing the Dirichlet boundary conditions + * \param element The element to which the finite volume geometry is bound * \param fvGeometry The element finite volume geometry * \param nodalIndexSet The dual grid index set around a node */ diff --git a/dumux/discretization/staggered/elementsolution.hh b/dumux/discretization/staggered/elementsolution.hh index 846c94adcd15c4cd1f69512b9e568223a1b2aeb4..140c38b24ebd734c6af2424c2b2029e838c04403 100644 --- a/dumux/discretization/staggered/elementsolution.hh +++ b/dumux/discretization/staggered/elementsolution.hh @@ -18,7 +18,7 @@ *****************************************************************************/ /*! * \file - * \ingroup StaggeredDiscretization + * \ingroup Discretization * \brief The local element solution class for staggered methods */ #ifndef DUMUX_STAGGERED_ELEMENT_SOLUTION_HH @@ -31,7 +31,7 @@ namespace Dumux { /*! - * \ingroup StaggeredDiscretization + * \ingroup Discretization * \brief Helper function to create a PrimaryVariables object from CellCenterPrimaryVariables * \tparam PrimaryVariables The type of the desired primary variables object * \tparam CellCenterPrimaryVariables The type of the cell center (input) primary variables object @@ -54,7 +54,7 @@ template<class PrimaryVariables> using StaggeredElementSolution = Dune::BlockVector<PrimaryVariables>; /*! - * \ingroup StaggeredDiscretization + * \ingroup Discretization * \brief Make an element solution for staggered schemes * \note This is e.g. used to construct an element solution at Dirichlet boundaries */ @@ -67,7 +67,7 @@ auto elementSolution(PrimaryVariables&& priVars) } /*! - * \ingroup StaggeredDiscretization + * \ingroup Discretization * \brief Helper function to create an elementSolution from cell center primary variables * \tparam PrimaryVariables The type of the desired primary variables object * \tparam CellCenterPrimaryVariables The type of the cell center (input) primary variables object diff --git a/dumux/freeflow/navierstokes/iofields.hh b/dumux/freeflow/navierstokes/iofields.hh index b38b8f5a07b566ad3faf9dfd0ffb3f7c0d1b0d38..e50a4199694e2f1d835edb82b0dbcb1926138bdf 100644 --- a/dumux/freeflow/navierstokes/iofields.hh +++ b/dumux/freeflow/navierstokes/iofields.hh @@ -37,7 +37,6 @@ namespace Dumux { /*! - * \ingroup InputOutput * \ingroup NavierStokesModel * \brief helper function to determine the names of cell-centered primary variables of a model with staggered grid discretization * \note use this as input for the load solution function @@ -58,7 +57,6 @@ std::function<std::string(int,int)> createCellCenterPVNameFunction(const std::st } /*! - * \ingroup InputOutput * \ingroup NavierStokesModel * \brief helper function to determine the names of primary variables on the cell faces of a model with staggered grid discretization * \note use this as input for the load solution function diff --git a/dumux/freeflow/rans/twoeq/kepsilon/model.hh b/dumux/freeflow/rans/twoeq/kepsilon/model.hh index bd94bd8329dc24f906cda1d91f20355d362d489d..2eabe5fed4cd7e8fbcff4b4b9e9a916c4f14b57b 100644 --- a/dumux/freeflow/rans/twoeq/kepsilon/model.hh +++ b/dumux/freeflow/rans/twoeq/kepsilon/model.hh @@ -26,7 +26,8 @@ * * The k-epsilon models calculate the eddy viscosity with two additional PDEs, * one for the turbulent kinetic energy (k) and for the dissipation (\f$ \varepsilon \f$). - * The model uses the one proposed by Launder and Sharma \cite{Launder1994a}. + * The model uses the one proposed by Launder and Sharma \cite launder1974a + * https://doi.org/10.1016/0094-4548(74)90150-7. * * The turbulent kinetic energy balance is: * \f[ diff --git a/dumux/linear/seqsolverbackend.hh b/dumux/linear/seqsolverbackend.hh index fa408d4ff054efa5fd6cf3e31feee0bacb8d23a7..70bdd880c3ed022d2a007d72de7a97fe57d13c35 100644 --- a/dumux/linear/seqsolverbackend.hh +++ b/dumux/linear/seqsolverbackend.hh @@ -831,7 +831,7 @@ private: */ // \{ -/* +/*! * A simple ilu0 block diagonal preconditioner */ template<class M, class X, class Y, int blockLevel = 2> @@ -875,17 +875,8 @@ public: static_assert(blockLevel >= 2, "Only makes sense for MultiTypeBlockMatrix!"); } - /*! - \brief Prepare the preconditioner. - - \copydoc Dune::Preconditioner::pre(X&,Y&) - */ void pre (X& v, Y& d) final {} - /*! - * \brief Apply the preconditoner. - * \copydoc Dune::Preconditioner::apply(X&,const Y&) - */ void apply (X& v, const Y& d) final { using namespace Dune::Hybrid; @@ -895,10 +886,6 @@ public: }); } - /*! - * \brief Clean up. - * \copydoc Dune::Preconditioner::post(X&) - */ void post (X&) final {} //! Category of the preconditioner (see SolverCategory::Category) @@ -1006,9 +993,20 @@ public: } /*! - \brief Prepare the preconditioner. - - \copydoc Dune::Preconditioner::pre(X&,Y&) + * \brief Prepare the preconditioner. + * + * A solver solves a linear operator equation A(v)=d by applying + * one or several steps of the preconditioner. The method pre() + * is called before the first apply operation. + * d and v are right hand side and solution vector of the linear + * system respectively. It may. e.g., scale the system, allocate memory or + * compute a (I)LU decomposition. + * Note: The ILU decomposition could also be computed in the constructor + * or with a separate method of the derived method if several + * linear systems with the same matrix are to be solved. + * + * \param v The left hand side of the equation. + * \param d The right hand side of the equation. */ void pre (X& v, Y& d) final { @@ -1020,8 +1018,15 @@ public: } /*! - * \brief Apply the preconditoner. - * \copydoc Dune::Preconditioner::apply(X&,const Y&) + * \brief Apply one step of the preconditioner to the system A(v)=d. + * + * On entry v=0 and d=b-A(x) (although this might not be + * computed in that way. On exit v contains the update, i.e + * one step computes \f$ v = M^{-1} d \f$ where \f$ M \f$ is the + * approximate inverse of the operator \f$ A \f$ characterizing + * the preconditioner. + * \param v The update to be computed + * \param d The current defect. */ void apply (X& v, const Y& d) final { @@ -1034,7 +1039,12 @@ public: /*! * \brief Clean up. - * \copydoc Dune::Preconditioner::post(X&) + * + * This method is called after the last apply call for the + * linear system to be solved. Memory may be deallocated safely + * here. v is the solution of the linear equation. + * + * \param v The right hand side of the equation. */ void post (X& v) final { diff --git a/dumux/material/binarycoefficients/h2o_ch4.hh b/dumux/material/binarycoefficients/h2o_ch4.hh index c90f35ad8a6d5ac833fba5fd2814b97c45f50683..c7c5d63803df2cc26133d13ca21e68d6bcef3c0d 100644 --- a/dumux/material/binarycoefficients/h2o_ch4.hh +++ b/dumux/material/binarycoefficients/h2o_ch4.hh @@ -96,8 +96,8 @@ public: * linear dependency on temperature. We thus simply scale the * experimentally obtained diffusion coefficient of Ferrell and * Himmelblau by the temperature.<br> - * This function use an interpolation of the data by \cite{Whitherspoon1965} - * \url{http://dx.doi.org/10.1021/j100895a017} + * This function use an interpolation of the data by \cite witherspoon1965 + * http://dx.doi.org/10.1021/j100895a017 */ template <class Scalar> static Scalar liquidDiffCoeff(Scalar temperature, Scalar pressure) diff --git a/dumux/material/fluidmatrixinteractions/mp/mplinearmaterial.hh b/dumux/material/fluidmatrixinteractions/mp/mplinearmaterial.hh index 049d7b57bafa06fde5adbbb213540ed19a0b328d..0a75f5149e4ca5477601b6921f6c5e6ddf93a185 100644 --- a/dumux/material/fluidmatrixinteractions/mp/mplinearmaterial.hh +++ b/dumux/material/fluidmatrixinteractions/mp/mplinearmaterial.hh @@ -61,7 +61,7 @@ public: * \param values Container for the return values * \param params Array of Parameters * \param state The fluid state - * \param wPhaseIdx the phase index of the wetting phase + * \param wPhaseIdx The phase index of the wetting phase */ template <class ContainerT, class FluidState> static void capillaryPressures(ContainerT &values, @@ -82,6 +82,7 @@ public: * \param values Container for the return values * \param params Array of Parameters * \param state The fluid state + * \param wPhaseIdx the phase index of the wetting phase */ template <class ContainerT, class FluidState> static void relativePermeabilities(ContainerT &values, diff --git a/dumux/material/fluidmatrixinteractions/porositydeformation.hh b/dumux/material/fluidmatrixinteractions/porositydeformation.hh index c40c61d3dec854e953041b0f9eefde1cff1be16a..3e0001a0721217739881a7f3b5779ca16a36f8d5 100644 --- a/dumux/material/fluidmatrixinteractions/porositydeformation.hh +++ b/dumux/material/fluidmatrixinteractions/porositydeformation.hh @@ -44,7 +44,6 @@ public: * the displacements in the different grid directions are stored * in the first entries of the primary variable vector. * - * * \param fvGridGeometry The finite volume grid geometry * \param element The finite element * \param elemSol The element solution @@ -53,10 +52,10 @@ public: * \param minPoro A minimum porosity value * \param maxPoro A maximum porosity value * - * \note Han and Dusseault (2003, doi 10.1016/S0920-4105(03)00047-0) - * provide a derivation for \f$\text{d} \phi = -(1 - \phi ) \text{d} \epsilon_v\f$. - * Here, \f$\epsilon_v\f$ is equal to \f$text{div} \mathbf{u}\f$. - * By using an initial porosity \f$\phi_0\f$ and assuming \epsilon_{v, 0} = 0, + * \note \cite han2003 ( https://doi.org/10.1016/S0920-4105(03)00047-0 ) + * provide a derivation for \f$\text{d} \phi = -(1 - \phi ) \text{d} \epsilon_v \f$. + * Here, \f$\epsilon_v\f$ is equal to \f$\text{div} \mathbf{u}\f$. + * By using an initial porosity \f$\phi_0\f$ and assuming \f$ \epsilon_{v, 0} = 0 \f$, * one obtains \f$\phi = \frac{\phi_0 - \text{div} \mathbf{u}}{1 - \text{div} \mathbf{u}}\f$, * which is the formulation for the rock mechanics sign convention. Here we are * using the continuum mechanics sign convention, thus, the final formula reads: diff --git a/dumux/porousmediumflow/2p/sequential/diffusion/mpfa/lmethod/3dtransmissibilitycalculator.hh b/dumux/porousmediumflow/2p/sequential/diffusion/mpfa/lmethod/3dtransmissibilitycalculator.hh index 09f7a680db0a3fd983db9294ad7039d254c141c2..0272454a15e2724cc649ec42f70d148db087ae44 100644 --- a/dumux/porousmediumflow/2p/sequential/diffusion/mpfa/lmethod/3dtransmissibilitycalculator.hh +++ b/dumux/porousmediumflow/2p/sequential/diffusion/mpfa/lmethod/3dtransmissibilitycalculator.hh @@ -91,7 +91,6 @@ public: int idx1, int idx2, int idx3, int idx4, int idx5, int idx6, Dune::FieldVector<bool, 4> &useCases); - int transmissibilityTPFA(Dune::FieldMatrix<Scalar,dim,2*dim-dim+1>& transmissibility, InteractionVolume& interactionVolume, std::vector<DimVector >& lambda, @@ -120,7 +119,6 @@ public: std::vector<DimVector >& lambda, int idx1, int idx2, int idx3, int idx6); - /*! * \brief Constructs a FvMpfaL3dTransmissibilityCalculator object * \param problem A problem class object diff --git a/dumux/porousmediumflow/2p2c/sequential/fvpressure.hh b/dumux/porousmediumflow/2p2c/sequential/fvpressure.hh index e8766b1a25aa6a4be03ad505b8ace5935340f6a4..7d9bf004a3390e86fe74683cc3d87ba6c5025489 100644 --- a/dumux/porousmediumflow/2p2c/sequential/fvpressure.hh +++ b/dumux/porousmediumflow/2p2c/sequential/fvpressure.hh @@ -33,21 +33,22 @@ #include <dumux/io/vtkmultiwriter.hh> #include <dumux/porousmediumflow/2p2c/sequential/properties.hh> -/** - * @file - * @brief Finite Volume 2p2c Pressure Model +/*! + * \file + * \brief Finite Volume 2p2c Pressure Model */ - namespace Dumux { -//! The finite volume model for the solution of the compositional pressure equation -/*! \ingroup multiphase - * Provides a Finite Volume implementation for the pressure equation of a compressible - * system with two components. An IMPES-like method is used for the sequential - * solution of the problem. Diffusion is neglected, capillarity can be regarded. - * Isothermal conditions and local thermodynamic - * equilibrium are assumed. Gravity is included. - * \f[ +/*! + * \ingroup multiphase + * \brief The finite volume model for the solution of the compositional pressure equation + * + * Provides a Finite Volume implementation for the pressure equation of a compressible + * system with two components. An IMPES-like method is used for the sequential + * solution of the problem. Diffusion is neglected, capillarity can be regarded. + * Isothermal conditions and local thermodynamic + * equilibrium are assumed. Gravity is included. + * \f[ c_{total}\frac{\partial p}{\partial t} + \sum_{\kappa} \frac{\partial v_{total}}{\partial C^{\kappa}} \nabla \cdot \left( \sum_{\alpha} X^{\kappa}_{\alpha} \varrho_{\alpha} \bf{v}_{\alpha}\right) = \sum_{\kappa} \frac{\partial v_{total}}{\partial C^{\kappa}} q^{\kappa}, @@ -66,7 +67,6 @@ namespace Dumux * whereas this class provides the actual entries for the matrix and RHS vector. * The partial derivatives of the actual fluid volume \f$ v_{total} \f$ are gained by using a secant method. * - * \tparam TypeTag The Type Tag */ template<class TypeTag> class FVPressure2P2C : public FVPressureCompositional<TypeTag> @@ -104,11 +104,13 @@ template<class TypeTag> class FVPressure2P2C wCompIdx = Indices::wPhaseIdx, nCompIdx = Indices::nPhaseIdx, contiWEqIdx = Indices::contiWEqIdx, contiNEqIdx = Indices::contiNEqIdx }; - //! Indices of matrix and rhs entries - /** During the assembling of the global system of equations get-functions are called + + /*! + * \brief Indices of matrix and rhs entries + * During the assembling of the global system of equations get-functions are called * (getSource(), getFlux(), etc.), which return global matrix or right hand side entries * in a vector. These can be accessed using following indices: - */ + */ enum { rhs = 1,//!<index for the right hand side entry @@ -143,20 +145,20 @@ protected: } public: - void getSource(EntryType&, const Element&, const CellData&, const bool); - void getStorage(EntryType&, const Element&, const CellData&, const bool); + void getSource(EntryType& sourceEntry, const Element& elementI, const CellData& cellDataI, const bool first); + + void getStorage(EntryType& storageEntry, const Element& elementI, const CellData& cellDataI, const bool first); - void getFlux(EntryType&, const Intersection&, const CellData&, const bool); + void getFlux(EntryType& entries, const Intersection& intersection, const CellData& cellDataI, const bool first); - void getFluxOnBoundary(EntryType&, - const Intersection&, const CellData&, const bool); + void getFluxOnBoundary(EntryType& entries, const Intersection& intersection, const CellData& cellDataI, const bool first); //updates secondary variables for one cell and stores in the variables object void updateMaterialLawsInElement(const Element& elementI, bool postTimeStep); - //! Constructs a FVPressure2P2C object - /** + /*! + * \brief Constructs a FVPressure2P2C object * \param problem a problem class object */ FVPressure2P2C(Problem& problem) : FVPressureCompositional<TypeTag>(problem), @@ -196,9 +198,10 @@ private: { return *static_cast<const Implementation *>(this);} }; - -//! Assembles the source term -/** for first == true, a source is implemented as in FVPressure2P. +/*! + * \brief Assembles the source term + * + * for first == true, a source is implemented as in FVPressure2P. * for first == false, the source is translated into a volumentric source term: * \f[ V_i \sum_{\kappa} \frac{\partial v_{t}}{\partial C^{\kappa}} q^{\kappa}_i \f]. * \param sourceEntry The Matrix and RHS entries @@ -241,8 +244,10 @@ void FVPressure2P2C<TypeTag>::getSource(Dune::FieldVector<Scalar, 2>& sourceEntr return; } -//! Assembles the storage term -/** for first == true, there is no storage contribution. +/*! + * \brief Assembles the storage term + * + * for first == true, there is no storage contribution. * for first == false, the storage term comprises the compressibility (due to a change in * pressure from last timestep): * \f[ V_i c_{t,i} \frac{p^t_i - p^{t-\Delta t}_i}{\Delta t} \f] @@ -325,9 +330,10 @@ void FVPressure2P2C<TypeTag>::getStorage(Dune::FieldVector<Scalar, 2>& storageEn return; } - -//! Get flux at an interface between two cells -/*! for first == true, the flux is calculated in traditional fractional-flow forn as in FVPressure2P. +/*! + * \brief Get flux at an interface between two cells + * + * for first == true, the flux is calculated in traditional fractional-flow forn as in FVPressure2P. * for first == false, the flux thorugh \f$ \gamma \f$ is calculated via a volume balance formulation * \f[ - A_{\gamma} \mathbf{n}^T_{\gamma} \mathbf{K} \sum_{\alpha} \varrho_{\alpha} \lambda_{\alpha} \mathbf{d}_{ij} \left( \frac{p_{\alpha,j}^t - p^{t}_{\alpha,i}}{\Delta x} + \varrho_{\alpha} \mathbf{g}^T \mathbf{d}_{ij} \right) @@ -617,8 +623,10 @@ void FVPressure2P2C<TypeTag>::getFlux(Dune::FieldVector<Scalar, 2>& entries, } // end !first } -//! Get flux on Boundary -/** for first == true, the flux is calculated in traditional fractional-flow forn as in FVPressure2P. +/*! + * \brief Get flux on Boundary + * + * for first == true, the flux is calculated in traditional fractional-flow forn as in FVPressure2P. * for first == false, the flux thorugh \f$ \gamma \f$ is calculated via a volume balance formulation * \f[ - A_{\gamma} \mathbf{n}^T_{\gamma} \mathbf{K} \sum_{\alpha} \varrho_{\alpha} \lambda_{\alpha} \mathbf{d}_{ij} \left( \frac{p_{\alpha,j}^t - p^{t}_{\alpha,i}}{\Delta x} + \varrho_{\alpha} \mathbf{g}^T \mathbf{d}_{ij} \right) @@ -882,8 +890,10 @@ void FVPressure2P2C<TypeTag>::getFluxOnBoundary(Dune::FieldVector<Scalar, 2>& en return; } -//! updates secondary variables of one cell -/*! For each element, the secondary variables are updated according to the +/*! + * \brief Updates secondary variables of one cell + * + * For each element, the secondary variables are updated according to the * primary variables. In case the method is called after the Transport, * i.e. at the end / post time step, CellData2p2c.reset() resets the volume * derivatives for the next time step. diff --git a/dumux/porousmediumflow/2p2c/sequential/fvpressuremultiphysics.hh b/dumux/porousmediumflow/2p2c/sequential/fvpressuremultiphysics.hh index 71c7e401e71edd69cba1add277ac68018aefc1f5..272a0323b0514c7fffdb7be91e2d6c4279912da1 100644 --- a/dumux/porousmediumflow/2p2c/sequential/fvpressuremultiphysics.hh +++ b/dumux/porousmediumflow/2p2c/sequential/fvpressuremultiphysics.hh @@ -120,14 +120,16 @@ public: //function which assembles the system of equations to be solved void assemble(bool first); - void get1pSource(EntryType&, const Element&, const CellData&); + void get1pSource(EntryType& sourceEntry, const Element& elementI, const CellData& cellDataI); - void get1pStorage(EntryType&, const Element&, CellData&); + void get1pStorage(EntryType& storageEntry, const Element& elementI, CellData& cellDataI); - void get1pFlux(EntryType&, const Intersection&, const CellData&); + void get1pFlux(EntryType& entries, const Intersection& intersection, + const CellData& cellDataI); - void get1pFluxOnBoundary(EntryType&, - const Intersection&, const CellData&); + void get1pFluxOnBoundary(EntryType& entries, + const Intersection& intersection, + const CellData& cellDataI); //initialize multi-physics-specific pressure model constituents void initialize(bool solveTwice = false) @@ -205,8 +207,8 @@ public: return; } - //! Constructs a FVPressure2P2CPC object - /** + /*! + * \brief Constructs a FVPressure2P2CPC object * \param problem a problem class object */ FVPressure2P2CMultiPhysics(Problem& problem) : FVPressure2P2C<TypeTag>(problem), @@ -226,8 +228,8 @@ protected: static constexpr int pressureType = GET_PROP_VALUE(TypeTag, PressureFormulation); Dune::Timer timer_; //!< A timer for the time spent on the multiphysics framework. - //! Indices of matrix and rhs entries - /** + /*! + * \brief Indices of matrix and rhs entries * During the assembling of the global system of equations get-functions are called (getSource(), * getFlux(), etc.), which return global matrix or right hand side entries in a vector. * These can be accessed using following indices: @@ -240,8 +242,10 @@ protected: }; }; -//! function which assembles the system of equations to be solved -/*! for first == true, this function assembles the matrix and right hand side for +/*! + * \brief function which assembles the system of equations to be solved + * + * for first == true, this function assembles the matrix and right hand side for * the solution of the pressure field in the same way as in the class FVPressure2P. * for first == false, the approach is changed to \f[-\frac{\partial V}{\partial p} * \frac{\partial p}{\partial t}+\sum_{\kappa}\frac{\partial V}{\partial m^{\kappa}}\nabla\cdot @@ -346,8 +350,10 @@ void FVPressure2P2CMultiPhysics<TypeTag>::assemble(bool first) return; } -//! Assembles the source term -/** The source is translated into a volumentric source term: +/*! + * \brief Assembles the source term + * + * The source is translated into a volumentric source term: * \f[ V_i \sum_{\kappa} \frac{1}{\varrho} q^{\kappa}_i \; , \f] * because under singlephase conditions * \f[ \frac{\partial v_{t}}{\partial C^{\kappa}} \approx \frac{1}{\varrho} \f]. @@ -375,8 +381,10 @@ void FVPressure2P2CMultiPhysics<TypeTag>::get1pSource(Dune::FieldVector<Scalar, return; } -//! Assembles the storage term for a 1p cell in a multiphysics framework -/** The storage term comprises the (single-phase) compressibility (due to a change in +/*! + * \brief Assembles the storage term for a 1p cell in a multiphysics framework + * + * The storage term comprises the (single-phase) compressibility (due to a change in * pressure from last timestep): * \f[ V_i c_{i} \frac{p^t_i - p^{t-\Delta t}_i}{\Delta t} \f] * and the damped error introduced by the incorrect transport of the last timestep: @@ -761,15 +769,16 @@ void FVPressure2P2CMultiPhysics<TypeTag>::get1pFluxOnBoundary(Dune::FieldVector< } -//! constitutive functions are updated once if new concentrations are calculated and stored in the variables container /*! + * \brief constitutive functions are updated once if new concentrations are calculated and stored in the variables container + * * In contrast to the standard sequential 2p2c model ( FVPressure2P2C<TypeTag>::updateMaterialLaws() ), * this method also holds routines to adapt the subdomain. The subdomain indicates weather we are in 1p domain (value = 1) * or in the two phase subdomain (value = 2). * Note that the type of flash, i.e. the type of FluidState (FS), present in each cell does not have to * coincide with the subdomain. If a cell will be simple and was complex, a complex FS is available, so next time step * will use this complex FS, but updateMaterialLaw afterwards will finally transform that to simple FS. - * \param postTimeStep Flag indicating method is called from Problem::postTimeStep() + * \param postTimeStep Flag indicating method is called from Problem::postTimeStep() */ template<class TypeTag> void FVPressure2P2CMultiPhysics<TypeTag>::updateMaterialLaws(bool postTimeStep) @@ -887,8 +896,10 @@ void FVPressure2P2CMultiPhysics<TypeTag>::updateMaterialLaws(bool postTimeStep) return; } -//! updates secondary variables of one single phase cell -/*! For each element, the secondary variables are updated according to the +/*! + * \brief updates secondary variables of one single phase cell + * + * For each element, the secondary variables are updated according to the * primary variables. Only a simple flash calulation has to be carried out, * as phase distribution is already known: single-phase. * \param elementI The element diff --git a/dumux/porousmediumflow/2p2c/sequential/fvtransport.hh b/dumux/porousmediumflow/2p2c/sequential/fvtransport.hh index c8186435949c486033c1e3c94becbb32c1891b8c..a5742763e84d2ad54d0ffb924f2b6a97c6f98f2c 100644 --- a/dumux/porousmediumflow/2p2c/sequential/fvtransport.hh +++ b/dumux/porousmediumflow/2p2c/sequential/fvtransport.hh @@ -30,15 +30,16 @@ #include <dumux/common/math.hh> #include <dumux/linear/vectorexchange.hh> -/** - * @file - * @brief Finite Volume discretization of the component transport equation +/*! + * \file + * \brief Finite Volume discretization of the component transport equation */ - namespace Dumux { -//! Compositional transport step in a Finite Volume discretization -/*! \ingroup multiphase +/*! + * \ingroup Sequential + * \brief Compositional transport step in a Finite Volume discretization + * * The finite volume model for the solution of the transport equation for compositional * two-phase flow. * \f[ @@ -52,7 +53,6 @@ namespace Dumux * Corresponding functions (<tt>getFlux()</tt> and <tt>getFluxOnBoundary()</tt>) are provided, * internal sources are directly treated. * - * * \tparam TypeTag The Type Tag */ template<class TypeTag> @@ -134,17 +134,21 @@ public: void updateConcentrations(TransportSolutionType& updateVector, Scalar dt); // Function which calculates the flux update - void getFlux(ComponentVector&, EntryType&, - const Intersection&, CellData&); + void getFlux(ComponentVector& fluxEntries, EntryType& timestepFlux, + const Intersection& intersection, CellData& cellDataI); // Function which calculates the boundary flux update - void getFluxOnBoundary(ComponentVector&, EntryType&, - const Intersection&, const CellData&); + void getFluxOnBoundary(ComponentVector& fluxEntries, EntryType& timestepFlux, + const Intersection& intersection, const CellData& cellDataI); + + void evalBoundary(GlobalPosition globalPosFace, + const Intersection& intersection, + FluidState& BCfluidState, + PhaseVector& pressBound); - void evalBoundary(GlobalPosition,const Intersection&,FluidState &, PhaseVector &); - //! Set the initial values before the first pressure equation /*! + * \brief Set the initial values before the first pressure equation * This method is called before first pressure equation is solved from IMPET. */ void initialize() @@ -159,8 +163,10 @@ public: } } - //! \brief Write transport variables into the output files - /* \param writer applied VTK-writer */ + /*! + * \brief Write transport variables into the output files + * \param writer applied VTK-writer + */ template<class MultiWriter> void addOutputVtkFields(MultiWriter &writer) { @@ -197,10 +203,11 @@ public: /*! \name Access functions for protected variables */ //@{ - //! Return the vector of the transported quantity - /*! For an immiscible IMPES scheme, this is the saturation. For compositional simulations, however, - * the total concentration of all components is transported. - * @param transportedQuantity Vector of both transported components + /*! + * \brief Return the vector of the transported quantity + * For an immiscible IMPES scheme, this is the saturation. For compositional simulations, however, + * the total concentration of all components is transported. + * \param transportedQuantity Vector of both transported components */ void getTransportedQuantity(TransportSolutionType& transportedQuantity) { @@ -214,11 +221,12 @@ public: /*! \name Access functions for protected variables */ //@{ - //! Return the the total concentration stored in the transport vector - /*! To get real cell values, do not acess this method, but rather + /*! + * \brief Return the the total concentration stored in the transport vector + * To get real cell values, do not acess this method, but rather * call the respective function in the cell data object. - * @param compIdx The index of the component - * @param eIdxGlobal The global index of the current cell. + * \param compIdx The index of the component + * \param eIdxGlobal The global index of the current cell. */ Scalar& totalConcentration(int compIdx, int eIdxGlobal) { @@ -229,9 +237,10 @@ public: {} - //! Function to control the abort of the transport-sub-time-stepping depending on a physical parameter range /*! - * @param entry Cell entries of the update vector + * \brief Function to control the abort of the transport-sub-time-stepping + * depending on a physical parameter range + * \param entry Cell entries of the update vector */ template<class DataEntry> bool inPhysicalRange(DataEntry& entry) @@ -254,8 +263,8 @@ public: } //@} - //! Constructs a FVTransport2P2C object /*! + * \brief Constructs a FVTransport2P2C object * Currently, the compositional transport scheme can not be applied with a global pressure / total velocity * formulation. * @@ -332,8 +341,9 @@ private: { return *static_cast<const Implementation *>(this); } }; -//! \brief Calculate the update vector and determine timestep size + /*! + * \brief Calculate the update vector and determine timestep size * This method calculates the update vector \f$ u \f$ of the discretized equation * \f[ C^{\kappa , new} = C^{\kappa , old} + u, @@ -345,8 +355,8 @@ private: * employing a CFL condition. * * \param t Current simulation time \f$\mathrm{[s]}\f$ - * \param[out] dt Time step size \f$\mathrm{[s]}\f$ - * \param[out] updateVec Update vector, or update estimate for secants, resp. Here in \f$\mathrm{[kg/m^3]}\f$ + * \param dt Time step size \f$\mathrm{[s]}\f$ + * \param updateVec Update vector, or update estimate for secants, resp. Here in \f$\mathrm{[kg/m^3]}\f$ * \param impet Flag that determines if it is a real impet step or an update estimate for volume derivatives */ template<class TypeTag> @@ -499,10 +509,11 @@ void FVTransport2P2C<TypeTag>::update(const Scalar t, Scalar& dt, Dune::dinfo << " Averageing done for " << averagedFaces_ << " faces. "<< std::endl; } } -/* Updates the transported quantity once an update is calculated. - * This method updates both, the internal transport solution vector and the entries in the cellData. - * \param updateVec Update vector, or update estimate for secants, resp. Here in \f$\mathrm{[kg/m^3]}\f$ +/*! + * \brief Updates the transported quantity once an update is calculated. * + * This method updates both, the internal transport solution vector and the entries in the cellData. + * \param updateVector Update vector, or update estimate for secants, resp. Here in \f$\mathrm{[kg/m^3]}\f$ */ template<class TypeTag> void FVTransport2P2C<TypeTag>::updateTransportedQuantity(TransportSolutionType& updateVector) @@ -513,10 +524,12 @@ void FVTransport2P2C<TypeTag>::updateTransportedQuantity(TransportSolutionType& updateConcentrations(updateVector, problem().timeManager().timeStepSize()); } -/* Updates the transported quantity once an update is calculated. - * This method updates both, the internal transport solution vector and the entries in the cellData. - * \param updateVec Update vector, or update estimate for secants, resp. Here in \f$\mathrm{[kg/m^3]}\f$ +/*! + * \brief Updates the transported quantity once an update is calculated. * + * This method updates both, the internal transport solution vector and the entries in the cellData. + * \param updateVector Update vector, or update estimate for secants, resp. Here in \f$\mathrm{[kg/m^3]}\f$ + * \param dt Time step size \f$\mathrm{[s]}\f$ */ template<class TypeTag> void FVTransport2P2C<TypeTag>::updateTransportedQuantity(TransportSolutionType& updateVector, Scalar dt) @@ -524,10 +537,12 @@ void FVTransport2P2C<TypeTag>::updateTransportedQuantity(TransportSolutionType& updateConcentrations(updateVector, dt); } -/* Updates the concentrations once an update is calculated. - * This method updates both, the internal transport solution vector and the entries in the cellData. - * \param updateVec Update vector, or update estimate for secants, resp. Here in \f$\mathrm{[kg/m^3]}\f$ +/*! + * \brief Updates the concentrations once an update is calculated. * + * This method updates both, the internal transport solution vector and the entries in the cellData. + * \param updateVector Update vector, or update estimate for secants, resp. Here in \f$\mathrm{[kg/m^3]}\f$ + * \param dt Time step size \f$\mathrm{[s]}\f$ */ template<class TypeTag> void FVTransport2P2C<TypeTag>::updateConcentrations(TransportSolutionType& updateVector, Scalar dt) @@ -544,8 +559,9 @@ void FVTransport2P2C<TypeTag>::updateConcentrations(TransportSolutionType& updat } } -//! Get flux at an interface between two cells -/** The flux through \f$ \gamma \f$ is calculated according to the underlying pressure field, +/*! + * \brief Get flux at an interface between two cells + * The flux through \f$ \gamma \f$ is calculated according to the underlying pressure field, * calculated by the pressure model. * \f[ - A_{\gamma} \mathbf{n}^T_{\gamma} \mathbf{K} \sum_{\alpha} \varrho_{\alpha} \lambda_{\alpha} \mathbf{d}_{ij} \left( \frac{p_{\alpha,j}^t - p^{t}_{\alpha,i}}{\Delta x} + \varrho_{\alpha} \mathbf{g}^T \mathbf{d}_{ij} \right) @@ -848,8 +864,11 @@ void FVTransport2P2C<TypeTag>::getFlux(ComponentVector& fluxEntries, return; } -//! Get flux on Boundary -/** The flux through \f$ \gamma \f$ is calculated according to the underlying pressure field, + +/*! + * \brief Get flux on Boundary + * + * The flux through \f$ \gamma \f$ is calculated according to the underlying pressure field, * calculated by the pressure model. * \f[ - A_{\gamma} \mathbf{n}^T_{\gamma} \mathbf{K} \mathbf{d}_{i-Boundary} \sum_{\alpha} \varrho_{\alpha} \lambda_{\alpha} \sum_{\kappa} X^{\kappa}_{\alpha} @@ -939,9 +958,9 @@ void FVTransport2P2C<TypeTag>::getFluxOnBoundary(ComponentVector& fluxEntries, // read boundary values this->evalBoundary(globalPosFace, - intersection, - BCfluidState, - pressBound); + intersection, + BCfluidState, + pressBound); // determine fluid properties at the boundary Scalar densityWBound = BCfluidState.density(wPhaseIdx); @@ -1069,8 +1088,10 @@ void FVTransport2P2C<TypeTag>::getFluxOnBoundary(ComponentVector& fluxEntries, return; } -//! evaluate the boundary conditions + /*! + * \brief Evaluate the boundary conditions + * * As the transport primary variable in this formulation is the total component * concentration, \f$ C^{\kappa} \f$ it seems natural that the boundary values * are also total concentrations. However, as for the initial conditions, it is diff --git a/test/porousmediumflow/1pnc/implicit/1p2c/nonisothermal/transientbc/problem.hh b/test/porousmediumflow/1pnc/implicit/1p2c/nonisothermal/transientbc/problem.hh index 0606c2bf86a7118ea591e52d39b591388962b93a..cb45b31911f25b6c15f67c85e3b1cc1b8a6b8ae5 100644 --- a/test/porousmediumflow/1pnc/implicit/1p2c/nonisothermal/transientbc/problem.hh +++ b/test/porousmediumflow/1pnc/implicit/1p2c/nonisothermal/transientbc/problem.hh @@ -255,8 +255,6 @@ public: * potentially solution dependent and requires some quantities that * are specific to the fully-implicit method. * - * \param values The neumann values for the conservation equations in units of - * \f$ [ \textnormal{unit of conserved quantity} / (m^2 \cdot s )] \f$ * \param element The finite element * \param fvGeometry The finite-volume geometry * \param elemVolVars All volume variables for the element @@ -267,9 +265,9 @@ public: * E.g. for the mass balance that would the mass flux in \f$ [ kg / (m^2 \cdot s)] \f$. */ NumEqVector neumann(const Element& element, - const FVElementGeometry& fvGeometry, - const ElementVolumeVariables& elemVolVars, - const SubControlVolumeFace& scvf) const + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const SubControlVolumeFace& scvf) const { return NumEqVector(0.0); }