28#ifndef GRID_DEFLATION_H
29#define GRID_DEFLATION_H
43 virtual void operator()(
const Field &src, Field &guess) { };
49 virtual void operator()(
const Field &src, Field &guess) { guess = src; };
58 const std::vector<Field> &
evec;
59 const std::vector<RealD> &
eval;
65 DeflatedGuesser(
const std::vector<Field> & _evec,
const std::vector<RealD> & _eval)
69 DeflatedGuesser(
const std::vector<Field> & _evec,
const std::vector<RealD> & _eval,
const unsigned int _N)
73 assert(
N <=
evec.size());
78 for (
int i=0;i<
N;i++) {
79 const Field& tmp =
evec[i];
82 guess.Checkerboard() = src.Checkerboard();
86template<
class FineField,
class CoarseField>
96 const std::vector<CoarseField> &_evec_coarse,
97 const std::vector<RealD> &_eval_coarse)
109 for (
int i=0;i<N;i++) {
114 guess.Checkerboard() = src.Checkerboard();
117 void operator()(
const std::vector<FineField> &src,std::vector<FineField> &guess) {
119 int Nsrc = (int)src.size();
124 std::cout <<
GridLogMessage <<
"Start BlockProject for loop" << std::endl;
125 for (
int j=0;j<Nsrc;j++)
127 guess_coarse[j] =
Zero();
128 std::cout <<
GridLogMessage <<
"BlockProject iter: " << j << std::endl;
132 std::cout <<
GridLogMessage <<
"Start ProjectAccum for loop" << std::endl;
133 for (
int i=0;i<Nevec;i++)
135 std::cout <<
GridLogMessage <<
"ProjectAccum Nvec: " << i << std::endl;
137 for (
int j=0;j<Nsrc;j++)
143 std::cout <<
GridLogMessage <<
"Start BlockPromote for loop" << std::endl;
144 for (
int j=0;j<Nsrc;j++)
146 std::cout <<
GridLogMessage <<
"BlockProject iter: " << j << std::endl;
148 guess[j].Checkerboard() = src[j].Checkerboard();
void axpy(Lattice< vobj > &ret, sobj a, const Lattice< vobj > &x, const Lattice< vobj > &y)
ComplexD innerProduct(const Lattice< vobj > &left, const Lattice< vobj > &right)
void blockPromote(const Lattice< iVector< CComplex, nbasis > > &coarseData, Lattice< vobj > &fineData, const VLattice &Basis)
void blockProject(Lattice< iVector< CComplex, nbasis > > &coarseData, const Lattice< vobj > &fineData, const VLattice &Basis)
GridLogger GridLogMessage(1, "Message", GridLogColours, "NORMAL")
accelerator_inline std::enable_if<!isGridTensor< T >::value, T >::type TensorRemove(T arg)
virtual void operator()(const Field &src, Field &guess)
DeflatedGuesser(const std::vector< Field > &_evec, const std::vector< RealD > &_eval)
DeflatedGuesser(const std::vector< Field > &_evec, const std::vector< RealD > &_eval, const unsigned int _N)
const std::vector< RealD > & eval
const std::vector< Field > & evec
virtual void operator()(const Field &src, Field &guess)
void operator()(const FineField &src, FineField &guess)
const std::vector< FineField > & subspace
LocalCoherenceDeflatedGuesser(const std::vector< FineField > &_subspace, const std::vector< CoarseField > &_evec_coarse, const std::vector< RealD > &_eval_coarse)
void operator()(const std::vector< FineField > &src, std::vector< FineField > &guess)
const std::vector< CoarseField > & evec_coarse
const std::vector< RealD > & eval_coarse
virtual void operator()(const Field &src, Field &guess)
virtual void operator()(const Field &src, Field &guess)