|
|
| | BlockTriDiContainer (const Teuchos::RCP< const row_matrix_type > &matrix, const Teuchos::Array< Teuchos::Array< local_ordinal_type > > &partitions, const Teuchos::RCP< const import_type > &importer, bool pointIndexed) |
| | Constructor. More...
|
| |
| | BlockTriDiContainer (const Teuchos::RCP< const row_matrix_type > &matrix, const Teuchos::Array< Teuchos::Array< local_ordinal_type > > &partitions, bool overlapCommAndComp=false, bool useSequentialMethod=false) |
| | Constructor for bare construction. More...
|
| |
| | ~BlockTriDiContainer () override |
| | Destructor (declared virtual for memory safety of derived classes). More...
|
| |
|
| void | setParameters (const Teuchos::ParameterList &List) override |
| | Set all necessary parameters. More...
|
| |
|
void | clearBlocks () override |
| |
|
| void | initialize () override |
| | Do all set-up operations that only require matrix structure. More...
|
| |
| void | compute () override |
| | Extract the local tridiagonal block and prepare the solver. More...
|
| |
|
void | applyInverseJacobi (const mv_type &X, mv_type &Y, scalar_type dampingFactor, bool zeroStartingSolution=false, int numSweeps=1) const override |
| |
| ComputeParameters | createDefaultComputeParameters () const |
| | Create a ComputeParameters struct with default values. More...
|
| |
| void | compute (const ComputeParameters &input) |
| | Extract the local tridiagonal block and prepare the solver. More...
|
| |
| ApplyParameters | createDefaultApplyParameters () const |
| | Create an ApplyParameters struct with default values. More...
|
| |
| int | applyInverseJacobi (const mv_type &X, mv_type &Y, const ApplyParameters &input) const |
| | Compute Y := D^{-1} (X - R*Y). More...
|
| |
| const magnitude_type | getNorms0 () const |
| | If a norm-based method was used, return a L2 norm of all rhs at the first iteration; otherwise return a minus one indicating norm is not requested. More...
|
| |
| const magnitude_type | getNormsFinal () const |
| | If a norm-based method was used, return a L2 norm of all rhs; otherwise return zero. More...
|
| |
| void | apply (const_host_view_type X, host_view_type Y, int blockIndex, Teuchos::ETransp mode=Teuchos::NO_TRANS, scalar_type alpha=Teuchos::ScalarTraits< scalar_type >::one(), scalar_type beta=Teuchos::ScalarTraits< scalar_type >::zero()) const override |
| |
| void | weightedApply (const_host_view_type X, host_view_type Y, const_host_view_type W, int blockIndex, Teuchos::ETransp mode=Teuchos::NO_TRANS, scalar_type alpha=Teuchos::ScalarTraits< scalar_type >::one(), scalar_type beta=Teuchos::ScalarTraits< scalar_type >::zero()) const override |
| |
|
| std::ostream & | print (std::ostream &os) const override |
| | Print information about this object to the given output stream. More...
|
| |
|
| std::string | description () const override |
| | A one-line description of this object. More...
|
| |
| void | describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const override |
| | Print the object with some verbosity level to the given FancyOStream. More...
|
| |
| | Container (const Teuchos::RCP< const row_matrix_type > &matrix, const Teuchos::Array< Teuchos::Array< LO > > &partitions, bool pointIndexed) |
| | Constructor. More...
|
| |
| virtual | ~Container () |
| | Destructor. More...
|
| |
| Teuchos::ArrayView< const LO > | getBlockRows (int blockIndex) const |
| | Local indices of the rows of the input matrix that belong to this block. More...
|
| |
| void | setBlockSizes (const Teuchos::Array< Teuchos::Array< LO > > &partitions) |
| | Initialize arrays with information about block sizes. More...
|
| |
| bool | isInitialized () const |
| | Whether the container has been successfully initialized. More...
|
| |
| bool | isComputed () const |
| | Whether the container has been successfully computed. More...
|
| |
| virtual void | apply (ConstHostView X, HostView Y, int blockIndex, Teuchos::ETransp mode=Teuchos::NO_TRANS, SC alpha=Teuchos::ScalarTraits< SC >::one(), SC beta=Teuchos::ScalarTraits< SC >::zero()) const =0 |
| | Compute Y := alpha * M^{-1} X + beta*Y. More...
|
| |
| virtual void | weightedApply (ConstHostView X, HostView Y, ConstHostView D, int blockIndex, Teuchos::ETransp mode=Teuchos::NO_TRANS, SC alpha=Teuchos::ScalarTraits< SC >::one(), SC beta=Teuchos::ScalarTraits< SC >::zero()) const =0 |
| | Compute Y := alpha * diag(D) * M^{-1} (diag(D) * X) + beta*Y. More...
|
| |
| virtual void | applyInverseJacobi (const mv_type &, mv_type &, SC dampingFactor, bool, int) const =0 |
| | Compute Y := (1 - a) Y + a D^{-1} (X - R*Y). More...
|
| |
| virtual void | applyMV (const mv_type &X, mv_type &Y) const |
| | Wrapper for apply with MultiVector. More...
|
| |
| virtual void | weightedApplyMV (const mv_type &X, mv_type &Y, vector_type &W) const |
| | Wrapper for weightedApply with MultiVector. More...
|
| |
|
| using | ISC = typename Kokkos::Details::ArithTraits< SC >::val_type |
| | Internal representation of Scalar in Kokkos::View. More...
|
| |
| using | HostView = typename mv_type::dual_view_type::t_host |
| |
| virtual void | DoGSBlock (ConstHostView X, HostView Y, HostView Y2, HostView Resid, SC dampingFactor, LO i) const |
| | Do one step of Gauss-Seidel on block i (used by DoGaussSeidel and DoSGS) More...
|
| |
| Teuchos::RCP< const row_matrix_type > | inputMatrix_ |
| | The input matrix to the constructor. More...
|
| |
| Teuchos::RCP< const crs_matrix_type > | inputCrsMatrix_ |
| | The input matrix, dynamic cast to CrsMatrix. May be null. More...
|
| |
| Teuchos::RCP< const block_crs_matrix_type > | inputBlockMatrix_ |
| | The input matrix, dynamic cast to BlockCrsMatrix. May be null. More...
|
| |
| int | numBlocks_ |
| | The number of blocks (partitions) in the container. More...
|
| |
| Teuchos::Array< LO > | blockRows_ |
| | Local indices of the rows of the input matrix that belong to this block. More...
|
| |
| Teuchos::Array< LO > | blockSizes_ |
| | Number of rows in each block. More...
|
| |
| Teuchos::Array< LO > | blockOffsets_ |
| | Starting index in blockRows_ of local row indices for each block. More...
|
| |
| Teuchos::RCP< vector_type > | Diag_ |
| | Diagonal elements. More...
|
| |
| bool | IsParallel_ |
| | Whether the problem is distributed across multiple MPI processes. More...
|
| |
| LO | NumLocalRows_ |
| | Number of local rows in input matrix. More...
|
| |
| GO | NumGlobalRows_ |
| | Number of global rows in input matrix. More...
|
| |
| GO | NumGlobalNonzeros_ |
| | Number of nonzeros in input matrix. More...
|
| |
| bool | hasBlockCrs_ |
| | Whether the input matrix is a BlockCRS matrix. More...
|
| |
| int | bcrsBlockSize_ |
| | If hasBlockCrs_, the number of DOFs per vertex. Otherwise 1. More...
|
| |
| bool | pointIndexed_ |
| | (If hasBlockCrs_) Whether the blocks are described using sub-block row indices instead of full block rows. More...
|
| |
| LO | scalarsPerRow_ |
| |
| bool | IsInitialized_ |
| | If true, the container has been successfully initialized. More...
|
| |
| bool | IsComputed_ |
| | If true, the container has been successfully computed. More...
|
| |
template<typename MatrixType>
class Ifpack2::BlockTriDiContainer< MatrixType, BlockTriDiContainerDetails::ImplSimdTag >
Partial specialization with SIMD<ScalarType> internally used. The code does not support Sacado UQ types. As UQ type also uses SIMD like structure, it needs an additional specialization.