Apparatus ‐ Quantum Optics ‐ Project Redstone - UMassIonTrappers/PyOpticL GitHub Wiki

SCALABLE OPTICAL DESIGN

Script-based optical design enables new paradigms of scalable optical layout through inheritance of the scalable nature of code. To showcase this, we used PyOpticL to roughly recreate the layout from an optical interferometry experiment (https://arxiv.org/abs/2012.01625) designed to demonstrate quantum supremacy through Boson Sampling. The experiment used custom vertical arrays ( 6 × 6 ) of optical elements and input layouts of sets of 50 optical elements. We hope that this example inspires more creative applications of PyOpticL with sophisticated 3D routing between modular baseplates.

for i in range(6):
    row = []
    for j in range(6):
        row.append(
            origin.place(
                Beam(
                    f"beam{i}{j}",
                    position=(
                        (-i * np.sqrt(2) * INCH),
                        (i * np.sqrt(2) * INCH),
                        (j * 2 * INCH),
                    ),
                    direction=(-1, -1, 0),
                )
            )
        )
    beams.append(row)

3D ray tracing:

redstone_prelim_render

Full 'redstone' quantum computer:

image


for i in range(len(beams)):
    for j in range(len(beams[i])):
        if i == j == 0:
            corner = beams[i][j].placeAlong(
                optomech.CircularTransmission(
                    f"corner_ref", radius=0 * INCH, thickness=0
                ),
                distance=0 * INCH,
                normal=(-1, -1, 0),
            )
            plate1 = corner.place(
                Baseplate(
                    "plate1",
                    ( -0.5 * INCH, INCH, -1.5 * INCH),
                    (180, 0, 0),
                    INCH,
                    12 * INCH,
                    13 * INCH,
                )
            )
            beams[i][j].placeAlong(
                optomech.CircularTransmission(
                    f"input{i}{j}",
                    thickness=25,
                    radius=.25*INCH,
                    mount_class=optomech.Km05ForRedstone,
                    drills=plate1,
                ),
                distance=0,
                normal=(-1, -1, 0),
            )
        else:
            beams[i][j].placeAlong(
                optomech.CircularTransmission(
                    f"input{i}{j}",
                    thickness=25,
                    radius=.25*INCH,
                    mount_class=optomech.Km05ForRedstone,
                    drills=plate1,
                ),
                distance=0,
                normal=(-1, -1, 0),
            )