t-J-U-V model
Closed this issue · 4 comments
Description
We need to build a Hamiltonian in the following form
The first three terms lines (1) - (2) are described by PPP model, with
In the line (6) I renamed term
@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
I would allow arbitrary charges with default value 1.
Testing
There are few ways to can test a software:
- API tests, when we need to test that code runs for different parameters and their combinations. For example, mix and match different types of symmetries, sparsity of output, input type of connectivity matrix etc. Here, it's also a good idea to come up with some system, lets say 4 site system in spatial orbital, try to make it hamiltonian "by hand" and than make it as a test.
- Combinations of system that has already been testes separately: for example Hubbard and Heisenberg models that will be combined into the new t-JUV class.
- Physically meaningful systems that corresponds to t-JUV model. Ideally we need to find papers, where those models has been used, and their energy spectrum has been reported.
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