lc_bkg=1,
                        lc_refine_1=400.0,
                        lc_refine_2=50.0)

# Expected effective index of fundamental guided mode.
n_eff = 1.3

# Calculate Electromagnetic modes.
sim_EM_pump = wguide.calc_EM_modes(num_modes_EM_pump, wl_nm, n_eff=n_eff)
sim_EM_Stokes = mode_calcs.bkwd_Stokes_modes(sim_EM_pump)

plotting.plt_mode_fields(sim_EM_pump,
                         xlim_min=0.4,
                         xlim_max=0.4,
                         ivals=[EM_ival_pump],
                         ylim_min=0.4,
                         ylim_max=0.4,
                         EM_AC='EM_E',
                         prefix_str=prefix_str,
                         pdf_png='png')

# Print the wavevectors of EM modes.
print('k_z of EM modes \n', np.round(np.real(sim_EM_pump.Eig_values), 4))

# Calculate the EM effective index of the waveguide.
n_eff_sim = np.real(sim_EM_pump.Eig_values * ((wl_nm * 1e-9) / (2. * np.pi)))
print("n_eff = ", np.round(n_eff_sim, 4))

k_AC = np.real(sim_EM_pump.Eig_values[EM_ival_pump] -
               sim_EM_Stokes.Eig_values[EM_ival_Stokes])
Пример #2
0
print('k_z of EM modes \n', np.round(np.real(sim_EM_pump.Eig_values), 4))

# Calculate the EM effective index of the waveguide.
n_eff_sim = np.real(sim_EM_pump.Eig_values[0] * ((wl_nm * 1e-9) /
                                                 (2. * np.pi)))
print("n_eff", np.round(n_eff_sim, 4))

# # Plot the E fields of the EM modes fields - specified with EM_AC='EM_E'.
# # Zoom in on the central region (of big unitcell) with xlim_, ylim_ args.
# # Only plot fields of fundamental (ival = 0) mode.
plotting.plt_mode_fields(sim_EM_pump,
                         xlim_min=0.3,
                         xlim_max=0.3,
                         ylim_min=0.3,
                         ylim_max=0.3,
                         ivals=[EM_ival_pump],
                         contours=True,
                         EM_AC='EM_E',
                         prefix_str=prefix_str,
                         ticks=True,
                         quiver_steps=20,
                         comps=['Et'])

plotting.plt_mode_fields(sim_EM_pump,
                         xlim_min=0.3,
                         xlim_max=0.3,
                         ylim_min=0.3,
                         ylim_max=0.3,
                         ivals=[EM_ival_pump],
                         contours=True,
                         EM_AC='EM_H',
                         prefix_str=prefix_str,
    lc3=1000.0)

# Expected effective index of fundamental guided mode.
n_eff = wguide.material_a.n - 0.1

# Calculate the Electromagnetic modes of the pump field.
sim_EM_pump = wguide.calc_EM_modes(num_modes_EM_pump, wl_nm, n_eff)
# # np.savez('wguide_data', sim_EM_pump=sim_EM_pump)
# npzfile = np.load('wguide_data.npz')
# sim_EM_pump = npzfile['sim_EM_pump'].tolist()

plotting.plt_mode_fields(sim_EM_pump,
                         xlim_min=0.4,
                         xlim_max=0.4,
                         ivals=[0],
                         ylim_min=0.3,
                         ylim_max=0.3,
                         EM_AC='EM_E',
                         num_ticks=3,
                         prefix_str=prefix_str,
                         pdf_png='png')

# Calculate the Electromagnetic modes of the Stokes field.
sim_EM_Stokes = mode_calcs.bkwd_Stokes_modes(sim_EM_pump)
# np.savez('wguide_data2', sim_EM_Stokes=sim_EM_Stokes)
# npzfile = np.load('wguide_data2.npz')
# sim_EM_Stokes = npzfile['sim_EM_Stokes'].tolist()

# Print the wavevectors of EM modes.
print('\n k_z of EM modes \n', np.round(np.real(sim_EM_pump.Eig_values), 4))

# Calculate the EM effective index of the waveguide.
# Calculate Electromagnetic Modes
sim_EM_pump = wguide.calc_EM_modes(num_modes_EM_pump, wl_nm, n_eff=n_eff)
# np.savez('wguide_data', sim_EM_pump=sim_EM_pump)
# npzfile = np.load('wguide_data.npz')
# sim_EM_pump = npzfile['sim_EM_pump'].tolist()

sim_EM_Stokes = mode_calcs.fwd_Stokes_modes(sim_EM_pump)
# np.savez('wguide_data2', sim_EM_Stokes=sim_EM_Stokes)
# npzfile = np.load('wguide_data2.npz')
# sim_EM_Stokes = npzfile['sim_EM_Stokes'].tolist()

plotting.plt_mode_fields(sim_EM_pump,
                         xlim_min=0.45,
                         xlim_max=0.45,
                         ivals=[0],
                         ylim_min=0.45,
                         ylim_max=0.45,
                         EM_AC='EM_E',
                         n_points=1500,
                         prefix_str=prefix_str,
                         pdf_png='png')

# Print the wavevectors of EM modes.
print('k_z of EM modes \n', np.round(np.real(sim_EM_pump.Eig_values), 4))

# Calculate the EM effective index of the waveguide.
n_eff_sim = np.real(sim_EM_pump.Eig_values * ((wl_nm * 1e-9) / (2. * np.pi)))
print("n_eff = ", np.round(n_eff_sim, 4))

k_AC = 5  # close but not quite zero

# Calculate Acoustic Modes
Пример #5
0
# Print the wavevectors of EM modes.
print('k_z of EM modes \n', np.round(np.real(sim_EM_pump.Eig_values), 4))

# Calculate the EM effective index of the waveguide.
n_eff_sim = np.real(sim_EM_pump.Eig_values[0] * ((wl_nm * 1e-9) /
                                                 (2. * np.pi)))
print("n_eff", np.round(n_eff_sim, 4))

# # Plot the E fields of the EM modes fields - specified with EM_AC='EM_E'.
# # Zoom in on the central region (of big unitcell) with xlim_, ylim_ args.
# # Only plot fields of fundamental (ival = 0) mode.
plotting.plt_mode_fields(sim_EM_pump,
                         xlim_min=0.3,
                         xlim_max=0.3,
                         ylim_min=0.3,
                         ylim_max=0.3,
                         ivals=[0],
                         contours=True,
                         EM_AC='EM_E',
                         prefix_str=prefix_str)

# Acoustic wavevector
k_AC = np.real(sim_EM_pump.Eig_values[EM_ival_pump] -
               sim_EM_Stokes.Eig_values[EM_ival_Stokes])

# Calculate Acoustic modes.
sim_AC = wguide.calc_AC_modes(num_modes_AC, k_AC, EM_sim=sim_EM_pump)
# np.savez('wguide_data_AC', sim_AC=sim_AC)
# npzfile = np.load('wguide_data_AC.npz')
# sim_AC = npzfile['sim_AC'].tolist()
Пример #6
0
                                   debug=False)

print("Starting EM Stokes modes")
sim_EM_Stokes = mode_calcs.fwd_Stokes_modes(sim_EM_pump)

# Generate images for the EM modes involved in the calculation
print("Plotting EM fields ")
# print("no plotting")
plotting.plt_mode_fields(sim_EM_pump,
                         ivals=[EM_ival_pump, EM_ival_Stokes],
                         EM_AC='EM_E',
                         num_ticks=3,
                         xlim_min=0.4,
                         xlim_max=0.4,
                         ylim_min=0.4,
                         ylim_max=0.4,
                         prefix_str=prefix_str,
                         pdf_png='png',
                         ticks=True,
                         quiver_steps=10,
                         comps=['Et', 'Eabs'],
                         n_points=1000,
                         colorbar=True)

# A computation interruption if needed
# sys.exit("We interrupt your regularly scheduled computation to bring you something completely different... for now")

# Print the wavevectors of EM modes.
print('k_z of EM modes \n', np.round(np.real(sim_EM_pump.Eig_values), 4))

# Calculate the EM effective index of the waveguide.
Пример #7
0
    else:
        npzfile = np.load(prefix_str + 'wguide_data.npz', allow_pickle=True)
        sim_EM_pump = npzfile['sim_EM_pump'].tolist()

    sim_EM_Stokes = mode_calcs.fwd_Stokes_modes(sim_EM_pump)
    np.savez(prefix_str + 'wguide_data2', sim_EM_Stokes=sim_EM_Stokes)
    #npzfile = np.load(prefix_str+'wguide_data2.npz', allow_pickle=True)
    #sim_EM_Stokes = npzfile['sim_EM_Stokes'].tolist()

    plotting.plt_mode_fields(sim_EM_pump,
                             xlim_min=0.43,
                             xlim_max=0.43,
                             ivals=[0],
                             ylim_min=0.43,
                             ylim_max=0.43,
                             EM_AC='EM_E',
                             n_points=2000,
                             quiver_steps=10,
                             prefix_str=prefix_str,
                             pdf_png='png',
                             ticks=True,
                             comps=('Ex', 'Eabs', 'Et'),
                             decorator=emdecorate)

    # Print the wavevectors of EM modes.
    print('k_z of EM modes \n', np.round(np.real(sim_EM_pump.Eig_values), 4))

    # Calculate the EM effective index of the waveguide.
    n_eff_sim = np.real(sim_EM_pump.Eig_values * ((wl_nm * 1e-9) /
                                                  (2. * np.pi)))
    print("n_eff = ", np.round(n_eff_sim, 4))
Пример #8
0
print("starting EM pump modes")
#sim_EM_pump = wguide.calc_EM_modes(num_modes_EM_pump, wl_nm, n_eff=n_eff, debug=True)
#np.savez('wguide_data', sim_EM_pump=sim_EM_pump)
npzfile = np.load('wguide_data.npz', allow_pickle=True)
sim_EM_pump = npzfile['sim_EM_pump'].tolist()

print("starting EM Stokes modes")
sim_EM_Stokes = mode_calcs.fwd_Stokes_modes(sim_EM_pump)
# np.savez('wguide_data2', sim_EM_Stokes=sim_EM_Stokes)
# npzfile = np.load('wguide_data2.npz', allow_pickle=True)
# sim_EM_Stokes = npzfile['sim_EM_Stokes'].tolist()

print("starting EM field plotting ")
plotting.plt_mode_fields(sim_EM_pump, xlim_min=0.4 , xlim_max=0.4 , ivals=[0,1], 
                         ylim_min=0.435 , ylim_max=0.435 , EM_AC='EM_E', num_ticks=3,
                         prefix_str=prefix_str, pdf_png='png', ticks=True,
                          decorator=emdecorate, quiver_steps=20, 
                          comps=('Ex','Ey', 'Ez','Eabs','Et'), n_points=2000, colorbar=True)

plotting.plt_mode_fields(sim_EM_pump, xlim_min=0.4 , xlim_max=0.4 , ivals=[0,1], 
                         ylim_min=0.435 , ylim_max=0.435 , EM_AC='EM_H', num_ticks=3,
                         prefix_str=prefix_str, pdf_png='png', ticks=True,
                          decorator=emdecorate, quiver_steps=20, 
                          comps=('Hx','Hy', 'Hz','Habs','Ht'), n_points=2000, colorbar=True)

# Print the wavevectors of EM modes.
print('k_z of EM modes \n', np.round(np.real(sim_EM_pump.Eig_values), 4))

# Calculate the EM effective index of the waveguide.
n_eff_sim = np.real(sim_EM_pump.Eig_values*((wl_nm*1e-9)/(2.*np.pi)))
print("n_eff = ", np.round(n_eff_sim, 4))
# Use all specified parameters to create a waveguide object.
wguide = objects.Struct(unitcell_x,inc_a_x,unitcell_y,inc_a_y,inc_shape,
                        material_bkg=materials.Vacuum,
                        material_a=materials.SiO2_2013_Laude,
                        lc_bkg=3, lc2=2000.0, lc3=1000.0)

# Expected effective index of fundamental guided mode.
n_eff = 1.4

# Calculate Electromagnetic Modes
sim_EM_pump = wguide.calc_EM_modes(num_modes_EM_pump, wl_nm, n_eff=n_eff)
sim_EM_Stokes = mode_calcs.bkwd_Stokes_modes(sim_EM_pump)

plotting.plt_mode_fields(sim_EM_pump, xlim_min=0.3, xlim_max=0.3, ivals=[0],
                         ylim_min=0.3, ylim_max=0.3, EM_AC='EM_E', 
                         prefix_str=prefix_str, pdf_png='png')

# Print the wavevectors of EM modes.
print('k_z of EM modes \n', np.round(np.real(sim_EM_pump.Eig_values), 4))

# Calculate the EM effective index of the waveguide.
n_eff_sim = np.real(sim_EM_pump.Eig_values*((wl_nm*1e-9)/(2.*np.pi)))
print("n_eff = ", np.round(n_eff_sim, 4))

k_AC = np.real(sim_EM_pump.Eig_values[EM_ival_pump] - sim_EM_Stokes.Eig_values[EM_ival_Stokes])

shift_Hz = 4e9

# Calculate Acoustic Modes
sim_AC = wguide.calc_AC_modes(num_modes_AC, k_AC, EM_sim=sim_EM_pump, shift_Hz=shift_Hz)
    if new_calcs:
        sim_EM_pump = wguide.calc_EM_modes(num_modes_EM_pump,
                                           wl_nm,
                                           n_eff=n_eff)
        np.savez('wguide_data_florez', sim_EM_pump=sim_EM_pump)
    else:
        npzfile = np.load('wguide_data_florez.npz', allow_pickle=True)
        sim_EM_pump = npzfile['sim_EM_pump'].tolist()
    sim_EM_Stokes = mode_calcs.bkwd_Stokes_modes(sim_EM_pump)

    plotting.plt_mode_fields(sim_EM_pump,
                             xlim_min=0.3,
                             xlim_max=0.3,
                             ivals=[0],
                             ylim_min=0.3,
                             ylim_max=0.3,
                             EM_AC='EM_E',
                             prefix_str=prefix_str,
                             pdf_png='png',
                             ticks=True,
                             decorator=emdecorate,
                             quiver_steps=20)

    # Print the wavevectors of EM modes.
    print('k_z of EM modes \n', np.round(np.real(sim_EM_pump.Eig_values), 4))

    # Calculate the EM effective index of the waveguide.
    n_eff_sim = np.real(sim_EM_pump.Eig_values * ((wl_nm * 1e-9) /
                                                  (2. * np.pi)))
    print("n_eff = ", np.round(n_eff_sim, 4))

if not doac: sys.exit(0)
Пример #11
0
                        material_a=Si_110,
                        material_b=Si_110, symmetry_flag=False,
                        lc_bkg=1, lc_refine_1=2000.0, lc_refine_2=1000.0)
# Expected effective index of fundamental guided mode.
n_eff = wguide.material_a.n-0.1

# Calculate Electromagnetic Modes
sim_EM_pump = wguide.calc_EM_modes(num_modes_EM_pump, wl_nm, n_eff=n_eff)
# np.savez('wguide_data', sim_EM_pump=sim_EM_pump)
# npzfile = np.load('wguide_data.npz')
# sim_EM_pump = npzfile['sim_EM_pump'].tolist()

sim_EM_Stokes = mode_calcs.fwd_Stokes_modes(sim_EM_pump)

plotting.plt_mode_fields(sim_EM_pump, xlim_min=0.4, xlim_max=0.4, ivals=[EM_ival_pump], 
                         ylim_min=0.3, ylim_max=0.3, EM_AC='EM_E', num_ticks=3,
                         prefix_str=prefix_str, pdf_png='png')

# Print the wavevectors of EM modes.
print('k_z of EM modes \n', np.round(np.real(sim_EM_pump.Eig_values), 4))

# Calculate the EM effective index of the waveguide.
n_eff_sim = np.real(sim_EM_pump.Eig_values*((wl_nm*1e-9)/(2.*np.pi)))
print("n_eff = ", np.round(n_eff_sim, 4))

k_AC = 5

shift_Hz = 2e9

# Calculate Acoustic Modes
sim_AC = wguide.calc_AC_modes(num_modes_AC, k_AC, EM_sim=sim_EM_pump, shift_Hz=shift_Hz)