From 5f9421ef42c5f98083ef7bfe244d6b42cb5faa98 Mon Sep 17 00:00:00 2001 From: Craig Warren Date: Mon, 15 Apr 2024 15:36:12 +0100 Subject: [PATCH 1/3] Corrected excitation file switch to multiuse --- docs/source/input_api.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/input_api.rst b/docs/source/input_api.rst index 06be22c0..484c6ec0 100644 --- a/docs/source/input_api.rst +++ b/docs/source/input_api.rst @@ -220,7 +220,7 @@ Transmission Line Excitation File --------------- -.. autoclass:: gprMax.cmds_singleuse.ExcitationFile +.. autoclass:: gprMax.cmds_multiuse.ExcitationFile Receiver -------- From 324a66bcadf49881f6e0e52c8d395245552acd79 Mon Sep 17 00:00:00 2001 From: Craig Warren Date: Mon, 15 Apr 2024 15:57:08 +0100 Subject: [PATCH 2/3] Added note on PML with fractal distributions --- docs/source/input_api.rst | 4 ++++ docs/source/input_hash_cmds.rst | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/docs/source/input_api.rst b/docs/source/input_api.rst index 484c6ec0..94f6790e 100644 --- a/docs/source/input_api.rst +++ b/docs/source/input_api.rst @@ -175,6 +175,10 @@ Fractal Box ----------- .. autoclass:: gprMax.cmds_geometry.fractal_box.FractalBox +.. note:: + + * Currently (2024) we are not aware of a formulation of Perfectly Matched Layer (PML) absorbing boundary that can specifically handle distributions of material properties (such as those created by fractals) throughout the thickness of the PML, i.e. this is a required area of research. Our PML formulations can work to an extent depending on your modelling scenario and requirements. You may need to increase the thickness of the PML and/or consider tuning the parameters of the PML (:ref:`pml-tuning`) to improve performance for your specific model. + Add Grass --------- .. autoclass:: gprMax.cmds_geometry.add_grass.AddGrass diff --git a/docs/source/input_hash_cmds.rst b/docs/source/input_hash_cmds.rst index 5fc551ef..47002aba 100644 --- a/docs/source/input_hash_cmds.rst +++ b/docs/source/input_hash_cmds.rst @@ -620,6 +620,10 @@ Allows you to introduce an orthogonal parallelepiped with fractal distributed pr For example, to create an orthogonal parallelepiped with fractal distributed properties using a Peplinski mixing model for soil, with 50 different materials over a range of water volumetric fractions from 0.001 - 0.25, you should first define the mixing model using: ``#soil_peplinski: 0.5 0.5 2.0 2.66 0.001 0.25 my_soil`` and then specify the fractal box using ``#fractal_box: 0 0 0 0.1 0.1 0.1 1.5 1 1 1 50 my_soil my_fractal_box``. +.. note:: + + * Currently (2024) we are not aware of a formulation of Perfectly Matched Layer (PML) absorbing boundary that can specifically handle distributions of material properties (such as those created by fractals) throughout the thickness of the PML, i.e. this is a required area of research. Our PML formulations can work to an extent depending on your modelling scenario and requirements. You may need to increase the thickness of the PML and/or consider tuning the parameters of the PML (:ref:`pml-tuning`) to improve performance for your specific model. + #add_surface_roughness: ----------------------- From 9f4bb79f54d47f040b49f88cbd9ad6630bfb2d4f Mon Sep 17 00:00:00 2001 From: Craig Warren Date: Mon, 15 Apr 2024 15:59:48 +0100 Subject: [PATCH 3/3] Enforcing list when specifying even single output component --- gprMax/cmds_multiuse.py | 2 +- toolboxes/GPRAntennaModels/GSSI.py | 6 +++--- toolboxes/GPRAntennaModels/MALA.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/gprMax/cmds_multiuse.py b/gprMax/cmds_multiuse.py index 385f6f92..e7689a0d 100644 --- a/gprMax/cmds_multiuse.py +++ b/gprMax/cmds_multiuse.py @@ -871,7 +871,7 @@ class Rx(UserObjectMulti): try: r.ID = self.kwargs["id"] - outputs = list(self.kwargs["outputs"]) + outputs = self.kwargs["outputs"] except KeyError: # If no ID or outputs are specified, use default r.ID = f"{r.__class__.__name__}({str(r.xcoord)},{str(r.ycoord)},{str(r.zcoord)})" diff --git a/toolboxes/GPRAntennaModels/GSSI.py b/toolboxes/GPRAntennaModels/GSSI.py index d6d8a8ee..e21b700a 100644 --- a/toolboxes/GPRAntennaModels/GSSI.py +++ b/toolboxes/GPRAntennaModels/GSSI.py @@ -405,7 +405,7 @@ def antenna_like_GSSI_1500(x, y, z, resolution=0.001, **kwargs): p1=(tx[0] - 0.059, tx[1], tx[2]), p2=(tx[0] - 0.059, tx[1] + dy, tx[2]), material_id="rxres" ) scene_objects.append(e1) - r1 = gprMax.Rx(p1=(tx[0] - 0.059, tx[1], tx[2]), id="rxbowtie", outputs="Ey") + r1 = gprMax.Rx(p1=(tx[0] - 0.059, tx[1], tx[2]), id="rxbowtie", outputs=["Ey"]) scene_objects.append(r1) elif resolution == 0.002: @@ -414,7 +414,7 @@ def antenna_like_GSSI_1500(x, y, z, resolution=0.001, **kwargs): p1=(tx[0] - 0.060, tx[1], tx[2]), p2=(tx[0] - 0.060, tx[1] + dy, tx[2]), material_id="rxres" ) scene_objects.append(e1) - r1 = gprMax.Rx(p1=(tx[0] - 0.060, tx[1], tx[2]), id="rxbowtie", outputs="Ey") + r1 = gprMax.Rx(p1=(tx[0] - 0.060, tx[1], tx[2]), id="rxbowtie", outputs=["Ey"]) scene_objects.append(r1) return scene_objects @@ -804,7 +804,7 @@ def antenna_like_GSSI_400(x, y, z, resolution=0.002, **kwargs): ) scene_objects.extend((w2, tl2)) else: - r1 = gprMax.Rx(p1=(tx[0] + 0.162, tx[1], tx[2]), id="rxbowtie", outputs="Ey") + r1 = gprMax.Rx(p1=(tx[0] + 0.162, tx[1], tx[2]), id="rxbowtie", outputs=["Ey"]) scene_objects.append(r1) # Geometry views diff --git a/toolboxes/GPRAntennaModels/MALA.py b/toolboxes/GPRAntennaModels/MALA.py index 937ec7b0..cbee5f06 100644 --- a/toolboxes/GPRAntennaModels/MALA.py +++ b/toolboxes/GPRAntennaModels/MALA.py @@ -649,7 +649,7 @@ def antenna_like_MALA_1200(x, y, z, resolution=0.001, **kwargs): scene_objects.append(vs1) # Output point - receiver bowtie - r1 = gprMax.Rx(p1=(tx[0] + 0.076, tx[1], tx[2]), id="rxbowtie", outputs="Ey") + r1 = gprMax.Rx(p1=(tx[0] + 0.076, tx[1], tx[2]), id="rxbowtie", outputs=["Ey"]) scene_objects.append(r1) # Geometry views