# ================= Constant Define c0 = 3e8 e0 = 8.85e-12 u0 = 1.256e-6 yeta0 = np.sqrt(u0/e0) #****************************************************************** ''' Metallic BIC. ''' # ================= Material Property Define path_absorber = './material_property/permittivity_BIC.txt' eps_absorber_file = data_utils.load_property_txt(path_absorber) # print(eps_absorber_file) # truncate freq over 1.2 THz freq_truncate = [0.3, 1.2] # in THz freq_step = 1 if freq_truncate != 'none' and freq_truncate[0]>eps_absorber_file[0,0] and freq_truncate[1]<eps_absorber_file[-1,0]: N_freq_start = np.argmax(eps_absorber_file[:, 0] > freq_truncate[0]) N_freq_stop = np.argmax(eps_absorber_file[:, 0] > freq_truncate[1]) eps_absorber_file = eps_absorber_file[N_freq_start: N_freq_stop] eps_absorber_file = eps_absorber_file[::freq_step] # solve rcwa with a step size eps_absorber = eps_absorber_file[:,1] + eps_absorber_file[:,2]*1j freq = eps_absorber_file[:,0]*1e12 print(freq.min())
pi = np.pi # ================= Unit Define meters = 1 centimeters = 1e-2 * meters millimeters = 1e-3 * meters # ================= Constant Define c0 = 3e8 e0 = 8.85e-12 u0 = 1.256e-6 yeta0 = np.sqrt(u0 / e0) path_gold = 'Au3-Drude.txt' eps_gold_file = data_utils.load_property_txt(path_gold, 2743, 3636) eps_gold = eps_gold_file[:, 1] + eps_gold_file[:, 2] * 1j path_SiNx = 'SiNx_property.mat' eps_SiNx = data_utils.load_property_mat(path_SiNx) eps_SiNx = eps_SiNx['eps_SiNx_real'] + eps_SiNx['eps_SiNx_imag'] * 1j freq = eps_gold_file[:, 0] * 1e12 # plot property n_SiNx = np.sqrt(eps_SiNx) # print(n_SiNx) # plt.plot(freq,np.real(n_SiNx)) # plt.plot(freq,np.imag(n_SiNx)) # plt.show()
# ================= Unit Define meters = 1 centimeters = 1e-2 * meters millimeters = 1e-3 * meters micrometres = 1e-6 * meters # ================= Constant Define c0 = 3e8 e0 = 8.85e-12 u0 = 1.256e-6 yeta0 = np.sqrt(u0 / e0) # ================= Load True Simulation Spectra path_true_R = './data/R_absorber.txt' R_file = data_utils.load_property_txt(path_true_R) freq_true = R_file[:, 0] * 1e12 R_true = R_file[:, 1] R_true = R_true**2 print('freq_true.shape', freq_true.shape) # print(R_true) path_true_T = './data/T_absorber.txt' T_file = data_utils.load_property_txt(path_true_T) T_true = T_file[:, 1] T_true = T_true**2 # truncate freq freq_truncate = 1.7 # in THz N_freq_stop = np.argmax(R_file[:, 0] > freq_truncate) freq_true = freq_true[:N_freq_stop]