|
|
| 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 (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 (host_view_type X, host_view_type Y, 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 (HostView 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 (HostView X, HostView Y, HostView 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 (mv_type &X, mv_type &Y) const |
| Wrapper for apply with MultiVector. More...
|
|
virtual void | weightedApplyMV (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 (HostView 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.