ffsim.DiagonalCoulombHamiltonian

class ffsim.DiagonalCoulombHamiltonian(one_body_tensor, diag_coulomb_mats, constant=0.0)[source]

Bases: SupportsApproximateEquality, SupportsDiagonal, SupportsFermionOperator, SupportsLinearOperator

A diagonal Coulomb Hamiltonian.

A Hamiltonian of the form

\[\begin{split}H = \sum_{\substack{pq \\ \sigma}} h_{pq} a^\dagger_{p\sigma} a_{q\sigma} + \frac12 \sum_{\substack{pq \\ \sigma \tau}} J^{\sigma \tau}_{pq} n_{p\sigma} n_{q\tau} + \text{constant}.\end{split}\]

where \(n_{p\sigma} = a_{p\sigma}^\dagger a_{p\sigma}\) is the number operator on orbital \(p\) with spin \(\sigma\).

Here \(h_{pq}\) is called the one-body tensor and the \(J^{\sigma \tau}\) are called diagonal Coulomb matrices. We require that \(J^{\alpha\alpha}=J^{\beta\beta}\) and \(J^{\alpha\beta}=J^{\beta\alpha}\), so only two matrices are needed to describe the Hamiltonian.

one_body_tensor

The one-body tensor \(h\).

Type:

np.ndarray

diag_coulomb_mats

The diagonal Coulomb matrices \(J^{\alpha\alpha}\) and \(J^{\alpha\beta}\), given as a pair of Numpy arrays specifying independent coefficients for alpha-alpha and alpha-beta interactions (in that order).

Type:

np.ndarray

constant

The constant.

Type:

float

Methods

from_fermion_operator(op)

Initialize a DiagonalCoulombHamiltonian from a FermionOperator.

Attributes

constant

norb

The number of spatial orbitals.

one_body_tensor

diag_coulomb_mats