Anasazi Version of the Day
Loading...
Searching...
No Matches
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
32class 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