All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
fvbaseintensivequantities.hh
Go to the documentation of this file.
1 // -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 // vi: set et ts=4 sw=4 sts=4:
3 /*
4  This file is part of the Open Porous Media project (OPM).
5 
6  OPM 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  the Free Software Foundation, either version 2 of the License, or
9  (at your option) any later version.
10 
11  OPM is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with OPM. If not, see <http://www.gnu.org/licenses/>.
18 
19  Consult the COPYING file in the top-level source directory of this
20  module for the precise wording of the license and the list of
21  copyright holders.
22 */
28 #ifndef EWOMS_FV_BASE_INTENSIVE_QUANTITIES_HH
29 #define EWOMS_FV_BASE_INTENSIVE_QUANTITIES_HH
30 
31 #include "fvbaseproperties.hh"
32 
33 #include <opm/common/Valgrind.hpp>
34 #include <opm/common/Unused.hpp>
35 
36 namespace Ewoms {
37 
44 template <class TypeTag>
46 {
47  typedef typename GET_PROP_TYPE(TypeTag, IntensiveQuantities) Implementation;
48  typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
49  typedef typename GET_PROP_TYPE(TypeTag, ElementContext) ElementContext;
50 
51 public:
52  // default constructor
54  { }
55 
56  // copy constructor
58 
62  static void registerParameters()
63  { }
64 
68  void update(const ElementContext& elemCtx,
69  unsigned dofIdx,
70  unsigned timeIdx)
71  { extrusionFactor_ = elemCtx.problem().extrusionFactor(elemCtx, dofIdx, timeIdx); }
72 
82  Scalar extrusionFactor() const
83  { return extrusionFactor_; }
84 
89  void checkDefined() const
90  { }
91 
92 private:
93  const Implementation& asImp_() const
94  { return *static_cast<const Implementation*>(this); }
95  Implementation& asImp_()
96  { return *static_cast<Implementation*>(this); }
97 
98  Scalar extrusionFactor_;
99 };
100 
101 } // namespace Ewoms
102 
103 #endif
static void registerParameters()
Register all run-time parameters for the intensive quantities.
Definition: fvbaseintensivequantities.hh:62
void update(const ElementContext &elemCtx, unsigned dofIdx, unsigned timeIdx)
Update all quantities for a given control volume.
Definition: fvbaseintensivequantities.hh:68
Base class for the model specific class which provides access to all intensive (i.e., volume averaged) quantities.
Definition: fvbaseintensivequantities.hh:45
Declare the properties used by the infrastructure code of the finite volume discretizations.
void checkDefined() const
If running in valgrind this makes sure that all quantities in the intensive quantities are defined...
Definition: fvbaseintensivequantities.hh:89
Scalar extrusionFactor() const
Return how much a given sub-control volume is extruded.
Definition: fvbaseintensivequantities.hh:82