Results

Depth Distribution Results

Poynting vector, absorption density, and electric field maps

This chapter covers the three depth-resolved result pages: Poynting Vector, Absorption Density, and Electric Field. These pages add depth-direction information on top of wavelength, showing how energy flow, absorption, and electric field are distributed at each position inside the stack.

Use these pages to identify:

  • where field enhancement is concentrated,
  • which layer is responsible for local absorption,
  • whether a layer boundary introduces a visible change in energy flow.

Analysis Entry

Current results pageMethod page
sweep strategy and interpretation for Poynting Vector / Absorption Density / Electric FieldDepth Detector Analysis
use Layer Absorption to identify which layer absorbs, then examine depth distributionRTA and Layer Absorption Analysis
fallback rules for multi-dimensional sweepsOverview

Focus

This chapter covers three points:

  1. the prerequisites and shared page structure of depth-resolved results
  2. how to read Poynting Vector, Absorption Density, and Electric Field
  3. what to do when charts fall back to tables or trigger large-data safeguards

Example Setup: Coherent ITO Baseline

The screenshots in this chapter use the default ITO-on-substrate model with one required change: the substrate is switched from incoherent to coherent so the app can generate depth-resolved fields.

This baseline uses:

  1. The default Structure: Air-in -> ITO (40 nm) -> Substrate (1 um) -> Air-out.
  2. Substrate with Inco. turned off, so the full stack is coherent.
  3. The default Optics: wavelength mode Sweep, 400 -> 900 nm, step 5 nm; Incident Angle = 0°; pRatio = 0.5.
  4. Depth Distribution > Select All, which currently enables all four depth outputs: Poynting Vector, Absorption Density, Electric Field, and Refractive Index. This chapter focuses on the first three.
  5. Depth Resolution = 1 nm, then the top-toolbar Run button.

Prerequisites and shared page structure

Depth-distribution pages have explicit availability conditions. The current implementation is gated by:

ConditionCurrent ruleDirect consequence when not met
Detector enabledThe corresponding detector must be checked in Optics > Depth DistributionThe page has no data
Fully coherent stackEvery layer in the stack must remain coherentPoynting / Absorption Density / Electric Field are not generated
Depth resolutionresolution >= 0.1 nm and <= 100 nm; in practice it should also stay below the total stack thicknessValidation fails or the result becomes too coarse to interpret

The three pages share the same page shell:

  1. Result header: shows the current result type, single-run vs Sweep, and the chart/table toggle.
  2. Main plot area: shows the depth-resolved plot, or a table when dimensionality becomes too high.
  3. Right sidebar: chart-type toggles, export actions, data-count stats, and page-specific controls.
  4. Layer-boundary overlay: marks the depth regions that belong to different layers.

Axes, Color Scale, and View Modes

In heatmap mode:

  • the x-axis is Depth (nm),
  • the y-axis is Wavelength (nm),
  • color represents the selected physical quantity,
  • the color bar shows the current displayed minimum and maximum.

In line mode:

  • the x-axis is still depth,
  • each line corresponds to one wavelength,
  • the sidebar lets you select or invert the wavelength set to display.

Use Heatmap for full spatial overview. Use Line for a smaller set of explicit depth profiles at selected wavelengths.

When the App Falls Back to a Table

These pages do not always remain in chart mode. The current implementation has two automatic fallbacks:

  1. In Sweep results, the page switches to a table when the active sweep dimensionality becomes too high (for non-scalar results, this usually starts at two sweep dimensions).
  2. When the table row count, chart point count, or 3D scatter point count exceeds the rendering limits, the app blocks the visualization and recommends CSV export.

The current limits are:

LimitCurrent thresholdBehavior when exceeded
Total table rows500,000Table rendering is blocked and a large-data warning is shown
Total chart points500,000Chart rendering is blocked or warned
scatter3D points80,0003D scatter rendering is blocked, export remains available
bar3D points50,0003D bar rendering is blocked (bar geometry is more expensive than scatter)
Chart optimization threshold100,000Animations and smooth curves are disabled for performance
Single-request TMM solve count50,000Backend safety limit to prevent timeout or memory exhaustion

So a missing plot does not necessarily indicate bad physics. In many cases, it only means the browser-side renderer is protecting itself.

Poynting Vector

The Poynting Vector page shows the normalized energy flow along the depth direction through the stack.

Check:

  1. Check whether interfaces introduce visible steps or gradients.
  2. Check whether strongly absorbing regions coincide with stronger decay.
  3. Check whether low-loss regions remain smooth and nearly uniform.

In the baseline case used here, the map is mostly smooth. That is consistent with a relatively simple ITO-on-substrate stack. The visible change near the layer boundary reflects index contrast and layer transition rather than a localized severe loss.

Primary use

Use this page to check:

  • Is energy moving through the stack smoothly, or is something changing sharply at an interface?
  • Did a design change make the stack more “transparent” to power flow or more “blocked” in a specific region?

If the question is “which layer is actually absorbing,” move to Absorption Density.

Absorption Density

Absorption Density shows local absorption per depth position. It is used to locate where absorption is strongest, not to report total absorbed power.

Check:

  1. Identify the high-intensity regions.
  2. Determine whether they persist across the full band or only inside a narrow wavelength range.
  3. Map those regions back to the layer stack in Structure.

This page complements Layer Absorption:

  • Layer Absorption gives the total absorption of each layer.
  • Absorption Density further shows how absorption is distributed spatially within each layer.

In the heatmap above, absorption density is concentrated in the narrow strip on the far left, corresponding to the ITO layer (40 nm). The remaining depth is the Substrate, which shows virtually no absorption.

When to return to Structure

If the strongest absorption appears inside a layer that should have stayed nearly transparent, check these first:

  1. whether the k values in the material file are too large,
  2. whether the wrong material file was applied,
  3. whether the functional layer and substrate were accidentally assigned in the wrong order.

Electric Field

Electric Field is the most information-dense of the three pages. It can show field magnitude, phase, and individual Cartesian components.

The current page exposes three control groups:

ControlPurposeCurrent limitation
Magnitude / PhaseSwitch between field magnitude and phasePhase mode restricts the component list
ComponentSelect Ex / Ey / Ez / ETotal magnitude E is not available in Phase mode
Unwrap PhaseRemove -π ~ π discontinuities in phase plotsAvailable only in Phase mode

Magnitude is used to locate field-enhancement regions. Phase is used to check whether the phase transitions smoothly between layers.

Field-enhancement checks

Use this check sequence:

  1. identify the brightest region in the map,
  2. identify which layer contains that region,
  3. decide whether that layer is the one where enhancement is intended,
  4. if not, return to Structure or Optics and adjust thickness, angle, or polarization.

To explain why absorption is increasing, compare the Electric Field and Absorption Density pages side by side.

Analysis order

Use this fixed sequence:

  1. Start with Poynting Vector to judge whether the energy transport remains smooth.
  2. Move to Absorption Density to find where absorption is strongest.
  3. Finish with Electric Field to explain whether local field enhancement is driving that behavior.
  4. Switch to the table or export CSV only when exact numeric extraction is required.

Common errors and checks

No data on the page

Check these first:

  1. whether Run or Run Sweep was actually executed,
  2. whether the corresponding depth detector is enabled,
  3. whether any layer is still marked as Inco..

Disabled depth-resolution input

This usually means no depth detector is currently enabled. In the current UI, Depth Resolution becomes editable only after at least one depth detector is checked.

Nearly flat heatmap

That does not automatically mean the model is wrong. Common reasons are:

  1. the physical quantity is genuinely varying only weakly,
  2. the dynamic range is narrow, so the color bar spans a small interval.

In that case, switch back to Line mode and inspect a smaller set of wavelength profiles directly.

Table fallback or large-data warning

This is usually a rendering safeguard, not a physics failure. The normal responses are:

  1. reduce the sweep dimensionality,
  2. increase the wavelength step,
  3. increase the depth resolution value (fewer depth points),
  4. export CSV and inspect the data outside the browser.

Next step

For detailed depth-distribution analysis methods, see Depth Detector Analysis. To write optimization results back into the model and verify, see Optimization Report.

Copyright © 2026 Dreapex