Questaal Home
Navigation

Symmetry Line Files

Usage Instructions


This document explains automatic and semi-automatic ways to generate information about symmetry lines to which to create energy bands in the Brillouin zone for any crystal structure.

Tip: If you know the k points you want in advance, the fastest way to generate the file is through lmchk’s –syml switch.

A number of codes in the Questaal suite ( lmf, lm, tbe, lmfgws, lmgf), can generate energy bands or (for the latter two programs) spectral functions along special lines of k. This information is supplied in a symmetry lines file, in symmetry line mode, which consists of a set of starting and ending k points, and the number of points on the line.

Note: k points are internally stored, and typically read, in Cartesian coordinates, in units 2π/a where a is the lattice constant (read through ALAT in the input file). However, some switches, e.g. the –band switch used by the codes above, or –syml switch available in lmchk, permits you to read k points in crystal coordinates instead.

The lattice vectors and points were adapted from Computational Materials Science 49, 299 (2010).

Table of Contents

Drawing energy bands

To plot energy band structures along symmetry lines, you need a symmetry lines file formatted in symmetry lines mode.

Run a code that can draw energy bands with the --band switch, e.g.

  lmf ctrl.co --band~fn=syml

if the symmetry lines file is named syml.ext.

This tutorial generates and plots energy bands with lmf; this one draws bands using the ASA code lm.

When you know what k points you need : the --syml switch

If you already know what k points you want, the lmchk utility enables you to conveniently write the information in a Questaal-readable format. Invoke lmchk as follows:

lmchk --syml~text

The full syntax for --syml is defined below; this section explains the switch through an example.

text is a string that can contain switches in addition to list of k points. It must contain q=#1,#2,#3,… : at least 6 numbers for at least two k points (three elements per point). Supply a vector with as many triplets of real numbers as you need. Triplets 1 and 2 form the first symmetry line, triplets 2 and 3 form the second line, and so on.

By default the points in q=… refer to Cartesian coordinates, in units of 2π/a. But if text contains option ~mq, lmchk interprets the k points you supply as crystal coordinates, i.e. multiples of the primitive reciprocal lattice vectors.

For example, the test

~/lm/testing/test.ovlp 9

copies ctrl.co to your working directory and generates file syml.co with two symmetry lines for Co, an hcp metal. These are the M-Γ line and the Γ-A line. This test performs something similar to the following:

lmchk ctrl.co --syml~n=21~mq~q=-.5,.5,0,0,0,0,0,0,1

~n=21 is optional; it specifies the number of divisions for a line of unit length. If you omit it a default value of 31 is taken. syml.co is written with the contents shown below:

# generated from text ~n=21~mq~q=-.5,.5,0,0,0,0,0,0,1
  12    0.2886751   0.5000000   0.0000000     0.0000000   0.0000000   0.0000000
  13    0.0000000   0.0000000   0.0000000     0.0000000   0.0000000   0.6123724

Note:: you can include text in the ctrl file (through tag BZ_SYML:) and invoke lmchk with --syml (no string following the switch). This is what test.ovlp 9 does.

Syntax of the --syml switch

Run lmchk with the --syml switch to generate symmetry-line files from the command line.

The minimum syntax is --syml~q=#0x,#0y,#0z,#1x,#1y,#1z which specifies the Cartesian components of the first two k points q0 and q1 (one line). The number of lines can be extended as desired by apppending ,#2x,#2y,#2z .... The first line connects q0 to q1, the second q1 to q2, and so on.

The full syntax shown in the box, followed by a typical example for the hexagonal structure:

   --syml[~n=#][~lbl=strn][~mq][~wmq]~q=#0x,#0y,#0z,...
   --syml~n=41~wmq~mq~lbl=KGLMGA~q=1/3,1/3,0,0,0,0,1/2,0,1/2,1/2,0,0,0,0,0,0,0,1/2
  • ~n=#     # specifies the number of points on the line for a connecting vector of unit length. The number of points is scaled by the length of the connecting vector.
  • ~lbl=strn   specifies labels for each of the k, one character per label.
  • ~mq     tells lmchk to rotate the k points you supply to to Cartesian coordinates
  • ~wmq   tells lmchk to rotate the k points written to syml.ext to Cartesian coordinates.

There is an alternate syntax, which does not use tag q=. Instead you define labels with their associated k points with the tag lblq, and specify the symmetry lines by the labels. The alternate syntax is shown in the box below, followed by an example for the hexagonal structure. It should generate the same syml file as the example above.

   --syml[~n=#][~mq][~wmq]~lblq:L=#,#,#,L=#,#,#,...~lbl=LLLL...
   --syml~n=41~mq~wmq~lblq:G=0,0,0,A=0,0,1/2,L=1/2,0,1/2,K=1/3,1/3,0,M=1/2,0,0~lbl=KGLMGA

lblq and lbl are both required in this mode.

Note:: the combined use of ~mq~wmq does not transform the k points, but it does affect the length used to compute the number of divisions on the line.

When you need assistance identifying appropriate symmetry lines

Standard symmetry lines for all crystal lattices are given below. They were taken from Computational Materials Science 49, 299 (2010). You can refer to that paper, which specifies reciprocal lattice vectors and high-symmetry points for each crystal system in units of reciprocal lattice vectors, and use it to create syml.ext using the --syml switch as described above.

Alternatively, peruse the Table of Contents and find the lattice appropriate to your structure. Once you identify the appropriate structure, and cut and paste the contents of appropriate file to a temporary file, e.g. tmp.txt.
To create a symmetry lines file, invoke rdfile with variables defining the shape of your unit cell, e.g.

rdfile -va=#1 -vb=#2 -vc=#3 tmp.txt > qp.ext

and edit qp.txt to taste. rdfile is documented here.

To create energy bands, run a band program such as lmf with switch --band~mq~... .

Cubic (CUB) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires no special variables:
# rdfile tmp.txt > qp.ext
#
% vec G[3] 0   0   0                # G
% vec M[3] 1/2   1/2 0              # M
% vec R[3] 1/2 1/2 1/2              # R
% vec X[3] 0   1/2  0               # X

# Sequence G-X-M-G-R-X-R
11 {G}  {X}      G to X
11 {X}  {M}      X to M
11 {M}  {G}      M to G
11 {G}  {R}      G to R
11 {R}  {X}      R to X
11 {X}  {R}      X to R

Face-centered Cubic (FCC) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires no special variables:
# rdfile tmp.txt > qp.ext
#
% vec G[3] 0   0   0                # G
% vec M[3] 1/2   1/2 0              # M
% vec R[3] 1/2 1/2 1/2              # R
% vec X[3] 0   1/2  0               # X

# Sequence G-X-M-G-R-X-R
11 {G}  {X}      G to X
11 {X}  {M}      X to M
11 {M}  {G}      M to G
11 {G}  {R}      G to R
11 {R}  {X}      R to X
11 {X}  {R}      X to R

Body-centered Cubic (BCC) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires no special variables:
# rdfile tmp.txt > qp.ext
#
% vec G[3] 0   0   0               # G
% vec H[3] 1/2 -1/2 1/2            # H
% vec P[3] 1/4 1/4 1/4             # P
% vec N[3] 0   0  1/2              # N

# Sequence G-H-N-G-P-H-N
11 {G}  {H}      G to H
11 {H}  {N}      H to N
11 {N}  {G}      N to G
11 {G}  {P}      G to P
11 {P}  {H}      P to H
11 {H}  {N}      H to N

Tetragonal (TET) Lattice

Primitive lattice vectors are (in units of a)

  1  0  0       P1
  0  1  0       P2
  0  0  c/a     P3

Quick generation of syml.ext

lmchk ctrl.ext --syml~n=..~mq~wmq~lblq:G=0,0,0,A=1/2,1/2,1/2,M=1/2,1/2,0,R=0,1/2,1/2,X=0,1/2,0,Z=0,0,1/2~lbl=GXMGZRAXRA

# R.S. Lattice vectors are: (units of a)
#  a  0  0     P1
#  0  a  0     P2
#  0  0  c     P3
# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires no special variables:
# rdfile tmp.txt > qp.ext
#
% vec G[3] 0   0   0               # G
% vec A[3] 1/2 1/2 1/2             # A
% vec M[3] 1/2 1/2 0               # M
% vec R[3] 0   1/2  1/2            # R
% vec X[3] 0   1/2 0               # X
% vec Z[3] 0   0  1/2              # Z

# Sequence G-X-M-G-Z-R-A-X-R-A
11 {G}  {X}      G to X
11 {X}  {M}      X to M
11 {M}  {G}      M to G
11 {G}  {Z}      G to Z
11 {Z}  {R}      Z to R
11 {R}  {A}      R to A
11 {A}  {X}      A to X
11 {X}  {R}      X to R
11 {R}  {A}      R to A

Body-centered Tetragonal (BCT) Lattice

The BCT lattice has real- and reciprocal lattice vectors (units of a and 2π/a, respectively). a and c are the lattice vectors in the basal plane and normal to it; cbya is the ratio.

         Plat             Qlat
 -1/2  1/2  cbya/2     	0  1  1/cbya
  1/2 -1/2  cbya/2     	1  0  1/cbya
  1/2  1/2 -cbya/2     	1  1  0

The BCT1 lattice : when c < a

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires one special variable, c/a:
# rdfile -vcbya=# tmp.txt > qp.ext
#
# R.S. Lattice vectors are: (units of a)
# -1/2  1/2  1/2*cbya         P1
#  1/2 -1/2  1/2*cbya         P2
#  1/2  1/2 -1/2*cbya         P3
% const eta=(1+cbya*cbya)/4
% vec G[3] 0   0   0               # G
% vec M[3] -1/2 1/2 1/2            # M
% vec N[3] 0   1/2   0             # N
% vec P[3] 1/4   1/4   1/4         # P
% vec X[3] 0   0  1/2              # X
% vec Z[3] {eta} {eta} -{eta}      # Z
% vec Z1[3] -{eta} 1-{eta} {eta}   # Z1

# Sequence G-X-M-G-Z-P-N-Z1-X-P
11 {Z}  {G}      Z to G
11 {G}  {X}      G to X
11 {X}  {M}      X to M
11 {M}  {G}      M to G
11 {G}  {Z}      G to Z
11 {Z}  {P}      Z to P
11 {P}  {N}      P to N
11 {N}  {Z1}     N to Z1
11 {Z1}  {X}     Z1 to X
11 {X}  {P}      X to P

The BCT2 lattice : when c > a

Quick generation of syml.ext

lmchk ctrl.ext --syml~nq=...~wmq~mq~lblq:M=1/2,-1/2,1/2,G=0,0,0,Z=1/2,1/2,-1/2,G=0,0,0,X=0,0,1/2,N=0,1/2,0~lbl=MGZGXN

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires one special variable, c/a:
# rdfile -vcbya=# tmp.txt > qp.ext
#
# R.S. Lattice vectors are: (units of a)
# -1/2  1/2  1/2*cbya         P1
#  1/2 -1/2  1/2*cbya         P2
#  1/2  1/2 -1/2*cbya         P3
% const eta=(1+1/cbya/cbya)/4 zeta=1/2/cbya/cbya
% vec G[3] 0   0   0               # G
% vec N[3] 0   1/2 0               # N
% vec P[3] 1/4 1/4 1/4             # P
% vec X[3] 0   0   1/2             # X
% vec S[3] -{eta} {eta} {eta}      # Sigma
% vec q[3] {eta} {1-eta} {-eta}    # Sigma1
% vec Y[3] -{zeta} {zeta} 1/2      # Y
% vec Z[3] 1/2 1/2 -1/2            # Z

# Sequence Z-G-X-P-G-N
11 {Z}  {G}      Z to G
11 {G}  {X}      G to X
11 {X}  {P}      X to P
11 {P}  {G}      P to G
11 {G}  {N}      G to N

Orthorhombic (ORC) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires no special variables
# rdfile tmp.txt > qp.ext
#
% vec G[3] 0   0   0               # G
% vec R[3] 1/2 1/2 1/2             # R
% vec S[3] 1/2 1/2   0             # S
% vec T[3] 0  1/2   1/2            # T
% vec U[3] 1/2   0  1/2            # U
% vec X[3] 1/2   0  0              # X
% vec Y[3] 0   1/2  0              # Y
% vec Z[3] 0   0    1/2            # Z

# Sequence G-X-S-Y-G-Z-U-R-T-Y-U-S-R
11 {G}  {X}      G to X
11 {X}  {S}      X to S
11 {S}  {Y}      S to Y
11 {Y}  {G}      Y to G
11 {G}  {Z}      G to Z
11 {Z}  {U}      Z to U
11 {U}  {R}      U to R
11 {R}  {T}      R to T
11 {T}  {Y}      T to Y
11 {Y}  {U}      Y to U
11 {U}  {S}      U to S
11 {S}  {R}      S to R

Face-centered Orthorhombic 1 (ORCF1) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires two special variables, b/a and c/a:
# rdfile -vbbya=# -vcbya=# tmp.txt > qp.ext
#
% const eta=(1+1/cbya/cbya+1/bbya/bbya)/4 zeta=(1+1/bbya/bbya-1/cbya/cbya)/4
% vec G[3] 0   0   0               # G
% vec A[3] 1/2 1/2+zeta zeta       # A
% vec A1[3] 1/2 1/2-zeta 1-zeta    # A1
% vec L[3] 1/2  1/2   1/2          # L
% vec T[3] 1    1/2   1/2          # T
% vec X[3] 0    eta   eta          # X
% vec X1[3] 1   1-eta  1-eta       # X1
% vec Y[3] 1/2   0    1/2          # Y
% vec Z[3] 1/2   1/2    0          # Z

# Sequence G-Y-T-Z-G-X-A1-T-X-A-L-G
11 {G}  {Y}      G to Y
11 {Y}  {T}      Y to T
11 {T}  {Z}      T to Z
11 {Z}  {G}      Z to G
11 {G}  {X}      G to X
11 {X}  {A1}     X to A1
11 {A1}  {T}     A1 to T
11 {T}  {X}      T to X
11 {X}  {A}      X to A
11 {A}  {L}      A to L
11 {L}  {G}      L to G

Face-centered Orthorhombic 2 (ORCF2) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires two special variables, b/a and c/a:
# rdfile -vbbya=# -vcbya=# tmp.txt > qp.ext
#
% const cbyb=cbya/bbya
% const eta=(1+1/bbya/bbya-1/cbya/cbya)/4 delta=(1+bbya*bbya-1/cbyb/cbyb)/4 theta=(1+cbyb*cbyb-cbya*cbya)/4
% vec G[3] 0   0   0                   # G
% vec C[3] 1/2 1/2-eta 1-eta           # C
% vec C1[3] 1/2 1/2+eta eta            # C1
% vec D[3] 1/2-delta  1/2   1-delta    # D
% vec D1[3] 1/2+delta    1/2   delta   # D1
% vec L[3] 1/2    1/2   1/2            # L
% vec H[3] 1-theta   1/2-theta  1/2    # H
% vec H1[3] theta   1/2+theta  1/2     # H1
% vec X[3] 0   1/2    1/2              # X
% vec Y[3] 1/2   0    1/2              # Y
% vec Z[3] 1/2   1/2    0              # Z

# Sequence G-Y-C-D-X-G-Z-D1-H-C1-X-H-L-G
11 {G}  {Y}      G to Y
11 {Y}  {C}      Y to C
11 {C}  {D}      T to D
11 {D}  {X}      Z to X
11 {X}  {G}      G to G
11 {G}  {Z}     X to Z
11 {Z}  {D1}     A1 to D1
11 {D1}  {H}      T to H
11 {H}  {C1}      X to C1
11 {C1}  {X}      A to X
11 {X}  {H}      L to H
11 {H}  {L}      A to L
11 {L}  {G}      L to G

Face-centered Orthorhombic 3 (ORCF3) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires two special variables, b/a and c/a:
# rdfile -vbbya=# -vcbya=# tmp.txt > qp.ext
#
% const eta=(1+1/cbya/cbya+1/bbya/bbya)/4 zeta=(1+1/bbya/bbya-1/cbya/cbya)/4
% vec G[3] 0   0   0                   # G
% vec A[3] 1/2 1/2+zeta zeta           # A
% vec A1[3] 1/2 1/2-zeta 1-zeta        # A1
% vec L[3] 1/2  1/2   1/2              # L
% vec T[3] 1    1/2   1/2              # T
% vec X[3] 0    eta   eta              # X
% vec X1[3] 1   1-eta  1-eta           # X1
% vec Y[3] 1/2   0    1/2              # Y
% vec Z[3] 1/2   1/2    0              # Z

# Sequence G-Y-T-Z-G-X-A1-X-A-L-G
11 {G}  {Y}      G to Y
11 {Y}  {T}      Y to T
11 {T}  {Z}      T to Z
11 {Z}  {G}      Z to G
11 {G}  {X}      G to X
11 {X}  {A1}     X to A1
11 {A1}  {X}     A1 to X
11 {X}  {A}      X to A
11 {A}  {L}      A to L
11 {L}  {G}      L to G

Body-centered Orthorhombic (ORCI) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires three special variables, b/a and c/a:
# rdfile -va=# -vb=# -vc=# > qp.ext
#
% const abyc=a/c bbyc=b/c
% const eta=(1+abyc*abyc)/4 zeta=(1+bbyc*bbyc)/4 delta=(b*b-a*a)/(c*c)/4 mu=(a*a+b*b)/(c*c)/4
% vec G[3] 0   0   0                    # G
% vec L[3] -mu  mu  1/2-delta           # L
% vec L1[3] mu  -mu  1/2+delta          # L1
% vec L2[3] 1/2-delta 1/2+delta -mu     # L2
% vec R[3] 0     1/2   0                # R
% vec S[3] 1/2   0    0                 # S
% vec T[3] 0     0   1/2                # T
% vec W[3] 1/4  1/4  1/4                # W
% vec X[3] -zeta  zeta  zeta            # X
% vec X1[3] zeta  1-zeta  -zeta         # X1
% vec Y[3] eta  -eta  eta               # Y
% vec Y1[3] 1-eta  eta  -eta            # Y1
% vec Z[3] 1/2  1/2  -1/2               # Z

# Sequence G-X-L-T-W-R-X1-Z-G-Y-S-L1-Y1-Z
11 {G}  {X}      G to X
11 {X}  {L}      X to L
11 {L}  {T}      L to T
11 {T}  {W}      T to W
11 {W}  {R}      W to R
11 {R}  {X1}     R to X1
11 {X1}  {Z}     X1 to Z
11 {Z}  {G}      Z to G
11 {G}  {Y}      G to Y
11 {Y}  {S}      Y to S
11 {S}  {L1}     S to L1
11 {L1}  {Y1}    L1 to Y1
11 {Y1}  {Z}     YL to Z

C-centered Orthorhombic (ORCC) Lattice

The ORCC lattice has real- and reciprocal lattice vectors (units of a andn 2π/a, respectively)

      Plat            Qlat
1/2  -b/a/2  0      1 -a/b  0
1/2   b/a/2  0      1  a/b  0
0     0      c/a    0  0    a/c

Common high symmetry points in this structure require one special variable, b/a.

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# rdfile -vbbya=# tmp.txt > qp.ext
# For symmetry lines in Cartesian coordinates: copy QLAT from lmchk to 'qlat' and do e.g.
# symlinepoints -qlat=qlat -nk=21 qp.ext  > syml.ext
#
% const abyb=1/bbya zeta=(1+abyb*abyb)/4
% vec G[3] 0   0   0                  # G
% vec A[3] zeta  zeta  1/2            # A
% vec A1[3] -zeta  1-zeta  1/2        # A1
% vec R[3] 0  1/2  1/2                # R
% vec S[3] 0  1/2  0                  # S
% vec T[3] -1/2  1/2  1/2             # T
% vec X[3] zeta  zeta  0              # X
% vec X1[3] -zeta  1-zeta  0          # X1
% vec Y[3] -1/2   1/2    0            # Y
% vec Z[3] 0   0   1/2                # Z

# Sequence G-X-S-R-A-Z-G-Y-X1-A1-T-Z-T
11 {G}  {X}      G to X
11 {X}  {S}      X to S
11 {S}  {R}      S to R
11 {R}  {A}      R to A
11 {A}  {Z}      A to Z
11 {Z}  {G}      Z to G
11 {G}  {Y}      G to Y
11 {Y}  {X1}     Y to X1
11 {X1}  {A1}    X1 to A1
11 {A1}  {T}     A1 to T
11 {T}  {Z}      T to Z
11 {Z}  {T}      Z to G

Hexagonal (HEX) Lattice

Standard choice of lattice vectors:

          Plat                     Qlat
a/2  -a(sqrt(3)/2  0       1/a  -1/a/sqrt(3)  0
a/2   a(sqrt(3)/2  0       1/a   1/a/sqrt(3)  0
0     0            c       0     0            1/c

Lattice vectors rotated by 60 degrees:

          Plat                     Qlat
a(sqrt(3)/2  -a/2  0       2/a/sqrt(3)  0     0
0             a    0       0            1     0
0     0            c       0            0     1/c

Quick generation of syml.ext

lmchk ctrl.ext --syml~~mq~wmq~lblq:G=0,0,0,A=0,0,1/2,H=1/3,1/3,1/2,K=1/3,1/3,0,M=1/2,0,0,L=1/2,0,1/2~lbl=MGALGK

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires no special variables
# rdfile tmp.txt > qp.ext
#
% vec G[3] 0   0   0               # G
% vec A[3] 0   0   1/2             # A
% vec H[3] 1/3  1/3  1/2           # H
% vec K[3] 1/3  1/3  0             # K
% vec L[3] 1/2  0    1/2           # L
% vec M[3] 1/2  0    0             # M

# Sequence G-M-K-G-A-L-H-L-K-H
11 {G}  {M}      G to M
11 {M}  {K}      X to S
11 {K}  {G}      S to R
11 {G}  {A}      R to A
11 {A}  {L}      A to Z
11 {L}  {H}      Z to G
11 {H}  {L}      G to Y
11 {L}  {K}      Y to X1
11 {K}  {H}      X1 to A1

Rhombohedral 1 (RHL1) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires one special variables, angle alpha
# rdfile -valpha=# tmp.txt > qp.ext
#
% const eta=(1+4*cos(alpha))/(2+4*cos(alpha))
% const nu=(3/4-eta/2)
% vec G[3] 0   0   0               # G
% vec B[3] eta    1/2    1-eta     # B
% vec B1[3] 1/2   1-eta   eta-1    # B1
% vec F[3] 1/2   1/2   0           # F
% vec L[3] 1/2  0    0             # L
% vec L1[3] 0   0   -1/2           # L1
% vec P[3] eta   nu   nu           # P
% vec P1[3] 1-nu   1-nu   1-eta    # P1
% vec P2[3] nu   nu   eta-1        # P2
% vec Q[3] 1-nu   nu   0           # Q
% vec X[3] nu   0   -nu            # X
% vec Z[3] 1/2   1/2   1/2         # Z

# Sequence G-L-B-Z-G-Q-F-P1-L-P
11 {G}  {L}      G to L
11 {L}  {B}      L to B
11 {B}  {Z}      B to Z
11 {Z}  {G}      Z to G
11 {G}  {Q}      G to Q
11 {Q}  {F}      Q to F
11 {F}  {P1}     F to P1
11 {P1}  {L}     P1 to L
11 {L}  {P}      L to P

Rhombohedral 2 (RHL2) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires one special variable, angle alpha
# rdfile -valpha=# tmp.txt > qp.ext
#
% const eta=1/(2*tan(alpha/2)*tan(alpha/2))
% const nu=(3/4-eta/2)
% vec G[3] 0   0   0               # G
% vec F[3] 1/2   -1/2   0          # F
% vec L[3] 1/2   0   0             # L
% vec P[3] 1-nu   -nu   1-nu       # P
% vec P1[3] nu   nu-1   nu-1       # P1
% vec Q[3] eta   eta   eta         # Q
% vec Q1[3] 1-eta   -eta   -eta    # Q1
% vec Z[3] 1/2   -1/2   1/2        # Z

# Sequence G-P-Z-Q-G-F-P1-Q1-L-Z
11 {G}  {P}      G to L
11 {P}  {Z}      P to Z
11 {Z}  {Q}      Z to Q
11 {Q}  {G}      Q to G
11 {G}  {F}      G to F
11 {F}  {P1}      F to P1
11 {P1}  {Q1}     P1 to Q1
11 {Q1}  {L}     Q1 to L
11 {L}  {Z}      L to Z

Monoclinic (MCL) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires one special variable, angle alpha
# rdfile -valpha=# tmp.txt > qp.ext
# Note: this file is incorrect
#
% const eta=(1-b*cos(alphabyc))/(2*sin(alpha)*sin(alpha))
% const nu=(1/2-eta*c*cos(alphabyb))
% vec G[3] 0   0   0               # G
% vec A[3] 1/2   -1/2   0          # A
% vec C[3] 0  1/2  1/2             # C
% vec D[3] 1/2  0  1/2             # D
% vec D1[3] 1/2  0  -1/2           # D1
% vec E[3] 1/2  1/2  1/2           # E
% vec H[3] 0  eta  1-nu            # H
% vec H1[3] 0  1-eta  nu           # H1
% vec H2[3] 0  eta  -nu            # H2
% vec M[3] 1/2  eta  1-nu          # M
% vec M1[3] 1/2  1-eta  nu         # M1
% vec M2[3] 1/2  eta  -nu          # M2
% vec X[3] 0  1/2  0               # X
% vec Y[3] 0  0  1/2               # Y
% vec Y1[3] 0  0  -1/2             # Y1
% vec Z[3] 1/2  0  0               # Z

# Sequence G-Y-H-C-E-M1-A-X-M-D-Y-D
11 {G}  {Y}      G to Y
11 {Y}  {H}      Y to H
11 {H}  {C}      H to C
11 {C}  {E}      C to E
11 {E}  {M1}     E to M1
11 {M1}  {A}     M1 to A
11 {A}  {X}      A to X
11 {X}  {M}      X to M
11 {M}  {D}      M to D
11 {D}  {Y}      D to Y
11 {Y}  {D}      Y to D

C-centered Monoclinic Lattices

There are a family of lattices depending on angles between vectors. The conventional and primitive cells for all the lattices are

 (a, 0, 0)                 ( a/2, b/2, 0)
 (0, b, 0)                 (-a/2, b/2, 0)
 (0, c cos α, c sin α)     (0, c cos α, c sin α)

C-centered Monoclinic 1 (MCLC1) Lattice

Quick generation of syml.ext

lmchk ctrl.ext --syml~mq~wmq~lblq:G=0,0,0,Z=0,0,1/2,L=1/2,1/2,1/2,Y=1/2,1/2,0,N=1/2,0,0,M=1/2,0,1/2~lbl=ZGNYGM

See Fig 17 in Computational Materials Science 49, 299 (2010).

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires three special variables, angle a/c, b/c, angle alfa
# rdfile -vabyc=# -vbbyc=# -valfa=# tmp.txt > qp.ext
#
% const zeta=(2-bbyc*cos(alfa))/(4*sin(alfa)*sin(alfa))
% const eta=1/2+2*zeta/bbyc*cos(alfa)
% const psi=3/4-abyc/bbyc/(4*sin(alfa)*sin(alfa))
% const phi=(psi+(3/4-psi)*bbyc*cos(alfa))
# Use with caution!  Variables zeta, eta, psi, phi have not been checked.
% vec G[3] 0   0   0                 # G
% vec N[3] 1/2   0   0               # N
% vec N1[3] 0  -1/2  0               # N1
% vec F[3] 1-zeta  1-zeta  1-eta     # F
% vec F1[3] zeta  zeta  eta          # F1
% vec F2[3] -zeta  -zeta  1-eta      # F2
% vec F3[3] 1-zeta  -zeta  1-eta     # F3
% vec I[3] phi  1-phi  1/2           # I
% vec I1[3] 1-phi  phi-1  1/2        # I1
% vec L[3] 1/2  1/2  1/2             # L
% vec M[3] 1/2  0  1/2               # M
% vec X[3] 1-psi  psi-1  0           # X
% vec X1[3] psi  1-psi  0            # X1
% vec X2[3] psi-1  -psi  0           # X2
% vec Y[3] 1/2  1/2  0               # Y
% vec Y1[3] -1/2  -1/2  0            # Y1
% vec Z[3] 0  0  1/2                 # Z

# Sequence Z-G-N-Y-G-M (none of these points depend on variables abyc, bbyc, valfa)
11 {Z} {G} Z-G
11 {G} {N} G-N
11 {N} {Y} N-Y
11 {Y} {G} Y-G
11 {G} {M} G-M

C-centered Monoclinic 2 (MCLC2) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires one special variable, angle alpha
# rdfile -valpha=# tmp.txt > qp.ext
# Note: this file is incorrect
#
% const zeta=(2-b*cos(alphabyc))/(4*sin(alpha)*sin(alpha))
% const eta=(1/2+2*zeta*c*cos(alphabyb))
% const psi=(3/4-(1/4)*abyb*abyb*(1/sin(alpha))*(1/sin(alpha)))
% const phi=(psi+(3/4-psi)*b*cos(alphabyc))
% vec G[3] 0   0   0                 # G
% vec N[3] 1/2   0   0                # N
% vec N1[3] 0  -1/2  0                # N1
% vec F[3] 1-zeta  1-zeta  1-eta     # F
% vec F1[3] zeta  zeta  eta          # F1
% vec F2[3] -zeta  -zeta  1-eta      # F2
% vec F3[3] 1-zeta  -zeta  1-eta     # F3
% vec I[3] phi  1-phi  1/2           # I
% vec I1[3] 1-phi  phi-1  1/2        # I1
% vec L[3] 1/2  1/2  1/2             # L
% vec M[3] 1/2  0  1/2               # M
% vec X[3] 1-psi  psi-1  0           # X
% vec X1[3] psi  1-psi  0            # X1
% vec X2[3] psi-1  -psi  0           # X2
% vec Y[3] 1/2  1/2  0               # Y
% vec Y1[3] -1/2  -1/2  0            # Y1
% vec Z[3] 0  0  1/2                 # Z

# Sequence G-Y-F-L-I1-Z-N-G-M
11 {G}  {Y}      G to Y
11 {Y}  {F}      Y to F
11 {F}  {L}      F to L
11 {L}  {I1}      L to I1
11 {I1}  {Z}     I1 to Z
11 {Z}  {N}     Z to N
11 {N}  {G}      N to G
11 {G}  {M}      G to M

C-centered Monoclinic 3 (MCLC3) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires one special variable, angle alpha
# rdfile -valpha=# tmp.txt > qp.ext
# Note: this file is incorrect
#
% const mu=(1+bbya*bbya)/4
% const delta=(b*c*cos(alpha*(1/2)*(1/a)*(1/a)))
% const zeta=(mu-1/4+(1-b*cos(alphabyc))/(4*sin(alpha)*sin(alpha)))
% const eta=(1/2+2*zeta*c*cos(alphabyb))
% const phi=(1+zeta-2*mu)
% const psi=(eta-2*delta)
% vec G[3] 0   0   0                 # G
% vec F[3] 1-phi   1-phi  1-psi      # F
% vec F1[3] phi  phi-1  psi          # F1
% vec F2[3] 1-phi  -phi  1-psi       # F2
% vec H[3] zeta  zeta  eta           # H
% vec H1[3] 1-zeta  -zeta  1-eta     # H1
% vec H2[3] -zeta  -zeta  1-eta      # H2
% vec I[3] 1/2  -1/2  1/2            # I
% vec M[3] 1/2  0  1/2               # M
% vec N[3] 1/2  0  0                 # N
% vec N1[3] 0  -1/2  0               # N1
% vec X[3] 1/2  -1/2  0              # X
% vec Y[3] mu  mu  delta             # Y
% vec Y1[3] 1-mu  -mu  -delta        # Y1
% vec Y2[3] -mu  -mu  -deta          # Y2
% vec Y3[3] mu  mu-1  delta          # Y3
% vec Z[3] 0  0  1/2                 # Z

# Sequence G-Y-F-H-Z-I-H1-Y1-X-G-M-G
11 {G}  {Y}      G to Y
11 {Y}  {F}      Y to F
11 {F}  {H}      F to H
11 {H}  {Z}      H to Z
11 {Z}  {I}      Z to I
11 {I}  {H1}     I to H1
11 {H1}  {Y1}    H1 to Y1
11 {Y1}  {X}     Y1 to X
11 {X}  {G}      X to G
11 {G}  {M}      G to M
11 {M}  {G}      M to G

C-centered Monoclinic 4 (MCLC4) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires one special variable, angle alpha
# rdfile -valpha=# tmp.txt > qp.ext
# Note: this file is incorrect
#
% const mu=(1+bbya*bbya)/4
% const delta=(b*c*cos(alpha*(1/2)*(1/a)*(1/a)))
% const zeta=(mu-1/4+(1-b*cos(alphabyc))/(4*sin(alpha)*sin(alpha)))
% const eta=(1/2+2*zeta*c*cos(alphabyb))
% const phi=(1+zeta-2*mu)
% const psi=(eta-2*delta)
% vec G[3] 0   0   0                 # G
% vec F[3] 1-phi   1-phi  1-psi      # F
% vec F1[3] phi  phi-1  psi          # F1
% vec F2[3] 1-phi  -phi  1-psi       # F2
% vec H[3] zeta  zeta  eta           # H
% vec H1[3] 1-zeta  -zeta  1-eta     # H1
% vec H2[3] -zeta  -zeta  1-eta      # H2
% vec I[3] 1/2  -1/2  1/2            # I
% vec M[3] 1/2  0  1/2               # M
% vec N[3] 1/2  0  0                 # N
% vec N1[3] 0  -1/2  0               # N1
% vec X[3] 1/2  -1/2  0              # X
% vec Y[3] mu  mu  delta             # Y
% vec Y1[3] 1-mu  -mu  -delta        # Y1
% vec Y2[3] -mu  -mu  -deta          # Y2
% vec Y3[3] mu  mu-1  delta          # Y3
% vec Z[3] 0  0  1/2                 # Z

# Sequence G-Y-F-H-Z-H1-Y1-X-G-M-G
11 {G}  {Y}      G to Y
11 {Y}  {F}      Y to F
11 {F}  {H}      F to H
11 {H}  {Z}      H to Z
11 {Z}  {H1}      Z to H1
11 {H1}  {Y1}    H1 to Y1
11 {Y1}  {X}     Y1 to X
11 {X}  {G}      X to G
11 {G}  {M}      G to M
11 {M}  {G}      M to G

C-centered Monoclinic 5 (MCLC5) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires one special variable, angle alpha
# rdfile -valpha=# tmp.txt > qp.ext
# Note: this file is incorrect
#
% const zeta=(bbya*bbya+(1-b*cos(alphabyc))/(sin(alpha)*sin(alpha)))/4
% const eta=(1/2+2*zeta*c*cos(alphabyb))
% const mu=(eta/2+(1/4)*bbya*bbya-b*c*cos(alphabya*(1/2)*(1/a)))
% const nu=(2*mu-zeta)
% const rho=(1-zeta*abyb*abyb)
% const eta=(1/2+2*zeta*c*cos(alphabyb))
% const omega=((4*nu-1-b*b*sin(alphabya*(1/a))*sin(alphabya*(1/a)))*c/(2*b*cos(alpha)))
% const delta=(zeta*c*cos(alphabyb)+omega/2-1/4)
% vec G[3] 0   0   0                 # G
% vec F[3] nu  nu  omega             # F
% vec F1[3] 1-nu  1-nu  1-omega      # F1
% vec F2[3] nu  nu-1  omega          # F2
% vec H[3] zeta  zeta  eta           # H
% vec H1[3] 1-zeta  -zeta  1-eta     # H1
% vec H2[3] -zeta  -zeta  1-eta      # H2
% vec I[3] rho  1-rho  1/2           # I
% vec I1[3] 1-rho  rho-1  1/2        # I1
% vec L[3] 1/2  1/2  1/2             # L
% vec M[3] 1/2  0  1/2               # M
% vec N[3] 1/2  0  0                 # N
% vec N1[3] 0  -1/2  0               # N1
% vec X[3] 1/2  -1/2  0              # X
% vec Y[3] mu  mu  delta             # Y
% vec Y1[3] 1-mu  -mu  -delta        # Y1
% vec Y2[3] -mu  -mu  -deta          # Y2
% vec Y3[3] mu  mu-1  delta          # Y3
% vec Z[3] 0  0  1/2                 # Z

# Sequence G-Y-F-L-I1-Z-H-H1-Y1-X-G-M-G
11 {G}  {Y}      G to Y
11 {Y}  {F}      Y to F
11 {F}  {L}      F to L
11 {L}  {H}      L to H
11 {H}  {Z}      H to Z
11 {Z}  {H}    Z to H
11 {H}  {H1}     H to H1
11 {H1}  {Y1}      H1 to Y1
11 {Y1}  {X}      Y1 to X
11 {X}  {G}      X to G
11 {G}  {M}     G to M
11 {M}  {G}      M to G

Triclinic 1a(/2a) (TRI1a) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires no special variables
# rdfile tmp.txt > qp.ext
#
% vec G[3] 0   0   0               # G
% vec L[3] 1/2  1/2  0             # L
% vec M[3] 0  1/2  1/2             # M
% vec N[3] 1/2  0  1/2             # N
% vec R[3] 1/2  1/2  1/2           # R
% vec X[3] 1/2  0  0               # X
% vec Y[3] 0  1/2  0               # Y
% vec Z[3] 0  0  1/2               # Z

# Sequence X-G-L-G-N-G-R-G
11 {X}  {G}      X to G
11 {G}  {L}      G to L
11 {L}  {G}      L to G
11 {G}  {N}      G to N
11 {N}  {G}      N to G
11 {G}  {R}      G to R
11 {R}  {G}      R to G

Triclinic 1b(/2b) (TRI1b) Lattice

# Cut and paste the contents of this file to a temporary file, e.g. tmp.txt.
# This structure requires no special variables
# rdfile tmp.txt > qp.ext
#
% vec G[3] 0   0   0                 # G
% vec L[3] 1/2  -1/2  0              # L
% vec M[3] 0  0  1/2                 # M
% vec N[3] -1/2  -1/2  1/2           # N
% vec R[3] 0  -1/2  1/2              # R
% vec X[3] 0  -1/2  0                # X
% vec Y[3] 1/2  0  0                 # Y
% vec Z[3] -1/2  0  1/2              # Z

# Sequence X-G-L-G-N-G-R-G
11 {X}  {G}      X to G
11 {G}  {L}      G to L
11 {L}  {G}      L to G
11 {G}  {N}      G to N
11 {N}  {G}      N to G
11 {G}  {R}      G to R
11 {R}  {G}      R to G

References


The lattice vectors and points were adapted from Computational Materials Science 49, 299 (2010).

Questions or Comments


If this page has any errors, there is something you think is missing or unclear, or for any other issues, you can create a post here letting us know.