IFPACK
Development
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Ifpack_RCMReordering.h
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_RCMREORDERING_H
44
#define IFPACK_RCMREORDERING_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_RCMReordering
:
public
Ifpack_Reordering
{
59
60
public
:
61
63
Ifpack_RCMReordering
();
64
66
Ifpack_RCMReordering
(
const
Ifpack_RCMReordering
& RHS);
67
69
Ifpack_RCMReordering
&
operator=
(
const
Ifpack_RCMReordering
& RHS);
70
72
virtual
~Ifpack_RCMReordering
() {};
73
75
virtual
int
SetParameter
(
const
std::string Name,
const
int
Value);
76
78
virtual
int
SetParameter
(
const
std::string Name,
const
double
Value);
79
81
virtual
int
SetParameters
(Teuchos::ParameterList& List);
82
84
virtual
int
Compute
(
const
Ifpack_Graph
& Graph);
85
87
virtual
int
Compute
(
const
Epetra_RowMatrix
& Matrix);
88
90
virtual
bool
IsComputed
()
const
91
{
92
return
(IsComputed_);
93
}
94
96
virtual
int
Reorder
(
const
int
i)
const
;
97
99
virtual
int
InvReorder
(
const
int
i)
const
;
100
102
virtual
int
P
(
const
Epetra_MultiVector
& Xorig,
103
Epetra_MultiVector
& Xreord)
const
;
104
106
virtual
int
Pinv
(
const
Epetra_MultiVector
& Xorig,
107
Epetra_MultiVector
& Xinvreord)
const
;
108
109
111
virtual
std::ostream&
Print
(std::ostream& os)
const
;
112
114
virtual
int
NumMyRows
()
const
115
{
116
return
(NumMyRows_);
117
}
118
120
virtual
int
RootNode
()
const
121
{
122
return
(RootNode_);
123
}
124
125
private
:
127
int
RootNode_;
129
int
NumMyRows_;
131
bool
IsComputed_;
133
std::vector<int> Reorder_;
135
std::vector<int> InvReorder_;
136
};
137
138
#endif
Epetra_MultiVector
Epetra_RowMatrix
Ifpack_Graph
Ifpack_Graph: a pure virtual class that defines graphs for IFPACK.
Definition
Ifpack_Graph.h:61
Ifpack_RCMReordering::Print
virtual std::ostream & Print(std::ostream &os) const
Prints basic information on iostream. This function is used by operator<<.
Definition
Ifpack_RCMReordering.cpp:294
Ifpack_RCMReordering::Pinv
virtual 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_RCMReordering.cpp:278
Ifpack_RCMReordering::SetParameters
virtual int SetParameters(Teuchos::ParameterList &List)
Sets all parameters.
Definition
Ifpack_RCMReordering.cpp:117
Ifpack_RCMReordering::NumMyRows
virtual int NumMyRows() const
Returns the number of local rows.
Definition
Ifpack_RCMReordering.h:114
Ifpack_RCMReordering::SetParameter
virtual int SetParameter(const std::string Name, const int Value)
Sets integer parameters `Name'.
Definition
Ifpack_RCMReordering.cpp:101
Ifpack_RCMReordering::IsComputed
virtual bool IsComputed() const
Returns true is the reordering object has been successfully initialized, false otherwise.
Definition
Ifpack_RCMReordering.h:90
Ifpack_RCMReordering::operator=
Ifpack_RCMReordering & operator=(const Ifpack_RCMReordering &RHS)
Assignment operator.
Definition
Ifpack_RCMReordering.cpp:78
Ifpack_RCMReordering::InvReorder
virtual int InvReorder(const int i) const
Returns the inverse reordered index of row i.
Definition
Ifpack_RCMReordering.cpp:250
Ifpack_RCMReordering::~Ifpack_RCMReordering
virtual ~Ifpack_RCMReordering()
Destructor.
Definition
Ifpack_RCMReordering.h:72
Ifpack_RCMReordering::Ifpack_RCMReordering
Ifpack_RCMReordering()
Constructor for Ifpack_Graph's.
Definition
Ifpack_RCMReordering.cpp:54
Ifpack_RCMReordering::RootNode
virtual int RootNode() const
Returns the root node.
Definition
Ifpack_RCMReordering.h:120
Ifpack_RCMReordering::Reorder
virtual int Reorder(const int i) const
Returns the reordered index of row i.
Definition
Ifpack_RCMReordering.cpp:237
Ifpack_RCMReordering::P
virtual 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_RCMReordering.cpp:262
Ifpack_RCMReordering::Compute
virtual int Compute(const Ifpack_Graph &Graph)
Computes all it is necessary to initialize the reordering object.
Definition
Ifpack_RCMReordering.cpp:134
Ifpack_Reordering
Ifpack_Reordering: basic class for reordering for a Ifpack_Graph object.
Definition
Ifpack_Reordering.h:101
Generated by
1.17.0