FiberCouplerCurvedGratingGeneric¶
-
class
picazzo3.fibcoup.curved.cell.
FiberCouplerCurvedGratingGeneric
(*args, **kwargs)¶ Class allowing the creating of generic fiber curved grating coupler. This class allows you to define each grating line individually as long as the grating lines themselves are ellipses.
Parameters: inclination: float
out-of-plane angle of the grating coupler
socket: PCell and WgSocket
socket of the fiber coupler
grating: PCell
grating of this fiber coupler
start_trace_template: PCell and _WaveguideTemplate
start waveguide for the socket waveguide (narrow side)
wide_trace_template: PCell and _WaveguideTemplate
end waveguide for the socket waveguide (broad side)
name:
The unique name of the pcell
Views
-
Layout
¶ When using this class you have to specify
centers
,ellipse_radii_x
,ellipse_radii_y
,start_angles
,end_angles
,line_widths
as a list of of numbers. A fiber grating coupler composed of ellispes using those parameters will be constructed on a LinearTransitionSocket.It is advised (but not strictly required) to place the intended location of the fiber in the origin of your component. To make sure that this the case you can use
socket_transformation
andgrating_transformation
to independently transform both the socket and the grating.You can also add extensions to your socket by using the property
socket_straight_extension
.Parameters: grating_transformation: GenericNoDistortTransform
process: ProcessLayer
default process used for the grating
socket_straight_extension: Coord2
tuple: straight extension at start and end of socket
spread_angle: float
Angle in degrees of the far field radiation field of the socket. By default this is set to be equal to the angle of the taper that is set by its length and the width of the core of input and output waveguides.
view_name: str and ( Alphanumeric string or Contains _$ )
The name of the view
centers: list and List with type restriction, allowed types: <class ‘ipkiss.geometry.coord.Coord2’>
List of centers for the ellipses. By default [i3.Coord2(0, 0)] * TECH.IO.FIBCOUP.CURVED.GRATING.N_O_LINES
ellipse_radii_x: list
List of x radii of the ellipses. By default a list of radii matching the number of center and a period of TECH.IO.FIBCOUP.CURVED.GRATING.PERIOD
ellipse_radii_y: list
List of y radii of the ellipses. By default identical to
ellipse_radii_y
end_angles: list
List of the end angle for each ellipse. By default 360 -
start_angles
line_widths: list
List of the linewidth of the trench of each ellipse. By default TECH.IO.FIBCOUP.CURVED.GRATING.PERIOD / 2.0 for all lines
purpose:
start_angles: list
List of the start angle in degrees for each ellipse. By default 180 - TECH.FIBCOUP.DEFAULT_ANGLE_SPAN / 2.0 for all lines
socket_extension: float and Real, number and number >= 0
extension of the wide side of the socket, asymmetric with respect to the specified center
socket_length: float and number > 0
length of the straight waveguide socket
socket_transformation: GenericNoDistortTransform
Other Parameters: n_o_lines: int and number > 0, locked
Number of trenches.
Examples
from technologies import silicon_photonics from ipkiss3 import all as i3 from picazzo3.fibcoup.curved import FiberCouplerCurvedGratingGeneric from picazzo3.traces.wire_wg import WireWaveguideTemplate # Creating the wire templates for the socket. start_wg_tmpl = WireWaveguideTemplate() start_wg_tmpl.Layout(core_width=0.5, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 0.5) end_wg_tmpl = WireWaveguideTemplate() end_wg_tmpl.Layout(core_width=17.0, cladding_width=2 * i3.TECH.WG.TRENCH_WIDTH + 17.0) fc_cell = FiberCouplerCurvedGratingGeneric(start_trace_template=start_wg_tmpl, wide_trace_template=end_wg_tmpl) fc_layout = fc_cell.Layout(centers=[i3.Coord2(0, 0) for i in range(30)], ellipse_radii_x=[i + 1 for i in range(30)], ellipse_radii_y=[i + 0.9 for i in range(30)], start_angles=[180.0 - 15 for i in range(30)], end_angles=[180.0 + 15 for i in range(30)], line_widths=[0.2 for i in range(30)], socket_length = 30, socket_transformation = i3.Translation(translation=(-10.0,0.0)), grating_transformation = i3.Translation(translation=(20,0)), socket_straight_extension=(10.0,5.0)) fc_layout.visualize(annotate=True)
-