Hard spheres coupling.py
From Werner KRAUTH
(Difference between revisions)
| Revision as of 21:52, 12 June 2024 Werner (Talk | contribs) ← Previous diff |
Current revision Werner (Talk | contribs) |
||
| Line 1: | Line 1: | ||
| + | ==Context== | ||
| + | This page is part of my [[BegRohu_Lectures_2024|2024 Beg Rohu Lectures]] on "The second Markov chain revolution" at the [https://www.ipht.fr/Meetings/BegRohu2024/index.html Summer School] "Concepts and Methods of Statistical Physics" (3 - 15 June 2024). | ||
| + | |||
| + | ==Python program== | ||
| + | |||
| import random | import random | ||
Current revision
[edit]
Context
This page is part of my 2024 Beg Rohu Lectures on "The second Markov chain revolution" at the Summer School "Concepts and Methods of Statistical Physics" (3 - 15 June 2024).
[edit]
Python program
import random
N = 4
L1 = [[0.2, 0.2], [0.7, 0.2], [0.2, 0.7], [0.7, 0.7]] # replace by 1000 valid
L2 = [[0.3, 0.3], [0.8, 0.3], [0.3, 0.8], [0.8, 0.8]] # random configurations
# of N particles
sigma = 0.1
sigma_sq = sigma ** 2
delta = 0.1
iter = 0
while True:
iter += 1
k = random.randint(0, N - 1)
b = [random.uniform(delta, 1.0 - delta), random.uniform(delta, 1.0 - delta)]
a = L1[k]
min_dist = min((b[0] - c[0]) ** 2 + (b[1] - c[1]) ** 2 for c in L1 if c != a)
box_cond = min(b[0], b[1]) < sigma or max(b[0], b[1]) > 1.0 - sigma
if not (box_cond or min_dist < 4.0 * sigma ** 2):
a[:] = b
a = L2[k]
min_dist = min((b[0] - c[0]) ** 2 + (b[1] - c[1]) ** 2 for c in L2 if c != a)
box_cond = min(b[0], b[1]) < sigma or max(b[0], b[1]) > 1.0 - sigma
if not (box_cond or min_dist < 4.0 * sigma ** 2):
a[:] = b
print(L1)
print(L2)
print()
if L1 == L2:
print(iter)
break
