Exemple #1
0
# Antidot array [layer 1]
layout = LayoutComponents(poly_cell, sub_x, sub_y, layer=1)
layout.make_antidot_array(0, 0, 5, 15, 0)

# marker = [rs.rect(100,100,100,500)]
marker = [rs.circ_arc(50, 200, 500, n=50, theta0=0, thetaf=2 * np.pi)]
marker += [rs.circ_arc(50, 350, 500, n=50, theta0=0, thetaf=2 * np.pi)]
marker += [rs.circ_arc(50, 500, 500, n=50, theta0=0, thetaf=2 * np.pi)]
marker += [rs.circ_arc(50, 650, 500, n=50, theta0=0, thetaf=2 * np.pi)]
marker += [rs.circ_arc(50, 800, 500, n=50, theta0=0, thetaf=2 * np.pi)]
marker += [rs.circ_arc(50, 200, 300, n=50, theta0=0, thetaf=2 * np.pi)]
for i in range(0, len(marker)):
    mkr = gdspy.Polygon(marker[i], 4)
    poly_cell.add(mkr)

highZ = bragg.Bragg(whigh, ghigh, lhigh, poly_cell, radius=rhigh, layer=2)
lowZ = bragg.Bragg(wlow, glow, llow, poly_cell, radius=rlow, layer=2)

cavity = bragg.Bragg(wcav, gcav, lcav / 2, poly_cell, radius=rlow, layer=2)

no_periods = 12
n_left = 5
n_cav = 2
n_right = 5

arr_l = np.repeat(np.arange(0, int(no_periods)),
                  2 * np.ones(int(no_periods), dtype=int))
arr_h = np.append(arr_l[1:], [int(no_periods)], axis=0)

arr_l = np.delete(arr_l, [0, 1])
arr_h = np.delete(arr_h, [0, 1])
layout.make_antidot_array(0, 0, 10, 30, 0)

# Cavity [layer 2]
# I assign coordinates first, and then build geometries accordingly
############################################################################
coords = lambda x, dx=0: x + dx
xb_strt, yb_strt = [coords(1000), coords(sub_y / 2) - lext2 - lext3 - 140]
lcav1, lcav2, lcav3 = [1000, 5500, 1000]
taper_length = 100

cavity = Trench(wc, gc, poly_cell, layer=2)

lcavity = 8108
rcav = 100
no_periods = 4
cav_mirror = bragg.Bragg(wlow, glow, llow, poly_cell, radius=rlow, layer=2)
lcav3p = 2 * no_periods * cav_mirror.mirror_width()
a1 = 3 * np.pi * rlow
a2 = np.pi * rcav
ls = (lcavity - a1 - a2 - 2 * lcav3p - 2 * taper_length) / 2

print(2 * ls + 2 * lcav3p + a1 + a2 + 2 * taper_length)

cav_x0, cav_y0 = [coords(xb_strt), coords(yb_strt, -ls / 2)]
strait = cavity.straight_trench(ls / 2 - taper_length,
                                cav_x0,
                                cav_y0,
                                orient='V')

cav_xtaper, cav_ytaper = [coords(xb_strt), coords(yb_strt, -taper_length)]
cavity.taper(wc, gc, wlow, glow, cav_x0, cav_y0 + ls / 2 - taper_length,