Documentation
PIC Waveguide Mode Solver
Operating reference for the waveguide mode solver: every geometry and material input, both engines and their accuracy limits, every tab, and the full text of every caveat.
Overview
The tool solves the guided modes of a dielectric waveguide cross-section and derives the quantities a photonic-circuit designer needs from them: effective and group index, confinement, dispersion, bend loss, directional-coupler splitting and fiber-to-chip coupling efficiency.
It has two engines with an honest boundary between them. The free engine is the Effective Index Method (EIM), which runs entirely in the browser and updates as you type. The Pro engine is a full-vectorial finite-difference eigensolver (FDE), which runs on the server as a job. Where EIM is quantitatively unreliable, the tool says so in the interface rather than quietly reporting a number — the caveat set below is the same one you will see in the app.
The free engine computes in the browser with no queue. The Results tab is open to anyone; the Parameter Sweep, Bend Loss, Directional Coupler and Edge Coupler tabs are free but need a signed-in account, and so does CSV export. The FDE tab is Pro.
EIM and FDE engines
What EIM does
The Effective Index Method separates the 2-D cross-section into two 1-D slab problems: it first solves the vertical slab to get an effective index for the core region, then feeds that index into a lateral slab problem. It is fast, deterministic and analytic, and it is a genuine approximation — the separable ansatz cannot represent the hybrid field of a high-contrast wire.
Accuracy summary: n_eff runs +0.9 % (oxide-clad SiN) to +3.8 % (air-clad SOI). An asymmetric air top costs more accuracy than index contrast does. Derived quantities are worse, and dispersion is worse still. Measured against our own full-vectorial FDE at 1550 nm:
| Geometry (TE₀, 1550 nm) | Quantity | EIM | FDE | EIM error |
|---|---|---|---|---|
| SOI 500 × 220, oxide top | n_eff | 2.4932 | 2.446865 | +1.9 % |
| n_g | 4.031 | 4.194 | −3.9 % | |
| β₂ (ps²/m) | +1.293 | −0.608 | wrong sign | |
| D (ps/(nm·km)) | −1014 | +476 | wrong sign | |
| SOI 500 × 220, air top (default preset) | n_eff | 2.4758 | 2.3859 | +3.8 % |
| n_g | 4.046 | 4.370 | −7.4 % | |
| β₂ | +1.350 | −2.837 | wrong sign | |
| D | −1059 | +2224 | wrong sign | |
| SiN 1000 × 400, oxide top | n_eff | 1.6525 | 1.6379 | +0.9 % |
| n_g | 2.029 | 2.056 | −1.3 % | |
| β₂ | +1.063 | +0.978 | sign OK, +8.7 % | |
| SiN 1000 × 400, air top | n_eff | 1.6246 | 1.5697 | +3.5 % |
| n_g | 2.032 | 2.137 | −4.9 % | |
| β₂ | +1.294 | +0.892 | sign OK, +45 % |
Why the sign fails at high contrast, in one line: EIM’s waveguide-dispersion term is essentially zero for SOI (+0.047 ps²/m with the material indices frozen), so what it reports is close to bulk-silicon GVD (+1.119 ps²/m). Full-vectorial gives −2.84 ps²/m total, and the entire ≈2.9 ps²/m discrepancy sits in the waveguide term — the term that makes a 500 × 220 nm silicon wire anomalous. For Si₃N₄ the GVD is almost all waveguide dispersion and EIM agrees with FDE to 9 %. EIM’s waveguide-dispersion term is accurate at low contrast and collapses at high contrast.
The switch between the two accuracy regimes in the interface is the index contrast, with a threshold of 0.3: SOI air-top scores 0.585 (high contrast) and SiN 1000 × 400 air-top scores 0.277 (low contrast).
What FDE does
The Pro engine solves the transverse-E (Ex, Ey) finite-difference eigenproblem in β² on a uniform staggered (Yee) grid, with span-preserving integer rasterization of the geometry, arithmetic permittivity averaging (16 × 16 subpixel on curved boundaries), a PEC box by default and a stretched-coordinate PML for bend and leaky modes. Bends use the exact exponential conformal map and take the loss from Im(n_eff). Dispersion comes from a fixed-grid wavelength sweep with resolver-fresh materials and polynomial fits.
It gives complex n_eff (with loss in dB/cm when Im ≠ 0), polarization identification with the TE power fraction, n_g, A_eff, Γ_core, box-artifact flagging, and — the reason it exists — the correct sign of β₂ where EIM fails.
Geometry inputs
Three cross-section types. Changing the type resets the selected mode to the fundamental.
| Type | Inputs | Notes |
|---|---|---|
| Strip | Width (50–5000 nm), Height (50–2000 nm) | Rectangular core surrounded by cladding above and substrate below. |
| Rib | Width, Height, Slab Height (10 nm … Height − 10 nm) | A ridge on a partially etched slab. If the slab is below TM cutoff the tool says so, and rib TM modes are equivalent to strip TM. |
| Slot | Rail Width (50–2000 nm), Slot Width (10–500 nm), Height | Two rails separated by a low-index gap. The mode table gains a Γ_slot column — the fraction of lateral power in the gap, which is the primary figure of merit for a slot waveguide. |
Every dimension is entered in nanometres and echoed in micrometres beneath the field, because layout tools work in µm and mask data in nm.
Presets
| Preset | Type | Size (nm) | Core / Substrate / Cladding | λ (nm) |
|---|---|---|---|---|
| SOI Strip 220 | strip | 500 × 220 | Si / SiO₂ / Air | 1550 |
| Wide SOI Strip | strip | 800 × 220 | Si / SiO₂ / Air | 1550 |
| SOI Rib | rib | 500 × 220, slab 90 | Si / SiO₂ / Air | 1550 |
| SiN Strip 400 | strip | 1000 × 400 | Si₃N₄ / SiO₂ / Air | 1550 |
| Slot Waveguide | slot | rail 200, slot 100, h 220 | Si / SiO₂ / Air | 1550 |
| Thin SOI 1310 | strip | 450 × 150 | Si / SiO₂ / Air | 1310 |
| LNOI Strip | strip | 600 × 300 | LiNbO₃ / SiO₂ / Air | 1550 |
| InP Rib (Q1.25) | rib | 2000 × 500, slab 400 | InGaAsP (Q1.25) / InP / InP | 1550 |
InP Rib (Q1.25) is the shallow-etched passive waveguide of the generic InP foundry platform: a 500 nm Q1.25 quaternary waveguide layer etched 100 nm to leave a 400 nm slab, 2 µm wide, with epitaxial InP above and below. It reproduces the two mode-level numbers the platform publishes — n_eff “in the order of 3.25” (we give TE₀ = 3.2589) and a TE–TM birefringence “in the order of 6·10⁻³” (we give 6.54·10⁻³). The top cladding is InP rather than air on purpose: our rib model applies one cladding index above both the ridge and the etched slab, and in the real structure the mode sits under InP cladding. An air top cladding gives four modes and 4× the published birefringence.
The InGaAsP (Q1.25) index model is cited only for the C-band: its validity window is 1500–1600 nm. Sweep windows are clamped to it (see Default sweep windows), and widening one past it raises the extrapolation caveat W10a. Below about 1300 nm the quaternary is past its 1.25 µm band edge and absorbing, so no refractive index we could quote there would be meaningful.
Material inputs
Core, substrate and top cladding are chosen independently. Built-in materials evaluate a Sellmeier or equivalent dispersion model at the wavelength in use; catalogue materials interpolate tabulated data with a spline; Plus users can supply their own material.
This engine is lossless. The extinction coefficient k of a material is never consumed here — if a selected material carries k, a badge discloses that it is being ignored. Absorption and radiation loss are FDE territory.
| Material | Model | Cited range (nm) | Source |
|---|---|---|---|
| Si | Sellmeier | 1360–11000 | Salzberg & Villa 1957, fitted by Tatian 1984 (26 °C). Sweep clamp uses a verified working range of 1200–11000. |
| Si₃N₄ | Sellmeier | 310–5500 | Luke et al., Opt. Lett. 40, 4823 (2015) |
| SiO₂ | Sellmeier | 210–6700 | Malitson, J. Opt. Soc. Am. 55, 1205 (1965) |
| LiNbO₃ | Sellmeier | 400–5000 | Zelmon, Small & Jundt 1997, ordinary ray, congruent LN, 21 °C — anisotropy is not modelled |
| InP | Sellmeier | 950–10000 | Pettit & Turner, J. Appl. Phys. 36, 2081 (1965) |
| InGaAsP (Q1.25) | Polynomial (linear in λ) | 1500–1600 | Handbook of generic photonic IC design, TU/e 2024, Table B.1 |
| PMMA | Polynomial | 420–1620 | Beadie et al., Appl. Opt. 54, F139 (2015), 20.1 °C |
| H₂O | Sellmeier | 182–1129 | Daimon & Masumura, Appl. Opt. 46, 3811 (2007), 20.0 °C |
| Air | Constant n = 1 | any | — |
| SU-8 | Cauchy | 320–1700 | MicroChem SU-8 3000 data sheet (2011) — vendor specification, not a peer-reviewed measurement |
Every model above is a room-temperature fit at one specific temperature and is used as if it were temperature-independent. That is a real approximation across the whole material layer.
SU-8 is the one entry whose source is not a peer-reviewed measurement. The coefficients come from the supplier’s datasheet, which states no temperature, film thickness, cure state or uncertainty, and its 320–1700 nm window is inferred from the datasheet figure rather than stated in words. Its k is carried as zero: the datasheet does plot k, up to 6×10⁻³, and SU-8 absorbs strongly below about 350 nm — it recommends a 350 nm long-pass filter — but no citable k(λ) is published for this entry. Above 550 nm k is negligible for a lossless solver; near the 320 nm floor it is not.
Material-set versioning is worth knowing about when you compare to a paper: the shipped silicon model gives n_Si = 3.477724 at 1550 nm, while Li (1980) — used in several of our internal benchmarks for comparability — gives 3.4757. A higher core index confines more tightly and therefore reduces coupler Δn_eff by 0.2–0.7 % across the C band. That is data versioning, not a defect.
Simulation inputs
| Input | Range | What it does |
|---|---|---|
| Wavelength | 400–4000 nm | The single operating λ. Every material index is resolved here, and every single-λ tab reports at this wavelength. |
| Polarization | TE · TM · Both | Filters the mode table and every tab that follows a mode selector. Changing it resets the selection to the fundamental. |
| vs Wavelength sweep | — | λ min, λ max and point count for the open vs-Wavelength section. These appear only while a section is open; the single centre wavelength above stays visible always. |
There is no Solve button. Every result recomputes as you type — that is the point of an analytic engine.
Results tab
The mode field of the selected mode as an |E|² heatmap, with optional horizontal and vertical slices through a clickable crosshair, above the Guided Modes table.
| Column | Meaning |
|---|---|
| Mode | Label — TE₀, TM₀, TE₁ … Colour-coded, and the colour is reused as the trace colour everywhere else in the tool. |
| neff | Effective index at the operating wavelength. |
| Γ (%) | Confinement factor — the fraction of modal power in the core region. For a slot waveguide this becomes Γ_rail (fraction in the Si rails) and a Γ_slot column is added (fraction in the low-index gap). |
| Status | Guided means the mode is bound. Cutoff means n_eff has fallen to or below max(n_clad, n_sub) — the higher of the top cladding and the substrate, which for the shipped SOI, SiN and LNOI presets is the SiO₂ substrate, not the air top — so the mode leaks. |
The table carries n_eff, Γ and status only. Group index and dispersion are derivative quantities: they need a wavelength sweep to exist at all, so they live in the vs-Wavelength section rather than being implied at a single λ. The one exception is the n_g readout above the heatmap, which is a local ±1 nm finite difference for the selected mode.
Parameter Sweep tab
Sweeps a geometry dimension (width or height) and plots n_eff, n_g, confinement or birefringence for each mode, with legend toggling. Useful for finding a single-mode window or a birefringence-zero width. Free, but requires a signed-in account.
Bend Loss tab
Radiation loss of a bent waveguide against bend radius, on a log axis, with the minimum acceptable radius marked where the curve crosses a loss threshold you set.
| Input | Default | What it does |
|---|---|---|
| Radius range | derived from R_min | The swept range. It opens at [max(1, R_min/10), min(5000, 2·R_min)] so the mode’s own critical radius is on screen — a shallow-etched rib needs thousands of µm, where the old fixed 1–10 µm window showed nothing at all — and stops following R_min as soon as you edit either bound. The R max input accepts up to 5000 µm; that is a plot bound, not the search’s 10 cm runaway guard. |
| Points | 50 | Sweep resolution. |
| Loss threshold | 0.01 dB per 90° | Defines R_min: the smallest radius whose loss per 90° stays under the threshold. There is no fixed search ceiling — the search brackets geometrically upward from 0.5 µm until the loss first drops below the threshold, then bisects that bracket to a relative 1e-9. It reports nothing only when the mode is still above threshold at 10 cm, which is a physical statement rather than the end of a window: a 90° arc at that radius is 157 mm long, so at even 0.1 dB/cm of propagation loss it costs 1.6 dB, about 160× the bend-loss budget being solved for. |
| Mode | fundamental | Which guided mode is bent. Polarization matters: the lateral solve uses the crossed convention. |
Just above the radius where the tunnelling barrier opens, loss per 90° rises before it falls: the πR/2 path-length factor beats the still-negligible WKB exponent. At the InP Rib (Q1.25) preset the barrier opens at R = 279.5 µm, and the loss runs 33.4 dB at 280 µm up to a local maximum of about 35.4 dB near 320 µm before falling monotonically (27.4 dB at 500 µm, 4.6 dB at 1000 µm, 4.9 × 10⁻² dB at 2000 µm). That is real physics, not a plotting artifact. It happens where the loss is tens of decibels — far above any threshold this tab accepts — so the R_min search still returns the smallest crossing.
R_min is displayed to two significant figures, with a ~ prefix for a rib. Two figures is what the physics supports even in the best case: a ×3 change in the loss prefactor moves R_min by only about 10 %, and our comparison against a full-vectorial FDE solve spans ×4 in decibels at the 445 × 220 nm benchmark. The CSV export and the R_min vs λ series keep full precision — the rounding is a display rule, not a change to the data.
For a rib the lateral cladding is the etched slab’s own effective index, not the bulk cladding, so the lateral index step is small and R_min comes out large — read it as an order of magnitude (caveat W12).
The y-axis shows at most 12 decades below the highest plotted value. Radiation loss is exponential in radius — about 3 decades per extra µm of radius for a 500 × 220 nm silicon strip at 1550 nm, and the slope varies more than twentyfold across the geometries here — so a wide radius window can produce a curve spanning hundreds of decades. Over R = 1 to 100 µm at that geometry the loss covers 302 decades, where one decade is under a pixel and the four decades that carry every design decision are invisible. The cap is a display bound, not a physics floor: it is stated in decades of plot, it makes no claim about any quantity, no value is clipped or clamped, and the hover readout and the CSV export still carry the exact number at every point. Every preset’s default view is 8 to 10 decades, so the cap only takes effect on a radius window you widen yourself, and a note appears under the plot when it does. The same rule governs the log panels of the vs Wavelength section, where a hand-typed evaluation radius can put the loss just as far below anything measurable.
Method and accuracy are summarised under Bend-loss model below. In one sentence: trust the critical radius, not the decibels. Free, but requires a signed-in account.
Directional Coupler tab
Two identical waveguides side by side. The tool solves the even and odd supermodes of the pair and derives the coupling behaviour from their index splitting. Free, but requires a signed-in account.
| Input | Default | What it does |
|---|---|---|
| Gap | 200 nm | Edge-to-edge separation of the two cores. |
| Interaction length L | 24.3 µm | Straight coupling-region length. κ² is evaluated at this length. |
| Mode | fundamental | Which supermode pair to use. |
The tool plots κ² against interaction length (with 50 % and 100 % reference lines) and, in the detail panel, Δn_eff against gap. Method: coupled EIM on a double-well lateral slab with mirror symmetry, using TM polarization for the lateral solve (the crossed convention for quasi-TE). L_c accuracy is roughly 20–40 % for high-contrast waveguides and 10–20 % for low-contrast — best used for relative trends and design-space exploration.
This is the coupler physics behind the MZI calculator’s κ²(λ) splitter model, but the cross-tool handoff is not a κ² handoff: the payload is Δn_eff(λ) alone, and the MZI reconstructs κ² from it with its own interaction length. Nothing produces that payload yet — the MZI model accepts it, the mode solver does not emit it.
Edge Coupler tab
Fiber-to-chip coupling efficiency of an inverse-taper edge coupler, as the overlap integral of the waveguide mode at the taper tip against a Gaussian fiber mode. Free, but requires a signed-in account.
| Input | Default | What it does |
|---|---|---|
| Tip width | 180 nm | Taper tip width. Narrowing it expands the mode laterally and improves η_x. |
| Fiber preset | Lensed fiber (MFD 5.0 µm) | SMF-28 10.4 µm · Lensed fiber 5.0 µm · UHNA-3 3.2 µm · UHNA-7 2.0 µm, or a custom MFD. |
| Output | Meaning |
|---|---|
| η (dB) | Total coupling efficiency, η_x·η_y. |
| ηx, ηy (dB) | Lateral and vertical overlap separately. η_y is fixed by the core thickness and dominates the total. |
| MFDx, MFDy (µm) | Mode field diameters as second moments, MFD = 4√⟨x²⟩ (= 2w₀ for a Gaussian). |
| Ltaper (µm) | Love–Henry adiabaticity lower bound for a linear taper, evaluated on EIM slab modes. |
Expect −10 to −17 dB here, against −1 to −3 dB for a real edge coupler with a spot-size converter. That gap is the entire point of the caveat below: what is modelled is a bare waveguide mode, and every real design adds an overlay this engine does not represent.
Full-vectorial FDE (Pro)
The FDE tab runs a server-side job and returns exact hybrid modes rather than the EIM approximation. It adds a dispersion sweep with a normal/anomalous headline card, a bend-loss sweep from first principles, complex materials (n + k), and mesh presets: Standard (10 nm, default) and Fast preview (20 nm).
- Geometry is rasterized span-preserving: the span is
round(w/dx)cells with one snapped edge. A dimension that is not representable on the chosen mesh is disclosed by an as-meshed notice — 150 nm on a 20 nm mesh becomes 160 nm, so use the 10 nm mesh for thin layers. - Bend windows have a pinned outer margin of 2.0–2.5 µm. Larger windows under-resolve the mapped radiation wave, so widening the window does not converge bend loss — it degrades it.
- Bend-loss absolute magnitude at R < 2 µm carries about ±2× method uncertainty (window-margin sensitivity), surfaced in the panel.
- Loss channels are material absorption and radiation/leakage only. Sidewall-roughness scattering — typically the dominant measured straight-waveguide loss in SOI, e.g. 3.6 dB/cm TE in Vlasov & McNab (2004) — is not modelled by any mode solver, ours included.
vs Wavelength sections
Results, Bend Loss, Directional Coupler and Edge Coupler each carry a collapsible vs Wavelength section beneath their main content. Naming is deliberate: the section is “vs Wavelength”, and the word dispersion is reserved for the β₂ / D quantity specifically.
How the plots behave
- Stacked panels. One plot to start; “Add plot” below the last plot adds another, up to four. Each panel has its own y-quantity dropdown, changing one panel never affects another, and two panels may legitimately show the same quantity.
- Shared x-axis and linked zoom. Zooming or panning any panel moves all of them; the wavelength axis is labelled on the bottom panel only.
- Multi-mode overlay. The mode chips select which modes are plotted, and every panel overlays all of them with a legend. Until you pick explicitly, the section follows the tab’s own mode selector. The last selected mode cannot be turned off.
- Gaps are honest. If a mode is not guided at some wavelength, its trace breaks. It is never drawn at zero, and it is never silently swapped for the nearest surviving mode. A gap can also mean the mode exists but the plotted quantity has no finite value there — an empty panel says which of the two it is.
- Every point re-solves. Materials are re-resolved at each wavelength and the engine is re-run. Freezing the indices at λ₀ would silently delete material dispersion — for the default preset that alone moves n_g from 4.046 to 3.911 and β₂ from +1.350 to +0.047 ps²/m.
Results → n_eff, n_g, β₂, D
| Symbol | Name | Unit | Derivation |
|---|---|---|---|
| neff | Effective index | — | Direct EIM solve at each λ. |
| ng | Group index | — | n_g = n_eff − λ·dn_eff/dλ, with dn_eff/dλ by 3-point central difference on the sweep grid itself. |
| β₂ | GVD parameter | ps²/m | β₂ = −D·λ²/(2πc). Derived from D, so the two curves are always exactly consistent. |
| D | Dispersion parameter | ps/(nm·km) | D = −(λ/c)·d²n_eff/dλ², second derivative by 3-point central difference on the sweep grid. |
Sign convention, matching the FDE engine: β₂ > 0 normal, D < 0 normal; β₂ < 0 anomalous, D > 0 anomalous. And n_g > n_eff in every normal-dispersion case.
Bend Loss → L₉₀, R_min, α, δ
This section adds one control: R_eval, the radius the loss is evaluated at. It defaults to the tab’s own computed R_min and follows it until you type a radius, then stays put; 5 µm is used only when the mode has no computable R_min. It is clamped into the tab’s own radius range.
The default was a fixed 5 µm (a standard SOI ring radius) until 2026-07-31. R_min is the one radius guaranteed to be representable — the loss there equals your threshold by construction — while a strip-sized radius can sit below the radiation caustic, where the tunnelling barrier has closed and the honest answer for every loss quantity is infinite. That is a statement about the quantity, not about the mode: n_eff, R_min and δ are all still finite there. On the InP Rib preset the caustic closes below about 280 µm, so at 5 µm the whole L₉₀ panel was empty.
| Symbol | Name | Unit | Derivation |
|---|---|---|---|
| L₉₀ | Loss per 90° at R_eval | dB | Log y-axis, mandatory: at R = 5 µm this spans about 24 decades over 1200–1700 nm and is unreadable on a linear axis. |
| R_min | Minimum bend radius | µm | The radius at which loss per 90° meets the tab’s threshold. A gap when the mode does not meet it at any radius up to 10 cm, the search’s physical runaway guard. This series carries full precision — the two-significant-figure rule applies only to the readout. |
| α | Bend propagation loss at R_eval | dB/cm | The same information as L₉₀ rescaled by a λ-independent constant at fixed R — offered because designers think in dB/cm. |
| δ | Lateral penetration depth 1/γₓ | nm | The mechanistic driver: it is what explains the slope of L₉₀. |
Directional Coupler → κ², Δn_eff, L_c
| Symbol | Name | Unit | Derivation |
|---|---|---|---|
| κ² | Power coupling at the set length L | — | sin²(π·L/(2·L_c(λ))). This is the curve that matters — it is the splitter’s bandwidth response. |
| Δneff | Supermode splitting | — | |n_even − n_odd| at each λ, at the tab’s gap and mode order. |
| Lc | Coupling length | µm | λ/(2·Δn_eff). |
Δn_eff ≤ 1e−12 is treated as no coupling: L_c = ∞ and κ² = 0.
Edge Coupler → η, η_x, η_y, MFD_x, MFD_y, L_taper
Same six quantities as the tab itself, swept in wavelength. This section has no mode axis — the trace is the taper tip — so it carries no mode multi-select.
Sweep defaults
| Section | Default λ range | Points | y-axis |
|---|---|---|---|
| Results | 1300–1700 nm | 101 | linear |
| Bend Loss | λ₀ − 100 … λ₀ + 100 nm | 51 | log, autoscaled, on the loss quantities |
| Directional Coupler | λ₀ − 100 … λ₀ + 100 nm | 101 | linear |
| Edge Coupler | λ₀ − 150 … λ₀ + 150 nm | 51 | linear (dB) |
λ₀ is the tool’s current operating wavelength, not a hard-coded 1550, so a 1310 nm preset behaves. The Results band is absolute rather than centred on λ₀, and 1300–1700 nm was chosen to cover both the O band and C + L in one sweep; at 101 points that is a 4 nm step. The three add-on sections use narrow windows because their quantities either span far too many decades (bend loss: 24 decades over 1200–1700 nm) or are only readable over a fraction of a period (κ²). Point count is clamped to 3–500.
Default sweep windows are clamped to the materials
Since 2026-07-31 a default sweep window is prevented from leaving a material’s validity range rather than warned about afterwards. The window you get is the intersection of four things:
- the section default in the table above;
- the tool’s own 400–4000 nm input bounds;
- the validity range of all three layers, not just the core — in a rib mode the cladding can carry 40 % of the power, so an extrapolated cladding corrupts n_eff just as thoroughly;
- the 1160 nm silicon pole floor, which applies whenever any layer is silicon.
On the InP Rib (Q1.25) preset that turns all four sections into 1500–1600 nm, the only band where the quaternary’s cited model applies — previously every section opened outside it and showed an amber banner at rest. On the silicon presets nothing moves except Thin SOI 1310’s edge-coupler window, 1160–1460 → 1200–1460 nm. A footnote under the sweep inputs names the limiting material whenever the clamp has actually narrowed the band.
Silicon carries two windows. Its cited range is 1360–11000 nm (Salzberg & Villa, via Tatian’s fit), and that is the number every tooltip and validity string quotes. The clamp uses a slightly wider working range of 1200–11000 nm, because the model is verified against an independent cited source over that extension: against Franta et al. (2017) it agrees to 1.5 × 10⁻³ in n and 1.6 × 10⁻³ in n_eff at 1200 nm — 0.055 %, roughly 70× smaller than the EIM’s own +3.8 % n_eff error at that geometry. This validates n and n_eff, not curvature: β₂ read at the bottom of the band carries more model uncertainty than at 1550 nm, on top of everything W1 already says about its sign.
Two situations cannot be fixed by clamping, and the tool says so permanently instead of clamping to something useless: your operating wavelength itself outside a layer’s range (W10b), and two layers whose ranges do not overlap at all (W10c). λ₀ is never moved for you. Two guarantees hold in every other case: the window always contains λ₀ on the three λ₀-centred sections, and it is never narrower than 20 nm unless the material window itself is.
A window you type yourself is not re-clamped — that would silently rewrite a saved design — and it is what raises W10a. The 1160 nm silicon floor is the one exception: it is a singularity guard, not a validity window, and it binds manual entry too.
Reading the caveats: ⚠ and ⓘ
Every notice in the tool is one of two kinds. ⚠ means the result on screen may be wrong in a way you could publish: accuracy caveats and extrapolation. It shows a single summary line and opens to the full text on click, and every one of them is reproduced word for word in EIM caveats in full below. ⓘ means an informational note — how a method works, what is not modelled — and stays fully collapsed until you ask for it. Nothing is hidden that used to be shown; the long form simply moved one click away.
Padded grid: the edge rule for derivative quantities
Derivatives need neighbours, so the two outermost points at each end of a sweep cannot carry a central difference. Rather than shrinking the stencil at the edges, the Results section pads the compute grid:
- You ask for [λ_min, λ_max] with N points, giving a step Δλ = (λ_max − λ_min)/(N − 1).
- Internally the tool sweeps N + 4 points over [λ_min − 2Δλ, λ_max + 2Δλ].
- n_g, β₂ and D are computed with the uniform 3-point central stencil on that padded grid.
- Only the interior [λ_min, λ_max] is plotted and exported.
Every displayed point therefore comes from the same second-order stencil, and no one-sided difference is used anywhere. The cost is four extra solves. Without padding, a request for 1200–1700 nm at 101 points comes back spanning only 1210–1690 nm, and a coarse grid visibly eats the band you asked for.
The 3-point stencil is deliberate, not a shortcut: measured truncation error in β₂ is 0.10 % at a 25 nm step and 4 × 10⁻⁵ at 5 nm, and the solver’s n_eff is smooth to ~1e−12, so the derivative is truncation-limited rather than noise-limited. A 5-point stencil buys nothing and costs edge range.
Two further masking behaviours are intentional. A point and its neighbour are masked when the change in n_eff between adjacent samples exceeds 3 % of their mean — that is what stops the derivatives blowing up as a mode approaches cutoff, and with padding it can bite inside the displayed range, which is correct. And a non-guided point gives NaN, which renders as a gap. Never as zero.
Padded points can legitimately sit below a material’s validity floor, two steps under the silicon floor for instance. They only feed the stencil at the band edges and are never displayed; if such a point falls below the silicon Sellmeier pole the solver returns NaN and the affected edge point shows as a gap, which is the honest rendering.
Bend-loss model
The free bend-loss chain, as corrected in July 2026:
- Linearised conformal map of the bend onto an equivalent straight guide with a tilted index profile.
- Radiation caustic located at x_rad = R·(n_eff/n_clad_eff − 1).
- WKB tunnelling integral through the barrier (composite Simpson, 1000 intervals).
- Symmetric-slab radiation prefactor:
γₓ = k₀√(n_eff² − n_clad_eff²), κₓ = k₀√(n_lat_core² − n_eff²)
That prefactor is the standard form of this prefactor family (Marcuse 1971; Snyder & Love §23); we have not re-verified its O(1) coefficient against the primary text.
n_lat_core is the EIM vertical-slab index for the mode’s own polarization. It cannot be recovered from the TE slab eigenvalue relation, because the lateral problem uses the crossed (TM) convention and the recovered value comes out 31 % wrong.
The lateral cladding index depends on the geometry. For a strip or a slot it is max(n_clad, n_sub). For a rib it is the vertical effective index of the etched slab region at the same polarization — that is the index the mode actually decays into, and the one the plotted lateral profile is built with. It falls back to max(n_clad, n_sub) when the etched slab guides no mode of that polarization, which is why the SOI Rib preset’s TM numbers are identical to a strip’s. Until July 2026 the bend model used the strip convention for every geometry, which described a different waveguide from the one the solver returned: it over-stated γₓ, inflated the radiation caustic and reported bend loss too low and R_min too small — the optimistic direction. Fixing it moved SOI Rib TE₀ R_min from 1.06 to ~4.5 µm, SOI Rib TE₁ from 2.92 to ~270 µm, and InP Rib TE₀ from 101 to ~2300 µm.
History worth knowing, because it changed published numbers. Until July 2026 this prefactor was dimensionally wrong — units of m⁻² where m⁻¹ is required — which inflated absolute loss by a factor of about 1.15 × 10⁷ and pushed the reported minimum bend radius about 2.7× too high. After the fix, for a 445 × 220 nm air-top silicon strip at 1500 nm, loss per 90° at R = 1 µm reads 5.76 × 10⁻² dB against 6.62 × 10⁵ dB before, and R_min at 0.01 dB/90° moves from 3.41 µm to 1.25 µm. Our full-vectorial FDE gives 0.0142 dB radiation-only for the same case and Vlasov & McNab measured 0.086 ± 0.005 dB total, so the corrected model now sits between them and its critical radius matches the FDE-implied ≈1.1 µm.
The conformal map is deliberately left linearised rather than exponential. The two approximations currently offset each other, and the linearised form is the closer of the two to full-vectorial at R ≈ 1 µm; switching only the map would move the R = 1 µm result away from FDE. Do not “improve” both at once without re-benchmarking.
Not computable without new physics, and therefore not offered: straight-to-bend junction and mode-mismatch loss, the substrate leakage floor, TE↔TM conversion in the bend, and whispering-gallery resonances. All of these are FDE/EME territory.
EIM caveats in full
These are the caveats the interface shows, in full, with the conditions under which each appears. Amber items appear inline in the tool because a result can be actively misread without them; the neutral items sit behind the ⓘ next to the plots.
W1 — β₂ / D sign at high contrast · Results vs λ · amber
Shown when β₂ or D is plotted and the index contrast is high.
W1b — β₂ / D magnitude at low contrast · Results vs λ · note
At this index contrast EIM gets the sign of β₂ and D right, but the magnitude runs 10–45 % high against full-vectorial FDE (Si₃N₄ 1000 × 400 nm at 1550 nm: +1.06 vs +0.98 ps²/m oxide-clad, +1.29 vs +0.89 air-clad).
W2 — group index accuracy · Results vs λ · note
EIM group index runs 1–7 % low against full-vectorial FDE (SOI 500 × 220 nm at 1550 nm: 4.03 vs 4.19 oxide-clad, 4.05 vs 4.37 air-clad). Fine for an FSR estimate, not for a group-delay budget.
W3 — supermode splitting accuracy · Directional Coupler vs λ · amber, always
W4 — κ² model limits · Directional Coupler vs λ · note
κ² = sin²(πL/2L_c) is the ideal two-waveguide result for the straight interaction region only. Coupling accrued in the S-bends that bring the waveguides together is not modelled, so a fabricated 50/50 coupler is normally shorter than the length shown here.
W5 — bend-loss method uncertainty · Bend Loss vs λ · amber, always
See the verbatim text under Bend-loss model.
W6 — physical floor · Bend Loss vs λ · note
Radiation loss below roughly 0.1 dB/cm is swamped: sidewall-roughness scattering measures 1–3 dB/cm in SOI (3.6 dB/cm TE in Vlasov & McNab 2004) and no mode solver models it. Switch the y-quantity to α (dB/cm) to compare directly.
Stated in dB/cm on purpose: a floor expressed in dB per 90° is radius-dependent — it moves 4× between R = 5 and 20 µm — and is therefore not a physical constant.
W7 — fiber MFD is wavelength-independent · Edge Coupler vs λ · amber, always
W8 — bare-waveguide overlap · Edge Coupler · note, always
Overlap of the bare waveguide mode (EIM) with a Gaussian fiber mode. No SiN overlay, polymer or SWG spot-size converter is modelled, and the vertical mode is fixed by the core thickness — no lateral tapering improves η_y. Real edge couplers with a spot-size converter reach −1 to −3 dB.
W9 — taper length is a bound · Edge Coupler vs λ · note
L_taper is the Love–Henry adiabaticity lower bound for a linear taper evaluated on EIM slab modes, not a design length; it says nothing about how much power a shorter taper actually loses.
W10a — you extended the window past a material’s range · all four vs-λ sections and the Dispersion tab · ⚠
This cannot appear at a default. Since 2026-07-31 every default sweep window is clamped into the intersection of all three layers’ validity ranges (see Default sweep windows above), so the banner is a consequence of something you typed. The silicon sentence that used to end this banner — the pole at 1135 nm — was removed from it because the hard 1160 nm floor makes that state unreachable; it survives as a neutral footnote under the sweep inputs and in the material section above.
W10b — the operating wavelength is outside a material’s range · whole tab · ⚠, permanent
Clamping the sweep would not help here — a band that excludes your own operating wavelength is worse than an extrapolated one — so the tool refuses to clamp and says so instead. A Si₃N₄ / SiO₂ / water stack at 1550 nm is the live case: our water model (Daimon & Masumura, 20.0 °C) stops at 1130 nm.
W10c — two materials with no overlapping range · whole tab · ⚠, permanent
Reachable today with a Q1.25 core (1500–1600 nm) under a water cladding (180–1130 nm). There is no wavelength at which the whole stack is inside its cited data, so there is nothing to clamp to.
W11 — a layer carries no index curvature · Results vs λ and the Dispersion tab (β₂, D) · amber
The trigger is any of the three layers, not just the core: Q1.25 is selectable as substrate or cladding too, and in the InP rib mode the cladding carries about 40 % of the power.
W12 — a rib minimum bend radius is an order of magnitude · Bend Loss tab and Bend vs λ · amber
Above a rib R_min of about 100 µm the tool adds a second statement, computed for the case on screen: the 90° arc length is πR/2 from that mode’s own R_min, and the propagation-loss clause is keyed to the core material. A Q1.25 core quotes the generic InP platform’s ~2 dB/cm; a silicon core quotes the 1–3 dB/cm sidewall-roughness range, never a single figure; any other core gets the arc length alone, because we have no cited number to quote. At the InP Rib preset that reads 3.7 mm and 0.73 dB, about 73× the 0.01 dB/90° budget; at SOI Rib TE₁ it reads 0.42 mm and 0.042–0.13 dB, 4.2–12.5×. At radii this large, bend loss is not the binding constraint; straight-waveguide propagation loss is. Arc and loss are shown to two significant figures like the R_min they are derived from, so π·R/2 on the displayed radius reproduces the displayed arc.
W13 — a table of measured points is not a dispersion model · Results vs λ and the Dispersion tab (n_g, β₂, D) · ⚠
Every catalogue material and every custom material of kind tabulated is affected; the built-in materials are all analytic and are not. There is a second, quieter failure with the same cause: outside its tabulated range the spline holds the index constant, so dn/dλ ≡ 0 and the material contributes no dispersion at all while the curve still looks perfectly smooth. Default sweep windows are clamped to the table span for exactly that reason, and a neutral footnote says so if you extend past it.
Also not modelled, anywhere in the free tier
- Sidewall-roughness scattering — usually the dominant measured straight-waveguide loss.
- Wavelength-dependent coupler excess loss, asymmetric or broadband couplers, TE–TM crosstalk.
- SiN / polymer / SWG spot-size converters, 3-D taper mode evolution, back-reflection, alignment tolerance.
- Anisotropy, thermal effects, EME / varFDTD propagation (see the PIC Propagation Simulator for EME).
CSV columns
Export requires a free account.
| Export | Columns |
|---|---|
| Guided Modes table | Mode, n_eff, confinement and (for slot geometries) slot confinement, plus the geometry and material context. |
| vs Wavelength section | Wavelength (nm) then every y-quantity of that section, whether or not it is currently plotted. With more than one mode overlaid the columns are prefixed by mode label (TE0_n_eff, TM0_n_eff, …); with a single mode the bare quantity names are used. Non-guided points export as empty cells, not zeros. |
The vs-Wavelength export covers the displayed interior of the grid, so padded points never appear in the file.
URL parameters
The Share button copies a link carrying the full cross-section state.
| Key | Meaning |
|---|---|
t | Geometry type (strip | rib | slot) |
w, h | Width, height (nm) |
hs | Slab height (rib only) |
rw, sw | Rail width, slot width (slot only) |
cm, sm, clm | Core, substrate, cladding material |
nc, ns, ncl | Resolved core, substrate and cladding indices — written whenever they are finite, built-in material or not |
lam | Operating wavelength (nm) |
pol | Polarization filter, when not Both |
m | Selected mode index, when not the fundamental |
vw | Which vs-Wavelength section is open |
vwy | Panel stack: a comma-separated y-quantity list, one entry per panel |
vwm | Mode overlay: a comma-separated mode list |
vwr | R_eval for the Bend Loss section, written only once you have typed one — otherwise the link reproduces the R_min-derived default |
Sources
- E. Dulkeith, F. Xia, L. Schares, W. M. J. Green, Y. A. Vlasov, “Group index and group velocity dispersion in silicon-on-insulator photonic wires”, Opt. Express 14, 3853 (2006).
- Yu. A. Vlasov and S. J. McNab, “Losses in single-mode silicon-on-insulator strip waveguides and bends”, Opt. Express 12, 1622 (2004).
- D. Marcuse, “Bending losses of the asymmetric slab waveguide”, Bell Syst. Tech. J. 50, 2551 (1971).
- A. W. Snyder and J. D. Love, Optical Waveguide Theory (Chapman & Hall, 1983), §23.
- M. Heiblum and J. H. Harris, “Analysis of curved optical waveguides by conformal transformation”, IEEE J. Quantum Electron. 11, 75 (1975).
- C. D. Salzberg and J. J. Villa, J. Opt. Soc. Am. 47, 244 (1957) — the shipped silicon index model, validity 1.36–11 µm.
- I. H. Malitson, J. Opt. Soc. Am. 55, 1205 (1965) — the shipped SiO₂ model.
- H. H. Li, J. Phys. Chem. Ref. Data 9, 561 (1980) — silicon index used in internal coupler benchmarks.
- Corning SMF-28 product information — catalogue mode field diameter 9.2 ± 0.4 µm at 1310 nm, 10.4 ± 0.5 µm at 1550 nm.
- L. Chrostowski and M. Hochberg, Silicon Photonics Design (Cambridge University Press, 2015), Ch. 4.
Every model on this page is derived in full before it is implemented and then held to acceptance gates that run on every release — including the full-vectorial cross-checks quoted throughout this page; the measurements and published results those gates are built on are the references listed above.