SSEP coupling.py

From Werner KRAUTH

Revision as of 20:00, 12 June 2024; view current revision
←Older revision | Newer revision→
Jump to: navigation, search
import math
import random
Ntrials = 100

for NPart in [8, 16, 32, 64]:
    NSites = 2 * NPart
    Coupling  = []
    for Iter in range(Ntrials):
        ConfLow = {-1:-1, NPart: NSites}; ConfHigh = {-1:-1, NPart: NSites}
        for k in range(NPart):
            ConfLow[k] = k
            ConfHigh[NPart - 1 - k] = NSites - 1 - k
        iter = 0
        while True:
            iter += 1
            Active = random.randint (0, NPart - 1)
            sigma = random.choice([-1, 1])
            if ConfLow[Active + sigma] != ConfLow[Active] + sigma: ConfLow[Active] += sigma
            if ConfHigh[Active + sigma] != ConfHigh[Active] + sigma: ConfHigh[Active] += sigma
            CLow = [ConfLow[k] for k in range(NPart)]
            CHigh = [ConfHigh[k] for k in range(NPart)]
            for k in range(NPart):
                if CLow[k]> CHigh[k]: print(Error)
            if ConfLow == ConfHigh:
                Coupling.append(iter / NPart ** 3 / math.log(NPart))
                break
    print(NPart, sum(Coupling) / len(Coupling))


8 1.2698 16 1.1993 32 1.1190 64 1.1028

Personal tools