文件
gprMax/reframe_tests/tests/test_geometry.py
2025-02-13 10:52:07 +00:00

171 行
5.5 KiB
Python

import reframe as rfm
from reframe.core.builtins import parameter, run_before
from reframe_tests.tests.mixins import AntennaModelMixin, MpiMixin
from reframe_tests.tests.standard_tests import GprMaxRegressionTest
"""Reframe regression tests for models defining geometry
"""
@rfm.simple_test
class TestBoxGeometryDefaultPml(GprMaxRegressionTest):
tags = {"test", "serial", "geometery", "box"}
sourcesdir = "src/geometry_tests/box_geometry"
model = parameter(
[
"box_full_model",
"box_half_model",
"box_single_rank",
"box_outside_pml",
"box_single_rank_outside_pml",
]
)
@rfm.simple_test
class TestBoxGeometryNoPml(GprMaxRegressionTest):
tags = {"test", "serial", "geometery", "box"}
sourcesdir = "src/geometry_tests/box_geometry"
model = parameter(["box_full_model", "box_half_model", "box_single_rank"])
@run_before("run")
def add_gprmax_commands(self):
self.prerun_cmds.append(f"echo '#pml_cells: 0' >> {self.input_file}")
@rfm.simple_test
class TestConeGeometry(GprMaxRegressionTest):
tags = {"test", "serial", "geometery", "cone"}
sourcesdir = "src/geometry_tests/cone_geometry"
model = parameter(
["full_cone", "small_cone", "non_axis_aligned_cone", "overtall_cone", "rigid_cone"]
)
@rfm.simple_test
class TestCylinderGeometry(GprMaxRegressionTest):
tags = {"test", "serial", "geometery", "cylinder"}
sourcesdir = "src/geometry_tests/cylinder_geometry"
model = parameter(
[
"cylinder_full",
"cylinder_small",
"cylinder_non_axis_aligned",
"cylinder_overtall",
"cylinder_rigid",
]
)
@rfm.simple_test
class TestCylindricalSectorGeometry(GprMaxRegressionTest):
tags = {"test", "serial", "geometery", "cylindrical", "sector", "cylindrical_sector"}
sourcesdir = "src/geometry_tests/cylindrical_sector_geometry"
model = parameter(
[
"cylindrical_sector_x_full",
"cylindrical_sector_y_small",
"cylindrical_sector_z_outside_boundary",
"cylindrical_sector_z_rigid",
]
)
@rfm.simple_test
class TestEllipsoidGeometry(GprMaxRegressionTest):
tags = {"test", "serial", "geometery", "ellipsoid"}
sourcesdir = "src/geometry_tests/ellipsoid_geometry"
model = parameter(
["ellipsoid_full", "ellipsoid_small", "ellipsoid_outside_boundary", "ellipsoid_rigid"]
)
# TODO: Add Mixin class to enable testing that invalid geometry throws an error
@rfm.simple_test
class TestPlateGeometry(GprMaxRegressionTest):
tags = {"test", "serial", "geometery", "plate"}
sourcesdir = "src/geometry_tests/plate_geometry"
model = parameter(["plate_x_full", "plate_z_full", "plate_y_small"])
@rfm.simple_test
class TestSphereGeometry(GprMaxRegressionTest):
tags = {"test", "serial", "geometery", "sphere"}
sourcesdir = "src/geometry_tests/sphere_geometry"
model = parameter(["sphere_full", "sphere_small", "sphere_outside_boundary", "sphere_rigid"])
@rfm.simple_test
class TestEdgeGeometry(AntennaModelMixin, GprMaxRegressionTest):
tags = {"test", "serial", "geometry", "edge", "transmission_line", "waveform", "antenna"}
sourcesdir = "src/geometry_tests/edge_geometry"
model = parameter(["antenna_wire_dipole_fs"])
"""Test MPI Functionality
"""
@rfm.simple_test
class TestBoxGeometryDefaultPmlMpi(MpiMixin, TestBoxGeometryDefaultPml):
tags = {"test", "mpi", "geometery", "box"}
mpi_layout = parameter([[2, 2, 2], [3, 3, 3], [4, 4, 4]])
test_dependency = TestBoxGeometryDefaultPml
@rfm.simple_test
class TestBoxGeometryNoPmlMpi(MpiMixin, TestBoxGeometryNoPml):
tags = {"test", "mpi", "geometery", "box"}
mpi_layout = parameter([[2, 2, 2], [3, 3, 3], [4, 4, 4]])
test_dependency = TestBoxGeometryNoPml
@rfm.simple_test
class TestConeGeometryMpi(MpiMixin, TestConeGeometry):
tags = {"test", "mpi", "geometery", "cone"}
mpi_layout = parameter([[2, 2, 2], [3, 3, 3], [4, 4, 4]])
test_dependency = TestConeGeometry
@rfm.simple_test
class TestCylindricalSectorGeometryMpi(MpiMixin, TestCylindricalSectorGeometry):
tags = {"test", "mpi", "geometery", "cylinder"}
mpi_layout = parameter([[2, 2, 2], [3, 3, 3], [4, 4, 4]])
test_dependency = TestCylindricalSectorGeometry
@rfm.simple_test
class TestCylinderGeometryMpi(MpiMixin, TestCylinderGeometry):
tags = {"test", "mpi", "geometery", "cylindrical", "sector", "cylindrical_sector"}
mpi_layout = parameter([[2, 2, 2], [3, 3, 3], [4, 4, 4]])
test_dependency = TestCylinderGeometry
@rfm.simple_test
class TestEllipsoidGeometryMpi(MpiMixin, TestEllipsoidGeometry):
tags = {"test", "mpi", "geometery", "ellipsoid"}
mpi_layout = parameter([[2, 2, 2], [3, 3, 3], [4, 4, 4]])
test_dependency = TestEllipsoidGeometry
@rfm.simple_test
class TestPlateGeometryMpi(MpiMixin, TestPlateGeometry):
tags = {"test", "mpi", "geometery", "plate"}
mpi_layout = parameter([[2, 2, 2], [3, 3, 3], [4, 4, 4]])
test_dependency = TestPlateGeometry
@rfm.simple_test
class TestSphereGeometryMpi(MpiMixin, TestSphereGeometry):
tags = {"test", "mpi", "geometery", "sphere"}
mpi_layout = parameter([[2, 2, 2], [3, 3, 3], [4, 4, 4]])
test_dependency = TestSphereGeometry
@rfm.simple_test
class TestEdgeGeometryMpi(MpiMixin, TestEdgeGeometry):
tags = {"test", "mpi", "geometry", "edge", "transmission_line", "waveform", "antenna"}
mpi_layout = parameter([[3, 3, 3]])
test_dependency = TestEdgeGeometry