Closed HamidArianZad closed 1 year ago
std.toml
parameter.general.tensor_save
and parameter.general.tensor_load
parameters in input fileTeNeS represents the total Hamiltonian by the sum of two-site local Hamiltonians, and hence the one-site terms like Zeeman term are split into two-site terms on the adjacent bonds: H_{ij} = J S_i S_j + h/z (S_i^z + S_j^z), where z is the coordinate number. While z of the kagome lattice is 4, z of your lattice is 3. Did you fix this difference? I guess this is the reason why the transition field is too high in TeNeS result (please check by multiplying the magnetic field by 3/4 in your plot).
I used Lanczos algorithm to diagonalize the Hamiltonian of my lattice with periodic boundary conditions. m_T is the total magnetization of my favorite lattice, and the case that I would like to obtain similarly by using TeNeS as well. Please do not consider m_I and m_H.
All exchange interactions in my model are antiferromagnetic that's why I thought that considering the term 'antiferro' as initial state may deliver correct results for the ground-state phase diagram of the model.
In TeNeS results, Blue line is the magnetization of my lattice with 24 sites, where I considered the simple.toml as mentioned in previous massage (with L=2, W=3). I also considered num_step_table = [3000] that nicely illustrated the spin liquid phase during jumps. Red line is the magnetization of my lattice with 16 sites and num_step_table = [1000].
In tenes_simple file, part Hamiltonian, I found that you used open boundary conditions as:
**while not it.finished:**
in1, in2, out1, out2 = it.multi_index
val = 0.0
val += Jz * Sz[in1, out1] * Sz[in2, out2]
val += Jx * Sx[in1, out1] * Sx[in2, out2]
val += Jy * np.real(Sy[in1, out1] * Sy[in2, out2])
val -= hz * (Sz[in1, out1] * E[in2, out2] + E[in1, out1] * Sz[in2, out2])
val -= hx * (Sx[in1, out1] * E[in2, out2] + E[in1, out1] * Sx[in2, out2])
val -= hy * (Sy[in1, out1] * E[in2, out2] + E[in1, out1] * Sy[in2, out2])
val -= D * (
Sz[in1, out1] ** 2 * E[in2, out2] + E[in1, out1] * Sz[in2, out2] ** 2
)
SS[in1, in2, out1, out2] = (
Sz[in1, out1] * Sz[in2, out2]
+ Sx[in1, out1] * Sx[in2, out2]
+ np.real(Sy[in1, out1] * Sy[in2, out2])
)
ham[in1, in2, out1, out2] = val
it.iternext()
ham += B * SS ** 2
return ham
While I used periodic boundary conditions in Lanczos algorithm. Can I switch open boundary conditions to periodic boundary conditions in tenes_simple?
This code snippet calculates the matrix element of a local Hamiltonian on a bond, and so this does not relate with the boundary condition. TeNeS treats an infinite lattice by using the CTMRG method (of course, some periodicity (translational symmetry) is assumed). https://issp-center-dev.github.io/TeNeS/manual/master/en/html/algorithm/algorithms.html#contraction-of-itps
Dear TeNeS group,
I would like to obtain a stright results for the magnetization of a special lattice (see attached figure) by means of TeNeS.
The shaded region is a unit block including 56 S-1/2 sites that repeats throughout the lattice. Unfortunately I obtain inconsistent results for the magnetization that are quite different from exact results. I checked all bonds written in input files. All of them reproduced correctly according to the above lattice structure. To consider empty circles as dummy sites, I considered just one bond between them and their +x neighbor sites as J2 and then in simple.toml file I supposed J2 = 0. Is this consideration correct?
In this model, some of sites have 6 exchange interactions with their neighboring sites (red lines) while others have 3 interactions with their adjacent sites. Does TeNeS support this kind of model? Or, for geting correct results from TeNeS package all connections between all sites of the introduced lattice should have the same nubmer?
To consider empty circles as dummy sites, I considered just one bond between them and their +x neighbor sites as J2 and then in simple.toml file I supposed J2 = 0. Is this consideration correct?
Yes, and you need not add bonds (interaction) to dummy sites.
In this model, some of sites have 6 exchange interactions with their neighboring sites (red lines) while others have 3 interactions with their adjacent sites. Does TeNeS support this kind of model?
TeNeS (strictly speaking, tenes_std
) can deal with such a lattice (the coordinate number is not uniform).
Please split the full Hamiltonian into a summation of bond Hamiltonians.
In this splitting, one-site terms such as Zeeman terms are absorbed into adjacent two-site terms (Heisenberg term).
To avoid double-counting, the value of the magnetic field in one-site terms should be divided by the coordinate number, z.
From the experience of one of the developers, to use only bond-ITE operators converges faster than to use both bond-iTE and site-ITE, it is why the current version of tenes
accepts only bond-ITE operators.
From the viewpoint of usability, I think that it would be better to make tenes_std
accept site hamiltonian and tenes
accept site-ITE operators, and so I will implement it in the (near) future.
I close this because it has been one year since the last comment.
Dear TeNeS group,
I have simulated the magnetization of my favorite 2D spin-1/2 model (below figure) by using TeNeS. I also simulated the same magnetization by using other method that could reproduced nicely the ground-state phase diagram of the model. By comparing obtained results from the both methods, I found that the TeNeS results do not reproduce the ground-state phase diagram of my model and they are not compatible with that of obtained from the other method. The model is:
As you recommended me, I made the simple.toml file for this model as:
[parameter] [parameter.general]
[parameter.simple_update] num_step = 1000 tau = 0.01
[parameter.full_update] num_step = 0 tau = 0.01
[lattice] type = "kagome lattice" L = 2 W = 2 initial = "ferro" virtual_dim = 2
[model] type = "spin" J = 1.0
However, my model is antiferromagnetic, hence I changed the term 'ferro' to 'antiferro'. I added ctm parameters to the simple.toml as well.
[parameter.ctm] iteration_max = 100 dimension = 10
Also, according to your advisement I used the kagome lattice for introducing my model to TeNeS. I tested both model in below figure:
In fact, I changed the lattice class of kagome lattice in tenes_simple as:
class KagomeLattice(Lattice): def init(self, param: Dict[str, Any]): super().init(param) self.type = "kagome lattice" self.z = 4
The results obtained from TeNeS simulations for J = 1 (and Delta = 1) is as following figure for 16 sites (also for 24 sites is very similar):
While the results obtained from other method is as:
in which magnetization jumps and plateaus of total magnetization m_T (black curves) occur at different magnetic fields and different incommensurate values M/M_s. I would be thankful to you if help me to fix this problem.
All the best,