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])
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
# 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()
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.
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))
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)
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)