Make Rotatable a proper Mixin class

这个提交包含在:
nmannall
2024-12-12 10:20:57 +00:00
父节点 c11b064499
当前提交 d26ff3485c
共有 10 个文件被更改,包括 25 次插入24 次删除

查看文件

@@ -23,7 +23,7 @@ import numpy as np
from gprMax.fractals import FractalSurface, Grass from gprMax.fractals import FractalSurface, Grass
from gprMax.grid.fdtd_grid import FDTDGrid from gprMax.grid.fdtd_grid import FDTDGrid
from gprMax.materials import create_grass from gprMax.materials import create_grass
from gprMax.user_objects.rotatable import Rotatable from gprMax.user_objects.rotatable import RotatableMixin
from gprMax.user_objects.user_objects import GeometryUserObject from gprMax.user_objects.user_objects import GeometryUserObject
from gprMax.utilities.utilities import round_value from gprMax.utilities.utilities import round_value
@@ -32,7 +32,7 @@ from .cmds_geometry import rotate_2point_object
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class AddGrass(GeometryUserObject, Rotatable): class AddGrass(RotatableMixin, GeometryUserObject):
"""Adds grass with roots to a FractalBox class in the model. """Adds grass with roots to a FractalBox class in the model.
Attributes: Attributes:

查看文件

@@ -22,7 +22,7 @@ import numpy as np
from gprMax.fractals import FractalSurface from gprMax.fractals import FractalSurface
from gprMax.grid.fdtd_grid import FDTDGrid from gprMax.grid.fdtd_grid import FDTDGrid
from gprMax.user_objects.rotatable import Rotatable from gprMax.user_objects.rotatable import RotatableMixin
from gprMax.user_objects.user_objects import GeometryUserObject from gprMax.user_objects.user_objects import GeometryUserObject
from gprMax.utilities.utilities import round_value from gprMax.utilities.utilities import round_value
@@ -31,7 +31,7 @@ from .cmds_geometry import rotate_2point_object
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class AddSurfaceRoughness(GeometryUserObject, Rotatable): class AddSurfaceRoughness(RotatableMixin, GeometryUserObject):
"""Adds surface roughness to a FractalBox class in the model. """Adds surface roughness to a FractalBox class in the model.
Attributes: Attributes:

查看文件

@@ -22,7 +22,7 @@ import numpy as np
from gprMax.grid.fdtd_grid import FDTDGrid from gprMax.grid.fdtd_grid import FDTDGrid
from gprMax.materials import create_water from gprMax.materials import create_water
from gprMax.user_objects.rotatable import Rotatable from gprMax.user_objects.rotatable import RotatableMixin
from gprMax.user_objects.user_objects import GeometryUserObject from gprMax.user_objects.user_objects import GeometryUserObject
from gprMax.utilities.utilities import round_value from gprMax.utilities.utilities import round_value
@@ -31,7 +31,7 @@ from .cmds_geometry import rotate_2point_object
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class AddSurfaceWater(GeometryUserObject, Rotatable): class AddSurfaceWater(RotatableMixin, GeometryUserObject):
"""Adds surface water to a FractalBox class in the model. """Adds surface water to a FractalBox class in the model.
Attributes: Attributes:

查看文件

@@ -24,7 +24,7 @@ import gprMax.config as config
from gprMax.cython.geometry_primitives import build_box from gprMax.cython.geometry_primitives import build_box
from gprMax.grid.fdtd_grid import FDTDGrid from gprMax.grid.fdtd_grid import FDTDGrid
from gprMax.materials import Material from gprMax.materials import Material
from gprMax.user_objects.rotatable import Rotatable from gprMax.user_objects.rotatable import RotatableMixin
from gprMax.user_objects.user_objects import GeometryUserObject from gprMax.user_objects.user_objects import GeometryUserObject
from .cmds_geometry import rotate_2point_object from .cmds_geometry import rotate_2point_object
@@ -32,7 +32,7 @@ from .cmds_geometry import rotate_2point_object
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class Box(GeometryUserObject, Rotatable): class Box(RotatableMixin, GeometryUserObject):
"""Introduces an orthogonal parallelepiped with specific properties into """Introduces an orthogonal parallelepiped with specific properties into
the model. the model.

查看文件

@@ -22,7 +22,7 @@ import numpy as np
from gprMax.cython.geometry_primitives import build_edge_x, build_edge_y, build_edge_z from gprMax.cython.geometry_primitives import build_edge_x, build_edge_y, build_edge_z
from gprMax.grid.fdtd_grid import FDTDGrid from gprMax.grid.fdtd_grid import FDTDGrid
from gprMax.user_objects.rotatable import Rotatable from gprMax.user_objects.rotatable import RotatableMixin
from gprMax.user_objects.user_objects import GeometryUserObject from gprMax.user_objects.user_objects import GeometryUserObject
from .cmds_geometry import rotate_2point_object from .cmds_geometry import rotate_2point_object
@@ -30,7 +30,7 @@ from .cmds_geometry import rotate_2point_object
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class Edge(GeometryUserObject, Rotatable): class Edge(RotatableMixin, GeometryUserObject):
"""Introduces a wire with specific properties into the model. """Introduces a wire with specific properties into the model.
Attributes: Attributes:

查看文件

@@ -26,13 +26,13 @@ from gprMax.fractals import FractalVolume
from gprMax.grid.fdtd_grid import FDTDGrid from gprMax.grid.fdtd_grid import FDTDGrid
from gprMax.materials import ListMaterial from gprMax.materials import ListMaterial
from gprMax.user_objects.cmds_geometry.cmds_geometry import rotate_2point_object from gprMax.user_objects.cmds_geometry.cmds_geometry import rotate_2point_object
from gprMax.user_objects.rotatable import Rotatable from gprMax.user_objects.rotatable import RotatableMixin
from gprMax.user_objects.user_objects import GeometryUserObject from gprMax.user_objects.user_objects import GeometryUserObject
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class FractalBox(GeometryUserObject, Rotatable): class FractalBox(RotatableMixin, GeometryUserObject):
"""Introduces an orthogonal parallelepiped with fractal distributed """Introduces an orthogonal parallelepiped with fractal distributed
properties which are related to a mixing model or normal material into properties which are related to a mixing model or normal material into
the model. the model.

查看文件

@@ -22,7 +22,7 @@ import numpy as np
from gprMax.cython.geometry_primitives import build_face_xy, build_face_xz, build_face_yz from gprMax.cython.geometry_primitives import build_face_xy, build_face_xz, build_face_yz
from gprMax.grid.fdtd_grid import FDTDGrid from gprMax.grid.fdtd_grid import FDTDGrid
from gprMax.user_objects.rotatable import Rotatable from gprMax.user_objects.rotatable import RotatableMixin
from gprMax.user_objects.user_objects import GeometryUserObject from gprMax.user_objects.user_objects import GeometryUserObject
from .cmds_geometry import rotate_2point_object from .cmds_geometry import rotate_2point_object
@@ -30,7 +30,7 @@ from .cmds_geometry import rotate_2point_object
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class Plate(GeometryUserObject, Rotatable): class Plate(RotatableMixin, GeometryUserObject):
"""Introduces a plate with specific properties into the model. """Introduces a plate with specific properties into the model.
Attributes: Attributes:

查看文件

@@ -23,7 +23,7 @@ import numpy as np
from gprMax.cython.geometry_primitives import build_triangle from gprMax.cython.geometry_primitives import build_triangle
from gprMax.grid.fdtd_grid import FDTDGrid from gprMax.grid.fdtd_grid import FDTDGrid
from gprMax.materials import Material from gprMax.materials import Material
from gprMax.user_objects.rotatable import Rotatable from gprMax.user_objects.rotatable import RotatableMixin
from gprMax.user_objects.user_objects import GeometryUserObject from gprMax.user_objects.user_objects import GeometryUserObject
from .cmds_geometry import rotate_point from .cmds_geometry import rotate_point
@@ -31,7 +31,7 @@ from .cmds_geometry import rotate_point
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class Triangle(GeometryUserObject, Rotatable): class Triangle(RotatableMixin, GeometryUserObject):
"""Introduces a triangular patch or a triangular prism with specific """Introduces a triangular patch or a triangular prism with specific
properties into the model. properties into the model.

查看文件

@@ -49,7 +49,7 @@ from gprMax.user_objects.cmds_geometry.cmds_geometry import (
rotate_2point_object, rotate_2point_object,
rotate_polarisation, rotate_polarisation,
) )
from gprMax.user_objects.rotatable import Rotatable from gprMax.user_objects.rotatable import RotatableMixin
from gprMax.user_objects.user_objects import GridUserObject from gprMax.user_objects.user_objects import GridUserObject
from gprMax.utilities.utilities import round_value from gprMax.utilities.utilities import round_value
from gprMax.waveforms import Waveform as WaveformUser from gprMax.waveforms import Waveform as WaveformUser
@@ -291,7 +291,7 @@ class Waveform(GridUserObject):
grid.waveforms.append(w) grid.waveforms.append(w)
class VoltageSource(GridUserObject, Rotatable): class VoltageSource(RotatableMixin, GridUserObject):
"""Specifies a voltage source at an electric field location. """Specifies a voltage source at an electric field location.
Attributes: Attributes:
@@ -435,7 +435,7 @@ class VoltageSource(GridUserObject, Rotatable):
grid.voltagesources.append(v) grid.voltagesources.append(v)
class HertzianDipole(GridUserObject, Rotatable): class HertzianDipole(RotatableMixin, GridUserObject):
"""Specifies a current density term at an electric field location. """Specifies a current density term at an electric field location.
The simplest excitation, often referred to as an additive or soft source. The simplest excitation, often referred to as an additive or soft source.
@@ -582,7 +582,7 @@ class HertzianDipole(GridUserObject, Rotatable):
grid.hertziandipoles.append(h) grid.hertziandipoles.append(h)
class MagneticDipole(GridUserObject, Rotatable): class MagneticDipole(RotatableMixin, GridUserObject):
"""Simulates an infinitesimal magnetic dipole. """Simulates an infinitesimal magnetic dipole.
Often referred to as an additive or soft source. Often referred to as an additive or soft source.
@@ -720,7 +720,7 @@ class MagneticDipole(GridUserObject, Rotatable):
grid.magneticdipoles.append(m) grid.magneticdipoles.append(m)
class TransmissionLine(GridUserObject, Rotatable): class TransmissionLine(RotatableMixin, GridUserObject):
"""Specifies a one-dimensional transmission line model at an electric """Specifies a one-dimensional transmission line model at an electric
field location. field location.
@@ -879,7 +879,7 @@ class TransmissionLine(GridUserObject, Rotatable):
grid.transmissionlines.append(t) grid.transmissionlines.append(t)
class Rx(GridUserObject, Rotatable): class Rx(RotatableMixin, GridUserObject):
"""Specifies output points in the model. """Specifies output points in the model.
These are locations where the values of the electric and magnetic field These are locations where the values of the electric and magnetic field

查看文件

@@ -4,7 +4,7 @@ from typing import Optional, Tuple
from gprMax.grid.fdtd_grid import FDTDGrid from gprMax.grid.fdtd_grid import FDTDGrid
class Rotatable(ABC): class RotatableMixin(ABC):
"""Stores parameters and defines an interface for rotatable objects. """Stores parameters and defines an interface for rotatable objects.
Attributes: Attributes:
@@ -18,7 +18,8 @@ class Rotatable(ABC):
otherwise. Default False. otherwise. Default False.
""" """
def __init__(self): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) # Forward all unused arguments
self.axis = "x" self.axis = "x"
self.angle = 0 self.angle = 0
self.origin = None self.origin = None