コード例 #1
0

# ================= 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())
コード例 #2
0
ファイル: main_rcwa.py プロジェクト: GuoyaoShen/Simple_RCWA
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()
コード例 #3
0
# ================= 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]