From 7c95e212a4c5802c1a92e8b7826c97fe8633d950 Mon Sep 17 00:00:00 2001 From: Sina Ackermann <sina.ackermann@iws.uni-stuttgart.de> Date: Tue, 19 Dec 2017 14:21:55 +0100 Subject: [PATCH] [doc][2p] Adapt doxygen documentation for 2p model (implicit) --- .../porousmediumflow/2p/gridadaptindicator.hh | 20 +++-- dumux/porousmediumflow/2p/griddatatransfer.hh | 82 ++++++++++--------- .../2p/incompressiblelocalresidual.hh | 79 +++++++++++++++++- dumux/porousmediumflow/2p/indices.hh | 24 +++--- dumux/porousmediumflow/2p/model.hh | 7 +- dumux/porousmediumflow/2p/volumevariables.hh | 22 ++++- dumux/porousmediumflow/2p/vtkoutputfields.hh | 7 +- 7 files changed, 174 insertions(+), 67 deletions(-) diff --git a/dumux/porousmediumflow/2p/gridadaptindicator.hh b/dumux/porousmediumflow/2p/gridadaptindicator.hh index 5bab61ccc9..78c7ebb489 100644 --- a/dumux/porousmediumflow/2p/gridadaptindicator.hh +++ b/dumux/porousmediumflow/2p/gridadaptindicator.hh @@ -16,6 +16,12 @@ * 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 + * \ingroup TwoPModel + * \brief Class defining a standard, saturation dependent indicator for grid adaptation + */ + #ifndef DUMUX_TWOP_ADAPTION_INDICATOR_HH #define DUMUX_TWOP_ADAPTION_INDICATOR_HH @@ -24,10 +30,6 @@ #include <dumux/common/properties.hh> #include <dumux/discretization/evalsolution.hh> -/** - * \file - * \brief Class defining a standard, saturation dependent indicator for grid adaptation - */ namespace Dumux { @@ -50,7 +52,7 @@ class TwoPGridAdaptIndicator public: /*! \brief The Constructor * - * \param fvGridGeometry The finite volume grid geometry + * \param fvGridGeometry The finite volume grid geometry * * Note: refineBound_, coarsenBound_ & maxSaturationDelta_ are chosen * in a way such that the indicator returns false for all elements @@ -68,6 +70,7 @@ public: /*! * \brief Function to set the minimum allowed level. * + * \param minLevel The minimum level */ void setMinLevel(std::size_t minLevel) { @@ -77,6 +80,7 @@ public: /*! * \brief Function to set the maximum allowed level. * + *\param maxLevel The maximum level */ void setMaxLevel(std::size_t maxLevel) { @@ -86,6 +90,8 @@ public: /*! * \brief Function to set the minumum/maximum allowed levels. * + * \param minLevel The minimum level + * \param maxLevel The maximum level */ void setLevels(std::size_t minLevel, std::size_t maxLevel) { @@ -96,6 +102,10 @@ public: /*! * \brief Calculates the indicator used for refinement/coarsening for each grid cell. * + * \param sol The solution vector + * \param refineTol The refinement tolerance + * \param coarsenTol The coarsening tolerance + * * This standard two-phase indicator is based on the saturation gradient. */ void calculate(const SolutionVector& sol, diff --git a/dumux/porousmediumflow/2p/griddatatransfer.hh b/dumux/porousmediumflow/2p/griddatatransfer.hh index 1ca104eb8b..5992c2ad0b 100644 --- a/dumux/porousmediumflow/2p/griddatatransfer.hh +++ b/dumux/porousmediumflow/2p/griddatatransfer.hh @@ -16,6 +16,11 @@ * 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 + * \ingroup TwoPModel + * \brief Performs the transfer of data on a grid from before to after adaptation. + */ #ifndef DUMUX_TWOP_GRIDDATA_TRANSFER_HH #define DUMUX_TWOP_GRIDDATA_TRANSFER_HH @@ -27,6 +32,7 @@ namespace Dumux { /*! + * \ingroup TwoPModel * \brief Class performing the transfer of data on a grid from before to after adaptation. */ template<class TypeTag> @@ -60,7 +66,7 @@ class TwoPGridDataTransfer : public GridDataTransfer static constexpr int dimWorld = Grid::dimensionworld; static constexpr bool isBox = GET_PROP_VALUE(TypeTag, DiscretizationMethod) == DiscretizationMethods::Box; - //! export some indices + // export some indices enum { // index of saturation in primary variables saturationIdx = Indices::saturationIdx, @@ -77,12 +83,12 @@ class TwoPGridDataTransfer : public GridDataTransfer formulation = GET_PROP_VALUE(TypeTag, Formulation) }; - //! This won't work (mass conservative) for compressible fluids + // This won't work (mass conservative) for compressible fluids static_assert(!FluidSystem::isCompressible(wPhaseIdx) && !FluidSystem::isCompressible(nPhaseIdx), "This adaption helper is only mass conservative for incompressible fluids!"); - //! check if the used formulation is implemented here + // check if the used formulation is implemented here static_assert(formulation == pwsn || formulation == pnsw, "Chosen formulation not known to the TwoPGridDataTransfer"); public: @@ -121,19 +127,19 @@ public: { for (const auto& element : elements(grid.levelGridView(level))) { - //! get map entry + // get map entry auto& adaptedValues = adaptionMap_[element]; - //! put values in the map for leaf elements + // put values in the map for leaf elements if (element.isLeaf()) { auto fvGeometry = localView(*fvGridGeometry_); fvGeometry.bindElement(element); - //! store current element solution + // store current element solution adaptedValues.u = ElementSolution(element, sol_, *fvGridGeometry_); - //! compute mass in the scvs + // compute mass in the scvs for (const auto& scv : scvs(fvGeometry)) { VolumeVariables volVars; @@ -144,11 +150,11 @@ public: adaptedValues.associatedMass[wPhaseIdx] += poreVolume * volVars.density(wPhaseIdx) * volVars.saturation(wPhaseIdx); } - //! leaf elements always start with count = 1 + // leaf elements always start with count = 1 adaptedValues.count = 1; adaptedValues.wasLeaf = true; } - //! Average in father elements + // Average in father elements if (element.level() > 0) { auto& adaptedValuesFather = adaptionMap_[element.father()]; @@ -158,9 +164,9 @@ public: storeAdaptionValues(adaptedValues, adaptedValuesFather); } - //! The vertices of the non-leaf elements exist on the leaf as well - //! This element solution constructor uses the vertex mapper to obtain - //! the privars at the vertices, thus, this works for non-leaf elements! + // The vertices of the non-leaf elements exist on the leaf as well + // This element solution constructor uses the vertex mapper to obtain + // the privars at the vertices, thus, this works for non-leaf elements! if(isBox && !element.isLeaf()) adaptedValues.u = ElementSolution(element, sol_, *fvGridGeometry_); } @@ -179,12 +185,12 @@ public: */ void reconstruct() override { - //! resize stuff (grid might have changed) + // resize stuff (grid might have changed) adaptionMap_.resize(); fvGridGeometry_->update(); sol_.resize(fvGridGeometry_->numDofs()); - //! vectors storing the mass associated with each vertex, when using the box method + // vectors storing the mass associated with each vertex, when using the box method std::vector<Scalar> massCoeff; std::vector<Scalar> associatedMass; @@ -194,7 +200,7 @@ public: associatedMass.resize(fvGridGeometry_->numDofs(), 0.0); } - //! iterate over leaf and reconstruct the solution + // iterate over leaf and reconstruct the solution for (const auto& element : elements(fvGridGeometry_->gridView().grid().leafGridView(), Dune::Partitions::interior)) { if (!element.isNew()) @@ -204,7 +210,7 @@ public: auto fvGeometry = localView(*fvGridGeometry_); fvGeometry.bindElement(element); - //! obtain element solution from map (divide by count!) + // obtain element solution from map (divide by count!) auto elemSol = adaptedValues.u; if (!isBox) elemSol[0] /= adaptedValues.count; @@ -215,14 +221,14 @@ public: VolumeVariables volVars; volVars.update(elemSol, *problem_, element, scv); - //! write solution at dof in current solution vector + // write solution at dof in current solution vector sol_[scv.dofIndex()] = elemSol[scv.indexInElement()]; const auto dofIdxGlobal = scv.dofIndex(); - //! For cc schemes, overwrite the saturation by a mass conservative one here + // For cc schemes, overwrite the saturation by a mass conservative one here if (!isBox) { - //! only recalculate the saturations if element hasn't been leaf before adaptation + // only recalculate the saturations if element hasn't been leaf before adaptation if (!adaptedValues.wasLeaf) { if (formulation == pwsn) @@ -238,7 +244,7 @@ public: } } - //! For the box scheme, add mass & mass coefficient to container (saturations are recalculated at the end) + // For the box scheme, add mass & mass coefficient to container (saturations are recalculated at the end) else { const auto scvVolume = scv.volume(); @@ -257,10 +263,10 @@ public: } else { - //! value is not in map, interpolate from father element + // value is not in map, interpolate from father element assert(element.hasFather() && "new element does not have a father element!"); - //! find the ancestor element that existed on the old grid already + // find the ancestor element that existed on the old grid already auto fatherElement = element.father(); while(fatherElement.isNew() && fatherElement.level() > 0) fatherElement = fatherElement.father(); @@ -269,7 +275,7 @@ public: { const auto& adaptedValuesFather = adaptionMap_[fatherElement]; - //! obtain the mass contained in father + // obtain the mass contained in father Scalar massFather = 0.0; if (formulation == pwsn) massFather = adaptedValuesFather.associatedMass[nPhaseIdx]; @@ -288,10 +294,10 @@ public: VolumeVariables volVars; volVars.update(elemSolSon, *problem_, element, scv); - //! store constructed values of son in the current solution + // store constructed values of son in the current solution sol_[scv.dofIndex()] = elemSolSon[0]; - //! overwrite the saturation by a mass conservative one here + // overwrite the saturation by a mass conservative one here Scalar massCoeffSon = 0.0; if (formulation == pwsn) massCoeffSon = scv.volume() * volVars.density(nPhaseIdx) * volVars.porosity(); @@ -307,7 +313,7 @@ public: auto fvGeometry = localView(*fvGridGeometry_); fvGeometry.bindElement(element); - //! interpolate solution in the father to the vertices of the new son + // interpolate solution in the father to the vertices of the new son ElementSolution elemSolSon(element, sol_, *fvGridGeometry_); const auto fatherGeometry = fatherElement.geometry(); for (const auto& scv : scvs(fvGeometry)) @@ -316,7 +322,7 @@ public: adaptedValuesFather.u, scv.dofPosition()); - //! compute mass & mass coeffients for the scvs (saturations are recalculated at the end) + // compute mass & mass coeffients for the scvs (saturations are recalculated at the end) const auto fatherElementVolume = fatherGeometry.volume(); for (const auto& scv : scvs(fvGeometry)) { @@ -336,7 +342,7 @@ public: associatedMass[dofIdxGlobal] += scvVolume / fatherElementVolume * adaptedValuesFather.associatedMass[wPhaseIdx]; } - //! store constructed (pressure) values of son in the current solution (saturation comes later) + // store constructed (pressure) values of son in the current solution (saturation comes later) sol_[dofIdxGlobal] = elemSolSon[scv.indexInElement()]; } } @@ -349,7 +355,7 @@ public: sol_[dofIdxGlobal][saturationIdx] = associatedMass[dofIdxGlobal] / massCoeff[dofIdxGlobal]; } - //! reset entries in adaptation map + // reset entries in adaptation map adaptionMap_.resize( typename PersistentContainer::Value() ); adaptionMap_.shrinkToFit(); adaptionMap_.fill( typename PersistentContainer::Value() ); @@ -381,31 +387,31 @@ public: static void storeAdaptionValues(AdaptedValues& adaptedValues, AdaptedValues& adaptedValuesFather) { - //! Add associated mass of the child to the one of the father + // Add associated mass of the child to the one of the father adaptedValuesFather.associatedMass += adaptedValues.associatedMass; if(!isBox) { - //! add the child's primary variables to the ones of father - //! we have to divide the child's ones in case it was composed - //! of several children as well! + // add the child's primary variables to the ones of father + // we have to divide the child's ones in case it was composed + // of several children as well! auto values = adaptedValues.u[0]; values /= adaptedValues.count; adaptedValuesFather.u[0] += values; - //! keep track of the number of children that composed this father + // keep track of the number of children that composed this father adaptedValuesFather.count += 1; - //! A father element is never leaf + // A father element is never leaf adaptedValuesFather.wasLeaf = false; } else { - //! For the box scheme, scaling of primary variables by count is obsolete - //! Thus, we always want count = 1 + // For the box scheme, scaling of primary variables by count is obsolete + // Thus, we always want count = 1 adaptedValuesFather.count = 1; - //! A father element is never leaf + // A father element is never leaf adaptedValuesFather.wasLeaf = false; } } diff --git a/dumux/porousmediumflow/2p/incompressiblelocalresidual.hh b/dumux/porousmediumflow/2p/incompressiblelocalresidual.hh index 84480d1177..4c4a67e6d6 100644 --- a/dumux/porousmediumflow/2p/incompressiblelocalresidual.hh +++ b/dumux/porousmediumflow/2p/incompressiblelocalresidual.hh @@ -18,7 +18,7 @@ *****************************************************************************/ /*! * \file - * + * \ingroup TwoPModel * \brief Element-wise calculation of the residual and its derivatives * for a two-phase, incompressible test problem. */ @@ -31,6 +31,11 @@ namespace Dumux { +/*! + * \ingroup TwoPModel + * \brief Element-wise calculation of the residual and its derivatives + * for a two-phase, incompressible test problem. + */ template<class TypeTag> class TwoPIncompressibleLocalResidual : public ImmiscibleLocalResidual<TypeTag> { @@ -66,6 +71,19 @@ class TwoPIncompressibleLocalResidual : public ImmiscibleLocalResidual<TypeTag> public: using ParentType::ParentType; + /*! + * \brief Add storage derivatives for wetting and non-wetting phase + * + * Compute storage derivatives for the wetting and the non-wetting phase with respect to \f$p_w\f$ + * and \f$S_n\f$. + * + * \param partialDerivatives The partial derivatives + * \param problem The problem + * \param element The element + * \param fvGeometry The finite volume element geometry + * \param curVolVars The current volume variables + * \param scv The sub control volume + */ template<class PartialDerivativeMatrix> void addStorageDerivatives(PartialDerivativeMatrix& partialDerivatives, const Problem& problem, @@ -96,6 +114,16 @@ public: partialDerivatives[contiNEqIdx][saturationIdx] += volume*phi_rho_n/this->timeLoop().timeStepSize(); } + /*! + * \brief Add source derivatives for wetting and non-wetting phase + * + * \param partialDerivatives The partial derivatives + * \param problem The problem + * \param element The element + * \param fvGeometry The finite volume element geometry + * \param curVolVars The current volume variables + * \param scv The sub control volume + */ template<class PartialDerivativeMatrix> void addSourceDerivatives(PartialDerivativeMatrix& partialDerivatives, const Problem& problem, @@ -105,6 +133,19 @@ public: const SubControlVolume& scv) const { /* TODO maybe forward to problem for the user to implement the source derivatives?*/ } + /*! + * \brief Add flux derivatives for wetting and non-wetting phase for cell-centered FVM + * + * Compute derivatives for the wetting and the non-wetting phase flux with respect to \f$p_w\f$ + * and \f$S_n\f$. + * + * \param partialDerivatives The partial derivatives + * \param problem The problem + * \param element The element + * \param fvGeometry The finite volume element geometry + * \param curVolVars The current volume variables + * \param scv The sub control volume + */ template<class PartialDerivativeMatrices, class T = TypeTag> std::enable_if_t<GET_PROP_VALUE(T, DiscretizationMethod) != DiscretizationMethods::Box, void> addFluxDerivatives(PartialDerivativeMatrices& derivativeMatrices, @@ -208,6 +249,19 @@ public: dI_dJ[contiNEqIdx][saturationIdx] += tij_up_n*dpc_dSn_outside; } + /*! + * \brief Add flux derivatives for wetting and non-wetting phase for box method + * + * Compute derivatives for the wetting and the non-wetting phase flux with respect to \f$p_w\f$ + * and \f$S_n\f$. + * + * \param partialDerivatives The partial derivatives + * \param problem The problem + * \param element The element + * \param fvGeometry The finite volume element geometry + * \param curVolVars The current volume variables + * \param scv The sub control volume + */ template<class JacobianMatrix, class T = TypeTag> std::enable_if_t<GET_PROP_VALUE(T, DiscretizationMethod) == DiscretizationMethods::Box, void> addFluxDerivatives(JacobianMatrix& A, @@ -353,6 +407,19 @@ public: } } + /*! + * \brief Add cell-centered Dirichlet flux derivatives for wetting and non-wetting phase + * + * Compute derivatives for the wetting and the non-wetting phase flux with respect to \f$p_w\f$ + * and \f$S_n\f$. + * + * \param derivativeMatrices The matrices containing the derivatives + * \param problem The problem + * \param element The element + * \param curElemVolVars The current element volume variables + * \param elemFluxVarsCache The element flux variables cache + * \param scvf The sub control volume face + */ template<class PartialDerivativeMatrices> void addCCDirichletFluxDerivatives(PartialDerivativeMatrices& derivativeMatrices, const Problem& problem, @@ -423,6 +490,16 @@ public: dI_dI[contiNEqIdx][saturationIdx] += tij*dpc_dSn_inside*up_n; } + /*! + * \brief Add Robin flux derivatives for wetting and non-wetting phase + * + * \param derivativeMatrices The matrices containing the derivatives + * \param problem The problem + * \param element The element + * \param curElemVolVars The current element volume variables + * \param elemFluxVarsCache The element flux variables cache + * \param scvf The sub control volume face + */ template<class PartialDerivativeMatrices> void addRobinFluxDerivatives(PartialDerivativeMatrices& derivativeMatrices, const Problem& problem, diff --git a/dumux/porousmediumflow/2p/indices.hh b/dumux/porousmediumflow/2p/indices.hh index b75c8a585e..53b11b6bad 100644 --- a/dumux/porousmediumflow/2p/indices.hh +++ b/dumux/porousmediumflow/2p/indices.hh @@ -19,6 +19,7 @@ /*! * \file + * \ingroup TwoPModel * \brief Defines the indices required for the two-phase fully implicit model. */ #ifndef DUMUX_BOX_2P_INDICES_HH @@ -30,10 +31,8 @@ namespace Dumux { // \{ - /*! * \ingroup TwoPModel - * \ingroup ImplicitIndices * \brief Enumerates the formulations which the two-phase model accepts. */ struct TwoPFormulation @@ -44,10 +43,10 @@ struct TwoPFormulation /*! * \ingroup TwoPModel - * \ingroup ImplicitIndices * \brief Defines the indices required for the two-phase fully implicit model. * * \tparam TypeTag The problem type tag + * \tparam PVOffset The first index in a primary variable vector. */ template <class TypeTag, int PVOffset = 0> struct TwoPCommonIndices @@ -55,23 +54,22 @@ struct TwoPCommonIndices using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem); // Phase indices - static const int wPhaseIdx = FluidSystem::wPhaseIdx; //!< Index of the wetting phase - static const int nPhaseIdx = FluidSystem::nPhaseIdx; //!< Index of the non-wetting phase + static const int wPhaseIdx = FluidSystem::wPhaseIdx; //!< index of the wetting phase + static const int nPhaseIdx = FluidSystem::nPhaseIdx; //!< index of the non-wetting phase // Primary variable indices - static const int pressureIdx = PVOffset + 0; //!< Index for wetting/non-wetting phase pressure (depending on formulation) in a solution vector - static const int saturationIdx = PVOffset + 1; //!< Index of the saturation of the non-wetting/wetting phase + static const int pressureIdx = PVOffset + 0; //!< index for wetting/non-wetting phase pressure (depending on formulation) in a solution vector + static const int saturationIdx = PVOffset + 1; //!< index of the saturation of the non-wetting/wetting phase // indices of the equations - static const int conti0EqIdx = PVOffset + 0; //!< Index of the first continuity equation - static const int contiWEqIdx = PVOffset + 0; //!< Index of the continuity equation of the wetting phase - static const int contiNEqIdx = PVOffset + 1; //!< Index of the continuity equation of the non-wetting phase + static const int conti0EqIdx = PVOffset + 0; //!< index of the first continuity equation + static const int contiWEqIdx = PVOffset + 0; //!< index of the continuity equation of the wetting phase + static const int contiNEqIdx = PVOffset + 1; //!< index of the continuity equation of the non-wetting phase }; /*! - * \ingroup TwoPBoxModel - * \ingroup ImplicitIndices + * \ingroup TwoPModel * \brief The indices for the \f$p_w-S_n\f$ formulation of the * isothermal two-phase model. * @@ -92,10 +90,10 @@ struct TwoPIndices /*! * \ingroup TwoPModel - * \ingroup ImplicitIndices * \brief The indices for the \f$p_n-S_w\f$ formulation of the * isothermal two-phase model. * + * \tparam TypeTag The problem type tag * \tparam PVOffset The first index in a primary variable vector. */ template <class TypeTag, int PVOffset> diff --git a/dumux/porousmediumflow/2p/model.hh b/dumux/porousmediumflow/2p/model.hh index e261e448a7..b11c9247de 100644 --- a/dumux/porousmediumflow/2p/model.hh +++ b/dumux/porousmediumflow/2p/model.hh @@ -85,8 +85,9 @@ namespace Properties // Type tags ////////////////////////////////////////////////////////////////// -//! The type tags for the isothermal & non-isothermal two-phase model +//! The type tag for the isothermal two-phase model NEW_TYPE_TAG(TwoP, INHERITS_FROM(PorousMediumFlow)); +//! The type tag for the non-isothermal two-phase model NEW_TYPE_TAG(TwoPNI, INHERITS_FROM(TwoP, NonIsothermal)); /////////////////////////////////////////////////////////////////////////// @@ -101,7 +102,7 @@ SET_BOOL_PROP(TwoP, EnableMolecularDiffusion, false); // SET_BOOL_PROP(TwoP, EnableEnergyBalance, false); //!< Isothermal model (non-isothermal type tag is below) SET_TYPE_PROP(TwoP, LocalResidual, ImmiscibleLocalResidual<TypeTag>); //!< Use the immiscible local residual operator for the 2p model SET_TYPE_PROP(TwoP, VolumeVariables, TwoPVolumeVariables<TypeTag>); //!< the VolumeVariables property -SET_TYPE_PROP(TwoP, SpatialParams, FVSpatialParams<TypeTag>); //!< The spatial parameters. Use FVSpatialParams by default. +SET_TYPE_PROP(TwoP, SpatialParams, FVSpatialParams<TypeTag>); //!< The spatial parameters. Use FVSpatialParams by default. SET_TYPE_PROP(TwoP, VtkOutputFields, TwoPVtkOutputFields<TypeTag>); //!< Set the vtk output fields specific to the twop model SET_TYPE_PROP(TwoP, @@ -126,7 +127,7 @@ SET_TYPE_PROP(TwoPNI, IsothermalVolumeVariables, TwoPVolumeVariables<TypeTag>); SET_TYPE_PROP(TwoPNI, IsothermalLocalResidual, ImmiscibleLocalResidual<TypeTag>); //!< set isothermal LocalResidual SET_TYPE_PROP(TwoPNI, IsothermalVtkOutputFields, TwoPVtkOutputFields<TypeTag>); //!< set isothermal output fields -//! set isothermal Indices +//! Set isothermal Indices SET_PROP(TwoPNI, IsothermalIndices) { private: diff --git a/dumux/porousmediumflow/2p/volumevariables.hh b/dumux/porousmediumflow/2p/volumevariables.hh index 56954663f6..fff2863bbf 100644 --- a/dumux/porousmediumflow/2p/volumevariables.hh +++ b/dumux/porousmediumflow/2p/volumevariables.hh @@ -18,7 +18,7 @@ *****************************************************************************/ /*! * \file - * + * \ingroup TwoPModel * \brief Contains the quantities which are constant within a * finite volume in the two-phase model. */ @@ -73,8 +73,14 @@ public: using FluidState = typename GET_PROP_TYPE(TypeTag, FluidState); /*! - * \copydoc ImplicitVolumeVariables::update - */ + * \brief Update all quantities for a given control volume + * + * \param elemSol A vector containing all primary variables connected to the element + * \param problem The object specifying the problem which ought to + * be simulated + * \param element An element which contains part of the control volume + * \param scv The sub control volume + */ void update(const ElementSolutionVector &elemSol, const Problem &problem, const Element &element, @@ -101,7 +107,15 @@ public: } /*! - * \copydoc ImplicitModel::completeFluidState + * \brief Complete the fluid state + * + * \param elemSol A vector containing all primary variables connected to the element + * \param problem The problem + * \param element The element + * \param scv The sub control volume + * \param fluidState The fluid state + * + * Set temperature, saturations, capillary pressures, viscosities, densities and enthalpies. */ static void completeFluidState(const ElementSolutionVector& elemSol, const Problem& problem, diff --git a/dumux/porousmediumflow/2p/vtkoutputfields.hh b/dumux/porousmediumflow/2p/vtkoutputfields.hh index 9792db5f3a..50895f1214 100644 --- a/dumux/porousmediumflow/2p/vtkoutputfields.hh +++ b/dumux/porousmediumflow/2p/vtkoutputfields.hh @@ -18,7 +18,8 @@ *****************************************************************************/ /*! * \file - * \brief Adds vtk output fields specific to the twop model + * \ingroup TwoPModel + * \brief Adds vtk output fields specific to the two-phase model */ #ifndef DUMUX_TWOP_VTK_OUTPUT_FIELDS_HH #define DUMUX_TWOP_VTK_OUTPUT_FIELDS_HH @@ -27,8 +28,8 @@ namespace Dumux { /*! - * \ingroup TwoP, InputOutput - * \brief Adds vtk output fields specific to the twop model + * \ingroup TwoPModel + * \brief Adds vtk output fields specific to the two-phase model */ template<class TypeTag> class TwoPVtkOutputFields -- GitLab