Update reading geometry objects for parallel build

这个提交包含在:
Nathan Mannall
2025-05-23 17:19:47 +01:00
父节点 fbb73eb4ae
当前提交 8e4f156595
共有 7 个文件被更改,包括 587 次插入106 次删除

查看文件

@@ -8,5 +8,5 @@
#rx: 0.08 0.08 0.08
#geometry_objects_read: 0.05 0.05 0.05 partial_volume_read.h5 partial_volume_read_materials.txt
#geometry_objects_read: 0.03 0.03 0.03 full_volume_read.h5 full_volume_read_materials.txt
#geometry_objects_write: 0.05 0.05 0.05 0.09 0.09 0.09 partial_volume

查看文件

@@ -0,0 +1,13 @@
#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
#rx: 0.08 0.08 0.08
#geometry_objects_read: 0 0 0 full_volume_read.h5 full_volume_read_materials.txt
#geometry_objects_write: 0.02 0.02 0.02 0.06 0.06 0.06 partial_volume
#geometry_objects_write: 0 0 0 0.1 0.1 0.1 full_volume

查看文件

@@ -1,3 +1,7 @@
from pathlib import Path
from reframe.core.builtins import run_before
from reframe_tests.tests.base_tests import GprMaxBaseTest
from reframe_tests.tests.mixins import (
GeometryObjectsReadMixin,
@@ -7,6 +11,7 @@ from reframe_tests.tests.mixins import (
ReceiverMixin,
SnapshotMixin,
)
from reframe_tests.tests.regression_checks import GeometryObjectMaterialsRegressionCheck
class GprMaxRegressionTest(ReceiverMixin, GprMaxBaseTest):
@@ -32,7 +37,23 @@ class GprMaxGeometryObjectsReadTest(GeometryObjectsReadMixin, GprMaxBaseTest):
class GprMaxGeometryObjectsReadWriteTest(
GeometryObjectsReadMixin, GeometryObjectsWriteMixin, GprMaxBaseTest
):
pass
@run_before("sanity")
def update_material_files(self):
checks = [
check
for check in self.regression_checks
if isinstance(check, GeometryObjectMaterialsRegressionCheck)
]
for check in checks:
for geometry_object in self.geometry_objects_read.values():
material_file = Path(self.stagedir, check.output_file)
with open(material_file, "r") as f:
lines = f.readlines()
with open(material_file, "w") as f:
for line in lines:
new_line = line.replace(f"{{{geometry_object}_materials}}", "")
f.write(new_line)
class GprMaxGeometryTest(GeometryObjectsWriteMixin, ReceiverMixin, GprMaxBaseTest):

查看文件

@@ -30,7 +30,6 @@ class TestGeometryObjectReadFullVolume(ReceiverMixin, GprMaxGeometryObjectsReadT
sourcesdir = "src/geometry_object_tests"
model = parameter(["geometry_object_read_full_volume"])
geometry_objects_read = {"full_volume": "full_volume_read"}
geometry_objects_write = ["full_volume"]
test_dependency = TestGeometryObject
@@ -45,9 +44,11 @@ class TestGeometryObjectReadFullVolumeMPI(MpiMixin, TestGeometryObjectReadFullVo
class TestGeometryObjectReadWrite(GeometryOnlyMixin, GprMaxGeometryObjectsReadWriteTest):
tags = {"test", "serial", "geometry only", "geometry object"}
sourcesdir = "src/geometry_object_tests"
model = parameter(["geometry_object_read_write_partial_volume"])
geometry_objects_read = {"partial_volume": "partial_volume_read"}
geometry_objects_write = ["partial_volume"]
model = parameter(["geometry_object_read_write"])
geometry_objects_read = {
"full_volume": "full_volume_read",
}
geometry_objects_write = ["partial_volume", "full_volume"]
test_dependency = TestGeometryObject
@@ -56,3 +57,24 @@ class TestGeometryObjectReadWriteMPI(MpiMixin, TestGeometryObjectReadWrite):
tags = {"test", "mpi", "geometry only", "geometry object"}
mpi_layout = parameter([[2, 2, 2], [4, 4, 1]])
test_dependency = TestGeometryObject
# TODO: This test fails in the serial implementation due to the geometry
# object being positioned such that it overflows the grid
# @rfm.simple_test
class TestGeometryObjectMove(GeometryOnlyMixin, GprMaxGeometryObjectsReadWriteTest):
tags = {"test", "serial", "geometry only", "geometry object"}
sourcesdir = "src/geometry_object_tests"
model = parameter(["geometry_object_move"])
geometry_objects_read = {
"full_volume": "full_volume_read",
}
geometry_objects_write = ["partial_volume"]
test_dependency = TestGeometryObject
@rfm.simple_test
class TestGeometryObjectMoveMPI(MpiMixin, TestGeometryObjectMove):
tags = {"test", "mpi", "geometry only", "geometry object"}
mpi_layout = parameter([[2, 2, 2], [4, 3, 1]])
test_dependency = TestGeometryObject