# 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,