ergo
mat::PuriInfo Class Reference

Contains information about a purification process. More...

#include <PuriInfo.h>

List of all members.

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.

Detailed Description

Contains information about a purification process.


Constructor & Destructor Documentation

mat::PuriInfo::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::~PuriInfo ( ) [inline, virtual]

Member Function Documentation

bool mat::PuriInfo::converged ( ) [inline]
bool mat::PuriInfo::correct_occupation_was_forced ( ) const [inline]
void mat::PuriInfo::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.

References mat::Interval::puriStep(), mat::Interval::empty(), mat::Interval::upp(), mat::Interval::low(), mat::Interval::length(), and mat::Interval::decrease().

void mat::PuriInfo::forceCorrectOccupation ( )

Set the correctOccupation flag in the current step to 1.

double mat::PuriInfo::getAccumulatedTimeSquare ( ) const
double mat::PuriInfo::getAccumulatedTimeThresh ( ) const
double mat::PuriInfo::getAccumulatedTimeTotal ( ) const
double mat::PuriInfo::getAccumulatedTimeXmX2Norm ( ) const
Interval<Treal> mat::PuriInfo::getEigFInterval ( ) const [inline]
void mat::PuriInfo::getHOMOandLUMOeigVecs ( Tvector &  eigVecLUMO,
Tvector &  eigVecHOMO 
) const
Interval<Treal> mat::PuriInfo::getHomoF ( ) const [inline]

Returns the best interval containing the homo eigenvalue (not transformed to [0, 1])

Referenced by get_dens_from_fock_sparse(), and mat::Purification::Purification().

Interval<Treal> mat::PuriInfo::getLumoF ( ) const [inline]

Returns the best interval containing the lumo eigenvalue (not transformed to [0, 1])

Referenced by get_dens_from_fock_sparse(), and mat::Purification::Purification().

int mat::PuriInfo::getMaxSteps ( ) const [inline]
PuriStepInfo<Treal, Tvector, TdebugPolicy>& mat::PuriInfo::getNext ( ) [inline]
normType mat::PuriInfo::getNormForTruncation ( ) const [inline]
int mat::PuriInfo::getNSteps ( ) const [inline]
Treal mat::PuriInfo::getOptimalThresh ( ) const
Treal mat::PuriInfo::getThreshIncreasingGap ( Interval< Treal > const &  middleGap) const
bool mat::PuriInfo::homoIsAccuratelyKnown ( ) const [inline]

HOMO estimation is considered to be accurate if the error is smaller than tolSubspaceError / 100 in some purification step.

Referenced by mat::PuriInfo< Treal, VectorType, TdebugPolicy >::homoIsAccuratelyKnown().

void mat::PuriInfo::improveCorrectOccupation ( )

Improves the correct occupation indicator Call AFTER convergence and ONLY if it is known that the occupation is correct at convergence.

References distance(), template_blas_sqrt(), mat::Interval::empty(), mat::Interval::puriStep(), mat::Interval::decrease(), mat::Interval::intersect(), and mat::Interval::cover().

void mat::PuriInfo::improveHomoLumoF ( )
void mat::PuriInfo::improveInfo ( )

Improve homo / lumo values in each step.

Call after call to improveCorrectOccupation()

bool mat::PuriInfo::lumoIsAccuratelyKnown ( ) const [inline]

LUMO estimation is considered to be accurate if the error is smaller than tolSubspaceError / 100 in some purification step.

Referenced by mat::PuriInfo< Treal, VectorType, TdebugPolicy >::lumoIsAccuratelyKnown().

void mat::PuriInfo::mInfo ( std::ostream &  file) const
void mat::PuriInfo::mMemUsage ( std::ostream &  file) const
void mat::PuriInfo::mTimings ( std::ostream &  file) const
PuriStepInfo<Treal, Tvector, TdebugPolicy>& mat::PuriInfo::operator() ( int const  ind) [inline]
bool mat::PuriInfo::ShouldComputeXmX2EuclNormAccurately ( Treal &  howAccurate) const
Treal mat::PuriInfo::subspaceError ( ) const [inline]

Returns the subspace error introduced so far.

Referenced by get_dens_from_fock_sparse(), and mat::PuriInfo< Treal, VectorType, TdebugPolicy >::subspaceError().

Treal mat::PuriInfo::subspaceError ( int  end) const [protected]

Returns the subspace error introduced until step end.


Member Data Documentation

Interval<Treal> const mat::PuriInfo::eigFInterval [protected]

Interval containing all eigenvalues before transformation to the [0, 1] interval.

Also, these bounds will be used for the initial transformation.

Referenced by mat::PuriInfo< Treal, VectorType, TdebugPolicy >::getEigFInterval().

Interval<Treal> mat::PuriInfo::homoF [protected]

Interval containing the HOMO eigenvalue before transformation to [0, 1].

Hopefully improved after purification.

Referenced by mat::PuriInfo< Treal, VectorType, TdebugPolicy >::getHomoF().

Interval<Treal> mat::PuriInfo::lumoF [protected]

Interval containing the LUMO eigenvalue before transformation to [0, 1].

Hopefully improved after purification.

Referenced by mat::PuriInfo< Treal, VectorType, TdebugPolicy >::getLumoF().

int mat::PuriInfo::nocc [protected]

Number of occupied orbitals.

Referenced by mat::PuriInfo< Treal, VectorType, TdebugPolicy >::PuriInfo().

Norm used for truncation of small matrix elements.

Referenced by mat::PuriInfo< Treal, VectorType, TdebugPolicy >::getNormForTruncation().

Treal const mat::PuriInfo::tolEigenvalError [protected]

Tolerated error in eigenvalues at convergence.

Referenced by mat::PuriInfo< Treal, VectorType, TdebugPolicy >::PuriInfo().


The documentation for this class was generated from the following file: