#include <PuriInfo.h>
Inheritance diagram for mat::PuriInfo< Treal, Tvector, TdebugPolicy >:
Public Member Functions | |
PuriInfo (int nn, int noc, Interval< Treal > eigFInt, Interval< Treal > hoF, Interval< Treal > luF, Treal toleratedEigenvalError, Treal toleratedSubspaceError, normType normForTruncation_, int maxS=100) | |
virtual | ~PuriInfo () |
void | forceCorrectOccupation () |
Set the correctOccupation flag in the current step to 1. | |
void | improveCorrectOccupation () |
Improves the correct occupation indicator Call AFTER convergence and ONLY if it is known that the occupation is correct at convergence. | |
void | improveInfo () |
Improve homo / lumo values in each step. | |
Interval< Treal > | getEigFInterval () const |
PuriStepInfo< Treal, Tvector, TdebugPolicy > & | getNext () |
PuriStepInfo< Treal, Tvector, TdebugPolicy > & | operator() (int const ind) |
Treal | subspaceError () const |
Returns the subspace error introduced so far. | |
void | estimateStepsLeft (int &stepsLeft, Treal &thresh) const |
Estimates the number of steps (upper bound) needed for convergence based on homo/lumo information and desired accuracy in subspace and eigenvalues. | |
Treal | getOptimalThresh () const |
Treal | getThreshIncreasingGap (Interval< Treal > const &middleGap) const |
bool | ShouldComputeXmX2EuclNormAccurately (Treal &howAccurate) const |
Interval< Treal > | getHomoF () const |
Returns the best interval containing the homo eigenvalue (not transformed to [0, 1]). | |
Interval< Treal > | getLumoF () const |
Returns the best interval containing the lumo eigenvalue (not transformed to [0, 1]). | |
int | getMaxSteps () const |
int | getNSteps () const |
bool | correct_occupation_was_forced () const |
void | improveHomoLumoF () |
bool | converged () |
double | getAccumulatedTimeSquare () const |
double | getAccumulatedTimeThresh () const |
double | getAccumulatedTimeXmX2Norm () const |
double | getAccumulatedTimeTotal () const |
void | mTimings (std::ostream &file) const |
void | mInfo (std::ostream &file) const |
void | mMemUsage (std::ostream &file) const |
bool | homoIsAccuratelyKnown () const |
HOMO estimation is considered to be accurate if the error is smaller than tolSubspaceError / 100 in some purification step. | |
bool | lumoIsAccuratelyKnown () const |
LUMO estimation is considered to be accurate if the error is smaller than tolSubspaceError / 100 in some purification step. | |
normType | getNormForTruncation () const |
void | getHOMOandLUMOeigVecs (Tvector &eigVecLUMO, Tvector &eigVecHOMO) const |
Protected Member Functions | |
Treal | subspaceError (int end) const |
Returns the subspace error introduced until step end. | |
Protected Attributes | |
int | n |
System size. | |
int | nocc |
Number of occupied orbitals. | |
PuriStepInfo< Treal, Tvector, TdebugPolicy > * | step |
int | maxSteps |
Capacity of step array. | |
int | nSteps |
Number of taken steps. | |
bool | correct_occupation_was_forced_flag |
Correct occupation was assumed, not guaranteed. | |
Interval< Treal > const | eigFInterval |
Interval containing all eigenvalues before transformation to the [0, 1] interval. | |
Interval< Treal > | homoF |
Interval containing the HOMO eigenvalue before transformation to [0, 1]. | |
Interval< Treal > | lumoF |
Interval containing the LUMO eigenvalue before transformation to [0, 1]. | |
Treal const | tolSubspaceError |
Tolerated error in angle between correct and computed subspace. | |
Treal const | tolEigenvalError |
Tolerated error in eigenvalues at convergence. | |
normType const | normForTruncation |
Norm used for truncation of small matrix elements. |
mat::PuriInfo< Treal, Tvector, TdebugPolicy >::PuriInfo | ( | int | nn, | |
int | noc, | |||
Interval< Treal > | eigFInt, | |||
Interval< Treal > | hoF, | |||
Interval< Treal > | luF, | |||
Treal | toleratedEigenvalError, | |||
Treal | toleratedSubspaceError, | |||
normType | normForTruncation_, | |||
int | maxS = 100 | |||
) | [inline] |
virtual mat::PuriInfo< Treal, Tvector, TdebugPolicy >::~PuriInfo | ( | ) | [inline, virtual] |
bool mat::PuriInfo< Treal, Tvector, TdebugPolicy >::converged | ( | ) | [inline] |
bool mat::PuriInfo< Treal, Tvector, TdebugPolicy >::correct_occupation_was_forced | ( | ) | const [inline] |
void mat::PuriInfo< Treal, Tvector, TdebugPolicy >::estimateStepsLeft | ( | int & | stepsLeft, | |
Treal & | thresh | |||
) | const |
Estimates the number of steps (upper bound) needed for convergence based on homo/lumo information and desired accuracy in subspace and eigenvalues.
Also computes optimal thresh-value for the current step.
void mat::PuriInfo< Treal, Tvector, TdebugPolicy >::forceCorrectOccupation | ( | ) |
Set the correctOccupation flag in the current step to 1.
double mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getAccumulatedTimeSquare | ( | ) | const |
double mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getAccumulatedTimeThresh | ( | ) | const |
double mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getAccumulatedTimeTotal | ( | ) | const |
double mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getAccumulatedTimeXmX2Norm | ( | ) | const |
Interval<Treal> mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getEigFInterval | ( | ) | const [inline] |
void mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getHOMOandLUMOeigVecs | ( | Tvector & | eigVecLUMO, | |
Tvector & | eigVecHOMO | |||
) | const |
Interval<Treal> mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getHomoF | ( | ) | const [inline] |
Returns the best interval containing the homo eigenvalue (not transformed to [0, 1]).
Interval<Treal> mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getLumoF | ( | ) | const [inline] |
Returns the best interval containing the lumo eigenvalue (not transformed to [0, 1]).
int mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getMaxSteps | ( | ) | const [inline] |
PuriStepInfo<Treal, Tvector, TdebugPolicy>& mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getNext | ( | ) | [inline] |
normType mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getNormForTruncation | ( | ) | const [inline] |
int mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getNSteps | ( | ) | const [inline] |
Treal mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getOptimalThresh | ( | ) | const |
Treal mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getThreshIncreasingGap | ( | Interval< Treal > const & | middleGap | ) | const |
bool mat::PuriInfo< Treal, Tvector, TdebugPolicy >::homoIsAccuratelyKnown | ( | ) | const [inline] |
HOMO estimation is considered to be accurate if the error is smaller than tolSubspaceError / 100 in some purification step.
void mat::PuriInfo< Treal, Tvector, TdebugPolicy >::improveCorrectOccupation | ( | ) |
Improves the correct occupation indicator Call AFTER convergence and ONLY if it is known that the occupation is correct at convergence.
void mat::PuriInfo< Treal, Tvector, TdebugPolicy >::improveHomoLumoF | ( | ) |
void mat::PuriInfo< Treal, Tvector, TdebugPolicy >::improveInfo | ( | ) |
Improve homo / lumo values in each step.
Call after call to improveCorrectOccupation()
bool mat::PuriInfo< Treal, Tvector, TdebugPolicy >::lumoIsAccuratelyKnown | ( | ) | const [inline] |
LUMO estimation is considered to be accurate if the error is smaller than tolSubspaceError / 100 in some purification step.
void mat::PuriInfo< Treal, Tvector, TdebugPolicy >::mInfo | ( | std::ostream & | file | ) | const |
void mat::PuriInfo< Treal, Tvector, TdebugPolicy >::mMemUsage | ( | std::ostream & | file | ) | const |
void mat::PuriInfo< Treal, Tvector, TdebugPolicy >::mTimings | ( | std::ostream & | file | ) | const |
PuriStepInfo<Treal, Tvector, TdebugPolicy>& mat::PuriInfo< Treal, Tvector, TdebugPolicy >::operator() | ( | int const | ind | ) | [inline] |
bool mat::PuriInfo< Treal, Tvector, TdebugPolicy >::ShouldComputeXmX2EuclNormAccurately | ( | Treal & | howAccurate | ) | const |
Treal mat::PuriInfo< Treal, Tvector, TdebugPolicy >::subspaceError | ( | int | end | ) | const [protected] |
Returns the subspace error introduced until step end.
Treal mat::PuriInfo< Treal, Tvector, TdebugPolicy >::subspaceError | ( | ) | const [inline] |
Returns the subspace error introduced so far.
bool mat::PuriInfo< Treal, Tvector, TdebugPolicy >::correct_occupation_was_forced_flag [protected] |
Correct occupation was assumed, not guaranteed.
Interval<Treal> const mat::PuriInfo< Treal, Tvector, TdebugPolicy >::eigFInterval [protected] |
Interval containing all eigenvalues before transformation to the [0, 1] interval.
Also, these bounds will be used for the initial transformation.
Interval<Treal> mat::PuriInfo< Treal, Tvector, TdebugPolicy >::homoF [protected] |
Interval containing the HOMO eigenvalue before transformation to [0, 1].
Hopefully improved after purification.
Interval<Treal> mat::PuriInfo< Treal, Tvector, TdebugPolicy >::lumoF [protected] |
Interval containing the LUMO eigenvalue before transformation to [0, 1].
Hopefully improved after purification.
int mat::PuriInfo< Treal, Tvector, TdebugPolicy >::maxSteps [protected] |
Capacity of step array.
int mat::PuriInfo< Treal, Tvector, TdebugPolicy >::n [protected] |
System size.
int mat::PuriInfo< Treal, Tvector, TdebugPolicy >::nocc [protected] |
Number of occupied orbitals.
normType const mat::PuriInfo< Treal, Tvector, TdebugPolicy >::normForTruncation [protected] |
Norm used for truncation of small matrix elements.
int mat::PuriInfo< Treal, Tvector, TdebugPolicy >::nSteps [protected] |
Number of taken steps.
Number of used elements in step array.
PuriStepInfo<Treal, Tvector, TdebugPolicy>* mat::PuriInfo< Treal, Tvector, TdebugPolicy >::step [protected] |
Treal const mat::PuriInfo< Treal, Tvector, TdebugPolicy >::tolEigenvalError [protected] |
Tolerated error in eigenvalues at convergence.
Treal const mat::PuriInfo< Treal, Tvector, TdebugPolicy >::tolSubspaceError [protected] |
Tolerated error in angle between correct and computed subspace.