FiberCouplerCurvedGratingGeneric
- class picazzo3.fibcoup.curved.cell.FiberCouplerCurvedGratingGeneric
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
- grating: PCell
grating of this fiber coupler
- wide_trace_template: PCell and _WaveguideTemplate
end waveguide for the socket waveguide (broad side)
- start_trace_template: PCell and _WaveguideTemplate
start waveguide for the socket waveguide (narrow side)
- socket: PCell and WgSocket
socket of the fiber coupler
- name: String that contains only ISO/IEC 8859-1 (extended ASCII py3) or pure ASCII (py2) characters
The unique name of the pcell
Views
- class 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 numbers. A fiber grating coupler composed of ellipses 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:
- ellipse_radii_y: list
List of y radii of the ellipses. By default identical to
ellipse_radii_y
- 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
- 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
- purpose:
- process: ProcessLayer
default process used for the grating
- grating_transformation: GenericNoDistortTransform
transformation of the grating in this fiber coupler cell
- 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.
- 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
- end_angles: list
List of the end angle for each ellipse. By default 360 -
start_angles
- 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_straight_extension: Coord2 and number >= 0
tuple: straight extension at start and end of socket
- 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
transformation of the socket in the fiber coupler
- view_name: String that contains only alphanumeric characters from the ASCII set or contains _$. ASCII set is extended on PY3.
The name of the view
- Other Parameters:
- n_o_lines: int and number > 0, locked
Number of trenches.
Examples
import si_fab.all as pdk # noqa: F401 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 _ 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 _ in range(30)], end_angles=[180.0 + 15 for _ in range(30)], line_widths=[0.2 for _ 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)