DOCI-Exact  1.0
doci::DOCIHamiltonian Class Reference

#include <DOCIHamtilonian.h>

Public Member Functions

 DOCIHamiltonian (const Permutation &, const Molecule &)
 
 DOCIHamiltonian (const Molecule &)
 
 DOCIHamiltonian (Molecule &&mol)
 
 DOCIHamiltonian (const DOCIHamiltonian &)
 
 DOCIHamiltonian (DOCIHamiltonian &&)=default
 
virtual ~DOCIHamiltonian ()=default
 
DOCIHamiltonianoperator= (const DOCIHamiltonian &)
 
DOCIHamiltonianoperator= (DOCIHamiltonian &&)=default
 
Molecule const & getMolecule () const
 
MoleculegetMolecule ()
 
Permutation const & getPermutation () const
 
unsigned int getdim () const
 
void Build ()
 
std::pair< std::vector< double >, helpers::matrixDiagonalizeFull () const
 
std::pair< double, std::vector< double > > Diagonalize () const
 
double CalcEnergy () const
 
std::vector< double > CalcEnergy (int) const
 
void SaveToFile (std::string) const
 
void ReadFromFile (std::string)
 
 DOCIHamiltonian (const Permutation &, const Molecule &)
 
 DOCIHamiltonian (const Molecule &)
 
 DOCIHamiltonian (Molecule &&mol)
 
 DOCIHamiltonian (const DOCIHamiltonian &)
 
 DOCIHamiltonian (DOCIHamiltonian &&)=default
 
virtual ~DOCIHamiltonian ()=default
 
DOCIHamiltonianoperator= (const DOCIHamiltonian &)
 
DOCIHamiltonianoperator= (DOCIHamiltonian &&)=default
 
Molecule const & getMolecule () const
 
MoleculegetMolecule ()
 
Permutation const & getPermutation () const
 
unsigned int getdim () const
 
void Build ()
 
std::pair< std::vector< double >, helpers::matrixDiagonalizeFull () const
 
std::pair< double, std::vector< double > > Diagonalize () const
 
double CalcEnergy () const
 
void SaveToFile (std::string) const
 
void ReadFromFile (std::string)
 
 DOCIHamiltonian (const Permutation &, const Molecule &)
 
 DOCIHamiltonian (const Molecule &)
 
 DOCIHamiltonian (Molecule &&mol)
 
 DOCIHamiltonian (const DOCIHamiltonian &)
 
 DOCIHamiltonian (DOCIHamiltonian &&)=default
 
virtual ~DOCIHamiltonian ()=default
 
DOCIHamiltonianoperator= (const DOCIHamiltonian &)
 
DOCIHamiltonianoperator= (DOCIHamiltonian &&)=default
 
Molecule const & getMolecule () const
 
MoleculegetMolecule ()
 
Permutation const & getPermutation () const
 
unsigned int getdim () const
 
void Build ()
 
std::pair< std::vector< double >, helpers::matrixDiagonalizeFull () const
 
std::pair< double, std::vector< double > > Diagonalize () const
 
double CalcEnergy () const
 
std::vector< double > CalcEnergy (int) const
 
void SaveToFile (std::string) const
 
void ReadFromFile (std::string)
 

Static Public Member Functions

static unsigned int CountBits (mybitset)
 
static int CalcSign (unsigned int i, unsigned int j, const mybitset a)
 
static unsigned int CountBits (mybitset)
 
static int CalcSign (unsigned int i, unsigned int j, const mybitset a)
 
static unsigned int CountBits (mybitset)
 
static int CalcSign (unsigned int i, unsigned int j, const mybitset a)
 

Detailed Description

DOCIHamiltonian will store the actual hamiltonian in a sparse format It needs a Permutation object for the basisset and a Molecule object for the matrix elements

Definition at line 18 of file DOCIHamtilonian.h.

Constructor & Destructor Documentation

DOCIHamiltonian::DOCIHamiltonian ( const Permutation perm,
const Molecule mol 
)

Constructor

Parameters
permthe Permutation to use
molthe Molecule to use

Definition at line 17 of file DOCIHamiltonian.cpp.

+ Here is the call graph for this function:

DOCIHamiltonian::DOCIHamiltonian ( const Molecule mol)

Constructor. We generate a Permutation object ourself based on the Molecule in mol.

Parameters
molthe Molecule to use

Definition at line 35 of file DOCIHamiltonian.cpp.

+ Here is the call graph for this function:

DOCIHamiltonian::DOCIHamiltonian ( Molecule &&  mol)

Definition at line 48 of file DOCIHamiltonian.cpp.

+ Here is the call graph for this function:

DOCIHamiltonian::DOCIHamiltonian ( const DOCIHamiltonian orig)

Definition at line 62 of file DOCIHamiltonian.cpp.

doci::DOCIHamiltonian::DOCIHamiltonian ( DOCIHamiltonian &&  )
default
virtual doci::DOCIHamiltonian::~DOCIHamiltonian ( )
virtualdefault
doci::DOCIHamiltonian::DOCIHamiltonian ( const Permutation ,
const Molecule  
)
doci::DOCIHamiltonian::DOCIHamiltonian ( const Molecule )
doci::DOCIHamiltonian::DOCIHamiltonian ( Molecule &&  mol)
doci::DOCIHamiltonian::DOCIHamiltonian ( const DOCIHamiltonian )
doci::DOCIHamiltonian::DOCIHamiltonian ( DOCIHamiltonian &&  )
default
virtual doci::DOCIHamiltonian::~DOCIHamiltonian ( )
virtualdefault
doci::DOCIHamiltonian::DOCIHamiltonian ( const Permutation ,
const Molecule  
)
doci::DOCIHamiltonian::DOCIHamiltonian ( const Molecule )
doci::DOCIHamiltonian::DOCIHamiltonian ( Molecule &&  mol)
doci::DOCIHamiltonian::DOCIHamiltonian ( const DOCIHamiltonian )
doci::DOCIHamiltonian::DOCIHamiltonian ( DOCIHamiltonian &&  )
default
virtual doci::DOCIHamiltonian::~DOCIHamiltonian ( )
virtualdefault

Member Function Documentation

void DOCIHamiltonian::Build ( )

Build the (sparse) DOCIHamiltonian

Definition at line 113 of file DOCIHamiltonian.cpp.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void doci::DOCIHamiltonian::Build ( )
void doci::DOCIHamiltonian::Build ( )
double doci::DOCIHamiltonian::CalcEnergy ( ) const
double DOCIHamiltonian::CalcEnergy ( ) const

Calcalate the lowest eigenvalue using lanczos method. We use arpack for this.

Returns
the lowest eigenvalue

Definition at line 291 of file DOCIHamiltonian.cpp.

+ Here is the caller graph for this function:

double doci::DOCIHamiltonian::CalcEnergy ( ) const
std::vector<double> doci::DOCIHamiltonian::CalcEnergy ( int  ) const
std::vector< double > DOCIHamiltonian::CalcEnergy ( int  number) const

Calculate the number lowest energy levels

Parameters
numberthe number of energy levels to calculate
Returns
list of the energies

Definition at line 507 of file DOCIHamiltonian.cpp.

+ Here is the call graph for this function:

static int doci::DOCIHamiltonian::CalcSign ( unsigned int  i,
unsigned int  j,
const mybitset  a 
)
static
static int doci::DOCIHamiltonian::CalcSign ( unsigned int  i,
unsigned int  j,
const mybitset  a 
)
static
int DOCIHamiltonian::CalcSign ( unsigned int  i,
unsigned int  j,
const mybitset  a 
)
static

Calculate the sign by counting the number of set bits in a between position i and j

Parameters
ithe first position
jthe second position, i < j
athe set of bits to calcalute on
Returns
the number of bits set between i and j in a

Definition at line 467 of file DOCIHamiltonian.cpp.

+ Here is the call graph for this function:

static unsigned int doci::DOCIHamiltonian::CountBits ( mybitset  )
static
static unsigned int doci::DOCIHamiltonian::CountBits ( mybitset  )
static
unsigned int DOCIHamiltonian::CountBits ( mybitset  bits)
static

Wrapper function for gcc buildin popcount

Parameters
bitsthe unsigned long long to count the bits from
Returns
the number of ones in bits

Definition at line 451 of file DOCIHamiltonian.cpp.

+ Here is the caller graph for this function:

std::pair< double,std::vector<double> > doci::DOCIHamiltonian::Diagonalize ( ) const
std::pair< double, std::vector< double > > DOCIHamiltonian::Diagonalize ( ) const

Calcalate the lowest eigenvalue and eigenvector using lanczos method. We use arpack for this.

Returns
a pair of the lowest eigenvalue and corresponding normalized eigenvector

Definition at line 276 of file DOCIHamiltonian.cpp.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::pair< double,std::vector<double> > doci::DOCIHamiltonian::Diagonalize ( ) const
std::pair< std::vector<double>,helpers::matrix > doci::DOCIHamiltonian::DiagonalizeFull ( ) const
std::pair< std::vector< double >, helpers::matrix > DOCIHamiltonian::DiagonalizeFull ( ) const

Convert the sparse matrix to a full matrix and use exact diagonalization to find the eigenvalues and eigenvectors.

Returns
a pair of a vector with all the eigenvalues (sorted) and a matrix with the corresponding orthonormal eigenvectors

Definition at line 421 of file DOCIHamiltonian.cpp.

+ Here is the call graph for this function:

std::pair< std::vector<double>,helpers::matrix > doci::DOCIHamiltonian::DiagonalizeFull ( ) const
unsigned int doci::DOCIHamiltonian::getdim ( ) const
unsigned int doci::DOCIHamiltonian::getdim ( ) const
unsigned int DOCIHamiltonian::getdim ( ) const
Returns
the dimension of the hamiltonian matrix

Definition at line 105 of file DOCIHamiltonian.cpp.

+ Here is the caller graph for this function:

Molecule const& doci::DOCIHamiltonian::getMolecule ( ) const
Molecule const& doci::DOCIHamiltonian::getMolecule ( ) const
Molecule const & DOCIHamiltonian::getMolecule ( ) const
Returns
the Molecule object

Definition at line 81 of file DOCIHamiltonian.cpp.

+ Here is the caller graph for this function:

Molecule& doci::DOCIHamiltonian::getMolecule ( )
Molecule& doci::DOCIHamiltonian::getMolecule ( )
Molecule & DOCIHamiltonian::getMolecule ( )
Returns
the Molecule object

Definition at line 89 of file DOCIHamiltonian.cpp.

Permutation const & DOCIHamiltonian::getPermutation ( ) const
Returns
the Permutation object

Definition at line 97 of file DOCIHamiltonian.cpp.

+ Here is the caller graph for this function:

Permutation const& doci::DOCIHamiltonian::getPermutation ( ) const
Permutation const& doci::DOCIHamiltonian::getPermutation ( ) const
DOCIHamiltonian& doci::DOCIHamiltonian::operator= ( const DOCIHamiltonian )
DOCIHamiltonian & DOCIHamiltonian::operator= ( const DOCIHamiltonian orig)

Definition at line 69 of file DOCIHamiltonian.cpp.

DOCIHamiltonian& doci::DOCIHamiltonian::operator= ( const DOCIHamiltonian )
DOCIHamiltonian& doci::DOCIHamiltonian::operator= ( DOCIHamiltonian &&  )
default
DOCIHamiltonian& doci::DOCIHamiltonian::operator= ( DOCIHamiltonian &&  )
default
DOCIHamiltonian& doci::DOCIHamiltonian::operator= ( DOCIHamiltonian &&  )
default
void doci::DOCIHamiltonian::ReadFromFile ( std::string  )
void doci::DOCIHamiltonian::ReadFromFile ( std::string  )
void DOCIHamiltonian::ReadFromFile ( std::string  filename)

Read the sparse matrix from a file. Reads only the sparse matrix, not number of electrons, ... You still need to construct a object first with a suited Molecule object.

Parameters
filenamethe name of the file

Definition at line 497 of file DOCIHamiltonian.cpp.

+ Here is the call graph for this function:

void doci::DOCIHamiltonian::SaveToFile ( std::string  ) const
void DOCIHamiltonian::SaveToFile ( std::string  filename) const

Save the sparse matrix to a file. Stores only the sparse matrix, not number of electrons, ...

Parameters
filenamethe name of the file

Definition at line 486 of file DOCIHamiltonian.cpp.

+ Here is the call graph for this function:

void doci::DOCIHamiltonian::SaveToFile ( std::string  ) const

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