theochem / ModelHamiltonian

Generate 1- and 2-electron integrals so that molecular quantum chemistry software can be used for model Hamiltonians.
https://modelh.qcdevs.org
GNU Lesser General Public License v3.0
27 stars 17 forks source link

t-J-U-V model #130

Closed RichRick1 closed 2 months ago

RichRick1 commented 3 months ago

Description

We need to build a Hamiltonian in the following form

image

The first three terms lines (1) - (2) are described by PPP model, with $Q_p = 0, \forall p$ . At the same time line (3) described the XXZ-Heisenberg model where $\mu_z = 0, \forall z$. However, the last term in line (4) can be integrated inside the occupation-based part, by adding charge Q:

image

In the line (6) I renamed term $V{pq}$ as $\gamma{pq}$ and added charges to the system. Term in the line (4) can be obtained from line (6) by invoking $Q_p = 1, \forall p$. @PaulWAyers do you thing we should force charges to be 1, to be consistent with the initial definition of t-J-U-V model, or we can have it more flexible and let user define charges?

Code structure

We need a super class t-J-U-V, that takes all parameters that PPP and Heisenberg model take. All of the methods that creates zero-, one-, and two-body term, should call there corresponding hamiltonian method and return sum or results. For example:

def __init__(*params_1, *params_2):
    self.ocupation_part = HamPPP.init(*params_1)
    self.spin_part = HamHeisenberg.init(*params_2)

def generate_one_body_integral(dense=True, basis='spatial basis'):
    h_occupation = self.occupation_part.generate_one_body_integral(dense=True, basis='spatial basis')
    h_spin =  self.spin_part.generate_one_body_integral(dense=True, basis='spatial basis')
    self.h = h_occupation + h_spin
    return self.h
PaulWAyers commented 3 months ago

I would allow arbitrary charges with default value 1.

RichRick1 commented 3 months ago

Testing

There are few ways to can test a software:

The first point should go into the test_tjuv.py file. The other two should go into separate notebooks, in the form of tutorial, like Demo or Ising. @PaulWAyers do you have any candidates for the testing systems?

PaulWAyers commented 3 months ago

Unless there is something in my original notes, I don't think I have a reference for tJUV. I found one paper on tJU (googling) https://www.sciencedirect.com/science/article/pii/S0304885321006715 https://www.nature.com/articles/s41598-024-51829-7 The original reference for t-J-U might be beelow, but I think I recall earlier references too. https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.90.207002 but I'm not sure about t-J-U-V. One early reference is below. Spalek seems to be the major player in this space. https://iopscience.iop.org/article/10.1088/1361-648X/aa7a21

RichRick1 commented 2 months ago

This is done and tested