diff --git a/gprMax/cmds_singleuse.py b/gprMax/cmds_singleuse.py index 5aeb888e..e41caa26 100644 --- a/gprMax/cmds_singleuse.py +++ b/gprMax/cmds_singleuse.py @@ -133,32 +133,32 @@ class Domain(UserObjectSingle): def build(self, model, uip): try: - model.nx, model.ny, model.nz = uip.discretise_point(self.kwargs["p1"]) + model.gnx, model.gny, model.gnz = uip.discretise_point(self.kwargs["p1"]) except KeyError: logger.exception(f"{self.__str__()} please specify a point") raise - if model.nx == 0 or model.ny == 0 or model.nz == 0: + if model.gnx == 0 or model.gny == 0 or model.gnz == 0: logger.exception(f"{self.__str__()} requires at least one cell in every dimension") raise ValueError logger.info( f"Domain size: {self.kwargs['p1'][0]:g} x {self.kwargs['p1'][1]:g} x " - + f"{self.kwargs['p1'][2]:g}m ({model.nx:d} x {model.ny:d} x {model.nz:d} = " - + f"{(model.nx * model.ny * model.nz):g} cells)" + + f"{self.kwargs['p1'][2]:g}m ({model.gnx:d} x {model.gny:d} x {model.gnz:d} = " + + f"{(model.gnx * model.gny * model.gnz):g} cells)" ) # Calculate time step at CFL limit; switch off appropriate PMLs for 2D G = model.G - if model.nx == 1: + if model.gnx == 1: config.get_model_config().mode = "2D TMx" G.pmls["thickness"]["x0"] = 0 G.pmls["thickness"]["xmax"] = 0 - elif model.ny == 1: + elif model.gny == 1: config.get_model_config().mode = "2D TMy" G.pmls["thickness"]["y0"] = 0 G.pmls["thickness"]["ymax"] = 0 - elif model.nz == 1: + elif model.gnz == 1: config.get_model_config().mode = "2D TMz" G.pmls["thickness"]["z0"] = 0 G.pmls["thickness"]["zmax"] = 0 diff --git a/gprMax/model.py b/gprMax/model.py index dc61dd34..f7ef08c1 100644 --- a/gprMax/model.py +++ b/gprMax/model.py @@ -56,9 +56,9 @@ class Model: def __init__(self): self.title = "" - self.nx = 0 - self.ny = 0 - self.nz = 0 + self.gnx = 0 + self.gny = 0 + self.gnz = 0 self.G = self._create_grid() # Monitor memory usage @@ -70,6 +70,30 @@ class Model: # later for use with CPU solver. config.get_model_config().ompthreads = set_omp_threads(config.get_model_config().ompthreads) + @property + def nx(self) -> int: + return self.G.nx + + @nx.setter + def nx(self, value: int): + self.G.nx = value + + @property + def ny(self) -> int: + return self.G.ny + + @ny.setter + def ny(self, value: int): + self.G.ny = value + + @property + def nz(self) -> int: + return self.G.nz + + @nz.setter + def nz(self, value: int): + self.G.nz = value + @property def dx(self) -> float: return self.G.dl[0] @@ -163,10 +187,10 @@ class Model: def build_geometry(self): logger.info(config.get_model_config().inputfilestr) - # TODO: Make this correctly set local nx, ny and nz when using MPI - self.G.nx = self.nx - self.G.ny = self.ny - self.G.nz = self.nz + # TODO: Make this correctly sets local nx, ny and nz when using MPI (likely use a function inside FDTDGrid/MPIGrid) + self.G.nx = self.gnx + self.G.ny = self.gny + self.G.nz = self.gnz self.G.build() def reuse_geometry(self):