U = [] for i in range(len(Ising_L)): arr = load(Ising_L[i]) V = Ising_L[i]**2 T.append(arr[::2,0]) A.append(arr[::2,1]) arrE.append(arr[::2,2:]/V) arrM.append(arr[1::2,2:]/V) E.append(np.mean(arrE[i],axis=1)) M.append(np.mean(arrM[i],axis=1)) errE.append(errorAll(binning,arrE[i],Binning_K[i])) errM.append(errorAll(binning,arrM[i],Binning_K[i])) U.append(binderpar(arrM[i])) print 'Finished calculations.' # PLOTS ################################################################################################### print '\n==Plots==' for bm in np.linspace(-0.14,-0.07,8): p.new(title='bm=%s'%bm,xlabel=r't*L^{-v}',ylabel=r'M*L^{bm/v}') for i in range(len(Ising_L)): X = (1-T[i]/Tc)*Ising_L[i]**(-v) Y = M[i]*Ising_L[i]**(bm/v) inx = np.abs(X)<20 p.plot(X[inx],Y[inx],'o',alpha=0.75,label='L=%s'%Ising_L[i]) p.make(ncols=2,savewindow=True) print 'Finished plots.'
E = compute_energy(x, v) print "t=%s, E=%s" % (t, E) ts.append(t) Es.append(E) # write out that a new timestep starts vtffile.write("timestep\n") # write out the coordinates of the particles for i in range(N): vtffile.write("%s %s %s\n" % (x[0, i], x[1, i], x[2, i])) # for plotting traj = np.append(traj, [x[0:2, :] - np.floor(x[0:2, :] / L) * L], axis=0) vtffile.close() p.new() for n in range(1, traj.shape[0]): i = (traj[n - 1, 0, :] - traj[n, 0, :]) ** 2 + (traj[n - 1, 1, :] - traj[n, 1, :]) ** 2 > 1 traj[n, :, i] = [None, None] p.plot(traj[:, 0, :], traj[:, 1, :], "-", lw=2, alpha=0.3) p.plot(traj[0, 0, :], traj[0, 1, :], "ko", alpha=0.5, ms=10, mew=4, label="start position") p.plot(traj[-1, 0, :], traj[-1, 1, :], "wo", alpha=0.5, ms=10, mew=4, label="end position") p.new() p.plot(ts, Es) p.make(ncols=1)
p.new(title='Mean absolute magnetization',xlabel='Temperature',ylabel=r'$\vert Magnetization \vert$') p.plot(T_exact,M_exact,label='L = 4, exact') for i in range(len(Ising_L)): p.errorbar(T[i], M[i], yerr=errM[i], label='L=%s, MC'%Ising_L[i]) #p.make(ncols=1,show=False) for i in range(len(Ising_L)): p.new(title='Frequency of energies (L=%s)'%Ising_L[i],xlabel='Energy',ylabel='Temperature') temp = (T[i]*np.ones_like(arrE[i]).T).T H, xedges, yedges = np.histogram2d(temp.flatten(), arrE[i].flatten(), bins=(len(T[i]),100)) p.imshow(H, extent=[yedges[0], yedges[-1], xedges[0], xedges[-1]], interpolation='nearest',aspect='auto',origin='lower',norm=LogNorm()) p.new(title='Frequency of magnetizations (L=%s)'%Ising_L[i],xlabel='Absolute magnetization',ylabel='Temperature') temp = (T[i]*np.ones_like(arrM[i]).T).T H, xedges, yedges = np.histogram2d(temp.flatten(), arrM[i].flatten(), bins=(len(T[i]),100)) p.imshow(H, extent=[yedges[0], yedges[-1], xedges[0], xedges[-1]], interpolation='nearest',aspect='auto',origin='lower',norm=LogNorm()) #p.make(ncols=2,show=False) for i in range(len(Ising_L)): p.new(title='Binning error (L=%s)'%Ising_L[i],xlabel='k',ylabel='error') ks = np.arange(1,800,1) error = np.empty((len(ks),len(arrE[i]))) for j in range(len(ks)): error[j] = errorAll(binning,arrE[i],ks[j]) p.plot(ks,error) p.new(title='Energy of absolute magnetization (L=%s)'%Ising_L[i],xlabel='Absolute magnetization',ylabel='Energy') [X, Y] = unique(np.array([np.round(arrM[i].ravel(),2),np.round(arrE[i].ravel(),2)]).T).T p.plot(X,Y,'o',alpha=0.1) p.make(ncols=2,show=True) print 'Finished plots.'
p.plot(ts, Es, label='Eges') p.plot(ts, Epots, label='Epot') # Temperature p.new(xlabel='time', ylabel='temperature') p.plot(ts, Ts, label='T') # Pressure p.new(xlabel='time', ylabel='pressure') p.plot(ts, Ps, label='P') # RDF datafile = open(datafilename, 'r') ts, Es, Epots, Ekins, Ts, Ps, traj2 = pickle.load(datafile) datafile.close() p.new(xlabel='distance', ylabel='probability') hist, bins = np.histogram(compute_distances(traj2[-1]), bins=np.linspace(0.8, 5, 100)) width = 0.7 * (bins[1] - bins[0]) center = (bins[:-1] + bins[1:]) / 2 hist /= (2 * np.pi * density * (bins[1] - bins[0]) * (bins[:-1] + (bins[1] - bins[0]) / 2)**2) p.bar(center, hist / N, align='center', width=width) # kA, warum erst hier durch N geteilt werden darf p.make(ncols=3) print "Finished."
# open the trajectory file vtffile = open('./plots/vmd_4_ljfluid/ljfluid.vtf', 'w') # write the structure of the system into the file: # N particles ("atoms") with a radius of 0.5 vtffile.write('atom 0:%s radius 0.5\n' % (N - 1)) vtffile.write('pbc %s %s %s\n' % (L, L, L)) # main loop f = compute_forces(x, L) while t < tmax: x, v, f = step_vv(x, v, f, dt) t += dt E = compute_energy(x, v, L) print "t=%s, E=%s" % (t, E) ts.append(t) Es.append(E) # write out that a new timestep starts vtffile.write('timestep\n') # write out the coordinates of the particles for i in range(N): vtffile.write("%s %s %s\n" % (x[0, i], x[1, i], x[2, i])) vtffile.close() p.new() p.plot(ts, Es) p.make(ncols=1)
Ts100 = compute_running_average(Ts, 100) p.new(title='Temperature (from t=100)', xlabel='time', ylabel='temperature') p.plot(ts, Ts, label='T') p.plot(ts10, Ts10, label='running av 10') p.plot(ts100, Ts100, label='running av 100') # Pressure #Average Ps10 = compute_running_average(Ps, 10) Ps100 = compute_running_average(Ps, 100) p.new(title='Pressure (from t=100)', xlabel='time', ylabel='pressure') p.plot(ts, Ps, label='P') p.plot(ts10, Ps10, label='running av 10') p.plot(ts100, Ps100, label='running av 100') # RDF #Average l = min(len(traj), 100) m = N * (N - 1) / 2 dist = np.empty(l * m) for i in range(1, l + 1): dist[(i - 1) * m:i * m] = compute_distances(traj[-i]) p.new(title='RDF (last 100 trajectories)', xlabel='distance', ylabel='probability') p.hist(dist, bins=100, range=(0.8, 5), normed=True, log=False, label='RDF') p.make(ncols=2) print "Finished."
# main loop while t < tmax: x, v, f = step_vv(x, v, f, dt) t += dt traj.append(x.copy()) Es.append(compute_energy(x, v)) # write out that a new timestep starts vtffile.write('timestep\n') # write out the coordinates of the particles for i in range(N): vtffile.write("%s %s %s\n" % (x[0,i], x[1,i], x[2,i])) vtffile.close() traj = np.array(traj) # ==== PLOTTING ==== # plot the trajectory p.new(aspect='equal') for i in range(N): p.plot(traj[:,0,i], traj[:,1,i], label='%s'%i) # plot the total energy p.new() p.plot(Es, label='energy') p.make()
# main loop while t < tmax: x, v, f = step_vv(x, v, f, dt) t += dt traj.append(x.copy()) Es.append(compute_energy(x, v)) # write out that a new timestep starts vtffile.write('timestep\n') # write out the coordinates of the particles for i in range(N): vtffile.write("%s %s %s\n" % (x[0,i], x[1,i], x[2,i])) vtffile.close() traj = np.array(traj) # ==== PLOTTING ==== # plot the trajectory p.new(aspect='equal') traj -= np.floor(traj/L)*L #BECAUSE OF PBC for i in range(N): p.plot(traj[:,0,i], traj[:,1,i], ",", label='%s'%i) # plot the total energy p.new() p.plot(Es, label='energy') p.make()
H, xedges, yedges = np.histogram2d(temp.flatten(), np.log10((1/np.sum(arrayP,axis=1)*arrayP.T*len(arrayP[1])).T).flatten(), bins=(len(T),100)) p.imshow(H, extent=[yedges[0], yedges[-1], xedges[0], xedges[-1]], interpolation='nearest',aspect='auto',origin='lower') ''' p.new(title='Frequency of energies as a function of temperature',xlabel='Energy',ylabel='Temperature') temp = (T*np.ones_like(arrayE).T).T H, xedges, yedges = np.histogram2d(temp.flatten(), arrayE.flatten(), bins=(len(T),100)) p.imshow(H, extent=[yedges[0], yedges[-1], xedges[0], xedges[-1]], interpolation='nearest',aspect='auto',origin='lower') p.new(title='Frequency of magnetizations as a function of temperature',xlabel='Magnetization',ylabel='Temperature') temp = (T*np.ones_like(arrayM).T).T H, xedges, yedges = np.histogram2d(temp.flatten(), arrayM.flatten(), bins=(len(T),100)) p.imshow(H, extent=[yedges[0], yedges[-1], xedges[0], xedges[-1]], interpolation='nearest',aspect='auto',origin='lower') p.new(title='Binning error',xlabel='k',ylabel='error') ks = np.arange(1,300,1) error = np.empty((len(ks),len(arrayE))) for i in range(len(ks)): error[i] = errorAll(binning,arrayE,ks[i]) p.plot(ks,error) p.new(title='Difference between binning and jackknife error',xlabel='k',ylabel='error') ms = np.arange(1,300,1) error = np.empty((len(ms),len(arrayE))) for i in range(len(ms)): error[i] = errorAll(jackknife,arrayE,ms[i])-errorAll(binning,arrayE,ks[i]) p.plot(ms,error) print 'Finished plots.' p.make(ncols=2)
H, xedges, yedges = np.histogram2d(temp.flatten(), arrM[i].flatten(), bins=(len(T[i]), 100)) p.imshow(H, extent=[yedges[0], yedges[-1], xedges[0], xedges[-1]], interpolation='nearest', aspect='auto', origin='lower', norm=LogNorm()) #p.make(ncols=2,show=False) for i in range(len(Ising_L)): p.new(title='Binning error (L=%s)' % Ising_L[i], xlabel='k', ylabel='error') ks = np.arange(1, 800, 1) error = np.empty((len(ks), len(arrE[i]))) for j in range(len(ks)): error[j] = errorAll(binning, arrE[i], ks[j]) p.plot(ks, error) p.new(title='Energy of absolute magnetization (L=%s)' % Ising_L[i], xlabel='Absolute magnetization', ylabel='Energy') [X, Y] = unique( np.array([np.round(arrM[i].ravel(), 2), np.round(arrE[i].ravel(), 2)]).T).T p.plot(X, Y, 'o', alpha=0.1) p.make(ncols=2, show=True) print 'Finished plots.'
p.plot(tpart[-1, 0, n], tpart[-1, 1, n], "o", c=colors[n], alpha=0.8, ms=7, mew=2) # Total energy p.new(xlabel="time", ylabel="energy") p.plot(ts, Es, label="Eges") # Energies p.new(xlabel="time", ylabel="energy") p.plot(ts, Ekins, label="Ekin") p.plot(ts, Es, label="Eges") p.plot(ts, Epots, label="Epot") # Temperature p.new(xlabel="time", ylabel="temperature") p.plot(ts, Ts, label="T") # Pressure p.new(xlabel="time", ylabel="pressure") p.plot(ts, Ps, label="P") # RDF datafile = open(datafilename, "r") ts, Es, Epots, Ekins, Ts, Ps, traj2 = pickle.load(datafile) datafile.close() p.new(xlabel="distance", ylabel="probability") p.hist(compute_distances(traj2[-1]), bins=100, range=(0.8, 5), normed=True, log=False, label="RDF") p.make(ncols=3) print "Finished."
Ts10 = compute_running_average(Ts, 10) Ts100 = compute_running_average(Ts, 100) p.new(title="Temperature (from t=100)", xlabel="time", ylabel="temperature") p.plot(ts, Ts, label="T") p.plot(ts10, Ts10, label="running av 10") p.plot(ts100, Ts100, label="running av 100") # Pressure # Average Ps10 = compute_running_average(Ps, 10) Ps100 = compute_running_average(Ps, 100) p.new(title="Pressure (from t=100)", xlabel="time", ylabel="pressure") p.plot(ts, Ps, label="P") p.plot(ts10, Ps10, label="running av 10") p.plot(ts100, Ps100, label="running av 100") # RDF # Average l = min(len(traj), 100) m = N * (N - 1) / 2 dist = np.empty(l * m) for i in range(1, l + 1): dist[(i - 1) * m : i * m] = compute_distances(traj[-i]) p.new(title="RDF (last 100 trajectories)", xlabel="distance", ylabel="probability") p.hist(dist, bins=100, range=(0.8, 5), normed=True, log=False, label="RDF") p.make(ncols=2, savewindow=False) print "Finished."
p.plot(acfi2[0:100], label='acf of kinetic energy') p.plot(acfi3[0:100], label='acf of temperature') p.plot(acfi4[0:100], label='acf of pressure') # plot blocking tau over block size k p.new(xlabel='block size k', ylabel='blocking tau') p.plot(bts0, label='bt of total energy') p.plot(bts1, label='bt of potential energy') p.plot(bts2, label='bt of kinetic energy') p.plot(bts3, label='bt of temperature') p.plot(bts4, label='bt of pressure') # plot blocking eem over block size k p.new(xlabel='block size k', ylabel='est. err. of mean value') p.plot(ems0, label='eem of total energy') p.plot(ems1, label='eem of potential energy') p.plot(ems2, label='eem of kinetic energy') p.plot(ems3, label='eem of temperature') p.plot(ems4, label='eem of pressure') # plot jke over block size k p.new(xlabel='block size k', ylabel='jackknife error') p.plot(jks0, label='jke of total energy') p.plot(jks1, label='jke of potential energy') p.plot(jks2, label='jke of kinetic energy') p.plot(jks3, label='jke of temperature') p.plot(jks4, label='jke of pressure') p.make(ncols=3, savewindow=True) print "Finished..."