Help class for bisection root finding calls.
More...
#include <TC2.h>
|
| Fun (int const *const p, int const pl, Treal const s) |
|
Treal | eval (Treal const x) const |
|
| TC2 (Tmatrix &F, Tmatrix &DM, const int size, const int noc, const Treal trunc=0, const int maxmm=100) |
| Constructor Initializes everything.
|
|
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.
|
|
|
void | purify () |
| Runs purification.
|
|
|
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.
|
|
template<typename Treal, typename Tmatrix>
class mat::TC2< Treal, Tmatrix >::Fun
Help class for bisection root finding calls.
- See also
- fermi_level
-
homo
-
lumo
◆ Fun()
template<typename Treal, typename Tmatrix>
mat::TC2< Treal, Tmatrix >::Fun::Fun |
( |
int const *const | p, |
|
|
int const | pl, |
|
|
Treal const | s ) |
|
inline |
◆ ~TC2()
◆ eval()
template<typename Treal, typename Tmatrix>
Treal mat::TC2< Treal, Tmatrix >::Fun::eval |
( |
Treal const | x | ) |
const |
|
inline |
◆ fermi_level()
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. |
◆ homo()
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. |
◆ lumo()
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. |
◆ n_multiplies()
int mat::TC2< Treal, Tmatrix >::n_multiplies |
( |
| ) |
const |
|
inline |
Returns the number of used matrix matrix multiplications.
◆ print_data()
void mat::TC2< Treal, Tmatrix >::print_data |
( |
int const | start, |
|
|
int const | stop ) const |
◆ purify()
void mat::TC2< Treal, Tmatrix >::purify |
( |
| ) |
|
|
protected |
Runs purification.
Run by constructor.
References Fun().
◆ TC2()
mat::TC2< Treal, Tmatrix >::TC2 |
( |
Tmatrix & | F, |
|
|
Tmatrix & | DM, |
|
|
const int | size, |
|
|
const int | noc, |
|
|
const Treal | trunc = 0, |
|
|
const int | maxmm = 100 ) |
Constructor Initializes everything.
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. |
Density matrix after purification.
◆ frob_trunc
const Treal mat::TC2< Treal, Tmatrix >::frob_trunc |
|
protected |
Threshold for the truncation.
◆ idemerror
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
◆ lmax
Upper bound for eigenvalue spectrum.
◆ lmin
Lower bound for eigenvalue spectrum.
◆ maxmul
const int mat::TC2< Treal, Tmatrix >::maxmul |
|
protected |
Number of tolerated matrix multiplications.
◆ nmul
Number of used matrix multiplications.
◆ nmul_firstpart
int mat::TC2< Treal, Tmatrix >::nmul_firstpart |
|
protected |
Number of used matrix multiplications in the first part of the purification.
◆ nocc
const int mat::TC2< Treal, Tmatrix >::nocc |
|
protected |
Number of occupied orbitals.
◆ pol
template<typename Treal, typename Tmatrix>
int const* const mat::TC2< Treal, Tmatrix >::Fun::pol |
|
private |
◆ pollength
template<typename Treal, typename Tmatrix>
int const mat::TC2< Treal, Tmatrix >::Fun::pollength |
|
private |
◆ polys
Choices of polynomials 0 for x^2 and 1 for 2x-x^2 Length: nmul.
◆ shift
template<typename Treal, typename Tmatrix>
Treal const mat::TC2< Treal, Tmatrix >::Fun::shift |
|
private |
◆ tracediff
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
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: