SteadyStateUpscalerImplicit.hpp
Go to the documentation of this file.
1 //===========================================================================
2 //
3 // File: SteadyStateUpscaler.hpp
4 //
5 // Created: Fri Aug 28 14:01:19 2009
6 //
7 // Author(s): Atgeirr F Rasmussen <atgeirr@sintef.no>
8 // B�rd Skaflestad <bard.skaflestad@sintef.no>
9 //
10 // $Date$
11 //
12 // $Revision$
13 //
14 //===========================================================================
15 
16 /*
17  Copyright 2009, 2010 SINTEF ICT, Applied Mathematics.
18  Copyright 2009, 2010 Statoil ASA.
19 
20  This file is part of The Open Reservoir Simulator Project (OpenRS).
21 
22  OpenRS is free software: you can redistribute it and/or modify
23  it under the terms of the GNU General Public License as published by
24  the Free Software Foundation, either version 3 of the License, or
25  (at your option) any later version.
26 
27  OpenRS is distributed in the hope that it will be useful,
28  but WITHOUT ANY WARRANTY; without even the implied warranty of
29  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30  GNU General Public License for more details.
31 
32  You should have received a copy of the GNU General Public License
33  along with OpenRS. If not, see <http://www.gnu.org/licenses/>.
34 */
35 
36 #ifndef OPM_STEADYSTATEUPSCALERIMPLICIT_HEADER
37 #define OPM_STEADYSTATEUPSCALERIMPLICIT_HEADER
38 
40 #include <opm/porsol/euler/EulerUpstream.hpp>
41 #include <opm/porsol/euler/ImplicitCapillarity.hpp>
42 #include <dune/grid/common/GridAdapter.hpp>
43 #include <array>
44 
45 namespace Opm
46 {
51  template <class Traits>
53  {
54  public:
55  // ------- Typedefs and enums -------
56 
62 
63  // ------- Methods -------
64 
67 
79  std::pair<permtensor_t, permtensor_t> upscaleSteadyState(const int flow_direction,
80  const std::vector<double>& initial_saturation,
81  const double boundary_saturation,
82  const double pressure_drop,
83  const permtensor_t& upscaled_perm,bool& success);
84 
88  const std::vector<double>& lastSaturationState() const;
89 
93  double lastSaturationUpscaled() const;
94 
96  void initSatLimits(std::vector<double>& s) const;
97 
98  void setToCapillaryLimit(double average_s, std::vector<double>& s) const;
99 
100 
101  protected:
102  // ------- Typedefs -------
104 
105  // ------- Methods -------
106  template <class FlowSol>
107  void computeInOutFlows(std::pair<double, double>& water_inout,
108  std::pair<double, double>& oil_inout,
109  const FlowSol& flow_solution,
110  const std::vector<double>& saturations) const;
112  virtual void initImpl(const Opm::parameter::ParameterGroup& param);
113 
114 
115  // ------- Data members -------
116  std::vector<double> last_saturation_state_;
126  int max_it_;
128  double dt_sat_tol_;
130  TransportSolver transport_solver_;
131  GridAdapter grid_adapter_;
132  };
133 
134 } // namespace Opm
135 
137 
138 
139 #endif // OPM_STEADYSTATEUPSCALERIMPLICIT_HEADER
Dune::CpGrid GridType
Definition: UpscalerBase.hpp:57
virtual void initImpl(const Opm::parameter::ParameterGroup &param)
Override from superclass.
Definition: SteadyStateUpscalerImplicit_impl.hpp:79
Definition: applier.hpp:18
double dt_sat_tol_
Definition: SteadyStateUpscalerImplicit.hpp:128
SteadyStateUpscalerImplicit()
Default constructor.
Definition: SteadyStateUpscalerImplicit_impl.hpp:57
ResProp::MutablePermTensor permtensor_t
A type for the upscaled permeability.
Definition: UpscalerBase.hpp:63
std::vector< double > last_saturation_state_
Definition: SteadyStateUpscalerImplicit.hpp:116
bool output_ecl_
Definition: SteadyStateUpscalerImplicit.hpp:119
A base class for upscaling.
Definition: UpscalerBase.hpp:52
std::pair< permtensor_t, permtensor_t > upscaleSteadyState(const int flow_direction, const std::vector< double > &initial_saturation, const double boundary_saturation, const double pressure_drop, const permtensor_t &upscaled_perm, bool &success)
Definition: SteadyStateUpscalerImplicit_impl.hpp:148
bool use_maxdiff_
Definition: SteadyStateUpscalerImplicit.hpp:129
TransportSolver transport_solver_
Definition: SteadyStateUpscalerImplicit.hpp:130
int simulation_steps_
Definition: SteadyStateUpscalerImplicit.hpp:121
void computeInOutFlows(std::pair< double, double > &water_inout, std::pair< double, double > &oil_inout, const FlowSol &flow_solution, const std::vector< double > &saturations) const
Definition: SteadyStateUpscalerImplicit_impl.hpp:421
const std::vector< double > & lastSaturationState() const
Definition: SteadyStateUpscalerImplicit_impl.hpp:359
UpscalerBase< Traits >::GridInterface GridInterface
Definition: SteadyStateUpscalerImplicit.hpp:59
GridInterfaceEuler< GridType > GridInterface
Definition: UpscalerBase.hpp:59
UpscalerBase< Traits > Super
Definition: SteadyStateUpscalerImplicit.hpp:57
bool use_gravity_
Definition: SteadyStateUpscalerImplicit.hpp:117
bool print_inoutflows_
Definition: SteadyStateUpscalerImplicit.hpp:120
double relperm_threshold_
Definition: SteadyStateUpscalerImplicit.hpp:123
GridAdapter grid_adapter_
Definition: SteadyStateUpscalerImplicit.hpp:131
bool output_vtk_
Definition: SteadyStateUpscalerImplicit.hpp:118
void setToCapillaryLimit(double average_s, std::vector< double > &s) const
Definition: SteadyStateUpscalerImplicit_impl.hpp:395
void initSatLimits(std::vector< double > &s) const
Ensure saturations are not outside table.
Definition: SteadyStateUpscalerImplicit_impl.hpp:384
double lastSaturationUpscaled() const
Definition: SteadyStateUpscalerImplicit_impl.hpp:368
Definition: SteadyStateUpscalerImplicit.hpp:61
A class for doing steady state upscaling.
Definition: SteadyStateUpscalerImplicit.hpp:52
Traits::template TransportSolver< GridInterface, typename Super::BCs >::Type TransportSolver
Definition: SteadyStateUpscalerImplicit.hpp:103
int max_it_
Definition: SteadyStateUpscalerImplicit.hpp:126
double maximum_mobility_contrast_
Definition: SteadyStateUpscalerImplicit.hpp:124
UpscalerBase< Traits >::GridType GridType
Definition: SteadyStateUpscalerImplicit.hpp:60
double init_stepsize_
Definition: SteadyStateUpscalerImplicit.hpp:122
Super::permtensor_t permtensor_t
Definition: SteadyStateUpscalerImplicit.hpp:58
double max_stepsize_
Definition: SteadyStateUpscalerImplicit.hpp:127
double sat_change_year_
Definition: SteadyStateUpscalerImplicit.hpp:125