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 
48 namespace 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 
71  struct Anisotropic
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>
124  struct ImplicitCap
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>
143  struct FlowSolver
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:52
Definition: BlackoilFluid.hpp:31
The reservoir property type.
Definition: SimulatorTraits.hpp:75
Definition: MimeticIPEvaluator.hpp:85
Definition: SimulatorTraits.hpp:127
Traits policies for isotropic (scalar) relperm.
Definition: SimulatorTraits.hpp:53
ReservoirPropertyCapillaryAnisotropicRelperm< Dimension > Type
Definition: SimulatorTraits.hpp:77
Traits for explicit transport.
Definition: SimulatorTraits.hpp:90
Definition: MimeticIPAnisoRelpermEvaluator.hpp:85
The inner product template.
Definition: SimulatorTraits.hpp:64
The inner product template.
Definition: SimulatorTraits.hpp:82
Definition: SimulatorTraits.hpp:95
Definition: SimulatorTraits.hpp:93
A property class for incompressible two-phase flow.
Definition: ReservoirPropertyCapillaryAnisotropicRelperm.hpp:104
A property class for incompressible two-phase flow.
Definition: ReservoirPropertyCapillary.hpp:79
Traits for upscaling with anisotropic relperm (tensorial) input.
Definition: SimulatorTraits.hpp:71
IsotropyPolicy::template ResProp< Dimension >::Type RP
Definition: SimulatorTraits.hpp:130
EulerUpstream< GridInterface, RP, BoundaryConditions > Type
Definition: SimulatorTraits.hpp:99
The reservoir property type.
Definition: SimulatorTraits.hpp:57
IncompFlowSolverHybrid< GridInterface, typename RelpermPolicy::template ResProp< GridInterface::Dimension >::Type, BoundaryConditions, RelpermPolicy::template InnerProduct > Type
Definition: SimulatorTraits.hpp:148
The pressure/flow solver type.
Definition: SimulatorTraits.hpp:143
ReservoirPropertyCapillary< Dimension > Type
Definition: SimulatorTraits.hpp:59
Combines the component traits into a single, parametrized type.
Definition: SimulatorTraits.hpp:139
ImplicitCapillarity< GridInterface, RP, BoundaryConditions, IsotropyPolicy::template InnerProduct > Type
Definition: SimulatorTraits.hpp:131
Solve mixed formulation of incompressible flow modelled by Darcy's law ] The solver is based on a hyb...
Definition: IncompFlowSolverHybrid.hpp:366
IsotropyPolicy::template ResProp< Dimension >::Type RP
Definition: SimulatorTraits.hpp:96
Traits for implicit transport.
Definition: SimulatorTraits.hpp:124
Definition: SimulatorTraits.hpp:129
Definition: ImplicitCapillarity.hpp:52