SimulatorTraits.hpp
Go to the documentation of this file.
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
45//#include <opm/porsol/euler/EulerUpstreamImplicit.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>
75 struct ResProp
76 {
78 };
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
Definition: EulerUpstream.hpp:53
Definition: ImplicitCapillarity.hpp:53
Solve mixed formulation of incompressible flow modelled by Darcy's law.
Definition: IncompFlowSolverHybrid.hpp:366
Definition: MimeticIPAnisoRelpermEvaluator.hpp:86
Definition: MimeticIPEvaluator.hpp:86
A property class for incompressible two-phase flow.
Definition: ReservoirPropertyCapillaryAnisotropicRelperm.hpp:106
A property class for incompressible two-phase flow.
Definition: ReservoirPropertyCapillary.hpp:80
Definition: BlackoilFluid.hpp:32
The inner product template.
Definition: SimulatorTraits.hpp:83
The reservoir property type.
Definition: SimulatorTraits.hpp:76
ReservoirPropertyCapillaryAnisotropicRelperm< Dimension > Type
Definition: SimulatorTraits.hpp:77
Traits for upscaling with anisotropic relperm (tensorial) input.
Definition: SimulatorTraits.hpp:72
Definition: SimulatorTraits.hpp:94
EulerUpstream< GridInterface, RP, BoundaryConditions > Type
Definition: SimulatorTraits.hpp:99
IsotropyPolicy::template ResProp< Dimension >::Type RP
Definition: SimulatorTraits.hpp:96
@ Dimension
Definition: SimulatorTraits.hpp:95
Traits for explicit transport.
Definition: SimulatorTraits.hpp:91
Definition: SimulatorTraits.hpp:128
@ Dimension
Definition: SimulatorTraits.hpp:129
ImplicitCapillarity< GridInterface, RP, BoundaryConditions, IsotropyPolicy::template InnerProduct > Type
Definition: SimulatorTraits.hpp:131
IsotropyPolicy::template ResProp< Dimension >::Type RP
Definition: SimulatorTraits.hpp:130
Traits for implicit transport.
Definition: SimulatorTraits.hpp:125
The inner product template.
Definition: SimulatorTraits.hpp:65
The reservoir property type.
Definition: SimulatorTraits.hpp:58
ReservoirPropertyCapillary< Dimension > Type
Definition: SimulatorTraits.hpp:59
Traits policies for isotropic (scalar) relperm.
Definition: SimulatorTraits.hpp:54
The pressure/flow solver type.
Definition: SimulatorTraits.hpp:144
IncompFlowSolverHybrid< GridInterface, typename RelpermPolicy::template ResProp< GridInterface::Dimension >::Type, BoundaryConditions, RelpermPolicy::template InnerProduct > Type
Definition: SimulatorTraits.hpp:148
Combines the component traits into a single, parametrized type.
Definition: SimulatorTraits.hpp:140