Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Non local Hamiltonian #164

Open
paolostornati opened this issue Mar 1, 2023 · 2 comments
Open

Non local Hamiltonian #164

paolostornati opened this issue Mar 1, 2023 · 2 comments

Comments

@paolostornati
Copy link

What is your issue?

I am trying to implement a Hamiltonian in the MPO formalism the include 3-4 body terms that are almost local.
The maximal distance is 5 lattice points.
As far as I understood, this is not possible in quimb.
Am I correct?
Thanks in advance for any help

@jcmgray
Copy link
Owner

jcmgray commented Mar 2, 2023

Hi @paolostornati. There is actually fledgling, experimental support in the quimb.experimental.operatorbuilder.py submodule. You can define arbitrary operators as sums of strings of single site operators, and it can among other things, build the MPO (though currently not guaranteed to be optimal bond dimension wise).

Do try it out, but be wary that its still experimental, and results should be checked thoroughly...

@fretchen
Copy link

I started to wonder if this package could be used to simulate the dynamics of this paper in the case of 51 qubits. They claim to have used MPS, but I could not find any code. The idea would then be to find a way to perform calculations that are similiar to those, but on much larger systems...

I thought about a way to implement the third term of the Hamiltian like this:

builder = SpinHam1D(S=1 / 2)
phi = 1
num_modes = 3

for i in range(num_modes):
    for j in range(i + 1, num_modes):
        coeff = phi / np.abs(i - j) ** 6
        builder[i,j] += coeff, 'Z', 'Z'
        builder[i] += -coeff / 2, 'Z'
        builder[j] += -coeff / 2, 'Z'

However, then I get the error that only nearest neighbors are implemented. Is this issue going in the same direction and could be possible to be implemented with the operators that were mentionned above ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants