#include <Perturbation.h>
Public Member Functions | |
Perturbation (std::vector< Tmatrix * > const &F, std::vector< Tmatrix * > &D, mat::Interval< Treal > const &gap, mat::Interval< Treal > const &allEigs, Treal const deltaMax, Treal const errorTol, mat::normType const norm, Tvector &vect) | |
void | perturb () |
void | checkIdempotencies (std::vector< Treal > &idemErrors) |
template<typename TmatNoSymm> | |
void | checkCommutators (std::vector< Treal > &commErrors, TmatNoSymm const &dummyMat) |
void | checkMaxSubspaceError (Treal &subsError) |
Protected Member Functions | |
void | dryRun () |
Dry run to obtain some needed numbers. | |
void | run () |
Protected Attributes | |
std::vector< Tmatrix * > const & | F |
std::vector< Tmatrix * > & | X |
mat::Interval< Treal > | gap |
mat::Interval< Treal > const & | allEigs |
Treal | deltaMax |
Treal | errorTol |
mat::normType const | norm |
Tvector & | vect |
int | nIter |
std::vector< Treal > | threshVal |
std::vector< Treal > | sigma |
per::Perturbation< Treal, Tmatrix, Tvector >::Perturbation | ( | std::vector< Tmatrix * > const & | F, | |
std::vector< Tmatrix * > & | D, | |||
mat::Interval< Treal > const & | gap, | |||
mat::Interval< Treal > const & | allEigs, | |||
Treal const | deltaMax, | |||
Treal const | errorTol, | |||
mat::normType const | norm, | |||
Tvector & | vect | |||
) |
F | Vector with matrices (input). |
D | Vector with matrices (output). |
gap | Band gap. |
allEigs | Interval containing all eigenvalues of X0 + delta*X1 + delta^2*X2 + ... for all delta in [0, deltaMax] for initial X. |
deltaMax | Largest allowed delta. |
errorTol | Error tolerance. |
norm | Norm for truncation etc. |
vect | Vector. |
void per::Perturbation< Treal, Tmatrix, Tvector >::checkCommutators | ( | std::vector< Treal > & | commErrors, | |
TmatNoSymm const & | dummyMat | |||
) |
void per::Perturbation< Treal, Tmatrix, Tvector >::checkIdempotencies | ( | std::vector< Treal > & | idemErrors | ) |
void per::Perturbation< Treal, Tmatrix, Tvector >::checkMaxSubspaceError | ( | Treal & | subsError | ) |
void per::Perturbation< Treal, Tmatrix, Tvector >::dryRun | ( | ) | [protected] |
Dry run to obtain some needed numbers.
After call to this function we know:
If requested accuracy is too high or gap too small, an exception is thrown.
void per::Perturbation< Treal, Tmatrix, Tvector >::perturb | ( | ) | [inline] |
void per::Perturbation< Treal, Tmatrix, Tvector >::run | ( | ) | [protected] |
mat::Interval<Treal> const& per::Perturbation< Treal, Tmatrix, Tvector >::allEigs [protected] |
Treal per::Perturbation< Treal, Tmatrix, Tvector >::deltaMax [protected] |
Treal per::Perturbation< Treal, Tmatrix, Tvector >::errorTol [protected] |
std::vector<Tmatrix *> const& per::Perturbation< Treal, Tmatrix, Tvector >::F [protected] |
mat::Interval<Treal> per::Perturbation< Treal, Tmatrix, Tvector >::gap [protected] |
int per::Perturbation< Treal, Tmatrix, Tvector >::nIter [protected] |
mat::normType const per::Perturbation< Treal, Tmatrix, Tvector >::norm [protected] |
std::vector<Treal> per::Perturbation< Treal, Tmatrix, Tvector >::sigma [protected] |
std::vector<Treal> per::Perturbation< Treal, Tmatrix, Tvector >::threshVal [protected] |
Tvector& per::Perturbation< Treal, Tmatrix, Tvector >::vect [protected] |
std::vector<Tmatrix *>& per::Perturbation< Treal, Tmatrix, Tvector >::X [protected] |