Ifpack Package Browser (Single Doxygen Collection) Development
Loading...
Searching...
No Matches
Ifpack_Reordering.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_REORDERING_H
44#define IFPACK_REORDERING_H
45
46#include "Ifpack_ConfigDefs.h"
47
48namespace Teuchos {
49 class ParameterList;
50}
52class Ifpack_Graph;
54
56
102
103public:
104
106 virtual ~Ifpack_Reordering() {};
107
109 virtual int SetParameter(const std::string Name, const int Value) = 0;
110
112 virtual int SetParameter(const std::string Name, const double Value) = 0;
113
115 virtual int SetParameters(Teuchos::ParameterList& List) = 0;
116
118 virtual int Compute(const Ifpack_Graph& Graph) = 0;
119
121 virtual int Compute(const Epetra_RowMatrix& Matrix) = 0;
122
124 virtual bool IsComputed() const = 0;
125
127 virtual int Reorder(const int i) const = 0;
128
130 virtual int InvReorder(const int i) const = 0;
131
133 virtual int P(const Epetra_MultiVector& Xorig,
134 Epetra_MultiVector& X) const = 0;
135
137 virtual int Pinv(const Epetra_MultiVector& Xorig,
138 Epetra_MultiVector& X) const = 0;
139
141 virtual std::ostream& Print(std::ostream& os) const = 0;
142
143};
144
145inline std::ostream& operator<<(std::ostream& os, const Ifpack_Reordering& obj)
146{
147 return(obj.Print(os));
148}
149
150#endif
std::ostream & operator<<(std::ostream &os, const Ifpack_Reordering &obj)
adjacency_list< vecS, vecS, undirectedS, no_property, property< edge_weight_t, double > > Graph
Ifpack_Graph: a pure virtual class that defines graphs for IFPACK.
Definition: Ifpack_Graph.h:61
Ifpack_Reordering: basic class for reordering for a Ifpack_Graph object.
virtual int SetParameter(const std::string Name, const int Value)=0
Sets integer parameters ‘Name’.
virtual int Compute(const Epetra_RowMatrix &Matrix)=0
Computes all it is necessary to initialize the reordering object.
virtual int P(const Epetra_MultiVector &Xorig, Epetra_MultiVector &X) const =0
Applies reordering to multivector Xorig, whose local length equals the number of local rows,...
virtual bool IsComputed() const =0
Returns true is the reordering object has been successfully initialized, false otherwise.
virtual int Compute(const Ifpack_Graph &Graph)=0
Computes all it is necessary to initialize the reordering object.
virtual ~Ifpack_Reordering()
Destructor.
virtual int SetParameters(Teuchos::ParameterList &List)=0
Sets all parameters.
virtual int InvReorder(const int i) const =0
Returns the inverse reordered index of row i.
virtual int SetParameter(const std::string Name, const double Value)=0
Sets double parameters ‘Name’.
virtual int Reorder(const int i) const =0
Returns the reordered index of row i.
virtual int Pinv(const Epetra_MultiVector &Xorig, Epetra_MultiVector &X) const =0
Applies inverse reordering to multivector Xorig, whose local length equals the number of local rows,...
virtual std::ostream & Print(std::ostream &os) const =0
Prints basic information on iostream. This function is used by operator<<.