src/eigsolv/CheckingTools.h

Go to the documentation of this file.
00001 //**************************************************************************
00002 //
00003 //                                 NOTICE
00004 //
00005 // This software is a result of the research described in the report
00006 //
00007 // " A comparison of algorithms for modal analysis in the absence 
00008 //   of a sparse direct method", P. Arbenz, R. Lehoucq, and U. Hetmaniuk,
00009 //  Sandia National Laboratories, Technical report SAND2003-1028J.
00010 //
00011 // It is based on the Epetra, AztecOO, and ML packages defined in the Trilinos
00012 // framework ( http://software.sandia.gov/trilinos/ ).
00013 //
00014 // The distribution of this software follows also the rules defined in Trilinos.
00015 // This notice shall be marked on any reproduction of this software, in whole or
00016 // in part.
00017 //
00018 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
00019 // license for use of this work by or on behalf of the U.S. Government.
00020 //
00021 // This program 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.
00024 //
00025 // Code Authors: U. Hetmaniuk (ulhetma@sandia.gov), R. Lehoucq (rblehou@sandia.gov)
00026 //
00027 //**************************************************************************
00028 
00029 #ifndef CHECKING_TOOLS_H
00030 #define CHECKING_TOOLS_H
00031 
00032 #include "Epetra_ConfigDefs.h"
00033 
00034 #include "Epetra_Comm.h"
00035 #include "Epetra_LAPACK.h"
00036 #include "Epetra_LocalMap.h"
00037 #include "Epetra_Map.h"
00038 #include "Epetra_MultiVector.h"
00039 #include "Epetra_Operator.h"
00040 #include "Epetra_Vector.h"
00041 
00042 class CheckingTools {
00043 
00044 private:
00045 
00046     const Epetra_Comm &MyComm;
00047 
00048 public:
00049 
00050     CheckingTools(const Epetra_Comm &_Comm);
00051 
00052     double errorOrthogonality(const Epetra_MultiVector *X, const Epetra_MultiVector *R,
00053                               const Epetra_Operator *M = 0) const;
00054 
00055     double errorOrthonormality(const Epetra_MultiVector *X, const Epetra_Operator *M = 0) const;
00056 
00057     double errorEquality(const Epetra_MultiVector *X, const Epetra_MultiVector *MX,
00058                          const Epetra_Operator *M = 0) const;
00059 
00060     int errorSubspaces(const Epetra_MultiVector &Q, const Epetra_MultiVector &Qex,
00061                        const Epetra_Operator *M) const;
00062 
00063     void errorEigenResiduals(const Epetra_MultiVector &Q, double *lambda,
00064                              const Epetra_Operator *K, const Epetra_Operator *M,
00065                              double *normWeight = 0) const;
00066 
00067     int errorLambda(double *continuous, double *discrete, int numDiscrete, double *lambda,
00068                     int nev) const;
00069 
00070     int inputArguments(const int &numEigen, const Epetra_Operator *K,
00071                        const Epetra_Operator *M, const Epetra_Operator *P,
00072                        const Epetra_MultiVector &Q, const int &minSize) const;
00073 
00074 };
00075 
00076 
00077 #endif
00078 

Generated on Fri Oct 26 13:35:11 2007 for FEMAXX (Finite Element Maxwell Eigensolver) by  doxygen 1.4.7