Xpetra Version of the Day
Loading...
Searching...
No Matches
Xpetra_ThyraUtils_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 XPETRA_THYRAUTILS_HPP
11#define XPETRA_THYRAUTILS_HPP
12
13#include "Xpetra_ConfigDefs.hpp"
14#ifdef HAVE_XPETRA_THYRA
15
16#include <typeinfo>
17
18#include "Tpetra_ConfigDefs.hpp"
19
20#include "Xpetra_Map.hpp"
21#include "Xpetra_BlockedMap.hpp"
22#include "Xpetra_BlockedMultiVector.hpp"
23#include "Xpetra_BlockedCrsMatrix.hpp"
24#include "Xpetra_MapUtils.hpp"
25#include "Xpetra_StridedMap.hpp"
26#include "Xpetra_StridedMapFactory.hpp"
27#include "Xpetra_MapExtractor.hpp"
28#include "Xpetra_Matrix.hpp"
29#include "Xpetra_MatrixFactory.hpp"
30#include "Xpetra_CrsMatrixWrap.hpp"
31#include "Xpetra_MultiVectorFactory.hpp"
32
33#include <Thyra_VectorSpaceBase.hpp>
34#include <Thyra_SpmdVectorSpaceBase.hpp>
35#include <Thyra_ProductVectorSpaceBase.hpp>
36#include <Thyra_ProductMultiVectorBase.hpp>
37#include <Thyra_VectorSpaceBase.hpp>
38#include <Thyra_DefaultProductVectorSpace.hpp>
39#include <Thyra_DefaultBlockedLinearOp.hpp>
40#include <Thyra_LinearOpBase.hpp>
41#include "Thyra_DiagonalLinearOpBase.hpp"
42#include <Thyra_DetachedMultiVectorView.hpp>
43#include <Thyra_MultiVectorStdOps.hpp>
44
45#include <Thyra_TpetraThyraWrappers.hpp>
46#include <Thyra_TpetraVector.hpp>
47#include <Thyra_TpetraMultiVector.hpp>
48#include <Thyra_TpetraVectorSpace.hpp>
49#include <Tpetra_Map.hpp>
50#include <Tpetra_Vector.hpp>
51#include <Tpetra_CrsMatrix.hpp>
52#include <Xpetra_TpetraMap.hpp>
54#include <Xpetra_TpetraCrsMatrix.hpp>
55
56namespace Xpetra {
57
58template <class Scalar,
59 class LocalOrdinal = int,
60 class GlobalOrdinal = LocalOrdinal,
61 class Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
62class ThyraUtils {
63 private:
64#undef XPETRA_THYRAUTILS_SHORT
66
67 public:
69 toXpetra(const Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar>>& vectorSpace, const Teuchos::RCP<const Teuchos::Comm<int>>& comm, std::vector<size_t>& stridingInfo, LocalOrdinal stridedBlockId = -1, GlobalOrdinal offset = 0);
70
72 toXpetra(const Teuchos::RCP<const Thyra::VectorSpaceBase<Scalar>>& vectorSpace, const Teuchos::RCP<const Teuchos::Comm<int>>& comm);
73
74 // const version
76 toXpetra(Teuchos::RCP<const Thyra::MultiVectorBase<Scalar>> v, const Teuchos::RCP<const Teuchos::Comm<int>>& comm);
77
78 // non-const version
80 toXpetra(Teuchos::RCP<Thyra::MultiVectorBase<Scalar>> v, const Teuchos::RCP<const Teuchos::Comm<int>>& comm);
81
82 static bool isTpetra(const Teuchos::RCP<const Thyra::LinearOpBase<Scalar>>& op);
83
84 static bool isBlockedOperator(const Teuchos::RCP<const Thyra::LinearOpBase<Scalar>>& op);
85
87 toXpetra(const Teuchos::RCP<const Thyra::LinearOpBase<Scalar>>& op);
88
90 toXpetra(const Teuchos::RCP<Thyra::LinearOpBase<Scalar>>& op);
91
93 toXpetraOperator(const Teuchos::RCP<const Thyra::LinearOpBase<Scalar>>& op);
94
96 toXpetraOperator(const Teuchos::RCP<Thyra::LinearOpBase<Scalar>>& op);
97
99 toXpetra(const Teuchos::RCP<Thyra::DiagonalLinearOpBase<Scalar>>& op);
100
102 toXpetra(const Teuchos::RCP<const Thyra::DiagonalLinearOpBase<Scalar>>& op);
103
106
109
112
113 // update Thyra multi vector with data from Xpetra multi vector
114 // In case of a Thyra::ProductMultiVector the Xpetra::MultiVector is splitted into its subparts using a provided MapExtractor
115 static void
117
120
123
126
127}; // end Utils class
128
129} // end namespace Xpetra
130
131#define XPETRA_THYRAUTILS_SHORT
132#endif // HAVE_XPETRA_THYRA
133
134#endif // XPETRA_THYRAUTILS_HPP
RCP< const CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > toXpetra(RCP< const Tpetra::CrsGraph< LocalOrdinal, GlobalOrdinal, Node > > graph)