Amesos Package Browser (Single Doxygen Collection) Development
Amesos_Component.h
Go to the documentation of this file.
00001 /*
00002  I think that Amesos_Component should be an additional interface and
00003  hence functions which do not differ from the Amesos_BaseSolver class 
00004  are not included here.
00005  */
00006 /*
00007 // @HEADER
00008 // ***********************************************************************
00009 // 
00010 //                Amesos: Direct Sparse Solver Package
00011 //                 Copyright (2004) Sandia Corporation
00012 // 
00013 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00014 // license for use of this work by or on behalf of the U.S. Government.
00015 // 
00016 // This library is free software; you can redistribute it and/or modify
00017 // it under the terms of the GNU Lesser General Public License as
00018 // published by the Free Software Foundation; either version 2.1 of the
00019 // License, or (at your option) any later version.
00020 //  
00021 // This library is distributed in the hope that it will be useful, but
00022 // WITHOUT ANY WARRANTY; without even the implied warranty of
00023 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00024 // Lesser General Public License for more details.
00025 //  
00026 // You should have received a copy of the GNU Lesser General Public
00027 // License along with this library; if not, write to the Free Software
00028 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00029 // USA
00030 // Questions? Contact Michael A. Heroux (maherou@sandia.gov) 
00031 // 
00032 // ***********************************************************************
00033 // @HEADER
00034 */
00035 
00036 #ifndef _AMESOS_COMPONENTBASESOLVER_H_
00037 #define _AMESOS_COMPONENTBASESOLVER_H_
00038 
00039 #include "Teuchos_ParameterList.hpp"
00040 #include "Epetra_LinearProblem.h"
00041 class Epetra_LinearProblem;
00042 class Epetra_MultiVector;
00043 class Epetra_Map;
00044 class Epetra_Comm;
00045 
00047 
00112 class Amesos_Component {
00113       
00114  public:
00115 
00117 
00118     virtual ~Amesos_Component() {};
00120   
00122 
00123 
00125 
00130     virtual int PartialFactorization() = 0;
00131 
00133 
00138     virtual int Lsolve() = 0;
00139 
00141 
00146     virtual int Usolve() = 0;
00147 
00149   
00151 
00153     virtual int SetRowPermutation( int* RowPermutation ) = 0;
00154 
00156     virtual int SetColumnPermutation( int* ColumnPermutation ) = 0;
00157 
00159     virtual int SetSubMatrixSize( int SubMatrixSize ) = 0;
00160 
00162 
00173     virtual int GetRowPermutation( int** RowPermutation ) = 0;
00174 
00176 
00187     virtual int GetColumnPermutation( int** ColumnPermutation ) = 0;
00188 
00190     /* 
00191        SubMatrixSize is the number of rows and columns in the matrix
00192        that was factored.  (i.e. the number of columns of L and the
00193        number of rows of U)
00194     */
00195     virtual int GetSubMatrixSize( int* SubMatrixSize ) = 0;
00196 
00198     /*
00199       SchurComplement is a square matrix with each side having size
00200       MatrixSize-SubMatrixSize which contains the Schur 
00201       complement based on the matrices L and U, i.e.
00202         L(SubMatrixSize+1:MatrixSize,1:SubMatrixSize) *
00203         U(1:SubMatrixSize,SubMatrixSize+1:MatrixSize)
00204      */ 
00205     virtual int GetSchurComplement( Epetra_CrsMatrix* SchurComplement ) = 0;
00206 
00208 
00209 };
00210 
00211 #endif /* _AMESOS_COMPONENTBASESOLVER_H_ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines