56 template<
typename Treal,
typename Tmatrix,
typename Tvector>
59 Lanczos(Tmatrix
const & AA, Tvector
const & startVec,
60 int maxIt = 100,
int cap = 100)
64 Treal
const ONE = 1.0;
69 v[0] *= (ONE /
v[0].eucl());
78 Treal
const ONE = 1.0;
80 v[0] *= (ONE / startVec.eucl());
115 void getEigVector(Tvector& eigVec, Treal
const *
const eVecTri)
const;
116 virtual void update() = 0;
123 template<
typename Treal,
typename Tmatrix,
typename Tvector>
127 Treal
const ONE = 1.0;
128 A.matVecProd(
r,
v[
j]);
133 v[j-1].writeToFile();
137 v[j+1] *= ONE /
beta;
146 template<
typename Treal,
typename Tmatrix,
typename Tvector>
157 eigVec *= eVecTri[0];
158 for (
int ind = 1; ind <=
j - 2; ++ind) {
159 v[ind].readFromFile();
160 eigVec += eVecTri[ind] *
v[ind];
161 v[ind].writeToFile();
163 eigVec += eVecTri[
j-1] *
v[
j-1];
166 template<
typename Treal,
typename Tmatrix,
typename Tvector>
172 Tvector* new_v =
new Tvector[
capacity];
176 for (
int ind = 0; ind <=
j - 2; ind++){
177 v[ind].readFromFile();
179 new_v[ind].writeToFile();
181 for (
int ind =
j - 1; ind <=
j; ind++){
Tvector * v
Definition: Lanczos.h:103
virtual void run()
Definition: Lanczos.h:85
int j
Definition: Lanczos.h:111
void step()
Definition: Lanczos.h:124
Treal beta
Definition: Lanczos.h:120
virtual bool converged() const =0
void copyTridiag(MatrixTridiagSymmetric< Treal > &Tricopy)
Definition: Lanczos.h:95
Tridiagonal symmetric matrix class template.
Definition: MatrixTridiagSymmetric.h:45
Treal alpha
Definition: Lanczos.h:119
Class for tridiagonal symmetric matrices.
virtual ~Lanczos()
Definition: Lanczos.h:98
Definition: allocate.cc:30
MatrixTridiagSymmetric< Treal > Tri
Residual vector.
Definition: Lanczos.h:109
void getEigVector(Tvector &eigVec, Treal const *const eVecTri) const
Definition: Lanczos.h:148
int capacity
Definition: Lanczos.h:110
int maxIter
Current step.
Definition: Lanczos.h:112
Tmatrix const & A
Definition: Lanczos.h:102
void increaseCapacity(int const newCapacity)
Definition: Lanczos.h:168
Lanczos(Tmatrix const &AA, Tvector const &startVec, int maxIt=100, int cap=100)
Definition: Lanczos.h:59
void restart(Tvector const &startVec)
Definition: Lanczos.h:72
Tvector r
Vectors spanning Krylov subspace.
Definition: Lanczos.h:108
Class template for building Krylov subspaces with Lanczos.
Definition: Lanczos.h:57
Xtrans< TX > transpose(TX const &A)
Transposition.
Definition: matrix_proxy.h:129
Treal template_blas_sqrt(Treal x)