43 #ifndef IFPACK2_SPARSECONTAINER_DECL_HPP 
   44 #define IFPACK2_SPARSECONTAINER_DECL_HPP 
   49 #include "Ifpack2_Container.hpp" 
   51 #include "Tpetra_MultiVector.hpp" 
   52 #include "Tpetra_Map.hpp" 
   53 #include "Tpetra_RowMatrix.hpp" 
   54 #include "Tpetra_CrsMatrix.hpp" 
   58 #ifdef HAVE_IFPACK2_AMESOS2 
   59 #include "Ifpack2_Details_Amesos2Wrapper.hpp" 
  133 template<
typename MatrixType, 
typename InverseType>
 
  135 : 
public ContainerImpl<MatrixType, typename InverseType::scalar_type>
 
  147   using matrix_type = MatrixType;
 
  153   using inverse_type = InverseType;
 
  155   using typename Container<MatrixType>::SC;
 
  156   using typename Container<MatrixType>::LO;
 
  157   using typename Container<MatrixType>::GO;
 
  158   using typename Container<MatrixType>::NO;
 
  160   using typename Container<MatrixType>::mv_type;
 
  161   using typename Container<MatrixType>::map_type;
 
  162   using typename Container<MatrixType>::vector_type;
 
  163   using typename Container<MatrixType>::import_type;
 
  165   using InverseScalar = 
typename InverseType::scalar_type;
 
  166   using InverseLocalOrdinal = 
typename InverseType::local_ordinal_type;
 
  167   using InverseGlobalOrdinal = 
typename InverseType::global_ordinal_type;
 
  168   using InverseNode = 
typename InverseType::node_type;
 
  170   using inverse_mv_type = Tpetra::MultiVector<InverseScalar, InverseLocalOrdinal, InverseGlobalOrdinal, InverseNode>;
 
  171   using InverseCrs = Tpetra::CrsMatrix<InverseScalar, InverseLocalOrdinal, InverseGlobalOrdinal, InverseNode>;
 
  172   using InverseMap = 
typename Tpetra::Map<InverseLocalOrdinal, InverseGlobalOrdinal, InverseNode>;
 
  175   using HostViewInverse = 
typename inverse_mv_type::dual_view_type::t_host;
 
  177   static_assert(std::is_same<MatrixType,
 
  178                   Tpetra::RowMatrix<SC, LO, GO, NO>>::value, 
"Ifpack2::SparseContainer: Please use MatrixType = Tpetra::RowMatrix.");
 
  188   using typename Container<MatrixType>::row_matrix_type;
 
  261   virtual std::ostream& 
print(std::ostream& os) 
const;
 
  300   solveBlockMV(inverse_mv_type& X,
 
  305                InverseScalar beta) 
const;
 
  308   std::vector<Teuchos::RCP<InverseCrs>> diagBlocks_;
 
  311   mutable std::vector<inverse_mv_type> invX;
 
  313   mutable std::vector<inverse_mv_type> invY;
 
  333 #endif // IFPACK2_SPARSECONTAINER_HPP 
static std::string getName()
Get the name of this container type for Details::constructContainer() 
Definition: Ifpack2_SparseContainer_def.hpp:646
 
SparseContainer(const Teuchos::RCP< const row_matrix_type > &matrix, const Teuchos::Array< Teuchos::Array< LO > > &partitions, const Teuchos::RCP< const import_type > &importer, bool pointIndexed)
Constructor. 
Definition: Ifpack2_SparseContainer_def.hpp:60
 
Store and solve a local sparse linear problem. 
Definition: Ifpack2_SparseContainer_decl.hpp:134
 
virtual void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const 
Print the object with some verbosity level to the given FancyOStream. 
Definition: Ifpack2_SparseContainer_def.hpp:475
 
The implementation of the numerical features of Container (Jacobi, Gauss-Seidel, SGS). This class allows a custom scalar type (LocalScalarType) to be used for storing blocks and solving the block systems. Hiding this template parameter from the Container interface simplifies the BlockRelaxation and ContainerFactory classes. 
Definition: Ifpack2_Container_decl.hpp:342
 
virtual void initialize()
Do all set-up operations that only require matrix structure. 
Definition: Ifpack2_SparseContainer_def.hpp:86
 
virtual std::ostream & print(std::ostream &os) const 
Print information about this object to the given output stream. 
Definition: Ifpack2_SparseContainer_def.hpp:438
 
Declaration and definition of the Ifpack2::Details::MultiVectorLocalGatherScatter class...
 
virtual std::string description() const 
A one-line description of this object. 
Definition: Ifpack2_SparseContainer_def.hpp:448
 
virtual void weightedApply(HostView X, HostView Y, HostView W, int blockIndex, Teuchos::ETransp mode=Teuchos::NO_TRANS, SC alpha=Teuchos::ScalarTraits< SC >::one(), SC beta=Teuchos::ScalarTraits< SC >::zero()) const 
Compute Y := alpha * diag(D) * M^{-1} (diag(D) * X) + beta*Y. 
Definition: Ifpack2_SparseContainer_def.hpp:288
 
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 
Compute Y := alpha * M^{-1} X + beta*Y. 
Definition: Ifpack2_SparseContainer_def.hpp:168
 
typename mv_type::dual_view_type::t_host HostView
Definition: Ifpack2_Container_decl.hpp:139
 
static const EVerbosityLevel verbLevel_default
 
virtual ~SparseContainer()
Destructor (declared virtual for memory safety of derived classes). 
Definition: Ifpack2_SparseContainer_def.hpp:75
 
virtual void setParameters(const Teuchos::ParameterList &List)
Set all necessary parameters. 
Definition: Ifpack2_SparseContainer_def.hpp:79
 
virtual void compute()
Initialize and compute all blocks. 
Definition: Ifpack2_SparseContainer_def.hpp:105
 
Declaration of ILUT preconditioner. 
 
void clearBlocks()
Definition: Ifpack2_SparseContainer_def.hpp:130