36#ifndef OPM_STEADYSTATEUPSCALERIMPLICIT_HEADER
37#define OPM_STEADYSTATEUPSCALERIMPLICIT_HEADER
39#include <opm/upscaling/UpscalerBase.hpp>
40#include <opm/porsol/euler/EulerUpstream.hpp>
41#include <opm/porsol/euler/ImplicitCapillarity.hpp>
42#include <opm/grid/common/GridAdapter.hpp>
50 template <
class Traits>
58 typedef typename UpscalerBase<Traits>::GridInterface GridInterface;
59 typedef typename UpscalerBase<Traits>::GridType GridType;
60 enum { Dimension = UpscalerBase<Traits>::Dimension };
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);
98 void setToCapillaryLimit(
double average_s, std::vector<double>& s)
const;
103 typedef typename Traits::template TransportSolver<GridInterface, typename Super::BCs>::Type TransportSolver;
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 void initImpl(
const Opm::ParameterGroup& param)
override;
115 std::vector<double> last_saturation_state_;
119 bool print_inoutflows_;
120 int simulation_steps_;
121 double init_stepsize_;
122 double relperm_threshold_;
123 double maximum_mobility_contrast_;
124 double sat_change_year_;
126 double max_stepsize_;
129 TransportSolver transport_solver_;
130 GridAdapter grid_adapter_;
135#include "SteadyStateUpscalerImplicit_impl.hpp"
void initImpl(const Opm::ParameterGroup ¶m) override
Override from superclass.
Definition SteadyStateUpscalerImplicit_impl.hpp:78
void initSatLimits(std::vector< double > &s) const
Ensure saturations are not outside table.
Definition SteadyStateUpscalerImplicit_impl.hpp:416
double lastSaturationUpscaled() const
Computes the upscaled saturation corresponding to the saturation field returned by lastSaturationStat...
Definition SteadyStateUpscalerImplicit_impl.hpp:400
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)
Does a steady-state upscaling.
Definition SteadyStateUpscalerImplicit_impl.hpp:175
SteadyStateUpscalerImplicit()
Default constructor.
Definition SteadyStateUpscalerImplicit_impl.hpp:56
const std::vector< double > & lastSaturationState() const
Accessor for the steady state saturation field.
Definition SteadyStateUpscalerImplicit_impl.hpp:391
ResProp::MutablePermTensor permtensor_t
A type for the upscaled permeability.
Definition UpscalerBase.hpp:66
UpscalerBase()
Default constructor.
Definition UpscalerBase_impl.hpp:48
Inverting small matrices.
Definition ImplicitAssembly.hpp:43