Occupation-based Hamiltonians#

class HamPPP(connectivity: list | ndarray, alpha=-0.414, beta=-0.0533, u_onsite=None, gamma=None, charges=None, sym=1, atom_dictionary=None, bond_dictionary=None, orbital_overlap=None)#

Pariser-Parr-Pople Hamiltonian.

__init__(connectivity: list | ndarray, alpha=-0.414, beta=-0.0533, u_onsite=None, gamma=None, charges=None, sym=1, atom_dictionary=None, bond_dictionary=None, orbital_overlap=None)#

Initialize Pariser-Parr-Pople Hamiltonian.

Parameters:
  • connectivity (list, np.ndarray) – list of tuples that specifies sites and bonds between them or symmetric np.ndarray of shape (n_sites, n_sites) that specifies the connectivity between sites. For example, for a linear chain of 4 sites, the connectivity can be specified as [(C1, C2, 1), (C2, C3, 1), (C3, C4, 1)]

  • alpha (float) – specifies the site energy if all sites are equivalent. Default value is the 2p-pi orbital of Carbon

  • beta (float) – specifies the resonance energy, hopping term, if all bonds are equivalent. The default value is appropriate for a pi-bond between Carbon atoms

  • u_onsite (np.ndarray) – on-site Coulomb interaction; 1d np.ndarray

  • gamma (np.ndarray) – parameter that specifies long-range Coulomb interaction; 2d

  • charges (np.ndarray) – Charges on sites; 1d np.ndarray

  • sym (int) – symmetry of the Hamiltonian: int [1, 2, 4, 8]. Default is 1

Notes

The Hamiltonian is given by:

\[\begin{split}\begin{align} \hat{H}_{\mathrm{PPP}\mathrm{P}} &= \sum_{pq}h_{pq} a_{p}^{\dagger}a_{q} \\ &+ \sum_{p} U_{p} \hat{n}_{p \alpha} \hat{n}_{p\beta} \\ &+ \frac{1}{2}\sum_{p\neq q}\gamma_{pq}\left(\hat{n}_{p\alpha} + \hat{n}_{p \beta}-Q_{p}\right) \left(\hat{n}_{q \alpha}+\hat{n}_{q\beta}-Q_{q}\right) \end{align}\end{split}\]
generate_one_body_integral(basis: str, dense: bool)#

Generate one body integral in spatial or spin orbital basis.

Parameters:
  • basis (str) – [‘spatial’, ‘spin orbital’]

  • dense (bool) – dense or sparse matrix; default False

Return type:

scipy.sparse.csr_matrix or np.ndarray

generate_two_body_integral(basis: str, dense: bool, sym=1)#

Generate two body integral in spatial or spinorbital basis.

Parameters:
  • basis (str) – [‘spatial’, ‘spin orbital’]

  • dense (bool) – dense or sparse matrix; default False

  • sym (int) – symmetry – [2, 4, 8] default is 1

Return type:

scipy.sparse.csr_matrix or np.ndarray

generate_zero_body_integral()#

Generate zero body integral.

Return type:

float

class HamHub(connectivity: list | ndarray, alpha=-0.414, beta=-0.0533, u_onsite=None, sym=1, atom_types=None, atom_dictionary=None, bond_dictionary=None, orbital_overlap=None, Bz=None, gamma=None)#

Hubbard Hamiltonian.

The Hubbard model corresponds to choosing $gamma_{pq} = 0$ It can be invoked by choosing gamma = 0 from PPP hamiltonian.

__init__(connectivity: list | ndarray, alpha=-0.414, beta=-0.0533, u_onsite=None, sym=1, atom_types=None, atom_dictionary=None, bond_dictionary=None, orbital_overlap=None, Bz=None, gamma=None)#

Hubbard Hamiltonian.

Parameters:
  • connectivity (list, np.ndarray) – list of tuples that specifies sites and bonds between them or symmetric np.ndarray of shape (n_sites, n_sites) that specifies the connectivity between sites. For example, for a linear chain of 4 sites, the connectivity can be specified as [(C1, C2, 1), (C2, C3, 1), (C3, C4, 1)]

  • alpha (float) – specifies the site energy if all sites are equivalent. Default value is the 2p-pi orbital of Carbon

  • beta (float) – specifies the resonance energy, hopping term, if all bonds are equivalent. The default value is appropriate for a pi-bond between Carbon atoms

  • u_onsite (np.ndarray) – on-site Coulomb interaction; 1d np.ndarray

  • sym (int) – symmetry of the Hamiltonian: int [1, 2, 4, 8]. Default is 1

Notes

The Hamiltonian is given by:

\[\hat{H}_{\mathrm{PPP}\mathrm{P}} = \sum_{pq}h_{pq} a_{p}^{\dagger}a_{q} + \sum_{p} U_{p} \hat{n}_{p \alpha} \hat{n}_{p\beta}\]
class HamHuck(connectivity: list | ndarray, alpha=-0.414, beta=-0.0533, sym=1, atom_dictionary=None, bond_dictionary=None)#

Huckel Hamiltonian.

It can be invoked by choosing u_onsite = None from Hubbard hamiltonian.

__init__(connectivity: list | ndarray, alpha=-0.414, beta=-0.0533, sym=1, atom_dictionary=None, bond_dictionary=None)#

Huckel hamiltonian.

Parameters:
  • connectivity (list, np.ndarray) – list of tuples that specifies sites and bonds between them or symmetric np.ndarray of shape (n_sites, n_sites) that specifies the connectivity between sites. For example, for a linear chain of 4 sites, the connectivity can be specified as [(C1, C2, 1), (C2, C3, 1), (C3, C4, 1)]

  • alpha (float) – specifies the site energy if all sites are equivalent. Default value is the 2p-pi orbital of Carbon

  • beta (float) – specifies the resonance energy, hopping term, if all bonds are equivalent. The default value is appropriate for a pi-bond between Carbon atoms

  • sym (int) – symmetry of the Hamiltonian: int [1, 2, 4, 8]. Default is 1

Notes

The Hamiltonian is given by:

\[\hat{H}_{\mathrm{PPP}\mathrm{P}} = \sum_{pq}h_{pq} a_{p}^{\dagger}a_{q}\]