ergo
mat::PuriInfo< Treal, Tvector, TdebugPolicy > Class Template Reference

Contains information about a purification process. More...

#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. More...
 
void improveCorrectOccupation ()
 Improves the correct occupation indicator Call AFTER convergence and ONLY if it is known that the occupation is correct at convergence. More...
 
void improveInfo ()
 Improve homo / lumo values in each step. More...
 
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. More...
 
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. More...
 
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]) More...
 
Interval< Treal > getLumoF () const
 Returns the best interval containing the lumo eigenvalue (not transformed to [0, 1]) More...
 
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. More...
 
bool lumoIsAccuratelyKnown () const
 LUMO estimation is considered to be accurate if the error is smaller than tolSubspaceError / 100 in some purification step. More...
 
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. More...
 

Protected Attributes

int n
 System size. More...
 
int nocc
 Number of occupied orbitals. More...
 
PuriStepInfo< Treal, Tvector,
TdebugPolicy > * 
step
 
int maxSteps
 Capacity of step array. More...
 
int nSteps
 Number of taken steps. More...
 
bool correct_occupation_was_forced_flag
 Correct occupation was assumed, not guaranteed. More...
 
Interval< Treal > const eigFInterval
 Interval containing all eigenvalues before transformation to the [0, 1] interval. More...
 
Interval< Treal > homoF
 Interval containing the HOMO eigenvalue before transformation to [0, 1]. More...
 
Interval< Treal > lumoF
 Interval containing the LUMO eigenvalue before transformation to [0, 1]. More...
 
Treal const tolSubspaceError
 Tolerated error in angle between correct and computed subspace. More...
 
Treal const tolEigenvalError
 Tolerated error in eigenvalues at convergence. More...
 
normType const normForTruncation
 Norm used for truncation of small matrix elements. More...
 

Detailed Description

template<typename Treal, typename Tvector, typename TdebugPolicy>
class mat::PuriInfo< Treal, Tvector, TdebugPolicy >

Contains information about a purification process.

Constructor & Destructor Documentation

template<typename Treal, typename Tvector, typename TdebugPolicy>
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
template<typename Treal, typename Tvector, typename TdebugPolicy>
virtual mat::PuriInfo< Treal, Tvector, TdebugPolicy >::~PuriInfo ( )
inlinevirtual

Member Function Documentation

template<typename Treal, typename Tvector, typename TdebugPolicy>
bool mat::PuriInfo< Treal, Tvector, TdebugPolicy >::converged ( )
inline
template<typename Treal, typename Tvector, typename TdebugPolicy>
bool mat::PuriInfo< Treal, Tvector, TdebugPolicy >::correct_occupation_was_forced ( ) const
inline
template<typename Treal, typename Tvector , typename TdebugPolicy >
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.

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

template<typename Treal , typename Tvector , typename TdebugPolicy >
void mat::PuriInfo< Treal, Tvector, TdebugPolicy >::forceCorrectOccupation ( )

Set the correctOccupation flag in the current step to 1.

template<typename Treal , typename Tvector , typename TdebugPolicy >
double mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getAccumulatedTimeSquare ( ) const
template<typename Treal , typename Tvector , typename TdebugPolicy >
double mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getAccumulatedTimeThresh ( ) const
template<typename Treal , typename Tvector , typename TdebugPolicy >
double mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getAccumulatedTimeTotal ( ) const
template<typename Treal , typename Tvector , typename TdebugPolicy >
double mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getAccumulatedTimeXmX2Norm ( ) const
template<typename Treal, typename Tvector, typename TdebugPolicy>
Interval<Treal> mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getEigFInterval ( ) const
inline
template<typename Treal , typename Tvector, typename TdebugPolicy >
void mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getHOMOandLUMOeigVecs ( Tvector &  eigVecLUMO,
Tvector &  eigVecHOMO 
) const
template<typename Treal, typename Tvector, typename TdebugPolicy>
Interval<Treal> mat::PuriInfo< Treal, Tvector, TdebugPolicy >::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< Treal, Tmatrix, TdebugPolicy >::Purification().

template<typename Treal, typename Tvector, typename TdebugPolicy>
Interval<Treal> mat::PuriInfo< Treal, Tvector, TdebugPolicy >::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< Treal, Tmatrix, TdebugPolicy >::Purification().

template<typename Treal, typename Tvector, typename TdebugPolicy>
int mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getMaxSteps ( ) const
inline
template<typename Treal, typename Tvector, typename TdebugPolicy>
PuriStepInfo<Treal, Tvector, TdebugPolicy>& mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getNext ( )
inline
template<typename Treal, typename Tvector, typename TdebugPolicy>
normType mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getNormForTruncation ( ) const
inline
template<typename Treal, typename Tvector, typename TdebugPolicy>
int mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getNSteps ( ) const
inline
template<typename Treal , typename Tvector , typename TdebugPolicy >
Treal mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getOptimalThresh ( ) const
template<typename Treal, typename Tvector , typename TdebugPolicy >
Treal mat::PuriInfo< Treal, Tvector, TdebugPolicy >::getThreshIncreasingGap ( Interval< Treal > const &  middleGap) const
template<typename Treal, typename Tvector, typename TdebugPolicy>
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.

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

template<typename Treal , typename Tvector , typename TdebugPolicy >
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.

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

template<typename Treal , typename Tvector , typename TdebugPolicy >
void mat::PuriInfo< Treal, Tvector, TdebugPolicy >::improveHomoLumoF ( )
template<typename Treal , typename Tvector , typename TdebugPolicy >
void mat::PuriInfo< Treal, Tvector, TdebugPolicy >::improveInfo ( )

Improve homo / lumo values in each step.

Call after call to improveCorrectOccupation()

template<typename Treal, typename Tvector, typename TdebugPolicy>
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.

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

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

Returns the subspace error introduced so far.

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

template<typename Treal , typename Tvector , typename TdebugPolicy >
Treal mat::PuriInfo< Treal, Tvector, TdebugPolicy >::subspaceError ( int  end) const
protected

Returns the subspace error introduced until step end.

Member Data Documentation

template<typename Treal, typename Tvector, typename TdebugPolicy>
bool mat::PuriInfo< Treal, Tvector, TdebugPolicy >::correct_occupation_was_forced_flag
protected

Correct occupation was assumed, not guaranteed.

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

template<typename Treal, typename Tvector, typename TdebugPolicy>
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.

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

template<typename Treal, typename Tvector, typename TdebugPolicy>
Interval<Treal> mat::PuriInfo< Treal, Tvector, TdebugPolicy >::homoF
protected

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

Hopefully improved after purification.

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

template<typename Treal, typename Tvector, typename TdebugPolicy>
Interval<Treal> mat::PuriInfo< Treal, Tvector, TdebugPolicy >::lumoF
protected

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

Hopefully improved after purification.

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

template<typename Treal, typename Tvector, typename TdebugPolicy>
int mat::PuriInfo< Treal, Tvector, TdebugPolicy >::maxSteps
protected
template<typename Treal, typename Tvector, typename TdebugPolicy>
int mat::PuriInfo< Treal, Tvector, TdebugPolicy >::n
protected
template<typename Treal, typename Tvector, typename TdebugPolicy>
int mat::PuriInfo< Treal, Tvector, TdebugPolicy >::nocc
protected

Number of occupied orbitals.

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

template<typename Treal, typename Tvector, typename TdebugPolicy>
normType const mat::PuriInfo< Treal, Tvector, TdebugPolicy >::normForTruncation
protected

Norm used for truncation of small matrix elements.

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

template<typename Treal, typename Tvector, typename TdebugPolicy>
Treal const mat::PuriInfo< Treal, Tvector, TdebugPolicy >::tolEigenvalError
protected

Tolerated error in eigenvalues at convergence.

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

template<typename Treal, typename Tvector, typename TdebugPolicy>
Treal const mat::PuriInfo< Treal, Tvector, TdebugPolicy >::tolSubspaceError
protected

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