From e8205cd85ff0b821cacbc9e2b424bdc52dfd2890 Mon Sep 17 00:00:00 2001 From: nmannall Date: Wed, 4 Dec 2024 12:06:33 +0000 Subject: [PATCH] Add geometry view reframe tests --- .gitattributes | 3 ++ .../full_volume.vtkhdf | 3 ++ .../partial_volume.vtkhdf | 3 ++ .../full_volume.vtkhdf | 3 ++ .../partial_volume.vtkhdf | Bin 0 -> 268444 bytes reframe_tests/tests/base_tests.py | 5 +- reframe_tests/tests/mixins.py | 45 ++++++++++++++++++ reframe_tests/tests/regression_checks.py | 15 +++++- .../geometry_view_tests/geometry_view_fine.in | 17 +++++++ .../geometry_view_voxel.in | 17 +++++++ reframe_tests/tests/standard_tests.py | 11 ++++- reframe_tests/tests/test_geometry_views.py | 20 ++++++++ 12 files changed, 138 insertions(+), 4 deletions(-) create mode 100644 reframe_tests/regression_checks/TestGeometryView_5176823e/full_volume.vtkhdf create mode 100644 reframe_tests/regression_checks/TestGeometryView_5176823e/partial_volume.vtkhdf create mode 100644 reframe_tests/regression_checks/TestGeometryView_77980202/full_volume.vtkhdf create mode 100644 reframe_tests/regression_checks/TestGeometryView_77980202/partial_volume.vtkhdf create mode 100644 reframe_tests/tests/src/geometry_view_tests/geometry_view_fine.in create mode 100644 reframe_tests/tests/src/geometry_view_tests/geometry_view_voxel.in create mode 100644 reframe_tests/tests/test_geometry_views.py diff --git a/.gitattributes b/.gitattributes index c8fd44ec..73f2c564 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,4 @@ tools/Jupyter_notebooks/* linguist-vendored +reframe_tests/regression_checks/TestGeometryView_5176823e/partial_volume.vtkhdf filter=lfs diff=lfs merge=lfs -text +reframe_tests/regression_checks/TestGeometryView_5176823e/full_volume.vtkhdf filter=lfs diff=lfs merge=lfs -text +reframe_tests/regression_checks/TestGeometryView_77980202/full_volume.vtkhdf filter=lfs diff=lfs merge=lfs -text diff --git a/reframe_tests/regression_checks/TestGeometryView_5176823e/full_volume.vtkhdf b/reframe_tests/regression_checks/TestGeometryView_5176823e/full_volume.vtkhdf new file mode 100644 index 00000000..2e04533f --- /dev/null +++ b/reframe_tests/regression_checks/TestGeometryView_5176823e/full_volume.vtkhdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a8134fca3e6228211e4a4bc3e504e64f888c55f22e025b482ec501e0051d253 +size 75740296 diff --git a/reframe_tests/regression_checks/TestGeometryView_5176823e/partial_volume.vtkhdf b/reframe_tests/regression_checks/TestGeometryView_5176823e/partial_volume.vtkhdf new file mode 100644 index 00000000..a7986519 --- /dev/null +++ b/reframe_tests/regression_checks/TestGeometryView_5176823e/partial_volume.vtkhdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ccd95ff4ef73c224c99a8c321ad6f8014c673a1b33bbb741bff415dfbffd0aa +size 4931176 diff --git a/reframe_tests/regression_checks/TestGeometryView_77980202/full_volume.vtkhdf b/reframe_tests/regression_checks/TestGeometryView_77980202/full_volume.vtkhdf new file mode 100644 index 00000000..8472bcc7 --- /dev/null +++ b/reframe_tests/regression_checks/TestGeometryView_77980202/full_volume.vtkhdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82b8ac914a9fe20b49f2512215782f01305a2e3211aaac51913f88296a0e3ac5 +size 4012444 diff --git a/reframe_tests/regression_checks/TestGeometryView_77980202/partial_volume.vtkhdf b/reframe_tests/regression_checks/TestGeometryView_77980202/partial_volume.vtkhdf new file mode 100644 index 0000000000000000000000000000000000000000..43d5f5b042bc64ebd57fed841f3a558b96954093 GIT binary patch literal 268444 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 literal 0 HcmV?d00001 diff --git a/reframe_tests/tests/base_tests.py b/reframe_tests/tests/base_tests.py index 7b02648e..d4551cee 100644 --- a/reframe_tests/tests/base_tests.py +++ b/reframe_tests/tests/base_tests.py @@ -182,7 +182,7 @@ class GprMaxBaseTest(RunOnlyRegressionTest): else: return self.getdep(variant) - def build_reference_filepath(self, name: Union[str, os.PathLike]) -> Path: + def build_reference_filepath(self, name: Union[str, os.PathLike], suffix: str = ".h5") -> Path: """Build path to the specified reference file. Reference files are saved in directories per test case. If this @@ -192,6 +192,7 @@ class GprMaxBaseTest(RunOnlyRegressionTest): Args: name: Name of the file. + suffix: File extension. Default ".h5". Returns: filepath: Absolute path to the reference file. @@ -202,7 +203,7 @@ class GprMaxBaseTest(RunOnlyRegressionTest): else: reference_dir = target.short_name - reference_file = Path("regression_checks", reference_dir, name).with_suffix(".h5") + reference_file = Path("regression_checks", reference_dir, name).with_suffix(suffix) return reference_file.absolute() # TODO: Change CreatePyenvTest to a fixture instead of a test dependency diff --git a/reframe_tests/tests/mixins.py b/reframe_tests/tests/mixins.py index e1b893b3..2bd1a04f 100644 --- a/reframe_tests/tests/mixins.py +++ b/reframe_tests/tests/mixins.py @@ -9,6 +9,7 @@ from typing_extensions import TYPE_CHECKING from reframe_tests.tests.base_tests import GprMaxBaseTest from reframe_tests.tests.regression_checks import ( + GeometryViewRegressionCheck, ReceiverRegressionCheck, RegressionCheck, SnapshotRegressionCheck, @@ -77,6 +78,50 @@ class SnapshotMixin(GprMaxMixin): self.regression_checks.append(regression_check) +class GeometryOnlyMixin(GprMaxMixin): + """Run test with geometry only flag""" + + @run_after("setup") + def add_geometry_only_flag(self): + self.executable_opts += ["--geometry-only"] + + +class GeometryViewMixin(GprMaxMixin): + """Add regression tests for geometry views. + + Attributes: + geometry_views (list[str]): List of geometry views to run + regression checks on. + """ + + geometry_views = variable(typ.List[str], value=[]) + + def build_geometry_view_filepath(self, geometry_view: str) -> Path: + """Build filepath to the specified geometry view. + + Args: + geometry_view: Name of the geometry view. + """ + return Path(geometry_view).with_suffix(".vtkhdf") + + @run_after("setup") + def add_geometry_view_regression_checks(self): + """Add a regression check for each geometry view. + + The test will be skipped if no geometry views have been specified. + """ + self.skip_if( + len(self.geometry_views) < 0, + f"Must provide a list of geometry views.", + ) + + for geometry_view in self.geometry_views: + geometry_view_file = self.build_geometry_view_filepath(geometry_view) + reference_file = self.build_reference_filepath(geometry_view, ".vtkhdf") + regression_check = GeometryViewRegressionCheck(geometry_view_file, reference_file) + self.regression_checks.append(regression_check) + + class PythonApiMixin(GprMaxMixin): """Use the GprMax Python API rather than a standard input file.""" diff --git a/reframe_tests/tests/regression_checks.py b/reframe_tests/tests/regression_checks.py index 51e1cdc9..e6adcf7d 100644 --- a/reframe_tests/tests/regression_checks.py +++ b/reframe_tests/tests/regression_checks.py @@ -74,7 +74,12 @@ class RegressionCheck: h5diff = "h5diff" h5diff_output = osext.run_command( - [h5diff, *self.h5diff_options, str(self.output_file), str(self.reference_file)] + [ + h5diff, + *self.h5diff_options, + str(self.output_file.absolute()), + str(self.reference_file), + ] ) return sn.assert_true( @@ -135,3 +140,11 @@ class SnapshotRegressionCheck(RegressionCheck): @property def error_msg(self) -> str: return f"Snapshot '{self.output_file.name}' failed regression check " + + +class GeometryViewRegressionCheck(RegressionCheck): + """Run regression check on a GprMax GeometryView.""" + + @property + def error_msg(self) -> str: + return f"GeometryView '{self.output_file.name}' failed regression check " diff --git a/reframe_tests/tests/src/geometry_view_tests/geometry_view_fine.in b/reframe_tests/tests/src/geometry_view_tests/geometry_view_fine.in new file mode 100644 index 00000000..d6709644 --- /dev/null +++ b/reframe_tests/tests/src/geometry_view_tests/geometry_view_fine.in @@ -0,0 +1,17 @@ +#title: Hertzian dipole in free-space +#domain: 0.100 0.100 0.100 +#dx_dy_dz: 0.001 0.001 0.001 +#time_window: 3e-9 + +#waveform: gaussiandot 1 1e9 myWave +#hertzian_dipole: z 0.050 0.050 0.050 myWave + +#material: 4.9 0 1 0 myWater +#material: 2 0 1.4 0 unusedMaterial +#material: 3 0 2 0 boxMaterial + +#sphere: 0.05 0.05 0.05 0.03 myWater y +#box: 0.01 0.01 0.01 0.09 0.025 0.025 boxMaterial y + +#geometry_view: 0.02 0.02 0.02 0.06 0.06 0.06 0.001 0.001 0.001 partial_volume f +#geometry_view: 0 0 0 0.1 0.1 0.1 0.001 0.001 0.001 full_volume f diff --git a/reframe_tests/tests/src/geometry_view_tests/geometry_view_voxel.in b/reframe_tests/tests/src/geometry_view_tests/geometry_view_voxel.in new file mode 100644 index 00000000..64596d82 --- /dev/null +++ b/reframe_tests/tests/src/geometry_view_tests/geometry_view_voxel.in @@ -0,0 +1,17 @@ +#title: Hertzian dipole in free-space +#domain: 0.100 0.100 0.100 +#dx_dy_dz: 0.001 0.001 0.001 +#time_window: 3e-9 + +#waveform: gaussiandot 1 1e9 myWave +#hertzian_dipole: z 0.050 0.050 0.050 myWave + +#material: 4.9 0 1 0 myWater +#material: 2 0 1.4 0 unusedMaterial +#material: 3 0 2 0 boxMaterial + +#sphere: 0.05 0.05 0.05 0.03 myWater y +#box: 0.01 0.01 0.01 0.09 0.025 0.025 boxMaterial y + +#geometry_view: 0.02 0.02 0.02 0.06 0.06 0.06 0.001 0.001 0.001 partial_volume n +#geometry_view: 0 0 0 0.1 0.1 0.1 0.001 0.001 0.001 full_volume n diff --git a/reframe_tests/tests/standard_tests.py b/reframe_tests/tests/standard_tests.py index 98f23c06..9f268cb2 100644 --- a/reframe_tests/tests/standard_tests.py +++ b/reframe_tests/tests/standard_tests.py @@ -1,5 +1,10 @@ from reframe_tests.tests.base_tests import GprMaxBaseTest -from reframe_tests.tests.mixins import ReceiverMixin, SnapshotMixin +from reframe_tests.tests.mixins import ( + GeometryOnlyMixin, + GeometryViewMixin, + ReceiverMixin, + SnapshotMixin, +) class GprMaxRegressionTest(ReceiverMixin, GprMaxBaseTest): @@ -8,3 +13,7 @@ class GprMaxRegressionTest(ReceiverMixin, GprMaxBaseTest): class GprMaxSnapshotTest(SnapshotMixin, GprMaxBaseTest): pass + + +class GprMaxGeometryViewTest(GeometryViewMixin, GeometryOnlyMixin, GprMaxBaseTest): + pass diff --git a/reframe_tests/tests/test_geometry_views.py b/reframe_tests/tests/test_geometry_views.py new file mode 100644 index 00000000..8f4091d5 --- /dev/null +++ b/reframe_tests/tests/test_geometry_views.py @@ -0,0 +1,20 @@ +import reframe as rfm +from reframe.core.builtins import parameter + +from reframe_tests.tests.mixins import MpiMixin +from reframe_tests.tests.standard_tests import GprMaxGeometryViewTest + + +@rfm.simple_test +class TestGeometryView(GprMaxGeometryViewTest): + tags = {"test", "serial", "geometry only", "geometry view"} + sourcesdir = "src/geometry_view_tests" + model = parameter(["geometry_view_voxel", "geometry_view_fine"]) + geometry_views = ["partial_volume", "full_volume"] + + +@rfm.simple_test +class TestGeometryViewMPI(MpiMixin, TestGeometryView): + tags = {"test", "mpi", "geometry only", "geometry view"} + mpi_layout = parameter([[2, 2, 2], [4, 4, 1]]) + test_dependency = TestGeometryView