My Project
Loading...
Searching...
No Matches
SimulatorTraits.hpp
1//===========================================================================
2//
3// File: SimulatorTraits.hpp
4//
5// Created: Mon Jul 19 15:48:15 2010
6//
7// Author(s): Atgeirr F Rasmussen <atgeirr@sintef.no>
8//
9// $Date$
10//
11// $Revision$
12//
13//===========================================================================
14
15/*
16 Copyright 2010 SINTEF ICT, Applied Mathematics.
17 Copyright 2010 Statoil ASA.
18
19 This file is part of The Open Reservoir Simulator Project (OpenRS).
20
21 OpenRS is free software: you can redistribute it and/or modify
22 it under the terms of the GNU General Public License as published by
23 the Free Software Foundation, either version 3 of the License, or
24 (at your option) any later version.
25
26 OpenRS is distributed in the hope that it will be useful,
27 but WITHOUT ANY WARRANTY; without even the implied warranty of
28 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29 GNU General Public License for more details.
30
31 You should have received a copy of the GNU General Public License
32 along with OpenRS. If not, see <http://www.gnu.org/licenses/>.
33*/
34
35#ifndef OPENRS_SIMULATORTRAITS_HEADER
36#define OPENRS_SIMULATORTRAITS_HEADER
37
38
39#include <opm/porsol/common/ReservoirPropertyCapillaryAnisotropicRelperm.hpp>
40#include <opm/porsol/mimetic/MimeticIPAnisoRelpermEvaluator.hpp>
41#include <opm/porsol/common/ReservoirPropertyCapillary.hpp>
42#include <opm/porsol/mimetic/MimeticIPEvaluator.hpp>
43#include <opm/porsol/mimetic/IncompFlowSolverHybrid.hpp>
44#include <opm/porsol/euler/EulerUpstream.hpp>
45//#include <opm/porsol/euler/EulerUpstreamImplicit.hpp>
46#include <opm/porsol/euler/ImplicitCapillarity.hpp>
47
48namespace Opm
49{
50
51
53 struct Isotropic
54 {
56 template <int Dimension>
57 struct ResProp
58 {
60 };
61
63 template <class GridInterface, class RockInterface>
64 struct InnerProduct : public MimeticIPEvaluator<GridInterface, RockInterface>
65 {
66 };
67 };
68
69
72 {
74 template <int Dimension>
79
81 template <class GridInterface, class RockInterface>
82 struct InnerProduct : public MimeticIPAnisoRelpermEvaluator<GridInterface, RockInterface>
83 {
84 };
85 };
86
87
89 template <class IsotropyPolicy>
90 struct Explicit
91 {
92 template <class GridInterface, class BoundaryConditions>
94 {
95 enum { Dimension = GridInterface::Dimension };
96 typedef typename IsotropyPolicy::template ResProp<Dimension>::Type RP;
97 typedef EulerUpstream<GridInterface,
98 RP,
99 BoundaryConditions> Type;
100 };
101 };
102
104 /*
105 template <class IsotropyPolicy>
106 struct Implicit
107 {
108 template <class GridInterface, class BoundaryConditions>
109 struct TransportSolver
110 {
111 //enum { Dimension = GridInterface::Dimension };
112 enum { Dimension = GridInterface::dimension };
113 typedef typename IsotropyPolicy::template ResProp<Dimension>::Type RP;
114
115 typedef EulerUpstreamImplicit<GridInterface,
116 RP,
117 BoundaryConditions> Type;
118
119 };
120 };
121 */
123 template <class IsotropyPolicy>
125 {
126 template <class GridInterface, class BoundaryConditions>
128 {
129 enum { Dimension = GridInterface::Dimension };
130 typedef typename IsotropyPolicy::template ResProp<Dimension>::Type RP;
132 };
133 };
134
135
136
138 template <class RelpermPolicy, template <class> class TransportPolicy>
139 struct SimulatorTraits : public RelpermPolicy, TransportPolicy<RelpermPolicy>
140 {
142 template <class GridInterface, class BoundaryConditions>
144 {
145 typedef IncompFlowSolverHybrid<GridInterface,
146 typename RelpermPolicy::template ResProp<GridInterface::Dimension>::Type,
147 BoundaryConditions,
148 RelpermPolicy::template InnerProduct> Type;
149 };
150 };
151
152
153} // namespace Opm
154
155
156
157#endif // OPENRS_SIMULATORTRAITS_HEADER
Class for doing simple transport by explicit Euler upstream method for general grid.
Definition EulerUpstream.hpp:51
Class for doing simple transport by explicit Euler upstream method for general grid.
Definition ImplicitCapillarity.hpp:53
Solve mixed formulation of incompressible flow modelled by Darcy's law.
Definition IncompFlowSolverHybrid.hpp:365
Definition MimeticIPAnisoRelpermEvaluator.hpp:84
Definition MimeticIPEvaluator.hpp:85
A property class for incompressible two-phase flow.
Definition ReservoirPropertyCapillaryAnisotropicRelperm.hpp:106
A property class for incompressible two-phase flow.
Definition ReservoirPropertyCapillary.hpp:80
Inverting small matrices.
Definition ImplicitAssembly.hpp:43
The inner product template.
Definition SimulatorTraits.hpp:83
The reservoir property type.
Definition SimulatorTraits.hpp:76
Traits for upscaling with anisotropic relperm (tensorial) input.
Definition SimulatorTraits.hpp:72
Definition SimulatorTraits.hpp:94
Traits for explicit transport.
Definition SimulatorTraits.hpp:91
Definition SimulatorTraits.hpp:128
Traits for implicit transport.
Definition SimulatorTraits.hpp:125
The inner product template.
Definition SimulatorTraits.hpp:65
The reservoir property type.
Definition SimulatorTraits.hpp:58
Traits policies for isotropic (scalar) relperm.
Definition SimulatorTraits.hpp:54
The pressure/flow solver type.
Definition SimulatorTraits.hpp:144
Combines the component traits into a single, parametrized type.
Definition SimulatorTraits.hpp:140