I am trying to construct a Hamiltonian with long range hoppings.
In order to find out the mechanics of finite functions in OSMPS I have started playing with a simple toy model:
There are only 4 sites. Every site, except site #0 should be coupled only with site #0.
Lets say, sites are coupled with the following weights:
0 ->1 : 1.0
0 ->2 : 0.5
0 ->3 :0.25
In order to encode this type of Hamiltonian I have used the following function:
And my reasoning is, that for NN (bond) terms, there are 3 possible couplings (0->1, 1->2, 2->3); for NNN terms there are 2 possible couplings (0->2, 1->2) and for NNNN terms there are only one possible coupling (0->3)
Unfortunately this does not work. Could anyone explain me how to define site dependent couplings for the FF term?
Last edit: MrModern 2015-10-29
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It does appear that there was an off-by-one indexing error in the
FiniteFunction code using site-dependent parameters that I just fixed. You
should download the most recent version from the svn and give it a try.
Please also note that the length of the hamiltonian parameter array t
should be L-1. Given an array t of this length and an array f passed into
the FiniteFunction method, the resulting Hamiltonian term is
\sum_{i,i+1<=j<=i+r_c} t_i f_{j-i} A_i B_j
where A and B are the two operators passed in to the AddMPOTerm (the
routine will also automatically add the Hermitian conjugate if A and B are
not Hermitian). A vector of ts only changes the relative weights of the
Hamiltonian term depending on where the leftmost operator in the
finite-length string originates. Hope this helps.
I am trying to construct a Hamiltonian with long range hoppings.
In order to find out the mechanics of finite functions in OSMPS I have
started playing with a simple toy model:
There are only 4 sites. Every site, except site #0 should be coupled only
with site #0.
Lets say, sites are coupled with the following weights:
0 ->1 : 1.0
0 ->2 : 0.5
0 ->3 :0.25
In order to encode this type of Hamiltonian I have used the following
function:
t=np.array([1,0,0,1,0,1])
And my reasoning is, that for NN (bond) terms, there are 3 possible couplings (0->1, 1->2, 2->3); for NNN terms there are 2 possible couplings (0->2, 1->2) and for NNNN terms there are only one possible coupling (0->3)
Unfortunately this does not work. Could anyone explain me how to define
site dependent couplings for the FF term?
Thank you for reply. It seems to be working alright.
In OSMPS manual it is written that FiniteFunction only allows at most 6 lattice spacings, but it seems that this limit has been lifted. Could you confirm this?
Thanks,
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
In the manual, the restriction to 6 lattice spacings is for the specific
example given. You are correct that the range of the FiniteFunction
operator can be arbitrarily large (though more resources are required for a
larger range).
Thank you for reply. It seems to be working alright.
In OSMPS manual it is written that FiniteFunction only allows at most 6
lattice spacings, but it seems that this limit has been lifted. Could you
confirm this?
Dear all,
I am trying to construct a Hamiltonian with long range hoppings.
In order to find out the mechanics of finite functions in OSMPS I have started playing with a simple toy model:
There are only 4 sites. Every site, except site #0 should be coupled only with site #0.
Lets say, sites are coupled with the following weights:
0 ->1 : 1.0
0 ->2 : 0.5
0 ->3 :0.25
In order to encode this type of Hamiltonian I have used the following function:
My hparam:
And my reasoning is, that for NN (bond) terms, there are 3 possible couplings (0->1, 1->2, 2->3); for NNN terms there are 2 possible couplings (0->2, 1->2) and for NNNN terms there are only one possible coupling (0->3)
Unfortunately this does not work. Could anyone explain me how to define site dependent couplings for the FF term?
Last edit: MrModern 2015-10-29
Hello,
It does appear that there was an off-by-one indexing error in the
FiniteFunction code using site-dependent parameters that I just fixed. You
should download the most recent version from the svn and give it a try.
Please also note that the length of the hamiltonian parameter array t
should be L-1. Given an array t of this length and an array f passed into
the FiniteFunction method, the resulting Hamiltonian term is
\sum_{i,i+1<=j<=i+r_c} t_i f_{j-i} A_i B_j
where A and B are the two operators passed in to the AddMPOTerm (the
routine will also automatically add the Hermitian conjugate if A and B are
not Hermitian). A vector of ts only changes the relative weights of the
Hamiltonian term depending on where the leftmost operator in the
finite-length string originates. Hope this helps.
-Michael
On Thu, Oct 29, 2015 at 11:05 AM, "Mantas Račiūnas" mrmodern@users.sf.net
wrote:
Dear Michael,
Thank you for reply. It seems to be working alright.
In OSMPS manual it is written that FiniteFunction only allows at most 6 lattice spacings, but it seems that this limit has been lifted. Could you confirm this?
Thanks,
Hi,
In the manual, the restriction to 6 lattice spacings is for the specific
example given. You are correct that the range of the FiniteFunction
operator can be arbitrarily large (though more resources are required for a
larger range).
-Michael
On Sun, Nov 1, 2015 at 9:21 AM, MrModern mrmodern@users.sf.net wrote: