Xpetra Version of the Day
Loading...
Searching...
No Matches
Xpetra_TripleMatrixMultiply_decl.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Xpetra: A linear algebra interface package
4//
5// Copyright 2012 NTESS and the Xpetra contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef PACKAGES_XPETRA_SUP_UTILS_XPETRA_TRIPLEMATRIXMULTIPLY_DECL_HPP_
11#define PACKAGES_XPETRA_SUP_UTILS_XPETRA_TRIPLEMATRIXMULTIPLY_DECL_HPP_
12
13#include "Xpetra_ConfigDefs.hpp"
14
15// #include "Xpetra_BlockedCrsMatrix.hpp"
16#include "Xpetra_CrsMatrixWrap.hpp"
17#include "Xpetra_MapExtractor.hpp"
18#include "Xpetra_Map.hpp"
19#include "Xpetra_MatrixFactory.hpp"
20#include "Xpetra_Matrix.hpp"
21#include "Xpetra_StridedMapFactory.hpp"
22#include "Xpetra_StridedMap.hpp"
23#include "Xpetra_IO.hpp"
24
25#include <TpetraExt_TripleMatrixMultiply.hpp>
26#include <Xpetra_TpetraCrsMatrix.hpp>
27#include <Tpetra_BlockCrsMatrix.hpp>
28#include <Tpetra_BlockCrsMatrix_Helpers.hpp>
29// #include <Xpetra_TpetraMultiVector.hpp>
30// #include <Xpetra_TpetraVector.hpp>
31
32namespace Xpetra {
33
34template <class Scalar,
35 class LocalOrdinal /*= int*/,
36 class GlobalOrdinal /*= LocalOrdinal*/,
37 class Node /*= Tpetra::KokkosClassic::DefaultNode::DefaultNodeType*/>
38class TripleMatrixMultiply {
39#undef XPETRA_TRIPLEMATRIXMULTIPLY_SHORT
41
42 public:
57 C.FillComplete() will have been called, unless the last argument
58 to this function is specified to be false.
59 @param call_FillComplete_on_result Optional argument, defaults to true.
60 Power users may specify this argument to be false if they *DON'T*
61 want this function to call C.FillComplete. (It is often useful
62 to allow this function to call C.FillComplete, in cases where
63 one or both of the input matrices are rectangular and it is not
64 trivial to know which maps to use for the domain- and range-maps.)
65
66*/
67 static void MultiplyRAP(const Matrix& R, bool transposeR,
68 const Matrix& A, bool transposeA,
69 const Matrix& P, bool transposeP,
70 Matrix& Ac,
71 bool call_FillComplete_on_result = true,
72 bool doOptimizeStorage = true,
73 const std::string& label = std::string(),
74 const RCP<ParameterList>& params = null);
75
76}; // class TripleMatrixMultiply
77
78} // end namespace Xpetra
79
80#define XPETRA_TRIPLEMATRIXMULTIPLY_SHORT
81
82#endif /* PACKAGES_XPETRA_SUP_UTILS_XPETRA_TRIPLEMATRIXMULTIPLY_DECL_HPP_ */
Xpetra-specific matrix class.