42 #ifndef TPETRA_MATRIXMATRIX_DECL_HPP 43 #define TPETRA_MATRIXMATRIX_DECL_HPP 46 #include <Teuchos_RCP.hpp> 47 #include <Teuchos_Array.hpp> 48 #include "Tpetra_ConfigDefs.hpp" 49 #include "Tpetra_CrsMatrix.hpp" 50 #include "Tpetra_Vector.hpp" 51 #include "TpetraExt_MMHelpers.hpp" 61 namespace MatrixMatrix {
93 template <
class Scalar,
98 const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A,
100 const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& B,
102 CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
103 bool call_FillComplete_on_result =
true,
104 const std::string& label = std::string(),
105 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
120 template <
class Scalar,
125 const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A,
128 CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& B,
161 template <
class Scalar,
165 Teuchos::RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> >
166 add (
const Scalar& alpha,
167 const bool transposeA,
168 const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A,
170 const bool transposeB,
171 const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& B,
172 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& domainMap = Teuchos::null,
173 const Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> >& rangeMap = Teuchos::null,
174 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
205 template <
class Scalar,
210 const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A,
213 const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& B,
216 Teuchos::RCP<CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> > C);
240 template <
class Scalar,
245 const Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node> & Dinv,
246 const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A,
247 const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& B,
248 CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
249 bool call_FillComplete_on_result =
true,
250 const std::string& label = std::string(),
251 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
257 template<
class Scalar,
261 void mult_AT_B_newmatrix(
262 const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& A,
263 const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& B,
264 CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
265 const std::string& label = std::string(),
266 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
269 template<
class Scalar,
274 CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
275 CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
276 CrsWrapper<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
277 const std::string& label = std::string(),
278 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
280 template<
class Scalar,
284 void mult_A_B_newmatrix(
285 CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
286 CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
287 CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
288 const std::string& label = std::string(),
289 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
291 template<
class Scalar,
296 CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
297 CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
298 CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
299 const std::string& label = std::string(),
300 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
302 template<
class Scalar,
306 void jacobi_A_B_newmatrix(
308 const Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node> & Dinv,
309 CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
310 CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
311 CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
312 const std::string & label = std::string(),
313 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
315 template<
class Scalar,
319 void jacobi_A_B_reuse(
321 const Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node> & Dinv,
322 CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Aview,
323 CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Bview,
324 CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& C,
325 const std::string & label = std::string(),
326 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
328 template<
class Scalar,
332 void import_and_extract_views(
333 const CrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>& M,
334 Teuchos::RCP<
const Map<LocalOrdinal, GlobalOrdinal, Node> > targetMap,
335 CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Mview,
336 Teuchos::RCP<
const Import<LocalOrdinal,GlobalOrdinal, Node> > prototypeImporter = Teuchos::null,
337 bool userAssertsThereAreNoRemotes =
false,
338 const std::string& label = std::string(),
339 const Teuchos::RCP<Teuchos::ParameterList>& params = Teuchos::null);
341 template<
class Scalar,
345 void setMaxNumEntriesPerRow(
346 CrsMatrixStruct<Scalar, LocalOrdinal, GlobalOrdinal, Node>& Mview);
352 #endif // TPETRA_MATRIXMATRIX_DECL_HPP Namespace Tpetra contains the class and methods constituting the Tpetra library.
void Jacobi(Scalar omega, const Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &Dinv, const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &A, const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &B, CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &C, bool call_FillComplete_on_result=true, const std::string &label=std::string(), const Teuchos::RCP< Teuchos::ParameterList > ¶ms=Teuchos::null)
void Add(const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &A, bool transposeA, Scalar scalarA, CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &B, Scalar scalarB)
void Multiply(const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &A, bool transposeA, const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &B, bool transposeB, CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &C, bool call_FillComplete_on_result=true, const std::string &label=std::string(), const Teuchos::RCP< Teuchos::ParameterList > ¶ms=Teuchos::null)
Sparse matrix-matrix multiply.
Teuchos::RCP< CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > add(const Scalar &alpha, const bool transposeA, const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &A, const Scalar &beta, const bool transposeB, const CrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &B, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &domainMap=Teuchos::null, const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &rangeMap=Teuchos::null, const Teuchos::RCP< Teuchos::ParameterList > ¶ms=Teuchos::null)
Compute the sparse matrix sum C = scalarA * Op(A) + scalarB * Op(B), where Op(X) is either X or its t...