diffusivepart.hh 4.31 KB
Newer Older
1
2
// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
// vi: set et ts=4 sw=4 sts=4:
3
/*****************************************************************************
4
 *   See the file COPYING for full copying permissions.                      *
5
 *                                                                           *
6
 *   This program is free software: you can redistribute it and/or modify    *
7
 *   it under the terms of the GNU General Public License as published by    *
8
9
 *   the Free Software Foundation, either version 2 of the License, or       *
 *   (at your option) any later version.                                     *
10
 *                                                                           *
11
12
 *   This program is distributed in the hope that it will be useful,         *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of          *
13
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the            *
14
15
16
17
 *   GNU General Public License for more details.                            *
 *                                                                           *
 *   You should have received a copy of the GNU General Public License       *
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
18
19
20
21
 *****************************************************************************/
#ifndef DUMUX_DIFFUSIVEPART_HH
#define DUMUX_DIFFUSIVEPART_HH

22
#include <dumux/decoupled/2p/transport/transportproperties2p.hh>
Bernd Flemisch's avatar
Bernd Flemisch committed
23

24
/**
Markus Wolff's avatar
Markus Wolff committed
25
26
 * \file
 * \brief  Base class for defining a diffusive part of the saturation transport equation
27
28
29
 */
namespace Dumux
{
Markus Wolff's avatar
Markus Wolff committed
30
31
/*!\ingroup FVSaturation2p
 * \brief  Base class for defining the diffusive part of the saturation transport equation
32
 *
Markus Wolff's avatar
Markus Wolff committed
33
 * \tparam TypeTag The problem TypeTag
34
35
36
37
38
 */
template<class TypeTag>
class DiffusivePart
{
private:
39
40
41
    typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
      typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
      typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem;
42
43

    enum{dim = GridView::dimension};
44
    typedef typename GridView::Intersection Intersection;
45
    typedef Dune::FieldVector<Scalar, dim> DimVector;
46
47

public:
48
49

    //! For initialization
50
51
    void initialize()
    {}
52

Markus Wolff's avatar
Markus Wolff committed
53
54
55
56
57
58
59
    /*! \brief Returns diffusive term for current element face
     *
     *  \param flux        Flux vector (gets the flux from the function)
     *  \param intersection  Intersection of two grid elements/global boundary
     *  \param satI           saturation of current element
     *  \param satJ           saturation of neighbor element
     *  \param pcGradient     gradient of capillary pressure between element I and J
60
     */
61
    void getFlux(DimVector& flux, const Intersection& intersection, Scalar satI, Scalar satJ, const DimVector& pcGradient) const
62
    {}
63

Markus Wolff's avatar
Markus Wolff committed
64
65
66
67
68
69
70
    /*! \brief Returns diffusive term for current element face
     *
     *  \param flux        Flux vector (gets the flux from the function)
     *  \param intersection  Intersection of two grid elements/global boundary
     *  \param satIntersection  saturation at the face between element I and J
     *  \param satGradient       gradient of saturation between element I and J
     *  \param time             time
71
     */
72
73
    void getFlux(DimVector& flux, const Intersection& intersection,
                                    const Scalar satIntersection, const DimVector& satGradient, const Scalar time) const
74
    {}
75

Markus Wolff's avatar
Markus Wolff committed
76
77
78
79
80
81
82
83
84
    /*! \brief Returns diffusive term for current element face
     *
     *  \param flux        Flux vector (gets the flux from the function)
     *  \param intersection  Intersection of two grid elements/global boundary
     *  \param satIntersection  saturation at the face between element I and J
     *  \param satGradient       gradient of saturation between element I and J
     *  \param time             time
     *  \param satI             saturation of current element
     *  \param satJ             saturation of neighbor element
85
     */
86
87
    void getFlux(DimVector& flux, const Intersection& intersection,
                                    const Scalar satIntersection, const DimVector& satGradient, const Scalar time,
88
                                    Scalar satI, Scalar satJ) const
89
    {}
90

91
92
    /*! Constructs a DiffusivePart object
     *
Markus Wolff's avatar
Markus Wolff committed
93
     *  \param A problem class object
94
     */
95
96
    DiffusivePart(Problem& problem)
    {}
Markus Wolff's avatar
Markus Wolff committed
97

98
99
100
101
};
}

#endif