Closed RichRick1 closed 2 months ago
I would allow arbitrary charges with default value 1.
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?
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
This is done and tested
Description
We need to build a Hamiltonian in the following form
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:
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: