58 template<
typename Treal,
typename Tmatrix,
typename Tvector>
61 Lanczos(Tmatrix
const & AA, Tvector
const & startVec,
62 int maxIt = 100,
int cap = 100)
66 Treal
const ONE = 1.0;
71 v[0] *= (ONE /
v[0].eucl());
80 Treal
const ONE = 1.0;
82 v[0] *= (ONE / startVec.eucl());
117 void getEigVector(Tvector& eigVec, Treal
const *
const eVecTri)
const;
125 template<
typename Treal,
typename Tmatrix,
typename Tvector>
127 if (j + 1 >= capacity)
128 increaseCapacity(capacity * 2);
129 Treal
const ONE = 1.0;
130 A.matVecProd(r, v[j]);
132 r += (-alpha) * v[j];
134 r += (-beta) * v[j-1];
135 v[j-1].writeToFile();
139 v[j+1] *= ONE / beta;
140 Tri.increase(alpha, beta);
148 template<
typename Treal,
typename Tmatrix,
typename Tvector>
150 getEigVector(Tvector& eigVec, Treal
const *
const eVecTri)
const {
159 eigVec *= eVecTri[0];
160 for (
int ind = 1; ind <= j - 2; ++ind) {
161 v[ind].readFromFile();
162 eigVec += eVecTri[ind] * v[ind];
163 v[ind].writeToFile();
165 eigVec += eVecTri[j-1] * v[j-1];
168 template<
typename Treal,
typename Tmatrix,
typename Tvector>
171 assert(newCapacity > capacity);
173 capacity = newCapacity;
174 Tvector* new_v =
new Tvector[capacity];
178 for (
int ind = 0; ind <= j - 2; ind++){
179 v[ind].readFromFile();
181 new_v[ind].writeToFile();
183 for (
int ind = j - 1; ind <= j; ind++){
Class for tridiagonal symmetric matrices.
Class template for building Krylov subspaces with Lanczos.
Definition Lanczos.h:59
int capacity
Definition Lanczos.h:112
void step()
Definition Lanczos.h:126
virtual void run()
Definition Lanczos.h:87
MatrixTridiagSymmetric< Treal > Tri
Residual vector.
Definition Lanczos.h:111
Treal alpha
Definition Lanczos.h:121
void increaseCapacity(int const newCapacity)
Definition Lanczos.h:170
virtual ~Lanczos()
Definition Lanczos.h:100
Treal beta
Definition Lanczos.h:122
void restart(Tvector const &startVec)
Definition Lanczos.h:74
void copyTridiag(MatrixTridiagSymmetric< Treal > &Tricopy)
Definition Lanczos.h:97
virtual bool converged() const =0
Tvector r
Vectors spanning Krylov subspace.
Definition Lanczos.h:110
int maxIter
Current step.
Definition Lanczos.h:114
void getEigVector(Tvector &eigVec, Treal const *const eVecTri) const
Definition Lanczos.h:150
Tvector * v
Definition Lanczos.h:105
int j
Definition Lanczos.h:113
Lanczos(Tmatrix const &AA, Tvector const &startVec, int maxIt=100, int cap=100)
Definition Lanczos.h:61
Tmatrix const & A
Definition Lanczos.h:104
Tridiagonal symmetric matrix class template.
Definition MatrixTridiagSymmetric.h:47
Utilities used by other parts of the hierarchical matrix library.
Definition allocate.cc:39
Xtrans< TX > transpose(TX const &A)
Transposition.
Definition matrix_proxy.h:131
Treal template_blas_sqrt(Treal x)