[ase-users] Phonons example
Horsley, Matthew A.
horsley1 at llnl.gov
Thu Apr 12 17:21:09 CEST 2018
Hi,
I am new to ase, and I am using the Phonon example (I copied it below). In the example, there is a parameter N, which controls the size of the supercell. In the example, N=7, and the code runs fine. However, if I change N to something larger or smaller (I tried N=5,6,8), the code crashes with an error message (see below). Is there a fix for this?
Thanks!
Matt
Error msg:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-18-03ff49a02177> in <module>()
14
15 # Read forces and assemble the dynamical matrix
---> 16 ph.read(acoustic=True)
17
18 # High-symmetry points in the Brillouin zone
ase\phonons.pyc in read(self, method, symmetrize, acoustic, cutoff, born, **kwargs)
404
405 # Slice out included atoms
--> 406 C_Nav = C_av.reshape((N, len(self.atoms), 3))[:, self.indices]
407 index = 3 * i + j
408 C_xNav[index] = C_Nav
ValueError: cannot reshape array of size 1029 into shape (125,1,3)
Phonon example:
from ase.build import bulk
from ase.calculators.emt import EMT
from ase.dft.kpoints import ibz_points, bandpath
from ase.phonons import Phonons
# Setup crystal and EMT calculator
atoms = bulk('Al', 'fcc', a=4.05)
calc = EMT()
# Phonon calculator
N = 7
ph = Phonons(atoms, calc, supercell=(N, N, N), delta=0.05)
ph.run()
# Read forces and assemble the dynamical matrix
ph.read(acoustic=True)
# High-symmetry points in the Brillouin zone
points = ibz_points['fcc']
G = points['Gamma']
X = points['X']
W = points['W']
K = points['K']
L = points['L']
U = points['U']
point_names = ['$\Gamma$', 'X', 'U', 'L', '$\Gamma$', 'K']
path = [G, X, U, L, G, K]
# Band structure in meV
path_kc, q, Q = bandpath(path, atoms.cell, 100)
omega_kn = 1000 * ph.band_structure(path_kc)
# Calculate phonon DOS
omega_e, dos_e = ph.dos(kpts=(50, 50, 50), npts=5000, delta=5e-4)
omega_e *= 1000
# Plot the band structure and DOS
import matplotlib.pyplot as plt
plt.figure(1, (8, 6))
plt.axes([.1, .07, .67, .85])
for n in range(len(omega_kn[0])):
omega_n = omega_kn[:, n]
plt.plot(q, omega_n, 'k-', lw=2)
plt.xticks(Q, point_names, fontsize=18)
plt.yticks(fontsize=18)
plt.xlim(q[0], q[-1])
plt.ylabel("Frequency ($\mathrm{meV}$)", fontsize=22)
plt.grid('on')
plt.axes([.8, .07, .17, .85])
plt.fill_between(dos_e, omega_e, y2=0, color='lightgrey', edgecolor='k', lw=1)
plt.ylim(0, 35)
plt.xticks([], [])
plt.yticks([], [])
plt.xlabel("DOS", fontsize=18)
plt.show()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.fysik.dtu.dk/pipermail/ase-users/attachments/20180412/e1c6b9a8/attachment-0001.html>
More information about the ase-users
mailing list