TopologyOpt

Filtering, projection, and constraint functions for topology optimization.

Material Interpolation

DistributedEmitterOpt.christiansen_εFunction
christiansen_ε(p, nf, nm) -> Complex

Christiansen refractive index interpolation: n(p) = nf + (nm - nf) * p ε(p) = n(p)²

This gives: p=0 → ε = nf² (fluid) p=1 → ε = nm² (metal)

Filtering (2D Grid)

DistributedEmitterOpt.filter_gridFunction
filter_grid(p_vec, sim, control) -> Vector

Filter design vector using 2D convolution.

Arguments

  • p_vec — Flat design vector
  • sim — Simulation (for grid dimensions)
  • control — Control (for filter params)

Filtering (3D Helmholtz)

DistributedEmitterOpt.filter_helmholtz!Function
filter_helmholtz!(p_vec, cache, sim, control) -> Vector

Filter design using Helmholtz PDE (3D DOF mode). Caches factorization in cache.F_factor.

Projection

DistributedEmitterOpt.project_feFunction
project_fe(pf_vec, sim, control) -> ComposedFunction

Convenience wrapper: build FEFunction from vector and apply SSP projection.

DistributedEmitterOpt.project_sspFunction
project_ssp(pf, control) -> ComposedFunction

Subpixel-smoothed projection on the FEM mesh (SSP is ALWAYS used). Returns a ComposedFunction for lazy evaluation in Gridap.

Constraints

DistributedEmitterOpt.glc_solidFunction
glc_solid(x, grad; sim, control) -> Float64

Solid linewidth constraint for NLopt. Constraint satisfied when ≤ 0.