你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-04 11:36:52 +08:00
Fix bug when fractal surfaces at an MPI boundary
- Add a new test that better tests this scenario
这个提交包含在:
@@ -217,10 +217,10 @@ class MPIFractalSurface(FractalSurface):
|
||||
|
||||
# Exit early if this rank does not contain the Fractal Surface
|
||||
if (
|
||||
any(self.stop[dims] < 0)
|
||||
or any(self.start[dims] > self.upper_bound[dims])
|
||||
or self.fractalrange[1] < 0
|
||||
or self.fractalrange[0] > self.upper_bound[static_dimension]
|
||||
any(self.stop[dims] <= 0)
|
||||
or any(self.start[dims] >= self.upper_bound[dims])
|
||||
or self.fractalrange[1] <= 0
|
||||
or self.fractalrange[0] >= self.upper_bound[static_dimension]
|
||||
):
|
||||
self.comm.Split(MPI.UNDEFINED)
|
||||
# Update start and stop to local bounds
|
||||
@@ -336,7 +336,7 @@ class MPIFractalSurface(FractalSurface):
|
||||
|
||||
# Negative means send to negative neighbour
|
||||
# Positive means receive from negative neighbour
|
||||
negative_offset = np.where(self.start[dims] >= 0, 0, self.start[dims] + A_substart)
|
||||
negative_offset = np.where(self.start[dims] >= 0, A_substart, self.start[dims] + A_substart)
|
||||
|
||||
# Negative means send to positive neighbour
|
||||
# Positive means receive from positive neighbour
|
||||
|
二进制文件未显示。
@@ -0,0 +1,99 @@
|
||||
#material: 1 0 1 0 free_space
|
||||
#material: 10.1009 0.0737926 1 0 |10.1009+0.0738+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 7.57011 8.0994e-12 |10.1009+0.0738+1.0000+0.0000|
|
||||
#material: 10.224 0.0745944 1 0 |10.2240+0.0746+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 7.83158 8.0994e-12 |10.2240+0.0746+1.0000+0.0000|
|
||||
#material: 10.3465 0.0753865 1 0 |10.3465+0.0754+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 8.09586 8.0994e-12 |10.3465+0.0754+1.0000+0.0000|
|
||||
#material: 10.4684 0.0761693 1 0 |10.4684+0.0762+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 8.36291 8.0994e-12 |10.4684+0.0762+1.0000+0.0000|
|
||||
#material: 10.5897 0.0769429 1 0 |10.5897+0.0769+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 8.6327 8.0994e-12 |10.5897+0.0769+1.0000+0.0000|
|
||||
#material: 10.7105 0.0777078 1 0 |10.7105+0.0777+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 8.9052 8.0994e-12 |10.7105+0.0777+1.0000+0.0000|
|
||||
#material: 10.8308 0.0784642 1 0 |10.8308+0.0785+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 9.18039 8.0994e-12 |10.8308+0.0785+1.0000+0.0000|
|
||||
#material: 10.9505 0.0792123 1 0 |10.9505+0.0792+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 9.45822 8.0994e-12 |10.9505+0.0792+1.0000+0.0000|
|
||||
#material: 3.67252 0.0108321 1 0 |3.6725+0.0108+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 0.0182374 8.0994e-12 |3.6725+0.0108+1.0000+0.0000|
|
||||
#material: 4.1448 0.0203355 1 0 |4.1448+0.0203+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 0.131947 8.0994e-12 |4.1448+0.0203+1.0000+0.0000|
|
||||
#material: 4.35657 0.0235572 1 0 |4.3566+0.0236+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 0.209447 8.0994e-12 |4.3566+0.0236+1.0000+0.0000|
|
||||
#material: 4.55835 0.0263403 1 0 |4.5583+0.0263+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 0.297473 8.0994e-12 |4.5583+0.0263+1.0000+0.0000|
|
||||
#material: 4.75224 0.0288223 1 0 |4.7522+0.0288+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 0.394747 8.0994e-12 |4.7522+0.0288+1.0000+0.0000|
|
||||
#material: 4.93963 0.0310813 1 0 |4.9396+0.0311+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 0.500357 8.0994e-12 |4.9396+0.0311+1.0000+0.0000|
|
||||
#material: 5.1215 0.0331667 1 0 |5.1215+0.0332+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 0.61361 8.0994e-12 |5.1215+0.0332+1.0000+0.0000|
|
||||
#material: 5.2986 0.0351122 1 0 |5.2986+0.0351+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 0.733958 8.0994e-12 |5.2986+0.0351+1.0000+0.0000|
|
||||
#material: 5.4715 0.0369417 1 0 |5.4715+0.0369+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 0.860952 8.0994e-12 |5.4715+0.0369+1.0000+0.0000|
|
||||
#material: 5.64067 0.0386732 1 0 |5.6407+0.0387+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 0.994215 8.0994e-12 |5.6407+0.0387+1.0000+0.0000|
|
||||
#material: 5.80649 0.0403204 1 0 |5.8065+0.0403+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 1.13343 8.0994e-12 |5.8065+0.0403+1.0000+0.0000|
|
||||
#material: 5.96926 0.0418941 1 0 |5.9693+0.0419+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 1.27831 8.0994e-12 |5.9693+0.0419+1.0000+0.0000|
|
||||
#material: 6.12926 0.043403 1 0 |6.1293+0.0434+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 1.42863 8.0994e-12 |6.1293+0.0434+1.0000+0.0000|
|
||||
#material: 6.28671 0.0448543 1 0 |6.2867+0.0449+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 1.58416 8.0994e-12 |6.2867+0.0449+1.0000+0.0000|
|
||||
#material: 6.44181 0.0462539 1 0 |6.4418+0.0463+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 1.74471 8.0994e-12 |6.4418+0.0463+1.0000+0.0000|
|
||||
#material: 6.59474 0.0476066 1 0 |6.5947+0.0476+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 1.91011 8.0994e-12 |6.5947+0.0476+1.0000+0.0000|
|
||||
#material: 6.74564 0.0489169 1 0 |6.7456+0.0489+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 2.0802 8.0994e-12 |6.7456+0.0489+1.0000+0.0000|
|
||||
#material: 6.89465 0.0501882 1 0 |6.8946+0.0502+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 2.25484 8.0994e-12 |6.8946+0.0502+1.0000+0.0000|
|
||||
#material: 7.04188 0.0514238 1 0 |7.0419+0.0514+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 2.4339 8.0994e-12 |7.0419+0.0514+1.0000+0.0000|
|
||||
#material: 7.18745 0.0526264 1 0 |7.1875+0.0526+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 2.61725 8.0994e-12 |7.1875+0.0526+1.0000+0.0000|
|
||||
#material: 7.33146 0.0537984 1 0 |7.3315+0.0538+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 2.80478 8.0994e-12 |7.3315+0.0538+1.0000+0.0000|
|
||||
#material: 7.47398 0.0549419 1 0 |7.4740+0.0549+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 2.99639 8.0994e-12 |7.4740+0.0549+1.0000+0.0000|
|
||||
#material: 7.61511 0.0560589 1 0 |7.6151+0.0561+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 3.19199 8.0994e-12 |7.6151+0.0561+1.0000+0.0000|
|
||||
#material: 7.7549 0.0571511 1 0 |7.7549+0.0572+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 3.39148 8.0994e-12 |7.7549+0.0572+1.0000+0.0000|
|
||||
#material: 7.89344 0.0582199 1 0 |7.8934+0.0582+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 3.59477 8.0994e-12 |7.8934+0.0582+1.0000+0.0000|
|
||||
#material: 8.03078 0.0592667 1 0 |8.0308+0.0593+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 3.8018 8.0994e-12 |8.0308+0.0593+1.0000+0.0000|
|
||||
#material: 8.16697 0.0602929 1 0 |8.1670+0.0603+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 4.01247 8.0994e-12 |8.1670+0.0603+1.0000+0.0000|
|
||||
#material: 8.30207 0.0612995 1 0 |8.3021+0.0613+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 4.22673 8.0994e-12 |8.3021+0.0613+1.0000+0.0000|
|
||||
#material: 8.43613 0.0622875 1 0 |8.4361+0.0623+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 4.4445 8.0994e-12 |8.4361+0.0623+1.0000+0.0000|
|
||||
#material: 8.5692 0.063258 1 0 |8.5692+0.0633+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 4.66572 8.0994e-12 |8.5692+0.0633+1.0000+0.0000|
|
||||
#material: 8.7013 0.0642118 1 0 |8.7013+0.0642+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 4.89034 8.0994e-12 |8.7013+0.0642+1.0000+0.0000|
|
||||
#material: 8.83249 0.0651496 1 0 |8.8325+0.0651+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 5.11828 8.0994e-12 |8.8325+0.0651+1.0000+0.0000|
|
||||
#material: 8.9628 0.0660723 1 0 |8.9628+0.0661+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 5.3495 8.0994e-12 |8.9628+0.0661+1.0000+0.0000|
|
||||
#material: 9.09226 0.0669805 1 0 |9.0923+0.0670+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 5.58395 8.0994e-12 |9.0923+0.0670+1.0000+0.0000|
|
||||
#material: 9.22091 0.0678749 1 0 |9.2209+0.0679+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 5.82158 8.0994e-12 |9.2209+0.0679+1.0000+0.0000|
|
||||
#material: 9.34877 0.068756 1 0 |9.3488+0.0688+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 6.06233 8.0994e-12 |9.3488+0.0688+1.0000+0.0000|
|
||||
#material: 9.47588 0.0696244 1 0 |9.4759+0.0696+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 6.30617 8.0994e-12 |9.4759+0.0696+1.0000+0.0000|
|
||||
#material: 9.60226 0.0704806 1 0 |9.6023+0.0705+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 6.55304 8.0994e-12 |9.6023+0.0705+1.0000+0.0000|
|
||||
#material: 9.72793 0.0713251 1 0 |9.7279+0.0713+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 6.80292 8.0994e-12 |9.7279+0.0713+1.0000+0.0000|
|
||||
#material: 9.85292 0.0721583 1 0 |9.8529+0.0722+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 7.05574 8.0994e-12 |9.8529+0.0722+1.0000+0.0000|
|
||||
#material: 9.97725 0.0729807 1 0 |9.9772+0.0730+1.0000+0.0000|
|
||||
#add_dispersion_debye: 1 7.31149 8.0994e-12 |9.9772+0.0730+1.0000+0.0000|
|
@@ -0,0 +1,19 @@
|
||||
#title: Heterogeneous soil using a stochastic distribution of dielectric properties given by a mixing model from Peplinski
|
||||
#domain: 0.100 0.100 0.100
|
||||
#dx_dy_dz: 0.001 0.001 0.001
|
||||
#time_window: 3e-9
|
||||
|
||||
#waveform: ricker 1 1.5e9 my_ricker
|
||||
#hertzian_dipole: y 0.02 0.02 0.02 my_ricker
|
||||
#rx: 0.080 0.080 0.080
|
||||
|
||||
#soil_peplinski: 0.5 0.5 2.0 2.66 0.001 0.25 my_soil
|
||||
|
||||
#fractal_box: 0 0 0 0.049 0.05 0.051 1.5 1 1 1 50 my_soil box_1 42
|
||||
#fractal_box: 0.049 0.05 0.051 0.1 0.1 0.1 1.5 1 1 1 50 my_soil box_2 22
|
||||
|
||||
#add_surface_roughness: 0.049 0 0 0.049 0.05 0.05 1 1 1 0.025 0.05 box_1 43
|
||||
#add_surface_roughness: 0.049 0.05 0.051 0.049 0.1 0.1 1 1 1 0.049 0.074 box_2 23
|
||||
|
||||
|
||||
#geometry_objects_write: 0 0 0 0.1 0.1 0.1 full_volume
|
@@ -25,6 +25,7 @@ class TestAddSurfaceRoughness(GprMaxGeometryTest):
|
||||
"add_surface_roughness_half",
|
||||
"add_surface_roughness_small",
|
||||
"add_surface_roughness_weighted",
|
||||
"add_surface_roughness_boundaries",
|
||||
]
|
||||
)
|
||||
|
||||
@@ -166,17 +167,60 @@ class TestTriangleGeometry(GprMaxRegressionTest):
|
||||
|
||||
|
||||
@rfm.simple_test
|
||||
class TestAddGrassMpi(TestAddGrass):
|
||||
class TestAddGrassMpi(MpiMixin, TestAddGrass):
|
||||
tags = {"test", "mpi", "geometery", "fractal", "surface", "grass"}
|
||||
mpi_layout = parameter([[1, 2, 2], [3, 1, 3], [4, 1, 4]])
|
||||
test_dependency = TestAddGrass
|
||||
|
||||
|
||||
# Depending on the orientation/alignment of the fractal surface, not all
|
||||
# MPI decompositions are valid. Therefore create tests that divide the
|
||||
# domain in each pair of dimensions.
|
||||
# NB: The 'add_surface_roughness_half' test currently fails due to the
|
||||
# floating point precision of the fractal surface. Caused by the:
|
||||
# if (k < surface.fractalsurface[i - surface.xs, j - surface.ys]):
|
||||
# checks in gprMax/user_objects/cmds_geometry/fractal_box.py
|
||||
@rfm.simple_test
|
||||
class TestAddSurfaceRoughnessMpi(MpiMixin, TestAddSurfaceRoughness):
|
||||
class TestAddSurfaceRoughnessMpiYZ(MpiMixin, TestAddSurfaceRoughness):
|
||||
tags = {"test", "mpi", "geometery", "fractal", "surface", "roughness"}
|
||||
mpi_layout = parameter([[2, 1, 2], [3, 3, 1], [1, 4, 4]])
|
||||
mpi_layout = parameter([[1, 2, 2], [1, 3, 3], [1, 4, 4]])
|
||||
test_dependency = TestAddSurfaceRoughness
|
||||
model = parameter(
|
||||
[
|
||||
"add_surface_roughness_full",
|
||||
# "add_surface_roughness_half",
|
||||
"add_surface_roughness_small",
|
||||
"add_surface_roughness_weighted",
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
@rfm.simple_test
|
||||
class TestAddSurfaceRoughnessMpiXZ(MpiMixin, TestAddSurfaceRoughness):
|
||||
tags = {"test", "mpi", "geometery", "fractal", "surface", "roughness"}
|
||||
mpi_layout = parameter([[2, 1, 2], [3, 1, 3], [4, 1, 4]])
|
||||
test_dependency = TestAddSurfaceRoughness
|
||||
model = parameter(
|
||||
[
|
||||
"add_surface_roughness_full",
|
||||
# "add_surface_roughness_half",
|
||||
"add_surface_roughness_weighted",
|
||||
"add_surface_roughness_boundaries",
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
@rfm.simple_test
|
||||
class TestAddSurfaceRoughnessMpiXY(MpiMixin, TestAddSurfaceRoughness):
|
||||
tags = {"test", "mpi", "geometery", "fractal", "surface", "roughness"}
|
||||
mpi_layout = parameter([[2, 2, 1], [3, 3, 1], [4, 4, 1]])
|
||||
test_dependency = TestAddSurfaceRoughness
|
||||
model = parameter(
|
||||
[
|
||||
"add_surface_roughness_small",
|
||||
"add_surface_roughness_boundaries",
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
@rfm.simple_test
|
||||
|
在新工单中引用
屏蔽一个用户