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('./')

#------------------------------------------------------------------#
Esempio n. 2
0
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))
Esempio n. 3
0
# 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
Esempio n. 4
0
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.
Esempio n. 5
0
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,