GQCP
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator > Class Template Reference

#include <SQHamiltonian.hpp>

Inheritance diagram for GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >:
Inheritance graph
Collaboration diagram for GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >:
Collaboration graph

Public Types

using ScalarSQOneElectronOperator = _ScalarSQOneElectronOperator
 
using ScalarSQTwoElectronOperator = _ScalarSQTwoElectronOperator
 
using SpinorTag = typename ScalarSQOneElectronOperator::SpinorTag
 
using Scalar = typename ScalarSQOneElectronOperator::Scalar
 
using Self = SQHamiltonian< ScalarSQOneElectronOperator, ScalarSQTwoElectronOperator >
 
using OneDM = typename OperatorTraits< ScalarSQOneElectronOperator >::OneDM
 
using TwoDM = typename OperatorTraits< ScalarSQOneElectronOperator >::TwoDM
 
using Transformation = typename OperatorTraits< ScalarSQOneElectronOperator >::Transformation
 
using JacobiRotationType = typename JacobiRotatableTraits< ScalarSQOneElectronOperator >::JacobiRotationType
 
- Public Types inherited from GQCP::BasisTransformable< SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator > >
using Transformation = typename BasisTransformableTraits< SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator > >::Transformation
 
- Public Types inherited from GQCP::JacobiRotatable< SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator > >
using JacobiRotationType = typename JacobiRotatableTraits< SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator > >::JacobiRotationType
 

Public Member Functions

 SQHamiltonian (const std::vector< ScalarSQOneElectronOperator > &h_contributions, const std::vector< ScalarSQTwoElectronOperator > &g_contributions)
 
 SQHamiltonian (const ScalarSQOneElectronOperator &h, const ScalarSQTwoElectronOperator &g)
 
const ScalarSQOneElectronOperatorcore () const
 
ScalarSQOneElectronOperatorcore ()
 
const std::vector< ScalarSQOneElectronOperator > & coreContributions () const
 
std::vector< ScalarSQOneElectronOperator > & coreContributions ()
 
const ScalarSQTwoElectronOperatortwoElectron () const
 
ScalarSQTwoElectronOperatortwoElectron ()
 
const std::vector< ScalarSQTwoElectronOperator > & twoElectronContributions () const
 
std::vector< ScalarSQTwoElectronOperator > & twoElectronContributions ()
 
size_t numberOfOrbitals () const
 
template<typename Z = SpinorTag>
enable_if_t< std::is_same< Z, RestrictedSpinOrbitalTag >::value||std::is_same< Z, GeneralSpinorTag >::value, double > calculateEdmistonRuedenbergLocalizationIndex (const OrbitalSpace orbital_space) const
 
template<typename Z = SpinorTag>
enable_if_t< std::is_same< Z, RestrictedSpinOrbitalTag >::value||std::is_same< Z, GeneralSpinorTag >::value, ScalarSQOneElectronOperatorcalculateEffectiveOneElectronIntegrals () const
 
Scalar calculateExpectationValue (const OneDM &D, const TwoDM &d) const
 
template<typename Z = SpinorTag>
enable_if_t< std::is_same< Z, RestrictedSpinOrbitalTag >::value||std::is_same< Z, GeneralSpinorTag >::value, SquareMatrix< Scalar > > calculateFockianMatrix (const OneDM &D, const TwoDM &d) const
 
template<typename Z = SpinorTag>
enable_if_t< std::is_same< Z, RestrictedSpinOrbitalTag >::value||std::is_same< Z, GeneralSpinorTag >::value, SquareRankFourTensor< Scalar > > calculateSuperFockianMatrix (const OneDM &D, const TwoDM &d) const
 
template<typename Z = SpinorTag>
enable_if_t< std::is_same< Z, GeneralSpinorTag >::value, ScalarSQOneElectronOperatorcalculateInactiveFockian (const OrbitalSpace orbital_space) const
 
template<typename Z = SpinorTag>
enable_if_t< std::is_same< Z, RestrictedSpinOrbitalTag >::value, ScalarSQOneElectronOperatorcalculateInactiveFockian (const OrbitalSpace orbital_space) const
 
Self transformed (const Transformation &T) const override
 
Self rotated (const JacobiRotationType &jacobi_rotation) const override
 
Selfoperator+= (const ScalarSQOneElectronOperator &sq_one_op)
 
Selfoperator-= (const ScalarSQOneElectronOperator &sq_one_op)
 
Selfoperator+= (const ScalarSQTwoElectronOperator &sq_two_op)
 
Selfoperator-= (const ScalarSQTwoElectronOperator &sq_two_op)
 
- Public Member Functions inherited from GQCP::BasisTransformable< SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator > >
virtual SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator > transformed (const Transformation &T) const=0
 
virtual void transform (const Transformation &T)
 
virtual SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator > rotated (const Transformation &U) const
 
void rotate (const Transformation &U)
 
- Public Member Functions inherited from GQCP::JacobiRotatable< SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator > >
virtual SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator > rotated (const JacobiRotationType &jacobi_rotation) const=0
 
void rotate (const JacobiRotationType &jacobi_rotation)
 

Static Public Member Functions

template<typename Z1 = Scalar, typename Z2 = SpinorTag>
static enable_if_t< std::is_same< Z1, double >::value &&std::is_same< Z2, RestrictedSpinorTag >::value, SQHamiltonian< ScalarSQOneElectronOperator, ScalarSQTwoElectronOperator > > FromHubbard (const HubbardHamiltonian< double > &hubbard_hamiltonian)
 
template<typename Z = SpinorTag>
static enable_if_t< std::is_same< Z, UnrestrictedSpinorTag >::value, SQHamiltonian< ScalarSQOneElectronOperator, ScalarSQTwoElectronOperator > > FromRestricted (const SQHamiltonian< ScalarRSQOneElectronOperator< Scalar >, ScalarRSQTwoElectronOperator< Scalar > > &r_hamiltonian)
 
template<typename Z = Scalar>
static enable_if_t< std::is_same< Z, double >::value, SelfRandom (const size_t dim)
 
template<typename Z1 = Scalar, typename Z2 = SpinorTag>
static enable_if_t< std::is_same< Z1, double >::value &&std::is_same< Z2, RestrictedSpinOrbitalTag >::value, SQHamiltonian< ScalarSQOneElectronOperator, ScalarSQTwoElectronOperator > > FromFCIDUMP (const std::string &fcidump_filename)
 

Friends

Self operator+ (Self lhs, const ScalarSQOneElectronOperator &rhs)
 
Self operator+ (const ScalarSQOneElectronOperator &lhs, Self rhs)
 
Self operator- (Self lhs, const ScalarSQOneElectronOperator &rhs)
 
Self operator+ (Self lhs, const ScalarSQTwoElectronOperator &rhs)
 
Self operator+ (const ScalarSQTwoElectronOperator &lhs, Self rhs)
 
Self operator- (Self lhs, const ScalarSQTwoElectronOperator &rhs)
 

Detailed Description

template<typename _ScalarSQOneElectronOperator, typename _ScalarSQTwoElectronOperator>
class GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >

A second-quantized electronic Hamiltonian. It consists of one-electron (core) and two-electron contributions.

Template Parameters
_ScalarSQOneElectronOperatorThe type of second-quantized one-electron operator underlying this Hamiltonian.
_ScalarSQTwoElectronOperatorThe type of second-quantized two-electron operator underlying this Hamiltonian.

Member Typedef Documentation

◆ JacobiRotationType

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
using GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::JacobiRotationType = typename JacobiRotatableTraits<ScalarSQOneElectronOperator>::JacobiRotationType

◆ OneDM

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
using GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::OneDM = typename OperatorTraits<ScalarSQOneElectronOperator>::OneDM

◆ Scalar

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
using GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::Scalar = typename ScalarSQOneElectronOperator::Scalar

◆ ScalarSQOneElectronOperator

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
using GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::ScalarSQOneElectronOperator = _ScalarSQOneElectronOperator

◆ ScalarSQTwoElectronOperator

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
using GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::ScalarSQTwoElectronOperator = _ScalarSQTwoElectronOperator

◆ Self

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
using GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::Self = SQHamiltonian<ScalarSQOneElectronOperator, ScalarSQTwoElectronOperator>

◆ SpinorTag

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
using GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::SpinorTag = typename ScalarSQOneElectronOperator::SpinorTag

◆ Transformation

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
using GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::Transformation = typename OperatorTraits<ScalarSQOneElectronOperator>::Transformation

◆ TwoDM

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
using GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::TwoDM = typename OperatorTraits<ScalarSQOneElectronOperator>::TwoDM

Constructor & Destructor Documentation

◆ SQHamiltonian() [1/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::SQHamiltonian ( const std::vector< ScalarSQOneElectronOperator > &  h_contributions,
const std::vector< ScalarSQTwoElectronOperator > &  g_contributions 
)
inline

Initialize a SQHamiltonian for one- and two-electron contributions.

Parameters
h_contributionsThe contributions to the total one-electron interaction operator.
g_contributionsThe contributions to the total two-electron interaction operator.

◆ SQHamiltonian() [2/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::SQHamiltonian ( const ScalarSQOneElectronOperator h,
const ScalarSQTwoElectronOperator g 
)
inline

Create an SQHamiltonian from total one- and two-electron contributions.

Parameters
hThe total one-electron interaction operator, i.e. the core Hamiltonian.
gThe total two-electron interaction operator.

Member Function Documentation

◆ calculateEdmistonRuedenbergLocalizationIndex()

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
template<typename Z = SpinorTag>
enable_if_t< std::is_same< Z, RestrictedSpinOrbitalTag >::value||std::is_same< Z, GeneralSpinorTag >::value, double > GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::calculateEdmistonRuedenbergLocalizationIndex ( const OrbitalSpace  orbital_space) const
inline

Calculate the Edmiston-Ruedenberg localization index, which is the trace of the two-electron integrals over only the occupied orbitals.

Parameters
orbital_spaceAn orbital space which denotes the occupied-active-virtual separation.
Returns
The Edmiston-Ruedenberg localization index.
Note
This method is not enabled for unrestricted Hamiltonians.

◆ calculateEffectiveOneElectronIntegrals()

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
template<typename Z = SpinorTag>
enable_if_t< std::is_same< Z, RestrictedSpinOrbitalTag >::value||std::is_same< Z, GeneralSpinorTag >::value, ScalarSQOneElectronOperator > GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::calculateEffectiveOneElectronIntegrals ( ) const
inline

Calculate the effective one-electron integrals. These are the core integrals, with the contributions form a Kronecker delta-term in the two-electron integrals.

Returns
The effective one-electron integrals.
Note
This method is not enabled for unrestricted Hamiltonians.

◆ calculateExpectationValue()

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
Scalar GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::calculateExpectationValue ( const OneDM D,
const TwoDM d 
) const
inline

Calculate the electronic energy, i.e. the expectation value of this Hamiltonian.

Parameters
DThe 1-DM.
dThe 2-DM.
Returns
The expectation value of this Hamiltonian.

◆ calculateFockianMatrix()

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
template<typename Z = SpinorTag>
enable_if_t< std::is_same< Z, RestrictedSpinOrbitalTag >::value||std::is_same< Z, GeneralSpinorTag >::value, SquareMatrix< Scalar > > GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::calculateFockianMatrix ( const OneDM D,
const TwoDM d 
) const
inline

Calculate the Fockian matrix of this Hamiltonian.

Parameters
DThe 1-DM (or the response 1-DM for made-variational wave function models).
dThe 2-DM (or the response 2-DM for made-variational wave function models).
Returns
The Fockian matrix.
Note
This method is not enabled for unrestricted Hamiltonians.

◆ calculateInactiveFockian() [1/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
template<typename Z = SpinorTag>
enable_if_t< std::is_same< Z, GeneralSpinorTag >::value, ScalarSQOneElectronOperator > GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::calculateInactiveFockian ( const OrbitalSpace  orbital_space) const
inline

Calculate the inactive Fockian operator for a general Hamiltonian.

Parameters
orbital_spaceAn orbital space which denotes the occupied-virtual separation.
Returns
The inactive Fockian operator.

◆ calculateInactiveFockian() [2/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
template<typename Z = SpinorTag>
enable_if_t< std::is_same< Z, RestrictedSpinOrbitalTag >::value, ScalarSQOneElectronOperator > GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::calculateInactiveFockian ( const OrbitalSpace  orbital_space) const
inline

Calculate the inactive Fockian operator for a restricted Hamiltonian.

Parameters
orbital_spaceAn orbital space which denotes the occupied-virtual separation.
Returns
The inactive Fockian operator.

◆ calculateSuperFockianMatrix()

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
template<typename Z = SpinorTag>
enable_if_t< std::is_same< Z, RestrictedSpinOrbitalTag >::value||std::is_same< Z, GeneralSpinorTag >::value, SquareRankFourTensor< Scalar > > GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::calculateSuperFockianMatrix ( const OneDM D,
const TwoDM d 
) const
inline

Calculate the super-Fockian matrix of this Hamiltonian.

Parameters
DThe 1-DM (or the response 1-DM for made-variational wave function models).
dThe 2-DM (or the response 2-DM for made-variational wave function models).
Returns
The super-Fockian matrix.

◆ core() [1/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
ScalarSQOneElectronOperator & GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::core ( )
inline
Returns
A writable reference to the total one-electron interaction operator, i.e. the core Hamiltonian.

◆ core() [2/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
const ScalarSQOneElectronOperator & GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::core ( ) const
inline
Returns
A read-only reference to the total one-electron interaction operator, i.e. the core Hamiltonian.

◆ coreContributions() [1/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
std::vector< ScalarSQOneElectronOperator > & GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::coreContributions ( )
inline
Returns
A writable reference to the contributions to the total one-electron interaction operator.

◆ coreContributions() [2/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
const std::vector< ScalarSQOneElectronOperator > & GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::coreContributions ( ) const
inline
Returns
A read-only reference to the contributions to the total one-electron interaction operator.

◆ FromFCIDUMP()

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
template<typename Z1 = Scalar, typename Z2 = SpinorTag>
static enable_if_t< std::is_same< Z1, double >::value &&std::is_same< Z2, RestrictedSpinOrbitalTag >::value, SQHamiltonian< ScalarSQOneElectronOperator, ScalarSQTwoElectronOperator > > GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::FromFCIDUMP ( const std::string &  fcidump_filename)
inlinestatic

Parse an FCIDUMP file and read in its Hamiltonian.

Parameters
fcidump_filenameThe name of the FCIDUMP file.
Returns
The Hamiltonian corresponding to the contents of an FCIDUMP file.
Note
This named constructor is only available in the real case.

◆ FromHubbard()

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
template<typename Z1 = Scalar, typename Z2 = SpinorTag>
static enable_if_t< std::is_same< Z1, double >::value &&std::is_same< Z2, RestrictedSpinorTag >::value, SQHamiltonian< ScalarSQOneElectronOperator, ScalarSQTwoElectronOperator > > GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::FromHubbard ( const HubbardHamiltonian< double > &  hubbard_hamiltonian)
inlinestatic

MARK: Named constructors Create an RSQHamiltonian from a HubbardHamiltonian.

Parameters
hubbard_hamiltonianThe Hubbard model Hamiltonian.
Returns
An RSQHamiltonian generated from the given Hubbard model Hamiltonian.
Note
This named constructor is only available for real matrix representations.

◆ FromRestricted()

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
template<typename Z = SpinorTag>
static enable_if_t< std::is_same< Z, UnrestrictedSpinorTag >::value, SQHamiltonian< ScalarSQOneElectronOperator, ScalarSQTwoElectronOperator > > GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::FromRestricted ( const SQHamiltonian< ScalarRSQOneElectronOperator< Scalar >, ScalarRSQTwoElectronOperator< Scalar > > &  r_hamiltonian)
inlinestatic

Create a USQHamiltonian from an RSQHamiltonian.

Parameters
r_hamiltonianThe Hamiltonian expressed in a restricted spin-orbital basis.
Returns
An USQHamiltonian generated from the given RSQHamiltonian.

◆ numberOfOrbitals()

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
size_t GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::numberOfOrbitals ( ) const
inline
Returns
The number of orbitals (spinors or spin-orbitals, depending on the context) this second-quantized Hamiltonian is related to.

◆ operator+=() [1/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
Self & GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::operator+= ( const ScalarSQOneElectronOperator sq_one_op)
inline

Addition-assignment with a (scalar) one-electron operator.

◆ operator+=() [2/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
Self & GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::operator+= ( const ScalarSQTwoElectronOperator sq_two_op)
inline

Addition-assignment with a (scalar) two-electron operator.

◆ operator-=() [1/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
Self & GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::operator-= ( const ScalarSQOneElectronOperator sq_one_op)
inline

Subtraction-assignment with a (scalar) one-electron operator.

◆ operator-=() [2/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
Self & GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::operator-= ( const ScalarSQTwoElectronOperator sq_two_op)
inline

Subtraction-assignment with a (scalar) one-electron operator.

◆ Random()

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
template<typename Z = Scalar>
static enable_if_t< std::is_same< Z, double >::value, Self > GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::Random ( const size_t  dim)
inlinestatic

Create a random SQHamiltonian with values uniformly distributed between [-1,1].

Parameters
dimThe dimension of the matrix representations of the one- and two-electron integrals, i.e. the number of orbitals.
Returns
A random SQHamiltonian.
Note
This named constructor is only available in the real case.

◆ rotated()

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
Self GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::rotated ( const JacobiRotationType jacobi_rotation) const
inlineoverridevirtual

Apply the Jacobi rotation and return the result.

Parameters
jacobi_rotationThe Jacobi rotation.
Returns
The Jacobi-rotated object.

Implements GQCP::JacobiRotatable< SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator > >.

◆ transformed()

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
Self GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::transformed ( const Transformation T) const
inlineoverride

Apply the basis transformation and return the resulting Hamiltonian.

Parameters
TThe basis transformation.
Returns
The basis-transformed Hamiltonian.

◆ twoElectron() [1/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
ScalarSQTwoElectronOperator & GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::twoElectron ( )
inline
Returns
A writable reference to the total two-electron interaction operator.

◆ twoElectron() [2/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
const ScalarSQTwoElectronOperator & GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::twoElectron ( ) const
inline
Returns
A read-only reference to the total two-electron interaction operator.

◆ twoElectronContributions() [1/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
std::vector< ScalarSQTwoElectronOperator > & GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::twoElectronContributions ( )
inline
Returns
A writable reference to the contributions to the total two-electron interaction operator.

◆ twoElectronContributions() [2/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
const std::vector< ScalarSQTwoElectronOperator > & GQCP::SQHamiltonian< _ScalarSQOneElectronOperator, _ScalarSQTwoElectronOperator >::twoElectronContributions ( ) const
inline
Returns
A read-only reference to the contributions to the total two-electron interaction operator.

Friends And Related Function Documentation

◆ operator+ [1/4]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
Self operator+ ( const ScalarSQOneElectronOperator lhs,
Self  rhs 
)
friend

A commutative version of the previous addition.

◆ operator+ [2/4]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
Self operator+ ( const ScalarSQTwoElectronOperator lhs,
Self  rhs 
)
friend

A commutative version of the previous addition.

◆ operator+ [3/4]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
Self operator+ ( Self  lhs,
const ScalarSQOneElectronOperator rhs 
)
friend

Addition, canonically implemented using addition-assignment.

◆ operator+ [4/4]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
Self operator+ ( Self  lhs,
const ScalarSQTwoElectronOperator rhs 
)
friend

Addition, canonically implemented using addition-assignment.

◆ operator- [1/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
Self operator- ( Self  lhs,
const ScalarSQOneElectronOperator rhs 
)
friend

Subtraction, canonically implemented using addition-assignment.

◆ operator- [2/2]

template<typename _ScalarSQOneElectronOperator , typename _ScalarSQTwoElectronOperator >
Self operator- ( Self  lhs,
const ScalarSQTwoElectronOperator rhs 
)
friend

Subtraction, canonically implemented using addition-assignment.


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