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 >:

TdebugPolicy 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

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 (  )  [inline, virtual]


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.

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]).

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]).

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.

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.

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.

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 ( int  end  )  const [protected]

Returns the subspace error introduced until step end.

template<typename Treal, typename Tvector, typename TdebugPolicy>
Treal mat::PuriInfo< Treal, Tvector, TdebugPolicy >::subspaceError (  )  const [inline]

Returns the subspace error introduced so far.


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.

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.

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.

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.

template<typename Treal, typename Tvector, typename TdebugPolicy>
int mat::PuriInfo< Treal, Tvector, TdebugPolicy >::maxSteps [protected]

Capacity of step array.

template<typename Treal, typename Tvector, typename TdebugPolicy>
int mat::PuriInfo< Treal, Tvector, TdebugPolicy >::n [protected]

System size.

template<typename Treal, typename Tvector, typename TdebugPolicy>
int mat::PuriInfo< Treal, Tvector, TdebugPolicy >::nocc [protected]

Number of occupied orbitals.

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

Norm used for truncation of small matrix elements.

template<typename Treal, typename Tvector, typename TdebugPolicy>
int mat::PuriInfo< Treal, Tvector, TdebugPolicy >::nSteps [protected]

Number of taken steps.

Number of used elements in step array.

template<typename Treal, typename Tvector, typename TdebugPolicy>
PuriStepInfo<Treal, Tvector, TdebugPolicy>* mat::PuriInfo< Treal, Tvector, TdebugPolicy >::step [protected]

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

Tolerated error in eigenvalues at convergence.

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

Tolerated error in angle between correct and computed subspace.


The documentation for this class was generated from the following file:
Generated on Wed Nov 21 09:32:03 2012 for ergo by  doxygen 1.4.7