예제 #1
0
def taper(wg1, wg2, l):
    # wg1 [wg] -> waveguide to connect on one side
    # wg2 [wg] -> waveguide to connect on the other side
    # l [int] -> length of the taper

    t = WireWaveguideTransitionLinear(start_trace_template=wg1,
                                      end_trace_template=wg2)
    t.Layout(start_position=(0, 0), end_position=(l, 0))

    return t
예제 #2
0
 def _default_WG2(self):
     WG2 = WireWaveguideTransitionLinear(
         name="Dongbo{}".format(str(self.start_id)),
         start_trace_template=self.wg_t1,
         end_trace_template=self.wg_sm,
     )
     return WG2
예제 #3
0
 def _default_WG2(self):
     WG2 = WireWaveguideTransitionLinear(
         name="dongbo{}".format(str(np.random.randint(0, 10000))),
         start_trace_template=self.wg_t1,
         end_trace_template=self.wg_sm,
     )
     return WG2
예제 #4
0
# wg_sm2 = WireWaveguideTemplate()
# wg_sm2.Layout(core_width=3.1, cladding_width=3.1 + 16.0)

mmi_trace_template = WireWaveguideTemplate()
mmi_trace_template.Layout(core_width=20.0,
                          cladding_width=20.0 + 16.0)  # MMI_width

mmi_access_template = WireWaveguideTemplate()
mmi_access_template.Layout(core_width=9.0, cladding_width=9.0 + 16.0)

# Define components

WG1 = i3.Waveguide(name="Dongbo", trace_template=wg_t1)
layout_WG1 = WG1.Layout(shape=[(0.0, 0.0), (50.0, 0.0)])

WG2 = WireWaveguideTransitionLinear(start_trace_template=wg_t1,
                                    end_trace_template=wg_sm)
layout_WG2 = WG2.Layout(start_position=(50.0, 0.0), end_position=(350.0, 0.0))

# layout_WG2.visualize()

WG3 = WireWaveguideTransitionLinear(start_trace_template=wg_sm,
                                    end_trace_template=wg_t1)
layout_WG3 = WG3.Layout(start_position=(50.0, 0.0), end_position=(350.0, 0.0))

mmi1_12 = MMI1x2Tapered(
    mmi_trace_template=mmi_trace_template,
    input_trace_template=mmi_access_template,
    output_trace_template=mmi_access_template,
    trace_template=wg_sm,
)
예제 #5
0
 def _default_WG2(self):
     WG2 = WireWaveguideTransitionLinear(start_trace_template=self.wg_t1,
                                         end_trace_template=self.wg_sm)
     return WG2
예제 #6
0
 def _default_WG2(self):
     WG2 = WireWaveguideTransitionLinear(start_trace_template=self.mmi_access_template,
                                         end_trace_template=self.trace_template)
     return WG2
예제 #7
0
#cladding_width_def=3
#core_width_def=0.35

side2_r = 3.  #cladd reel obtenue au Ebeam
side2 = side2_r / 2
w_core2_r = 0.35  #core reel obtenue au Ebeam
w_core_w2 = w_core2_r + side2
w_clad_w2 = 2 * side2 + w_core_w2

WG_T2FBMS = new_wg_template.Layout(
    core_width=w_core_w2,
    cladding_width=w_clad_w2,
)

my_taperG = WireWaveguideTransitionLinear(start_trace_template=WG_T1,
                                          end_trace_template=WG_T2FBMS)

field_Ebeamx = 500
field_Ebeamy = 25 + 0 * 50
wg_length = 500  #real length is wg_length+100
overlap_wg = 0

taper_length = 200

my_taperG_lay = my_taperG.Layout(start_position=(0.0, 0.0),
                                 end_position=(taper_length, 0.0))

my_taperG_lay.visualize()

#FBMS waveguide
예제 #8
0
 def _default_WG2(self):
     WG2 = WireWaveguideTransitionLinear(
         name="taper{}".format(str(self.width)),
         start_trace_template=self.wg_t1,
         end_trace_template=self.trace_template)
     return WG2