Chapter 3
15 min read
Section 22 of 70

Reciprocal Lattice Vectors

Reciprocal Space and Diffraction

Learning Objectives

Section 3.1 motivated why reciprocal space exists. This section makes it concrete. By the end you should be able to:

  1. State the defining condition of a reciprocal lattice vector G\mathbf{G} and explain why it is forced by the requirement eiGR=1e^{i\mathbf{G}\cdot\mathbf{R}}=1 for every direct lattice vector R\mathbf{R}.
  2. Write the duality condition biaj=2πδij\mathbf{b}_i\cdot\mathbf{a}_j = 2\pi\,\delta_{ij} and recognise it as the 3-D analogue of Gm=2πm/aG_m = 2\pi m / a.
  3. Derive the explicit cross-product formulae for b1,b2,b3\mathbf{b}_1, \mathbf{b}_2, \mathbf{b}_3 froma1,a2,a3\mathbf{a}_1, \mathbf{a}_2, \mathbf{a}_3 — and know exactly where every 2π2\pi comes from.
  4. Compute reciprocal vectors for simple cubic, FCC, BCC, and hexagonal lattices by hand, and recognise the famous fact that the reciprocal of FCC is BCC and vice versa.
  5. Read VASP's OUTCAR section that prints reciprocal lattice vectors and verify them against the POSCAR by hand.
  6. Avoid the most common conventions trap — the missing or extra factor of 2π2\pi between physics and crystallography textbooks.
One-line preview: the reciprocal basis is the unique triple of vectors that turns the matrix of dot products biaj\mathbf{b}_i\cdot\mathbf{a}_j into 2πI2\pi\,\mathbb{I}. The cross-product formula is just the closed-form solution to that linear-algebra problem.

From 1D to 3D — The Defining Condition

In 1D we discovered, by playing with the slider in the previous section, that the special wavevectors which leave a plane wave invariant under every lattice translation are

Gm  =  2πma,mZ.G_m \;=\; \frac{2\pi m}{a}, \qquad m \in \mathbb{Z}.

Equivalent statement: eiGmR=1e^{i G_m \cdot R} = 1 for every R=naR = n a, because GmR=2πmnG_m R = 2\pi m n is an integer multiple of 2π2\pi. In 3D the same idea is the definition of the reciprocal lattice. A vector G\mathbf{G} is called a reciprocal lattice vector iff

eiGR  =  1for every direct lattice vector R=n1a1+n2a2+n3a3.e^{i\,\mathbf{G}\cdot\mathbf{R}} \;=\; 1 \quad\text{for every direct lattice vector } \mathbf{R} = n_1\mathbf{a}_1 + n_2\mathbf{a}_2 + n_3\mathbf{a}_3.

That is the entire story compressed into one line. Let's unpack it. The condition eiGR=1e^{i\mathbf{G}\cdot\mathbf{R}} = 1 means

GR  =  2π(integer)for every R.\mathbf{G}\cdot\mathbf{R} \;=\; 2\pi\,\text{(integer)} \quad \text{for every } \mathbf{R}.

Substituting R=n1a1+n2a2+n3a3\mathbf{R} = n_1\mathbf{a}_1 + n_2\mathbf{a}_2 + n_3\mathbf{a}_3:

n1(Ga1)+n2(Ga2)+n3(Ga3)    2πZ.n_1\,(\mathbf{G}\cdot\mathbf{a}_1) + n_2\,(\mathbf{G}\cdot\mathbf{a}_2) + n_3\,(\mathbf{G}\cdot\mathbf{a}_3) \;\in\; 2\pi\,\mathbb{Z}.

Pick (n1,n2,n3)=(1,0,0)(n_1, n_2, n_3) = (1, 0, 0): the requirement is Ga12πZ\mathbf{G}\cdot\mathbf{a}_1 \in 2\pi\mathbb{Z}. Same for the other two unit vectors. Conversely, if all three of those products are integer multiples of 2π2\pi, every linear combination is too. So the condition splits cleanly:

Gai  =  2πhiwith hiZ,i=1,2,3.\mathbf{G}\cdot\mathbf{a}_i \;=\; 2\pi\,h_i \quad\text{with } h_i \in \mathbb{Z}, \quad i = 1,2,3.

Translation: what just happened

The continuous condition "works for every lattice translation" collapses into three discrete conditions, one per primitive direction. That is the magic of having a basis: three integer constraints encode an infinity of translations. From here on it is linear algebra.


Three Wishes for the Reciprocal Basis

Following 1D's example, we look for three special basis vectors b1,b2,b3\mathbf{b}_1, \mathbf{b}_2, \mathbf{b}_3, such that every reciprocal lattice vector is an integer combination of them:

G  =  hb1+kb2+b3,(h,k,)Z3.\mathbf{G} \;=\; h\,\mathbf{b}_1 + k\,\mathbf{b}_2 + \ell\,\mathbf{b}_3, \qquad (h, k, \ell) \in \mathbb{Z}^3.

Plugging this expansion into Gai2πZ\mathbf{G}\cdot\mathbf{a}_i \in 2\pi\mathbb{Z} for arbitrary integers (h,k,)(h, k, \ell) works iff each cross-pairing biaj\mathbf{b}_i\cdot\mathbf{a}_j is already an integer multiple of 2π2\pi. The cleanest choice — the one that makes the bookkeeping trivial — is to demand

  biaj  =  2πδij  (i,j=1,2,3).\boxed{\;\mathbf{b}_i\cdot\mathbf{a}_j \;=\; 2\pi\,\delta_{ij}\;} \qquad (i, j = 1, 2, 3).

This is the duality condition. Read it carefully — it's nine equations packed into one. It says:

  1. Each bi\mathbf{b}_i is perpendicular to the two real-space basis vectors with different index. So b1a2\mathbf{b}_1 \perp \mathbf{a}_2 and b1a3\mathbf{b}_1 \perp \mathbf{a}_3.
  2. Each bi\mathbf{b}_i has its magnitude fixed by biai=2π\mathbf{b}_i \cdot \mathbf{a}_i = 2\pi.
  3. The three reciprocal vectors are independent: they form a basis of 3-space. (Otherwise the cross-pairings could not be a non-degenerate identity matrix.)
Read the boxed equation aloud once. "Reciprocal basis vectors are the triple perpendicular and inversely scaled to the real basis." That is reciprocal space in nine words.

Why δ_ij and not 1?

Some textbooks use biaj=δij\mathbf{b}_i\cdot\mathbf{a}_j = \delta_{ij} (no 2π2\pi) — the crystallographer's convention. Solid-state physicists and almost every electronic-structure code (VASP included) use biaj=2πδij\mathbf{b}_i\cdot\mathbf{a}_j = 2\pi\,\delta_{ij} because then eiGRe^{i\mathbf{G}\cdot\mathbf{R}} is automatically 1 for integer (h,k,)(h,k,\ell) and integer (n1,n2,n3)(n_1, n_2, n_3). We'll use the 2π2\pi convention throughout this book — but always check which convention a paper or program is using.


The Cross-Product Recipe

We have three conditions on each bi\mathbf{b}_i: it must be perpendicular to two given vectors, and have a specific dot product with the third. The cross product was invented for exactly this. By construction, a2×a3\mathbf{a}_2 \times \mathbf{a}_3 is perpendicular to both a2\mathbf{a}_2 and a3\mathbf{a}_3. So b1\mathbf{b}_1 must be parallel to it:

b1  =  λ(a2×a3).\mathbf{b}_1 \;=\; \lambda\,(\mathbf{a}_2 \times \mathbf{a}_3).

Fix the constant λ\lambda using the third condition b1a1=2π\mathbf{b}_1\cdot\mathbf{a}_1 = 2\pi:

λa1(a2×a3)=2π        λ  =  2πV,Va1(a2×a3).\lambda\,\mathbf{a}_1\cdot(\mathbf{a}_2 \times \mathbf{a}_3) = 2\pi \;\;\Longrightarrow\;\; \lambda \;=\; \frac{2\pi}{V}, \quad V \equiv \mathbf{a}_1\cdot(\mathbf{a}_2 \times \mathbf{a}_3).

Here VV is the volume of the unit cell — the scalar triple product is exactly the parallelepiped volume from first-year vector calculus. Cyclic permutation gives the other two:

  b1=2πVa2×a3,b2=2πVa3×a1,b3=2πVa1×a2.  \boxed{\;\mathbf{b}_1 = \frac{2\pi}{V}\,\mathbf{a}_2 \times \mathbf{a}_3, \quad \mathbf{b}_2 = \frac{2\pi}{V}\,\mathbf{a}_3 \times \mathbf{a}_1, \quad \mathbf{b}_3 = \frac{2\pi}{V}\,\mathbf{a}_1 \times \mathbf{a}_2.\;}

Three equations to memorise. They look symmetric on inspection — index ii appears nowhere on the right, while the cyclic (i+1,i+2)(i+1, i+2) pair shows up under the cross product. That is the same cyclic structure that appears in x^×y^=z^\hat{\mathbf{x}} \times \hat{\mathbf{y}} = \hat{\mathbf{z}} and friends — for an orthonormal real basis, the formula reduces to exactly that.

Sanity check the formula

Verify with a1=ax^,  a2=ay^,  a3=az^\mathbf{a}_1 = a\hat{\mathbf{x}},\;\mathbf{a}_2 = a\hat{\mathbf{y}},\;\mathbf{a}_3 = a\hat{\mathbf{z}}:V=a3V = a^3, a2×a3=a2x^\mathbf{a}_2 \times \mathbf{a}_3 = a^2\,\hat{\mathbf{x}}, so b1=(2π/a)x^\mathbf{b}_1 = (2\pi/a)\,\hat{\mathbf{x}} and similarly for b2,b3\mathbf{b}_2,\mathbf{b}_3. Beautiful: a cubic real lattice with side aa begets a cubic reciprocal lattice with side 2π/a2\pi/a, exactly what 1D told us.


Interactive — Real ↔ Reciprocal in 2D

In 2D the formula simplifies (no a3\mathbf{a}_3; the triple product becomes the signed area A=a1xa2ya1ya2xA = a_{1x}a_{2y} - a_{1y}a_{2x}):

b1=2πA(a2y,a2x),b2=2πA(a1y,a1x).\mathbf{b}_1 = \frac{2\pi}{A}\,(a_{2y}, -a_{2x}), \qquad \mathbf{b}_2 = \frac{2\pi}{A}\,(-a_{1y}, a_{1x}).

Translate that into geometry: each bi\mathbf{b}_i is the partner real vector rotated by 90° and scaled by 2π/A2\pi/A. Slide the controls below — rotate a2\mathbf{a}_2 and watch b1\mathbf{b}_1 swing rigidly with it (because b1a2\mathbf{b}_1 \perp \mathbf{a}_2); stretch a1|\mathbf{a}_1| and watch b2|\mathbf{b}_2| shrink. The duality table at the bottom should always read 1, 0, 0, 1.

Real lattice ↔ reciprocal lattice (2D)

drag the sliders

Left: the 2D real-space lattice with primitive vectors a₁ and a₂. Right: the corresponding reciprocal lattice with b₁ ⊥ a₂ and b₂ ⊥ a₁. Both lattices update live and the duality table at the bottom should always read 2π·δᵢⱼ.

Real spacescale: 1 Å ≈ 38 px
x (Å)a₁a₂
|a₁| = 3.00 Å|a₂| = 3.00 Åθ = 75°area = 8.693 Ų
Reciprocal spacescale: 1 Å⁻¹ ≈ 50 px
kₓ (Å⁻¹)b₁b₂
|b₁| = 2.168 Å⁻¹|b₂| = 2.168 Å⁻¹recip. area = 4.541 Å⁻²= (2π)²/area
Live duality check — bᵢ · aⱼ / (2π) should equal δᵢⱼ
a₁a₂
b₁1.000-0.000
b₂0.0001.000
✓ Identity holds for every choice of basis — that's the whole point of the formula.

Three things to notice while you play:

  • When the real cell is square (θ=90°\theta = 90°), b1a1\mathbf{b}_1 \parallel \mathbf{a}_1 and b2a2\mathbf{b}_2 \parallel \mathbf{a}_2. The reciprocal cell is a (smaller) square aligned with the real one.
  • When you skew the cell (θ90°\theta \neq 90°) the reciprocal cell skews too — but in the opposite direction, because rotation by 90° takes a clockwise tilt to a counterclockwise one.
  • Compressing the real cell (small AA) blows up the reciprocal cell (factor 2π/A2\pi/A). This is the inverse-relationship from the diffraction picture in Section 3.1, now made quantitative.

The Volume Formula and Its Magic

How big is the reciprocal unit cell? Compute its volume V=b1(b2×b3)V^* = \mathbf{b}_1\cdot(\mathbf{b}_2 \times \mathbf{b}_3) directly. After a short calculation (try it!) you find:

  V  =  (2π)3V.  \boxed{\;V^* \;=\; \frac{(2\pi)^3}{V}.\;}

Reciprocal volume is inversely proportional to real volume — exactly what the word "reciprocal" promises. This single line carries surprising physical content:

  1. Density of states. The number of allowed k\mathbf{k}-points per unit reciprocal volume in a finite crystal of NN unit cells is N/VN/V^*. As the crystal grows, k-states become dense and integrals replace sums.
  2. k-point sampling. Doubling each lattice vector (a 2×2×2 supercell, real volume up by 8) divides the reciprocal volume by 8 — so a coarser k-mesh suffices for the same Brillouin-zone resolution. This is the reason VASP's recommended KPOINTS density scales inversely with supercell size (Section 3.8).
  3. Diffraction spot density. A larger real cell → smaller reciprocal cell → more closely spaced Bragg spots. The diffraction fingerprint of every protein crystal lives on this fact.

Miller Indices, G-vectors, and d-spacing

We have built the reciprocal basis {b1,b2,b3}\{\mathbf{b}_1, \mathbf{b}_2, \mathbf{b}_3\} from the cross-product recipe and seen its volume (2π)3/V(2\pi)^3/V. Now we close the most important loop in this whole chapter — the one that ties crystallographic notation (Miller indices, lattice planes, plane spacings) to the reciprocal-space language we will use everywhere from here on. The single sentence to remember:

Miller indices are the components of a reciprocal-lattice vector. The triple (h,k,)(h, k, \ell) labels the vector Ghk=hb1+kb2+b3\mathbf{G}_{hk\ell} = h\mathbf{b}_1 + k\mathbf{b}_2 + \ell\mathbf{b}_3, and that vector is perpendicular to the (hkℓ) family of lattice planes, with length Ghk=2π/dhk|\mathbf{G}_{hk\ell}| = 2\pi/d_{hk\ell}.

Why G is normal to the (hkℓ) planes

Recall (Chapter 1) that the (hkℓ) plane is, by definition, the plane that intersects the three crystallographic axes at fractional distances a1/ha_1/h, a2/ka_2/k, and a3/a_3/\ell. Pick any two vectors u,v\mathbf{u}, \mathbf{v} lying in that plane; each one can be written as a difference of intercept points, e.g. u=a1/ha2/k\mathbf{u} = \mathbf{a}_1/h - \mathbf{a}_2/k. Now dot it with Ghk=hb1+kb2+b3\mathbf{G}_{hk\ell} = h\mathbf{b}_1 + k\mathbf{b}_2 + \ell\mathbf{b}_3 and use the duality biaj=2πδij\mathbf{b}_i\cdot\mathbf{a}_j = 2\pi\,\delta_{ij}:

Ghku  =  hb1(a1/h)kb2(a2/k)  =  2π2π  =  0.\mathbf{G}_{hk\ell}\cdot\mathbf{u} \;=\; h\,\mathbf{b}_1\cdot(\mathbf{a}_1/h) - k\,\mathbf{b}_2\cdot(\mathbf{a}_2/k) \;=\; 2\pi - 2\pi \;=\; 0.

The same is true for any other in-plane vector. So Ghk\mathbf{G}_{hk\ell} is orthogonal to every vector lying in the (hkℓ) plane — i.e. it is the plane's normal. That is the geometric content of the duality relation. No coordinates, no trigonometry — just the bra-ket pairing of real and reciprocal bases.

The d-spacing formula

Every lattice plane in the (hkℓ) family is parallel to every other — they share the same normal G^=G/G\hat{\mathbf{G}} = \mathbf{G}/|\mathbf{G}| — and they sit at evenly spaced distances dhkd_{hk\ell} from one another. To pin that spacing, write the position of any lattice point as R=n1a1+n2a2+n3a3\mathbf{R} = n_1\mathbf{a}_1 + n_2\mathbf{a}_2 + n_3\mathbf{a}_3 and project onto G^\hat{\mathbf{G}}:

RG^  =  RGG  =  2π(n1h+n2k+n3)G.\mathbf{R}\cdot\hat{\mathbf{G}} \;=\; \frac{\mathbf{R}\cdot\mathbf{G}}{|\mathbf{G}|} \;=\; \frac{2\pi(n_1 h + n_2 k + n_3 \ell)}{|\mathbf{G}|}.

The integer mn1h+n2k+n3m \equiv n_1 h + n_2 k + n_3 \ell labels the plane: m = 0 is the plane through the origin, m = 1 is the next one along, and so on. Their projections along G^\hat{\mathbf{G}} differ by 2π/G2\pi/|\mathbf{G}| for adjacent planes — and that gap, by definition, is dhkd_{hk\ell}:

  dhk  =  2πGhk.  \boxed{\;d_{hk\ell} \;=\; \frac{2\pi}{|\mathbf{G}_{hk\ell}|}.\;}

That is the single most-used formula in diffraction. It says: the denser the (hkℓ) planes are packed in real space, the longer the reciprocal vector that labels them. A close-packed family — dd small — sits far out in reciprocal space and only shows up at high diffraction angles. A loosely-packed family sits near the origin of reciprocal space and shows up at low angles.

What if (h, k, ℓ) share a common factor?

The triple (2,0,0)(2, 0, 0) describes the same family of planes as (1,0,0)(1, 0, 0) — but a different reciprocal vector. The (200) reflection in diffraction is the second-order reflection from the (100) plane stack, with half the spacing in real space and twice the |G| in reciprocal space. Bragg's "nλn\lambda" orders are absorbed into the Miller indices. So when a structure factor table lists (200) as a separate row from (100), it is not a redundancy — it is the n = 2 harmonic.

See it for yourself — 2D interactive

Drag the hh and kk sliders below. The left panel draws the (h k) family of lattice lines in a square real-space lattice; the right panel draws the single reciprocal-lattice vector Ghk\mathbf{G}_{hk}. Three relationships should be obvious:

  • The violet G-arrow on the right is perpendicular to every cyan line on the left — that is the duality theorem at work.
  • The amber arrow labelled dd measures the spacing of the (h k) lines, and the readout panel shows Gd2π|\mathbf{G}|\cdot d \equiv 2\pi for every (h, k) you pick (in the widget's reduced units this equals 1).
  • Larger Miller indices give a longer G and a smaller d — the planes crowd together as you index higher harmonics.

Miller indices, G-vectors, and d-spacing — drag the sliders

(h, k) = (2, 1)

On the left, a square real-space lattice with the family of (h k) lattice lines (the 2-D analogue of crystal planes). On the right, the reciprocal lattice with one arrow G = h·b₁ + k·b₂ drawn from the origin. Three things should be visible at a glance: the violet arrow is perpendicular to every line on the left; the spacing of those lines is d = 2π/|G|; and the Miller indices are simply the (integer) components of G in the reciprocal basis.

h2
k1
Real space — the (h k) lattice lines
Od
Reciprocal space — the G-vector
G = (2, 1)
Numeric readout
h = 2, k = 1
|G| = 2.236 · b*
d = 0.447 · a
|G|·d = 1.000 (in our reduced units this equals 1, i.e. 2π in physical units — the duality)
Try this
  • (1, 0) → vertical lines spaced by a
  • (1, 1) → diagonal lines spaced by a/√2
  • (2, 1) → tilted lines, smaller d
  • Bigger Miller indices ⇒ longer G ⇒ smaller d (planes get closer together).

The translator's phrasebook

From now on, treat the four phrases "the (hkℓ) reflection", "the reciprocal vector G with components h, k, ℓ", "the family of lattice planes labelled (hkℓ)" and "the Bragg peak at d = 2π/|G|" as identical. That single mental equivalence makes Section 3.6 (structure factor), Section 3.7 (systematic absences), and Chapter 5 (band structure paths in reciprocal space) read as one continuous idea.


Worked Example 1 — Simple Cubic

Real basis: a1=ax^,  a2=ay^,  a3=az^\mathbf{a}_1 = a\hat{\mathbf{x}},\; \mathbf{a}_2 = a\hat{\mathbf{y}},\; \mathbf{a}_3 = a\hat{\mathbf{z}}. Volume V=a3V = a^3. Cross products:

a2×a3=a2x^,a3×a1=a2y^,a1×a2=a2z^.\mathbf{a}_2 \times \mathbf{a}_3 = a^2\,\hat{\mathbf{x}}, \quad \mathbf{a}_3 \times \mathbf{a}_1 = a^2\,\hat{\mathbf{y}}, \quad \mathbf{a}_1 \times \mathbf{a}_2 = a^2\,\hat{\mathbf{z}}.

Therefore:

b1=2πax^,b2=2πay^,b3=2πaz^.\mathbf{b}_1 = \frac{2\pi}{a}\,\hat{\mathbf{x}}, \quad \mathbf{b}_2 = \frac{2\pi}{a}\,\hat{\mathbf{y}}, \quad \mathbf{b}_3 = \frac{2\pi}{a}\,\hat{\mathbf{z}}.

The reciprocal lattice is also simple cubic, with side 2π/a2\pi/a. For a=4A˚a = 4\,\text{Å}, the reciprocal cube has side 1.57A˚1\approx 1.57\,\text{Å}^{-1}. Reciprocal volume (2π/a)3=(2π)3/V(2\pi/a)^3 = (2\pi)^3/V. ✓


Worked Example 2 — FCC and the BCC Surprise

Now something genuinely beautiful happens. The primitive basis of an FCC lattice with conventional cube side aa is

a1=a2(0,1,1),    a2=a2(1,0,1),    a3=a2(1,1,0).\mathbf{a}_1 = \tfrac{a}{2}(0,1,1), \;\; \mathbf{a}_2 = \tfrac{a}{2}(1,0,1), \;\; \mathbf{a}_3 = \tfrac{a}{2}(1,1,0).

Volume: V=a1(a2×a3)=a3/4V = \mathbf{a}_1\cdot(\mathbf{a}_2 \times \mathbf{a}_3) = a^3/4 — exactly one-quarter of the conventional cube, as expected for FCC. Compute one cross product carefully:

a2×a3=a24(1,0,1)×(1,1,0)=a24(1,1,1).\mathbf{a}_2 \times \mathbf{a}_3 = \tfrac{a^2}{4}\,(1,0,1) \times (1,1,0) = \tfrac{a^2}{4}\,(-1, 1, 1).

So

b1=2πVa24(1,1,1)=2πa(1,1,1).\mathbf{b}_1 = \frac{2\pi}{V}\,\tfrac{a^2}{4}\,(-1,1,1) = \frac{2\pi}{a}\,(-1, 1, 1).

By cyclic permutation:

b2=2πa(1,1,1),b3=2πa(1,1,1).\mathbf{b}_2 = \frac{2\pi}{a}\,(1, -1, 1), \qquad \mathbf{b}_3 = \frac{2\pi}{a}\,(1, 1, -1).

Stop and look at those vectors. Each one points from a cube corner to the center of the cube of side 4π/a4\pi/a, with opposite-corner sign pattern. Up to scale, they are the primitive vectors of a body-centered cubic lattice. The reciprocal of FCC is BCC.

Loading 3D visualisation…

Why this is not a coincidence

Apply the cross-product recipe to the BCC primitive basis on the right (cube side 4π/a4\pi/a) — you get back FCC primitive vectors with cube side aa. The map "take the reciprocal lattice" is an involution: do it twice, return to start (modulo a factor that the 2π2\pi conventions handle for you). FCC and BCC are reciprocal twins — that is why every electronic-structure paper on noble metals (FCC) and group-V metals (BCC) looks at the same Brillouin-zone shape but with the labels swapped.

Real latticeReciprocal latticeConvention
Simple cubic, side aSimple cubic, side 2π/a
FCC, conventional side aBCC, conventional side 4π/aSelf-dual under double application
BCC, conventional side aFCC, conventional side 4π/aSelf-dual under double application
Hexagonal (a, c)Hexagonal (4π/(a√3), 2π/c)Rotated by 30° in basal plane

Worked Example 3 — Hexagonal

The hexagonal primitive basis (commonly used for wurtzite CdSe, GaN, graphene sheets):

a1=a(1,0,0),a2=a ⁣(12,32,0),a3=c(0,0,1).\mathbf{a}_1 = a(1, 0, 0), \quad \mathbf{a}_2 = a\!\left(-\tfrac{1}{2}, \tfrac{\sqrt{3}}{2}, 0\right), \quad \mathbf{a}_3 = c\,(0, 0, 1).

Volume V=32a2cV = \frac{\sqrt{3}}{2}\,a^2 c (basal-plane rhombus area times height). After working through the cross products:

b1=4πa3 ⁣(32,12,0),    b2=4πa3(0,1,0),    b3=2πc(0,0,1).\mathbf{b}_1 = \frac{4\pi}{a\sqrt{3}}\!\left(\tfrac{\sqrt{3}}{2}, \tfrac{1}{2}, 0\right), \;\; \mathbf{b}_2 = \frac{4\pi}{a\sqrt{3}}\,(0, 1, 0), \;\; \mathbf{b}_3 = \frac{2\pi}{c}\,(0, 0, 1).

Two observations: (i) the reciprocal lattice is also hexagonal, (ii) b1\mathbf{b}_1 and b2\mathbf{b}_2 are rotated by 30° relative to a1\mathbf{a}_1 and a2\mathbf{a}_2. This 30° twist is why the Brillouin zone of graphene and wurtzite has K and K' corners on perpendicular bisectors of the basal real-space lattice vectors — a fact you will use repeatedly when reading band structures.

A useful angle convention

In real-space hexagonal cells we usually take γ=(a1,a2)=120°\gamma = \angle(\mathbf{a}_1, \mathbf{a}_2) = 120°. In the reciprocal cell the corresponding angle becomes 60°. So the reciprocal hexagonal cell is rotated and reshaped — but it is still a 2-D hexagonal lattice.


Reciprocal Vectors in VASP — Reading the OUTCAR

VASP prints the reciprocal lattice vectors near the top of every OUTCAR file. For an FCC CdSe POSCAR with conventional side a=6.077A˚a = 6.077\,\text{Å} (primitive cell), the relevant block looks like:

📝text
1direct lattice vectors                 reciprocal lattice vectors
2   0.000000000  3.038500000  3.038500000   -0.164554  0.164554  0.164554
3   3.038500000  0.000000000  3.038500000    0.164554 -0.164554  0.164554
4   3.038500000  3.038500000  0.000000000    0.164554  0.164554 -0.164554
5
6  length of vectors
7       4.298  4.298  4.298     0.285  0.285  0.285

A subtle units fact

VASP's OUTCAR prints reciprocal lattice vectors without the factor of 2π. They are bi/(2π)\mathbf{b}_i / (2\pi) in units of A˚1\text{Å}^{-1}. So the VASP reciprocal vectors satisfy biVASPaj=δij\mathbf{b}_i^{\text{VASP}} \cdot \mathbf{a}_j = \delta_{ij} — the crystallographer convention. To recover the physics-textbook bi\mathbf{b}_i multiply VASP's row by 2π2\pi. This is the most common units trap when comparing VASP output to a textbook formula.

Sanity check: the OUTCAR row (0.164554,0.164554,0.164554)(-0.164554, 0.164554, 0.164554) times 2π2\pi equals (1.034,1.034,1.034)A˚1(-1.034, 1.034, 1.034)\,\text{Å}^{-1}. Compare with our hand-derivation: for FCC with a=6.077a = 6.077, b1=(2π/a)(1,1,1)=(1.034,1.034,1.034)A˚1\mathbf{b}_1 = (2\pi/a)(-1, 1, 1) = (-1.034, 1.034, 1.034)\,\text{Å}^{-1}. ✓ A perfect match.

One-line Python sanity check

🐍python
1import numpy as np
2
3# Direct lattice rows (Å) from POSCAR / OUTCAR
4A = np.array([
5    [0.0, 3.0385, 3.0385],
6    [3.0385, 0.0, 3.0385],
7    [3.0385, 3.0385, 0.0],
8])
9
10# Reciprocal lattice (physicist's convention, includes 2π)
11B = 2 * np.pi * np.linalg.inv(A).T
12
13print("b_i · a_j / (2π) =")
14print(np.round(B @ A.T / (2 * np.pi), 6))
15# Should print the 3x3 identity matrix.

The line B=2π(A1) ⁣B = 2\pi\,(A^{-1})^{\!\top} is the matrix form of the cross-product formula — and the most efficient way to compute reciprocal vectors numerically. We will use this snippet many times in later chapters.


Common Pitfalls

PitfallSymptomFix
Missing 2πYour computed b_i is 2π× too small (or too big), and the duality table reads 1/(2π) instead of 1.Choose a convention and stick with it. VASP OUTCAR uses the no-2π form; this book uses 2π.
Wrong volume signV = a₁·(a₂ × a₃) is negative, all b_i flip sign.Make sure your real basis is right-handed: a₁ × a₂ should point along +a₃.
Confusing primitive and conventional cellsFCC reciprocal computed from the conventional cube has 4× too small magnitudes.Always derive b_i from the primitive a_i. The conventional cell is for visualisation only.
Treating b_i as 'the column of A^{-1}'Off by a transpose; the duality table reads δ_ji instead of δ_ij.B is (A^{-1})ᵀ, with rows of B times 2π. Or equivalently, columns of (2π·A^{-1}).

Summary

  • A reciprocal lattice vector G\mathbf{G} is defined by eiGR=1e^{i\mathbf{G}\cdot\mathbf{R}} = 1 for every direct lattice vector. This single equation forces three integer constraints, one per primitive direction.
  • The reciprocal basis is the unique triple satisfying the duality relation biaj=2πδij\mathbf{b}_i \cdot \mathbf{a}_j = 2\pi\,\delta_{ij}.
  • Closed-form recipe: b1=(2π/V)a2×a3\mathbf{b}_1 = (2\pi/V)\,\mathbf{a}_2 \times \mathbf{a}_3 and cyclic permutations, with V=a1(a2×a3)V = \mathbf{a}_1 \cdot (\mathbf{a}_2 \times \mathbf{a}_3).
  • Reciprocal volume: V=(2π)3/VV^* = (2\pi)^3/V — the inverse-volume law that governs k-point density and diffraction-spot density.
  • The map "take the reciprocal lattice" sends simple cubic to simple cubic, and FCC ↔ BCC. These dualities are why so many materials with very different real-space pictures share the same Brillouin-zone shape.
  • Conventions matter: biaj=2πδij\mathbf{b}_i \cdot \mathbf{a}_j = 2\pi\,\delta_{ij} (physics, used in this book and in plane-wave calculations) vs. =δij= \delta_{ij} (crystallography, used in VASP's OUTCAR display). The physics is identical, but the printed numbers differ by 2π2\pi.
  • One line of NumPy — B = 2*np.pi*np.linalg.inv(A).T — encodes the entire chapter so far.
Section 3.2 Core Insight
"The reciprocal basis is the unique triple of vectors perpendicular and inversely scaled to the real basis. Three cross products and one volume are all you ever need to compute it."
Coming next: Section 3.3 — The First Brillouin Zone — where we carve up reciprocal space into the unique region every physical wavevector can be reduced into, and discover that this region is the Wigner–Seitz cell of the reciprocal lattice you just built.
Loading comments...