Generating \(k \cdot p\) models

See also

The complete source code of this example can be found in kdotp_generator.py. A Jupyter notebook can be found in kdotp_generator.ipynb.

In the Bloch generator tutorial we saw how to generate tight-binding Hamiltonians using Qsymm. In this tutorial we will explore how to generate \(k \cdot p\) Hamiltonians.

Hexagonal warping

We reproduce the effective Hamiltonian derived in Phys. Rev. Lett. 103, 266801 (2009) to explain hexagonal warping effects in the surface dispersion of a topological insulator.

The symmetry group is generated by threefold rotation symmetry, mirror symmetry and time-reversal symmetry.

# C3 rotational symmetry - invariant under 2pi/3
C3 = qsymm.rotation(1/3, spin=1/2)

# Time reversal
TR = qsymm.time_reversal(2, spin=1/2)

# Mirror symmetry in x
Mx = qsymm.mirror([1, 0], spin=1/2)

symmetries = [C3, TR, Mx]

The Hamiltonian includes the momenta \(k_x\) and \(k_y\), and contains terms up to third order in momenta.

dim = 2  # Momenta along x and y
total_power = 3  # Maximum power of momenta

We use continuum_hamiltonian to generate the Hamiltonian family:

family = qsymm.continuum_hamiltonian(symmetries, dim, total_power, prettify=True)
qsymm.display_family(family)
\[\begin{split}\displaystyle \left[\begin{matrix}1 & 0\\0 & 1\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & i k_{x} + k_{y}\\- i k_{x} + k_{y} & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}k_{x}^{2} + k_{y}^{2} & 0\\0 & k_{x}^{2} + k_{y}^{2}\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}k_{x}^{3} - 3 k_{x} k_{y}^{2} & 0\\0 & - k_{x}^{3} + 3 k_{x} k_{y}^{2}\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & i k_{x}^{3} + k_{x}^{2} k_{y} + i k_{x} k_{y}^{2} + k_{y}^{3}\\- i k_{x}^{3} + k_{x}^{2} k_{y} - i k_{x} k_{y}^{2} + k_{y}^{3} & 0\end{matrix}\right]\end{split}\]

We can then verify that the Hamiltonian family satisfies the symmetries:

qsymm.hamiltonian_generator.check_symmetry(family, symmetries)

BHZ model

We reproduce the Hamiltonian for the quantum spin Hall effect derived in Science, 314, 1757 (2006).

The symmetry group is generated by spatial inversion symmetry, time-reversal symmetry and fourfold rotation symmetry.

# Spatial inversion
pU = np.array([
    [1.0, 0.0, 0.0, 0.0],
    [0.0, -1.0, 0.0, 0.0],
    [0.0, 0.0, 1.0, 0.0],
    [0.0, 0.0, 0.0, -1.0],
])
pS = qsymm.inversion(2, U=pU)

# Time reversal
trU = np.array([
    [0.0, 0.0, -1.0, 0.0],
    [0.0, 0.0, 0.0, -1.0],
    [1.0, 0.0, 0.0, 0.0],
    [0.0, 1.0, 0.0, 0.0],
])
trS = qsymm.time_reversal(2, U=trU)

# Rotation
phi = 2.0 * np.pi / 4.0  # Impose 4-fold rotational symmetry
rotU = np.array([
    [np.exp(-1j*phi/2), 0.0, 0.0, 0.0],
    [0.0, np.exp(-1j*3*phi/2), 0.0, 0.0],
    [0.0, 0.0, np.exp(1j*phi/2), 0.0],
    [0.0, 0.0, 0.0, np.exp(1j*3*phi/2)],
])
rotS = qsymm.rotation(1/4, U=rotU)

symmetries = [rotS, trS, pS]

The Hamiltonian includes the momenta \(k_x\) and \(k_y\), with terms up to second order.

dim = 2
total_power = 2
family = qsymm.continuum_hamiltonian(symmetries, dim, total_power, prettify=True)
qsymm.display_family(family)
\[\begin{split}\displaystyle \left[\begin{matrix}1 & 0 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 1 & 0\\0 & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & 0\\0 & 1 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 0 & 1\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & k_{x} + i k_{y} & 0 & 0\\k_{x} - i k_{y} & 0 & 0 & 0\\0 & 0 & 0 & - k_{x} + i k_{y}\\0 & 0 & - k_{x} - i k_{y} & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & i k_{x} - k_{y} & 0 & 0\\- i k_{x} - k_{y} & 0 & 0 & 0\\0 & 0 & 0 & i k_{x} + k_{y}\\0 & 0 & - i k_{x} + k_{y} & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}k_{x}^{2} + k_{y}^{2} & 0 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & k_{x}^{2} + k_{y}^{2} & 0\\0 & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & 0\\0 & k_{x}^{2} + k_{y}^{2} & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 0 & k_{x}^{2} + k_{y}^{2}\end{matrix}\right]\end{split}\]

Three-dimensional topological insulator

We reproduce the Hamiltonian for a three-dimensional topological insulator introduced in Nature Physics 5, 438–442 (2009).

The symmetry group is generated by threefold rotation symmetry around z, inversion symmetry and time-reversal symmetry.

# Spatial inversion
pU = np.diag([1, -1, 1, -1])
pS = qsymm.inversion(3, pU)

# Time reversal
trU = np.array([
    [0.0, 0.0, -1.0, 0.0],
    [0.0, 0.0, 0.0, -1.0],
    [1.0, 0.0, 0.0, 0.0],
    [0.0, 1.0, 0.0, 0.0],
])
trS = qsymm.time_reversal(3, trU)

# Rotation
phi = 2.0 * np.pi / 3.0  # Impose 3-fold rotational symmetry
rotU = np.array([
    [np.exp(1j*phi/2), 0.0, 0.0, 0.0],
    [0.0, np.exp(1j*phi/2), 0.0, 0.0],
    [0.0, 0.0, np.exp(-1j*phi/2), 0.0],
    [0.0, 0.0, 0.0, np.exp(-1j*phi/2)],
])
rotS = qsymm.rotation(1/3, axis=[0, 0, 1], U=rotU)

symmetries = [rotS, trS, pS]

The model includes the momenta \(k_x\), \(k_y\) and \(k_z\), up to second order.

dim = 3
total_power = 2
family = qsymm.continuum_hamiltonian(symmetries, dim, total_power, prettify=True)
qsymm.display_family(family)
\[\begin{split}\displaystyle \left[\begin{matrix}1 & 0 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 1 & 0\\0 & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & 0\\0 & 1 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 0 & 1\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & k_{x} + i k_{y}\\0 & 0 & k_{x} + i k_{y} & 0\\0 & k_{x} - i k_{y} & 0 & 0\\k_{x} - i k_{y} & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & i k_{x} - k_{y}\\0 & 0 & i k_{x} - k_{y} & 0\\0 & - i k_{x} - k_{y} & 0 & 0\\- i k_{x} - k_{y} & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & k_{z} & 0 & 0\\k_{z} & 0 & 0 & 0\\0 & 0 & 0 & - k_{z}\\0 & 0 & - k_{z} & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & i k_{z} & 0 & 0\\- i k_{z} & 0 & 0 & 0\\0 & 0 & 0 & i k_{z}\\0 & 0 & - i k_{z} & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}k_{x}^{2} + k_{y}^{2} & 0 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & k_{x}^{2} + k_{y}^{2} & 0\\0 & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & 0\\0 & k_{x}^{2} + k_{y}^{2} & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 0 & k_{x}^{2} + k_{y}^{2}\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}k_{z}^{2} & 0 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & k_{z}^{2} & 0\\0 & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & 0\\0 & k_{z}^{2} & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 0 & k_{z}^{2}\end{matrix}\right]\end{split}\]

Continuous rotations

Rotation in real and spin space with spin 1/2. Should have linear Rashba-term as there is no inversion symmetry.

# 3D real space rotation generators
L = qsymm.groups.L_matrices(3)
# Spin-1/2 matrices
S = qsymm.groups.spin_matrices(1/2)
# Spin-3/2 spin matrices
J = qsymm.groups.spin_matrices(3/2)
# Continuous rotation generators
symmetries = [qsymm.ContinuousGroupGenerator(l, s) for l, s in zip(L, S)]

dim = 3
total_power = 2

family = qsymm.continuum_hamiltonian(symmetries, dim, total_power, prettify=True)
qsymm.display_family(family)
\[\begin{split}\displaystyle \left[\begin{matrix}1 & 0\\0 & 1\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}k_{z} & k_{x} - i k_{y}\\k_{x} + i k_{y} & - k_{z}\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}k_{x}^{2} + k_{y}^{2} + k_{z}^{2} & 0\\0 & k_{x}^{2} + k_{y}^{2} + k_{z}^{2}\end{matrix}\right]\end{split}\]

Also impose inversion symmetry, which removes the linear Rashba term.

symmetries = [qsymm.ContinuousGroupGenerator(l, s) for l, s in zip(L, S)]
# Add inversion
symmetries.append(qsymm.PointGroupElement(-np.eye(3), False, False, np.eye(2)))
dim = 3
total_power = 2
family = qsymm.continuum_hamiltonian(symmetries, dim, total_power, prettify=True)
qsymm.display_family(family)
\[\begin{split}\displaystyle \left[\begin{matrix}1 & 0\\0 & 1\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}k_{x}^{2} + k_{y}^{2} + k_{z}^{2} & 0\\0 & k_{x}^{2} + k_{y}^{2} + k_{z}^{2}\end{matrix}\right]\end{split}\]

Rotations in real and spin space with spin 3/2.

symmetries = [qsymm.ContinuousGroupGenerator(l, s) for l, s in zip(L, J)]
dim = 3
total_power = 2
family = qsymm.continuum_hamiltonian(symmetries, dim, total_power, prettify=True)
qsymm.display_family(family)
\[\begin{split}\displaystyle \left[\begin{matrix}1 & 0 & 0 & 0\\0 & 1 & 0 & 0\\0 & 0 & 1 & 0\\0 & 0 & 0 & 1\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}\sqrt{3} k_{z} & k_{x} - i k_{y} & 0 & 0\\k_{x} + i k_{y} & \frac{\sqrt{3} k_{z}}{3} & \frac{2 \sqrt{3} k_{x}}{3} - \frac{2 \sqrt{3} i k_{y}}{3} & 0\\0 & \frac{2 \sqrt{3} k_{x}}{3} + \frac{2 \sqrt{3} i k_{y}}{3} & - \frac{\sqrt{3} k_{z}}{3} & k_{x} - i k_{y}\\0 & 0 & k_{x} + i k_{y} & - \sqrt{3} k_{z}\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}- \frac{\sqrt{3} k_{z}^{2}}{2} & - k_{x} k_{z} + i k_{y} k_{z} & - \frac{k_{x}^{2}}{2} + i k_{x} k_{y} + \frac{k_{y}^{2}}{2} & 0\\- k_{x} k_{z} - i k_{y} k_{z} & - \frac{\sqrt{3} k_{x}^{2}}{3} - \frac{\sqrt{3} k_{y}^{2}}{3} + \frac{\sqrt{3} k_{z}^{2}}{6} & 0 & - \frac{k_{x}^{2}}{2} + i k_{x} k_{y} + \frac{k_{y}^{2}}{2}\\- \frac{k_{x}^{2}}{2} - i k_{x} k_{y} + \frac{k_{y}^{2}}{2} & 0 & - \frac{\sqrt{3} k_{x}^{2}}{3} - \frac{\sqrt{3} k_{y}^{2}}{3} + \frac{\sqrt{3} k_{z}^{2}}{6} & k_{x} k_{z} - i k_{y} k_{z}\\0 & - \frac{k_{x}^{2}}{2} - i k_{x} k_{y} + \frac{k_{y}^{2}}{2} & k_{x} k_{z} + i k_{y} k_{z} & - \frac{\sqrt{3} k_{z}^{2}}{2}\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}k_{x}^{2} + k_{y}^{2} + k_{z}^{2} & 0 & 0 & 0\\0 & k_{x}^{2} + k_{y}^{2} + k_{z}^{2} & 0 & 0\\0 & 0 & k_{x}^{2} + k_{y}^{2} + k_{z}^{2} & 0\\0 & 0 & 0 & k_{x}^{2} + k_{y}^{2} + k_{z}^{2}\end{matrix}\right]\end{split}\]

Distorted SnTe

Reproduce the \(k \cdot p\) model for SnTe used in Phys. Rev. Lett. 122, 186801 (2019)

The symmetry group is generated by three-fold rotation symmetry, mirror symmetry in \(x\), inversion symmetry, and time-reversal symmetry.

# Double spin-1/2 representation
spin = [np.kron(s, np.eye(2)) for s in qsymm.groups.spin_matrices(1/2)]
# C3 rotational symmetry
C3 = qsymm.rotation(1/3, axis=[0, 0, 1], spin=spin)

# Time reversal
TR = qsymm.time_reversal(3, spin=spin)

# Mirror x
Mx = qsymm.mirror([1, 0, 0], spin=spin)

# Inversion
IU = np.kron(np.eye(2), np.diag([1, -1]))
I = qsymm.inversion(3, IU)
dim = 3
total_power = 2
family = qsymm.continuum_hamiltonian([C3, TR, Mx, I], dim, total_power, prettify=True)
qsymm.display_family(family)
\[\begin{split}\displaystyle \left[\begin{matrix}1 & 0 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 1 & 0\\0 & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & 0\\0 & 1 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 0 & 1\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & i k_{x} + k_{y}\\0 & 0 & i k_{x} + k_{y} & 0\\0 & - i k_{x} + k_{y} & 0 & 0\\- i k_{x} + k_{y} & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & i k_{z} & 0 & 0\\- i k_{z} & 0 & 0 & 0\\0 & 0 & 0 & i k_{z}\\0 & 0 & - i k_{z} & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}k_{x}^{2} + k_{y}^{2} & 0 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & k_{x}^{2} + k_{y}^{2} & 0\\0 & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & 0\\0 & k_{x}^{2} + k_{y}^{2} & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 0 & k_{x}^{2} + k_{y}^{2}\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}k_{z}^{2} & 0 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & k_{z}^{2} & 0\\0 & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & 0\\0 & k_{z}^{2} & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 0 & k_{z}^{2}\end{matrix}\right]\end{split}\]

There are 3 combinations proportional to the identity. Generate all terms proportional to the identity and subtract them.

identity_terms = qsymm.continuum_hamiltonian([qsymm.groups.identity(dim, 1)], dim, total_power)
identity_terms = [
    qsymm.Model({
        key: np.kron(val, np.eye(4))
        for key, val in term.items()
    })
    for term in identity_terms
]

family = qsymm.hamiltonian_generator.subtract_family(family, identity_terms, prettify=True)
qsymm.display_family(family)
\[\begin{split}\displaystyle \left[\begin{matrix}1 & 0 & 0 & 0\\0 & -1 & 0 & 0\\0 & 0 & 1 & 0\\0 & 0 & 0 & -1\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & i k_{x} + k_{y}\\0 & 0 & i k_{x} + k_{y} & 0\\0 & - i k_{x} + k_{y} & 0 & 0\\- i k_{x} + k_{y} & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & i k_{z} & 0 & 0\\- i k_{z} & 0 & 0 & 0\\0 & 0 & 0 & i k_{z}\\0 & 0 & - i k_{z} & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}k_{x}^{2} + k_{y}^{2} & 0 & 0 & 0\\0 & - k_{x}^{2} - k_{y}^{2} & 0 & 0\\0 & 0 & k_{x}^{2} + k_{y}^{2} & 0\\0 & 0 & 0 & - k_{x}^{2} - k_{y}^{2}\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}k_{z}^{2} & 0 & 0 & 0\\0 & - k_{z}^{2} & 0 & 0\\0 & 0 & k_{z}^{2} & 0\\0 & 0 & 0 & - k_{z}^{2}\end{matrix}\right]\end{split}\]

Break C3 symmetry

Removing the C3 symmetry, we find 8 additional terms, or 11 after removing terms proportional to the identity.

dim = 3
total_power = 2
no_c3_family = qsymm.continuum_hamiltonian([TR, Mx, I], dim, total_power, prettify=True)
no_c3_family = qsymm.hamiltonian_generator.subtract_family(no_c3_family, identity_terms, prettify=True)

The new terms are given in the following.

new_terms = qsymm.hamiltonian_generator.subtract_family(no_c3_family, family, prettify=True)
qsymm.display_family(new_terms)
\[\begin{split}\displaystyle \left[\begin{matrix}0 & k_{x} & 0 & 0\\k_{x} & 0 & 0 & 0\\0 & 0 & 0 & - k_{x}\\0 & 0 & - k_{x} & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & i k_{x} - k_{y}\\0 & 0 & i k_{x} - k_{y} & 0\\0 & - i k_{x} - k_{y} & 0 & 0\\- i k_{x} - k_{y} & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & i k_{y} & 0 & 0\\- i k_{y} & 0 & 0 & 0\\0 & 0 & 0 & i k_{y}\\0 & 0 & - i k_{y} & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & k_{z}\\0 & 0 & k_{z} & 0\\0 & k_{z} & 0 & 0\\k_{z} & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}k_{y} k_{z} & 0 & 0 & 0\\0 & - k_{y} k_{z} & 0 & 0\\0 & 0 & k_{y} k_{z} & 0\\0 & 0 & 0 & - k_{y} k_{z}\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}- k_{x}^{2} + k_{y}^{2} & 0 & 0 & 0\\0 & k_{x}^{2} - k_{y}^{2} & 0 & 0\\0 & 0 & - k_{x}^{2} + k_{y}^{2} & 0\\0 & 0 & 0 & k_{x}^{2} - k_{y}^{2}\end{matrix}\right]\end{split}\]

Break inversion symmetry

Breaking inversion symmetry as well yields 22 additional terms.

dim = 3
total_power = 2
broken_family = qsymm.continuum_hamiltonian([TR, Mx], dim, total_power, prettify=True)
broken_family = qsymm.hamiltonian_generator.subtract_family(broken_family, identity_terms, prettify=True)
new_terms = qsymm.hamiltonian_generator.subtract_family(broken_family, no_c3_family, prettify=True)
qsymm.display_family(new_terms)
\[\begin{split}\displaystyle \left[\begin{matrix}0 & k_{z}^{2} & 0 & 0\\k_{z}^{2} & 0 & 0 & 0\\0 & 0 & 0 & k_{z}^{2}\\0 & 0 & k_{z}^{2} & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & i k_{z}^{2}\\0 & 0 & - i k_{z}^{2} & 0\\0 & i k_{z}^{2} & 0 & 0\\- i k_{z}^{2} & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}k_{x} & 0 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & - k_{x} & 0\\0 & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & 0\\0 & k_{x} & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 0 & - k_{x}\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & i k_{x} & 0\\0 & 0 & 0 & 0\\- i k_{x} & 0 & 0 & 0\\0 & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & 0\\0 & 0 & 0 & i k_{x}\\0 & 0 & 0 & 0\\0 & - i k_{x} & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & k_{y} & 0\\0 & 0 & 0 & 0\\k_{y} & 0 & 0 & 0\\0 & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & 0\\0 & 0 & 0 & k_{y}\\0 & 0 & 0 & 0\\0 & k_{y} & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 1 & 0 & 0\\1 & 0 & 0 & 0\\0 & 0 & 0 & 1\\0 & 0 & 1 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & i\\0 & 0 & - i & 0\\0 & i & 0 & 0\\- i & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & k_{z} & 0\\0 & 0 & 0 & 0\\k_{z} & 0 & 0 & 0\\0 & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & 0\\0 & 0 & 0 & k_{z}\\0 & 0 & 0 & 0\\0 & k_{z} & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & k_{y} k_{z} & 0 & 0\\k_{y} k_{z} & 0 & 0 & 0\\0 & 0 & 0 & k_{y} k_{z}\\0 & 0 & k_{y} k_{z} & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & i k_{y} k_{z}\\0 & 0 & - i k_{y} k_{z} & 0\\0 & i k_{y} k_{z} & 0 & 0\\- i k_{y} k_{z} & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & k_{y}^{2} & 0 & 0\\k_{y}^{2} & 0 & 0 & 0\\0 & 0 & 0 & k_{y}^{2}\\0 & 0 & k_{y}^{2} & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & i k_{y}^{2}\\0 & 0 & - i k_{y}^{2} & 0\\0 & i k_{y}^{2} & 0 & 0\\- i k_{y}^{2} & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & k_{x} k_{y}\\0 & 0 & - k_{x} k_{y} & 0\\0 & - k_{x} k_{y} & 0 & 0\\k_{x} k_{y} & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & i k_{x} k_{y} & 0 & 0\\- i k_{x} k_{y} & 0 & 0 & 0\\0 & 0 & 0 & - i k_{x} k_{y}\\0 & 0 & i k_{x} k_{y} & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & k_{x} k_{z}\\0 & 0 & - k_{x} k_{z} & 0\\0 & - k_{x} k_{z} & 0 & 0\\k_{x} k_{z} & 0 & 0 & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & i k_{x} k_{z} & 0 & 0\\- i k_{x} k_{z} & 0 & 0 & 0\\0 & 0 & 0 & - i k_{x} k_{z}\\0 & 0 & i k_{x} k_{z} & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & k_{x}^{2} & 0 & 0\\k_{x}^{2} & 0 & 0 & 0\\0 & 0 & 0 & k_{x}^{2}\\0 & 0 & k_{x}^{2} & 0\end{matrix}\right]\end{split}\]
\[\begin{split}\displaystyle \left[\begin{matrix}0 & 0 & 0 & i k_{x}^{2}\\0 & 0 & - i k_{x}^{2} & 0\\0 & i k_{x}^{2} & 0 & 0\\- i k_{x}^{2} & 0 & 0 & 0\end{matrix}\right]\end{split}\]