apodized_focused_grating

photonforge.stencil.apodized_focused_grating(teeth_gaps, teeth_widths, n_eff, n_sin, focal_length, width=None, angle=None, input_width=None)

Create an apodized focused grating.

The geometry is based on the work by F. Van Laere et al., “Compact Focusing Grating Couplers for Silicon-on-Insulator Integrated Circuits,” in IEEE Photonics Technology Letters, vol. 19, no. 23, pp. 1919-1921, Dec.1, 2007, doi: 10.1109/LPT.2007.908762.

Parameters:
  • teeth_gaps (float | Sequence[float]) – Spacing between grating teeth edges.

  • teeth_widths (float | Sequence[float]) – Width of the grating teeth along the horizontal line from focal point. If value is negative, this teeth is not created.

  • n_eff (float | Sequence[float]) – Effective index of the cylindrical wave in the broad waveguide with the grating.

  • n_sin (float) – Product \(n_0 \sin\theta\) between the free-space index and the sine of the input wave angle measured from the grating surface normal (such that a value of 0 indicated normal grating illumination).

  • focal_length (float) – Distance between the focal point and the start of the grating.

  • width (float | None) – If set, a rectangular-shaped grating is created with the specified width. Only one of width and angle must be set.

  • angle (float | None) – If set, the grating is created with the shape of a circular section with the specified angle. Only one of width and angle must be set.

  • input_width (float | None) – If set, the input taper region is added to the grating terminating with this dimension.

  • fill_factor (float | str | Expression) – Ratio between the grating teeth and the grating period. An string parametrized by "u" or an expression of a single parameter (varied from 0 to 1) can be used to vary the fill factor along the grating.

Returns:

Grating structures.

Return type:

list[Circle | Polygon]

Note

Arguments teeth_gaps, teeth_widths, and n_eff can be a single number or a sequence. The largest sequence among them will define the number of teeth created. Smaller sequences will be increased to the largest length by repeating their last element.

# Pie-slice with gaps and n_eff variations
grating1 = pf.stencil.apodized_focused_grating(
    teeth_gaps=np.linspace(0.2, 0.4, 20),
    teeth_widths=0.2,
    n_eff=np.linspace(1.8, 1.6, 20),
    n_sin=np.sin(np.pi / 18),
    focal_length=12.5,
    angle=60,
    input_width=0.5,
)

# Rectangular-shaped with gaps and widths variations
grating2 = pf.stencil.apodized_focused_grating(
    teeth_gaps=np.linspace(0.2, 0.4, 20),
    teeth_widths=np.linspace(0.4, 0.2, 20),
    n_eff=1.8,
    n_sin=np.sin(np.pi / 18),
    focal_length=12.5,
    width=16,
    input_width=0.5,
)
apodized_focused_grating