SSEP coupling.py
From Werner KRAUTH
(Difference between revisions)
| Revision as of 20:00, 12 June 2024 Werner (Talk | contribs) ← Previous diff |
Revision as of 20:01, 12 June 2024 Werner (Talk | contribs) Next diff → |
||
| Line 27: | Line 27: | ||
| print(NPart, sum(Coupling) / len(Coupling)) | print(NPart, sum(Coupling) / len(Coupling)) | ||
| - | + | N t_coup / N^3 / log N | |
| - | 8 1.2698 | + | 8 1.2698 |
| - | 16 1.1993 | + | 16 1.1993 |
| - | 32 1.1190 | + | 32 1.1190 |
| - | 64 1.1028 | + | 64 1.1028 |
Revision as of 20:01, 12 June 2024
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))
N t_coup / N^3 / log N 8 1.2698 16 1.1993 32 1.1190 64 1.1028
