Ifpack Package Browser (Single Doxygen Collection)
Development
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Ifpack_AMDReordering.h
Go to the documentation of this file.
1
/*@HEADER
2
// ***********************************************************************
3
//
4
// Ifpack: Object-Oriented Algebraic Preconditioner Package
5
// Copyright (2002) Sandia Corporation
6
//
7
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8
// license for use of this work by or on behalf of the U.S. Government.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are
12
// met:
13
//
14
// 1. Redistributions of source code must retain the above copyright
15
// notice, this list of conditions and the following disclaimer.
16
//
17
// 2. Redistributions in binary form must reproduce the above copyright
18
// notice, this list of conditions and the following disclaimer in the
19
// documentation and/or other materials provided with the distribution.
20
//
21
// 3. Neither the name of the Corporation nor the names of the
22
// contributors may be used to endorse or promote products derived from
23
// this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
//
37
// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38
//
39
// ***********************************************************************
40
//@HEADER
41
*/
42
43
#ifndef IFPACK_AMDREORDERING_H
44
#define IFPACK_AMDREORDERING_H
45
46
#include "
Ifpack_ConfigDefs.h
"
47
#include "
Ifpack_Reordering.h
"
48
49
namespace
Teuchos
{
50
class
ParameterList;
51
}
52
class
Ifpack_Graph
;
53
class
Epetra_MultiVector
;
54
class
Epetra_RowMatrix
;
55
57
58
class
Ifpack_AMDReordering
:
public
Ifpack_Reordering
{
59
60
public
:
61
63
Ifpack_AMDReordering
();
64
66
Ifpack_AMDReordering
(
const
Ifpack_AMDReordering
&
RHS
);
67
69
Ifpack_AMDReordering
&
operator=
(
const
Ifpack_AMDReordering
&
RHS
);
70
72
virtual
~Ifpack_AMDReordering
() {};
73
75
int
SetParameter
(
const
std::string Name,
const
int
Value);
76
78
int
SetParameter
(
const
std::string Name,
const
double
Value);
79
81
int
SetParameters
(Teuchos::ParameterList& List);
82
84
int
Compute
(
const
Ifpack_Graph
&
Graph
);
85
87
int
Compute
(
const
Epetra_RowMatrix
& Matrix);
88
90
bool
IsComputed
()
const
91
{
92
return
(
IsComputed_
);
93
}
94
96
int
Reorder
(
const
int
i)
const
;
97
99
int
InvReorder
(
const
int
i)
const
;
100
102
int
P
(
const
Epetra_MultiVector
& Xorig,
103
Epetra_MultiVector
& Xreord)
const
;
104
106
int
Pinv
(
const
Epetra_MultiVector
& Xorig,
107
Epetra_MultiVector
& Xinvreord)
const
;
108
109
111
std::ostream&
Print
(std::ostream& os)
const
;
112
114
int
NumMyRows
()
const
115
{
116
return
(
NumMyRows_
);
117
}
118
119
private
:
121
int
NumMyRows_
;
123
bool
IsComputed_
;
125
std::vector<int>
Reorder_
;
127
std::vector<int>
InvReorder_
;
128
};
129
130
#endif
Ifpack_ConfigDefs.h
Ifpack_Reordering.h
Graph
adjacency_list< vecS, vecS, undirectedS, no_property, property< edge_weight_t, double > > Graph
Definition
Ifpack_SupportGraph.h:74
RHS
#define RHS(a)
Definition
MatGenFD.c:60
Epetra_MultiVector
Epetra_RowMatrix
Ifpack_AMDReordering::SetParameters
int SetParameters(Teuchos::ParameterList &List)
Sets all parameters.
Definition
Ifpack_AMDReordering.cpp:116
Ifpack_AMDReordering::Compute
int Compute(const Ifpack_Graph &Graph)
Computes all it is necessary to initialize the reordering object.
Definition
Ifpack_AMDReordering.cpp:132
Ifpack_AMDReordering::IsComputed_
bool IsComputed_
If true, the reordering has been successfully computed.
Definition
Ifpack_AMDReordering.h:123
Ifpack_AMDReordering::Reorder_
std::vector< int > Reorder_
Contains the reordering.
Definition
Ifpack_AMDReordering.h:125
Ifpack_AMDReordering::Ifpack_AMDReordering
Ifpack_AMDReordering()
Constructor for Ifpack_Graph's.
Definition
Ifpack_AMDReordering.cpp:58
Ifpack_AMDReordering::InvReorder_
std::vector< int > InvReorder_
Contains the inverse reordering.
Definition
Ifpack_AMDReordering.h:127
Ifpack_AMDReordering::InvReorder
int InvReorder(const int i) const
Returns the inverse reordered index of row i.
Definition
Ifpack_AMDReordering.cpp:213
Ifpack_AMDReordering::NumMyRows_
int NumMyRows_
Number of local rows in the graph.
Definition
Ifpack_AMDReordering.h:121
Ifpack_AMDReordering::Pinv
int Pinv(const Epetra_MultiVector &Xorig, Epetra_MultiVector &Xinvreord) const
Applies inverse reordering to multivector X, whose local length equals the number of local rows.
Definition
Ifpack_AMDReordering.cpp:241
Ifpack_AMDReordering::SetParameter
int SetParameter(const std::string Name, const int Value)
Sets integer parameters `Name'.
Definition
Ifpack_AMDReordering.cpp:102
Ifpack_AMDReordering::IsComputed
bool IsComputed() const
Returns true is the reordering object has been successfully initialized, false otherwise.
Definition
Ifpack_AMDReordering.h:90
Ifpack_AMDReordering::operator=
Ifpack_AMDReordering & operator=(const Ifpack_AMDReordering &RHS)
Assignment operator.
Definition
Ifpack_AMDReordering.cpp:80
Ifpack_AMDReordering::Print
std::ostream & Print(std::ostream &os) const
Prints basic information on iostream. This function is used by operator<<.
Definition
Ifpack_AMDReordering.cpp:257
Ifpack_AMDReordering::~Ifpack_AMDReordering
virtual ~Ifpack_AMDReordering()
Destructor.
Definition
Ifpack_AMDReordering.h:72
Ifpack_AMDReordering::P
int P(const Epetra_MultiVector &Xorig, Epetra_MultiVector &Xreord) const
Applies reordering to multivector X, whose local length equals the number of local rows.
Definition
Ifpack_AMDReordering.cpp:225
Ifpack_AMDReordering::Reorder
int Reorder(const int i) const
Returns the reordered index of row i.
Definition
Ifpack_AMDReordering.cpp:200
Ifpack_AMDReordering::NumMyRows
int NumMyRows() const
Returns the number of local rows.
Definition
Ifpack_AMDReordering.h:114
Ifpack_Graph
Ifpack_Graph: a pure virtual class that defines graphs for IFPACK.
Definition
Ifpack_Graph.h:61
Ifpack_Reordering
Ifpack_Reordering: basic class for reordering for a Ifpack_Graph object.
Definition
Ifpack_Reordering.h:101
Teuchos
Generated by
1.17.0