Epetra_RowMatrix.h

Go to the documentation of this file.
00001 
00002 //@HEADER
00003 /*
00004 ************************************************************************
00005 
00006               Epetra: Linear Algebra Services Package 
00007                 Copyright (2001) Sandia Corporation
00008 
00009 Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00010 license for use of this work by or on behalf of the U.S. Government.
00011 
00012 This library is free software; you can redistribute it and/or modify
00013 it under the terms of the GNU Lesser General Public License as
00014 published by the Free Software Foundation; either version 2.1 of the
00015 License, or (at your option) any later version.
00016  
00017 This library is distributed in the hope that it will be useful, but
00018 WITHOUT ANY WARRANTY; without even the implied warranty of
00019 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00020 Lesser General Public License for more details.
00021  
00022 You should have received a copy of the GNU Lesser General Public
00023 License along with this library; if not, write to the Free Software
00024 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00025 USA
00026 Questions? Contact Michael A. Heroux (maherou@sandia.gov) 
00027 
00028 ************************************************************************
00029 */
00030 //@HEADER
00031 
00032 #ifndef EPETRA_ROWMATRIX_H
00033 #define EPETRA_ROWMATRIX_H
00034 
00035 class Epetra_Comm;
00036 class Epetra_Import;
00037 class Epetra_Export;
00038 class Epetra_Vector;
00039 class Epetra_MultiVector;
00040 #include "Epetra_Operator.h"
00041 #include "Epetra_SrcDistObject.h"
00042 
00043 
00045 
00055 class Epetra_RowMatrix: public virtual Epetra_Operator, public virtual Epetra_SrcDistObject {
00056       
00057  public:
00059 
00060 
00061     virtual ~Epetra_RowMatrix() {};
00062 
00064   
00066 
00067 
00069 
00077     virtual int NumMyRowEntries(int MyRow, int & NumEntries) const = 0;
00078 
00079 
00081     virtual int MaxNumEntries() const = 0;
00082 
00084 
00098     virtual int ExtractMyRowCopy(int MyRow, int Length, int & NumEntries, double *Values, int * Indices) const = 0;
00099 
00101 
00107     virtual int ExtractDiagonalCopy(Epetra_Vector & Diagonal) const = 0;
00109   
00111 
00112 
00114 
00124     virtual int Multiply(bool TransA, const Epetra_MultiVector& X, Epetra_MultiVector& Y) const = 0;
00125 
00127 
00142     virtual int Solve(bool Upper, bool Trans, bool UnitDiagonal, const Epetra_MultiVector& X, 
00143           Epetra_MultiVector& Y) const = 0;
00144 
00146 
00156     virtual int InvRowSums(Epetra_Vector& x) const = 0;
00157 
00159 
00166     virtual int LeftScale(const Epetra_Vector& x) = 0;
00167 
00169 
00179     virtual int InvColSums(Epetra_Vector& x) const = 0;
00180 
00182 
00189     virtual int RightScale(const Epetra_Vector& x) = 0;
00191   
00193 
00194 
00196     virtual bool Filled() const = 0;
00197 
00199     /* Returns the quantity \f$ \| A \|_\infty\f$ such that
00200        \f[\| A \|_\infty = \max_{1\lei\len} \sum_{i=1}^m |a_{ij}| \f].
00201     */ 
00202     virtual double NormInf() const = 0;
00203 
00205     /* Returns the quantity \f$ \| A \|_1\f$ such that
00206        \f[\| A \|_1= \max_{1\lej\len} \sum_{j=1}^n |a_{ij}| \f].
00207     */ 
00208     virtual double NormOne() const = 0;
00209 
00211     /*
00212       Note that depending on the matrix implementation, it is sometimes
00213       possible to have some nonzeros that appear on multiple processors.
00214       In that case, those nonzeros may be counted multiple times (also
00215       depending on the matrix implementation).
00216     */
00217     virtual int NumGlobalNonzeros() const = 0;
00218 
00220     virtual int NumGlobalRows() const = 0;
00221 
00223     virtual int NumGlobalCols() const= 0;
00224 
00226     virtual int NumGlobalDiagonals() const = 0;
00227     
00229     virtual int NumMyNonzeros() const = 0;
00230 
00232     virtual int NumMyRows() const = 0;
00233 
00235     virtual int NumMyCols() const = 0;
00236 
00238     virtual int NumMyDiagonals() const = 0;
00239 
00241     virtual bool LowerTriangular() const = 0;
00242 
00244     virtual bool UpperTriangular() const = 0;
00245 
00247     virtual const Epetra_Map & RowMatrixRowMap() const = 0;
00248 
00250     virtual const Epetra_Map & RowMatrixColMap() const = 0;
00251 
00253     virtual const Epetra_Import * RowMatrixImporter() const = 0;
00255 };
00256 
00257 #endif /* EPETRA_ROWMATRIX_H */

Generated on Thu Sep 18 12:37:58 2008 for Epetra Package Browser (Single Doxygen Collection) by doxygen 1.3.9.1