|
Opm::Linear::TpsaMatrix< Scalar > Class Template Reference TPSA matrix for linear elasticity. More...
Detailed Descriptiontemplate<class Scalar> class Opm::Linear::TpsaMatrix< Scalar > TPSA matrix for linear elasticity. This is the equivalent as IstlSparseMatrixAdapter class is for flow linearizations. The TPSA linearizer still provides dense 7x7 blocks, but internally in the class the entries go into 19 sub-matrices. Displacement-displacement sub-matrix have been divided up in 1x1 fields for the Hypre BoomerAMG preconditioner. Overview of sub-matrix fields: field 0: u_x (1 dof) field 1: u_y (1 dof) field 2: u_z (1 dof) field 3: rot_x/y/z (3 dofs) field 4: p_solid (1 dof) Note that, displacement-displacement off-diagonals are zero in linear elasticity
Member Typedef Documentation◆ BlockAddress
template<class Scalar >
What blockAddress() returns. ◆ field_type
template<class Scalar >
Field type of the matrix entries. ◆ IstlMatrix
template<class Scalar >
What the linear solver operates on. ◆ MatrixBlock
template<class Scalar >
Dense local block the linearizer accumulates into. Constructor & Destructor Documentation◆ TpsaMatrix() [1/4]
template<class Scalar >
Construct a matrix of the given block dimensions. No storage is allocated here; call reserve() with the sparsity pattern first.
◆ TpsaMatrix() [2/4]
template<class Scalar >
template<class Simulator >
◆ TpsaMatrix() [3/4]
template<class Scalar >
◆ TpsaMatrix() [4/4]
template<class Scalar >
Member Function Documentation◆ addToBlock()
template<class Scalar >
Add a dense 7x7 block to the given block.
References Opm::Linear::TpsaMatrix< Scalar >::blockAddress(). ◆ block()
template<class Scalar >
Fill The displacement-displacement off-diagonals are not stored and come back as zero.
References Opm::Linear::TpsaMatrix< Scalar >::blockAddress(), and Opm::Linear::TpsaBlockRef< Scalar >::gather(). ◆ blockAddress()
template<class Scalar >
Handle on the block at (rowIdx, colIdx). Only called while the sparsity pattern is set up, so the linear scan over the row is not on any hot path.
Referenced by Opm::Linear::TpsaMatrix< Scalar >::addToBlock(), Opm::Linear::TpsaMatrix< Scalar >::block(), and Opm::Linear::TpsaMatrix< Scalar >::setBlock(). ◆ clear()
template<class Scalar >
Set all matrix entries to zero. Does nothing when called before reserve(). ◆ clearRow()
template<class Scalar >
Set the given row to zero, except for the main diagonal. The main diagonal of the block on the diagonal is set to
◆ cols()
template<class Scalar >
Number of block columns.
◆ commit()
template<class Scalar >
No local caching, so nothing to commit. ◆ dd00() [1/2]
template<class Scalar >
Access the u_x-u_x sub-matrix.
◆ dd00() [2/2]
template<class Scalar >
Access the u_x-u_x sub-matrix.
◆ dd11() [1/2]
template<class Scalar >
Access the u_y-u_y sub-matrix.
◆ dd11() [2/2]
template<class Scalar >
Access the u_y-u_y sub-matrix.
◆ dd22() [1/2]
template<class Scalar >
Access the u_z-u_z sub-matrix.
◆ dd22() [2/2]
template<class Scalar >
Access the u_z-u_z sub-matrix.
◆ finalize()
template<class Scalar >
The structure is already solver-ready after reserve(). ◆ istlMatrix() [1/2]
template<class Scalar >
The sub-matrix view the linear solver operates on. Only valid after reserve(); the view points into this object.
◆ istlMatrix() [2/2]
template<class Scalar >
The sub-matrix view the linear solver operates on. Only valid after reserve(); the view points into this object.
◆ M()
template<class Scalar >
Number of block columns.
◆ makeOverlapRowsInvalid()
template<class Scalar >
Zero out the overlap rows and put the identity on their diagonal.
◆ N()
template<class Scalar >
Number of block rows.
◆ nonzeroes()
template<class Scalar >
Number of nonzero blocks in the shared sparsity pattern.
◆ operator=() [1/2]
template<class Scalar >
◆ operator=() [2/2]
template<class Scalar >
◆ reserve()
template<class Scalar >
template<class Set >
Allocate all sub-matrices from a common sparsity pattern. Also flattens the pattern, caches the value-array base pointer of every sub-matrix and sets up the solver view. Must be called before any block is accessed.
◆ rows()
template<class Scalar >
Number of block rows.
◆ rr() [1/2]
template<class Scalar >
Access the rotation-rotation sub-matrix.
◆ rr() [2/2]
template<class Scalar >
Access the rotation-rotation sub-matrix.
◆ scaleFields()
template<class Scalar >
Scale the system by one factor per field: A <- D_row * A * D_col. Every sub-matrix couples exactly one field row to one field column, so a field scaling is a single factor per sub-matrix and can be applied to the flat value arrays without walking the sparsity pattern.
◆ setBlock()
template<class Scalar >
Overwrite the given block with a dense 7x7 block.
References Opm::Linear::TpsaMatrix< Scalar >::blockAddress(). ◆ spsp() [1/2]
template<class Scalar >
Access the solid pressure-solid pressure sub-matrix.
◆ spsp() [2/2]
template<class Scalar >
Access the solid pressure-solid pressure sub-matrix.
Friends And Related Function Documentation◆ TpsaBlockRef< Scalar >
template<class Scalar >
The documentation for this class was generated from the following file: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||