Closed czanoci closed 4 years ago
Hi Cristian, I'm sorry for the late reply.
DSQSS/DLA can treat three or more sites interactions by editing hamiltonian.toml and lattice.dat.
https://issp-center-dev.github.io/dsqss/manual/v2.0.1/en/dla/users-manual/input_standard.html#hamiltonian-toml-file
https://issp-center-dev.github.io/dsqss/manual/v2.0.1/en/dla/users-manual/input_standard.html#lattice-toml-file-lattice-toml
The former specifies the elements of the local hamiltonian (e.g. <+++|SxSzSz|-++> = 0.125
) and the latter does the sites where the local hamiltonians will be operated.
However, I think that this model, unfortunately, seems to suffer from the infamous sign problem...
Yuichi
Hi Yuichi,
Thank you for your reply! I will give this a try.
The model doesn't actually have a sign problem in the regime of parameters that I'm interested in. For example, the three-body term also has a transverse field, so that I am actually trying to implement something like -Sx(1+SzSz). So as long as it can deal with transverse fields and three-body terms, it should be fine.
Cristian
I see, there is no sign problem, great!
I actually have one more question. I think I'm missing something about the hamiltonian.toml file.
For now, I am just trying to a simple transverse-field Ising model. Using the available examples, I have implemented the Hamiltonian as follows:
name = "S=1/2 TFIM"
[[interactions]]
N = [ 2, 2,]
type = 0
nbody = 2
[[interactions.elements]]
istate = [ 0, 1,]
fstate = [ 0, 1,]
value = 1.0
[[interactions.elements]]
istate = [ 1, 0,]
fstate = [ 1, 0,]
value = 1.0
[[interactions.elements]]
istate = [ 0, 0,]
fstate = [ 0, 0,]
value = -1.0
[[interactions.elements]]
istate = [ 1, 1,]
fstate = [ 1, 1,]
value = -1.0
[[sites]]
values = [ -0.5, 0.5,]
type = 0
N = 2
[[sites.elements]]
istate = [ 1,]
fstate = [ 0,]
value = 1.0
[[sites.elements]]
istate = [ 0,]
fstate = [ 1,]
value = 1.0
[[sites.sources]]
istate = [ 1,]
fstate = [ 0,]
value = 0.5
[[sites.sources]]
istate = [ 0,]
fstate = [ 1,]
value = 0.5
I compile it with the built-in hypercubic lattice (either 1D or 2D) using the command
dla_alg -l lattice.dat -h hamiltonian.toml
and get the following error trace
Traceback (most recent call last):
File "/n/home05/czanoci/bin/dla_alg", line 8, in <module>
sys.exit(main())
File "/n/home05/czanoci/lib/python2.7/site-packages/dsqss/dla_alg.py", line 168, in main
distance_only=args.distance_only,
File "/n/home05/czanoci/lib/python2.7/site-packages/dsqss/dla_alg.py", line 48, in dla_alg
alg = Algorithm(ham, prob_kernel=prob_kernel, ebase_extra=ebase_extra)
File "/n/home05/czanoci/lib/python2.7/site-packages/dsqss/algorithm.py", line 340, in __init__
for hamint in ham.indeed_interactions
File "/n/home05/czanoci/lib/python2.7/site-packages/dsqss/algorithm.py", line 226, in __init__
ic = self.make_initialconfiguration(st, inleg, instate)
File "/n/home05/czanoci/lib/python2.7/site-packages/dsqss/algorithm.py", line 282, in make_initialconfiguration
W = self.prob_kernel(probs)[incomeindex, :]
File "/n/home05/czanoci/lib/python2.7/site-packages/dsqss/prob_kernel.py", line 73, in suwa_todo
while target[indices[j]] == 0.0:
Do you know what might be the problem? I can't quite understand what's missing...
Thank you!
Suwa-Todo method, which is the default kernel for calculating transition probability, sometimes fails to calculate (maybe this failure comes from not the algorithm but our implementation). In this case, other kernels such as the heat bath method work. https://issp-center-dev.github.io/dsqss/manual/v2.0.1/en/dla/users-manual/generator.html#algorithm-file-generator-dla-alg
I was able to successfully compile it with 'heat bath' and 'metropolis' algorithms, but neither of them give the correct answer. Even with 10,000 iterations, the ground state energy that the algorithm finds just completely ignores the transverse field.
Thank you for reporting, I reproduced the problem. I found that DSQSS/DLA does not hold ergodicity for models with a transverse field as shown in the following sketch.
(Treating the transverse field in the two-site operator (e.g., Ising term SzSz) cannot solve this problem)
I think that to enable the worm heads to represents not only S+/S- but also the identity can solve this, but this change needs a bit widely fixes in the code (e.g., the probabilities of pair-creation/pair-annihilation of worm heads.) Of course, this is a very important problem, but to be honest, I have little time to tackle this...
Thank you for looking into this! I completely understand that dealing with the transverse field is a whole separate issue that requires modifying the code.
Hi!
Thank you for developing this package. I have a quick question about the supported functionality.
I am trying to study a generalization of a transverse-field Ising model on the honeycomb lattice with additional three- and four-spin interactions (e.g S_xS_zS_z). These extra interactions consist of Pauli S_x and S_z operators which act on three or four neighboring sites. Is either DLA or PMWA capable of solving such models?
Thank you!
Cristian