Beispiel #1
0
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.'
Beispiel #2
0
    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)
Beispiel #3
0
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.'
Beispiel #4
0
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."
Beispiel #5
0
# 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)
Beispiel #6
0
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."
Beispiel #7
0
# 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()
Beispiel #8
0
# 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()
Beispiel #9
0
    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)
Beispiel #10
0
    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.'
Beispiel #11
0
    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."
Beispiel #12
0
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."
Beispiel #13
0
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..."