2. Graphene Band Structure Calculation

This tutorial continues from the graphene SCF calculation and calculates the electronic band structure along the high-symmetry path \(\Gamma \rightarrow M \rightarrow K \rightarrow \Gamma\).

The important point is that the band calculation reuses the converged ground-state data from the previous SCF calculation.

Create a working directory

Make a separate directory for the band-structure calculation and copy the SCF input using a relative path.

Prepare the band input

Reuse the SCF setup, change the calculation type to bands, and define a high-symmetry k-point path.

Run pw.x

Calculate the Kohn-Sham eigenvalues along the selected path.

Post-process with bands.x

Collect the calculated eigenvalues into a convenient band-data file for plotting.


1. Create a Band-Calculation Directory

Start from the directory where the previous SCF calculation was prepared.

Create a separate directory for the band calculation:

mkdir 99band
cd 99band

Copy the previous SCF input into the new directory using a relative path:

cp ../1scf.in ./99band.1pw.in

Here, .. means the parent directory and . means the current directory.

The copied file will be used as the starting point for the band input, so the lattice, atomic positions, pseudopotential, cutoffs, and other basic settings remain consistent with the SCF calculation.

The band calculation must use the same prefix and the same SCF data stored in outdir.

Because 99band/ is a subdirectory, the relative paths to the SCF output and pseudopotential directories need to be adjusted.

For example:

outdir = '../out/'
pseudo_dir = '../pseudo/'

For the SCF setup used in this tutorial:

The original SCF input is also available on GitHub:

View 1scf.in on GitHub ↗


2. Prepare the Band Input

Open the copied file:

vi 99band.1pw.in

The main changes from the SCF calculation are:

  • change calculation = 'scf' to calculation = 'bands'
  • point outdir and pseudo_dir to the directories in the parent folder
  • optionally specify nbnd
  • replace the automatic k-point mesh with a high-symmetry path

A band input based on the previous graphene SCF calculation can be written as:

&CONTROL
calculation = 'bands'
etot_conv_thr = 2.0000d-05
forc_conv_thr = 1.0000d-04
outdir = '../out/'
prefix = 'graphene'
pseudo_dir = '../pseudo/'
tprnfor = .true.
tstress = .true.
verbosity = 'high'
/

&SYSTEM
degauss = 0.01
ecutrho = 200
ecutwfc = 40
ibrav = 0
nat = 2
nbnd = 8
nosym = .false.
ntyp = 1
occupations = 'smearing'
smearing = 'mv'
/

&ELECTRONS
conv_thr = 4.000d-10
electron_maxstep = 80
mixing_beta = 0.4
/

ATOMIC_SPECIES
C 12.011 C.upf

ATOMIC_POSITIONS angstrom
C 0.0000000000 1.4202816622 0.0000000000
C 1.2300000000 0.7101408311 0.0000000000

K_POINTS crystal_b
4
0.000000000 0.000000000 0.000000000 30
0.500000000 0.000000000 0.000000000 30
0.333333333 0.333333333 0.000000000 30
0.000000000 0.000000000 0.000000000 0

CELL_PARAMETERS angstrom
2.4600000000 0.0000000000 0.0000000000
-1.2300000000 2.1304224933 0.0000000000
0.0000000000 0.0000000000 20.0000000000

nbnd = 8 is an example value chosen to include several conduction bands above the occupied states.

The number of bands should be adjusted depending on the energy range you want to visualize.


3. Define the High-Symmetry Path

For graphene, a commonly used path through the two-dimensional Brillouin zone is:

\[ \Gamma \rightarrow M \rightarrow K \rightarrow \Gamma \]

In the input above, this is specified using:

K_POINTS crystal_b
4
0.000000000 0.000000000 0.000000000 30
0.500000000 0.000000000 0.000000000 30
0.333333333 0.333333333 0.000000000 30
0.000000000 0.000000000 0.000000000 0

The fourth number on each line controls the number of points generated between that high-symmetry point and the next one.

Why not use K_POINTS automatic for a band structure?

An SCF calculation samples the Brillouin zone with a mesh in order to obtain a converged ground-state electron density.

A band-structure calculation has a different purpose: it evaluates the eigenvalues along a selected path through reciprocal space.

Therefore, instead of an automatic mesh, we explicitly specify a sequence of high-symmetry points.


4. Run the Band Calculation

Local execution

pw.x -in 99band.1pw.in > 99band.1pw.out

For an MPI calculation:

mpirun -np 16 pw.x -in 99band.1pw.in > 99band.1pw.out

HPC job submission

On a SLURM-based cluster, the calculation can be submitted through the same job-submission workflow used for the SCF calculation.

sbatch qe_job_submit.sh

If the job script contains a fixed input filename, change it from 1scf.in to 99band.1pw.in before submission.

View my qe_job_submit.sh on GitHub ↗

The band calculation should read the converged SCF data associated with the same prefix and outdir.

If QE cannot find the previous calculation, check the relative outdir path first.


5. Check the Band Output

After the calculation finishes, inspect the end of the output file:

tail -50 99band.1pw.out

You can also check that the job finished normally:

grep "JOB DONE" 99band.1pw.out

At this stage, pw.x has calculated the eigenvalues along the selected k-point path.

The next step is to collect the band data using bands.x.


6. Post-process with bands.x

Create an input file named 99band.2pp.in:

&BANDS
prefix = 'graphene'
outdir = '../out/'
filband = 'graphene.bands'
/

Run:

bands.x -in 99band.2pp.in > 99band.2pp.out

This creates:

graphene.bands

which contains the band energies in a form that can be used for plotting.

bands.x does not perform a new electronic-structure calculation.

It post-processes the eigenvalues already calculated by pw.x during the bands calculation.


7. Workflow Summary

The complete workflow is:

SCF
Converged ground-state density
BANDS calculation along Γ-M-K-Γ
bands.x
Band data
Plot

The characteristic feature to look for in graphene is the crossing of the valence and conduction bands at the \(K\) point, forming the Dirac cone.

Why is the K point important in graphene?

In ideal graphene, the valence and conduction bands meet at the \(K\) and \(K'\) points of the Brillouin zone.

Near these points, the electronic bands are approximately linear in energy versus momentum, which gives rise to the well-known Dirac-cone dispersion.


Next