36 #ifndef OPENRS_EULERUPSTREAMIMPLICIT_HEADER
37 #define OPENRS_EULERUPSTREAMIMPLICIT_HEADER
39 #include <opm/common/utility/numeric/SparseVector.hpp>
40 #include <opm/common/utility/parameters/ParameterGroup.hpp>
42 #include <opm/porsol/common/ImplicitTransportDefs.hpp>
43 #include <opm/porsol/common/BCRSMatrixBlockAssembler.hpp>
45 #include <opm/grid/common/GridAdapter.hpp>
47 #include <opm/core/transport/implicit/ImplicitAssembly.hpp>
48 #include <opm/core/transport/implicit/ImplicitTransport.hpp>
49 #include <opm/core/transport/implicit/JacobianSystem.hpp>
57 template <
class Gr
idInterface,
class ReservoirProperties,
class BoundaryConditions>
68 const ReservoirProperties& resprop,
69 const BoundaryConditions& boundary);
73 void init(
const Opm::ParameterGroup& param);
77 void init(
const Opm::ParameterGroup& param,
78 const GridInterface& grid,
79 const ReservoirProperties& resprop,
80 const BoundaryConditions& boundary);
84 void initObj(
const GridInterface& grid,
85 const ReservoirProperties& resprop,
86 const BoundaryConditions& boundary);
96 template <
class PressureSolution>
99 const typename GridInterface::Vector& gravity,
100 const PressureSolution& pressure_sol,
101 const Opm::SparseVector<double>& injection_rates)
const;
108 template <
class PressureSolution>
109 void smallTimeStep(std::vector<double>& saturation,
111 const typename GridInterface::Vector& gravity,
112 const PressureSolution& pressure_sol,
113 const Opm::SparseVector<double>& injection_rates)
const;
115 void checkAndPossiblyClampSat(std::vector<double>& s)
const;
122 typedef Dune::FieldVector<double, 1> ScalarVectorBlockType;
123 typedef Dune::FieldMatrix<double, 1, 1> ScalarMatrixBlockType;
125 typedef Dune::BlockVector<ScalarVectorBlockType> ScalarBlockVector;
126 typedef Dune::BCRSMatrix <ScalarMatrixBlockType> ScalarBCRSMatrix;
142 ReservoirProperties myrp_;
147 std::vector<double> porevol_;
149 std::vector<int> periodic_cells_;
150 std::vector<int> periodic_faces_;
151 std::vector<int> periodic_nbfaces_;
152 std::vector<int> periodic_hfaces_;
153 std::vector<int> direclet_cells_;
154 std::vector<double> direclet_sat_;
155 std::vector<double> direclet_hfaces_;
156 std::vector<double> htrans_;
162 #include "EulerUpstreamImplicit_impl.hpp"
Numerical model and support classes needed to model transport of two incompressible fluid phases.
Class for doing simple transport by implicit Euler upstream method for general grid.
Definition: EulerUpstreamImplicit.hpp:59
EulerUpstreamImplicit()
Definition: EulerUpstreamImplicit_impl.hpp:60
void init(const Opm::ParameterGroup ¶m, const GridInterface &grid, const ReservoirProperties &resprop, const BoundaryConditions &boundary)
void initObj(const GridInterface &grid, const ReservoirProperties &resprop, const BoundaryConditions &boundary)
Definition: EulerUpstreamImplicit_impl.hpp:98
bool transportSolve(std::vector< double > &saturation, const double time, const typename GridInterface::Vector &gravity, const PressureSolution &pressure_sol, const Opm::SparseVector< double > &injection_rates) const
Solve transport equation, evolving.
void display()
Definition: EulerUpstreamImplicit_impl.hpp:217
void init(const Opm::ParameterGroup ¶m)
Definition: EulerUpstreamImplicit_impl.hpp:74
EulerUpstreamImplicit(const GridInterface &grid, const ReservoirProperties &resprop, const BoundaryConditions &boundary)
Definition: JacobianSystem.hpp:222
Definition: JacobianSystem.hpp:108
Definition: JacobianSystem.hpp:144
Definition: JacobianSystem.hpp:89
Definition: JacobianSystem.hpp:65
Definition: JacobianSystem.hpp:78
Definition: ImplicitTransport.hpp:105
Definition: ImplicitTransportDefs.hpp:162
Definition: ImplicitTransportDefs.hpp:43
Definition: SinglePointUpwindTwoPhase.hpp:278
Definition: ImplicitTransportDefs.hpp:115
Inverting small matrices.
Definition: ImplicitAssembly.hpp:43
Definition: ImplicitTransport.hpp:45