Results

Basic Optical Results

Reflectance, transmittance, absorptance, and layer absorption

This chapter covers the four result pages most users check first: Reflectance, Transmittance, Absorptance, and Layer Absorption.

These pages provide the baseline performance readout: use R / T / A for the system-level response, then use Layer Absorption to locate where loss occurs.

Analysis Entry

Current results pageMethod page
Reflectance / Transmittance / AbsorptanceRTA and Layer Absorption Analysis
Layer AbsorptionRTA and Layer Absorption Analysis
in-layer localization after Layer AbsorptionDepth Detector Analysis
multi-dimensional sweep and optimizer entryOverview

Focus

This chapter covers three points:

  1. what Reflectance, Transmittance, Absorptance, and Layer Absorption each provide
  2. how single-run, table, and Sweep presentations differ
  3. how to read Layer Absorption and when large-data safeguards force a table

Example Setup: Default ITO-on-Substrate Baseline

All screenshots in this chapter come from the app's built-in default model. No material files are replaced and no extra layers are added, so a first-time user can reproduce the same run immediately.

This baseline uses:

  1. The default Structure: Air-in -> ITO (40 nm) -> Substrate (1 um, Incoherent) -> Air-out.
  2. The default Optics: wavelength mode Sweep, 400 -> 900 nm, step 5 nm.
  3. Incident Angle = 0° and pRatio = 0.5.
  4. Only the basic detectors enabled: Reflectance, Transmittance, Absorptance, and Layer Absorption.
  5. The top-toolbar Run button for the single calculation.

Shared page structure

Reflectance, Transmittance, and Absorptance all reuse the same result-page shell. The layout is consistent:

  1. Result header bar: in Sweep mode it shows a green Sweep tag and the active sweep-item count.
  2. Left main area: the chart or the data table.
  3. Right sidebar: export buttons, chart controls, and quick statistics.
  4. Left result navigation counts: the number beside each result group indicates how many child results are currently available.

If the page has no usable data, the main panel shows No data. That usually means one of the following:

  • no run has been executed yet
  • the corresponding detector was not enabled
  • this result type was not produced in the current run

Single-run results

In single-run mode, Reflectance, Transmittance, and Absorptance all open in chart view by default.

Each page answers a different question:

PageWhat you are looking atTypical use
ReflectanceReflected fraction of the incident energyAnti-reflection checks
TransmittanceTransmitted fraction of the incident energyThroughput / transparency checks
AbsorptanceAbsorbed fraction of the incident energyLoss or absorber checks

When the wavelength mode is Sweep, the x-axis is wavelength and the y-axis is the selected optical quantity.

Reading checklist:

  1. Check the overall level and trend across the full wavelength range.
  2. Check peaks, valleys, and knees inside the design band.
  3. Switch to the table only after you know which wavelengths deserve exact inspection.

In single-run chart view, the right sidebar usually contains:

  • Export CSV: export the raw values for the current page.
  • Export Image: export the current chart image.
  • Copy Image: copy the chart to the clipboard.
  • Wavelength Points / Data Points: quick indicators of the current data size.

Use Export Image for reports and slides. Use Export CSV when you need exact numbers in Excel, Origin, or Python.

Cross-checking R / T / A

For one normal spectral run, the baseline sanity check is:

  • R + T + A should stay close to 1

Small rounding differences are acceptable, but the sum should remain physically consistent. If it drifts badly, check these first:

  1. whether the refractive-index files are sensible
  2. whether a layer that should be transparent is actually absorbing
  3. whether the wavelength step is too coarse for the feature you are reading

Table view

Switch to the table when you care about exact numbers rather than trend shape.

The table view is best for two jobs:

  1. reading an exact value at one wavelength
  2. validating data volume and value range before export

The most important columns are:

  • Wavelength (nm)
  • the current result-value column (Reflectance, Transmittance, or Absorptance)

The toolbar above the table adds a few practical controls:

  • Color Scale: applies a value gradient so high/low regions are easier to spot.
  • Export CSV: exports the currently displayed data.
  • Total records: shows how many rows are being rendered.

When table view is preferred

Prefer the table when:

  1. you need a reportable metric such as R at 550 nm
  2. you want to compare multiple designs outside the app
  3. the curves are too close to judge by eye
  4. the Sweep dimensions are already too dense for a readable chart

Sweep results

When lastRunType = sweep and a result exists, these pages automatically switch into sweep-result mode.

Two things change immediately:

  1. the result header shows a Sweep tag plus the number of sweep dimensions
  2. the chart stops representing one run and starts representing multiple parameter combinations

To generate the multi-line sweep example below, this chapter uses the smallest reproducible one-parameter sweep:

  1. Open the Sweep page.
  2. Keep optics/incidentAngle enabled and set it to 0 -> 60 with step 20.
  3. Disable optics/pRatio so the result stays in line-chart mode instead of becoming a multi-parameter table.
  4. Click Run Sweep.

When there is only one sweep parameter and the x-axis is still wavelength, the most common presentation is a multi-line plot: one line per parameter value.

Meaning of each sweep line

In the example above:

  • the legend is Incident Angle
  • 0 / 20 / 40 / 60 are four angle values
  • comparing line height at the same wavelength is equivalent to comparing those angle settings directly

Use this view to check:

  • does reflectance rise uniformly as angle increases?
  • does the parameter change the full curve, or only a limited wavelength band?

Conditions for multi-line plots

Not every sweep result stays in line-chart mode. The app changes the visualization based on dimensionality.

For Reflectance, Transmittance, and Absorptance, the current forced-table rules are:

CaseWhen the app forces a table
Scalar results (Single / Average)sweep parameter count > 3
Non-scalar results (includes wavelength dimension)sweep parameter count > 2

Once the page is forced into table mode, the chart/table toggle disappears because chart mode is no longer available.

Layer Absorption

Absorptance tells you how much total energy is absorbed, but not where the absorption occurs inside the stack.

That is the purpose of Layer Absorption: it splits the total absorption by layer so you can see which layer is responsible.

In single-run mode, the default and most common view is a stacked layer plot:

  • the x-axis is still wavelength
  • each color represents one layer
  • the stacked sum at a given wavelength corresponds to the total absorption

Reading Layer Absorption

Do not start by asking “which color is highest?” Use this order instead:

  1. identify the wavelength band where total absorption matters
  2. identify which layer dominates in that band
  3. go back to Structure and decide whether that loss location is intentional or accidental

Examples:

  • If loss is concentrated in a transparent electrode layer, the front electrode may be too lossy.
  • If loss is unexpectedly concentrated in the substrate, the material file or boundary setup deserves review.

Layer Absorption in sweep mode

In Sweep mode, Layer Absorption is not just “more lines.” The current implementation can switch between several chart families:

  • stackedArea
  • line
  • heatmap
  • scatter3D
  • bar3D

Availability depends on:

  1. whether the result is scalar or wavelength-resolved
  2. how many sweep parameters are active
  3. whether the data size crosses the 3D rendering threshold

That makes this page the best place to study how loss distribution moves when parameters change.

Large-data limits

The result pages do not render unbounded data. The current implementation uses hard limits:

LimitCurrent thresholdWhat happens when exceeded
Standard chart points500,000chart rendering is blocked and a large-data warning is shown, with CSV export as the fallback
scatter3D points80,0003D scatter rendering is blocked and export remains available
bar3D points50,0003D bar rendering is blocked (bar geometry is more expensive than scatter)
Chart optimization threshold100,000animations, smooth curves, and data-point markers are disabled for performance
Table rows500,000table rendering is blocked and a large-data warning is shown
Single-request TMM solve count50,000backend safety limit; the request is blocked before execution to prevent timeout or memory exhaustion
Single-request data points1,000,000hard cap on the number of result data points returned per request
Total data points20,000,000cumulative cap across all stored results

So when you see a “data too large” warning, treat it as a rendering safeguard, not as a physics failure:

  • the data can still be valid
  • the browser-side renderer is simply protecting itself
  • the correct response is usually CSV export or a smaller sweep space

Review flow

If you need a fast and repeatable review flow, use this order:

  1. Reflectance: check whether the anti-reflection target is met.
  2. Transmittance: check whether usable throughput is still acceptable.
  3. Absorptance: check whether total loss is acceptable.
  4. Layer Absorption: identify which layer owns that loss.
  5. Switch to the table or export CSV only for the wavelengths that matter.

Review flow: system-level behavior -> layer-level breakdown.

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 detector was enabled
  3. whether this page belongs to the data produced in the current run

Layer Absorption unavailable

This usually means the current result set does not include a valid layer-absorption matrix. The most common causes are:

  • the relevant absorber/basic detector setup was not enabled
  • the current run did not generate a valid wavelength result

Chart fallback to table view

This usually means either:

  • the sweep dimensionality triggered the forced-table rule, or
  • the data volume crossed the safe chart threshold

Difficult visual comparison

Do not keep guessing from the plot. Switch to the table, read the exact design wavelengths, and export CSV if necessary.

Next step

If the current task is system-level performance analysis, sweep design, or direct optimization, continue with RTA and Layer Absorption Analysis. If the current task has already moved from layer-level loss to in-layer position, continue with Depth Detector Analysis.

Copyright © 2026 Dreapex