mat::TC2< Treal, Tmatrix > Class Template Reference

Trace correcting purification. More...

#include <TC2.h>

List of all members.

Public Member Functions

 TC2 (Tmatrix &F, Tmatrix &DM, const int size, const int noc, const Treal trunc=0, const int maxmm=100)
 Constructor.
Treal fermi_level (Treal tol=1e-15) const
 Returns the Fermi level.
Treal homo (Treal tol=1e-15) const
 Returns upper bound of the HOMO eigenvalue.
Treal lumo (Treal tol=1e-15) const
 Returns lower bound of the LUMO eigenvalue.
int n_multiplies () const
 Returns the number of used matrix matrix multiplications.
void print_data (int const start, int const stop) const
virtual ~TC2 ()
 Destructor.

Protected Member Functions

void purify ()
 Runs purification.

Protected Attributes

Tmatrix & X
 Fock / Kohn-Sham matrix at initialization.
Tmatrix & D
 Density matrix after purification.
const int n
 System size.
const int nocc
 Number of occupied orbitals.
const Treal frob_trunc
 Threshold for the truncation.
const int maxmul
 Number of tolerated matrix multiplications.
Treal lmin
 Lower bound for eigenvalue spectrum.
Treal lmax
 Upper bound for eigenvalue spectrum.
int nmul
 Number of used matrix multiplications.
int nmul_firstpart
 Number of used matrix multiplications in the first part of the purification.
Treal * idemerror
 Upper bound of euclidean norm ||D-D^2||_2 before each step.
Treal * tracediff
 The difference between the trace of the matrix and the number of occupied orbitals before each step.
int * polys
 Choices of polynomials 0 for x^2 and 1 for 2x-x^2 Length: nmul.

Classes

class  Fun
 Help class for bisection root finding calls. More...


Detailed Description

template<typename Treal, typename Tmatrix>
class mat::TC2< Treal, Tmatrix >

Trace correcting purification.

This template instantiates the trace correcting purification algorithm developed by Niklasson [Phys. Rev. B 66, 155115 (2002)] with modifications by Rubensson and Rudberg [unpublished]. The template can be used with any matrix class Tmatrix that has the following member functions:

The matrix class should also support the following syntax:

where A and B are of type Tmatrix and alpha and beta are of type Treal.


Constructor & Destructor Documentation

template<typename Treal, typename Tmatrix>
mat::TC2< Treal, Tmatrix >::TC2 ( Tmatrix &  F,
Tmatrix &  DM,
const int  size,
const int  noc,
const Treal  trunc = 0,
const int  maxmm = 100 
)

Constructor.

< Run purification

Parameters:
F  Fock/Kohn-Sham matrix (input/workspace)
DM  Density matrix (output)
size  System size (Number of basis functions)
noc  Number of occupied orbitals.
trunc  Threshold for truncation in Frobenius norm.
maxmm  Maximum aloud number of mm-multiplications.

template<typename Treal, typename Tmatrix>
virtual mat::TC2< Treal, Tmatrix >::~TC2 (  )  [inline, virtual]

Destructor.


Member Function Documentation

template<typename Treal, typename Tmatrix>
Treal mat::TC2< Treal, Tmatrix >::fermi_level ( Treal  tol = 1e-15  )  const

Returns the Fermi level.

Run after call to purify().

Parameters:
tol  Fault-tolerance for result.

template<typename Treal, typename Tmatrix>
Treal mat::TC2< Treal, Tmatrix >::homo ( Treal  tol = 1e-15  )  const

Returns upper bound of the HOMO eigenvalue.

Run after call to purify().

Parameters:
tol  Fault-tolerance for result.

template<typename Treal, typename Tmatrix>
Treal mat::TC2< Treal, Tmatrix >::lumo ( Treal  tol = 1e-15  )  const

Returns lower bound of the LUMO eigenvalue.

Run after call to purify().

Parameters:
tol  Fault-tolerance for result.

template<typename Treal, typename Tmatrix>
int mat::TC2< Treal, Tmatrix >::n_multiplies (  )  const [inline]

Returns the number of used matrix matrix multiplications.

template<typename Treal, typename Tmatrix>
void mat::TC2< Treal, Tmatrix >::print_data ( int const   start,
int const   stop 
) const

template<typename Treal, typename Tmatrix>
void mat::TC2< Treal, Tmatrix >::purify (  )  [protected]

Runs purification.

Run by constructor.


Member Data Documentation

template<typename Treal, typename Tmatrix>
Tmatrix& mat::TC2< Treal, Tmatrix >::D [protected]

Density matrix after purification.

template<typename Treal, typename Tmatrix>
const Treal mat::TC2< Treal, Tmatrix >::frob_trunc [protected]

Threshold for the truncation.

template<typename Treal, typename Tmatrix>
Treal* mat::TC2< Treal, Tmatrix >::idemerror [protected]

Upper bound of euclidean norm ||D-D^2||_2 before each step.

This means: idemerror[i] = norm(D[i]-D[i]^2) where D[0] is the initial matrix and D[i] is the matrix after i steps in the purification. This value is calculated after the step since D[i]^2 or 2D[i] - D[i]^2 is needed. Length: nmul

template<typename Treal, typename Tmatrix>
Treal mat::TC2< Treal, Tmatrix >::lmax [protected]

Upper bound for eigenvalue spectrum.

template<typename Treal, typename Tmatrix>
Treal mat::TC2< Treal, Tmatrix >::lmin [protected]

Lower bound for eigenvalue spectrum.

template<typename Treal, typename Tmatrix>
const int mat::TC2< Treal, Tmatrix >::maxmul [protected]

Number of tolerated matrix multiplications.

template<typename Treal, typename Tmatrix>
const int mat::TC2< Treal, Tmatrix >::n [protected]

System size.

template<typename Treal, typename Tmatrix>
int mat::TC2< Treal, Tmatrix >::nmul [protected]

Number of used matrix multiplications.

template<typename Treal, typename Tmatrix>
int mat::TC2< Treal, Tmatrix >::nmul_firstpart [protected]

Number of used matrix multiplications in the first part of the purification.

template<typename Treal, typename Tmatrix>
const int mat::TC2< Treal, Tmatrix >::nocc [protected]

Number of occupied orbitals.

template<typename Treal, typename Tmatrix>
int* mat::TC2< Treal, Tmatrix >::polys [protected]

Choices of polynomials 0 for x^2 and 1 for 2x-x^2 Length: nmul.

template<typename Treal, typename Tmatrix>
Treal* mat::TC2< Treal, Tmatrix >::tracediff [protected]

The difference between the trace of the matrix and the number of occupied orbitals before each step.

Length: nmul + 1

template<typename Treal, typename Tmatrix>
Tmatrix& mat::TC2< Treal, Tmatrix >::X [protected]

Fock / Kohn-Sham matrix at initialization.

Then used as workspace by purify(). Empty after call to purify().


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