CHROMA
inv_eigcg2_array.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_eigcg2_array_h__
7 #define __inv_eigcg2_array_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 InvEigCG2ArrayEnv
21  {
22  // LatticeFermionF
23  void SubSpaceMatrix(LinAlg::Matrix<DComplex>& H,
24  const LinearOperatorArray<LatticeFermionF>& A,
25  const multi2d<LatticeFermionF>& evec,
26  int Nvecs);
27 
28  SystemSolverResults_t InvEigCG2(const LinearOperatorArray<LatticeFermionF>& A,
29  multi1d<LatticeFermionF>& x,
30  const multi1d<LatticeFermionF>& b,
31  multi1d<Double>& eval,
32  multi2d<LatticeFermionF>& evec,
33  int Neig,
34  int Nmax,
35  const Real& RsdCG, int MaxCG);
36 
37  SystemSolverResults_t vecPrecondCG(const LinearOperatorArray<LatticeFermionF>& A,
38  multi1d<LatticeFermionF>& x,
39  const multi1d<LatticeFermionF>& b,
40  const multi1d<Double>& eval,
41  const multi2d<LatticeFermionF>& evec,
42  int startV, int endV,
43  const Real& RsdCG, int MaxCG);
44 
45  void InitGuess(const LinearOperatorArray<LatticeFermionF>& A,
46  multi1d<LatticeFermionF>& x,
47  const multi1d<LatticeFermionF>& b,
48  const multi1d<Double>& eval,
49  const multi2d<LatticeFermionF>& evec,
50  int& n_count);
51 
52  void InitGuess(const LinearOperatorArray<LatticeFermionF>& A,
53  multi1d<LatticeFermionF>& x,
54  const multi1d<LatticeFermionF>& b,
55  const multi1d<Double>& eval,
56  const multi2d<LatticeFermionF>& evec,
57  int N, // number of vectors to use
58  int& n_count);
59 
60 
61  // multi1d<LatticeFermionD>
62  void SubSpaceMatrix(LinAlg::Matrix<DComplex>& H,
63  const LinearOperatorArray<LatticeFermionD>& A,
64  const multi2d<LatticeFermionD>& evec,
65  int Nvecs);
66 
67  SystemSolverResults_t InvEigCG2(const LinearOperatorArray<LatticeFermionD>& A,
68  multi1d<LatticeFermionD>& x,
69  const multi1d<LatticeFermionD>& b,
70  multi1d<Double>& eval,
71  multi2d<LatticeFermionD>& evec,
72  int Neig,
73  int Nmax,
74  const Real& RsdCG, int MaxCG);
75 
76  SystemSolverResults_t vecPrecondCG(const LinearOperatorArray<LatticeFermionD>& A,
77  multi1d<LatticeFermionD>& x,
78  const multi1d<LatticeFermionD>& b,
79  const multi1d<Double>& eval,
80  const multi2d<LatticeFermionD>& evec,
81  int startV, int endV,
82  const Real& RsdCG, int MaxCG);
83 
84  void InitGuess(const LinearOperatorArray<LatticeFermionD>& A,
85  multi1d<LatticeFermionD>& x,
86  const multi1d<LatticeFermionD>& b,
87  const multi1d<Double>& eval,
88  const multi2d<LatticeFermionD>& evec,
89  int& n_count);
90 
91  void InitGuess(const LinearOperatorArray<LatticeFermionD>& A,
92  multi1d<LatticeFermionD>& x,
93  const multi1d<LatticeFermionD>& b,
94  const multi1d<Double>& eval,
95  const multi2d<LatticeFermionD>& evec,
96  int N, // number of vectors to use
97  int& n_count);
98 
99  } // namespace EigCG2Env
100 
101  /*! @} */ // end of group invert
102 
103 
104 }// End Namespace Chroma
105 
106 #endif
Linear Operators.
int x
Definition: meslate.cc:34
SystemSolverResults_t InvEigCG2(const LinearOperatorArray< LatticeFermionF > &A, multi1d< LatticeFermionF > &x, const multi1d< LatticeFermionF > &b, multi1d< Double > &eval, multi2d< LatticeFermionF > &evec, int Neig, int Nmax, const Real &RsdCG, int MaxCG)
void SubSpaceMatrix(LinAlg::Matrix< DComplex > &H, const LinearOperatorArray< LatticeFermionF > &A, const multi2d< LatticeFermionF > &evec, int Nvecs)
SystemSolverResults_t vecPrecondCG(const LinearOperatorArray< LatticeFermionF > &A, multi1d< LatticeFermionF > &x, const multi1d< LatticeFermionF > &b, const multi1d< Double > &eval, const multi2d< LatticeFermionF > &evec, int startV, int endV, const Real &RsdCG, int MaxCG)
void InitGuess(const LinearOperatorArray< LatticeFermionF > &A, multi1d< LatticeFermionF > &x, const multi1d< LatticeFermionF > &b, const multi1d< Double > &eval, const multi2d< LatticeFermionF > &evec, int &n_count)
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.