nm = 1e-9 um = 1e-6 Lx, Ly, Lz = 574 / 64 * nm, 574 * nm, 574 * nm Nx, Ny, Nz = 4, 256, 256 dx, dy, dz = Lx / Nx, Ly / Ny, Lz / Nz courant = 1. / 4 dt = courant * min(dx, dy, dz) / c Tsteps = int(sys.argv[2]) TF = space.Basic3D((Nx, Ny, Nz), (dx, dy, dz), dt, Tsteps, np.complex64, np.complex64, method='FDTD', engine='cupy') TF.malloc() ########## Set PML and PBC TF.apply_PML({'x': '', 'y': '', 'z': ''}, 10) TF.apply_BBC({'x': False, 'y': True, 'z': True}) TF.apply_PBC({'x': True, 'y': False, 'z': False}) ########## Save PML data. #TF.save_pml_parameters('./') #------------------------------------------------------------------#
spread = 0.3 pick_pos = 2000 plot_per = 100 # Set the type of input source. #Src = source.Gaussian(dt, dtype=np.float64) #Src.wvlen([wv_srt, wv_end, interval, spread]) #Src.plot_pulse(Tstep, pick_pos, savedir) Src = source.Sine(dt, np.float64) Src.set_wvlen(600 * nm) #------------------------------------------------------------------# #-------------------------- Call objects --------------------------# #------------------------------------------------------------------# Space = space.Basic3D((Nx, Ny, Nz), (dx, dy, dz), courant, dt, Tstep, np.float64) # Put structures #Box = structure.Box(Space, Box1_srt, Box1_end, 4., 1.) # Set PML and PBC Space.set_PML({'x': '', 'y': '', 'z': ''}, 10) Space.apply_PBC({'y': False, 'z': False}) # Save eps, mu and PML data. #Space.save_PML_parameters('./') #Space.save_eps_mu(savedir) # Set position of Src, Ref and Trs. Space.set_src_pos((Space.Nxc, Space.Nyc, Space.Nzc), (Space.Nxc + 1, Space.Nyc + 1, Space.Nzc + 1))
# Set the type of input source. Src = source.Gaussian(dt, wvc, spread, pick_pos, dtype=np.float32) #Src.plot_pulse(Tsteps, freqs, savedir) #Src = source.Sine(dt, np.float64) #Src.set_wvlen( 20 * um) #sys.exit() #------------------------------------------------------------------# #-------------------------- Call objects --------------------------# #------------------------------------------------------------------# TF = space.Basic3D((Nx, Ny, Nz), (dx, dy, dz), dt, Tsteps, np.float32, np.complex64, engine='cupy') # Total field IF = space.Basic3D((Nx, Ny, Nz), (dx, dy, dz), dt, Tsteps, np.float32, np.complex64, engine='cupy') # Incident field SF = space.Empty3D((Nx, Ny, Nz), (dx, dy, dz), dt, Tsteps, np.float32, np.complex64, engine='cupy') # Scattered field
spread = 0.3 pick_pos = 1000 plot_per = 100 wvlens = np.arange(200, 600, interval) * um freqs = c / wvlens np.save("./graph/freqs", freqs) #------------------------------------------------------------------# #-------------------------- Call objects --------------------------# #------------------------------------------------------------------# Space = space.Basic3D((Nx, Ny, Nz), (dx, dy, dz), dt, Tstep, np.float32, np.complex64, method='SHPF', engine='cupy') Space.malloc() # Put structures Box1_srt = (round(222 * um / dx), round(0 * um / dy), round(0 * um / dz)) Box1_end = (round(272 * um / dx), round(96 * um / dy), round(96 * um / dz)) #Box = structure.Box(Space, Box1_srt, Box1_end, 4., 1.) # Set PML and PBC Space.set_PML({'x': '+-', 'y': '+-', 'z': '+-'}, 10) #Space.set_PML({'x':'+-','y':'+-','z':'+-'}, 10) # Save eps, mu and PML data.
Lx, Ly, Lz = 720 * lunit, a, a Nx, Ny, Nz = int(sys.argv[3]), int(sys.argv[4]), int(sys.argv[5]) dx, dy, dz = Lx / Nx, Ly / Ny, Lz / Nz courant = 1. / 4 dt = courant * min(dx, dy, dz) / c Tsteps = int(sys.argv[2]) method = sys.argv[1] engine = 'cupy' TF = space.Basic3D((Nx, Ny, Nz), (dx, dy, dz), dt, Tsteps, np.complex64, np.complex64, method=method, engine=engine) IF = space.Basic3D((Nx, Ny, Nz), (dx, dy, dz), dt, Tsteps, np.complex64, np.complex64, method=method, engine=engine) SF = space.Empty3D((Nx, Ny, Nz), (dx, dy, dz), dt, Tsteps, np.complex64, np.complex64,