44 std::vector<ColorSpinorField *>
r;
70 virtual void operator()(std::vector<ColorSpinorField *> &kSpace, std::vector<Complex> &evals) = 0;
115 void deflate(std::vector<ColorSpinorField *> vec_defl, std::vector<ColorSpinorField *> vec,
116 std::vector<ColorSpinorField *> evecs, std::vector<Complex> evals);
125 void deflateSVD(std::vector<ColorSpinorField *> vec_defl, std::vector<ColorSpinorField *> vec,
126 std::vector<ColorSpinorField *> evecs, std::vector<Complex> evals);
150 static void loadVectors(std::vector<ColorSpinorField *> &eig_vecs, std::string file);
157 static void saveVectors(
const std::vector<ColorSpinorField *> &eig_vecs, std::string file);
204 void operator()(std::vector<ColorSpinorField *> &kSpace, std::vector<Complex> &evals);
211 void lanczosStep(std::vector<ColorSpinorField *> v,
int j);
217 void reorder(std::vector<ColorSpinorField *> &kSpace);
224 void eigensolveFromArrowMat(
int nLocked,
int arror_pos);
230 void computeKeptRitz(std::vector<ColorSpinorField *> &kSpace);
void deflate(std::vector< ColorSpinorField *> vec_defl, std::vector< ColorSpinorField *> vec, std::vector< ColorSpinorField *> evecs, std::vector< Complex > evals)
Deflate vector with Eigenvectors.
void chebyOp(const DiracMatrix &mat, ColorSpinorField &out, const ColorSpinorField &in)
Promoted the specified matVec operation: M, Mdag, MMdag, MdagM to a Chebyshev polynomial.
static void loadVectors(std::vector< ColorSpinorField *> &eig_vecs, std::string file)
Load vectors from file.
std::vector< ColorSpinorField * > d_vecs_tmp
static void saveVectors(const std::vector< ColorSpinorField *> &eig_vecs, std::string file)
Save vectors to file.
void deflateSVD(std::vector< ColorSpinorField *> vec_defl, std::vector< ColorSpinorField *> vec, std::vector< ColorSpinorField *> evecs, std::vector< Complex > evals)
Deflate vector with both left and Right singular vectors.
static EigenSolver * create(QudaEigParam *eig_param, const DiracMatrix &mat, TimeProfile &profile)
Creates the eigensolver using the parameters given and the matrix.
void arpack_solve(std::vector< ColorSpinorField *> &h_evecs, std::vector< Complex > &h_evals, const DiracMatrix &mat, QudaEigParam *eig_param, TimeProfile &profile)
The QUDA interface function. One passes two allocated arrays to hold the the eigenmode data...
void loadFromFile(const DiracMatrix &mat, std::vector< ColorSpinorField *> &eig_vecs, std::vector< Complex > &evals)
Load and check eigenpairs from file.
void matVec(const DiracMatrix &mat, ColorSpinorField &out, const ColorSpinorField &in)
Applies the specified matVec operation: M, Mdag, MMdag, MdagM.
std::vector< double > ritz_mat
void computeSVD(const DiracMatrix &mat, std::vector< ColorSpinorField *> &evecs, std::vector< Complex > &evals)
Computes Left/Right SVD from pre computed Right/Left.
std::complex< double > Complex
virtual void operator()(std::vector< ColorSpinorField *> &kSpace, std::vector< Complex > &evals)=0
Computes the eigen decomposition for the operator passed to create.
Complex blockOrthogonalize(std::vector< ColorSpinorField *> v, std::vector< ColorSpinorField *> r, int j)
Orthogonalise input vector r against vector space v using block-BLAS.
cpuColorSpinorField * out
Main header file for the QUDA library.
std::vector< ColorSpinorField * > r
void computeEvals(const DiracMatrix &mat, std::vector< ColorSpinorField *> &evecs, std::vector< Complex > &evals, int k)
Compute eigenvalues and their residiua.
void mat(void *out, void **link, void *in, int dagger_bit, int mu, QudaPrecision sPrecision, QudaPrecision gPrecision)
EigenSolver(QudaEigParam *eig_param, TimeProfile &profile)
Constructor for base Eigensolver class.
Thick Restarted Lanczos Method.