Skip to content

    Under active development. New calculators and features ship every week. Everything currently runs free while the site matures — pricing pages are a preview, checkout is not open yet.

    Engineering / Photonic Crystal Band Structure Solver

    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.

    ToolCalculatorExecutionIn browserCategoryEngineering
    ZorvLabs NanophotonicsPWE / Bloch / Maxwell

    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.

    Lattice
    Square
    primitive basis & BZ path
    Polarization
    TM
    H_z scalar reduction
    Bands
    6
    lowest eigenfrequencies
    Selected Band
    1
    ωa/2πc = 0.0000
    Residual
    <1e-10
    selected eigenpair residual
    Phys. freq.
    0.000 THz
    for a=420 nm
    Sampled band-gap estimate
    Between bands 4 and 5: gap ≈ -0.0252 in normalized units, midgap ≈ 0.9429, ratio ≈ -2.68%.
    This is an approximate gap estimate over the sampled symmetry path; a complete Brillouin-zone survey requires denser k sampling.
    Band structure

    Symmetry path eigenfrequencies

    Brillouin-zone path and band diagramΓ-X-M-Γ · normalized frequency ωa/2πcΓΓΓreciprocal-space path0.0000.4780.956Γpath distance →
    Unit-cell field

    Bloch-mode intensity map

    Selected mode intensityΓ · band 1-0.50.5
    Dispersion surface

    3D band landscape

    3D dispersion surfaceisofrequency landscape over the first Brillouin zoneuvωa/2πclower color → lower band frequency
    Cell topology

    Isometric unit-cell model

    Isometric unit-cell modelhigh-ε rod in air · εin=11.56 εbg=1.00unit cell centered at origin
    Eigenpairs

    K-point band table

    k-point|k|b1b2b3b4
    Γ0.0000.000000.807800.850110.85011
    0.1750.025790.805010.849290.85035
    0.3490.051580.796320.847910.85002
    0.5240.077370.782830.847690.84980
    0.6980.103160.765730.848590.85056
    0.8730.125060.746940.850290.85216
    1.0470.148250.726830.852620.85463
    1.2220.172740.705710.847900.86471
    1.3960.195730.684070.850270.86888
    1.5710.219870.662080.852840.87351
    1.7450.244100.639810.856020.87854
    1.9200.268390.617480.859140.88400
    2.0940.291210.594900.862440.88949
    2.2690.314430.572390.865500.89439
    2.4430.337170.550170.868570.89926
    2.6180.358710.528510.871620.90379
    2.7930.379210.508420.874610.90789
    2.9670.395710.491530.877240.91020
    3.1460.404960.482730.873130.91737
    3.1610.407520.484370.860620.92971
    3.1850.411620.486060.846390.94293
    3.2180.417510.489520.831360.95369
    3.2610.424960.493020.816430.93025
    3.3120.434080.497820.801150.90694
    3.3710.444440.503150.785760.88376
    3.4380.455810.509430.770490.86088
    3.5120.468300.515780.755660.83817
    3.5940.481790.523330.741260.81592
    3.6820.509490.518840.726030.79337
    3.7760.521550.530260.711640.77172
    3.8750.533640.542540.697790.75077
    3.9800.545990.555000.683650.73028
    4.0890.558680.567490.670710.71120
    4.2030.570600.579000.658790.69430
    4.3210.580790.587620.648680.68108
    4.1960.568960.592220.650660.68759
    3.9490.541400.595950.655560.71461
    3.7020.510750.601870.659540.74623
    3.4560.479200.609860.664110.77940
    3.2090.446770.620080.669840.81302
    2.9620.412680.632060.677480.84692
    2.7150.379210.645950.685660.88097
    2.4680.345430.661510.694780.91442
    2.2210.312550.678380.704430.94602
    1.9750.277380.705810.706910.95557
    1.7280.242810.721770.722300.94256
    1.4810.208220.738390.738530.92741
    1.2340.173760.755490.755980.91208
    0.9870.139140.765310.781300.89665
    0.7400.105700.778680.803460.88141
    0.4940.070880.791640.824640.86734
    0.2470.036470.802910.844170.85383
    Γ0.0000.000000.807800.850110.85011
    Band gaps

    Approximate band-gap summary

    Bands 4 → 5
    overlap
    lower max 0.9556 · upper min 0.9303 · ratio -2.68%
    Bands 5 → 6
    overlap
    lower max 1.0993 · upper min 1.0494 · ratio -4.65%
    Bands 1 → 2
    overlap
    lower max 0.5808 · upper min 0.4827 · ratio -18.44%
    Bands 2 → 3
    overlap
    lower max 0.8078 · upper min 0.6487 · ratio -21.85%
    Bands 3 → 4
    overlap
    lower max 0.8772 · upper min 0.6811 · ratio -25.18%
    Selected-k control

    Point and band selection

    k-point index
    Band index1
    ●Photonic band structure//PWE basis: 25 plane waves//48×48 Fourier quadrature//selected residual <1e-10//TE/TM PWE
    engineering methodology

    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.

    Step-by-step methodWorked exampleAssumptions explained

    How to use

    1. Choose the lattice (square or triangular) and the inclusion type (a high-index rod in air, or an air hole in a dielectric host).
    2. Set the dielectric constants (ε inside and ε background) and the radius-to-lattice-constant ratio r/a of the inclusion.
    3. Pick the polarization: TM (electric field along the rods) or TE (in-plane electric field).
    4. 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.
    5. 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

    ∑G′(k+G)⋅(k+G′) εG−G′−1 HG′=(ωc)2HG,ω~=ωa2πc\sum_{\mathbf{G}'} (\mathbf{k}+\mathbf{G})\cdot(\mathbf{k}+\mathbf{G}')\, \varepsilon^{-1}_{\mathbf{G}-\mathbf{G}'}\, H_{\mathbf{G}'} = \left(\dfrac{\omega}{c}\right)^{2} H_{\mathbf{G}}, \qquad \tilde{\omega} = \dfrac{\omega a}{2\pi c}

    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

    Inputs
    • 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.
    Calculation path
    1. 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.

    Result

    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.