verteq.hpp
Go to the documentation of this file.
1 #ifndef OPM_VERTEQ_VERTEQ_HPP_INCLUDED
2 #define OPM_VERTEQ_VERTEQ_HPP_INCLUDED
3 
4 // Copyright (C) 2013 Uni Research AS
5 // This file is licensed under the GNU General Public License v3.0
6 
7 #include <string>
8 #include <vector>
9 
10 #ifndef OPM_VERTEQ_VISIBILITY_HPP_INCLUDED
12 #endif /* OPM_VERTEQ_VISIBILITY_HPP_INCLUDED */
13 
14 // forward declaration
15 struct FlowBoundaryConditions;
16 struct UnstructuredGrid;
17 struct Wells;
18 
19 namespace Opm {
20 
21 class IncompPropertiesInterface;
22 class TwophaseState;
23 
24 namespace parameter {
25 class ParameterGroup;
26 } // namespace parameter
27 
46 {
47 protected:
48  // you are not supposed to call the constructor yourself; instead use
49  // the static create function provided
50  VertEq () {}
51 public:
78  static VertEq* create (const std::string& title,
79  const Opm::parameter::ParameterGroup& args,
80  const UnstructuredGrid& fullGrid,
81  const IncompPropertiesInterface& fullProps,
82  const Wells* fullWells,
83  const std::vector<double>& fullSrc,
84  const FlowBoundaryConditions* fullBcs,
85  const double* fullGravity);
86 
87  // virtual destructor, actual functionality relayed to real impl.
88  virtual ~VertEq () {}
89 
100  virtual const UnstructuredGrid& grid () = 0;
101 
111  virtual const Wells* wells () = 0;
112 
123  virtual const IncompPropertiesInterface& props () = 0;
124 
134  virtual const std::vector<double>& src () = 0;
135 
147  virtual const FlowBoundaryConditions* bcs () = 0;
148 
160  virtual const double* gravity () = 0;
161 
184  virtual void upscale (const TwophaseState& fineScale,
185  TwophaseState& coarseScale) = 0;
186 
208  virtual void downscale (const TwophaseState& coarseScale,
209  TwophaseState& fineScale) = 0;
210 
227  virtual void notify(const TwophaseState& coarseScale) = 0;
228 };
229 
230 } // namespace Opm
231 
232 #endif /* OPM_VERTEQ_VERTEQ_HPP_INCLUDED */
Vertical Equilibrium Upscaling.
Definition: verteq.hpp:45
Definition: opmfwd.hpp:15
#define OPM_VERTEQ_PUBLIC
Definition: exc.hpp:19
VertEq()
Definition: verteq.hpp:50
virtual ~VertEq()
Definition: verteq.hpp:88