Transmittance of a four-line multipassband filter compared with the bare thick titania seed it was synthesized from

The previous optimization tutorial refined a four-layer AR coating. Four thicknesses moved, and the structure never changed. That is all refinement can do. If a design needs more layers than it has, or needs them in a different order, no amount of thickness refinement will get there.

This tutorial does the opposite kind of work. The target is a four-line multipassband transmission filter: four narrow bands that must pass, everything between them blocked. The starting point is a single 7000 nm slab of TiO₂, which resembles nothing about the answer. Needle synthesis will carve it into a 55-layer filter with four lines above 98.4% average transmittance and stopbands below 2.6%, in about five minutes of work.

The same exercise ships inside TFStudio as the Multipassband filter: Needle + Cleaner tutorial (Help → Tutorials). This article follows that task but pushes it further than the in-app version does, with a higher layer budget, a manufacturing thickness constraint, and a final refinement pass. The in-app tutorial stays deliberately short.


The design conditions

  • Incident medium: Air
  • Substrate: BK7 (Schott)
  • Coated surface: Front
  • Evaluation: Ignore other side
  • Angle of incidence:
  • Polarization: Average
  • Reference wavelength: 550 nm
  • Materials: TiO₂ and SiO₂ only

The in-app tutorial registers a dedicated two-material catalog, Multipassband (TiO2/SiO2), and uses it for both the seed layer and the Needle candidate pool. A two-material pool suits this exercise, where structure rather than material variety does the work.

Catalog entry nn at 400 nm nn at 550 nm nn at 700 nm
TiO2 2.7734 2.5166 2.4468
SiO2 1.4701 1.4599 1.4553
BK7 (Schott) 1.5308 1.5185 1.5131

Both coating materials are treated as non-absorbing across 400–700 nm, so the filter's stopbands work by reflection rather than absorption.


Why the starting design is one thick layer

Needle synthesis inserts an infinitesimally thin layer of a candidate material at the position where it most improves the merit function, then refines (Sullivan & Dobrowolski 1996; Tikhonravov et al. 1996). The insertion has no thickness of its own. It splits an existing layer in two and puts a new interface between the halves.

That has a direct practical consequence: needle can add interfaces, but not optical thickness. A filter of this kind needs several micrometres of material to build four narrow lines with steep edges. If synthesis starts from a thin stack, needle has nothing to subdivide and stalls at a shallow design. Starting from a thick slab gives it bulk to work with, and the refinement between insertions redistributes that bulk.

So the starting design is a single layer:

Design Editor layer Material Thickness
1 TiO2 7000 nm

image.png


Define the merit function

The target is four passbands and the five stopbands between and around them, all specified as band averages of transmittance. Open the Merit Function Editor and enter nine [TAV operands](https://docs.tfstudio.xyz/design/operands/), all at 0° with average polarization and weight 1:

Operand Band Target
TAV 425–437 nm T=1T=1
TAV 495–507 nm T=1T=1
TAV 565–577 nm T=1T=1
TAV 638–650 nm T=1T=1
TAV 400–420 nm T=0T=0
TAV 442–490 nm T=0T=0
TAV 512–560 nm T=0T=0
TAV 582–633 nm T=0T=0
TAV 655–700 nm T=0T=0

image.png

TAV is the average of transmittance over its band, so each operand contributes one number, and the merit function is the root-mean-square of the nine deviations from target:

MF=1Ni=1N(TˉiTitarget)2.\mathrm{MF} = \sqrt{\frac{1}{N}\sum_{i=1}^{N}\left(\bar{T}_i - T_i^{\text{target}}\right)^2}.

Note the 5 nm guard between each passband and its neighbouring stopband. Nothing is specified between 437 and 442 nm, for example. Those gaps are where the filter edges are allowed to fall. Specifying a band edge as a step from T=1T=1 to T=0T=0 at a single wavelength asks for something no finite stack can deliver, and the optimizer will spend layers fighting it.

Leave thickness constraints out for now. Needle ignores MNT and MXT during synthesis anyway, and a manufacturing floor imposed this early only holds the search back.

The bare seed, for reference

Before running anything, look at Optical Evaluation. The 7000 nm slab is a thick etalon: dense interference fringes swinging between 55.5% and 95.8% transmittance across 400–700 nm, with no passband structure at all. Its merit function is 0.593437.

image.png

That number is the baseline for everything below.


Step 1. Needle

Open Needle Automatic and set:

  • Candidate materials: TiO₂ and SiO₂ (the Multipassband (TiO2/SiO2) catalog only)
  • Inner refiner: Conjugate Gradient
  • Refine iterations: 30
  • Max layers: 100

Press Run and watch two things: the layer count climbing as insertions are accepted, and the merit function dropping after each refinement. The scan plot shows the P-function against position, and its deepest dip is where the next needle goes.

After about 30 seconds it reached 101 layers and stopped. The merit function is down from 0.593437 to 0.021410, and the stack is 3343.82 nm thick, so needle has already thrown away half the seed while building the structure. Much of what it built is too thin to deposit: the thinnest layer is 1.00 nm, and 34 of the 101 layers are under 5 nm.

image.png

image.png

Step 2. Design Cleaner

A stack straight out of needle contains layers that earn nothing: a few nanometres thick, sometimes sandwiched between two layers of the same material because an insertion was later refined down to nothing.

image.png

Open Design Cleaner, which removes layers below a thickness threshold, merges same-material neighbours, and re-refines to recover the small merit change.

  • Minimum thickness: 5 nm
  • Merge adjacent: on
  • Re-optimize after: on

image.png

The operations preview lists every removal and merge with the merit function before and after, so the cost of the cleanup is visible before committing to it.

It lists 50 operations here, and the stack drops from 101 layers to 51. Removing a thin layer leaves its two neighbours touching, and since they are the same material the next pass merges them, so each removal costs two layers off the count. Total thickness barely moves, from 3343.82 nm to 3336.57 nm, which is the point: the layers that went were carrying almost no optical thickness.

They were carrying some merit, though. The cleaned stack sits at MF 0.061703, about three times worse than the 0.021410 needle left. The spectrum visibly degrades, and the next step is what buys it back.

image.png

image.png

Step 3. Add a thickness floor and refine with SQP

The design is now structurally right but not yet manufacturable, since synthesis leaves layers thin enough that a deposition run could not hold them to tolerance. Deleting those layers would change the spectrum. Give the refiner a constraint instead and let it redistribute.

Back in the Merit Function Editor, add one operand:

Operand Layers Target
MNT all 30 nm minimum

Thirteen of the 51 layers are below 30 nm at this point, so the merit function jumps to 7.557396 the moment the operand goes in. That number is the constraint violation, not the optics: the optical part is still 0.061703. A hard constraint dominates the merit function until it is satisfied, which is exactly how it should behave.

Then open Refinement and run Sequential QP. SQP suits the problem now that it genuinely has constraints, because it handles the 30 nm bounds directly instead of penalizing violations after the fact. See Optimization Methods for how the methods differ.

image.png

SQP satisfies every bound and lands at MF 0.015836, better than the 0.021410 needle reached with layers a nanometre thick. Twelve layers sit exactly at 30.00 nm, which is the signature of an active constraint: the optimizer wanted them thinner, the bound said no, and the remaining 39 layers absorbed the difference by growing the stack to 3473.97 nm.

image.png

I noticed that it has a transmittance dip around 440-490 nm region that I'd like to eliminate before stopping. Then I went on and optimized it further using same 3 steps - needle automatic to around 75 layers, then design cleaner, then refinement using SQP again. That way I got to an even better result:

image.png

The result

That second round costs four layers and buys another 12% off the merit function. The whole thing, from opening the seed to saving this design, took about five minutes.

The final design has 55 layers, strictly alternating TiO₂ and SiO₂, with TiO₂ against both the substrate and the air. Total physical thickness is 3543.28 nm, half the seed, with the rest optimized away. The thinnest layer is 30.00 nm and the thickest 254.90 nm. The merit function is 0.013981, forty-two times better than the bare seed.

Seed After needle After cleaner After SQP Final
Layers 1 101 51 51 55
Total thickness 7000.00 nm 3343.82 nm 3336.57 nm 3473.97 nm 3543.28 nm
Thinnest layer n/a 1.00 nm 7.33 nm 30.00 nm 30.00 nm
MF 0.593437 0.021410 0.061703 0.015836 0.013981

Band by band, using the operand values the merit function itself is built from:

Band Target Achieved average TT Worst point in band
425–437 nm 1 99.740% 99.348% at 428 nm
495–507 nm 1 98.804% 96.226% at 495 nm
565–577 nm 1 98.495% 92.416% at 577 nm
638–650 nm 1 98.543% 93.642% at 638 nm
400–420 nm 0 0.101% 1.036% at 420 nm
442–490 nm 0 0.800% 6.103% at 490 nm
512–560 nm 0 1.152% 9.599% at 560 nm
582–633 nm 0 2.505% 22.257% at 633 nm
655–700 nm 0 1.859% 22.903% at 655 nm

Every stopband maximum sits on the band edge that faces a passband, and every passband minimum sits on the edge facing a stopband. Those points are the filter edges rolling off inside the 5 nm guard region, with the tail of the roll-off reaching a little way into the specified band. Trim 5 nm off each stopband end and the worst leakage anywhere in the design drops from 22.9% to 3.45%. If those edges need to be sharper, the guard bands are what to tighten, and the design will spend layers doing it.

Measured as lines rather than as bands, on a 0.1 nm grid:

Target band Peak TT FWHM Half-max range
425–437 nm 99.98% 16.6 nm 422.8–439.5 nm
495–507 nm 100.00% 16.0 nm 493.1–509.1 nm
565–577 nm 99.99% 16.2 nm 562.8–579.0 nm
638–650 nm 99.97% 18.0 nm 635.1–653.0 nm

Each line is flat-topped with a little ripple rather than a single peak, which is what a band-average TAV target asks for. Nothing in the merit function rewards a smooth top, only a high average, so if flatness matters the target should say so.

The plot also runs up to 16.15% at 398.5 nm, just outside the specified range. Nothing was ever asked of the design below 400 nm, so nothing constrains it there. If out-of-band blocking matters for the application, it has to be specified. The merit function is the whole of what the optimizer knows.


What each stage contributed

Needle created the structure. It chose how many layers the filter needs and in what order, starting from a design that had none of that information in it. Neither Design Cleaner nor SQP could have produced this topology, and neither could refinement of any hand-built stack.

Design Cleaner removed what the search left behind. Synthesis is exploratory, and exploration leaves clutter, so the cleanup step is what turns a search result into a design.

SQP made the design buildable. The 30 nm floor is a manufacturing statement, and applying it as a constraint after the structure was settled, rather than as a limit during synthesis, is what let the design keep its spectrum while respecting it.

The order matters as much as the tools. Constrain too early and synthesis never finds the structure. Clean too early and you delete layers the search still needs.

What this result does not yet show

The design was optimized at normal incidence, average polarization, one coated surface, and the stated TiO₂/SiO₂ dispersion. It has not been checked at oblique incidence, where narrow lines shift toward the blue and split between s and p. It has not been checked against deposition errors either, and a 55-layer filter with 30 nm layers is the kind of design where thickness tolerance decides whether it can be made at all. A second Needle run from the same seed can also land on a different local minimum with a different layer count.

Those are the subjects of the tolerancing and monitoring tutorials. A synthesized design is the start of that work, not the end of it.