Opm::Linear Namespace Reference

Classes

class  BiCGStabSolver
 Implements a preconditioned stabilized BiCG linear solver. More...
 
class  BlackList
 Expresses which degrees of freedom are blacklisted for the parallel linear solvers and which domestic indices they correspond to. More...
 
struct  BorderIndex
 A single index intersecting with the process boundary. More...
 
class  CombinedCriterion
 Convergence criterion which looks at the absolute value of the residual and fails if the linear solver stagnates. More...
 
class  ConvergenceCriterion
 Base class for all convergence criteria which only defines an virtual API. More...
 
class  DomesticOverlapFromBCRSMatrix
 This class creates and manages the foreign overlap given an initial list of border indices and a BCRS matrix. More...
 
class  ElementBorderListFromGrid
 Uses communication on the grid to find the initial seed list of indices for methods which use element-based degrees of freedom. More...
 
class  FixPointCriterion
 Provides a convergence criterion for the linear solvers which looks at the weighted maximum of the difference between two iterations. More...
 
class  ForeignOverlapFromBCRSMatrix
 This class creates and manages the foreign overlap given an initial list of border indices and a BCRS matrix. More...
 
class  GlobalIndices
 This class maps domestic row indices to and from "global" indices which is used to construct an algebraic overlap for the parallel linear solvers. More...
 
struct  IndexDistanceNpeers
 This structure stores an index, a process rank, and the number of processes which "see" the degree of freedom with the index. More...
 
struct  IndexRank
 This structure stores an index and a process rank. More...
 
struct  IndexRankDist
 This structure stores an index, a process rank, and the distance of the degree of freedom to the process border. More...
 
class  IstlSparseMatrixAdapter
 A sparse matrix interface backend for BCRSMatrix from dune-istl. More...
 
class  NullBorderListCreator
 This is a grid manager which does not create any border list. More...
 
class  OverlappingBCRSMatrix
 An overlap aware block-compressed row storage (BCRS) matrix. More...
 
class  OverlappingBlockVector
 An overlap aware block vector. More...
 
class  OverlappingOperator
 An overlap aware linear operator usable by ISTL. More...
 
class  OverlappingPreconditioner
 An overlap aware preconditioner for any ISTL linear solver. More...
 
class  OverlappingScalarProduct
 An overlap aware ISTL scalar product. More...
 
class  ParallelAmgBackend
 Provides a linear solver backend using the parallel algebraic multi-grid (AMG) linear solver from DUNE-ISTL. More...
 
class  ParallelBaseBackend
 Provides the common code which is required by most linear solvers. More...
 
class  ParallelBiCGStabSolverBackend
 Implements a generic linear solver abstraction. More...
 
class  ParallelIstlSolverBackend
 Provides all unmodified linear solvers from dune-istl. More...
 
struct  PeerIndexGlobalIndex
 This structure stores a local index on a peer process and a global index. More...
 
class  PeerSet
 A set of process ranks. More...
 
class  PreconditionerWrapperILU
 
class  ResidReductionCriterion
 Provides a convergence criterion which looks at the reduction of the two-norm of the residual for the linear solvers. More...
 
class  SeedList
 The list of indices which are on the process boundary. More...
 
class  SolverReport
 Collects summary information about the execution of the linear solver. More...
 
class  SolverWrapperRestartedGMRes
 Solver wrapper for the restarted GMRES solver of dune-istl. More...
 
class  TpsaBlockRef
 Handle on one block of the TPSA matrix. More...
 
class  TpsaMatrix
 TPSA matrix for linear elasticity. More...
 
struct  TpsaMatrixRow0
 Proxy for block row 0 (u_x) of TpsaMatrixView. More...
 
struct  TpsaMatrixRow1
 Proxy for block row 1 (u_y) of TpsaMatrixView. More...
 
struct  TpsaMatrixRow2
 Proxy for block row 2 (u_z) of TpsaMatrixView. More...
 
struct  TpsaMatrixRow3
 Proxy for block row 3 (rotation) of TpsaMatrixView. More...
 
struct  TpsaMatrixRow4
 Proxy for block row 4 (solid pressure) of TpsaMatrixView. More...
 
class  TpsaMatrixView
 Lightweight, non-owning 5x5 view over the sub-matrices owned by TpsaMatrix. Provides the operator interface used by Dune solvers plus sub-matrix block access. More...
 
class  TpsaVector
 Vector type for TPSA linear elasticity. More...
 
class  VertexBorderListFromGrid
 Uses communication on the grid to find the initial seed list of indices. More...
 
class  WeightedResidualReductionCriterion
 Convergence criterion which looks at the weighted absolute value of the residual. More...
 

Typedefs

using Index = int
 The type of an index of a degree of freedom. More...
 
using ProcessRank = unsigned
 The type of the rank of a process. More...
 
using BorderDistance = unsigned
 The type representing the distance of an index to the border. More...
 
using BorderList = std::list< BorderIndex >
 This class managages a list of indices which are on the border of a process' partition of the grid. More...
 
using OverlapWithPeer = std::vector< IndexDistanceNpeers >
 The list of indices which overlap with a peer rank. More...
 
using OverlapByRank = std::map< ProcessRank, OverlapWithPeer >
 A type mapping the process rank to the list of indices shared with this peer. More...
 
using OverlapByIndex = std::vector< std::map< ProcessRank, BorderDistance > >
 Maps each index to a list of processes . More...
 
using DomesticOverlapWithPeer = std::vector< Index >
 The list of domestic indices are owned by peer rank. More...
 
using DomesticOverlapByRank = std::map< ProcessRank, DomesticOverlapWithPeer >
 A type mapping the process rank to the list of domestic indices which are owned by the peer. More...
 
template<typename Scalar >
using DispDispMatrix00T = Dune::BCRSMatrix< MatrixBlock< Scalar, numDispDofs, numDispDofs > >
 
template<typename Scalar >
using DispDispMatrix11T = Dune::BCRSMatrix< MatrixBlock< Scalar, numDispDofs, numDispDofs > >
 
template<typename Scalar >
using DispDispMatrix22T = Dune::BCRSMatrix< MatrixBlock< Scalar, numDispDofs, numDispDofs > >
 
template<typename Scalar >
using RotRotMatrixT = Dune::BCRSMatrix< MatrixBlock< Scalar, numRotDofs, numRotDofs > >
 
template<typename Scalar >
using SPresSPresMatrixT = Dune::BCRSMatrix< MatrixBlock< Scalar, numSolidPresDofs, numSolidPresDofs > >
 
template<typename Scalar >
using DispRotMatrix0T = Dune::BCRSMatrix< MatrixBlock< Scalar, numDispDofs, numRotDofs > >
 
template<typename Scalar >
using DispRotMatrix1T = DispRotMatrix0T< Scalar >
 
template<typename Scalar >
using DispRotMatrix2T = DispRotMatrix0T< Scalar >
 
template<typename Scalar >
using DispSPresMatrix0T = Dune::BCRSMatrix< MatrixBlock< Scalar, numDispDofs, numSolidPresDofs > >
 
template<typename Scalar >
using DispSPresMatrix1T = DispSPresMatrix0T< Scalar >
 
template<typename Scalar >
using DispSPresMatrix2T = DispSPresMatrix0T< Scalar >
 
template<typename Scalar >
using RotDispMatrix0T = Dune::BCRSMatrix< MatrixBlock< Scalar, numRotDofs, numDispDofs > >
 
template<typename Scalar >
using RotDispMatrix1T = RotDispMatrix0T< Scalar >
 
template<typename Scalar >
using RotDispMatrix2T = RotDispMatrix0T< Scalar >
 
template<typename Scalar >
using RotSPresMatrixT = Dune::BCRSMatrix< MatrixBlock< Scalar, numRotDofs, numSolidPresDofs > >
 
template<typename Scalar >
using SPresDispMatrix0T = Dune::BCRSMatrix< MatrixBlock< Scalar, numSolidPresDofs, numDispDofs > >
 
template<typename Scalar >
using SPresDispMatrix1T = SPresDispMatrix0T< Scalar >
 
template<typename Scalar >
using SPresDispMatrix2T = SPresDispMatrix0T< Scalar >
 
template<typename Scalar >
using SPresRotMatrixT = Dune::BCRSMatrix< MatrixBlock< Scalar, numSolidPresDofs, numRotDofs > >
 
template<typename Scalar >
using DispVector0T = Dune::BlockVector< Dune::FieldVector< Scalar, numDispDofs > >
 
template<typename Scalar >
using DispVector1T = DispVector0T< Scalar >
 
template<typename Scalar >
using DispVector2T = DispVector0T< Scalar >
 
template<typename Scalar >
using RotVectorT = Dune::BlockVector< Dune::FieldVector< Scalar, numRotDofs > >
 
template<typename Scalar >
using SPresVectorT = Dune::BlockVector< Dune::FieldVector< Scalar, numSolidPresDofs > >
 
template<typename Scalar >
using TpsaMultiVector = Dune::MultiTypeBlockVector< DispVector0T< Scalar >, DispVector1T< Scalar >, DispVector2T< Scalar >, RotVectorT< Scalar >, SPresVectorT< Scalar > >
 The vector the Krylov solver and the preconditioner operate on. More...
 

Variables

constexpr int numDispDofs = 1
 Number of dofs of each field. More...
 
constexpr int numRotDofs = 3
 
constexpr int numSolidPresDofs = 1
 
constexpr int numTpsaFields = 5
 Number of fields the TPSA system is split into. More...
 
constexpr int numTpsaEq = 3 * numDispDofs + numRotDofs + numSolidPresDofs
 Total number of TPSA equations per cell. More...
 

Typedef Documentation

◆ BorderDistance

using Opm::Linear::BorderDistance = typedef unsigned

The type representing the distance of an index to the border.

◆ BorderList

using Opm::Linear::BorderList = typedef std::list<BorderIndex>

This class managages a list of indices which are on the border of a process' partition of the grid.

◆ DispDispMatrix00T

template<typename Scalar >
using Opm::Linear::DispDispMatrix00T = typedef Dune::BCRSMatrix<MatrixBlock<Scalar, numDispDofs, numDispDofs> >

◆ DispDispMatrix11T

template<typename Scalar >
using Opm::Linear::DispDispMatrix11T = typedef Dune::BCRSMatrix<MatrixBlock<Scalar, numDispDofs, numDispDofs> >

◆ DispDispMatrix22T

template<typename Scalar >
using Opm::Linear::DispDispMatrix22T = typedef Dune::BCRSMatrix<MatrixBlock<Scalar, numDispDofs, numDispDofs> >

◆ DispRotMatrix0T

template<typename Scalar >
using Opm::Linear::DispRotMatrix0T = typedef Dune::BCRSMatrix<MatrixBlock<Scalar, numDispDofs, numRotDofs> >

◆ DispRotMatrix1T

template<typename Scalar >
using Opm::Linear::DispRotMatrix1T = typedef DispRotMatrix0T<Scalar>

◆ DispRotMatrix2T

template<typename Scalar >
using Opm::Linear::DispRotMatrix2T = typedef DispRotMatrix0T<Scalar>

◆ DispSPresMatrix0T

template<typename Scalar >
using Opm::Linear::DispSPresMatrix0T = typedef Dune::BCRSMatrix<MatrixBlock<Scalar, numDispDofs, numSolidPresDofs> >

◆ DispSPresMatrix1T

template<typename Scalar >
using Opm::Linear::DispSPresMatrix1T = typedef DispSPresMatrix0T<Scalar>

◆ DispSPresMatrix2T

template<typename Scalar >
using Opm::Linear::DispSPresMatrix2T = typedef DispSPresMatrix0T<Scalar>

◆ DispVector0T

template<typename Scalar >
using Opm::Linear::DispVector0T = typedef Dune::BlockVector<Dune::FieldVector<Scalar, numDispDofs> >

◆ DispVector1T

template<typename Scalar >
using Opm::Linear::DispVector1T = typedef DispVector0T<Scalar>

◆ DispVector2T

template<typename Scalar >
using Opm::Linear::DispVector2T = typedef DispVector0T<Scalar>

◆ DomesticOverlapByRank

A type mapping the process rank to the list of domestic indices which are owned by the peer.

◆ DomesticOverlapWithPeer

using Opm::Linear::DomesticOverlapWithPeer = typedef std::vector<Index>

The list of domestic indices are owned by peer rank.

◆ Index

using Opm::Linear::Index = typedef int

The type of an index of a degree of freedom.

◆ OverlapByIndex

using Opm::Linear::OverlapByIndex = typedef std::vector<std::map<ProcessRank, BorderDistance> >

Maps each index to a list of processes .

◆ OverlapByRank

A type mapping the process rank to the list of indices shared with this peer.

◆ OverlapWithPeer

using Opm::Linear::OverlapWithPeer = typedef std::vector<IndexDistanceNpeers>

The list of indices which overlap with a peer rank.

◆ ProcessRank

using Opm::Linear::ProcessRank = typedef unsigned

The type of the rank of a process.

◆ RotDispMatrix0T

template<typename Scalar >
using Opm::Linear::RotDispMatrix0T = typedef Dune::BCRSMatrix<MatrixBlock<Scalar, numRotDofs, numDispDofs> >

◆ RotDispMatrix1T

template<typename Scalar >
using Opm::Linear::RotDispMatrix1T = typedef RotDispMatrix0T<Scalar>

◆ RotDispMatrix2T

template<typename Scalar >
using Opm::Linear::RotDispMatrix2T = typedef RotDispMatrix0T<Scalar>

◆ RotRotMatrixT

template<typename Scalar >
using Opm::Linear::RotRotMatrixT = typedef Dune::BCRSMatrix<MatrixBlock<Scalar, numRotDofs, numRotDofs> >

◆ RotSPresMatrixT

template<typename Scalar >
using Opm::Linear::RotSPresMatrixT = typedef Dune::BCRSMatrix<MatrixBlock<Scalar, numRotDofs, numSolidPresDofs> >

◆ RotVectorT

template<typename Scalar >
using Opm::Linear::RotVectorT = typedef Dune::BlockVector<Dune::FieldVector<Scalar, numRotDofs> >

◆ SPresDispMatrix0T

template<typename Scalar >
using Opm::Linear::SPresDispMatrix0T = typedef Dune::BCRSMatrix<MatrixBlock<Scalar, numSolidPresDofs, numDispDofs> >

◆ SPresDispMatrix1T

template<typename Scalar >
using Opm::Linear::SPresDispMatrix1T = typedef SPresDispMatrix0T<Scalar>

◆ SPresDispMatrix2T

template<typename Scalar >
using Opm::Linear::SPresDispMatrix2T = typedef SPresDispMatrix0T<Scalar>

◆ SPresRotMatrixT

template<typename Scalar >
using Opm::Linear::SPresRotMatrixT = typedef Dune::BCRSMatrix<MatrixBlock<Scalar, numSolidPresDofs, numRotDofs> >

◆ SPresSPresMatrixT

template<typename Scalar >
using Opm::Linear::SPresSPresMatrixT = typedef Dune::BCRSMatrix<MatrixBlock<Scalar, numSolidPresDofs, numSolidPresDofs> >

◆ SPresVectorT

template<typename Scalar >
using Opm::Linear::SPresVectorT = typedef Dune::BlockVector<Dune::FieldVector<Scalar, numSolidPresDofs> >

◆ TpsaMultiVector

template<typename Scalar >
using Opm::Linear::TpsaMultiVector = typedef Dune::MultiTypeBlockVector<DispVector0T<Scalar>, DispVector1T<Scalar>, DispVector2T<Scalar>, RotVectorT<Scalar>, SPresVectorT<Scalar> >

The vector the Krylov solver and the preconditioner operate on.

Variable Documentation

◆ numDispDofs

constexpr int Opm::Linear::numDispDofs = 1
inlineconstexpr

Number of dofs of each field.

◆ numRotDofs

constexpr int Opm::Linear::numRotDofs = 3
inlineconstexpr

◆ numSolidPresDofs

constexpr int Opm::Linear::numSolidPresDofs = 1
inlineconstexpr

◆ numTpsaEq

constexpr int Opm::Linear::numTpsaEq = 3 * numDispDofs + numRotDofs + numSolidPresDofs
inlineconstexpr

Total number of TPSA equations per cell.

Referenced by Opm::Linear::TpsaVector< ScalarT >::EntryProxy::size().

◆ numTpsaFields

constexpr int Opm::Linear::numTpsaFields = 5
inlineconstexpr

Number of fields the TPSA system is split into.

Referenced by Opm::Linear::TpsaMatrixView< Scalar >::M(), and Opm::Linear::TpsaMatrixView< Scalar >::N().