opm-simulators
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 <opm/material/common/Valgrind.hpp>
32 
34 
35 namespace Opm {
36 
43 template <class TypeTag>
45 {
49 
50 public:
54  static void registerParameters()
55  {}
56 
60  void update(const ElementContext& elemCtx,
61  unsigned dofIdx,
62  unsigned timeIdx)
63  { extrusionFactor_ = elemCtx.problem().extrusionFactor(elemCtx, dofIdx, timeIdx); }
64 
74  Scalar extrusionFactor() const
75  { return extrusionFactor_; }
76 
81  void checkDefined() const
82  {}
83 
84 protected:
85  Scalar extrusionFactor_{};
86 
87 private:
88  const Implementation& asImp_() const
89  { return *static_cast<const Implementation*>(this); }
90 
91  Implementation& asImp_()
92  { return *static_cast<Implementation*>(this); }
93 };
94 
95 } // namespace Opm
96 
97 #endif
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property (equivalent to old macro GET_PROP_TYPE(...))
Definition: propertysystem.hh:233
Scalar extrusionFactor() const
Return how much a given sub-control volume is extruded.
Definition: fvbaseintensivequantities.hh:74
Base class for the model specific class which provides access to all intensive (i.e., volume averaged) quantities.
Definition: fvbaseintensivequantities.hh:44
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition: blackoilbioeffectsmodules.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:81
void update(const ElementContext &elemCtx, unsigned dofIdx, unsigned timeIdx)
Update all quantities for a given control volume.
Definition: fvbaseintensivequantities.hh:60
static void registerParameters()
Register all run-time parameters for the intensive quantities.
Definition: fvbaseintensivequantities.hh:54