Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
JYNi16 authored Sep 6, 2022
1 parent f4539d6 commit 8431c56
Showing 1 changed file with 1 addition and 56 deletions.
57 changes: 1 addition & 56 deletions XYmodel_metropolis_python/xymodel_mc.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,5 @@
import numpy as np

import matplotlib.pylab as plt
import matplotlib.animation as animation
import matplotlib.patches as patches
from matplotlib.collections import PatchCollection
import matplotlib.cm as cm
from matplotlib.colors import Normalize


def cos(angle):
"""transforms angle from [0,1] to cos(2pi[0,1])"""
return np.cos(2 * np.pi * angle)
Expand Down Expand Up @@ -138,56 +130,9 @@ def simulate(self, steps):
self.get_Vdensity()


def visualise(sim):
X = np.arange(sim.A.size).reshape(sim.A.shape) % sim.A.shape[0]
Y = (np.arange(sim.A.size).reshape(sim.A.shape) % sim.A.shape[1]).T

U = cos(sim.A)
V = sin(sim.A)

fig, ax = plt.subplots(1, 1, figsize=(15, 15))

rects = []

# create rectangles for vortex/antivortex determination
for i in range(sim.V.shape[0]):
for j in range(sim.V.shape[1]):
rect = patches.Rectangle(xy=(i, j), height=1, width=1)
rects.append(rect)
rects = PatchCollection(rects)

# Set colors for the rectangles
col = 'RdBu'
r_cmap = plt.get_cmap(col)
r_cmap_r = plt.get_cmap(col + "_r") # eto kostil' =)
rects.set_cmap(r_cmap)
rects.set_clim(vmin=-1, vmax=1)

rects.set_animated(True)
rects.set_array(sim.V.flatten('F') / 2)
ax.add_collection(rects)

# create legend
legend_boxes = [patches.Patch(facecolor=r_cmap(0.7), label='Antiortex'),
patches.Patch(facecolor=r_cmap_r(0.7), label='Vortex')]
ax.legend(handles=legend_boxes)

# build an initial quiver plot
q = ax.quiver(X, Y, U, V, pivot='tail', cmap=plt.cm.get_cmap('hsv'), units='inches', scale=4)
fig.colorbar(q, label='Angles (2 pi)')
ax.set_xlim(-1, sim.A.shape[0])
ax.set_ylim(-1, sim.A.shape[1])
q.set_UVC(U, V, C=sim.A)

plt.show()

return q, fig, rects

if __name__=="__main__":
sim = XYMetropolis((50,50),
beta=1,
J=5,
random_state=5,
initial_state='hot')
sim.simulate(2000000)
visualise(sim)
initial_state='hot')

0 comments on commit 8431c56

Please sign in to comment.