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:
- path
list List of (vertex, segment_type, n_vertices_lumerical_polygon[optional]) tuples.
- index
Union[float,str] Refractive index of the geometry or material name.
- z_min
float Minimum z-coordinate.
- z_max
float Maximum z-coordinate.
- optimization_region
Box,optional Box defining optimization region (default: None).
- num_pts_per_vertices
int,optional Default number of points per segment (default: 50).
- dp
float,optional Perturbation size for finite difference gradient calculation (default: None, meaning it will be automatically determined).
- path
Methods
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').
Compute the Jacobian of the parametrization function.
Compute Jacobian from optimization parameters to Lumerical parameters.
Compute the Jacobian of the discretized polygon vertices.
Add optimization structure to FDTD simulation.
ClosedCurve.discretize_polygon(params)Discretize the composite Bezier geometry into a polygon.
Find all segments that connect two vertices (possibly through intermediate vertices).
ClosedCurve.get_bounding_box(params)Get bounding box for ClosedCurve.
Get parameter bounds.
Get initial parameter values (zeros - no deviation from defaults).
Make multiple segments parametric for optimization.
ClosedCurve.make_vertex_parametric(vertex[, ...])Make a vertex parametric for optimization.
ClosedCurve.plot([params, ax, ...])Plot the parametrization.
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
Parameter bounds for optimization.