Source code for gdsfactory.components.cdsem_bend180
"""CD SEM structures."""
from __future__ import annotations
from functools import partial
import gdsfactory as gf
from gdsfactory.cell import cell
from gdsfactory.component import Component
from gdsfactory.components.text_rectangular import text_rectangular
from gdsfactory.typings import ComponentFactory, ComponentSpec, CrossSectionSpec
LINE_LENGTH = 420.0
text_rectangular_mini = partial(text_rectangular, size=1)
[docs]
@cell
def cdsem_bend180(
width: float = 0.5,
radius: float = 10.0,
wg_length: float = LINE_LENGTH,
straight: ComponentSpec = "straight",
bend90: ComponentSpec = "bend_circular",
cross_section: CrossSectionSpec = "xs_sc",
text: ComponentFactory = text_rectangular_mini,
) -> Component:
"""Returns CDSEM structures.
Args:
width: of the line.
radius: um.
wg_length: in um.
straight: spec.
bend90: spec.
cross_section: spec.
text: spec.
"""
c = Component()
r = radius
if wg_length is None:
wg_length = 2 * r
bend90 = gf.get_component(
bend90, cross_section=cross_section, radius=r, width=width
)
wg = gf.get_component(
straight, cross_section=cross_section, length=wg_length, width=width
)
# Add the U-turn on straight layer
b1 = c.add_ref(bend90)
b2 = c.add_ref(bend90)
b2.connect("o2", b1.ports["o1"])
wg1 = c.add_ref(wg)
wg1.connect("o1", b1.ports["o2"])
wg2 = c.add_ref(wg)
wg2.connect("o1", b2.ports["o1"])
label = c << text(text=str(int(width * 1e3)))
label.ymax = b2.ymin - 5
label.x = 0
b1.rotate(90)
b2.rotate(90)
wg1.rotate(90)
wg2.rotate(90)
label.rotate(90)
return c
if __name__ == "__main__":
c = cdsem_bend180(width=2)
c.show(show_ports=True)