Skip to content

In-plane photon extractor

Parametrized in-plane light-extractor package (geometry/materials/monitors/optimizer CLI) with baseline configs and swept runs.

No top-level README -- this package has no single project writeup; each optimizer run under configs/runs/ writes its own notebook.md. Shown below is the latest full baseline run.

  • Run ID: 2026-05-17_21-35-45__baseline__si3n4base-0__si3n4total-300__si3n4opt-300__anth-200-bottom__cap-pva__full
  • Mode: full (30 iterations)
  • Started: 2026-05-17T21:35:45
  • Wavelength: 780.0 nm
  • Output dir: runs\2026-05-17_21-35-45__baseline__si3n4base-0__si3n4total-300__si3n4opt-300__anth-200-bottom__cap-pva__full

Configuration

name = 'baseline'
mode = 'full'
seed = 0
wl_um = 0.78  # um - central wavelength
bw_um = 0.02  # um - spectral monitor bandwidth
n_wl = 21
n_sub = 1.44  # SiO2 substrate index
t_si3n4_total_nm = 300  # nm - total Si3N4 thickness: base + optimization
t_si3n4_base_nm = 0  # nm - uniform Si3N4 film below optimization region
n_si3n4 = 2.0  # Si3N4 index
cr_l_um = 5.0  # um - design region length (x)
cr_w_um = 3.0  # um - design region width (y)
grid_size_um = 0.04  # um - design grid pitch
min_feature_um = 0.16  # um - fabrication minimum feature
wg_width_um = 0.45  # um - waveguide width
wg_length_um = 1.5  # um - waveguide lead-in length
wg_crossbar = False  # fixed transverse Si3N4 bar at design-region input
wg_crossbar_width_nm = 100  # nm - x-width of fixed input cross bar
t_anth_nm = 200  # nm - anthracene crystal thickness
n_anth = 1.8  # anthracene index
qe_z_position = 'bottom'
cap_material = 'pva'
n_pva = 1.44  # PVA index
t_pva_nm = 1000.0  # nm - PVA capping thickness
n_alox = 1.65  # Al2O3 index
t_alox_nm = 10.0  # nm - Al2O3 capping thickness
cap_mesh_min_cells = 2  # cells - minimum z mesh cells through non-air cap
qe_x_um = 0.0  # um - QE x-position relative to design-region center
dipole_polarization = 'Ey'
learning_rate = 0.1
beta_min = 1.0
iter_steps = 2
penalty_weight = 0.1
flux_report_interval = 5  # iterations - side-flux reporting interval; 0 disables
output_root = 'runs'
verbose = True
t_si3n4_nm = 300  # nm - derived optimization Si3N4 thickness

Layer stack

Layer n z_bottom (nm) z_top (nm) thickness (nm)
SiO2 substrate 1.440 -inf 0 inf
Si3N4 (uniform base film) 2.000 0.0 0.0 0.0
Si3N4 (optimization slab) 2.000 0.0 300.0 300.0
Anthracene crystal 1.800 300.0 500.0 200.0
Cap (PVA) 1.440 500.0 1500.0 1000.0
Air 1.000 1500.0 +inf inf

Quantum emitter (Ey dipole) at x = 0.000 um, z = 320.0 nm (bottom of anthracene).

Geometry cross sections

x-z (y = 0)

x-z (y = 0)

x-y (Si3N4 mid-plane)

x-y (Si3N4 mid-plane)

y-z (x = 0)

y-z (x = 0)

Objective function

Maximize the coupling efficiency from the dipole emission into the fundamental Si3N4 waveguide mode, subtracting an erosion-dilation fabrication penalty:

$$ J(\rho, \beta) = \frac{|a_{-,0}|2}{\sum_{s=1}(\tilde\rho_\beta) $$} |\Phi_s|} - \lambda_p \cdot \mathrm{ED

where $a_{-,0}$ is the backward fundamental-mode amplitude on the waveguide cross section, $\Phi_s$ is the time-averaged Poynting flux through each of the six surfaces enclosing the dipole, $\tilde\rho_\beta$ is the conic-filtered + tanh-projected density, and $\lambda_p$ is the penalty weight.

Optimization Progress

progress

Latest density (iter 29, beta = 15.00): density iter 29

iter beta J mode_power dip_power coup_eff penalty
0 1.00 -7.2970e-02 1.158e+02 4.283e+03 0.0270 1.0000
1 1.00 -1.3750e-02 3.725e+02 4.318e+03 0.0862 1.0000
2 2.00 1.0067e-01 8.769e+02 4.370e+03 0.2007 0.9999
3 2.00 1.6574e-01 1.163e+03 4.385e+03 0.2653 0.9952
4 3.00 2.3800e-01 1.482e+03 4.504e+03 0.3289 0.9092
5 3.00 2.8565e-01 1.716e+03 4.613e+03 0.3720 0.8640
6 4.00 3.2113e-01 1.882e+03 4.671e+03 0.4029 0.8173
7 4.00 3.3455e-01 1.913e+03 4.608e+03 0.4151 0.8051
8 5.00 3.6105e-01 1.985e+03 4.546e+03 0.4366 0.7555
9 5.00 3.6666e-01 2.002e+03 4.543e+03 0.4408 0.7410
10 6.00 3.8465e-01 2.116e+03 4.661e+03 0.4540 0.6939
11 6.00 3.8834e-01 2.175e+03 4.773e+03 0.4558 0.6741
12 7.00 3.9898e-01 2.211e+03 4.796e+03 0.4611 0.6209
13 7.00 4.0743e-01 2.255e+03 4.831e+03 0.4668 0.5933
14 8.00 4.1896e-01 2.368e+03 4.996e+03 0.4739 0.5499
15 8.00 4.2458e-01 2.524e+03 5.276e+03 0.4783 0.5373
16 9.00 4.3515e-01 2.702e+03 5.546e+03 0.4873 0.5211
17 9.00 4.4268e-01 2.876e+03 5.817e+03 0.4944 0.5173
18 10.00 4.5129e-01 3.089e+03 6.152e+03 0.5021 0.5082
19 10.00 4.5622e-01 3.361e+03 6.634e+03 0.5066 0.5041
20 11.00 4.6612e-01 3.711e+03 7.197e+03 0.5156 0.4948
21 11.00 4.7092e-01 4.067e+03 7.823e+03 0.5199 0.4902
22 12.00 4.8068e-01 4.219e+03 7.977e+03 0.5289 0.4822
23 12.00 4.8447e-01 4.514e+03 8.477e+03 0.5326 0.4809
24 13.00 4.9476e-01 4.360e+03 8.047e+03 0.5418 0.4700
25 13.00 4.9702e-01 4.811e+03 8.851e+03 0.5435 0.4650
26 14.00 5.1288e-01 4.702e+03 8.423e+03 0.5582 0.4530
27 14.00 5.1820e-01 4.840e+03 8.599e+03 0.5628 0.4465
28 15.00 5.2574e-01 5.095e+03 8.943e+03 0.5697 0.4391
29 15.00 5.3135e-01 5.116e+03 8.903e+03 0.5747 0.4334

Directional flux breakdown

directional flux

These values are the absolute flux through each enclosing-box side; the percent columns are normalized by the summed six-side flux for that row.

iter x- x+ y- y+ z- z+
0 8.023e+02 (18.7%) 7.989e+02 (18.7%) 5.329e+02 (12.4%) 5.329e+02 (12.4%) 1.082e+03 (25.3%) 5.344e+02 (12.5%)
4 1.966e+03 (43.7%) 6.363e+02 (14.1%) 3.904e+02 (8.7%) 3.904e+02 (8.7%) 5.287e+02 (11.7%) 5.923e+02 (13.1%)
9 2.420e+03 (53.3%) 4.185e+02 (9.2%) 3.074e+02 (6.8%) 3.074e+02 (6.8%) 4.908e+02 (10.8%) 5.990e+02 (13.2%)
14 2.823e+03 (56.5%) 3.963e+02 (7.9%) 2.924e+02 (5.9%) 2.924e+02 (5.9%) 5.801e+02 (11.6%) 6.117e+02 (12.2%)
19 3.844e+03 (57.9%) 5.475e+02 (8.3%) 3.507e+02 (5.3%) 3.507e+02 (5.3%) 8.770e+02 (13.2%) 6.644e+02 (10.0%)
24 4.881e+03 (60.6%) 6.485e+02 (8.1%) 3.805e+02 (4.7%) 3.805e+02 (4.7%) 1.127e+03 (14.0%) 6.303e+02 (7.8%)
29 5.665e+03 (63.6%) 6.693e+02 (7.5%) 3.871e+02 (4.3%) 3.871e+02 (4.3%) 1.057e+03 (11.9%) 7.375e+02 (8.3%)

Final results

The final broadband simulation uses the thresholded binary design saved for GDS export. Optimization-progress coupling values are measured on the continuous filtered design at that iteration, so they are not always identical to the final binary-design metric.

Final |E|^2 - xy

Final |E|^2 - xy

Final |E|^2 - xy_si3n4

Final |E|^2 - xy_si3n4

Final |E|^2 - xz

Final |E|^2 - xz

Final coupling efficiency vs wavelength

Final coupling efficiency vs wavelength

Final Purcell factor vs wavelength

Final Purcell factor vs wavelength

At 780.0 nm: coupling efficiency = 0.4587, Purcell factor = 2.4329. Underlying arrays are saved in spectral_metrics.npz.

GDS file: final_design.gds (threshold eps = 2.500, sliced at z = 150.0 nm)

Best iteration: 29 (J = 5.3135e-01, coupling eff = 0.5747, beta = 15.00)

Run summary

  • Run directory: runs\2026-05-17_21-35-45__baseline__si3n4base-0__si3n4total-300__si3n4opt-300__anth-200-bottom__cap-pva__full
  • Mode: full (30 iterations)

Run completed after 1889.9 s.

Downloads

6 GDS exports total exist across configs/runs/ (one per completed optimizer run); only the latest is linked here.


Source: nanophotonic_devices/gratings_extractors/photon_extractor_in_plane_v1/