-
Notifications
You must be signed in to change notification settings - Fork 140
Open
Description
I've tried a minimal example:
wavelength = 1e-6
speed_of_light = 277972458
# Initialize FDTD grid
grid = fdtd.Grid(shape=(20*wavelength, 50*wavelength, 1), grid_spacing=wavelength/10)
# Initialize perfectly matched layer (PML) boundaries
grid[0:10, :, :] = fdtd.PML(name="pml_xlow")
grid[-10:, :, :] = fdtd.PML(name="pml_xhigh")
grid[:, 0:10, :] = fdtd.PML(name="pml_ylow")
grid[:, -10:, :] = fdtd.PML(name="pml_yhigh")
# Initialize source
grid[:, 10, 0] = fdtd.LineSource(period=wavelength/speed_of_light, name="source")
# Initialize objects
#grid[10:190, 50:100, :] = fdtd.AbsorbingObject(permittivity=2.5, conductivity=1e-6, name="absorbing_object")
# Run simulation
start_time = timeit.default_timer()
for i in range(200):
grid.step() # Run simulation one timestep at a time and animate
if i % 10 == 0:
grid.visualize(z=0, cmap='plasma', animate=True, index=i, save=False)
plt.title(f"Simulation step {i}")
#clear_output(wait=True) # Only necessary in Jupyter notebooks
print(timeit.default_timer() - start_time)
But I'm getting this runtime error:
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
Input In [51], in <cell line: 17>()
13 grid[:, 10, 0] = fdtd.LineSource(period=wavelength/299792458, name="source")
16 # Initialize objects
---> 17 grid[10:190, 50:100, :] = fdtd.AbsorbingObject(permittivity=2.5, conductivity=1e-6, name="absorbing_object")
20 # Run simulation
21 start_time = timeit.default_timer()
File C:\Program Files\Python38\lib\site-packages\fdtd\grid.py:365, in Grid.__setitem__(self, key, attr)
362 else:
363 raise KeyError("maximum number of indices for the grid is 3")
--> 365 attr._register_grid(
366 grid=self,
367 x=self._handle_single_key(x),
368 y=self._handle_single_key(y),
369 z=self._handle_single_key(z),
370 )
File C:\Program Files\Python38\lib\site-packages\fdtd\objects.py:193, in AbsorbingObject._register_grid(self, grid, x, y, z)
187 conductivity = conductivity[..., None]
188 self.conductivity = bd.broadcast_to(
189 conductivity, self.inverse_permittivity.shape
190 )
192 self.absorption_factor = (
--> 193 0.5
194 * self.grid.courant_number
195 * self.inverse_permittivity
196 * self.conductivity
197 * self.grid.grid_spacing
198 * const.eta0
199 )
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!
Metadata
Metadata
Assignees
Labels
No labels