[QE-users] Phonon dispersion - bad results around K point

Blair, Erik Enrique_Blair at baylor.edu
Fri Mar 24 00:26:14 CET 2023


I’m requesting help from all you QE wizards out there.

I’m trying to learn PHonon dispersion calculations, starting simply with diamond. My results look pretty good except for approaching the K point, were I get a bit of a cusp. I’ve tried lots of things: tightening convergences; increasing sampling in the BZ; using asr=’simple’ or asr=’crystal’, etc., but I can’t get rid of the cusping around K. It also makes the X-K path look bad. I’ve tried xc=’lda’ as well as xc=’pbe’.

I have optimized the structure using a PBE ultrasoft pseudo

I point out that I’m using ibrav=2, and I’m using letter notation to specify the high-symmetry points in the path through k-space, so I use q_in_band_form = .true..

Computer/QE version details: I’m using the QE 7.0 package on a Linux HPC cluster.

Relatively low-threshold calculations complete with a bash script and pseudopotentials are available here. I also have my *.out files, and a Python3 script that can generate the plots.

Thanks in advance for your insights.

Enrique (Erik) Blair, Ph.D.
Associate Professor
Electrical and Computer Engineering
Baylor University
Website: http://web.ecs.baylor.edu/faculty/blair/

For your convenience, here’s the LDA work-flow:
# ===== diamond.in =====
&control
  calculation = 'scf',
  restart_mode = 'from_scratch',
  tstress = .true.,
  tprnfor = .true.,
  prefix = 'diamond',
  outdir = 'data',
  pseudo_dir = './',
/

&system
  ibrav = 2,
  nat = 2,
  ntyp = 1,
  a = 3.5689000000000006,
  ecutwfc = 90.0,
  ecutrho = 810.0,
  input_dft = 'lda',
  nbnd = 15,
/

&electrons
  conv_thr = 1.000000d-8,
  mixing_beta = 0.7,
/

ATOMIC_SPECIES
  C    12.011000  C.pz-n-rrkjus_psl.0.1.UPF

ATOMIC_POSITIONS {alat}
  C   0.00000000  0.00000000  0.00000000
  C   0.25000000  0.25000000  0.25000000

K_POINTS {automatic}
    9   9   9   0   0   0

# ===== diamond.ph.in =====
This is a PHonons (ph.x) input file.

&inputph
  tr2_ph = 1.000000d-14,
  ldisp = .true.,
  nq1 = 3,
  nq2 = 3,
  nq3 = 3,
  fildyn = 'diamond.dyn',
  outdir = 'data',
  prefix = 'diamond',
/

# ==== diamond.q2r.in =====
&input
  flfrc = 'diamond.fc',
  zasr = 'crystal',
  fildyn = 'diamond.dyn',
/

# ==== diamond.matdyn.in =====
&input
  asr = 'simple',
  q_in_band_form = .true.,
  flfrc = 'diamond.fc',
  flfrq = 'diamond.frq',
  flvec = 'diamond.modes',
/

  5
gG 40
X 20
K 30
gG 20
L 1

# ===== plot_phonon_dispersion.py =====
import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt( 'diamond.frq.gp', unpack=True)
fdata = np.delete(data, 0, 0) # delete first row - not needed

markerpos = [0, 40, 60, 90, 110, ]
marker_label = ['$\\Gamma$', 'X', 'K', '$\\Gamma$', 'L']

n_ph, n_qpts = fdata.shape

int_idx = range(0, n_qpts)
for freq in fdata:
   plt.plot(int_idx, freq)

plt.xticks(markerpos, marker_label)
plt.xlim((markerpos[0], markerpos[-1]))
plt.grid(True)

plt.xlabel('$q$')
plt.ylabel('Frequency (cm$^{-1}$)')

plt.tight_layout()

plt.savefig('phonon_dispersion.png')

plt.close('all')


# ===== run.sh =====
#!/bin/bash
mpiexec -n 8 pw.x < diamond.in > diamond.out
mpiexec -n 8 ph.x < diamond.ph.in > diamond.ph.out
mpiexec -n 8 q2r.x < diamond.q2r.in > diamond.q2r.out
mpiexec -n 8 matdyn.x < diamond.matdyn.in > diamond.matdyn.out
python3 < plot_phonon_dispersion.py
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quantum-espresso.org/pipermail/users/attachments/20230323/8beef408/attachment.html>


More information about the users mailing list