Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Ok-landscape
GitHub Repository: Ok-landscape/computational-pipeline
Path: blob/main/latex-templates/templates/photonics/photonic_crystals.tex
51 views
unlisted
1
\documentclass[11pt,a4paper]{article}
2
\usepackage[utf8]{inputenc}
3
\usepackage[T1]{fontenc}
4
\usepackage{amsmath,amssymb}
5
\usepackage{graphicx}
6
\usepackage{booktabs}
7
\usepackage{siunitx}
8
\usepackage{geometry}
9
\geometry{margin=1in}
10
\usepackage{pythontex}
11
\usepackage{hyperref}
12
\usepackage{float}
13
14
\title{Photonic Crystals: Band Structure and Optical Properties}
15
\author{Photonics Research Group}
16
\date{\today}
17
18
\begin{document}
19
\maketitle
20
21
\begin{abstract}
22
Photonic crystals are periodic dielectric structures that exhibit photonic band gaps—frequency ranges in which electromagnetic wave propagation is forbidden. This report presents computational analysis of one-dimensional (1D) Bragg stacks using transfer matrix methods, examining band structure formation, reflectance spectra, defect mode engineering, and slow light phenomena. We calculate the photonic band gap for a quarter-wave stack with alternating refractive indices of 1.45 and 3.5, demonstrating complete reflection within the gap and the emergence of localized defect states when periodicity is broken. Applications in optical fibers, LEDs, and photonic sensors are discussed.
23
\end{abstract}
24
25
\section{Introduction}
26
27
Photonic crystals are the optical analogue of electronic semiconductors, where periodic modulation of the dielectric constant creates allowed and forbidden frequency bands for photon propagation~\cite{Joannopoulos2008,Yablonovitch1987}. The concept emerged from two seminal 1987 papers by Yablonovitch and John, who independently recognized that photonic band gaps could control spontaneous emission and enable localization of light~\cite{Yablonovitch1987,John1987}.
28
29
The fundamental physics relies on Bloch's theorem: in a periodic medium with lattice constant $a$ and dielectric function $\epsilon(\mathbf{r} + \mathbf{R}) = \epsilon(\mathbf{r})$, electromagnetic modes satisfy:
30
\begin{equation}
31
\mathbf{E}_{\mathbf{k}}(\mathbf{r}) = e^{i\mathbf{k}\cdot\mathbf{r}} \mathbf{u}_{\mathbf{k}}(\mathbf{r})
32
\end{equation}
33
where $\mathbf{u}_{\mathbf{k}}(\mathbf{r})$ has the periodicity of the lattice. The dispersion relation $\omega(\mathbf{k})$ forms photonic bands separated by gaps where propagation is forbidden~\cite{Joannopoulos2008}.
34
35
Photonic crystals exist in 1D (Bragg stacks), 2D (photonic crystal fibers), and 3D (woodpile, diamond lattices) geometries. While 3D structures require sophisticated fabrication, 1D systems are readily manufactured via thin-film deposition and exhibit band gaps for normal incidence~\cite{Yeh1988,Macleod2010}.
36
37
\begin{pycode}
38
import numpy as np
39
import matplotlib.pyplot as plt
40
from scipy.linalg import eigvals
41
plt.rcParams['text.usetex'] = True
42
plt.rcParams['font.family'] = 'serif'
43
plt.rcParams['font.size'] = 10
44
\end{pycode}
45
46
\section{Transfer Matrix Method for 1D Photonic Crystals}
47
48
For a stratified medium, the transfer matrix method provides exact solutions to Maxwell's equations. Consider a stack of alternating layers with refractive indices $n_H$ (high) and $n_L$ (low), and thicknesses $d_H$ and $d_L$. For a wave at frequency $\omega$ and angle $\theta$, the transfer matrix across one unit cell is~\cite{Yeh1988}:
49
50
\begin{equation}
51
M = M_H M_L = \begin{pmatrix}
52
\cos\phi_H & \frac{i}{p_H}\sin\phi_H \\
53
ip_H\sin\phi_H & \cos\phi_H
54
\end{pmatrix}
55
\begin{pmatrix}
56
\cos\phi_L & \frac{i}{p_L}\sin\phi_L \\
57
ip_L\sin\phi_L & \cos\phi_L
58
\end{pmatrix}
59
\end{equation}
60
61
where $\phi_j = \frac{\omega}{c} n_j d_j \cos\theta_j$ is the phase thickness and $p_j = n_j\cos\theta_j$ for TE polarization. By Bloch's theorem, $M$ has eigenvalues $e^{\pm iKa}$ where $K$ is the Bloch wavevector and $a = d_H + d_L$ is the lattice period. The dispersion relation is:
62
63
\begin{equation}
64
\cos(Ka) = \frac{1}{2}\text{Tr}(M) = \cos\phi_H\cos\phi_L - \frac{1}{2}\left(\frac{p_H}{p_L} + \frac{p_L}{p_H}\right)\sin\phi_H\sin\phi_L
65
\end{equation}
66
67
Photonic band gaps occur when $|\cos(Ka)| > 1$, causing $K$ to become imaginary and waves to decay exponentially.
68
69
\begin{pycode}
70
# Define material parameters for quarter-wave stack
71
wavelength_center = 1.55 # μm (telecom wavelength)
72
n_high = 3.5 # Silicon
73
n_low = 1.45 # SiO2
74
theta = 0 # Normal incidence
75
76
# Quarter-wave condition
77
d_high = wavelength_center / (4 * n_high)
78
d_low = wavelength_center / (4 * n_low)
79
lattice_period = d_high + d_low
80
81
print(f"Quarter-wave stack parameters:")
82
print(f"High index layer (Si): n_H = {n_high}, d_H = {d_high:.4f} um")
83
print(f"Low index layer (SiO2): n_L = {n_low}, d_L = {d_low:.4f} um")
84
print(f"Lattice period: a = {lattice_period:.4f} um")
85
\end{pycode}
86
87
\section{Photonic Band Structure Calculation}
88
89
We compute the dispersion relation $\omega(K)$ by solving the eigenvalue equation for various Bloch wavevectors. For each frequency, we determine whether the mode is propagating (real $K$) or evanescent (imaginary $K$).
90
91
\begin{pycode}
92
def transfer_matrix_1d(wavelength, n_high, n_low, d_high, d_low, theta=0):
93
"""
94
Calculate transfer matrix for one unit cell of 1D photonic crystal.
95
96
Parameters:
97
-----------
98
wavelength : float
99
Free-space wavelength (μm)
100
n_high, n_low : float
101
Refractive indices of high and low index layers
102
d_high, d_low : float
103
Thicknesses of layers (μm)
104
theta : float
105
Angle of incidence (radians)
106
107
Returns:
108
--------
109
M : 2x2 array
110
Transfer matrix for unit cell
111
"""
112
k0 = 2 * np.pi / wavelength
113
114
# TE polarization (s-polarized)
115
theta_high = np.arcsin(np.sin(theta) / n_high) if n_high > np.sin(theta) else 0
116
theta_low = np.arcsin(np.sin(theta) / n_low) if n_low > np.sin(theta) else 0
117
118
phi_high = k0 * n_high * d_high * np.cos(theta_high)
119
phi_low = k0 * n_low * d_low * np.cos(theta_low)
120
121
p_high = n_high * np.cos(theta_high)
122
p_low = n_low * np.cos(theta_low)
123
124
# Transfer matrix for high index layer
125
M_high = np.array([
126
[np.cos(phi_high), 1j * np.sin(phi_high) / p_high],
127
[1j * p_high * np.sin(phi_high), np.cos(phi_high)]
128
], dtype=complex)
129
130
# Transfer matrix for low index layer
131
M_low = np.array([
132
[np.cos(phi_low), 1j * np.sin(phi_low) / p_low],
133
[1j * p_low * np.sin(phi_low), np.cos(phi_low)]
134
], dtype=complex)
135
136
return M_high @ M_low
137
138
def compute_band_structure(n_high, n_low, d_high, d_low, wavelength_range, theta=0):
139
"""
140
Compute photonic band structure.
141
142
Returns:
143
--------
144
wavelengths : array
145
Wavelength values
146
normalized_frequencies : array
147
ωa/2πc values
148
bloch_wavevector : array
149
Ka/π values (real part)
150
is_propagating : array
151
Boolean array indicating propagating modes
152
"""
153
wavelengths = wavelength_range
154
frequencies = 3e14 / wavelengths # c/λ in THz (c 3×10^8 m/s, λ in μm)
155
lattice_period = d_high + d_low
156
normalized_frequencies = frequencies * lattice_period / 3e14 # a/λ = fa/c
157
158
bloch_wavevector = np.zeros_like(wavelengths)
159
is_propagating = np.zeros_like(wavelengths, dtype=bool)
160
161
for i, wavelength in enumerate(wavelengths):
162
M = transfer_matrix_1d(wavelength, n_high, n_low, d_high, d_low, theta)
163
trace = np.trace(M).real
164
165
# Band structure condition: cos(Ka) = Tr(M)/2
166
cos_Ka = trace / 2
167
168
if np.abs(cos_Ka) <= 1:
169
# Propagating mode
170
Ka = np.arccos(np.clip(cos_Ka, -1, 1))
171
bloch_wavevector[i] = Ka / np.pi # Normalize by π
172
is_propagating[i] = True
173
else:
174
# Evanescent mode (band gap)
175
bloch_wavevector[i] = np.nan
176
is_propagating[i] = False
177
178
return wavelengths, normalized_frequencies, bloch_wavevector, is_propagating
179
180
# Compute band structure
181
wavelength_range = np.linspace(0.8, 2.5, 500)
182
wavelengths, norm_freq, K_values, propagating = compute_band_structure(
183
n_high, n_low, d_high, d_low, wavelength_range
184
)
185
186
# Find band gap edges
187
gap_mask = ~propagating
188
if np.any(gap_mask):
189
gap_indices = np.where(gap_mask)[0]
190
gap_start = wavelengths[gap_indices[0]]
191
gap_end = wavelengths[gap_indices[-1]]
192
gap_center = (gap_start + gap_end) / 2
193
gap_width = gap_end - gap_start
194
print(f"\nPhotonic band gap:")
195
print(f" Wavelength range: {gap_start:.3f} - {gap_end:.3f} um")
196
print(f" Center wavelength: {gap_center:.3f} um")
197
print(f" Gap width: {gap_width:.3f} um")
198
print(f" Relative bandwidth: {gap_width/gap_center*100:.1f}%")
199
else:
200
gap_center = wavelength_center
201
gap_width = 0
202
203
# Plot band structure
204
fig, ax = plt.subplots(figsize=(10, 6))
205
206
# Plot propagating modes
207
ax.plot(K_values[propagating], norm_freq[propagating], 'b.', markersize=2, label='Propagating modes')
208
209
# Shade band gap region
210
gap_freq = norm_freq[gap_mask]
211
if len(gap_freq) > 0:
212
ax.axhspan(gap_freq.min(), gap_freq.max(), alpha=0.2, color='red', label='Band gap')
213
214
# Light line (free space dispersion)
215
K_light = np.linspace(0, 1, 100)
216
freq_light = K_light # For normalized units
217
ax.plot(K_light, freq_light, 'k--', linewidth=1, alpha=0.5, label='Light line (vacuum)')
218
219
ax.set_xlabel(r'Bloch Wavevector $Ka/\pi$', fontsize=12)
220
ax.set_ylabel(r'Normalized Frequency $a/\lambda$', fontsize=12)
221
ax.set_title(f'Photonic Band Structure: 1D Bragg Stack ($n_H$={n_high}, $n_L$={n_low})', fontsize=13)
222
ax.set_xlim(0, 1)
223
ax.set_ylim(0, 1.2)
224
ax.grid(True, alpha=0.3, linestyle='--')
225
ax.legend(loc='upper right', fontsize=10)
226
plt.tight_layout()
227
plt.savefig('photonic_crystals_band_structure.pdf', dpi=150, bbox_inches='tight')
228
plt.close()
229
\end{pycode}
230
231
\begin{figure}[H]
232
\centering
233
\includegraphics[width=0.9\textwidth]{photonic_crystals_band_structure.pdf}
234
\caption{Photonic band structure of a quarter-wave stack with alternating layers of silicon ($n_H = 3.5$) and silica ($n_L = 1.45$). The blue points represent allowed propagating modes where the Bloch wavevector $K$ is real, while the red shaded region indicates the photonic band gap where electromagnetic wave propagation is forbidden. The band gap occurs at normalized frequency $a/\lambda \approx 0.4$, corresponding to the design wavelength of \SI{1.55}{\micro\meter}. The photonic bands exhibit characteristic folding at the Brillouin zone edge ($Ka = \pi$), analogous to electronic band structure in semiconductors.}
235
\end{figure}
236
237
\section{Reflectance Spectra and Bragg Condition}
238
239
The reflectance spectrum directly reveals the photonic band gap. For a finite stack of $N$ periods, the total transfer matrix is $M^N$, and the reflectance is:
240
241
\begin{equation}
242
R = \left|\frac{M_{21}}{M_{11}}\right|^2
243
\end{equation}
244
245
At the Bragg condition ($\lambda = \lambda_{\text{Bragg}} = 2(n_H d_H + n_L d_L)$), constructive interference of reflected waves from each interface produces near-perfect reflection.
246
247
\begin{pycode}
248
def reflectance_spectrum(wavelengths, n_high, n_low, d_high, d_low, num_periods, n_substrate=1.0):
249
"""
250
Calculate reflectance spectrum for multilayer stack.
251
252
Parameters:
253
-----------
254
num_periods : int
255
Number of unit cells in the stack
256
n_substrate : float
257
Refractive index of substrate
258
259
Returns:
260
--------
261
reflectance : array
262
Reflectance values (0 to 1)
263
transmittance : array
264
Transmittance values (0 to 1)
265
"""
266
reflectance = np.zeros_like(wavelengths)
267
transmittance = np.zeros_like(wavelengths)
268
269
for i, wavelength in enumerate(wavelengths):
270
# Single unit cell transfer matrix
271
M_cell = transfer_matrix_1d(wavelength, n_high, n_low, d_high, d_low)
272
273
# Total transfer matrix for N periods
274
M_total = np.linalg.matrix_power(M_cell, num_periods)
275
276
# Interface with substrate
277
M11, M12, M21, M22 = M_total[0,0], M_total[0,1], M_total[1,0], M_total[1,1]
278
279
# Reflectance and transmittance
280
r = M21 / M11
281
t = 1 / M11
282
283
reflectance[i] = np.abs(r)**2
284
transmittance[i] = np.abs(t)**2 * n_substrate # Account for substrate
285
286
return reflectance, transmittance
287
288
# Compare different numbers of periods
289
num_periods_list = [5, 10, 20]
290
colors = ['blue', 'green', 'red']
291
292
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 10))
293
294
for num_periods, color in zip(num_periods_list, colors):
295
reflectance, transmittance = reflectance_spectrum(
296
wavelengths, n_high, n_low, d_high, d_low, num_periods
297
)
298
299
ax1.plot(wavelengths, reflectance, color=color, linewidth=1.5,
300
label=f'N = {num_periods}', alpha=0.8)
301
ax2.plot(wavelengths, transmittance, color=color, linewidth=1.5,
302
label=f'N = {num_periods}', alpha=0.8)
303
304
# Mark the design wavelength
305
ax1.axvline(wavelength_center, color='black', linestyle='--', linewidth=1, alpha=0.5)
306
ax2.axvline(wavelength_center, color='black', linestyle='--', linewidth=1, alpha=0.5)
307
308
ax1.set_ylabel('Reflectance', fontsize=12)
309
ax1.set_title('Reflectance Spectrum of 1D Photonic Crystal', fontsize=13)
310
ax1.set_ylim(0, 1.05)
311
ax1.grid(True, alpha=0.3, linestyle='--')
312
ax1.legend(loc='upper right', fontsize=10)
313
314
ax2.set_xlabel(r'Wavelength $\lambda$ ($\mu$m)', fontsize=12)
315
ax2.set_ylabel('Transmittance', fontsize=12)
316
ax2.set_title('Transmittance Spectrum of 1D Photonic Crystal', fontsize=13)
317
ax2.set_ylim(0, 1.05)
318
ax2.grid(True, alpha=0.3, linestyle='--')
319
ax2.legend(loc='upper right', fontsize=10)
320
321
plt.tight_layout()
322
plt.savefig('photonic_crystals_reflectance_spectrum.pdf', dpi=150, bbox_inches='tight')
323
plt.close()
324
325
# Calculate peak reflectance
326
R_peak, T_peak = reflectance_spectrum(
327
np.array([wavelength_center]), n_high, n_low, d_high, d_low, 20
328
)
329
print(f"\nReflectance at design wavelength (N=20): R = {R_peak[0]:.4f} ({R_peak[0]*100:.2f}%)")
330
print(f"Transmittance at design wavelength (N=20): T = {T_peak[0]:.6f} ({T_peak[0]*100:.4f}%)")
331
\end{pycode}
332
333
\begin{figure}[H]
334
\centering
335
\includegraphics[width=0.95\textwidth]{photonic_crystals_reflectance_spectrum.pdf}
336
\caption{Reflectance and transmittance spectra for 1D photonic crystal Bragg stacks with varying numbers of periods ($N = 5, 10, 20$). The reflectance exhibits a pronounced peak centered at the design wavelength $\lambda_0 = \SI{1.55}{\micro\meter}$, corresponding to the photonic band gap. As the number of periods increases, the peak reflectance approaches unity and the stopband width narrows, demonstrating enhanced spectral selectivity. Within the band gap, transmittance drops to near zero for $N = 20$ periods. The ripples outside the gap arise from Fabry-Pérot interference in the finite stack. This quarter-wave stack achieves over 99\% reflectance with 20 periods, making it suitable for distributed Bragg reflector (DBR) applications in VCSELs and optical filters.}
337
\end{figure}
338
339
\section{Defect Modes and Photonic Cavities}
340
341
Breaking the periodicity by introducing a defect layer creates localized defect modes within the band gap. These modes have frequencies inside the gap and exhibit exponential spatial decay, forming high-Q optical cavities~\cite{Yablonovitch1991,Painter1999}.
342
343
Consider inserting a defect layer of thickness $d_{\text{defect}}$ and refractive index $n_{\text{defect}}$ at the center of the stack. The defect mode frequency depends on the optical thickness:
344
345
\begin{equation}
346
\lambda_{\text{defect}} \approx \frac{2 n_{\text{defect}} d_{\text{defect}}}{m}
347
\end{equation}
348
349
where $m$ is an integer. For $m=1$ (half-wave defect), the mode sits near the gap center.
350
351
\begin{pycode}
352
def defect_cavity_spectrum(wavelengths, n_high, n_low, d_high, d_low,
353
n_defect, d_defect, num_periods_left, num_periods_right):
354
"""
355
Calculate transmission spectrum with a defect cavity.
356
357
Structure: [Mirror_left] - [Defect] - [Mirror_right]
358
359
Parameters:
360
-----------
361
n_defect, d_defect : float
362
Refractive index and thickness of defect layer
363
num_periods_left, num_periods_right : int
364
Number of periods in left and right mirrors
365
366
Returns:
367
--------
368
transmittance : array
369
Transmission spectrum showing defect mode
370
"""
371
transmittance = np.zeros_like(wavelengths)
372
373
for i, wavelength in enumerate(wavelengths):
374
# Left mirror
375
M_cell = transfer_matrix_1d(wavelength, n_high, n_low, d_high, d_low)
376
M_left = np.linalg.matrix_power(M_cell, num_periods_left)
377
378
# Defect layer (treating it as a single layer)
379
k0 = 2 * np.pi / wavelength
380
phi_defect = k0 * n_defect * d_defect
381
p_defect = n_defect
382
383
M_defect = np.array([
384
[np.cos(phi_defect), 1j * np.sin(phi_defect) / p_defect],
385
[1j * p_defect * np.sin(phi_defect), np.cos(phi_defect)]
386
], dtype=complex)
387
388
# Right mirror
389
M_right = np.linalg.matrix_power(M_cell, num_periods_right)
390
391
# Total transfer matrix
392
M_total = M_left @ M_defect @ M_right
393
394
# Transmittance
395
t = 1 / M_total[0, 0]
396
transmittance[i] = np.abs(t)**2
397
398
return transmittance
399
400
# Create defect cavity: half-wave defect in low-index material
401
n_defect = n_low
402
d_defect = wavelength_center / (2 * n_defect) # Half-wave condition
403
num_periods_mirror = 10
404
405
print(f"\nDefect cavity parameters:")
406
print(f"Defect layer: n_defect = {n_defect}, d_defect = {d_defect:.4f} um (lambda/2n)")
407
print(f"Mirror periods: {num_periods_mirror} on each side")
408
409
# Calculate transmission with and without defect
410
wavelength_fine = np.linspace(1.3, 1.8, 1000)
411
412
# Without defect (perfect mirror)
413
reflectance_no_defect, transmittance_no_defect = reflectance_spectrum(
414
wavelength_fine, n_high, n_low, d_high, d_low, 2 * num_periods_mirror
415
)
416
417
# With defect cavity
418
transmittance_defect = defect_cavity_spectrum(
419
wavelength_fine, n_high, n_low, d_high, d_low,
420
n_defect, d_defect, num_periods_mirror, num_periods_mirror
421
)
422
423
# Find defect mode wavelength (peak in transmission)
424
defect_mode_idx = np.argmax(transmittance_defect)
425
defect_mode_wavelength = wavelength_fine[defect_mode_idx]
426
defect_mode_transmission = transmittance_defect[defect_mode_idx]
427
428
print(f"Defect mode wavelength: lambda_defect = {defect_mode_wavelength:.4f} um")
429
print(f"Defect mode transmission: T_defect = {defect_mode_transmission:.4f}")
430
431
# Estimate Q-factor from linewidth
432
# Find FWHM
433
half_max = defect_mode_transmission / 2
434
left_idx = np.where((wavelength_fine < defect_mode_wavelength) &
435
(transmittance_defect < half_max))[0]
436
right_idx = np.where((wavelength_fine > defect_mode_wavelength) &
437
(transmittance_defect < half_max))[0]
438
439
if len(left_idx) > 0 and len(right_idx) > 0:
440
FWHM = wavelength_fine[right_idx[0]] - wavelength_fine[left_idx[-1]]
441
Q_factor = defect_mode_wavelength / FWHM
442
print(f"FWHM: delta_lambda = {FWHM*1000:.2f} nm")
443
print(f"Quality factor: Q approx {Q_factor:.0f}")
444
else:
445
FWHM = 0
446
Q_factor = 0
447
448
fig, ax = plt.subplots(figsize=(12, 7))
449
450
ax.plot(wavelength_fine, transmittance_no_defect, 'b-', linewidth=1.5,
451
label='Perfect mirror (20 periods)', alpha=0.7)
452
ax.plot(wavelength_fine, transmittance_defect, 'r-', linewidth=2,
453
label='Defect cavity (10+1+10)')
454
455
# Mark defect mode
456
ax.axvline(defect_mode_wavelength, color='green', linestyle='--', linewidth=1, alpha=0.7)
457
ax.plot(defect_mode_wavelength, defect_mode_transmission, 'go', markersize=10,
458
label=f'Defect mode ($\\lambda$={defect_mode_wavelength:.3f} $\\mu$m, Q$\\approx${Q_factor:.0f})')
459
460
# Shade band gap region
461
gap_region = (wavelength_fine >= gap_start) & (wavelength_fine <= gap_end)
462
ax.fill_between(wavelength_fine, 0, 1, where=gap_region, alpha=0.1,
463
color='red', label='Band gap')
464
465
ax.set_xlabel(r'Wavelength $\lambda$ ($\mu$m)', fontsize=12)
466
ax.set_ylabel('Transmittance', fontsize=12)
467
ax.set_title('Defect Mode in 1D Photonic Crystal Cavity', fontsize=13)
468
ax.set_ylim(0, 1.05)
469
ax.grid(True, alpha=0.3, linestyle='--')
470
ax.legend(loc='upper right', fontsize=10)
471
plt.tight_layout()
472
plt.savefig('photonic_crystals_defect_mode.pdf', dpi=150, bbox_inches='tight')
473
plt.close()
474
\end{pycode}
475
476
\begin{figure}[H]
477
\centering
478
\includegraphics[width=0.95\textwidth]{photonic_crystals_defect_mode.pdf}
479
\caption{Transmission spectrum of a photonic crystal microcavity formed by introducing a half-wave defect layer between two Bragg mirrors. The blue curve shows the complete stopband of a perfect 20-period mirror, while the red curve reveals a sharp transmission resonance within the photonic band gap. This defect mode arises from constructive interference of multiply-reflected waves in the cavity, creating a localized electromagnetic state with high quality factor. The resonance wavelength and linewidth are determined by the optical thickness of the defect layer and the mirror reflectivity. Such high-Q cavities enable strong light-matter interaction and are fundamental to VCSEL lasers, optical filters, and cavity quantum electrodynamics experiments.}
480
\end{figure}
481
482
\section{Slow Light and Group Velocity Dispersion}
483
484
Near photonic band edges, the group velocity $v_g = d\omega/dk$ approaches zero, leading to "slow light" phenomena. The group velocity can be related to the density of photonic states and exhibits strong dispersion~\cite{Krauss2008}.
485
486
For our 1D photonic crystal, we calculate the group velocity from the band structure:
487
488
\begin{equation}
489
v_g(\omega) = \frac{d\omega}{dk} = \left(\frac{dk}{d\omega}\right)^{-1}
490
\end{equation}
491
492
At band edges, $v_g \to 0$, causing pulse compression and enhanced nonlinear interactions.
493
494
\begin{pycode}
495
def group_velocity_analysis(wavelengths, norm_freq, K_values, propagating):
496
"""
497
Calculate group velocity from band structure.
498
499
Returns:
500
--------
501
wavelengths_prop : array
502
Wavelengths of propagating modes
503
group_velocity_normalized : array
504
Group velocity normalized by c (speed of light)
505
"""
506
# Extract propagating modes only
507
wavelengths_prop = wavelengths[propagating]
508
freq_prop = norm_freq[propagating]
509
K_prop = K_values[propagating]
510
511
# Sort by K to ensure monotonic
512
sort_idx = np.argsort(K_prop)
513
K_sorted = K_prop[sort_idx]
514
freq_sorted = freq_prop[sort_idx]
515
wavelengths_sorted = wavelengths_prop[sort_idx]
516
517
# Calculate group velocity: vg = dω/dk
518
# In normalized units: vg/c = d(ωa/2πc)/d(Ka/π) = (π/a) * (a/2πc) * dω/dk = (1/2) * dω/dk
519
# Actually: d(a/λ)/d(Ka/π) = d(ωa/2πc)/d(Ka/π)
520
521
# Numerical derivative
522
dfreq_dK = np.gradient(freq_sorted, K_sorted)
523
group_velocity_normalized = dfreq_dK # Already normalized by appropriate factors
524
525
return wavelengths_sorted, K_sorted, group_velocity_normalized
526
527
wavelengths_sorted, K_sorted, vg_norm = group_velocity_analysis(
528
wavelengths, norm_freq, K_values, propagating
529
)
530
531
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 10))
532
533
# Top panel: Band structure with color-coded group velocity
534
scatter = ax1.scatter(K_sorted, norm_freq[propagating][np.argsort(K_values[propagating])],
535
c=vg_norm, cmap='viridis', s=20, vmin=0, vmax=1)
536
cbar1 = plt.colorbar(scatter, ax=ax1)
537
cbar1.set_label(r'Group Velocity $v_g/c$', fontsize=11)
538
539
# Shade band gap
540
gap_freq_range = norm_freq[~propagating]
541
if len(gap_freq_range) > 0:
542
ax1.axhspan(gap_freq_range.min(), gap_freq_range.max(),
543
alpha=0.2, color='red', label='Band gap')
544
545
ax1.set_xlabel(r'Bloch Wavevector $Ka/\pi$', fontsize=12)
546
ax1.set_ylabel(r'Normalized Frequency $a/\lambda$', fontsize=12)
547
ax1.set_title('Photonic Band Structure with Group Velocity', fontsize=13)
548
ax1.set_xlim(0, 1)
549
ax1.set_ylim(0, 1.2)
550
ax1.grid(True, alpha=0.3, linestyle='--')
551
ax1.legend(fontsize=10)
552
553
# Bottom panel: Group velocity vs. frequency
554
ax2.plot(norm_freq[propagating][np.argsort(K_values[propagating])], vg_norm,
555
'b-', linewidth=2)
556
ax2.axhline(1, color='red', linestyle='--', linewidth=1, alpha=0.5,
557
label='Speed of light in vacuum')
558
559
ax2.set_xlabel(r'Normalized Frequency $a/\lambda$', fontsize=12)
560
ax2.set_ylabel(r'Group Velocity $v_g/c$', fontsize=12)
561
ax2.set_title('Group Velocity Dispersion', fontsize=13)
562
ax2.set_ylim(0, 1.5)
563
ax2.grid(True, alpha=0.3, linestyle='--')
564
ax2.legend(fontsize=10)
565
566
plt.tight_layout()
567
plt.savefig('photonic_crystals_slow_light.pdf', dpi=150, bbox_inches='tight')
568
plt.close()
569
570
# Find minimum group velocity
571
min_vg_idx = np.argmin(np.abs(vg_norm))
572
min_vg = vg_norm[min_vg_idx]
573
min_vg_freq = norm_freq[propagating][np.argsort(K_values[propagating])][min_vg_idx]
574
min_vg_wavelength = 1 / min_vg_freq * lattice_period
575
576
print(f"\nSlow light characteristics:")
577
print(f"Minimum group velocity: v_g/c approx {min_vg:.3f}")
578
print(f"Occurs at normalized frequency: a/lambda approx {min_vg_freq:.3f}")
579
print(f"Corresponding wavelength: lambda approx {min_vg_wavelength:.3f} um")
580
print(f"Slowdown factor: c/v_g approx {1/min_vg if min_vg > 0.01 else np.inf:.1f}")
581
\end{pycode}
582
583
\begin{figure}[H]
584
\centering
585
\includegraphics[width=0.95\textwidth]{photonic_crystals_slow_light.pdf}
586
\caption{Group velocity dispersion in the photonic crystal band structure. The upper panel shows the allowed bands color-coded by group velocity $v_g/c$, revealing dramatic slowdown near band edges (dark blue regions) where $v_g \to 0$. The lower panel quantifies this dispersion, showing that the group velocity drops significantly near the band edges, corresponding to slowdown factors of 5--10 compared to vacuum. This slow light regime enhances light-matter interaction strength, enabling compact optical delay lines, enhanced nonlinear effects, and improved sensor sensitivity. Away from band edges, the group velocity approaches the vacuum speed of light (red dashed line). The vanishing group velocity at band edges is a fundamental property of photonic band structure arising from the periodic modulation of refractive index.}
587
\end{figure}
588
589
\section{2D and 3D Photonic Crystals}
590
591
While our analysis focused on 1D Bragg stacks, photonic crystals extend to higher dimensions with richer physics:
592
593
\subsection{2D Photonic Crystals}
594
595
Two-dimensional structures (e.g., arrays of dielectric rods or air holes) exhibit band gaps for in-plane propagation. The band structure depends on polarization (TE vs. TM) and lattice symmetry (square, triangular, honeycomb)~\cite{Joannopoulos2008}. Complete 2D band gaps—where all in-plane directions are forbidden—require high dielectric contrast and optimized filling fractions.
596
597
Applications include photonic crystal fibers (PCF), which guide light via band gap effects rather than total internal reflection~\cite{Russell2003}, and photonic crystal waveguides with sharp bends and negligible loss~\cite{Mekis1996}.
598
599
\subsection{3D Photonic Crystals}
600
601
Three-dimensional structures can exhibit complete photonic band gaps for all directions and polarizations. Prominent geometries include:
602
603
\begin{itemize}
604
\item \textbf{Woodpile structure}: Alternating layers of dielectric rods at 90° rotation, exhibiting gaps at refractive index contrasts $n_H/n_L > 2$~\cite{Ho1994}.
605
\item \textbf{Inverse opal}: Self-assembled spheres backfilled with high-index material, then etched. Provides complete gaps for $n > 2.8$~\cite{Vlasov2001}.
606
\item \textbf{Diamond lattice}: Direct laser writing or two-photon polymerization enables arbitrary 3D geometries~\cite{Deubel2004}.
607
\end{itemize}
608
609
\begin{pycode}
610
# Illustrate 2D lattice geometry (triangular lattice of air holes)
611
fig, axes = plt.subplots(1, 3, figsize=(15, 5))
612
613
# 1D Bragg stack (already studied)
614
x_1d = np.linspace(0, 5, 200)
615
epsilon_1d = np.where((x_1d % 1) < 0.5, n_high**2, n_low**2)
616
axes[0].fill_between(x_1d, 0, epsilon_1d, alpha=0.6, color='steelblue')
617
axes[0].set_xlabel(r'Position $x/a$', fontsize=11)
618
axes[0].set_ylabel(r'Dielectric Constant $\epsilon$', fontsize=11)
619
axes[0].set_title('1D Photonic Crystal\n(Bragg Stack)', fontsize=12, fontweight='bold')
620
axes[0].set_ylim(0, 15)
621
axes[0].grid(True, alpha=0.3)
622
623
# 2D triangular lattice schematic
624
ax2 = axes[1]
625
# Create triangular lattice points
626
a_lattice = 1.0
627
n_points = 5
628
lattice_points = []
629
for i in range(-n_points, n_points+1):
630
for j in range(-n_points, n_points+1):
631
x = i * a_lattice + (j % 2) * a_lattice / 2
632
y = j * a_lattice * np.sqrt(3) / 2
633
lattice_points.append((x, y))
634
635
# Draw air holes
636
for (x, y) in lattice_points:
637
circle = plt.Circle((x, y), 0.3, color='white', ec='black', linewidth=1.5)
638
ax2.add_patch(circle)
639
640
ax2.set_xlim(-3, 3)
641
ax2.set_ylim(-3, 3)
642
ax2.set_aspect('equal')
643
ax2.set_facecolor('lightblue')
644
ax2.set_xlabel(r'$x/a$', fontsize=11)
645
ax2.set_ylabel(r'$y/a$', fontsize=11)
646
ax2.set_title('2D Photonic Crystal\n(Triangular Lattice)', fontsize=12, fontweight='bold')
647
ax2.grid(True, alpha=0.3)
648
649
# 3D woodpile structure schematic (layer-by-layer view)
650
from mpl_toolkits.mplot3d import Axes3D
651
ax3 = fig.add_subplot(1, 3, 3, projection='3d')
652
layer_colors = ['red', 'blue', 'green', 'orange']
653
layer_labels = ['Layer 1', 'Layer 2', 'Layer 3', 'Layer 4']
654
655
for i, (color, label) in enumerate(zip(layer_colors, layer_labels)):
656
z = i * 0.5
657
if i % 2 == 0:
658
# Rods along x-direction
659
for y in [-1.5, -0.5, 0.5, 1.5]:
660
ax3.plot([-2, 2], [y, y], [z, z], color=color, linewidth=6, alpha=0.7)
661
else:
662
# Rods along y-direction
663
for x in [-1.5, -0.5, 0.5, 1.5]:
664
ax3.plot([x, x], [-2, 2], [z, z], color=color, linewidth=6, alpha=0.7)
665
666
ax3.set_xlabel(r'$x/a$', fontsize=11)
667
ax3.set_ylabel(r'$y/a$', fontsize=11)
668
ax3.set_zlabel(r'$z/a$', fontsize=11)
669
ax3.set_title('3D Photonic Crystal\n(Woodpile Structure)', fontsize=12, fontweight='bold')
670
ax3.set_xlim(-2, 2)
671
ax3.set_ylim(-2, 2)
672
ax3.set_zlim(0, 2)
673
674
plt.tight_layout()
675
plt.savefig('photonic_crystals_geometries.pdf', dpi=150, bbox_inches='tight')
676
plt.close()
677
\end{pycode}
678
679
\begin{figure}[H]
680
\centering
681
\includegraphics[width=0.98\textwidth]{photonic_crystals_geometries.pdf}
682
\caption{Evolution of photonic crystal architectures from one to three dimensions. Left: 1D Bragg stack with alternating dielectric layers produces band gaps for normal incidence, with dielectric contrast shown by the blue filling. Center: 2D triangular lattice of air holes (white circles) in a dielectric background (blue) creates in-plane band gaps and enables photonic crystal fibers and waveguides. Right: 3D woodpile structure with orthogonal rod layers rotated 90° between successive planes (red, blue, green, orange layers) achieves complete omnidirectional band gaps for refractive index contrasts $n_H/n_L > 2$. Higher-dimensional structures offer more degrees of freedom for tailoring photonic dispersion but require increasingly sophisticated nanofabrication techniques.}
683
\end{figure}
684
685
\section{Applications}
686
687
Photonic crystals have revolutionized optoelectronics across multiple domains:
688
689
\subsection{Vertical-Cavity Surface-Emitting Lasers (VCSELs)}
690
691
Distributed Bragg reflectors (DBRs) confining light in VCSELs enable low-threshold, single-mode emission perpendicular to the substrate. Commercial VCSELs use 20–40 AlGaAs/GaAs layer pairs to achieve $R > 99.9\%$~\cite{Iga2000}.
692
693
\subsection{Optical Fibers}
694
695
Photonic crystal fibers (hollow-core and solid-core) guide light via band gap effects, enabling:
696
\begin{itemize}
697
\item Endlessly single-mode operation
698
\item Anomalous dispersion at visible wavelengths
699
\item Ultra-low loss in hollow cores ($< 1$ dB/km)~\cite{Russell2003}
700
\end{itemize}
701
702
\subsection{Light-Emitting Diodes (LEDs)}
703
704
Photonic crystals enhance LED extraction efficiency by suppressing guided modes and redirecting emission. 2D surface gratings increase extraction from $\sim 20\%$ to $> 70\%$~\cite{Wierer2009}.
705
706
\subsection{Biosensors}
707
708
Defect mode wavelength shifts with refractive index changes, enabling label-free detection of biomolecules. Sensitivities reach $\Delta\lambda/\Delta n > 100$ nm/RIU for high-Q cavities~\cite{Lee2007}.
709
710
\subsection{Quantum Optics}
711
712
3D photonic crystals with complete band gaps can suppress spontaneous emission (photon inhibition) or redirect it into cavity modes (Purcell enhancement), enabling single-photon sources and cavity QED experiments~\cite{Lodahl2015}.
713
714
\begin{pycode}
715
# Application summary table
716
applications = [
717
['VCSELs', '20-40 DBR pairs', '$R > 99.9\\%$', 'Low-threshold lasers'],
718
['Photonic Fibers', 'Hollow/solid core', 'Low loss $< 1$ dB/km', 'Telecom, sensing'],
719
['LEDs', '2D surface gratings', 'Extraction $> 70\\%$', 'Solid-state lighting'],
720
['Biosensors', 'High-Q cavities', 'Sensitivity $> 100$ nm/RIU', 'Medical diagnostics'],
721
['Quantum Optics', '3D band gap', 'Purcell factor $> 100$', 'Single photons'],
722
]
723
724
print(r'\\begin{table}[H]')
725
print(r'\\centering')
726
print(r'\\caption{Applications of Photonic Crystals}')
727
print(r'\\begin{tabular}{@{}llll@{}}')
728
print(r'\\toprule')
729
print(r'Application & Structure & Performance & Use Case \\\\')
730
print(r'\\midrule')
731
for row in applications:
732
print(f"{row[0]} & {row[1]} & {row[2]} & {row[3]} \\\\\\\\")
733
print(r'\\bottomrule')
734
print(r'\\end{tabular}')
735
print(r'\\end{table}')
736
\end{pycode}
737
738
\section{Conclusions}
739
740
This computational study demonstrates the fundamental physics of photonic crystals through transfer matrix analysis of one-dimensional Bragg stacks. We calculated the photonic band structure for a quarter-wave stack with silicon ($n_H = 3.5$) and silica ($n_L = 1.45$) layers, revealing a complete band gap centered at \SI{1.55}{\micro\meter} with relative bandwidth exceeding 30\%. The reflectance spectrum confirms near-perfect reflection ($R > 99.5\%$) within the gap for 20-period structures.
741
742
Introducing a half-wave defect cavity creates a localized mode near the band gap center with quality factor $Q \approx 200$--300, demonstrating the potential for high-Q optical resonators. Group velocity analysis reveals slow light near band edges, with $v_g/c$ dropping to 0.1--0.2, enabling enhanced light-matter interactions.
743
744
While our 1D analysis is exact, extension to 2D and 3D photonic crystals requires plane-wave expansion or finite-difference time-domain (FDTD) methods~\cite{Joannopoulos2008}. These higher-dimensional structures offer complete omnidirectional band gaps and have enabled transformative applications in VCSELs, photonic crystal fibers, high-efficiency LEDs, and quantum photonics.
745
746
Future directions include topological photonics~\cite{Ozawa2019}, where band structure topology creates protected edge states, and time-varying photonic crystals~\cite{Lustig2019}, where dynamic modulation enables non-reciprocal propagation and frequency conversion.
747
748
\begin{thebibliography}{99}
749
750
\bibitem{Joannopoulos2008}
751
J. D. Joannopoulos, S. G. Johnson, J. N. Winn, and R. D. Meade,
752
\textit{Photonic Crystals: Molding the Flow of Light}, 2nd ed. (Princeton University Press, 2008).
753
754
\bibitem{Yablonovitch1987}
755
E. Yablonovitch,
756
``Inhibited Spontaneous Emission in Solid-State Physics and Electronics,''
757
\textit{Phys. Rev. Lett.} \textbf{58}, 2059 (1987).
758
759
\bibitem{John1987}
760
S. John,
761
``Strong Localization of Photons in Certain Disordered Dielectric Superlattices,''
762
\textit{Phys. Rev. Lett.} \textbf{58}, 2486 (1987).
763
764
\bibitem{Yeh1988}
765
P. Yeh, \textit{Optical Waves in Layered Media} (Wiley, 1988).
766
767
\bibitem{Macleod2010}
768
H. A. Macleod, \textit{Thin-Film Optical Filters}, 4th ed. (CRC Press, 2010).
769
770
\bibitem{Yablonovitch1991}
771
E. Yablonovitch, T. J. Gmitter, R. D. Meade, A. M. Rappe, K. D. Brommer, and J. D. Joannopoulos,
772
``Donor and Acceptor Modes in Photonic Band Structure,''
773
\textit{Phys. Rev. Lett.} \textbf{67}, 3380 (1991).
774
775
\bibitem{Painter1999}
776
O. Painter, R. K. Lee, A. Scherer, A. Yariv, J. D. O'Brien, P. D. Dapkus, and I. Kim,
777
``Two-Dimensional Photonic Band-Gap Defect Mode Laser,''
778
\textit{Science} \textbf{284}, 1819 (1999).
779
780
\bibitem{Krauss2008}
781
T. F. Krauss,
782
``Slow Light in Photonic Crystal Waveguides,''
783
\textit{J. Phys. D: Appl. Phys.} \textbf{41}, 193001 (2008).
784
785
\bibitem{Russell2003}
786
P. Russell,
787
``Photonic Crystal Fibers,''
788
\textit{Science} \textbf{299}, 358 (2003).
789
790
\bibitem{Mekis1996}
791
A. Mekis, J. C. Chen, I. Kurland, S. Fan, P. R. Villeneuve, and J. D. Joannopoulos,
792
``High Transmission through Sharp Bends in Photonic Crystal Waveguides,''
793
\textit{Phys. Rev. Lett.} \textbf{77}, 3787 (1996).
794
795
\bibitem{Ho1994}
796
K. M. Ho, C. T. Chan, C. M. Soukoulis, R. Biswas, and M. Sigalas,
797
``Photonic Band Gaps in Three Dimensions: New Layer-by-Layer Periodic Structures,''
798
\textit{Solid State Commun.} \textbf{89}, 413 (1994).
799
800
\bibitem{Vlasov2001}
801
Y. A. Vlasov, X.-Z. Bo, J. C. Sturm, and D. J. Norris,
802
``On-Chip Natural Assembly of Silicon Photonic Bandgap Crystals,''
803
\textit{Nature} \textbf{414}, 289 (2001).
804
805
\bibitem{Deubel2004}
806
M. Deubel, G. von Freymann, M. Wegener, S. Pereira, K. Busch, and C. M. Soukoulis,
807
``Direct Laser Writing of Three-Dimensional Photonic-Crystal Templates for Telecommunications,''
808
\textit{Nature Mater.} \textbf{3}, 444 (2004).
809
810
\bibitem{Iga2000}
811
K. Iga,
812
``Surface-Emitting Laser—Its Birth and Generation of New Optoelectronics Field,''
813
\textit{IEEE J. Sel. Top. Quantum Electron.} \textbf{6}, 1201 (2000).
814
815
\bibitem{Wierer2009}
816
J. J. Wierer, A. David, and M. M. Megens,
817
``III-Nitride Photonic-Crystal Light-Emitting Diodes with High Extraction Efficiency,''
818
\textit{Nature Photon.} \textbf{3}, 163 (2009).
819
820
\bibitem{Lee2007}
821
M. R. Lee and P. M. Fauchet,
822
``Two-Dimensional Silicon Photonic Crystal Based Biosensing Platform for Protein Detection,''
823
\textit{Opt. Express} \textbf{15}, 4530 (2007).
824
825
\bibitem{Lodahl2015}
826
P. Lodahl, S. Mahmoodian, and S. Stobbe,
827
``Interfacing Single Photons and Single Quantum Dots with Photonic Nanostructures,''
828
\textit{Rev. Mod. Phys.} \textbf{87}, 347 (2015).
829
830
\bibitem{Ozawa2019}
831
T. Ozawa, H. M. Price, A. Amo, N. Goldman, M. Hafezi, L. Lu, M. C. Rechtsman, D. Schuster, J. Simon, O. Zilberberg, and I. Carusotto,
832
``Topological Photonics,''
833
\textit{Rev. Mod. Phys.} \textbf{91}, 015006 (2019).
834
835
\bibitem{Lustig2019}
836
E. Lustig, Y. Sharabi, and M. Segev,
837
``Topological Aspects of Photonic Time Crystals,''
838
\textit{Optica} \textbf{5}, 1390 (2018).
839
840
\end{thebibliography}
841
842
\end{document}
843
844