pml_apply = {'x': '', 'y': '', 'z': '+-'} pbc_apply = {'x': True, 'y': True, 'z': False} fdtd.apply_PML(pml_apply) fdtd.apply_PBC(pbc_apply) wfreq0_NU = to_NU(fdtd, 'angular frequency', 2. * np.pi * freq0) #----------------------------------structure------------------------------------------------------------------- xc = fdtd.x[fdtd.nx / 2] yc = fdtd.y[fdtd.ny / 2] zc = fdtd.z[fdtd.nz / 2] pec = Dielectric(to_epr(fdtd, n=10.**10)) air = Dielectric(to_epr(fdtd, n=1.)) GaAs = Dielectric(to_epr(fdtd, n=3.5)) a1 = 36 * um a2 = 28 * um b1 = 36 * um b2 = 28 * um c1 = 10 * um c2 = 4 * um c3 = 2 * um d1 = 4 * um thickness = 200 * nm slab = structures.Box(GaAs, ((0. * um, 0. * um, 1500 * um), (lx, ly, 1600 * um)))
#engine_name = 'intel_cpu' fdtd = Basic_FDTD('3D', space_grid, dtype=np.complex64, engine=engine_name, device_id=0) pml_apply = {'x': '+-', 'y': '', 'z': ''} pbc_apply = {'x': False, 'y': True, 'z': True} fdtd.apply_PML(pml_apply) fdtd.apply_PBC(pbc_apply) slab_thick = 5. * nm gap = 80 * nm diel = Dielectric(to_epr(fdtd, n=3.)) diep = Dielectric(to_epr(fdtd, n=10.**10)) #slab = stc.Box(diel, ((1000.*nm,0.*nm,0.*nm),(1000.*nm+slab_thick,ly,lz))) slab = stc.Box(Gold, ((1000. * nm, 0. * nm, 0. * nm), (1000. * nm + slab_thick, ly, lz))) #slab = stc.Box(PA , ((1000.*nm,0.*nm,0.*nm),(1000.*nm+slab_thick,ly,lz))) pecs = stc.Box(diep, ((1000. * nm + slab_thick + gap, 0. * nm, 0. * nm), (lx, ly, lz))) #slab = stc.Box(Silver, ((1000.*nm,0.*nm,0.*nm),(1000.*nm+slab_thick,ly,lz))) #structures = [slab, pecs] structures = [slab] from scipy.constants import c wavelength = np.arange(300., 1001., 1.) * nm freqs = c / wavelength #freq0 = c/(650.*nm)
space_grid = (x, y, z) engine_name = 'nvidia_cuda' fdtd = Basic_FDTD('3D', space_grid, dtype=np.float32, engine=engine_name, device_id=0) pml_apply = {'x': '+-', 'y': '', 'z': ''} pbc_apply = {'x': False, 'y': True, 'z': True} fdtd.apply_PML(pml_apply) fdtd.apply_PBC(pbc_apply) #slab_thick = 20.*nm diel = Dielectric(to_epr(fdtd, n=3.)) slab = stc.Box(diel, ((1000. * nm, 0. * nm, 0. * nm), (lx, 1. * nm, 1. * nm))) #slab = stc.Box(Gold, ((1000.*nm,0.*nm,0.*nm),(1000.*nm+slab_thick,1.*nm,1.*nm))) #slab = stc.Box(Gold, ((1000.*nm,0.*nm,0.*nm),(1000.*nm+slab_thick,1.*nm,1.*nm))) structures = [slab] fdtd.set_structures(structures) from scipy.constants import c wavelength = np.arange(300., 1001., 1.) * nm freqs = c / wavelength freq0 = c / (650. * nm) wfreq0_NU = to_NU(fdtd, 'angular frequency', 2. * np.pi * freq0) rft_ey = fdtd.apply_RFT('ey', ((-5000, 0, 0), (-5000, -1, -1)), freqs) inc = fdtd.apply_direct_source('ey', ((5000, 0, 0), (5000, -1, -1))) print 'Setting Complete and READY to RUN'