def Exp2_6_3(): gr = SquareGrid(20, 0.5) numberOfAttempts = 0 attempts = [1e1, 1e2, 1e3, 1e4, 25000] for att in attempts: while numberOfAttempts < att: gr.metro() numberOfAttempts += 1 log.info(f"At attempts {numberOfAttempts}") log.info("Average momentum: {}".format(gr.getAverageMagnetization())) log.info("Average energy: {}".format(gr.getAverageEnergy())) gr.show()
def Exp2_6_5(): print(" 2.6.5.\n") print( "Different initial configurations reach patchlike configurations, but " + "due to the random nature, no one is alike. Entropy decreases from " + "the first to the second step, but between the third and last, this " + "is doesn't seem to hold.") np.random.seed(DEFAULT_SEEDS[0]) seeds = np.random.randint(2**30, size=(5, )) attempts = [100, 1000, 25000, 100000] for i in range(0, len(seeds)): seed = seeds[i] gr = SquareGrid(20, 3.0, seed=seed) numberOfAttempts = 0 f, ax = plt.subplots(nrows=1, ncols=len(attempts), sharey=True) print(f"With seed {seed}") for j in range(0, len(attempts)): att = attempts[j] while numberOfAttempts < att: gr.metro() numberOfAttempts += 1 #print(f"At attempts {numberOfAttempts}") #print("Average momentum: {}".format(GetAverageMomentum(gr))) #print("Average energy: {}".format(GetAverageEnergy(gr))) ax[j].set_title(f"At {numberOfAttempts} \nattempts") gr.plot(axis=ax[j]) plt.show()
def CreateSeriesWolff(seriesname="series.gif", gridsize=100, redT=1.0, frames=100, framechanges=100): grid = SquareGrid(gridsize, redT, DEFAULT_SEEDS[0]) ims = [] fig = plt.figure(figsize=(15, 15)) for i in range(frames): for j in range(framechanges): grid.wolff() ims.append([plt.imshow(grid.grid, clim=(0, 1)), plt.text(0.9, 1.2, i)]) ani = animation.ArtistAnimation(fig, ims, interval=100, blit=True, repeat_delay=0) ani.save(seriesname, writer=PillowWriter(fps=10))
def Exp2_6_1(): gr = SquareGrid(20, 5.0) numberOfAttempts = 0 attempts = [1e1, 1e2, 1e3, 35000] for att in attempts: while numberOfAttempts < att: gr.metro() numberOfAttempts += 1 log.info(f"At attempts {numberOfAttempts}") gr.show()
def Exp2_6_4(): print(" 2.6.4. At reduced temperature 0.\n") print( "At T=0 it converges to plainly +1 or -1, so it is not that interesting.\n\ Anyway:") gr = SquareGrid(20, 0.0) numberOfAttempts = 0 attempts = [1e1, 1e2, 1e3, 1e4, 25000] for att in attempts: while numberOfAttempts < att: gr.metro() numberOfAttempts += 1 log.info(f"At attempts {numberOfAttempts}") log.info("Average momentum: {}".format(gr.getAverageMagnetization())) log.info("Average energy: {}".format(gr.getAverageEnergy())) gr.show()
def ShowAnimate(gridsize=300, redT=5.0, frames=100, framechanges=300): seed = random.seed(DEFAULT_SEEDS[0]) for i in range(20): seed = random.randint(0, 1e9) fig, ax = plt.subplots(figsize=(15, 15)) grid = SquareGrid(gridsize, redT, seed) im = ax.imshow(grid.grid, clim=(0, 1)) def update(frame): for j in range(framechanges): grid.wolff() #im = ax.imshow(grid.grid, clim=(0, 1)) if True or (frame % 50) == 0: frame = frame im.set_data(grid.grid) #plt.text(0.2, 0.2, frame) return (im, ) ani = animation.FuncAnimation(fig, update) #, frames=range(1000)) plt.show() return ani