tidy3d.plugins.adjoint.utils.penalty.RadiusPenalty#

class RadiusPenalty[source]#

Bases: Penalty

Computes a penalty for small radius of curvature determined by a fit of points in a 2D plane.

Parameters:
  • min_radius (float = 0.15) – [units = um]. Radius of curvature value below which the penalty ramps to its maximum value.

  • alpha (float = 1.0) – Parameter controlling the strength of the penalty.

  • kappa (float = 10.0) – [units = 1/um]. Parameter controlling the steepness of the penalty evaluation.

  • wrap (bool = False) – Whether to consider the first set of points as connected to the last.

Note

\[p(r) = \frac{\mathrm{exp}(-\kappa(r - r_{min}))}{1 + \mathrm{exp}(-\kappa(r - r_{min}))}\]

Note

This formula was described by A. Micheals et al. “Leveraging continuous material averaging for inverse electromagnetic design”, Optics Express (2018).

Attributes

Methods

evaluate(points)

Get the average penalty as a function of supplied (x, y) points by fitting a spline to the curve and evaluating local radius of curvature compared to a desired minimum value.

min_radius#
alpha#
kappa#
wrap#
evaluate(points)[source]#

Get the average penalty as a function of supplied (x, y) points by fitting a spline to the curve and evaluating local radius of curvature compared to a desired minimum value. If wrap, it is assumed that the points wrap around to form a closed geometry instead of an isolated line segment.

__hash__()#

Hash method.