Compare commits

...

4 Commits

Author SHA1 Message Date
b703f1ee20 drop object superclass 2024-01-10 20:57:40 -08:00
5b1e758c27 typo fix 2024-01-10 20:57:23 -08:00
d0011cb1f9 type modernization 2024-01-10 20:54:12 -08:00
654f9c165b formatting 2024-01-10 20:52:52 -08:00
3 changed files with 21 additions and 21 deletions

View File

@ -230,9 +230,9 @@ def main():
Ectr[t] = sim.E[ind].get() Ectr[t] = sim.E[ind].get()
u[t] = pyopencl.array.sum(sim.E * sim.E * sim.eps + h_old * sim.H).get() * dx * dx * dx u[t] = pyopencl.array.sum(sim.E * sim.E * sim.eps + h_old * sim.H).get() * dx * dx * dx
ui[t] = (sim.E * sim.E * sim.eps + h_old * sim.H).reshape(epsilon.shape).get()[:, pml_thickness+m:-pml_thickness-m, :, ui[t] = (sim.E * sim.E * sim.eps + h_old * sim.H).reshape(epsilon.shape).get()[:, pml_thickness+m:-pml_thickness-m, :,
pml_thickness+m:-pml_thickness-m].sum() * dx * dx * dx pml_thickness+m:-pml_thickness-m].sum() * dx * dx * dx
# ui[t] = (sim.E * sim.E * sim.eps + h_old * sim.H).reshape(epsilon.shape).get()[:, pml_thickness+m:-pml_thickness-m, # ui[t] = (sim.E * sim.E * sim.eps + h_old * sim.H).reshape(epsilon.shape).get()[:, pml_thickness+m:-pml_thickness-m,
# pml_thickness+m:-pml_thickness-m, :].sum() * dx * dx * dx # pml_thickness+m:-pml_thickness-m, :].sum() * dx * dx * dx
if t % 100 == 0: if t % 100 == 0:
avg = (t + 1) / (time.perf_counter() - start) avg = (t + 1) / (time.perf_counter() - start)

View File

@ -1,5 +1,5 @@
from .simulation import Simulation, type_to_C from .simulation import Simulation, type_to_C
__author__ = 'Jan Petykiewicz' __author__ = 'Jan Petykiewicz'
__vesion__ = '0.4' __version__ = '0.4'
version = __version__ version = __version__

View File

@ -2,7 +2,7 @@
Class for constructing and holding the basic FDTD operations and fields Class for constructing and holding the basic FDTD operations and fields
""" """
from typing import List, Dict, Callable, Type, Union, Optional, Sequence from typing import Callable, Type, Sequence
from collections import OrderedDict from collections import OrderedDict
import numpy import numpy
from numpy.typing import NDArray from numpy.typing import NDArray
@ -23,7 +23,7 @@ __author__ = 'Jan Petykiewicz'
jinja_env = jinja2.Environment(loader=jinja2.PackageLoader(__name__.split('.')[0], 'kernels')) jinja_env = jinja2.Environment(loader=jinja2.PackageLoader(__name__.split('.')[0], 'kernels'))
class Simulation(object): class Simulation:
r""" r"""
Constructs and holds the basic FDTD operations and related fields Constructs and holds the basic FDTD operations and related fields
@ -62,29 +62,29 @@ class Simulation(object):
S: pyopencl.array.Array S: pyopencl.array.Array
eps: pyopencl.array.Array eps: pyopencl.array.Array
dt: float dt: float
inv_dxes: List[pyopencl.array.Array] inv_dxes: list[pyopencl.array.Array]
arg_type: Type arg_type: Type
context: pyopencl.Context context: pyopencl.Context
queue: pyopencl.CommandQueue queue: pyopencl.CommandQueue
update_E: Callable[[List[pyopencl.Event]], pyopencl.Event] update_E: Callable[[list[pyopencl.Event]], pyopencl.Event]
update_H: Callable[[List[pyopencl.Event]], pyopencl.Event] update_H: Callable[[list[pyopencl.Event]], pyopencl.Event]
update_S: Callable[[List[pyopencl.Event]], pyopencl.Event] update_S: Callable[[list[pyopencl.Event]], pyopencl.Event]
update_J: Callable[[List[pyopencl.Event]], pyopencl.Event] update_J: Callable[[list[pyopencl.Event]], pyopencl.Event]
sources: Dict[str, str] sources: dict[str, str]
def __init__( def __init__(
self, self,
epsilon: NDArray, epsilon: NDArray,
pmls: Sequence[Dict[str, float]], pmls: Sequence[dict[str, float]],
bloch_boundaries: Sequence[Dict[str, float]] = (), bloch_boundaries: Sequence[dict[str, float]] = (),
dxes: Union[List[List[NDArray]], float, None] = None, dxes: list[list[NDArray]] | float | None = None,
dt: Optional[float] = None, dt: float | None = None,
initial_fields: Optional[Dict[str, NDArray]] = None, initial_fields: dict[str, NDArray] | None = None,
context: Optional[pyopencl.Context] = None, context: pyopencl.Context | None = None,
queue: Optional[pyopencl.CommandQueue] = None, queue: pyopencl.CommandQueue | None = None,
float_type: Type = numpy.float32, float_type: Type = numpy.float32,
do_poynting: bool = True, do_poynting: bool = True,
do_fieldsrc: bool = False, do_fieldsrc: bool = False,
@ -331,8 +331,8 @@ class Simulation(object):
def _create_context( def _create_context(
self, self,
context: Optional[pyopencl.Context] = None, context: pyopencl.Context | None = None,
queue: Optional[pyopencl.CommandQueue] = None, queue: pyopencl.CommandQueue | None = None,
) -> None: ) -> None:
if context is None: if context is None:
self.context = pyopencl.create_some_context() self.context = pyopencl.create_some_context()
@ -353,7 +353,7 @@ class Simulation(object):
raise Exception(f'Epsilon shape mismatch. Expected {self.shape}, got {epsilon[0].shape}') raise Exception(f'Epsilon shape mismatch. Expected {self.shape}, got {epsilon[0].shape}')
self.eps = pyopencl.array.to_device(self.queue, vec(epsilon).astype(self.arg_type)) self.eps = pyopencl.array.to_device(self.queue, vec(epsilon).astype(self.arg_type))
def _create_field(self, initial_value: Optional[NDArray] = None) -> pyopencl.array.Array: def _create_field(self, initial_value: NDArray | None = None) -> pyopencl.array.Array:
if initial_value is None: if initial_value is None:
return pyopencl.array.zeros_like(self.eps) return pyopencl.array.zeros_like(self.eps)
else: else: