opm-simulators
Opm::ISTLSolverSystem< TypeTag > Class Template Reference
Inheritance diagram for Opm::ISTLSolverSystem< TypeTag >:
Opm::ISTLSolver< TypeTag > Opm::AbstractISTLSolver< GetPropType< TypeTag, Properties::SparseMatrixAdapter >, GetPropType< TypeTag, Properties::GlobalEqVector > >

Public Member Functions

 ISTLSolverSystem (const Simulator &simulator, const FlowLinearSolverParameters &parameters, bool forceSerial=false)
 
 ISTLSolverSystem (const Simulator &simulator)
 
void prepare (const SparseMatrixAdapter &M, Vector &b) override
 
void prepare (const Matrix &M, Vector &b) override
 
bool solve (Vector &x) override
 
- Public Member Functions inherited from Opm::ISTLSolver< TypeTag >
 ISTLSolver (const Simulator &simulator, const FlowLinearSolverParameters &parameters, bool forceSerial=false)
 Construct a system solver. More...
 
 ISTLSolver (const Simulator &simulator)
 Construct a system solver. More...
 
void initialize ()
 
void eraseMatrix () override
 Signals that the memory for the matrix internally in the solver could be erased. More...
 
void setActiveSolver (const int num) override
 Set the active solver by its index. More...
 
int numAvailableSolvers () const override
 Get the number of available solvers. More...
 
void initPrepare (const Matrix &M, Vector &b)
 
void prepare (const SparseMatrixAdapter &M, Vector &b) override
 
void prepare (const Matrix &M, Vector &b) override
 
void setResidual (Vector &) override
 
void getResidual (Vector &b) const override
 
void setMatrix (const SparseMatrixAdapter &) override
 
int getSolveCount () const override
 Get the count of how many times the solver has been called. More...
 
void resetSolveCount ()
 
bool solve (Vector &x) override
 
int iterations () const override
 Solve the system of linear equations Ax = b, with A being the combined derivative matrix of the residual and b being the residual itself. More...
 
const std::any & parallelInformation () const
 
const CommunicationType * comm () const override
 Get the communication object used by the solver. More...
 
void setDomainIndex (const int index)
 
bool isNlddLocalSolver () const
 
- Public Member Functions inherited from Opm::AbstractISTLSolver< GetPropType< TypeTag, Properties::SparseMatrixAdapter >, GetPropType< TypeTag, Properties::GlobalEqVector > >
virtual void prepare (const Matrix &M, GetPropType< TypeTag, Properties::GlobalEqVector > &b)=0
 Prepare the solver with the given matrix and right-hand side vector. More...
 
virtual void prepare (const GetPropType< TypeTag, Properties::SparseMatrixAdapter > &M, GetPropType< TypeTag, Properties::GlobalEqVector > &b)=0
 Prepare the solver with the given sparse matrix and right-hand side vector. More...
 
virtual void setResidual (GetPropType< TypeTag, Properties::GlobalEqVector > &b)=0
 Set the residual vector. More...
 
virtual void getResidual (GetPropType< TypeTag, Properties::GlobalEqVector > &b) const=0
 Get the residual vector. More...
 
virtual void setMatrix (const GetPropType< TypeTag, Properties::SparseMatrixAdapter > &M)=0
 Set the matrix for the solver. More...
 
virtual bool solve (GetPropType< TypeTag, Properties::GlobalEqVector > &x)=0
 Solve the system of equations Ax = b. More...
 

Protected Types

enum  { enablePolymerMolarWeight = getPropValue<TypeTag, Properties::EnablePolymerMW>() }
 
using Scalar = GetPropType< TypeTag, Properties::Scalar >
 
using Vector = GetPropType< TypeTag, Properties::GlobalEqVector >
 
using SparseMatrixAdapter = GetPropType< TypeTag, Properties::SparseMatrixAdapter >
 
using Matrix = typename SparseMatrixAdapter::IstlMatrix
 
using Simulator = GetPropType< TypeTag, Properties::Simulator >
 
using Indices = GetPropType< TypeTag, Properties::Indices >
 
using CommunicationType = Dune::Communication< int >
 
using Parent = ISTLSolver< TypeTag >
 
- Protected Types inherited from Opm::ISTLSolver< TypeTag >
using GridView = GetPropType< TypeTag, Properties::GridView >
 
using Scalar = GetPropType< TypeTag, Properties::Scalar >
 
using SparseMatrixAdapter = GetPropType< TypeTag, Properties::SparseMatrixAdapter >
 
using Vector = GetPropType< TypeTag, Properties::GlobalEqVector >
 
using Indices = GetPropType< TypeTag, Properties::Indices >
 
using WellModel = GetPropType< TypeTag, Properties::WellModel >
 
using Simulator = GetPropType< TypeTag, Properties::Simulator >
 
using Matrix = typename SparseMatrixAdapter::IstlMatrix
 
using ThreadManager = GetPropType< TypeTag, Properties::ThreadManager >
 
using ElementContext = GetPropType< TypeTag, Properties::ElementContext >
 
using AbstractSolverType = Dune::InverseOperator< Vector, Vector >
 
using AbstractOperatorType = Dune::AssembledLinearOperator< Matrix, Vector, Vector >
 
using AbstractPreconditionerType = Dune::PreconditionerWithUpdate< Vector, Vector >
 
using WellModelOperator = WellModelAsLinearOperator< WellModel, Vector, Vector >
 
using ElementMapper = GetPropType< TypeTag, Properties::ElementMapper >
 
using ElementChunksType = ElementChunks< GridView, Dune::Partitions::All >
 
using CommunicationType = Dune::Communication< int >
 

Static Protected Attributes

static constexpr std::size_t pressureIndex = Indices::pressureSwitchIdx
 
static constexpr bool isIncompatibleWithCprw = enablePolymerMolarWeight
 
static constexpr auto _0 = Dune::Indices::_0
 
static constexpr auto _1 = Dune::Indices::_1
 
- Static Protected Attributes inherited from Opm::ISTLSolver< TypeTag >
static constexpr std::size_t pressureIndex = GetPropType<TypeTag, Properties::Indices>::pressureSwitchIdx
 
static constexpr bool enablePolymerMolarWeight = getPropValue<TypeTag, Properties::EnablePolymerMW>()
 
static constexpr bool isIncompatibleWithCprw = enablePolymerMolarWeight
 

Additional Inherited Members

- Public Types inherited from Opm::ISTLSolver< TypeTag >
using AssembledLinearOperatorType = Dune::AssembledLinearOperator< Matrix, Vector, Vector >
 
- Public Types inherited from Opm::AbstractISTLSolver< GetPropType< TypeTag, Properties::SparseMatrixAdapter >, GetPropType< TypeTag, Properties::GlobalEqVector > >
using CommunicationType = Dune::Communication< int >
 
using Matrix = typename GetPropType< TypeTag, Properties::SparseMatrixAdapter > ::IstlMatrix
 
- Static Public Member Functions inherited from Opm::ISTLSolver< TypeTag >
static void registerParameters ()
 
- Protected Member Functions inherited from Opm::ISTLSolver< TypeTag >
bool checkConvergence (const Dune::InverseOperatorResult &result) const
 
bool isParallel () const
 
void prepareFlexibleSolver ()
 
bool shouldCreateSolver () const
 Return true if we should (re)create the whole solver, instead of just calling update() on the preconditioner. More...
 
std::function< Vector()> getWeightsCalculator (const PropertyTree &prm, const Matrix &matrix, std::size_t pressIndex) const
 
Matrix & getMatrix ()
 
const Matrix & getMatrix () const
 
- Static Protected Member Functions inherited from Opm::AbstractISTLSolver< GetPropType< TypeTag, Properties::SparseMatrixAdapter >, GetPropType< TypeTag, Properties::GlobalEqVector > >
static bool checkConvergence (const Dune::InverseOperatorResult &result, const FlowLinearSolverParameters &parameters)
 Check the convergence of the linear solver. More...
 
- Protected Attributes inherited from Opm::ISTLSolver< TypeTag >
const Simulator & simulator_
 
int iterations_
 
int solveCount_
 
std::any parallelInformation_
 
Matrix * matrix_
 
Vector * rhs_
 
int activeSolverNum_ = 0
 
std::vector< detail::FlexibleSolverInfo< Matrix, Vector, CommunicationType > > flexibleSolver_
 
std::vector< int > overlapRows_
 
std::vector< int > interiorRows_
 
int domainIndex_ = -1
 
bool useWellConn_
 
std::vector< FlowLinearSolverParametersparameters_
 
bool forceSerial_ = false
 
std::vector< PropertyTreeprm_
 
std::shared_ptr< CommunicationType > comm_
 
std::unique_ptr< ElementChunksType > element_chunks_
 

The documentation for this class was generated from the following file: