10#ifndef TPETRA_TRIPLEMATRIXMULTIPLY_DECL_HPP 
   11#define TPETRA_TRIPLEMATRIXMULTIPLY_DECL_HPP 
   14#include <Teuchos_RCP.hpp> 
   15#include <Teuchos_Array.hpp> 
   16#include "Tpetra_ConfigDefs.hpp" 
   17#include "Tpetra_CrsMatrix.hpp" 
   18#include "Tpetra_Vector.hpp" 
   19#include "TpetraExt_MMHelpers.hpp" 
   28namespace TripleMatrixMultiply {
 
   67template <
class Scalar,
 
   72    const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& R,
 
   74    const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A,
 
   76    const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& P,
 
   78    CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Ac,
 
   79    bool call_FillComplete_on_result                   = 
true,
 
   80    const std::string& label                           = std::string(),
 
   81    const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
   87template <
class Scalar,
 
   91void mult_R_A_P_newmatrix(
 
   92    CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Rview,
 
   93    CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
   94    CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Pview,
 
   95    CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Ac,
 
   96    const std::string& label                           = std::string(),
 
   97    const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
   99template <
class Scalar,
 
  103void mult_R_A_P_reuse(
 
  104    CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Rview,
 
  105    CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  106    CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Pview,
 
  107    CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Ac,
 
  108    const std::string& label                           = std::string(),
 
  109    const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  111template <
class Scalar,
 
  115void mult_PT_A_P_newmatrix(
 
  116    CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  117    CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Pview,
 
  118    CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Ac,
 
  119    const std::string& label                           = std::string(),
 
  120    const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  122template <
class Scalar,
 
  126void mult_PT_A_P_reuse(
 
  127    CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  128    CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Pview,
 
  129    CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Ac,
 
  130    const std::string& label                           = std::string(),
 
  131    const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
  135template <
class Scalar,
 
  139struct KernelWrappers3MMM {
 
  140  static inline void mult_PT_A_P_newmatrix_kernel_wrapper_2pass(CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
 
  141                                                                CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Pview,
 
  142                                                                const Teuchos::Array<LocalOrdinal>& Acol2PRow,
 
  143                                                                const Teuchos::Array<LocalOrdinal>& Acol2PRowImport,
 
  144                                                                const Teuchos::Array<LocalOrdinal>& Pcol2Accol,
 
  145                                                                const Teuchos::Array<LocalOrdinal>& PIcol2Accol,
 
  146                                                                CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Ac,
 
  147                                                                Teuchos::RCP<
const Import<LocalOrdinal, GlobalOrdinal, Node> > Acimport,
 
  148                                                                const std::string& label                           = std::string(),
 
  149                                                                const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
 
void MultiplyRAP(const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &R, bool transposeR, const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &A, bool transposeA, const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &P, bool transposeP, CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &Ac, bool call_FillComplete_on_result=true, const std::string &label=std::string(), const Teuchos::RCP< Teuchos::ParameterList > ¶ms=Teuchos::null)
Sparse matrix-matrix multiply.
 
Namespace Tpetra contains the class and methods constituting the Tpetra library.