Xpetra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
Xpetra_MatrixUtils_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_MATRIX_UTILS_DECL_HPP_
11
#define PACKAGES_XPETRA_SUP_MATRIX_UTILS_DECL_HPP_
12
13
#include "
Xpetra_ConfigDefs.hpp
"
14
15
#include "Xpetra_Map.hpp"
16
#include "
Xpetra_MapUtils.hpp
"
17
#include "Xpetra_StridedMap.hpp"
18
#include "Xpetra_MapFactory.hpp"
19
#include "Xpetra_MapExtractor.hpp"
20
#include "
Xpetra_MapExtractorFactory.hpp
"
21
#include "Xpetra_Matrix.hpp"
22
#include "Xpetra_MatrixFactory.hpp"
23
#include "Xpetra_BlockedCrsMatrix.hpp"
24
#include "Xpetra_MatrixMatrix.hpp"
25
#include "Xpetra_Helpers.hpp"
26
27
#include "Xpetra_TpetraMultiVector.hpp"
28
#include <Tpetra_RowMatrixTransposer.hpp>
29
#include <
Tpetra_Details_extractBlockDiagonal.hpp
>
30
#include <
Tpetra_Details_scaleBlockDiagonal.hpp
>
31
32
namespace
Xpetra
{
33
43
template
<
class
Scalar,
44
class
LocalOrdinal,
45
class
GlobalOrdinal,
46
class
Node>
47
class
MatrixUtils {
48
#undef XPETRA_MATRIXUTILS_SHORT
49
#include "
Xpetra_UseShortNames.hpp
"
50
51
public
:
52
static
Teuchos::RCP<Xpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
>
xpetraGidNumbering2ThyraGidNumbering
(
53
const
Xpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
& input);
54
55
static
Teuchos::RCP<Xpetra::Map<LocalOrdinal, GlobalOrdinal, Node>
>
findColumnSubMap
(
56
const
Xpetra::Matrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>
& input,
57
const
Xpetra::Map<LocalOrdinal, GlobalOrdinal, Node>
& domainMap);
58
64
69
static
Teuchos::RCP<Xpetra::BlockedCrsMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>
> SplitMatrix(
70
const
Xpetra::Matrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>
& input,
71
Teuchos::RCP
<
const
Xpetra::MapExtractor<Scalar, LocalOrdinal, GlobalOrdinal, Node>> rangeMapExtractor,
72
Teuchos::RCP
<
const
Xpetra::MapExtractor<Scalar, LocalOrdinal, GlobalOrdinal, Node>> domainMapExtractor,
73
Teuchos::RCP
<
const
Xpetra::MapExtractor<Scalar, LocalOrdinal, GlobalOrdinal, Node>> columnMapExtractor = Teuchos::null,
74
bool
bThyraMode =
false
);
75
77
78
static
void
CheckRepairMainDiagonal(
RCP
<
Xpetra::Matrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>
>& Ac,
79
bool
const
& repairZeroDiagonals,
Teuchos::FancyOStream
& fos,
80
const
typename
Teuchos::ScalarTraits<Scalar>::magnitudeType
threshold =
Teuchos::ScalarTraits
<
typename
Teuchos::ScalarTraits<Scalar>::magnitudeType
>::zero(),
81
const
Scalar replacementValue =
Teuchos::ScalarTraits<Scalar>::one
());
82
88
89
static
void
RelativeDiagonalBoost(
RCP
<
Xpetra::Matrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>
>& A,
90
const
Teuchos::ArrayView<const double>
& relativeThreshold,
Teuchos::FancyOStream
& fos);
91
92
// Extracting the block diagonal of a matrix
93
static
void
extractBlockDiagonal(
const
Xpetra::Matrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>
& A,
94
Xpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
& diagonal);
95
96
// Inverse scaling by a block-diagonal matrix
97
static
void
inverseScaleBlockDiagonal(
Xpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
& blockDiagonal,
98
bool
doTranspose,
99
Xpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
& toBeScaled);
100
101
static
void
checkLocalRowMapMatchesColMap(
const
Xpetra::Matrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>
& A);
102
110
static
void
convertMatrixToStridedMaps
(
111
Teuchos::RCP
<
Xpetra::Matrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>
> matrix,
112
std::vector<size_t>& rangeStridingInfo, std::vector<size_t>& domainStridingInfo);
113
};
114
115
}
// end namespace Xpetra
116
117
#define XPETRA_MATRIXUTILS_SHORT
118
119
#endif
// PACKAGES_XPETRA_SUP_MATRIX_UTILS_DECL_HPP_
Tpetra_Details_extractBlockDiagonal.hpp
Tpetra_Details_scaleBlockDiagonal.hpp
Xpetra_ConfigDefs.hpp
Xpetra_MapExtractorFactory.hpp
Xpetra_MapUtils.hpp
Xpetra_UseShortNames.hpp
Teuchos::ArrayView
Teuchos::RCP
Xpetra::Map
Definition
Xpetra_Map_decl.hpp:35
Xpetra::Matrix
Xpetra-specific matrix class.
Definition
Xpetra_Matrix_decl.hpp:60
Xpetra::MatrixUtils::convertMatrixToStridedMaps
static void convertMatrixToStridedMaps(Teuchos::RCP< Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > matrix, std::vector< size_t > &rangeStridingInfo, std::vector< size_t > &domainStridingInfo)
Definition
Xpetra_MatrixUtils_def.hpp:692
Xpetra::MatrixUtils::findColumnSubMap
static Teuchos::RCP< Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > > findColumnSubMap(const Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &input, const Xpetra::Map< LocalOrdinal, GlobalOrdinal, Node > &domainMap)
Definition
Xpetra_MatrixUtils_def.hpp:51
Xpetra::MatrixUtils::xpetraGidNumbering2ThyraGidNumbering
static Teuchos::RCP< Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > xpetraGidNumbering2ThyraGidNumbering(const Xpetra::MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &input)
Definition
Xpetra_MatrixUtils_def.hpp:36
Xpetra::MultiVector
Definition
Xpetra_MultiVector_decl.hpp:45
Teuchos::FancyOStream
basic_FancyOStream< char > FancyOStream
Xpetra
Xpetra namespace
Definition
Xpetra_BlockedCrsMatrix_decl.hpp:52
Teuchos::ScalarTraits
Xpetra::MatrixUtils::Xpetra::ScalarTraits::one
static T one()
Xpetra::MatrixUtils::Xpetra::ScalarTraits::magnitudeType
T magnitudeType
src
Utils
Xpetra_MatrixUtils_decl.hpp
Generated by
1.17.0