你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-07 15:10:13 +08:00
Update reading geometry objects for parallel build
这个提交包含在:
@@ -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
|
||||
|
在新工单中引用
屏蔽一个用户