Skip to content

Running multiple jobs and convergence issues in TeNeS #98

Description

@HamidArianZad

Dear TeNeS Developers,

  1. I would like to run multiple jobs simultaneously in TeNeS, but I am encountering an issue where TeNeS only works when a single job is running. When I attempt to start a second job, TeNeS stops entirely, and even the first job halts. Could you please advise on how to run multiple jobs concurrently?

  2. Additionally, I am working on a frustrated 2D spin-1/2 lattice. When I increase the virtual bond dimension beyond 3 (D > 3), I am unable to achieve convergence, even with a large number of simple update steps (num_step_table = 4000) and CTM parameters (iteration_max = 500, dimension >= 25). The mode is depicted in following figure:

Model1

Since the TeNeS does not support different exchange couplings in this model, I considered J0 = J1 and use modified class square lattice :

class SquareLattice(Lattice):
   def __init__(self, param: Dict[str, Any]):
       super().__init__(param)
       self.type = "square lattice"
       self.zs = [[1, 1, 0], [0, 1, 0], [0, 0, 0]]
       #
       self.L *= 2
       self.W *= 2
       L, W = self.L, self.W
       self.sublattice = [SubLattice([self.vdim] * 4),
                          SubLattice([self.vdim] * 4),
                          SubLattice([self.vdim] * 4),
                          SubLattice([self.vdim] * 4)]

       for source in range(L * W):
           x, y = index2coord(source, L)
           #
           # sublattice A
           #
           if x % 2 == 0 and y % 2 == 0:
               self.sublattice[0].add_site(source)
               self.coords.append(np.array([x, y]))
               # 1st neighbors
               self.bonds[0][0].append(Bond(source, 1, 0))
               self.bonds[0][1].append(Bond(source, 0, 1))
           #
           # sublattice B
           #
           elif x % 2 == 1 and y % 2 == 0:
                 self.sublattice[1].add_site(source)
                 self.coords.append(np.array([x, y]))
                 # 1st neighbors
                 self.bonds[0][1].append(Bond(source, 0, 1))
           #
           # sublattice C
           #
           elif x % 2 == 0 and y % 2 == 1:
                 self.sublattice[2].add_site(source)
                 self.coords.append(np.array([x, y]))
                 # 2nd neighbors
                 self.bonds[1][1].append(Bond(source, 1, -1))
           #
           # sublattice D
           #
           elif x % 2 == 1 and y % 2 == 1:
                 self.sublattice[3].add_site(source)
                 self.coords.append(np.array([x, y]))
                 # 1st neighbors
                 self.bonds[0][0].append(Bond(source, 1, 0))
                 # 2nd neighbors
                 self.bonds[1][1].append(Bond(source, -1, 1))

to identify my lattice. Following inputs in simple.toml file is considered:

[parameter]
[parameter.general]
is_real = true

[parameter.simple_update]
num_step = 200
tau = 0.01

[parameter.full_update]
num_step = 0
tau = 0.01

[parameter.ctm]
iteration_max = 200
dimension = 10

[lattice]
type = "square lattice"
L = 2
W = 2
virtual_dim = 2
initial = "random"

[model]
type = "spin"
J0 = 1.0
J1 = 1.0
"J1'" = 1.0

The code seems work well for D<=3 and L, W<=3.

Any advice on resolving these issues would be greatly appreciated.

Thank you for your support.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions