Anasazi  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
CheckingTools.h
1 // @HEADER
2 // *****************************************************************************
3 // Anasazi: Block Eigensolvers Package
4 //
5 // Copyright 2004 NTESS and the Anasazi contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 // This software is a result of the research described in the report
11 //
12 // "A comparison of algorithms for modal analysis in the absence
13 // of a sparse direct method", P. Arbenz, R. Lehoucq, and U. Hetmaniuk,
14 // Sandia National Laboratories, Technical report SAND2003-1028J.
15 //
16 // It is based on the Epetra, AztecOO, and ML packages defined in the Trilinos
17 // framework ( http://trilinos.org/ ).
18 
19 #ifndef CHECKING_TOOLS_H
20 #define CHECKING_TOOLS_H
21 
22 #include "Epetra_ConfigDefs.h"
23 
24 #include "Epetra_Comm.h"
25 #include "Epetra_LAPACK.h"
26 #include "Epetra_LocalMap.h"
27 #include "Epetra_Map.h"
28 #include "Epetra_MultiVector.h"
29 #include "Epetra_Operator.h"
30 #include "Epetra_Vector.h"
31 
32 class CheckingTools {
33 
34  private:
35 
36  const Epetra_Comm &MyComm;
37 
38  public:
39 
40  CheckingTools(const Epetra_Comm &_Comm);
41 
42  double errorOrthogonality(const Epetra_MultiVector *X, const Epetra_MultiVector *R,
43  const Epetra_Operator *M = 0) const;
44 
45  double errorOrthonormality(const Epetra_MultiVector *X, const Epetra_Operator *M = 0) const;
46 
47  double errorEquality(const Epetra_MultiVector *X, const Epetra_MultiVector *MX,
48  const Epetra_Operator *M = 0) const;
49 
50  int errorSubspaces(const Epetra_MultiVector &Q, const Epetra_MultiVector &Qex,
51  const Epetra_Operator *M) const;
52 
53  void errorEigenResiduals(const Epetra_MultiVector &Q, double *lambda,
54  const Epetra_Operator *K, const Epetra_Operator *M,
55  double *normWeight = 0) const;
56 
57  void errorEigenResiduals(const Epetra_MultiVector &Q, double *lambda,
58  const Epetra_Operator *K, const Epetra_Operator *M,
59  const Epetra_Operator *Msolver) const;
60 
61  int errorLambda(double *continuous, double *discrete, int numDiscrete, double *lambda,
62  int nev) const;
63 
64  int inputArguments(const int &numEigen, const Epetra_Operator *K,
65  const Epetra_Operator *M, const Epetra_Operator *P,
66  const Epetra_MultiVector &Q, const int &minSize) const;
67 
68 };
69 
70 
71 #endif