How do I include fabrication constraints in adjoint shape optimization?

How do I include fabrication constraints in adjoint shape optimization?#

Date

Category

2023-12-21 22:49:03

Inverse Design

To ensure reliable fabrication of a device, it is crucial to avoid using feature sizes below a certain radius of curvature when performing inverse design. To achieve this, you can use a penalty function that estimates the radius of curvature around each boundary vertex and applies a substantial penalty to the objective function if the value falls below the minimum radius. The code example below demonstrates how to use the tidy3d.plugins.adjoint.utils.penalty.RadiusPenalty function.

from tidy3d.plugins.adjoint.utils.penalty import RadiusPenalty

penalty = RadiusPenalty(min_radius=.150, alpha=1.0, kappa=10.0)
vertices0 = jnp.array(make_taper(ys0).vertices)
penalty_value = penalty.evaluate(vertices0)