Geometries

class lumopt.geometries.polygon.Polygon(points, z, depth, eps_out, eps_in, edge_precision)

Defines a polygon with vertices on the (x,y)-plane that are extruded along the z direction to create a 3-D shape. The vertices are defined as a numpy array of coordinate pairs np.array([(x0,y0),…,(xn,yn)]). THE VERTICES MUST BE ORDERED IN A COUNTER CLOCKWISE DIRECTION.

Parameters:
  • points – array of shape (N,2) defining N polygon vertices.
  • z – center of polygon along the z-axis.
  • depth – span of polygon along the z-axis.
  • eps_out – permittivity of the material around the polygon.
  • eps_in – permittivity of the polygon material.
  • edge_precision – number of quadrature points along each edge for computing the FOM gradient using the shape derivative approximation method.
class lumopt.geometries.polygon.FunctionDefinedPolygon(func, initial_params, bounds, z, depth, eps_out, eps_in, edge_precision=5, dx=1e-10)

Constructs a polygon from a user defined function that takes the optimization parameters and returns a set of vertices defining a polygon. The polygon vertices returned by the function must be defined as a numpy array of coordinate pairs np.array([(x0,y0),…,(xn,yn)]). THE VERTICES MUST BE ORDERED IN A COUNTER CLOCKWISE DIRECTION.

Parameters:
  • fun – function that takes the optimization parameter values and returns a polygon.
  • initial_params – initial optimization parameter values.
  • bounds – bounding ranges (min/max pairs) for each optimization parameter.
  • z – center of polygon along the z-axis.
  • depth – span of polygon along the z-axis.
  • eps_out – permittivity of the material around the polygon.
  • eps_in – permittivity of the polygon material.
  • edge_precision – number of quadrature points along each edge for computing the FOM gradient using the shape derivative approximation method.
  • dx – step size for computing the FOM gradient using permittivity perturbations.