My Project
Loading...
Searching...
No Matches
Opm::ISTLSolverEbos< TypeTag > Class Template Reference

This class solves the fully implicit black-oil system by solving the reduced system (after eliminating well variables) as a block-structured matrix (one block for all cell variables) for a fixed number of cell variables np . More...

Inheritance diagram for Opm::ISTLSolverEbos< TypeTag >:
Opm::ISTLSolverEbosBda< TypeTag >

Public Types

using AssembledLinearOperatorType = Dune::AssembledLinearOperator< Matrix, Vector, Vector >
 

Public Member Functions

 ISTLSolverEbos (const Simulator &simulator, const FlowLinearSolverParameters &parameters, bool forceSerial=false)
 Construct a system solver.
 
 ISTLSolverEbos (const Simulator &simulator)
 Construct a system solver.
 
void initialize ()
 
void eraseMatrix ()
 
void setActiveSolver (const int num)
 
int numAvailableSolvers ()
 
void prepare (const SparseMatrixAdapter &M, Vector &b)
 
void prepare (const Matrix &M, Vector &b)
 
void setResidual (Vector &)
 
void getResidual (Vector &b) const
 
void setMatrix (const SparseMatrixAdapter &)
 
int getSolveCount () const
 
void resetSolveCount ()
 
bool solve (Vector &x)
 
int iterations () const
 Solve the system of linear equations Ax = b, with A being the combined derivative matrix of the residual and b being the residual itself.
 
const std::any & parallelInformation () const
 
const CommunicationType * comm () const
 

Static Public Member Functions

static void registerParameters ()
 

Protected Types

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::EclWellModel >
 
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 CommunicationType = Dune::CollectiveCommunication< int >
 

Protected Member Functions

void 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.
 
Vector getTrueImpesWeights (int pressureVarIndex) const
 
Matrix & getMatrix ()
 
const Matrix & getMatrix () const
 

Protected Attributes

const Simulator & simulator_
 
int iterations_
 
int solveCount_
 
bool converged_
 
std::any parallelInformation_
 
Matrix * matrix_
 
Vector * rhs_
 
int activeSolverNum_ = 0
 
std::vector< detail::FlexibleSolverInfo< Matrix, Vector, CommunicationType > > flexibleSolver_
 
std::vector< intoverlapRows_
 
std::vector< intinteriorRows_
 
bool useWellConn_
 
std::vector< FlowLinearSolverParametersparameters_
 
bool forceSerial_ = false
 
std::vector< PropertyTreeprm_
 
std::shared_ptr< CommunicationType > comm_
 

Static Protected Attributes

static constexpr std::size_t pressureIndex = GetPropType<TypeTag, Properties::Indices>::pressureSwitchIdx
 

Detailed Description

template<class TypeTag>
class Opm::ISTLSolverEbos< TypeTag >

This class solves the fully implicit black-oil system by solving the reduced system (after eliminating well variables) as a block-structured matrix (one block for all cell variables) for a fixed number of cell variables np .

Constructor & Destructor Documentation

◆ ISTLSolverEbos() [1/2]

template<class TypeTag >
Opm::ISTLSolverEbos< TypeTag >::ISTLSolverEbos ( const Simulator &  simulator,
const FlowLinearSolverParameters parameters,
bool  forceSerial = false 
)
inline

Construct a system solver.

Parameters
[in]simulatorThe opm-models simulator object
[in]parametersExplicit parameters for solver setup, do not read them from command line parameters.
[in]forceSerialIf true, will set up a serial linear solver only, local to the current rank, instead of creating a parallel (MPI distributed) linear solver.

◆ ISTLSolverEbos() [2/2]

template<class TypeTag >
Opm::ISTLSolverEbos< TypeTag >::ISTLSolverEbos ( const Simulator &  simulator)
inlineexplicit

Construct a system solver.

Parameters
[in]simulatorThe opm-models simulator object

Member Function Documentation

◆ iterations()

template<class TypeTag >
int Opm::ISTLSolverEbos< TypeTag >::iterations ( ) const
inline

Solve the system of linear equations Ax = b, with A being the combined derivative matrix of the residual and b being the residual itself.

Parameters
[in]residualresidual object containing A and b.
Returns
the solution x

◆ parallelInformation()

template<class TypeTag >
const std::any & Opm::ISTLSolverEbos< TypeTag >::parallelInformation ( ) const
inline


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