diff --git a/gprMax/cmds_geometry/add_grass.py b/gprMax/cmds_geometry/add_grass.py index 32d2387f..c59d521a 100644 --- a/gprMax/cmds_geometry/add_grass.py +++ b/gprMax/cmds_geometry/add_grass.py @@ -28,9 +28,9 @@ from ..fractals import Grass from ..materials import Material from ..utilities import round_value - log = logging.getLogger(__name__) + class AddGrass(UserObjectGeometry): """Allows you to add grass with roots to a :class:`gprMax.cmds_geometry.fractal_box.FractalBox` in the model. @@ -49,7 +49,6 @@ class AddGrass(UserObjectGeometry): """ def __init__(self, **kwargs): - """Constructor.""" super().__init__(**kwargs) self.order = 12 self.hash = '#add_grass' @@ -195,5 +194,8 @@ class AddGrass(UserObjectGeometry): volume.fractalsurfaces.append(surface) - if config.is_messages(): - tqdm.write(f'{n_blades} blades of grass on surface from {xs * grid.dx:g}m, {ys * grid.dy:g}m, {zs * grid.dz:g}m, to {xf * grid.dx:g}m, {yf * grid.dy:g}m, {zf * grid.dz:g}m with fractal dimension {surface.dimension:g}, fractal seeding {surface.seed}, and range {limits[0]:g}m to {limits[1]:g}m, added to {surface.operatingonID}.') + log.info(f'{n_blades} blades of grass on surface from {xs * grid.dx:g}m, \ + {ys * grid.dy:g}m, {zs * grid.dz:g}m, to {xf * grid.dx:g}m, \ + {yf * grid.dy:g}m, {zf * grid.dz:g}m with fractal dimension \ + {surface.dimension:g}, fractal seeding {surface.seed}, and range \ + {limits[0]:g}m to {limits[1]:g}m, added to {surface.operatingonID}.') diff --git a/gprMax/cmds_geometry/add_surface_roughness.py b/gprMax/cmds_geometry/add_surface_roughness.py index 04c99532..87edff26 100644 --- a/gprMax/cmds_geometry/add_surface_roughness.py +++ b/gprMax/cmds_geometry/add_surface_roughness.py @@ -50,7 +50,6 @@ class AddSurfaceRoughness(UserObjectGeometry): """ def __init__(self, **kwargs): - """Constructor.""" super().__init__(**kwargs) self.order = 10 self.hash = '#add_surface_roughness' @@ -160,5 +159,9 @@ class AddSurfaceRoughness(UserObjectGeometry): surface.generate_fractal_surface(grid) volume.fractalsurfaces.append(surface) - if config.is_messages(): - log.info(f'Fractal surface from {xs * grid.dx:g}m, {ys * grid.dy:g}m, {zs * grid.dz:g}m, to {xf * grid.dx:g}m, {yf * grid.dy:g}m, {zf * grid.dz:g}m with fractal dimension {surface.dimension:g}, fractal weightings {surface.weighting[0]:g}, {surface.weighting[1]:g}, fractal seeding {surface.seed}, and range {limits[0]:g}m to {limits[1]:g}m, added to {surface.operatingonID}.') + log.info(f'Fractal surface from {xs * grid.dx:g}m, {ys * grid.dy:g}m, \ + {zs * grid.dz:g}m, to {xf * grid.dx:g}m, {yf * grid.dy:g}m, \ + {zf * grid.dz:g}m with fractal dimension {surface.dimension:g}, \ + fractal weightings {surface.weighting[0]:g}, {surface.weighting[1]:g}, \ + fractal seeding {surface.seed}, and range {limits[0]:g}m to \ + {limits[1]:g}m, added to {surface.operatingonID}.') diff --git a/gprMax/cmds_geometry/add_surface_water.py b/gprMax/cmds_geometry/add_surface_water.py index e549b06e..8a10acba 100644 --- a/gprMax/cmds_geometry/add_surface_water.py +++ b/gprMax/cmds_geometry/add_surface_water.py @@ -24,9 +24,9 @@ from ..exceptions import CmdInputError from ..materials import Material from ..utilities import round_value - log = logging.getLogger(__name__) + class AddSurfaceWater(UserObjectGeometry): """Allows you to add surface water to a :class:`gprMax.cmds_geometry.fractal_box.FractalBox` in the model. @@ -41,7 +41,6 @@ class AddSurfaceWater(UserObjectGeometry): """ def __init__(self, **kwargs): - """Constructor.""" super().__init__(**kwargs) self.order = 11 self.hash = '#add_surface_water' @@ -144,5 +143,7 @@ class AddSurfaceWater(UserObjectGeometry): if testwater: raise CmdInputError(self.__str__() + ' requires the time step for the model to be less than the relaxation time required to model water.') - if config.is_messages(): - log.info('Water on surface from {xs * grid.dx:g}m, {ys * grid.dy:g}m, {zs * grid.dz:g}m, to {xf * grid.dx:g}m, {yf * grid.dy:g}m, {zf * grid.dz:g}m with depth {filldepth:g}m, added to {surface.operatingonID}.') + log.info(f'Water on surface from {xs * grid.dx:g}m, {ys * grid.dy:g}m, \ + {zs * grid.dz:g}m, to {xf * grid.dx:g}m, {yf * grid.dy:g}m, \ + {zf * grid.dz:g}m with depth {filldepth:g}m, added to \ + {surface.operatingonID}.') diff --git a/gprMax/cmds_geometry/box.py b/gprMax/cmds_geometry/box.py index 8020fc6e..5059f4cf 100644 --- a/gprMax/cmds_geometry/box.py +++ b/gprMax/cmds_geometry/box.py @@ -16,8 +16,9 @@ # You should have received a copy of the GNU General Public License # along with gprMax. If not, see . +import logging + import numpy as np -from tqdm import tqdm import gprMax.config as config from .cmds_geometry import UserObjectGeometry @@ -25,6 +26,8 @@ from ..cython.geometry_primitives import build_box from ..exceptions import CmdInputError from ..materials import Material +log = logging.getLogger(__name__) + class Box(UserObjectGeometry): """Allows you to introduce an orthogonal parallelepiped with specific properties into the model. @@ -42,7 +45,6 @@ class Box(UserObjectGeometry): """ def __init__(self, **kwargs): - """Constructor.""" super().__init__(**kwargs) self.order = 5 self.hash = '#box' @@ -114,9 +116,8 @@ class Box(UserObjectGeometry): build_box(xs, xf, ys, yf, zs, zf, numID, numIDx, numIDy, numIDz, averaging, grid.solid, grid.rigidE, grid.rigidH, grid.ID) - if config.is_messages(): - if averaging: - dielectricsmoothing = 'on' - else: - dielectricsmoothing = 'off' - tqdm.write('Box from {:g}m, {:g}m, {:g}m, to {:g}m, {:g}m, {:g}m of material(s) {} created, dielectric smoothing is {}.'.format(xs * grid.dx, ys * grid.dy, zs * grid.dz, xf * grid.dx, yf * grid.dy, zf * grid.dz, ', '.join(materialsrequested), dielectricsmoothing)) + dielectricsmoothing = 'on' if averaging else 'off' + log.info(f"Box from {xs * grid.dx:g}m, {ys * grid.dy:g}m, {zs * grid.dz:g}m, \ + to {xf * grid.dx:g}m, {yf * grid.dy:g}m, {zf * grid.dz:g}m of \ + material(s) {', '.join(materialsrequested)} created, dielectric \ + smoothing is {dielectricsmoothing}.") diff --git a/gprMax/cmds_geometry/cmds_geometry.py b/gprMax/cmds_geometry/cmds_geometry.py index 5847abb2..e102e8fd 100644 --- a/gprMax/cmds_geometry/cmds_geometry.py +++ b/gprMax/cmds_geometry/cmds_geometry.py @@ -16,12 +16,15 @@ # You should have received a copy of the GNU General Public License # along with gprMax. If not, see . +import logging + +log = logging.getLogger(__name__) + class UserObjectGeometry: """Specific Geometry object.""" def __init__(self, **kwargs): - """Constructor.""" self.kwargs = kwargs # define the order of priority for calling create() self.order = None @@ -39,7 +42,7 @@ class UserObjectGeometry: v = ' '.join([str(el) for el in v]) s += str(v) + ' ' - return '{}: {}'.format(self.hash, s[:-1]) + return f'{self.hash}: {s[:-1]}' def params_str(self): """Readble string of parameters given to object.""" @@ -47,3 +50,4 @@ class UserObjectGeometry: def create(self, grid, uip): """Create the object and add it to the grid.""" + log.debug('This method is incomplete') diff --git a/gprMax/cmds_geometry/cylinder.py b/gprMax/cmds_geometry/cylinder.py index 0c43d6fe..92a5cee9 100644 --- a/gprMax/cmds_geometry/cylinder.py +++ b/gprMax/cmds_geometry/cylinder.py @@ -16,8 +16,8 @@ # You should have received a copy of the GNU General Public License # along with gprMax. If not, see . +import logging import numpy as np -from tqdm import tqdm import gprMax.config as config from .cmds_geometry import UserObjectGeometry @@ -25,6 +25,8 @@ from ..cython.geometry_primitives import build_cylinder from ..exceptions import CmdInputError from ..materials import Material +log = logging.getLogger(__name__) + class Cylinder(UserObjectGeometry): """Allows you to introduce a circular cylinder into the model. @@ -42,14 +44,13 @@ class Cylinder(UserObjectGeometry): :param averaging: y or n, used to switch on and off dielectric smoothing. :type averaging: str, non-optional """ + def __init__(self, **kwargs): - """Constructor.""" super().__init__(**kwargs) self.order = 6 self.hash = '#cylinder' def create(self, grid, uip): - try: p1 = self.kwargs['p1'] p2 = self.kwargs['p2'] @@ -120,9 +121,7 @@ class Cylinder(UserObjectGeometry): build_cylinder(x1, y1, z1, x2, y2, z2, r, grid.dx, grid.dy, grid.dz, numID, numIDx, numIDy, numIDz, averaging, grid.solid, grid.rigidE, grid.rigidH, grid.ID) - if config.is_messages(): - if averaging: - dielectricsmoothing = 'on' - else: - dielectricsmoothing = 'off' - tqdm.write('Cylinder with face centres {:g}m, {:g}m, {:g}m and {:g}m, {:g}m, {:g}m, with radius {:g}m, of material(s) {} created, dielectric smoothing is {}.'.format(x1, y1, z1, x2, y2, z2, r, ', '.join(materialsrequested), dielectricsmoothing)) + dielectricsmoothing = 'on' if averaging else 'off' + log.info(f"Cylinder with face centres {x1:g}m, {y1:g}m, {z1:g}m and {x2:g}m, \ + {y2:g}m, {z2:g}m, with radius {r:g}m, of material(s) {', '.join(materialsrequested)} \ + created, dielectric smoothing is {dielectricsmoothing}." diff --git a/gprMax/cmds_geometry/cylindrical_sector.py b/gprMax/cmds_geometry/cylindrical_sector.py index 05781e59..8e7d59a0 100644 --- a/gprMax/cmds_geometry/cylindrical_sector.py +++ b/gprMax/cmds_geometry/cylindrical_sector.py @@ -16,8 +16,9 @@ # You should have received a copy of the GNU General Public License # along with gprMax. If not, see . +import logging + import numpy as np -from tqdm import tqdm import gprMax.config as config from .cmds_geometry import UserObjectGeometry @@ -25,6 +26,8 @@ from ..cython.geometry_primitives import build_cylindrical_sector from ..exceptions import CmdInputError from ..materials import Material +log = logging.getLogger(__name__) + class CylindricalSector(UserObjectGeometry): """Allows you to introduce a cylindrical sector (shaped like a slice of pie) into the model. @@ -54,7 +57,6 @@ class CylindricalSector(UserObjectGeometry): """ def __init__(self, **kwargs): - """Constructor.""" super().__init__(**kwargs) self.order = 7 self.hash = '#cylindrical_sector' @@ -168,12 +170,16 @@ class CylindricalSector(UserObjectGeometry): build_cylindrical_sector(ctr1, ctr2, level, sectorstartangle, sectorangle, r, normal, thickness, grid.dx, grid.dy, grid.dz, numID, numIDx, numIDy, numIDz, averaging, grid.solid, grid.rigidE, grid.rigidH, grid.ID) - if config.is_messages(): - if thickness > 0: - if averaging: - dielectricsmoothing = 'on' - else: - dielectricsmoothing = 'off' - tqdm.write('Cylindrical sector with centre {:g}m, {:g}m, radius {:g}m, starting angle {:.1f} degrees, sector angle {:.1f} degrees, thickness {:g}m, of material(s) {} created, dielectric smoothing is {}.'.format(ctr1, ctr2, r, (sectorstartangle / (2 * np.pi)) * 360, (sectorangle / (2 * np.pi)) * 360, thickness, ', '.join(materialsrequested), dielectricsmoothing)) - else: - tqdm.write('Cylindrical sector with centre {:g}m, {:g}m, radius {:g}m, starting angle {:.1f} degrees, sector angle {:.1f} degrees, of material(s) {} created.'.format(ctr1, ctr2, r, (sectorstartangle / (2 * np.pi)) * 360, (sectorangle / (2 * np.pi)) * 360, ', '.join(materialsrequested))) + if thickness > 0: + dielectricsmoothing = 'on' if averaging else 'off' + log.info(f"Cylindrical sector with centre {ctr1:g}m, {ctr2:g}m, \ + radius {r:g}m, starting angle {(sectorstartangle / (2 * np.pi)) * 360:.1f} \ + degrees, sector angle {(sectorangle / (2 * np.pi)) * 360:.1f} \ + degrees, thickness {thickness:g}m, of material(s) \ + {', '.join(materialsrequested)} created, dielectric smoothing \ + is {dielectricsmoothing}.") + else: + log.info(f"Cylindrical sector with centre {ctr1:g}m, {ctr2:g}m, \ + radius {r:g}m, starting angle {(sectorstartangle / (2 * np.pi)) * 360:.1f} \ + degrees, sector angle {(sectorangle / (2 * np.pi)) * 360:.1f} \ + degrees, of material(s) {', '.join(materialsrequested)} created.") diff --git a/gprMax/cmds_geometry/edge.py b/gprMax/cmds_geometry/edge.py index 3d01eb01..74a92ef3 100644 --- a/gprMax/cmds_geometry/edge.py +++ b/gprMax/cmds_geometry/edge.py @@ -16,7 +16,7 @@ # You should have received a copy of the GNU General Public License # along with gprMax. If not, see . -from tqdm import tqdm +import logging import gprMax.config as config from .cmds_geometry import UserObjectGeometry @@ -25,6 +25,8 @@ from ..cython.geometry_primitives import build_edge_y from ..cython.geometry_primitives import build_edge_z from ..exceptions import CmdInputError +log = logging.getLogger(__name__) + class Edge(UserObjectGeometry): """Allows you to introduce a wire with specific properties into the model. @@ -38,7 +40,6 @@ class Edge(UserObjectGeometry): """ def __init__(self, **kwargs): - """Constructor.""" super().__init__(**kwargs) self.order = 2 self.hash = '#edge' @@ -86,5 +87,6 @@ class Edge(UserObjectGeometry): for k in range(zs, zf): build_edge_z(xs, ys, k, material.numID, grid.rigidE, grid.rigidH, grid.ID) - if config.is_messages(): - tqdm.write('Edge from {:g}m, {:g}m, {:g}m, to {:g}m, {:g}m, {:g}m of material {} created.'.format(xs * grid.dx, ys * grid.dy, zs * grid.dz, xf * grid.dx, yf * grid.dy, zf * grid.dz, material_id)) + log.info(f'Edge from {xs * grid.dx:g}m, {ys * grid.dy:g}m, {zs * grid.dz:g}m, \ + to {xf * grid.dx:g}m, {yf * grid.dy:g}m, {zf * grid.dz:g}m of \ + material {material_id} created.') diff --git a/gprMax/cmds_geometry/fractal_box.py b/gprMax/cmds_geometry/fractal_box.py index 913f10c5..9bf6fb7d 100644 --- a/gprMax/cmds_geometry/fractal_box.py +++ b/gprMax/cmds_geometry/fractal_box.py @@ -16,14 +16,17 @@ # You should have received a copy of the GNU General Public License # along with gprMax. If not, see . +import logging + import numpy as np -from tqdm import tqdm import gprMax.config as config from .cmds_geometry import UserObjectGeometry from ..exceptions import CmdInputError from ..fractals import FractalVolume +log = logging.getLogger(__name__) + class FractalBox(UserObjectGeometry): """Allows you to introduce an orthogonal parallelepiped with fractal distributed properties which are related to a mixing model or normal material into the model. @@ -49,7 +52,6 @@ class FractalBox(UserObjectGeometry): """ def __init__(self, **kwargs): - """Constructor.""" super().__init__(**kwargs) self.order = 9 self.hash = '#fractal_box' @@ -63,7 +65,6 @@ class FractalBox(UserObjectGeometry): n_materials = self.kwargs['n_materials'] mixing_model_id = self.kwargs['mixing_model_id'] ID = self.kwargs['id'] - except KeyError: raise CmdInputError(self.__str__() + ' Incorrect parameters') @@ -120,11 +121,12 @@ class FractalBox(UserObjectGeometry): volume.averaging = averagefractalbox volume.mixingmodel = mixingmodel - if config.is_messages(): - if volume.averaging: - dielectricsmoothing = 'on' - else: - dielectricsmoothing = 'off' - tqdm.write('Fractal box {} from {:g}m, {:g}m, {:g}m, to {:g}m, {:g}m, {:g}m with {}, fractal dimension {:g}, fractal weightings {:g}, {:g}, {:g}, fractal seeding {}, with {} material(s) created, dielectric smoothing is {}.'.format(volume.ID, xs * grid.dx, ys * grid.dy, zs * grid.dz, xf * grid.dx, yf * grid.dy, zf * grid.dz, volume.operatingonID, volume.dimension, volume.weighting[0], volume.weighting[1], volume.weighting[2], volume.seed, volume.nbins, dielectricsmoothing)) + dielectricsmoothing = 'on' if volume.averaging else 'off' + log.info(f'Fractal box {volume.ID} from {xs * grid.dx:g}m, {ys * grid.dy:g}m, \ + {zs * grid.dz:g}m, to {xf * grid.dx:g}m, {yf * grid.dy:g}m, {zf * grid.dz:g}m \ + with {volume.operatingonID}, fractal dimension {volume.dimension:g}, fractal \ + weightings {volume.weighting[0]:g}, {volume.weighting[1]:g}, {volume.weighting[2]:g}, \ + fractal seeding {volume.seed}, with {volume.nbins} material(s) created, \ + dielectric smoothing is {dielectricsmoothing}.') grid.fractalvolumes.append(volume) diff --git a/gprMax/cmds_geometry/fractal_box_builder.py b/gprMax/cmds_geometry/fractal_box_builder.py index 73313f1e..5c240ae1 100644 --- a/gprMax/cmds_geometry/fractal_box_builder.py +++ b/gprMax/cmds_geometry/fractal_box_builder.py @@ -32,15 +32,12 @@ class FractalBoxBuilder(UserObjectGeometry): internally only when surface modification have been made to a fractal box""" def __init__(self, **kwargs): - """Constructor.""" super().__init__(**kwargs) self.order = 13 self.hash = '#fractal_box_modifications' def create(self, grid, uip): - for volume in grid.fractalvolumes: - if volume.fractalsurfaces: volume.originalxs = volume.xs volume.originalxf = volume.xf diff --git a/gprMax/cmds_geometry/geometry_objects_read.py b/gprMax/cmds_geometry/geometry_objects_read.py index 034d10e0..15313642 100644 --- a/gprMax/cmds_geometry/geometry_objects_read.py +++ b/gprMax/cmds_geometry/geometry_objects_read.py @@ -16,26 +16,26 @@ # You should have received a copy of the GNU General Public License # along with gprMax. If not, see . +import logging import os -from tqdm import tqdm - import gprMax.config as config from .cmds_geometry import UserObjectGeometry from ..exceptions import CmdInputError +log = logging.getLogger(__name__) + class GeometryObjectsRead(UserObjectGeometry): - """MORE WORK REQUIRED HERE.""" + + log.debug('More work required here.') def __init__(self, **kwargs): - """Constructor.""" self.order = 1 self.hash = '#geometry_objects_read' def create(self, G, uip): """Create the object and add it to the grid.""" - try: p1 = self.kwargs['p1'] geofile = self.kwargs['geofile'] @@ -101,10 +101,12 @@ class GeometryObjectsRead(UserObjectGeometry): G.rigidE[:, xs:xs + rigidE.shape[1], ys:ys + rigidE.shape[2], zs:zs + rigidE.shape[3]] = rigidE G.rigidH[:, xs:xs + rigidH.shape[1], ys:ys + rigidH.shape[2], zs:zs + rigidH.shape[3]] = rigidH G.ID[:, xs:xs + ID.shape[1], ys:ys + ID.shape[2], zs:zs + ID.shape[3]] = ID + numexistmaterials - if G.messages: - tqdm.write('Geometry objects from file {} inserted at {:g}m, {:g}m, {:g}m, with corresponding materials file {}.'.format(geofile, xs * G.dx, ys * G.dy, zs * G.dz, matfile)) + log.info(f'Geometry objects from file {geofile} inserted at {xs * G.dx:g}m, \ + {ys * G.dy:g}m, {zs * G.dz:g}m, with corresponding materials \ + file {matfile}.') except KeyError: averaging = False build_voxels_from_array(xs, ys, zs, numexistmaterials, averaging, data, G.solid, G.rigidE, G.rigidH, G.ID) - if G.messages: - tqdm.write('Geometry objects from file (voxels only) {} inserted at {:g}m, {:g}m, {:g}m, with corresponding materials file {}.'.format(geofile, xs * G.dx, ys * G.dy, zs * G.dz, matfile)) + log.info(f'Geometry objects from file (voxels only){ geofile} \ + inserted at {xs * G.dx:g}m, {ys * G.dy:g}m, {zs * G.dz:g}m, \ + with corresponding materials file {matfile}.') diff --git a/gprMax/cmds_geometry/plate.py b/gprMax/cmds_geometry/plate.py index 9852e02c..5f29031a 100644 --- a/gprMax/cmds_geometry/plate.py +++ b/gprMax/cmds_geometry/plate.py @@ -16,7 +16,7 @@ # You should have received a copy of the GNU General Public License # along with gprMax. If not, see . -from tqdm import tqdm +import logging import gprMax.config as config from .cmds_geometry import UserObjectGeometry @@ -25,6 +25,8 @@ from ..cython.geometry_primitives import build_face_xz from ..cython.geometry_primitives import build_face_xy from ..exceptions import CmdInputError +log = logging.getLogger(__name__) + class Plate(UserObjectGeometry): """Allows you to introduce a plate with specific properties into the model. @@ -40,17 +42,14 @@ class Plate(UserObjectGeometry): """ def __init__(self, **kwargs): - """Constructor.""" super().__init__(**kwargs) self.order = 3 self.hash = '#plate' def create(self, grid, uip): - try: p1 = self.kwargs['p1'] p2 = self.kwargs['p2'] - except KeyError: raise CmdInputError(self.__str__() + ' 2 points must be specified') @@ -136,5 +135,6 @@ class Plate(UserObjectGeometry): for j in range(ys, yf): build_face_xy(i, j, zs, numIDx, numIDy, grid.rigidE, grid.rigidH, grid.ID) - if config.is_messages(): - tqdm.write('Plate from {:g}m, {:g}m, {:g}m, to {:g}m, {:g}m, {:g}m of material(s) {} created.'.format(xs * grid.dx, ys * grid.dy, zs * grid.dz, xf * grid.dx, yf * grid.dy, zf * grid.dz, ', '.join(materialsrequested))) + log.info(f"Plate from {xs * grid.dx:g}m, {ys * grid.dy:g}m, {zs * grid.dz:g}m, \ + to {xf * grid.dx:g}m, {yf * grid.dy:g}m, {zf * grid.dz:g}m of \ + material(s) {', '.join(materialsrequested)} created.") diff --git a/gprMax/cmds_geometry/sphere.py b/gprMax/cmds_geometry/sphere.py index 80e806cd..518cdf05 100644 --- a/gprMax/cmds_geometry/sphere.py +++ b/gprMax/cmds_geometry/sphere.py @@ -16,8 +16,9 @@ # You should have received a copy of the GNU General Public License # along with gprMax. If not, see . +import logging + import numpy as np -from tqdm import tqdm import gprMax.config as config from .cmds_geometry import UserObjectGeometry @@ -25,6 +26,8 @@ from ..cython.geometry_primitives import build_sphere from ..exceptions import CmdInputError from ..materials import Material +log = logging.getLogger(__name__) + class Sphere(UserObjectGeometry): """Allows you to introduce a spherical object with specific parameters into the model. @@ -42,7 +45,6 @@ class Sphere(UserObjectGeometry): """ def __init__(self, **kwargs): - """Constructor.""" super().__init__(**kwargs) self.order = 8 self.hash = '#sphere' @@ -113,9 +115,7 @@ class Sphere(UserObjectGeometry): build_sphere(xc, yc, zc, r, grid.dx, grid.dy, grid.dz, numID, numIDx, numIDy, numIDz, averaging, grid.solid, grid.rigidE, grid.rigidH, grid.ID) - if config.is_messages(): - if averaging: - dielectricsmoothing = 'on' - else: - dielectricsmoothing = 'off' - tqdm.write('Sphere with centre {:g}m, {:g}m, {:g}m, radius {:g}m, of material(s) {} created, dielectric smoothing is {}.'.format(xc * grid.dx, yc * grid.dy, zc * grid.dz, r, ', '.join(materialsrequested), dielectricsmoothing)) + dielectricsmoothing = 'on' if averaging else 'off' + log.info(f"Sphere with centre {xc * grid.dx:g}m, {yc * grid.dy:g}m, {zc * grid.dz:g}m, \ + radius {r:g}m, of material(s) {', '.join(materialsrequested)} \ + created, dielectric smoothing is {dielectricsmoothing}.") diff --git a/gprMax/cmds_geometry/triangle.py b/gprMax/cmds_geometry/triangle.py index 37086278..dd228940 100644 --- a/gprMax/cmds_geometry/triangle.py +++ b/gprMax/cmds_geometry/triangle.py @@ -16,8 +16,9 @@ # You should have received a copy of the GNU General Public License # along with gprMax. If not, see . +import logging + import numpy as np -from tqdm import tqdm import gprMax.config as config from .cmds_geometry import UserObjectGeometry @@ -25,6 +26,8 @@ from ..cython.geometry_primitives import build_triangle from ..exceptions import CmdInputError from ..materials import Material +log = logging.getLogger(__name__) + class Triangle(UserObjectGeometry): """Allows you to introduce a triangular patch or a triangular prism with specific properties into the model. @@ -46,19 +49,16 @@ class Triangle(UserObjectGeometry): """ def __init__(self, **kwargs): - """Constructor.""" super().__init__(**kwargs) self.order = 4 self.hash = '#triangle' def create(self, grid, uip): - try: up1 = self.kwargs['p1'] up2 = self.kwargs['p2'] up3 = self.kwargs['p3'] thickness = self.kwargs['thickness'] - except KeyError: raise CmdInputError(self.params_str() + ' Specify 3 points and a thickness') @@ -155,12 +155,13 @@ class Triangle(UserObjectGeometry): build_triangle(x1, y1, z1, x2, y2, z2, x3, y3, z3, normal, thickness, grid.dx, grid.dy, grid.dz, numID, numIDx, numIDy, numIDz, averaging, grid.solid, grid.rigidE, grid.rigidH, grid.ID) - if config.is_messages(): - if thickness > 0: - if averaging: - dielectricsmoothing = 'on' - else: - dielectricsmoothing = 'off' - tqdm.write('Triangle with coordinates {:g}m {:g}m {:g}m, {:g}m {:g}m {:g}m, {:g}m {:g}m {:g}m and thickness {:g}m of material(s) {} created, dielectric smoothing is {}.'.format(x1, y1, z1, x2, y2, z2, x3, y3, z3, thickness, ', '.join(materialsrequested), dielectricsmoothing)) - else: - tqdm.write('Triangle with coordinates {:g}m {:g}m {:g}m, {:g}m {:g}m {:g}m, {:g}m {:g}m {:g}m of material(s) {} created.'.format(x1, y1, z1, x2, y2, z2, x3, y3, z3, ', '.join(materialsrequested))) + if thickness > 0: + dielectricsmoothing = 'on' if averaging else 'off' + log.info(f"Triangle with coordinates {x1:g}m {y1:g}m {z1:g}m, \ + {x2:g}m {y2:g}m {z2:g}m, {x3:g}m {y3:g}m {z3:g}m and thickness \ + {thickness:g}m of material(s) {', '.join(materialsrequested)} \ + created, dielectric smoothing is {dielectricsmoothing}.") + else: + log.info(f'Triangle with coordinates {x1:g}m {y1:g}m {z1:g}m, \ + {x2:g}m {y2:g}m {z2:g}m, {x3:g}m {y3:g}m {z3:g}m of \ + material(s) {', '.join(materialsrequested)} created.')