ClosedCurve#

class lumopt2.parametrization.closed_curve.ClosedCurve(path, index: float | str, z_min: float, z_max: float, optimization_region: Box = None, num_pts_per_vertices: int = 50, dp: float = None)#

A Beziergon - a polygon where edges can be linear or cubic Bezier curves.

All curves are C1-continuous with their neighbors.

Parameters:
pathlist

List of (vertex, segment_type, n_vertices_lumerical_polygon[optional]) tuples.

indexUnion[float, str]

Refractive index of the geometry or material name.

z_minfloat

Minimum z-coordinate.

z_maxfloat

Maximum z-coordinate.

optimization_regionBox, optional

Box defining optimization region (default: None).

num_pts_per_verticesint, optional

Default number of points per segment (default: 50).

dpfloat, optional

Perturbation size for finite difference gradient calculation (default: None, meaning it will be automatically determined).

Methods

ClosedCurve.compute_gradient_from_fields(...)

Compute the gradient for a ClosedCurve parametrization.

ClosedCurve.compute_opt_params_direct_to_permittivity_jacobian(...)

Compute d_eps/dp, the (sparse) Jacobian of the permittivity wrt optimization parameters ('p').

ClosedCurve.compute_parametrization_jacobian(params)

Compute the Jacobian of the parametrization function.

ClosedCurve.compute_params_to_lumerical_jacobian(params)

Compute Jacobian from optimization parameters to Lumerical parameters.

ClosedCurve.compute_polygon_jacobian(params)

Compute the Jacobian of the discretized polygon vertices.

ClosedCurve.create_optimization_structures(...)

Add optimization structure to FDTD simulation.

ClosedCurve.discretize_polygon(params)

Discretize the composite Bezier geometry into a polygon.

ClosedCurve.find_segments_connecting(...)

Find all segments that connect two vertices (possibly through intermediate vertices).

ClosedCurve.get_bounding_box(params)

Get bounding box for ClosedCurve.

ClosedCurve.get_bounds()

Get parameter bounds.

ClosedCurve.get_initial_params()

Get initial parameter values (zeros - no deviation from defaults).

ClosedCurve.make_segments_parametric(...)

Make multiple segments parametric for optimization.

ClosedCurve.make_vertex_parametric(vertex[, ...])

Make a vertex parametric for optimization.

ClosedCurve.plot([params, ax, ...])

Plot the parametrization.

ClosedCurve.set_parametrization_function(...)

Set a user-defined parametrization function for the geometry.

ClosedCurve.split_segments(segments_to_split)

Split multiple segments by adding intermediate vertices (control points).

ClosedCurve.store_mesh_info(fdtd_session)

Read the locked grid and store mesh info in structure.

ClosedCurve.update_structure(fdtd_session, ...)

Update structure in FDTD session.

ClosedCurve.visualize(ax, params[, ...])

Visualize the parametrization on a matplotlib axes.

Attributes

ClosedCurve.bounds

Parameter bounds for optimization.