Photonic Band Structure Calculator
Compute 2D photonic crystal band structures and band gaps by plane-wave expansion of Maxwell's equations, with TM/TE modes. Free, in-browser, no signup.
Photonic Crystal Band Structure Solver
Plane-wave expansion of Maxwell’s equations in periodic dielectric media, with Bloch paths, band diagrams, Fourier-field reconstruction, and 2D/3D dispersion visualization.
Symmetry path eigenfrequencies
Bloch-mode intensity map
3D band landscape
Isometric unit-cell model
K-point band table
| k-point | |k| | b1 | b2 | b3 | b4 |
|---|---|---|---|---|---|
| Γ | 0.000 | 0.00000 | 0.80780 | 0.85011 | 0.85011 |
| 0.175 | 0.02579 | 0.80501 | 0.84929 | 0.85035 | |
| 0.349 | 0.05158 | 0.79632 | 0.84791 | 0.85002 | |
| 0.524 | 0.07737 | 0.78283 | 0.84769 | 0.84980 | |
| 0.698 | 0.10316 | 0.76573 | 0.84859 | 0.85056 | |
| 0.873 | 0.12506 | 0.74694 | 0.85029 | 0.85216 | |
| 1.047 | 0.14825 | 0.72683 | 0.85262 | 0.85463 | |
| 1.222 | 0.17274 | 0.70571 | 0.84790 | 0.86471 | |
| 1.396 | 0.19573 | 0.68407 | 0.85027 | 0.86888 | |
| 1.571 | 0.21987 | 0.66208 | 0.85284 | 0.87351 | |
| 1.745 | 0.24410 | 0.63981 | 0.85602 | 0.87854 | |
| 1.920 | 0.26839 | 0.61748 | 0.85914 | 0.88400 | |
| 2.094 | 0.29121 | 0.59490 | 0.86244 | 0.88949 | |
| 2.269 | 0.31443 | 0.57239 | 0.86550 | 0.89439 | |
| 2.443 | 0.33717 | 0.55017 | 0.86857 | 0.89926 | |
| 2.618 | 0.35871 | 0.52851 | 0.87162 | 0.90379 | |
| 2.793 | 0.37921 | 0.50842 | 0.87461 | 0.90789 | |
| 2.967 | 0.39571 | 0.49153 | 0.87724 | 0.91020 | |
| 3.146 | 0.40496 | 0.48273 | 0.87313 | 0.91737 | |
| 3.161 | 0.40752 | 0.48437 | 0.86062 | 0.92971 | |
| 3.185 | 0.41162 | 0.48606 | 0.84639 | 0.94293 | |
| 3.218 | 0.41751 | 0.48952 | 0.83136 | 0.95369 | |
| 3.261 | 0.42496 | 0.49302 | 0.81643 | 0.93025 | |
| 3.312 | 0.43408 | 0.49782 | 0.80115 | 0.90694 | |
| 3.371 | 0.44444 | 0.50315 | 0.78576 | 0.88376 | |
| 3.438 | 0.45581 | 0.50943 | 0.77049 | 0.86088 | |
| 3.512 | 0.46830 | 0.51578 | 0.75566 | 0.83817 | |
| 3.594 | 0.48179 | 0.52333 | 0.74126 | 0.81592 | |
| 3.682 | 0.50949 | 0.51884 | 0.72603 | 0.79337 | |
| 3.776 | 0.52155 | 0.53026 | 0.71164 | 0.77172 | |
| 3.875 | 0.53364 | 0.54254 | 0.69779 | 0.75077 | |
| 3.980 | 0.54599 | 0.55500 | 0.68365 | 0.73028 | |
| 4.089 | 0.55868 | 0.56749 | 0.67071 | 0.71120 | |
| 4.203 | 0.57060 | 0.57900 | 0.65879 | 0.69430 | |
| 4.321 | 0.58079 | 0.58762 | 0.64868 | 0.68108 | |
| 4.196 | 0.56896 | 0.59222 | 0.65066 | 0.68759 | |
| 3.949 | 0.54140 | 0.59595 | 0.65556 | 0.71461 | |
| 3.702 | 0.51075 | 0.60187 | 0.65954 | 0.74623 | |
| 3.456 | 0.47920 | 0.60986 | 0.66411 | 0.77940 | |
| 3.209 | 0.44677 | 0.62008 | 0.66984 | 0.81302 | |
| 2.962 | 0.41268 | 0.63206 | 0.67748 | 0.84692 | |
| 2.715 | 0.37921 | 0.64595 | 0.68566 | 0.88097 | |
| 2.468 | 0.34543 | 0.66151 | 0.69478 | 0.91442 | |
| 2.221 | 0.31255 | 0.67838 | 0.70443 | 0.94602 | |
| 1.975 | 0.27738 | 0.70581 | 0.70691 | 0.95557 | |
| 1.728 | 0.24281 | 0.72177 | 0.72230 | 0.94256 | |
| 1.481 | 0.20822 | 0.73839 | 0.73853 | 0.92741 | |
| 1.234 | 0.17376 | 0.75549 | 0.75598 | 0.91208 | |
| 0.987 | 0.13914 | 0.76531 | 0.78130 | 0.89665 | |
| 0.740 | 0.10570 | 0.77868 | 0.80346 | 0.88141 | |
| 0.494 | 0.07088 | 0.79164 | 0.82464 | 0.86734 | |
| 0.247 | 0.03647 | 0.80291 | 0.84417 | 0.85383 | |
| Γ | 0.000 | 0.00000 | 0.80780 | 0.85011 | 0.85011 |
Approximate band-gap summary
Point and band selection
A clear path from inputs to results.
Compute the photonic band structure of a 2D photonic crystal — the allowed and forbidden frequency bands for light in a periodic dielectric lattice. The solver expands Maxwell's equations in plane waves over the Bloch path through the Brillouin zone, returns the band diagram and any photonic band gaps, and reports an eigenpair residual so you can see the numerics are self-consistent.
How to use
- Choose the lattice (square or triangular) and the inclusion type (a high-index rod in air, or an air hole in a dielectric host).
- Set the dielectric constants (ε inside and ε background) and the radius-to-lattice-constant ratio r/a of the inclusion.
- Pick the polarization: TM (electric field along the rods) or TE (in-plane electric field).
- Set the numerical controls — the plane-wave cutoff (basis size), the mode/band count, the Fourier quadrature grid, and the number of k-samples per symmetry segment.
- Read the band diagram along the symmetry path (Γ–X–M–Γ for a square lattice), the approximate band-gap ledger, and the physical frequency in THz for your chosen lattice constant.
The formula
Reference: Plane-wave expansion of the Maxwell eigenproblem in periodic dielectrics; Johnson & Joannopoulos, Opt. Express 8 (2001); Busch et al., C. R. Physique 3 (2002). Empty-lattice (free-photon) band folding used as the analytic validation case.
Worked example
Empty-lattice validation, square lattice, TM
- Square lattice; TM polarization; empty lattice with ε inside = ε background = 1 (no dielectric contrast); plane-wave cutoff 2 (25 plane waves); 48×48 Fourier quadrature grid.
- 1
With a uniform permittivity of 1 everywhere, the Fourier coefficients of ε⁻¹ reduce to the identity — the diagonal (G = G′) term is 1 and every off-diagonal term integrates to zero — so the eigenproblem collapses to the free-photon dispersion with eigenvalues |k+G|² and normalized frequencies ω̃ = |k+G|a/2π. At Γ (k = 0) the lowest band is 0. At the X point k = (π/a, 0), the two reciprocal-lattice choices G = 0 and G = (−2π/a, 0) both give |k+G| = π/a, so ω̃ = (π/a)(a/2π) = 0.5, a doubly degenerate pair. At the M point k = (π/a, π/a), |k| = π√2/a gives ω̃ = √2/2 = 0.70711.
Lowest band ω̃ = 0.000 at Γ, 0.500 (doubly degenerate) at X, and 0.70711 at M — reproducing the exact empty-lattice folded free-photon dispersion to six digits. This validates the solver's k+G construction, Fourier assembly, and eigenvalue-to-frequency mapping; the reported eigenpair residual is below 1e−10.
Interpreting the result
Bands are reported in normalized frequency ω̃ = ωa/2πc, so they scale with the lattice constant: multiply by c/a to get a physical frequency, which the tool does in THz for your chosen a. A photonic band gap is a frequency range with no bands anywhere along the path — light at those frequencies cannot propagate. The empty-lattice test above has no gap because there is no dielectric contrast; introducing contrast (for example a high-index rod in air) pushes bands apart and can open a gap, which the gap ledger summarizes. The eigenpair residual is your self-consistency check: a tiny residual means each reported frequency genuinely solves the truncated eigenproblem.
Assumptions & limitations
- The model is a two-dimensional photonic crystal with the field reduced to a scalar TM or TE problem; it does not treat full 3D vector modes or out-of-plane propagation.
- The plane-wave basis is truncated at the chosen cutoff, so band positions for a high-contrast filled crystal are approximate and converge only as the cutoff (basis size) is increased — the browser default is modest for responsiveness.
- Fourier coefficients of the dielectric are evaluated by numerical quadrature over the unit cell rather than closed form, which is accurate for smooth, centered inclusions.
- The truncated Hermitian eigenproblem is solved with a Jacobi rotation method; the empty-lattice case is reproduced exactly, which validates the pipeline.
- The approximate band-gap ledger is sampled only along the high-symmetry path; certifying a complete gap over the whole Brillouin zone requires denser k-sampling than the path provides.
Frequently asked questions
What is a photonic band gap?
It is a range of frequencies for which no propagating optical modes exist anywhere in the crystal — the photonic analogue of the electronic band gap in a semiconductor. Light at a gap frequency is reflected rather than transmitted, which is what lets photonic crystals act as mirrors, waveguides, and cavities. The tool's gap ledger reports where bands separate along the sampled symmetry path.
What does the empty-lattice test prove?
Setting the dielectric contrast to zero (ε = 1 everywhere) turns the crystal into free space, whose bands are exactly the folded free-photon dispersion ω̃ = |k+G|a/2π. Reproducing those known values — 0.5 at X, 0.70711 at M on a square lattice — confirms the solver assembles the k+G terms and maps eigenvalues to frequencies correctly, independent of any approximation in the dielectric Fourier series.
What is the difference between TM and TE polarization?
In 2D the field splits into two independent polarizations. TM has the electric field pointing along the rod axis (out of plane); TE has it in the plane of periodicity. The two see the dielectric differently and generally have different band structures and gaps — a lattice of dielectric rods tends to favor a TM gap, while a lattice of air holes in dielectric tends to favor a TE gap. The tool lets you compute each separately.
Why are the frequencies given in normalized units?
Maxwell's equations in a lossless dielectric are scale-invariant, so the band structure depends only on the geometry and the dielectric contrast, not on the absolute size. Reporting ω̃ = ωa/2πc makes the result universal: the same diagram applies at any lattice constant a. To get a physical frequency, multiply by c/a — the tool shows this in THz once you set a in nanometres.
How many plane waves do I need for accurate gaps?
More than the browser default for a quantitatively converged high-contrast result. The plane-wave expansion converges as the cutoff grows, but the matrix size grows as (2·cutoff+1)², so there is a speed trade-off. Use the empty-lattice test to confirm correctness, then raise the cutoff and watch the band positions stabilize; treat the default-cutoff gap figures as indicative rather than publication-grade.
Methodology last reviewed 2026-10-06. Results are informational and not financial or engineering advice — see our disclaimer.