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
15struct FlowBoundaryConditions;
16struct UnstructuredGrid;
17struct Wells;
18
19namespace Opm {
20
21class IncompPropertiesInterface;
22class TwophaseState;
23
24namespace parameter {
25class ParameterGroup;
26} // namespace parameter
27
46{
47protected:
48 // you are not supposed to call the constructor yourself; instead use
49 // the static create function provided
50 VertEq () {}
51public:
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:46
virtual const Wells * wells()=0
Accessor method for the list of upscaled wells.
static VertEq * create(const std::string &title, const Opm::parameter::ParameterGroup &args, const UnstructuredGrid &fullGrid, const IncompPropertiesInterface &fullProps, const Wells *fullWells, const std::vector< double > &fullSrc, const FlowBoundaryConditions *fullBcs, const double *fullGravity)
Pseudo-constructor of VertEqUpscaling objects.
virtual const FlowBoundaryConditions * bcs()=0
Accessor method for the list of boundary conditions in the upscaled grid.
virtual const IncompPropertiesInterface & props()=0
props Accessor method for the upscaled "fluid" objects
virtual const std::vector< double > & src()=0
Accessor method for the upscaled source terms.
virtual void downscale(const TwophaseState &coarseScale, TwophaseState &fineScale)=0
virtual const double * gravity()=0
Gravity that should be used in the upscaled, two- dimensional model.
virtual void notify(const TwophaseState &coarseScale)=0
virtual ~VertEq()
Definition: verteq.hpp:88
VertEq()
Definition: verteq.hpp:50
virtual void upscale(const TwophaseState &fineScale, TwophaseState &coarseScale)=0
virtual const UnstructuredGrid & grid()=0
Accessor method for the upscaled grid.
#define OPM_VERTEQ_PUBLIC
Definition: exc.hpp:19
Definition: opmfwd.hpp:15