Amesos Package Browser (Single Doxygen Collection) Development
Loading...
Searching...
No Matches
Amesos_ComponentBaseSolver.h
Go to the documentation of this file.
1/*
2 I think that Amesos_Component should be an additional interface and
3 hence functions which do not differ from the Amesos_BaseSolver class
4 are not included here.
5 */
6/*
7// @HEADER
8// ***********************************************************************
9//
10// Amesos: Direct Sparse Solver Package
11// Copyright (2004) Sandia Corporation
12//
13// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
14// license for use of this work by or on behalf of the U.S. Government.
15//
16// This library is free software; you can redistribute it and/or modify
17// it under the terms of the GNU Lesser General Public License as
18// published by the Free Software Foundation; either version 2.1 of the
19// License, or (at your option) any later version.
20//
21// This library is distributed in the hope that it will be useful, but
22// WITHOUT ANY WARRANTY; without even the implied warranty of
23// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24// Lesser General Public License for more details.
25//
26// You should have received a copy of the GNU Lesser General Public
27// License along with this library; if not, write to the Free Software
28// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
29// USA
30// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
31//
32// ***********************************************************************
33// @HEADER
34*/
35
36#ifndef _AMESOS_COMPONENTBASESOLVER_H_
37#define _AMESOS_COMPONENTBASESOLVER_H_
38
39#include "Teuchos_ParameterList.hpp"
40#include "Epetra_LinearProblem.h"
41class Epetra_LinearProblem;
42class Epetra_MultiVector;
43class Epetra_Map;
44class Epetra_Comm;
45
47
113
114 public:
115
117
120
122
123
125
130 virtual int PartialFactorization() = 0;
131
133
138 virtual int Lsolve() = 0;
139
141
146 */
147 virtual int LsolveStart() = 0;
149
152 virtual int LsolvePart(int begin, int end) = 0;
153
155
160 virtual int Usolve() = 0;
161
162
164
169 */
170 virtual int UsolveStart() = 0;
172
175 virtual int UsolvePart(int begin, int end) = 0;
176
178
183
185
187 virtual int SetRowPermutation( int* RowPermutation ) = 0;
188
190 virtual int SetColumnPermutation( int* ColumnPermutation ) = 0;
191
193 virtual int SetSubMatrixSize( int SubMatrixSize ) = 0;
194
196
207 virtual int GetRowPermutation( int** RowPermutation ) = 0;
208
210
221 virtual int GetColumnPermutation( int** ColumnPermutation ) = 0;
222
224 /*
225 SubMatrixSize is the number of rows and columns in the matrix
226 that was factored. (i.e. the number of columns of L and the
227 number of rows of U)
228 */
229 virtual int GetSubMatrixSize( int* SubMatrixSize ) = 0;
230
232 /*
233 SchurComplement is a square matrix with each side having size
234 MatrixSize-SubMatrixSize which contains the Schur
235 complement based on the matrices L and U, i.e.
236 L(SubMatrixSize+1:MatrixSize,1:SubMatrixSize) *
237 U(1:SubMatrixSize,SubMatrixSize+1:MatrixSize)
238 */
239 virtual int GetSchurComplement( Epetra_CrsMatrix* SchurComplement ) = 0;
240
242
243};
244
245#endif /* _AMESOS_COMPONENTBASESOLVER_H_ */
Amesos_BaseSolver: A pure virtual class for direct solution of real-valued double-precision operators...
Amesos_ComponentBaseSolver: A pure virtual class for direct solvers to be used within Amesos_Merikos ...
*virtual int LsolveStart()=0
Solves the triangular part of L X1 = B (or LT x = B)
virtual int PartialFactorization()=0
Performs partial factorization on the matrix A.
virtual int GetSchurComplement(Epetra_CrsMatrix *SchurComplement)=0
GetSchurComplement.
virtual int GetColumnPermutation(int **ColumnPermutation)=0
GetColumnPermutation.
virtual int Lsolve()=0
Solves L X = B (or LT x = B)
virtual int SetSubMatrixSize(int SubMatrixSize)=0
SetSubMatrixSize.
*virtual int UsolveStart()=0
Solves the triangular part of U X1 = B (or LT x = B)
virtual int GetRowPermutation(int **RowPermutation)=0
GetRowPermutation.
virtual int LsolvePart(int begin, int end)=0
Computes L[begin..end,:] X1.
virtual int GetSubMatrixSize(int *SubMatrixSize)=0
GetSubMatrixSize.
virtual int Usolve()=0
Solves U X = B (or UT x = B)
virtual int SetRowPermutation(int *RowPermutation)=0
Solves U X = B (or UT x = B)
virtual int UsolvePart(int begin, int end)=0
Computes U[:,begin..end] X1.
virtual ~Amesos_ComponentBaseSolver()
Destructor.
virtual int SetColumnPermutation(int *ColumnPermutation)=0
SetColumnPermutation.