Classifying TE-like and TM-like Bands
A field-based method for classifying TE-like and TM-like modes in a symmetric photonic-crystal slab computed with Legume.
Computing a photonic-crystal slab band structure is only half of the problem; the modes must also be labeled correctly. In particular, Legume’s kz_symms output is not the conventional TE-like/TM-like classification. This note shows how to recover that classification from the electric field of each mode.
The complete calculation is available in the nanocompute-learn repository.
1. Model system
Consider a mirror-symmetric square-lattice slab in Ref. [2]. The silicon-nitride slab has refractive index , thickness , and period . Each unit cell contains a circular silica hole of radius , and the upper and lower claddings are silica with .
The structure is constructed in Legume as follows:
import legume
import numpy as np
n_sin = 2.02
n_sio2 = 1.46
a = 336.0
slab_thickness = 180.0 / a
hole_radius = 80.0 / a
lattice = legume.Lattice("square")
phc = legume.PhotCryst(lattice, eps_l=n_sio2**2, eps_u=n_sio2**2)
phc.add_layer(d=slab_thickness, eps_b=n_sin**2)
phc.layers[-1].add_shape(
legume.Circle(eps=n_sio2**2, r=hole_radius)
)2. Full band calculation
We use Legume’s guided-mode expansion (GME) along the path. Frequencies are reported in the dimensionless form . For cladding index , the light line is
Modes above this line lie in the cladding radiation continuum and can acquire a finite radiative linewidth.
gme = legume.GuidedModeExp(phc, gmax=5, truncate_g="abs")
path = lattice.bz_path(["M", "G", "X"], [120, 84])
gme.run(
kpoints=path["kpoints"],
angles=path["angles"],
gmode_inds=[0, 1, 2, 3],
numeig=11,
kz_symmetry="both",
verbose=True,
)This calculation uses 81 reciprocal-lattice vectors and returns 11 modes at each of 205 wavevectors. These settings are sufficient for the present comparison, but quantitative frequencies and quality factors should always be checked for convergence with respect to gmax, gmode_inds, and numeig.
3. Why kz_symms is not TE/TM
Legume’s kz_symms labels parity with respect to the vertical plane spanned by the propagation direction and . This plane changes with the direction of . By contrast, the conventional TE-like/TM-like classification of a mirror-symmetric slab refers to reflection through the horizontal slab mid-plane, [1].
For the electric field at :
- A TE-like mode has predominantly in-plane electric field; its odd component vanishes at the mid-plane.
- A TM-like mode has a finite, typically dominant, out-of-plane component at the mid-plane.
The two labels therefore answer different symmetry questions and cannot be substituted for one another.
4. Repairing the acoustic modes at Gamma point
In this calculation, the GME basis at the exact point contains 313 states, compared with 314 at its two neighboring wavevectors. Inspection of the guided-mode blocks shows that one TM basis component is absent when . Consequently, Legume returns only one near-zero acoustic mode at , although both the TE-like and TM-like branches approach zero.
Before classifying or connecting the bands, we duplicate the computed zero into the missing physical branch and shift the remaining -point data by one index. The same operation must be applied to the frequencies, losses, symmetry labels, and field-derived quantities. This is an alignment correction specific to the observed basis drop; it should not be applied without first verifying the neighboring basis sizes.
def restore_missing_gamma_mode(values, gamma_index, inserted_value=None):
"""Insert the TM acoustic branch omitted at the exact Gamma point."""
repaired = np.asarray(values).copy()
repaired[gamma_index, 1:] = repaired[gamma_index, :-1]
if inserted_value is not None:
repaired[gamma_index, 1] = inserted_value
return repaired5. Field-based classification
For every mode, Legume provides the Fourier coefficients of the electric field. We define a mid-plane TM fraction
Modes with are labeled TM-like; the remainder are labeled TE-like. The threshold is a practical separator for this structure, not a universal constant. It should be validated by inspecting the distribution of , especially for asymmetric slabs or strongly hybridized modes.
def compute_midplane_tm_fraction(gme, z=0.0):
"""Return the fractional mid-plane electric-field power in Ez."""
frequencies = np.asarray(gme.freqs, dtype=float)
tm_fraction = np.full(frequencies.shape, np.nan)
for k_index in range(frequencies.shape[0]):
for mode_index in range(frequencies.shape[1]):
ex_ft, ey_ft, ez_ft = gme.ft_field_xy(
"E", k_index, mode_index, z
)
component_power = np.array([
np.sum(np.abs(ex_ft) ** 2),
np.sum(np.abs(ey_ft) ** 2),
np.sum(np.abs(ez_ft) ** 2),
])
if component_power.sum() > 0:
tm_fraction[k_index, mode_index] = (
component_power[2] / component_power.sum()
)
return tm_fractionAfter classification, modes of the same polarization are connected between adjacent wavevectors by frequency continuity. This produces six visible TE-like branches and five visible TM-like branches below for the selected numerical settings.
6. Summary
The central point is simple: solver symmetry labels and physical polarization labels are not automatically equivalent. For this symmetric slab, TE-like and TM-like modes are most directly identified from their electric-field content at the slab mid-plane. The classification should be performed only after checking the special handling of the acoustic modes at , and any quantitative conclusion should be supported by a basis-convergence test.
References
- John D. Joannopoulos, Steven G. Johnson, Joshua N. Winn, and Robert D. Meade. Photonic Crystals: Molding the Flow of Light, 2nd ed., Princeton University Press (2008).
- Chia Wei Hsu, Bo Zhen, Jeongwon Lee, Song-Liang Chua, Steven G. Johnson, John D. Joannopoulos, and Marin Soljačić. Observation of trapped light within the radiation continuum, Nature 499, 188-191 (2013).
