np.sqrt(3) / 2 * X, 0), meep.Vector3(-X / 2, -np.sqrt(3) / 2 * X, 0) ] geometry.append( meep.Prism(center=meep.Vector3(0, 0, 0), height=H, vertices=vertices, axis=meep.Vector3(0, 0, 1), material=material)) D = W * 3**.5 / 2 box = [D, D, H] resolution = 1 / (8 * nm) medium = meep.Medium(index=1) fcen, df = meep_ext.freq_data(1 / (400 * nm), 1 / (1000 * nm)) nfreq = 40 polarization = 'x' src_time = meep.GaussianSource(frequency=1.3 / um, fwidth=4.0 / um) if polarization == 'x': source = lambda sim: meep_ext.x_polarized_plane_wave(sim, src_time) decay = meep.Ex else: source = lambda sim: meep_ext.y_polarized_plane_wave(sim, src_time) decay = meep.Ey ### monitor info particle_monitor_gap = 50 * nm pml_monitor_gap = 50 * nm norm_file_ext = 'norm_box'
### geometry radius = 75 * nm gold = meep_ext.material.Au(multiplier=1 / scale**2) # gold = meep.Medium(index=3.5/scale) sep = 400 * nm p1 = meep.Vector3(-sep / 2, 0, 0) p2 = meep.Vector3(sep / 2, 0, 0) geometry = [ meep.Sphere(center=p1, radius=radius, material=gold), meep.Sphere(center=p2, radius=radius, material=gold) ] ### source fcen, df = meep_ext.freq_data(scale / (400 * nm), scale / (1000 * nm)) nfreq = 40 src_time = meep.GaussianSource(frequency=1.3 * scale / um, fwidth=4.0 * scale / um) polarization = meep.Ex # used in convergence check 'decay_by' source = lambda sim: meep_ext.rhc_polarized_plane_wave(sim, src_time) ### monitor info particle_monitor_gap = 50 * nm pml_monitor_gap = 50 * nm ### grid resolution = 1 / (7.5 * nm) pml = meep.PML(100 * nm) lx = sep + 2 * radius + 2 * particle_monitor_gap + 2 * pml_monitor_gap + 2 * pml.thickness ly = lz = 2 * radius + 2 * particle_monitor_gap + 2 * pml_monitor_gap + 2 * pml.thickness