Name

MonkhorstPackGrid — Class for calculating a symmetry reduced MonkhorstPackGrid grid

Synopsis

Namespace: NanoLanguage
MonkhorstPackGrid(
na,
nb,
nc,
symmetries,
force_timereversal
)

Description

MonkhorstPackGrid Arguments

na

number of k-points in A direction

Type: integer

Default: 1
nb

number of k-points in B direction

Type: integer

Default: 1
nc

number of k-points in C direction

Type: integer

Default: 1
symmetries

list of symmetries to apply for reducing the k-points

Type: list of (3x3) matrices

Default: depends on value of force_timereversal
force_timereversal

Whatever to enforce timereversal symmetry

Type: boolean

Default: True

MonkhorstPackGrid Methods

A MonkhorstPackGrid object provides the following methods:

  • allKpoints():

  • allKpointsWeights(): Query method for the all the weights.

  • foldoutMapVector(): Query method for the foldout map vector

  • kpoints(): Query method for the irreducible kpoints

  • kpointsWeights(): Query method for the irreducible weights

Usage Examples

Define a 2x5x3 Monkhorst-Pack k-points grid. Calculate the irreducible k-points using time reversal symmetry and mirror symmetry in the A direction. Print out the relation between the full k-points set and the irreducible set.

# Make a  MonkhorstPackGrid with mirror symmetry in A direction and time reversal symmetry
symmetries = [( numpy.array([[-1,0,0], [0,1,0], [0,0,1]]), numpy.zeros(3))]
mpg = MonkhorstPackGrid(2, 5, 3, symmetries=symmetries)

# Get the kpoints
irreducible_kpoints = mpg.kpoints()
irreducible_weights = mpg.kpointsWeights()

all_kpoints = mpg.allKpoints()

# Print out the irreducible kpoints
print len(irreducible_kpoints), ' irreducible kpoints'
for kp, w in zip(irreducible_kpoints, irreducible_weights):
    print kp, w*len(all_kpoints)

# Get the map from the full kpoints to the irreducible part
fold_out_map = mpg.foldoutMapVector()

# Print out the relation between the full and irreducible set
print len(all_kpoints), '  kpoints'
for i, kp in enumerate(all_kpoints):
    print kp, ' -> ', irreducible_kpoints[fold_out_map[i]]

monkhorstpackgrid.py

Notes

Make a uniform k-points grid according to procedure of Monkhorst and Pack[30]

\displaystyle

    k = (2 r - q - 1)/2q \, \,  \, \,  \,  \,  \,  \,  \,  (r=1,2,3,...,q),

where k are in units of 2 \pi/ a.

  • Odd k-points grids include the \Gamma point, while even k-points grids avoid the \Gamma point.

  • Due to time reversal symmetry of the Schrödinger equation it is always possible to use inversion symmetry to reduce the number of k-points which must be used.