Esempio n. 1
0
    def __init__(self, sim, grating_etch, wg, substrate, y_ts, w_in, h_wg, H, Ng,
                 eps_clad, mm_line):
        super(SiliconGratingAM, self).__init__(sim, step=1e-8)

        # save the variables for later
        self.grating_etch = grating_etch
        self.y_ts = y_ts
        self.w_in = w_in
        self.h_wg = h_wg
        self.H = H
        self.Ng = Ng
        self.wg = wg
        self.substrate = substrate

        self.mm_line = mm_line

        # constraints
        self.min_feature = 0.0
        self.c_steepness = 0.0
        self.penalty = 0.0

        # desired Gaussian beam properties used in mode match
        theta = 8.0/180.0*pi
        match_w0 = 5.2
        match_center = 11.0

        # Define the desired field profiles
        # We want to generate a vertical Gaussian beam, so these are the fields
        # are the use in our calculation of the mode match
        Ezm = Ez_Gauss(mm_line.x, match_center, match_w0, theta, sim.wavelength, np.sqrt(eps_clad))
        Hxm = Hx_Gauss(mm_line.x, match_center, match_w0, theta, sim.wavelength, np.sqrt(eps_clad))
        Hym = Hy_Gauss(mm_line.x, match_center, match_w0, theta, sim.wavelength, np.sqrt(eps_clad))
        self.mode_match = emopt.fomutils.ModeMatch([0,1,0], sim.dx, Ezm=Ezm, Hxm=Hxm, Hym=Hym)

        self.current_fom = 0.0
Esempio n. 2
0
    def __init__(self, sim, grating_top, grating_bot, y_top, y_bot, w_in, h_wg, Ng,
                 eps_clad, mm_line):
        super(SiliconGrating2LAM, self).__init__(sim, step=1e-10)

        # save the variables for later
        self.grating_top = grating_top
        self.grating_bot = grating_bot
        self.y_top = y_top
        self.y_bot = y_bot
        self.w_in = w_in
        self.h_wg = h_wg
        self.Ng = Ng

        self.mm_line = mm_line

        # desired Gaussian beam properties used in mode match
        theta = 0.0/180.0*pi
        match_w0 = 5.2
        match_center = 11.

        # Define the desired field profiles
        # We want to generate a vertical Gaussian beam, so these are the fields
        # are the use in our calculation of the mode match
        Ezm = Ez_Gauss(mm_line.x, match_center, match_w0, theta, sim.wavelength, np.sqrt(eps_clad))
        Hxm = Hx_Gauss(mm_line.x, match_center, match_w0, theta, sim.wavelength, np.sqrt(eps_clad))
        Hym = Hy_Gauss(mm_line.x, match_center, match_w0, theta, sim.wavelength, np.sqrt(eps_clad))
        self.mode_match = emopt.fomutils.ModeMatch([0,1,0], sim.dx, Ezm=Ezm, Hxm=Hxm, Hym=Hym)

        self.current_fom = 0.0