PML's incomplete absorption of radar wave: lead to echo interference to the B-scan images which removed direct waves

108 views
Skip to first unread message

王辰宇

unread,
Jan 19, 2025, 9:34:57 AM1/19/25
to gprMax-users

Hello, I am learning to use gprMax to do a simulation of different layers of soils with different permittivity each. Til now I only wrote a few simple input files to create multi-layered homogeneous soils. Then I found that the B-scan images drawn from .out files(with direct wave removed) seemed to have interference from other waves(by the way I used mean value method to remove direct wave). Through several tests I think maybe it's because the PML of the left and right sides didn't absorb the radar waves completely. What am I supposed to do to avoid this situation, please? Is there anything that I should change or improve? And I will be more than grateful if you can tell me what place I did wrong ,please.
For example, this is one of my input files to create B-scan:
'''
#domain: 6 1 0.02
#dx_dy_dz: 0.02 0.02 0.02
#time_window: 3e-08

#waveform: ricker 1 100e6 my_ricker
#hertzian_dipole: z 0.3 0.7 0 my_ricker
#rx: 0.32 0.7 0
#src_steps: 0.02 0 0
#rx_steps: 0.02 0 0

#material: 16 5 1 0 normal_soil
#material: 10 10 1 0 wet_fertile
#material: 6 1 1 0 dry_fertile
#box: 0 0.5 0 6 0.7 0.02 normal_soil
#box: 0 0.3 0 6 0.5 0.02 wet_fertile
#box: 0 0 0 6 0.3 0.02 dry_fertile
'''
And this is the corresponding B-scan image(n=270):

Image

B-scan image that removes the direct wave:

Image

And I also tested file given by official tutorial, i.e "cylinder_Bscan_2D.in", but I removed the cylinder part . I posted the corresponding input file below:
'''
#domain: 0.240 0.210 0.002
#dx_dy_dz: 0.002 0.002 0.002
#time_window: 3e-9

#material: 6 0 1 0 half_space

#waveform: ricker 1 1.5e9 my_ricker
#hertzian_dipole: z 0.040 0.170 0 my_ricker
#rx: 0.080 0.170 0
#src_steps: 0.002 0 0
#rx_steps: 0.002 0 0

#box: 0 0 0 0.240 0.170 0.002 half_space
'''
And this is the result B-scan image with direct wave removed:

Image

And I wonder if this will happen when echoes from adjacent layers aren't strong enough? Or put it another way: the permittivity difference of adjacent layers aren't large enough.

Antonis Giannopoulos

unread,
Jan 19, 2025, 9:53:56 AM1/19/25
to gprMax-users
There is no way that the errors from PMLs could be completely eliminated. They can be reduced and improved but could  never be completely removed. The method you use to remove the direct response and as a result the response from all your layers makes this worst. The important consideration is how strong are these reflections in relation to the reflections from your targets? Now that the target responses have been mostly eliminated the weak errors from the PML are very clear to see. 

Also, your model does not leave many cells above the source for the PML. Your source is about 5 cells away from the start of the PML which has a default thickness of 10 cells in the vertical direction. Results should improve if you move your active scanning region further from the PML.

The ways to improve the performance are:

1. Try thicker PML and the error will be reduced.
2. There are more advanced PML settings that can calibrate the PML to perform much better and gprMax allows you to do that but there are no universal guidelines on this and it is a matter of trial and research to find out the best parameters. 
3. If you want  background removal in a model you can run it without the targets and subtract it from the model run with all the targets. The average background removal is not a good way to do this and actually in real GPR data can also create non existent targets when applied to some GPR data. It should be used with caution and always understanding its limitations. 
4. If you are going to simulate only layers that are 1D flat and homogeneous then one trace in there middle is enough. I suppose you want to include more 2D targets in future and hence you are stating with simulating B-Scans for 1D scenarios. 

So, PMLs are not perfect and will never be but their error can be reduced with increasing the distance from them, their thickness or by using more advanced formulations and parameters. 

Hope this helps!

Antonis

王辰宇

unread,
Feb 8, 2025, 9:03:41 AM2/8/25
to gprMax-users
Dear Mr. Giannopoulos,
    Thank you so much for your answer, which does me a great favour! I am now improving my methods of creating more useful input files and deploying a new way to remove direct wave as you instructed:
1. Since the PML layers get 10 cells by default and it is recommended that you put radar and rx 10-15 cells away from PML. So I reckon that I let them be 25 cells away from the borders. Do I get it right?
2. In your reply it mentioned "you can run it without the targets". So I removed all the definitions of items(box, fractal box...) except radar and receiver. Then it subtracted from the original model. Is that correct?
    In the end, wish you all the best for the new snake year!
Sincerely,
Chenyu,Wang

Antonis Giannopoulos

unread,
Feb 8, 2025, 2:04:55 PM2/8/25
to gprMax-users
Hi Chenyu,

This will work for your PML but often the PML performance  is problem depended. If you see that the errors are not reduced enough you can leave more space or use a thicker PML.
What is background and what are targets is up to use to decide. In a simple model of a half-space with a simple target if you want to remove the background then you run the model of a half-space without the target and subtract it from the full model. This way you only get the response of the target without the direct response. 

Hope this helps!

Antonis

王辰宇

unread,
Feb 11, 2025, 3:22:13 AM2/11/25
to gprMax-users
Dear Mr. Giannopoulos,
    I followed your advice to run it again with other targets removed and got it subtracted from the original model. Here comes a new problem: I can't see any other layers from B-scan image.
    I also tried on the cylinder_Bscan_2D.in from the official tutorial by removing the cylinder. It worked well. The response seems more clear. But this didn't happen on my model(orz). So I guess there must be something wrong with my parameters. And here I uploaded all input files and results hoping those will be of any help. I will appreciate it if anyone talented could give me an answer!
    PS: paper.in is the original file, empty.in is the file with other layers removed except the first layer. The ground_truth.png shows the layers' distribution of paper.in. The removed.png is the result of Bscan "paper_merged.out minus empty_merged.out".
removed.png
paper.in
ground_truth1.png
empty.in

Antonis Giannopoulos

unread,
Feb 11, 2025, 12:50:33 PM2/11/25
to gprMax-users
When you are using commands like #fractal_box: and #add_surface_roughness: that are using stochastic distributions every time you use them a new random background is generated. So, in every A-Scan your background is different and that is why you see what is in the "removed.png" image. You need to keep the same fractal geometry model between A-scans as the earth does not change every time you move the source. So, you need to seed the random number generator with an integer to reproduce the same model between A-scans. This number can change between different B-scan models but not between model runs for the same A-scan. So, use the seeding parameter in these commands. The details are in the documentation 

best

Antonis

王辰宇

unread,
Feb 26, 2025, 5:41:13 AM2/26/25
to gprMax-users
Dear  Mr. Giannopoulos,
    I took your suggestion to add random seed to control the model the same on every run of Ascan. And it surely worked on some circumstances. But sometimes I still got some problems. When I finish a Bscan, the result image seems to have only the direct wave. There is no sign of other responces from other soil layers. Then I run the model with other layers removed and let it subtracted from original model. The result still can't see any other responces. Is it because the wave died down quickly during transportaion? Or is it due to the errors of the model itself? I can't figure out what best parameters are for the radar.
    Here I post my model file "1.in", model without other layers "2.in", ground truth of model 1 "gt1.png" , Bscan of model 1 "1.png" and the result removing direct wave "removed.png". I will  be grateful if anyone can help me(orz)...
gt1.png
2.in
1.png
1.in
removed.png

王辰宇

unread,
Feb 28, 2025, 1:57:19 AM2/28/25
to gprMax-users
Hi, everyone!
    It's me again. I probably found out why little responces were received: I set the conductivity of the defined materials so hign that most of the waves died down quickly. Now I re-adjust the value lower and clear responce results were seen again! It's quite important to be cautious when you set parameters before the experiment, right? Ha ha, anyway don't let me bother your valuable time. Wish you guys a good weekend. :D
Reply all
Reply to author
Forward
0 new messages