From ff335816056675d76e6dca98ae41c426661b24e1 Mon Sep 17 00:00:00 2001 From: Markus Wolff <markus.wolff@twt-gmbh.de> Date: Fri, 7 Jan 2011 15:21:30 +0000 Subject: [PATCH] doxygen documentation + clean up git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk@4973 2fb0f335-1f38-0410-981e-8018bf24f1b0 --- dumux/decoupled/1p/1pproperties.hh | 24 ++++----- .../1p/diffusion/diffusionproblem1p.hh | 22 ++++++-- .../decoupled/1p/diffusion/fv/fvpressure1p.hh | 2 +- .../decoupled/1p/diffusion/fv/fvvelocity1p.hh | 23 ++++---- dumux/decoupled/2p/2pproperties.hh | 26 ++++----- .../2p/diffusion/diffusionproblem2p.hh | 18 ++++++- .../decoupled/2p/diffusion/fv/fvpressure2p.hh | 10 ++-- .../decoupled/2p/diffusion/fv/fvvelocity2p.hh | 37 ++++--------- .../2p/diffusion/fvmpfa/fvmpfaopressure2p.hh | 17 +++--- .../2p/diffusion/fvmpfa/fvmpfaovelocity2p.hh | 5 ++ .../2p/diffusion/mimetic/mimeticpressure2p.hh | 7 +-- dumux/decoupled/2p/impes/impesproblem2p.hh | 4 +- .../2p/transport/transportproblem2p.hh | 11 +++- .../2p/transport/transportproperties.hh | 2 +- dumux/decoupled/2p/variableclass2p.hh | 14 ++--- dumux/decoupled/common/impet.hh | 7 ++- dumux/decoupled/common/impetproperties.hh | 18 +++---- dumux/decoupled/common/onemodelproblem.hh | 28 +++++----- dumux/decoupled/common/variableclass.hh | 54 ++++++------------- 19 files changed, 172 insertions(+), 157 deletions(-) diff --git a/dumux/decoupled/1p/1pproperties.hh b/dumux/decoupled/1p/1pproperties.hh index e227b59ee6..945da2a693 100644 --- a/dumux/decoupled/1p/1pproperties.hh +++ b/dumux/decoupled/1p/1pproperties.hh @@ -58,7 +58,7 @@ namespace Properties // Type tags ////////////////////////////////////////////////////////////////// -//! The type tag for the two-phase problems +//! The type tag for the single-phase problem NEW_TYPE_TAG(DecoupledOneP, INHERITS_FROM(DecoupledModel)); ////////////////////////////////////////////////////////////////// @@ -74,31 +74,31 @@ NEW_PROP_TAG( Fluid ) //Properties for linear solvers NEW_PROP_TAG(PressureCoefficientMatrix) -; +;//!< Type of the coefficient matrix given to the linear solver NEW_PROP_TAG(PressureRHSVector) -; +;//!< Type of the right hand side vector given to the linear solver NEW_PROP_TAG( PressurePreconditioner ) -; +;//!< Type of the preconditioner NEW_PROP_TAG( PressureSolver ) -; +;//!< Type of the solver NEW_PROP_TAG( SolverParameters ) -; +;//!< Container for the solver parameters NEW_PROP_TAG(ReductionSolver) -; +;//!< Reduction value for linear solver NEW_PROP_TAG(MaxIterationNumberSolver) -; +;//!< Maximum iteration number for linear solver NEW_PROP_TAG(IterationNumberPreconditioner) -; +;//!< Iteration number for preconditioner NEW_PROP_TAG(VerboseLevelSolver) -; +;//!<Verbose level of linear solver and preconditioner NEW_PROP_TAG(RelaxationPreconditioner) -; +;//!< Relaxation factor for preconditioner ////////////////////////////////////////////////////////////////// // Properties ////////////////////////////////////////////////////////////////// -SET_INT_PROP(DecoupledOneP, NumPhases, 1) +SET_INT_PROP(DecoupledOneP, NumPhases, 1)//!< Single phase system ; SET_INT_PROP(DecoupledOneP, NumComponents, 1); //!< Each phase consists of 1 pure component diff --git a/dumux/decoupled/1p/diffusion/diffusionproblem1p.hh b/dumux/decoupled/1p/diffusion/diffusionproblem1p.hh index c415c6a252..a4b817c904 100644 --- a/dumux/decoupled/1p/diffusion/diffusionproblem1p.hh +++ b/dumux/decoupled/1p/diffusion/diffusionproblem1p.hh @@ -21,7 +21,8 @@ *****************************************************************************/ /*! * \file - * \brief Base class for all single phase problems which use an impes algorithm + * \brief Base class for all single phase diffusion problem + * @author Markus Wolff */ #ifndef DUMUX_DIFFUSIONPROBLEM_1P_HH #define DUMUX_DIFFUSIONPROBLEM_1P_HH @@ -35,9 +36,10 @@ namespace Dumux /*! * \ingroup OnePhase * - * \brief Base class for all single phase problems which use an impes algorithm + * \brief Base class for all single phase diffusion problem * - * \todo Please doc me more! + * @tparam TypeTag The Type Tag + * @tparam Implementation The Problem implementation */ template<class TypeTag, class Implementation> class DiffusionProblem1P: public OneModelProblem<TypeTag, Implementation> @@ -59,6 +61,12 @@ class DiffusionProblem1P: public OneModelProblem<TypeTag, Implementation> typedef Dune::FieldVector<Scalar, dimWorld> GlobalPosition; public: + /*! + * \brief The constructor + * + * \param gridView The grid view + * \param verbose Output flag for the time manager. + */ DiffusionProblem1P(const GridView &gridView, bool verbose = true) : ParentType(gridView, verbose), gravity_(0) { @@ -68,7 +76,13 @@ public: if (GET_PROP_VALUE(TypeTag, PTAG(EnableGravity))) gravity_[dim - 1] = -9.81; } - + /*! + * \brief The constructor + * + * \param gridView The grid view + * \param spatialParameters SpatialParameters instantiation + * \param verbose Output flag for the time manager. + */ DiffusionProblem1P(const GridView &gridView, SpatialParameters &spatialParameters, bool verbose = true) : ParentType(gridView, verbose), gravity_(0), spatialParameters_(&spatialParameters) { diff --git a/dumux/decoupled/1p/diffusion/fv/fvpressure1p.hh b/dumux/decoupled/1p/diffusion/fv/fvpressure1p.hh index 23a9ea4264..275ca97f3c 100644 --- a/dumux/decoupled/1p/diffusion/fv/fvpressure1p.hh +++ b/dumux/decoupled/1p/diffusion/fv/fvpressure1p.hh @@ -35,7 +35,7 @@ /** * @file * @brief Single Phase Finite Volume Model - * @author Bernd Flemisch, Markus Wolff + * @author Markus Wolff */ namespace Dumux diff --git a/dumux/decoupled/1p/diffusion/fv/fvvelocity1p.hh b/dumux/decoupled/1p/diffusion/fv/fvvelocity1p.hh index 869616c687..16e38ef5f2 100644 --- a/dumux/decoupled/1p/diffusion/fv/fvvelocity1p.hh +++ b/dumux/decoupled/1p/diffusion/fv/fvvelocity1p.hh @@ -23,7 +23,7 @@ /** * @file - * @brief Finite Volume Diffusion Model + * @brief Single Phase Finite Volume Model * @author Markus Wolff */ @@ -32,16 +32,14 @@ namespace Dumux { //! \ingroup OnePhase -//! \brief Single Phase Finite Volume Diffusion Model -/*! Calculates non-wetting phase velocities from a known pressure field in context of a Finite Volume implementation for the evaluation +//! \brief Single Phase Finite Volume Model +/*! Calculates velocities from a known pressure field in context of a Finite Volume implementation for the evaluation * of equations of the form - * \f[\text{div}\, \boldsymbol{v}_{total} = q.\f] - * The wetting or the non-wetting phase pressure has to be given as piecewise constant cell values. + * \f[\text{div}\, \boldsymbol{v} = q.\f] + * The pressure has to be given as piecewise constant cell values. * The velocity is calculated following Darcy's law as - * \f[\boldsymbol{v}_n = \lambda_n \boldsymbol{K} \left(\text{grad}\, p_n + \rho_n g \text{grad}\, z\right),\f] - * where, \f$p_n\f$ denotes the wetting phase pressure, \f$\boldsymbol{K}\f$ the absolute permeability, \f$\lambda_n\f$ the non-wetting phase mobility, \f$\rho_n\f$ the non-wetting phase density and \f$g\f$ the gravity constant. - * As in the two-phase pressure equation a total flux depending on a total velocity is considered one has to be careful at neumann flux boundaries. Here, a phase velocity is only uniquely defined, if - * the saturation is at the maximum (\f$1-S_{rw}\f$, \f$\boldsymbol{v}_{total} = \boldsymbol{v}_n\f$) or at the minimum (\f$ S_{rn} \f$, \f$\boldsymbol{v}_n = 0\f$) + * \f[\boldsymbol{v} = -\frac{1}{\mu} \boldsymbol{K} \left(\text{grad}\, p + \rho g \text{grad}\, z\right),\f] + * where, \f$p\f$ is the pressure, \f$\boldsymbol{K}\f$ the absolute permeability, \f$\mu\f$ the viscosity, \f$\rho\f$ the density and \f$g\f$ the gravity constant. * * @tparam TypeTag The Type Tag */ @@ -74,7 +72,7 @@ typedef typename GridView::Traits::template Codim<0>::Entity Element; typedef Dune::FieldMatrix<Scalar,dim,dim> FieldMatrix; public: - //! Constructs a FVNonWettingPhaseVelocity2P object + //! The Constructor /** * \param problem a problem class object */ @@ -87,12 +85,11 @@ public: /*! * * Given the piecewise constant pressure \f$p\f$, - * this method calculates the velocity - * The method is needed in the IMPES (Implicit Pressure Explicit Saturation) algorithm which is used for a fractional flow formulation - * to provide the velocity field required for the solution of the saturation equation. + * this method calculates the velocity field */ void calculateVelocity(); + void initialize() { ParentType::initialize(); diff --git a/dumux/decoupled/2p/2pproperties.hh b/dumux/decoupled/2p/2pproperties.hh index ae72ba22a2..25a0b061ed 100644 --- a/dumux/decoupled/2p/2pproperties.hh +++ b/dumux/decoupled/2p/2pproperties.hh @@ -92,27 +92,27 @@ NEW_PROP_TAG( SaturationFormulation) NEW_PROP_TAG( VelocityFormulation) ; //!< The formulation of the model NEW_PROP_TAG( EnableCompressibility) -;// ! Returns whether compressibility is allowed +;// !< Returns whether compressibility is allowed NEW_PROP_TAG( WettingPhase) ; //!< The wetting phase for two-phase models NEW_PROP_TAG( NonwettingPhase) ; //!< The non-wetting phase for two-phase models -NEW_PROP_TAG( FluidSystem ) +NEW_PROP_TAG( FluidSystem )//!< Defines the fluid system ; -NEW_PROP_TAG( FluidState ) +NEW_PROP_TAG( FluidState )//!< Defines the fluid state ; //Properties for linear solvers -NEW_PROP_TAG(PressureCoefficientMatrix); -NEW_PROP_TAG(PressureRHSVector); -NEW_PROP_TAG( PressurePreconditioner ); -NEW_PROP_TAG( PressureSolver ); -NEW_PROP_TAG( SolverParameters ); -NEW_PROP_TAG(ReductionSolver); -NEW_PROP_TAG(MaxIterationNumberSolver); -NEW_PROP_TAG(IterationNumberPreconditioner); -NEW_PROP_TAG(VerboseLevelSolver); -NEW_PROP_TAG(RelaxationPreconditioner); +NEW_PROP_TAG(PressureCoefficientMatrix);//!< Type of the coefficient matrix given to the linear solver +NEW_PROP_TAG(PressureRHSVector);//!< Type of the right hand side vector given to the linear solver +NEW_PROP_TAG( PressurePreconditioner );//!< Type of the pressure preconditioner +NEW_PROP_TAG( PressureSolver );//!< Type of the pressure solver +NEW_PROP_TAG( SolverParameters );//!< Container for the solver parameters +NEW_PROP_TAG(ReductionSolver);//!< Reduction value for linear solver +NEW_PROP_TAG(MaxIterationNumberSolver);//!< Maximum iteration number for linear solver +NEW_PROP_TAG(IterationNumberPreconditioner);//!< Iteration number for preconditioner +NEW_PROP_TAG(VerboseLevelSolver);//!<Verbose level of linear solver and preconditioner +NEW_PROP_TAG(RelaxationPreconditioner);//!< Relaxation factor for preconditioner ////////////////////////////////////////////////////////////////// // Properties diff --git a/dumux/decoupled/2p/diffusion/diffusionproblem2p.hh b/dumux/decoupled/2p/diffusion/diffusionproblem2p.hh index 24a6118dba..1a2354ee73 100644 --- a/dumux/decoupled/2p/diffusion/diffusionproblem2p.hh +++ b/dumux/decoupled/2p/diffusion/diffusionproblem2p.hh @@ -22,6 +22,7 @@ /*! * \file * \brief Base class for stationary sequential 2-phase problems + * @author Markus Wolff */ #ifndef DUMUX_DIFFUSIONPROBLEM_2P_HH #define DUMUX_DIFFUSIONPROBLEM_2P_HH @@ -38,7 +39,8 @@ namespace Dumux * \ingroup Pressure2p * \brief Base class for stationary sequential 2-phase problems * - * \todo Please doc me more! + * @tparam TypeTag The Type Tag + * @tparam Implementation The Problem implementation */ template<class TypeTag, class Implementation> class DiffusionProblem2P: public OneModelProblem<TypeTag, Implementation> @@ -64,6 +66,12 @@ class DiffusionProblem2P: public OneModelProblem<TypeTag, Implementation> {} public: + /*! + * \brief The constructor + * + * \param gridView The grid view + * \param verbose Output flag for the time manager + */ DiffusionProblem2P(const GridView &gridView, bool verbose = true) : ParentType(gridView, verbose), gravity_(0) { @@ -73,7 +81,13 @@ public: if (GET_PROP_VALUE(TypeTag, PTAG(EnableGravity))) gravity_[dim - 1] = -9.81; } - + /*! + * \brief The constructor + * + * \param gridView The grid view + * \param spatialParameters SpatialParameters instantiation + * \param verbose Output flag for the time manager. + */ DiffusionProblem2P(const GridView &gridView, SpatialParameters &spatialParameters, bool verbose = true) : ParentType(gridView, verbose), gravity_(0), spatialParameters_(&spatialParameters) { diff --git a/dumux/decoupled/2p/diffusion/fv/fvpressure2p.hh b/dumux/decoupled/2p/diffusion/fv/fvpressure2p.hh index 035cf1be03..53814cd213 100644 --- a/dumux/decoupled/2p/diffusion/fv/fvpressure2p.hh +++ b/dumux/decoupled/2p/diffusion/fv/fvpressure2p.hh @@ -125,7 +125,7 @@ protected: } public: - + //! updates and stores constitutive relations void updateMaterialLaws(); //! \copydoc Dumux::FVPressure1P::initialize() void initialize(bool solveTwice = true) @@ -173,7 +173,7 @@ public: return; } - //! What is this method here fore??? + //! updates the pressure field (analog to update function in Dumux::IMPET) void update() { updateMaterialLaws(); @@ -184,12 +184,14 @@ public: } // serialization methods + //! \copydoc Dumux::FVPressure1P::serialize(Restarter &res) template<class Restarter> void serialize(Restarter &res) { return; } + //! \copydoc Dumux::FVPressure1P::deserialize(Restarter &res) template<class Restarter> void deserialize(Restarter &res) { @@ -277,8 +279,8 @@ private: protected: const Dune::FieldVector<Scalar, dimWorld>& gravity; //!< vector including the gravity constant static const bool compressibility = GET_PROP_VALUE(TypeTag, PTAG(EnableCompressibility)); - static const int pressureType = GET_PROP_VALUE(TypeTag, PTAG(PressureFormulation)); //!< gives kind of pressure used (\f$ 0 = p_w\f$, \f$ 1 = p_n\f$, \f$ 2 = p_{global}\f$) - static const int saturationType = GET_PROP_VALUE(TypeTag, PTAG(SaturationFormulation)); //!< gives kind of saturation used (\f$ 0 = S_w\f$, \f$ 1 = S_n\f$) + static const int pressureType = GET_PROP_VALUE(TypeTag, PTAG(PressureFormulation)); //!< gives kind of pressure used (\f$p_w\f$, \f$p_n\f$, \f$p_{global}\f$) + static const int saturationType = GET_PROP_VALUE(TypeTag, PTAG(SaturationFormulation)); //!< gives kind of saturation used (\f$S_w\f$, \f$S_n\f$) }; //initializes the matrix to store the system of equations diff --git a/dumux/decoupled/2p/diffusion/fv/fvvelocity2p.hh b/dumux/decoupled/2p/diffusion/fv/fvvelocity2p.hh index 45ace5ba83..f3680c9ffe 100644 --- a/dumux/decoupled/2p/diffusion/fv/fvvelocity2p.hh +++ b/dumux/decoupled/2p/diffusion/fv/fvvelocity2p.hh @@ -36,12 +36,14 @@ namespace Dumux /*! Calculates phase velocities or total velocity from a known pressure field in context of a Finite Volume implementation for the evaluation * of equations of the form * \f[\text{div}\, \boldsymbol{v}_{total} = q.\f] - * The wetting or the non-wetting phase pressure has to be given as piecewise constant cell values. - * The velocity is calculated following Darcy's law as - * \f[\boldsymbol{v}_n = \lambda_n \boldsymbol{K} \left(\text{grad}\, p_n + \rho_n g \text{grad}\, z\right),\f] - * where, \f$p_n\f$ denotes the wetting phase pressure, \f$\boldsymbol{K}\f$ the absolute permeability, \f$\lambda_n\f$ the non-wetting phase mobility, \f$\rho_n\f$ the non-wetting phase density and \f$g\f$ the gravity constant. - * As in the two-phase pressure equation a total flux depending on a total velocity is considered one has to be careful at neumann flux boundaries. Here, a phase velocity is only uniquely defined, if - * the saturation is at the maximum (\f$1-S_{rw}\f$, \f$\boldsymbol{v}_{total} = \boldsymbol{v}_n\f$) or at the minimum (\f$ S_{rn} \f$, \f$\boldsymbol{v}_n = 0\f$) + * The wetting or the non-wetting phase pressure, or the global pressure has to be given as piecewise constant cell values. + * The phase velocities are calculated following Darcy's law as + * \f[\boldsymbol{v}_\alpha = \lambda_\alpha \boldsymbol{K} \left(\text{grad}\, p_\alpha + \rho_\alpha g \text{grad}\, z\right),\f] + * where \f$p_\alpha\f$ denotes the pressure of phase \f$_\alpha\f$ (wetting or non-wetting), \f$\boldsymbol{K}\f$ the absolute permeability, \f$\lambda_\alpha\f$ the phase mobility, \f$\rho_\alpha\f$ the phase density and \f$g\f$ the gravity constant. + * The total velocity is either calculated as sum of the phase velocities + * \f[\boldsymbol{v}_{total} = \boldsymbol{v}_{wetting}+\boldsymbol{v}_{non-wetting},\f] + * or with a given global pressure + * \f[\boldsymbol{v}_{total} = \lambda_{total} \boldsymbol{K} \left(\text{grad}\, p_{global} + \sum f_\alpha \rho_\alpha g \text{grad}\, z\right).\f] * * \tparam TypeTag The Type Tag */ @@ -95,7 +97,7 @@ typedef typename GridView::Traits::template Codim<0>::Entity Element; typedef Dune::FieldMatrix<Scalar,dim,dim> FieldMatrix; public: - //! Constructs a FVNonWettingPhaseVelocity2P object + //! Constructs a FVVelocity2P object /*! * \param problem a problem class object */ @@ -111,25 +113,6 @@ public: DUNE_THROW(Dune::NotImplemented, "Velocity type not supported!"); } } - //! Constructs a FVNonWettingPhaseVelocity2P object - /** - * \param problem a problem class object - * \param solverName a string giving the type of solver used (could be: CG, BiCGSTAB, Loop) - * \param preconditionerName a string giving the type of the matrix preconditioner used (could be: Dune::SeqILU0, SeqPardiso) - */ - FVVelocity2P(Problem& problem, std::string solverName, - std::string preconditionerName) - : FVPressure2P<TypeTag>(problem, solverName, preconditionerName) - { - if (GET_PROP_VALUE(TypeTag, PTAG(EnableCompressibility)) && velocityType_ == vt) - { - DUNE_THROW(Dune::NotImplemented, "Total velocity - global pressure - model cannot be used with compressible fluids!"); - } - if (velocityType_ != vw && velocityType_ != vn && velocityType_ != vt) - { - DUNE_THROW(Dune::NotImplemented, "Velocity type not supported!"); - } - } //! Calculate the velocity. /*! @@ -212,7 +195,7 @@ public: private: static const int velocityType_ = GET_PROP_VALUE(TypeTag, PTAG(VelocityFormulation)); //!< gives kind of velocity used (\f$ 0 = v_w\f$, \f$ 1 = v_n\f$, \f$ 2 = v_t\f$) }; -//! \copydoc Dumux::FVVelocity1P::calculateVelocity() + template<class TypeTag> void FVVelocity2P<TypeTag>::calculateVelocity() { diff --git a/dumux/decoupled/2p/diffusion/fvmpfa/fvmpfaopressure2p.hh b/dumux/decoupled/2p/diffusion/fvmpfa/fvmpfaopressure2p.hh index db83331768..48132a3253 100644 --- a/dumux/decoupled/2p/diffusion/fvmpfa/fvmpfaopressure2p.hh +++ b/dumux/decoupled/2p/diffusion/fvmpfa/fvmpfaopressure2p.hh @@ -58,10 +58,8 @@ namespace Dumux * \f$p\f$ denotes the pressure, \f$K\f$ the absolute permeability, * and \f$\lambda\f$ the total mobility, possibly depending on the * saturation. - Template parameters are: - - - GridView a DUNE gridView type - - Scalar type used for return values + * + * \tparam TypeTag The Type Tag */ template<class TypeTag> class FVMPFAOPressure2P @@ -132,6 +130,7 @@ protected: public: //constitutive functions are initialized and stored in the variables object + //! updates and stores constitutive relations void updateMaterialLaws(); void initialize(bool solveTwice = true) @@ -145,12 +144,14 @@ public: } // serialization methods + //! \copydoc Dumux::FVPressure1P::serialize(Restarter &res) template<class Restarter> void serialize(Restarter &res) { return; } + //! \copydoc Dumux::FVPressure1P::deserialize(Restarter &res) template<class Restarter> void deserialize(Restarter &res) { @@ -184,6 +185,7 @@ public: return; } + //! \copydoc Dumux::FVPressure1P::pressure() void pressure(bool solveTwice = true) { // Dune::Timer timer; @@ -199,7 +201,10 @@ public: return; } - + //! Constructs a FVMPFAOPressure2P object + /** + * \param problem a problem class object + */ FVMPFAOPressure2P(Problem& problem) : problem_(problem), A_(problem.variables().gridSize(), problem.variables().gridSize(), (4*dim+(dim-1))*problem.variables().gridSize(), Matrix::random), f_(problem.variables().gridSize()) @@ -212,7 +217,7 @@ private: Matrix A_; Vector f_; protected: - static const int saturationType = GET_PROP_VALUE(TypeTag, PTAG(SaturationFormulation)); //!< gives kind of saturation used (\f$ 0 = S_w\f$, \f$ 1 = S_n\f$) + static const int saturationType = GET_PROP_VALUE(TypeTag, PTAG(SaturationFormulation)); //!< gives kind of saturation used (\f$S_w\f$, \f$S_n\f$) }; template<class TypeTag> diff --git a/dumux/decoupled/2p/diffusion/fvmpfa/fvmpfaovelocity2p.hh b/dumux/decoupled/2p/diffusion/fvmpfa/fvmpfaovelocity2p.hh index 9c538c637e..294d81fa2b 100644 --- a/dumux/decoupled/2p/diffusion/fvmpfa/fvmpfaovelocity2p.hh +++ b/dumux/decoupled/2p/diffusion/fvmpfa/fvmpfaovelocity2p.hh @@ -84,11 +84,16 @@ template<class TypeTag> class FVMPFAOVelocity2P: public FVMPFAOPressure2P<TypeTa typedef Dune::FieldVector<Scalar, dim> FieldVector; public: + //! Constructs a FVMPFAOVelocity2P object + /*! + * \param problem a problem class object + */ FVMPFAOVelocity2P(Problem& problem) : ParentType(problem) { } + //! \copydoc Dumux::FVVelocity2P::calculateVelocity() void calculateVelocity(); }; // end of template diff --git a/dumux/decoupled/2p/diffusion/mimetic/mimeticpressure2p.hh b/dumux/decoupled/2p/diffusion/mimetic/mimeticpressure2p.hh index cf0128f405..57f4331964 100644 --- a/dumux/decoupled/2p/diffusion/mimetic/mimeticpressure2p.hh +++ b/dumux/decoupled/2p/diffusion/mimetic/mimeticpressure2p.hh @@ -59,12 +59,7 @@ namespace Dumux * For all cases, \f$p = p_D\f$ on \f$\Gamma_{Neumann}\f$, and \f$\boldsymbol{v}_{total} = q_N\f$ * on \f$\Gamma_{Dirichlet}\f$. * - * Template parameters are: - * - - GridView a DUNE gridview type - - Scalar type used for scalar quantities - - VC type of a class containing different variables of the model - - Problem class defining the physical problem + *\tparam TypeTag The Type Tag */ template<class TypeTag> class MimeticPressure2P { diff --git a/dumux/decoupled/2p/impes/impesproblem2p.hh b/dumux/decoupled/2p/impes/impesproblem2p.hh index 3e6cb153e6..40e634c987 100644 --- a/dumux/decoupled/2p/impes/impesproblem2p.hh +++ b/dumux/decoupled/2p/impes/impesproblem2p.hh @@ -22,6 +22,7 @@ /*! * \file * \brief Base class for all 2-phase problems which use an impes algorithm + * @author Markus Wolff */ #ifndef DUMUX_IMPESPROBLEM_2P_HH #define DUMUX_IMPESPROBLEM_2P_HH @@ -40,7 +41,8 @@ namespace Dumux * \ingroup IMPES * \brief Base class for all 2-phase problems which use an impes algorithm * - * \todo Please doc me more! + * @tparam TypeTag The Type Tag + * @tparam Implementation The Problem implementation */ template<class TypeTag, class Implementation> class IMPESProblem2P : public IMPETProblem<TypeTag, Implementation> diff --git a/dumux/decoupled/2p/transport/transportproblem2p.hh b/dumux/decoupled/2p/transport/transportproblem2p.hh index 9ff7b3d081..38949aebf6 100644 --- a/dumux/decoupled/2p/transport/transportproblem2p.hh +++ b/dumux/decoupled/2p/transport/transportproblem2p.hh @@ -22,6 +22,7 @@ /*! * \file * \brief Base class for all 2-phase transport problems which use an impes algorithm + * @author Markus Wolff */ #ifndef DUMUX_TRANSPORTPROBLEM_2P_HH #define DUMUX_TRANSPORTPROBLEM_2P_HH @@ -37,9 +38,10 @@ namespace Dumux /*! * \ingroup Saturation2p * \ingroup IMPESproblems - * \brief Base class for all 2-phase transport problems which use an impes algorithm + * \brief Base class for a decoupled 2-phase transport problem * - * \todo Please doc me more! + * @tparam TypeTag The Type Tag + * @tparam Implementation The Problem implementation */ template<class TypeTag, class Implementation> class TransportProblem2P : public OneModelProblem<TypeTag, Implementation> @@ -70,6 +72,11 @@ class TransportProblem2P : public OneModelProblem<TypeTag, Implementation> {} public: + /*! + * \brief The constructor + * + * \param gridView The grid view + */ TransportProblem2P(const GridView &gridView) : ParentType(gridView), gravity_(0),spatialParameters_(gridView) diff --git a/dumux/decoupled/2p/transport/transportproperties.hh b/dumux/decoupled/2p/transport/transportproperties.hh index 4f687f660d..1a71d59986 100644 --- a/dumux/decoupled/2p/transport/transportproperties.hh +++ b/dumux/decoupled/2p/transport/transportproperties.hh @@ -80,7 +80,7 @@ NEW_PROP_TAG( EnableCompressibility ); NEW_PROP_TAG( PressureFormulation ); NEW_PROP_TAG( SaturationFormulation ); NEW_PROP_TAG( VelocityFormulation ); -NEW_PROP_TAG( EvalCflFluxFunction ); +NEW_PROP_TAG( EvalCflFluxFunction ); //!< Type of the evaluation of the CFL-condition NEW_PROP_TAG( CFLFactor ); SET_TYPE_PROP(Transport, DiffusivePart, DiffusivePart<TypeTag>); diff --git a/dumux/decoupled/2p/variableclass2p.hh b/dumux/decoupled/2p/variableclass2p.hh index bc9133e534..532828fdca 100644 --- a/dumux/decoupled/2p/variableclass2p.hh +++ b/dumux/decoupled/2p/variableclass2p.hh @@ -34,18 +34,15 @@ namespace Dumux { /*! - * \ingroup Immiscible IMPES + * \ingroup IMPES */ //! Class including the variables and data of discretized data of the constitutive relations. /*! The variables of two-phase flow, which are one pressure and one saturation are stored in this class. * Additionally, a velocity needed in the transport part of the decoupled two-phase flow is stored, as well as discretized data of constitutive relationships like * mobilities, fractional flow functions and capillary pressure. Thus, they have to be callculated just once in every time step or every iteration step. * - * Template parameters are: - - - GridView a DUNE gridview type - - Scalar type used for scalar quantities - */ + * @tparam TypeTag The Type Tag +1*/ template<class TypeTag> class VariableClass2P: public VariableClass<TypeTag> { @@ -137,22 +134,26 @@ public: } // serialization methods + //! Function needed for restart option. template<class Restarter> void serialize(Restarter &res) { res.template serializeEntities<0> (*this, this->gridView()); } + //! Function needed for restart option. template<class Restarter> void deserialize(Restarter &res) { res.template deserializeEntities<0> (*this, this->gridView()); } + //! Function needed for restart option. void serializeEntity(std::ostream &outstream, const Element &element) { int globalIdx = this->elementMapper().map(element); outstream << this->pressure()[globalIdx] << " " << saturation_[globalIdx]; } + //! Function needed for restart option. void deserializeEntity(std::istream &instream, const Element &element) { int globalIdx = this->elementMapper().map(element); @@ -190,6 +191,7 @@ private: public: //Write saturation and pressure into file + //! adds variables to output template<class MultiWriter> void addOutputVtkFields(MultiWriter &writer) { diff --git a/dumux/decoupled/common/impet.hh b/dumux/decoupled/common/impet.hh index a37842e979..ec486f0351 100644 --- a/dumux/decoupled/common/impet.hh +++ b/dumux/decoupled/common/impet.hh @@ -34,7 +34,7 @@ namespace Dumux { /** * \ingroup IMPET - * \brief IMplicit Pressure Explicit Transport (IMPET) scheme for the solution of weakly coupled diffusion/transport problems. + * \brief IMplicit Pressure Explicit Transport (IMPET) scheme for the solution of weakly coupled diffusion-transport formulations. * * The model implements the decoupled equations of two-phase flow. * These equations can be derived from the two-phase flow equations shown for the two-phase box model (TwoPBoxModel). @@ -46,6 +46,8 @@ namespace Dumux * second the transport equation can be solved explicitly. This solution procedure is called IMPES algorithm * (IMplicit Pressure Explicit Saturation) for immiscible flow or IMPEC algorithm * (IMplicit Pressure Explicit Concentration) for miscible flow. + * + * \tparam TypeTag The Type Tag */ template<class TypeTag> class IMPET { @@ -188,11 +190,14 @@ public: } // serialization methods + //! Function needed for restart option. template<class Restarter> void serialize(Restarter &res) { problem.variables().serialize<Restarter> (res); } + + //! Function needed for restart option. template<class Restarter> void deserialize(Restarter &res) { diff --git a/dumux/decoupled/common/impetproperties.hh b/dumux/decoupled/common/impetproperties.hh index 73c0c17986..674ad0a7b5 100644 --- a/dumux/decoupled/common/impetproperties.hh +++ b/dumux/decoupled/common/impetproperties.hh @@ -56,22 +56,22 @@ NEW_TYPE_TAG(IMPET, INHERITS_FROM(DecoupledModel)); // Property tags ////////////////////////////////////////////////////////////////// -NEW_PROP_TAG(PressureModel); //!< The type of the discretizations -NEW_PROP_TAG(TransportModel); //!< The type of the discretizations +NEW_PROP_TAG(PressureModel); //!< The type of the discretization +NEW_PROP_TAG(TransportModel); //!< The type of the discretization -NEW_PROP_TAG(CFLFactor); -NEW_PROP_TAG(IterationFlag); -NEW_PROP_TAG(IterationNumber); -NEW_PROP_TAG(MaximumDefect); -NEW_PROP_TAG(RelaxationFactor); +NEW_PROP_TAG(CFLFactor); //!< Scalar factor for additional scaling of the time step +NEW_PROP_TAG(IterationFlag); //!< Flag to switch the iteration type of the IMPET scheme +NEW_PROP_TAG(IterationNumber); //!< Number of iterations if IMPET iterations are enabled by the IterationFlags +NEW_PROP_TAG(MaximumDefect); //!< Maximum Defect if IMPET iterations are enabled by the IterationFlags +NEW_PROP_TAG(RelaxationFactor); //!< Used for IMPET iterations SET_TYPE_PROP(IMPET, Model, IMPET<TypeTag>); SET_SCALAR_PROP(IMPET, CFLFactor, 1); -SET_INT_PROP(IMPET, IterationFlag, 0); +SET_INT_PROP(IMPET, IterationFlag, 0); //!< 0 = no iterations, 1 = iterate IterationNumber iterations, 2 = iterate until converged or IterationNumber is reached SET_INT_PROP(IMPET, IterationNumber, 2); SET_SCALAR_PROP(IMPET, MaximumDefect, 1e-5); -SET_SCALAR_PROP(IMPET, RelaxationFactor, 1); +SET_SCALAR_PROP(IMPET, RelaxationFactor, 1);//!< 1 = new solution is new solution, 0 = old solution is new solution } } diff --git a/dumux/decoupled/common/onemodelproblem.hh b/dumux/decoupled/common/onemodelproblem.hh index 6aacba2fff..92a2e217d0 100644 --- a/dumux/decoupled/common/onemodelproblem.hh +++ b/dumux/decoupled/common/onemodelproblem.hh @@ -31,8 +31,8 @@ /** * @file - * @brief Base class for defining an instance of the diffusion problem - * @author Bernd Flemisch + * @brief Base class for definition of an decoupled diffusion (pressure) or transport problem + * @author Markus Wolff */ namespace Dumux @@ -40,16 +40,7 @@ namespace Dumux /*! \ingroup IMPET * - * @brief base class that defines the parameters of loosely coupled diffusion and transport equations - * - * An interface for defining parameters for the stationary diffusion equation - * \f[\text{div}\, \boldsymbol{v} = q\f] - * and a scalar transport equation - * \f[ - * \frac{\partial S}{\partial t} + \text{div}\, \boldsymbol{v_\alpha} = 0, - * \f] - * where, the velocity \f$\boldsymbol{v} \sim \boldsymbol{K} \nabla p \f$, - * \f$p\f$ is a pressure and q a source/sink term, \f$S\f$ denotes a phase saturation and \f$\boldsymbol{v_\alpha}\f$ is a phase velocity. + * @brief Base class for definition of an decoupled diffusion (pressure) or transport problem * * @tparam TypeTag The Type Tag */ @@ -142,6 +133,13 @@ public: void preTimeStep() { }; + /*! + * \brief Called by Dumux::TimeManager in order to do a time + * integration on the model. + */ + void timeIntegration() + { }; + /*! * \brief Called by Dumux::TimeManager whenever a solution for a * timestep has been computed and the simulation time has @@ -291,9 +289,15 @@ public: const TimeManager &timeManager() const { return timeManager_; } + /*! + * \brief Returns variables object. + */ Variables& variables () { return variables_; } + /*! + * \brief \copybrief Dumux::OneModelProblem::variables() + */ const Variables& variables () const { return variables_; } diff --git a/dumux/decoupled/common/variableclass.hh b/dumux/decoupled/common/variableclass.hh index 50ff5890d3..201f6060d4 100644 --- a/dumux/decoupled/common/variableclass.hh +++ b/dumux/decoupled/common/variableclass.hh @@ -38,10 +38,13 @@ namespace Dumux /*! * \ingroup Sequential */ -//! Class holding the variables and discretized data for sequential models. +//! Base class holding the variables and discretized data for sequential models. /*! - * For multi-phase flow, the common variable in all sequential models is the saturation, stored in this class. - * Additionally, general access to grids and serialize methods is prepared. + * Stores global information and variables that are common for all sequential models and also functions needed to access these variables. + * Can be directly used for a single phase model. + * + * @tparam TypeTag The Type Tag + * */ template<class TypeTag> class VariableClass @@ -115,31 +118,38 @@ public: } // serialization methods + //! Function needed for restart option. template<class Restarter> void serialize(Restarter &res) { res.template serializeEntities<0> (*this, gridView_); } + + //! Function needed for restart option. template<class Restarter> void deserialize(Restarter &res) { res.template deserializeEntities<0> (*this, gridView_); } + //! Function needed for restart option. void serializeEntity(std::ostream &outstream, const Element &element) { int globalIdx = elementMapper_.map(element); outstream << pressure_[globalIdx]; } + + //! Function needed for restart option. void deserializeEntity(std::istream &instream, const Element &element) { int globalIdx = elementMapper_.map(element); instream >> pressure_[globalIdx]; } - void initializePotentials(Dune::FieldVector<Scalar, dim>& initialVel) + //! initializes the potential differences stored at the element faces. + void initializePotentials(Dune::FieldVector<Scalar, dim>& initialPot) { - if (initialVel.two_norm()) + if (initialPot.two_norm()) { // compute update vector ElementIterator eItEnd = gridView_.template end<0> (); @@ -157,7 +167,7 @@ public: Dune::FieldVector<Scalar, dimWorld> unitOuterNormal = isIt->centerUnitOuterNormal(); - for (int i = 0; i < numPhase; i++) {potential_[globalIdxI][indexInInside][i] = initialVel * unitOuterNormal;} + for (int i = 0; i < numPhase; i++) {potential_[globalIdxI][indexInInside][i] = initialPot * unitOuterNormal;} } } } @@ -179,39 +189,9 @@ private: //initialise variables pressure_ = 0; velocity_ = initialVel; + initializePotentials(initialVel); } -// void initializePotentials(Dune::FieldVector<Scalar, dim>& initialVel) -// { -// if (initialVel.two_norm()) -// { -// // compute update vector -// ElementIterator eItEnd = gridView_.template end<0> (); -// for (ElementIterator eIt = gridView_.template begin<0> (); eIt != eItEnd; ++eIt) -// { -// // cell index -// int globalIdxI = elementMapper_.map(*eIt); -// -// // run through all intersections with neighbors and boundary -// IntersectionIterator isItEnd = gridView_.iend(*eIt); -// for (IntersectionIterator isIt = gridView_.ibegin(*eIt); isIt != isItEnd; ++isIt) -// { -// // local number of facet -// int indexInInside = isIt->indexInInside(); -// -// Dune::FieldVector<Scalar, dimWorld> unitOuterNormal = isIt->centerUnitOuterNormal(); -// -// for (int i = 0; i < numPhase; i++) {potential_[globalIdxI][indexInInside][i] = initialVel * unitOuterNormal;} -// } -// } -// } -// else -// { -// potential_ = Dune::FieldVector<Scalar, numPhase> (0); -// } -// return; -// } - //Write saturation and pressure into file template<class MultiWriter> void addOutputVtkFields(MultiWriter &writer) -- GitLab