GQCP
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | List of all members
GQCP::HubbardHamiltonian< _Scalar > Class Template Reference

#include <HubbardHamiltonian.hpp>

Collaboration diagram for GQCP::HubbardHamiltonian< _Scalar >:
Collaboration graph

Public Types

using Scalar = _Scalar
 

Public Member Functions

 HubbardHamiltonian (const HoppingMatrix< Scalar > &H, const SquareMatrix< Scalar > &U, const SquareMatrix< Scalar > &mu)
 
 HubbardHamiltonian (const HoppingMatrix< Scalar > &H, const double &U, const double &mu=0.0)
 
 HubbardHamiltonian (const HoppingMatrix< Scalar > &H, const std::vector< double > &U, const std::vector< double > &mu)
 
template<typename Z = Scalar>
enable_if_t< std::is_same< Z, double >::value, ScalarRSQOneElectronOperator< double > > core () const
 
template<typename Z = Scalar>
enable_if_t< std::is_same< Z, double >::value, ScalarRSQTwoElectronOperator< double > > twoElectron () const
 
const HoppingMatrix< Scalar > & hoppingMatrix () const
 
size_t numberOfLatticeSites () const
 
const SquareMatrix< ScalaroneElectronContributions () const
 
const SquareMatrix< Scalar > & onSitePotentialMatrix () const
 
const SquareMatrix< Scalar > & onSiteRepulsionMatrix () const
 

Static Public Member Functions

template<typename Z = Scalar>
static enable_if_t< std::is_same< Z, double >::value, HubbardHamiltonian< double > > Random (const size_t K)
 

Detailed Description

template<typename _Scalar>
class GQCP::HubbardHamiltonian< _Scalar >

The Hubbard model Hamiltonian.

Template Parameters
_ScalarThe scalar type for a hopping matrix element.

Member Typedef Documentation

◆ Scalar

template<typename _Scalar >
using GQCP::HubbardHamiltonian< _Scalar >::Scalar = _Scalar

Constructor & Destructor Documentation

◆ HubbardHamiltonian() [1/3]

template<typename _Scalar >
GQCP::HubbardHamiltonian< _Scalar >::HubbardHamiltonian ( const HoppingMatrix< Scalar > &  H,
const SquareMatrix< Scalar > &  U,
const SquareMatrix< Scalar > &  mu 
)
inline

Create a Hubbard Hamiltonian matrix from its representation as a SquareMatrix.

Parameters
HThe Hopping matrix.
UThe U contributions, represented as a SquareMatrix.
muThe on-site potentials, represented as a SquareMatrix.

◆ HubbardHamiltonian() [2/3]

template<typename _Scalar >
GQCP::HubbardHamiltonian< _Scalar >::HubbardHamiltonian ( const HoppingMatrix< Scalar > &  H,
const double &  U,
const double &  mu = 0.0 
)
inline

Create a HubbardHamiltonian from a HoppingMatrix and constant parameters Uand mu.

Parameters
HThe Hubbard hopping matrix.
UThe on-site repulsion value.
muThe on-site potential. Default is zero.

◆ HubbardHamiltonian() [3/3]

template<typename _Scalar >
GQCP::HubbardHamiltonian< _Scalar >::HubbardHamiltonian ( const HoppingMatrix< Scalar > &  H,
const std::vector< double > &  U,
const std::vector< double > &  mu 
)
inline

Create a HubbardHamiltonian from a HoppingMatrix and parameters Uand mu for each site as a vector.

Parameters
HThe Hubbard hopping matrix.
UThe on-site repulsion values as a vector.
muThe on-site potential values as a vector.

Member Function Documentation

◆ core()

template<typename _Scalar >
template<typename Z = Scalar>
enable_if_t< std::is_same< Z, double >::value, ScalarRSQOneElectronOperator< double > > GQCP::HubbardHamiltonian< _Scalar >::core ( ) const
inline
Returns
The core Hamiltonian (i.e. resulting from the Hubbard hopping operator) as a one-electron operator.
Note
This method is only available for real scalars.

◆ hoppingMatrix()

template<typename _Scalar >
const HoppingMatrix< Scalar > & GQCP::HubbardHamiltonian< _Scalar >::hoppingMatrix ( ) const
inline
Returns
The Hubbard hopping matrix for this Hubbard model Hamiltonian.

◆ numberOfLatticeSites()

template<typename _Scalar >
size_t GQCP::HubbardHamiltonian< _Scalar >::numberOfLatticeSites ( ) const
inline
Returns
The number of lattice sites corresponding used in this Hubbard model Hamiltonian.

◆ oneElectronContributions()

template<typename _Scalar >
const SquareMatrix< Scalar > GQCP::HubbardHamiltonian< _Scalar >::oneElectronContributions ( ) const
inline
Returns
The one electron parameter contributions of this Hubbard model Hamiltonian.

◆ onSitePotentialMatrix()

template<typename _Scalar >
const SquareMatrix< Scalar > & GQCP::HubbardHamiltonian< _Scalar >::onSitePotentialMatrix ( ) const
inline
Returns
The matrix containing the on-site potentials for this Hubbard model Hamiltonian.

◆ onSiteRepulsionMatrix()

template<typename _Scalar >
const SquareMatrix< Scalar > & GQCP::HubbardHamiltonian< _Scalar >::onSiteRepulsionMatrix ( ) const
inline
Returns
The matrix containing the on-site repulsions for this Hubbard model Hamiltonian.

◆ Random()

template<typename _Scalar >
template<typename Z = Scalar>
static enable_if_t< std::is_same< Z, double >::value, HubbardHamiltonian< double > > GQCP::HubbardHamiltonian< _Scalar >::Random ( const size_t  K)
inlinestatic

Create a random Hubbard Hamiltonian matrix matrix with elements distributed uniformly in [-1.0, 1.0].

Parameters
KThe number of lattice sites.
Returns
A random Hubbard Hamiltonian matrix.
Note
This method is only available for real scalars.
This method always sets the on-site potential contributions (mu) to zero.

◆ twoElectron()

template<typename _Scalar >
template<typename Z = Scalar>
enable_if_t< std::is_same< Z, double >::value, ScalarRSQTwoElectronOperator< double > > GQCP::HubbardHamiltonian< _Scalar >::twoElectron ( ) const
inline
Returns
The two-electron part of the Hamiltonian (resulting from the on-site repulsion) as a two-electron operator.
Note
This method is only available for real scalars.

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