CHROMA
inv_eigcg2.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /*! \file
3  * \brief Conjugate-Gradient algorithm with eigenstd::vector acceleration
4  */
5 
6 #ifndef __inv_eig_cg2_h__
7 #define __inv_eig_cg2_h__
8 
9 #include "linearop.h"
10 #include "syssolver.h"
12 
13 namespace Chroma
14 {
15 
16  //! Conjugate-Gradient (CGNE) with eigenstd::vector acceleration
17  /*! \ingroup invert
18  * @{
19  */
20  namespace InvEigCG2Env
21  {
22  // LatticeFermionF
23  void SubSpaceMatrix(LinAlg::Matrix<DComplex>& H,
24  const LinearOperator<LatticeFermionF>& A,
25  const multi1d<LatticeFermionF>& evec,
26  int Nvecs);
27 
28  void SubSpaceMatrix(LinAlg::Matrix<DComplex>& H,
29  const LinearOperator<LatticeFermionF>& A,
30  const multi1d<LatticeFermionF>& evec,
31  const multi1d<Double>& eval,
32  int Nvecs,int NgoodEvecs) ;
33 
34  SystemSolverResults_t InvEigCG2(const LinearOperator<LatticeFermionF>& A,
35  LatticeFermionF& x,
36  const LatticeFermionF& b,
37  multi1d<Double>& eval,
38  multi1d<LatticeFermionF>& evec,
39  int Neig,
40  int Nmax,
41  const Real& RsdCG, int MaxCG, const int t);
42 
43  SystemSolverResults_t vecPrecondCG(const LinearOperator<LatticeFermionF>& A,
44  LatticeFermionF& x,
45  const LatticeFermionF& b,
46  const multi1d<Double>& eval,
47  const multi1d<LatticeFermionF>& evec,
48  int startV, int endV,
49  const Real& RsdCG, int MaxCG);
50 
51  void InitGuess(const LinearOperator<LatticeFermionF>& A,
52  LatticeFermionF& x,
53  const LatticeFermionF& b,
54  const multi1d<Double>& eval,
55  const multi1d<LatticeFermionF>& evec,
56  int& n_count);
57 
58  void InitGuess(const LinearOperator<LatticeFermionF>& A,
59  LatticeFermionF& x,
60  const LatticeFermionF& b,
61  const multi1d<Double>& eval,
62  const multi1d<LatticeFermionF>& evec,
63  int N, // number of vectors to use
64  int& n_count);
65 
66 
67  // LatticeFermionD
68  void SubSpaceMatrix(LinAlg::Matrix<DComplex>& H,
69  const LinearOperator<LatticeFermionD>& A,
70  const multi1d<LatticeFermionD>& evec,
71  int Nvecs);
72 
73  void SubSpaceMatrix(LinAlg::Matrix<DComplex>& H,
74  const LinearOperator<LatticeFermionD>& A,
75  const multi1d<LatticeFermionD>& evec,
76  const multi1d<Double>& eval,
77  int Nvecs,int NgoodEvecs) ;
78 
79  SystemSolverResults_t InvEigCG2(const LinearOperator<LatticeFermionD>& A,
80  LatticeFermionD& x,
81  const LatticeFermionD& b,
82  multi1d<Double>& eval,
83  multi1d<LatticeFermionD>& evec,
84  int Neig,
85  int Nmax,
86  const Real& RsdCG, int MaxCG, const int f);
87 
88  SystemSolverResults_t vecPrecondCG(const LinearOperator<LatticeFermionD>& A,
89  LatticeFermionD& x,
90  const LatticeFermionD& b,
91  const multi1d<Double>& eval,
92  const multi1d<LatticeFermionD>& evec,
93  int startV, int endV,
94  const Real& RsdCG, int MaxCG);
95 
96  void InitGuess(const LinearOperator<LatticeFermionD>& A,
97  LatticeFermionD& x,
98  const LatticeFermionD& b,
99  const multi1d<Double>& eval,
100  const multi1d<LatticeFermionD>& evec,
101  int& n_count);
102 
103  void InitGuess(const LinearOperator<LatticeFermionD>& A,
104  LatticeFermionD& x,
105  const LatticeFermionD& b,
106  const multi1d<Double>& eval,
107  const multi1d<LatticeFermionD>& evec,
108  int N, // number of vectors to use
109  int& n_count);
110 
111  } // namespace EigCG2Env
112 
113  /*! @} */ // end of group invert
114 
115 
116 }// End Namespace Chroma
117 
118 #endif
Linear Operators.
int x
Definition: meslate.cc:34
int t
Definition: meslate.cc:37
void SubSpaceMatrix(LinAlg::Matrix< DComplex > &H, const LinearOperator< LatticeFermionF > &A, const multi1d< LatticeFermionF > &evec, int Nvecs)
Definition: inv_eigcg2.cc:1156
SystemSolverResults_t InvEigCG2(const LinearOperator< LatticeFermionF > &A, LatticeFermionF &x, const LatticeFermionF &b, multi1d< Double > &eval, multi1d< LatticeFermionF > &evec, int Neig, int Nmax, const Real &RsdCG, int MaxCG, const int PrintLevel)
Definition: inv_eigcg2.cc:1172
SystemSolverResults_t vecPrecondCG(const LinearOperator< LatticeFermionF > &A, LatticeFermionF &x, const LatticeFermionF &b, const multi1d< Double > &eval, const multi1d< LatticeFermionF > &evec, int startV, int endV, const Real &RsdCG, int MaxCG)
Definition: inv_eigcg2.cc:1185
void InitGuess(const LinearOperator< LatticeFermionF > &A, LatticeFermionF &x, const LatticeFermionF &b, const multi1d< Double > &eval, const multi1d< LatticeFermionF > &evec, int &n_count)
Definition: inv_eigcg2.cc:1196
Asqtad Staggered-Dirac operator.
Definition: klein_gord.cc:10
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > const multi1d< Real > enum InvType invType const multi1d< Real > & RsdCG
Definition: pbg5p_w.cc:30
int n_count
Definition: invbicg.cc:78
const WilsonTypeFermAct< multi1d< LatticeFermion > > Handle< const ConnectState > const multi1d< Real > enum InvType invType const multi1d< Real > int MaxCG
Definition: pbg5p_w.cc:32
A(A, psi, r, Ncb, PLUS)
Complex b
Definition: invbicg.cc:96
Linear system solvers.