Amesos Package Browser (Single Doxygen Collection) Development
Amesos_ComponentBaseSolver.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_ComponentBaseSolver: public virtual Amesos_BaseSolver {
00113       
00114  public:
00115 
00117 
00118     virtual ~Amesos_ComponentBaseSolver() {};
00120   
00122 
00123 
00125 
00130     virtual int PartialFactorization() = 0;
00131 
00133 
00138     virtual int Lsolve() = 0;
00139 
00141 
00146   */
00147     virtual int LsolveStart() = 0;
00149 
00152     virtual int LsolvePart(int begin, int end) = 0;
00153 
00155 
00160     virtual int Usolve() = 0;
00161 
00162 
00164 
00169   */
00170     virtual int UsolveStart() = 0;
00172 
00175     virtual int UsolvePart(int begin, int end) = 0;
00176 
00178 
00183   
00185 
00187     virtual int SetRowPermutation( int* RowPermutation ) = 0;
00188 
00190     virtual int SetColumnPermutation( int* ColumnPermutation ) = 0;
00191 
00193     virtual int SetSubMatrixSize( int SubMatrixSize ) = 0;
00194 
00196 
00207     virtual int GetRowPermutation( int** RowPermutation ) = 0;
00208 
00210 
00221     virtual int GetColumnPermutation( int** ColumnPermutation ) = 0;
00222 
00224     /* 
00225        SubMatrixSize is the number of rows and columns in the matrix
00226        that was factored.  (i.e. the number of columns of L and the
00227        number of rows of U)
00228     */
00229     virtual int GetSubMatrixSize( int* SubMatrixSize ) = 0;
00230 
00232     /*
00233       SchurComplement is a square matrix with each side having size
00234       MatrixSize-SubMatrixSize which contains the Schur 
00235       complement based on the matrices L and U, i.e.
00236         L(SubMatrixSize+1:MatrixSize,1:SubMatrixSize) *
00237         U(1:SubMatrixSize,SubMatrixSize+1:MatrixSize)
00238      */ 
00239     virtual int GetSchurComplement( Epetra_CrsMatrix* SchurComplement ) = 0;
00240 
00242 
00243 };
00244 
00245 #endif /* _AMESOS_COMPONENTBASESOLVER_H_ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines