My Project
|
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...
#include <ISTLSolverBda.hpp>
Public Types | |
using | AssembledLinearOperatorType = Dune::AssembledLinearOperator< Matrix, Vector, Vector > |
![]() | |
using | AssembledLinearOperatorType = Dune::AssembledLinearOperator< Matrix, Vector, Vector > |
Public Member Functions | |
ISTLSolverBda (const Simulator &simulator, const FlowLinearSolverParameters ¶meters) | |
Construct a system solver. | |
ISTLSolverBda (const Simulator &simulator) | |
Construct a system solver. | |
void | initializeBda () |
void | prepare (const Matrix &M, Vector &b) |
void | setResidual (Vector &) |
void | getResidual (Vector &b) const |
void | setMatrix (const SparseMatrixAdapter &) |
bool | solve (Vector &x) |
![]() | |
ISTLSolver (const Simulator &simulator, const FlowLinearSolverParameters ¶meters, bool forceSerial=false) | |
Construct a system solver. | |
ISTLSolver (const Simulator &simulator) | |
Construct a system solver. | |
void | initialize () |
void | eraseMatrix () |
void | setActiveSolver (const int num) |
int | numAvailableSolvers () |
void | initPrepare (const Matrix &M, Vector &b) |
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 |
void | setDomainIndex (const int index) |
bool | isNlddLocalSolver () const |
Protected Types | |
using | ParentType = 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 | CommunicationType = Dune::Communication< int > |
![]() | |
enum | { enableMICP = getPropValue<TypeTag, Properties::EnableMICP>() } |
enum | { enablePolymerMolarWeight = getPropValue<TypeTag, Properties::EnablePolymerMW>() } |
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 | CommunicationType = Dune::Communication< int > |
Protected Attributes | |
std::unique_ptr< detail::BdaSolverInfo< Matrix, Vector > > | bdaBridge_ |
![]() | |
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< int > | overlapRows_ |
std::vector< int > | interiorRows_ |
int | domainIndex_ = -1 |
bool | useWellConn_ |
std::vector< FlowLinearSolverParameters > | parameters_ |
bool | forceSerial_ = false |
std::vector< PropertyTree > | prm_ |
std::shared_ptr< CommunicationType > | comm_ |
Static Protected Attributes | |
static constexpr std::size_t | pressureIndex = GetPropType<TypeTag, Properties::Indices>::pressureSwitchIdx |
![]() | |
static constexpr std::size_t | pressureIndex = GetPropType<TypeTag, Properties::Indices>::pressureSwitchIdx |
static constexpr bool | isIncompatibleWithCprw = enableMICP || enablePolymerMolarWeight |
Additional Inherited Members | |
![]() | |
static void | registerParameters () |
![]() | |
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. | |
std::function< Vector()> | getWeightsCalculator (const PropertyTree &prm, const Matrix &matrix, std::size_t pressIndex) const |
Matrix & | getMatrix () |
const Matrix & | getMatrix () const |
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 .
|
inline |
Construct a system solver.
[in] | simulator | The opm-models simulator object |
[in] | parameters | Explicit parameters for solver setup, do not read them from command line parameters. |
|
inlineexplicit |
Construct a system solver.
[in] | simulator | The opm-models simulator object |