36 #ifndef OPENRS_EULERUPSTREAMIMPLICIT_HEADER 37 #define OPENRS_EULERUPSTREAMIMPLICIT_HEADER 39 #include <boost/unordered_map.hpp> 41 #include <opm/core/utility/SparseVector.hpp> 42 #include <opm/core/utility/parameters/ParameterGroup.hpp> 44 #include <opm/porsol/common/ImplicitTransportDefs.hpp> 45 #include <opm/porsol/common/BCRSMatrixBlockAssembler.hpp> 47 #include <dune/grid/common/GridAdapter.hpp> 49 #include <opm/core/transport/implicit/ImplicitAssembly.hpp> 50 #include <opm/core/transport/implicit/ImplicitTransport.hpp> 51 #include <opm/core/transport/implicit/JacobianSystem.hpp> 52 #include <opm/core/transport/implicit/SinglePointUpwindTwoPhase.hpp> 59 template <
class Gr
idInterface,
class ReservoirProperties,
class BoundaryConditions>
70 const ReservoirProperties& resprop,
71 const BoundaryConditions& boundary);
75 void init(
const Opm::ParameterGroup& param);
79 void init(
const Opm::ParameterGroup& param,
80 const GridInterface& grid,
81 const ReservoirProperties& resprop,
82 const BoundaryConditions& boundary);
86 void initObj(
const GridInterface& grid,
87 const ReservoirProperties& resprop,
88 const BoundaryConditions& boundary);
98 template <
class PressureSolution>
101 const typename GridInterface::Vector& gravity,
102 const PressureSolution& pressure_sol,
103 const Opm::SparseVector<double>& injection_rates)
const;
110 template <
class PressureSolution>
111 void smallTimeStep(std::vector<double>& saturation,
113 const typename GridInterface::Vector& gravity,
114 const PressureSolution& pressure_sol,
115 const Opm::SparseVector<double>& injection_rates)
const;
117 void checkAndPossiblyClampSat(std::vector<double>& s)
const;
123 typedef Opm::SinglePointUpwindTwoPhase<TwophaseFluid> TransportModel;
125 typedef Opm::ImplicitTransportDefault::NewtonVectorCollection< ::std::vector<double> > NVecColl;
126 typedef Opm::ImplicitTransportDefault::JacobianSystem < struct CSRMatrix, NVecColl > JacSys;
127 typedef Opm::ImplicitTransportLinAlgSupport::CSRMatrixUmfpackSolver
LinearSolver;
129 typedef Dune::FieldVector<double, 1> ScalarVectorBlockType;
130 typedef Dune::FieldMatrix<double, 1, 1> ScalarMatrixBlockType;
132 typedef Dune::BlockVector<ScalarVectorBlockType> ScalarBlockVector;
133 typedef Dune::BCRSMatrix <ScalarMatrixBlockType> ScalarBCRSMatrix;
135 typedef Opm::ImplicitTransportDefault::NewtonVectorCollection< ScalarBlockVector > NVecColl;
136 typedef Opm::ImplicitTransportDefault::JacobianSystem < ScalarBCRSMatrix, NVecColl > JacSys;
140 typedef Opm::ImplicitTransport<TransportModel ,
143 Opm::ImplicitTransportDefault::VectorNegater,
144 Opm::ImplicitTransportDefault::VectorZero ,
145 Opm::ImplicitTransportDefault::MatrixZero ,
146 Opm::ImplicitTransportDefault::VectorAssign > TransportSolver;
153 ReservoirProperties myrp_;
161 std::vector<double> porevol_;
163 std::vector<int> periodic_cells_;
164 std::vector<int> periodic_faces_;
165 std::vector<int> periodic_nbfaces_;
166 std::vector<int> periodic_hfaces_;
167 std::vector<int> direclet_cells_;
168 std::vector<double> direclet_sat_;
169 std::vector<double> direclet_hfaces_;
171 std::vector<double> htrans_;
172 Opm::ImplicitTransportDetails::NRControl ctrl_;
179 #include "EulerUpstreamImplicit_impl.hpp" 181 #endif // OPENRS_EULERUPSTREAM_HEADER void display()
Definition: EulerUpstreamImplicit_impl.hpp:219
Definition: ImplicitTransportDefs.hpp:168
Definition: ImplicitTransportDefs.hpp:121
void initObj(const GridInterface &grid, const ReservoirProperties &resprop, const BoundaryConditions &boundary)
Definition: EulerUpstreamImplicit_impl.hpp:98
Class for doing simple transport by implicit Euler upstream method for general grid.
Definition: EulerUpstreamImplicit.hpp:60
Class for immiscible dead oil and dry gas.
Definition: applier.hpp:18
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 init(const Opm::ParameterGroup ¶m)
Definition: EulerUpstreamImplicit_impl.hpp:74
Definition: ImplicitTransportDefs.hpp:49
EulerUpstreamImplicit()
Definition: EulerUpstreamImplicit_impl.hpp:60