Tpetra parallel linear algebra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
src
Tpetra_LinearProblem_decl.hpp
Go to the documentation of this file.
1
// @HEADER
2
// *****************************************************************************
3
// Tpetra: Templated Linear Algebra Services Package
4
//
5
// Copyright 2008 NTESS and the Tpetra contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
#ifndef TPETRA_LINEARPROBLEM_DECL_HPP
11
#define TPETRA_LINEARPROBLEM_DECL_HPP
12
15
16
#include "Teuchos_DataAccess.hpp"
17
18
#include "
Tpetra_Vector_decl.hpp
"
19
#include "
Tpetra_MultiVector_decl.hpp
"
20
#include "Tpetra_RowMatrix_decl.hpp"
21
#include "Tpetra_DistObject.hpp"
22
#include "Tpetra_Details_ExecutionSpacesUser.hpp"
23
24
namespace
Tpetra
{
25
42
43
template
<
class
Scalar,
44
class
LocalOrdinal,
45
class
GlobalOrdinal,
46
class
Node>
47
class
LinearProblem
:
public
DistObject
<Scalar, LocalOrdinal, GlobalOrdinal, Node>,
48
public
Details::Spaces::User
{
49
private
:
51
using
dist_object_type =
DistObject<Scalar, LocalOrdinal, GlobalOrdinal, Node>
;
52
53
public
:
55
56
57
using
map_type =
Map<LocalOrdinal, GlobalOrdinal, Node>
;
58
using
row_matrix_type =
RowMatrix<Scalar, LocalOrdinal, GlobalOrdinal, Node>
;
59
using
multivector_type =
MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
;
60
using
vector_type =
Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
;
61
using
linear_problem_type =
LinearProblem<Scalar, LocalOrdinal, GlobalOrdinal, Node>
;
62
64
66
67
74
LinearProblem
();
75
79
LinearProblem
(
const
Teuchos::RCP<row_matrix_type>& A,
80
const
Teuchos::RCP<multivector_type>& X,
81
const
Teuchos::RCP<multivector_type>& B);
82
84
LinearProblem
(
const
LinearProblem
<Scalar, LocalOrdinal,
85
GlobalOrdinal, Node>& Problem);
86
88
virtual
~LinearProblem
() =
default
;
89
91
93
94
101
void
checkInput
()
const
;
102
104
106
107
108
virtual
bool
109
checkSizes
(
const
SrcDistObject
& source)
override
;
110
112
114
115
119
void
setMatrix
(Teuchos::RCP<row_matrix_type> A) { A_ = A; }
120
124
void
setLHS
(Teuchos::RCP<multivector_type> X) { X_ = X; }
125
129
void
setRHS
(Teuchos::RCP<multivector_type> B) { B_ = B; }
130
132
134
135
147
void
leftScale
(
const
Teuchos::RCP<const vector_type>& D,
148
Teuchos::ETransp mode = Teuchos::NO_TRANS);
149
163
void
rightScale
(
const
Teuchos::RCP<const vector_type>& D,
164
Teuchos::ETransp mode = Teuchos::NO_TRANS);
165
167
169
170
172
Teuchos::RCP<row_matrix_type>
getMatrix
()
const
{
return
(A_); }
174
Teuchos::RCP<multivector_type>
getLHS
()
const
{
return
(X_); }
176
Teuchos::RCP<multivector_type>
getRHS
()
const
{
return
(B_); }
177
179
180
private
:
181
Teuchos::RCP<row_matrix_type> A_;
182
Teuchos::RCP<multivector_type> X_;
183
Teuchos::RCP<multivector_type> B_;
184
185
LinearProblem
& operator=(
const
LinearProblem
<Scalar, LocalOrdinal,
186
GlobalOrdinal, Node>& Problem) =
default
;
187
};
188
189
}
// namespace Tpetra
190
191
#endif
// TPETRA_LINEARPROBLEM_DECL_HPP
Tpetra_MultiVector_decl.hpp
Declaration of the Tpetra::MultiVector class.
Tpetra_Vector_decl.hpp
Declaration of the Tpetra::Vector class.
Tpetra::Details::Spaces::User
A class can inherit from this if it wants to use Tpetra managed spaces.
Definition
Tpetra_Details_ExecutionSpacesUser.hpp:34
Tpetra::DistObject< Scalar, LocalOrdinal, GlobalOrdinal, Node >::DistObject
DistObject(const Teuchos::RCP< const map_type > &map)
Tpetra::LinearProblem
Class that encapulates linear problem (Ax = b).
Definition
Tpetra_LinearProblem_decl.hpp:48
Tpetra::LinearProblem::checkSizes
virtual bool checkSizes(const SrcDistObject &source) override
Compare the source and target (this) objects for compatibility.
Definition
Tpetra_LinearProblem_def.hpp:118
Tpetra::LinearProblem::getMatrix
Teuchos::RCP< row_matrix_type > getMatrix() const
Get an RCP to the matrix A.
Definition
Tpetra_LinearProblem_decl.hpp:172
Tpetra::LinearProblem::rightScale
void rightScale(const Teuchos::RCP< const vector_type > &D, Teuchos::ETransp mode=Teuchos::NO_TRANS)
Perform right scaling of a linear problem.
Definition
Tpetra_LinearProblem_def.hpp:78
Tpetra::LinearProblem::getLHS
Teuchos::RCP< multivector_type > getLHS() const
Get an RCP to the left-hand-side X.
Definition
Tpetra_LinearProblem_decl.hpp:174
Tpetra::LinearProblem::LinearProblem
LinearProblem()
Default Constructor.
Definition
Tpetra_LinearProblem_def.hpp:31
Tpetra::LinearProblem::getRHS
Teuchos::RCP< multivector_type > getRHS() const
Get an RCP to the right-hand-side B.
Definition
Tpetra_LinearProblem_decl.hpp:176
Tpetra::LinearProblem::setMatrix
void setMatrix(Teuchos::RCP< row_matrix_type > A)
Set Matrix A of linear problem AX = B using a RowMatrix.
Definition
Tpetra_LinearProblem_decl.hpp:119
Tpetra::LinearProblem::leftScale
void leftScale(const Teuchos::RCP< const vector_type > &D, Teuchos::ETransp mode=Teuchos::NO_TRANS)
Perform left scaling of a linear problem.
Definition
Tpetra_LinearProblem_def.hpp:60
Tpetra::LinearProblem::setRHS
void setRHS(Teuchos::RCP< multivector_type > B)
Set right-hand-side B of linear problem AX = B.
Definition
Tpetra_LinearProblem_decl.hpp:129
Tpetra::LinearProblem::checkInput
void checkInput() const
Check input parameters for existence and size consistency.
Definition
Tpetra_LinearProblem_def.hpp:95
Tpetra::LinearProblem::setLHS
void setLHS(Teuchos::RCP< multivector_type > X)
Set left-hand-side X of linear problem AX = B.
Definition
Tpetra_LinearProblem_decl.hpp:124
Tpetra::LinearProblem::~LinearProblem
virtual ~LinearProblem()=default
LinearProblem Destructor.
Tpetra::Map
A parallel distribution of indices over processes.
Definition
Tpetra_Map_decl.hpp:197
Tpetra::MultiVector
One or more distributed dense vectors.
Definition
Tpetra_MultiVector_decl.hpp:350
Tpetra::RowMatrix
A read-only, row-oriented interface to a sparse matrix.
Definition
Tpetra_RowMatrix_decl.hpp:59
Tpetra::SrcDistObject
Abstract base class for objects that can be the source of an Import or Export operation.
Definition
Tpetra_SrcDistObject.hpp:57
Tpetra::Vector
A distributed dense vector.
Definition
Tpetra_Vector_decl.hpp:44
Tpetra
Namespace Tpetra contains the class and methods constituting the Tpetra library.
Generated by
1.17.0