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 spatial depth information to the spectral dimension so you can locate where energy flow, local loss, and field intensity are distributed 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
layer-level attribution before depth-resolved localizationRTA 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 plots the normalized z-component of the Poynting vector. In this 1D thin-film context, it is the most direct view of forward energy flow through depth.

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 is the layer-integrated summary.
  • Absorption Density is the continuous spatial distribution inside the layers.

Layer Absorption is the layer-level summary. Absorption Density is the position-level distribution.

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

For a first pass, use Magnitude and the default component setting to locate field-enhancement regions. Use Phase after the relevant spatial region is identified.

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.

If the goal is to explain an absorption increase, read Electric Field together with Absorption Density.

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 locate the dominant loss region.
  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

If the current task is to turn depth-resolved results into local-field, local-absorption, and post-optimization validation workflows, continue with Depth Detector Analysis. If the current task is to write the best solution back into the model and re-check system-level results, continue with Optimization Report and then return to the relevant Analysis page.

Copyright © 2026 Dreapex