simwave icon indicating copy to clipboard operation
simwave copied to clipboard

A question regarding the setup of the absorbing layer.

Open Ruihua-Chen opened this issue 7 months ago • 6 comments

Hello, I’m very interested in this project! I have a question regarding the setup of the absorbing layer.

In most examples, including acoustic_2D.py and Overthrust_3D.py, I want to set the top boundary as a free surface while applying absorbing boundaries to the other sides. I understand that absorption in simwave is achieved through damping terms. However, when I try different configurations—such as:

space_model.config_boundary(
damping_length=(100, 5000, 5000, 5000),
boundary_condition=("none", "none", "none", "none"),
damping_polynomial_degree=5,
damping_alpha=0.01
)

—none of them seem to produce the desired absorbing effect. Could you please help me resolve this issue?

Ruihua-Chen avatar May 16 '25 15:05 Ruihua-Chen

Hi, The problem is here: boundary_condition=("none", "none", "none", "none"), "none" means don´t use boundary conditions. You may use this instead: ... boundary_condition=("null_neumann", "null_dirichlet", "null_dirichlet", "null_dirichlet" ),

null_neuman will produce the free surface effect you want. I strongly suggest reading the simwave paper at https://arxiv.org/abs/2201.05278 specially the 2D and 3D examples.

hermes-senger avatar May 16 '25 15:05 hermes-senger

Thanks. But, when I set (consistent with the paper): """ space_model.config_boundary( damping_length=(0, 700, 700, 700), boundary_condition=( "null_neumann", "null_dirichlet", "null_dirichlet", "null_dirichlet", ), damping_polynomial_degree=3, damping_alpha=0.001 ) """ and run the acoustic_2D.py, It doesn't seem to have produced the expected absorption effect

Image

Ruihua-Chen avatar May 16 '25 15:05 Ruihua-Chen

In other words, I hope there will be no reflected waves in the lower left and right parts and they can be absorbed.

Ruihua-Chen avatar May 16 '25 16:05 Ruihua-Chen

The quality of absorbing results depends on some parameters:

  • damping_length: if zero, there is no absorbing effect. Small values will hinder the absorbing effect, while large values increase the computational cost. Using around 10% of the domain length can be good, but you can experiment with it.
  • The parameters damping_polynomial_degree and damping_alpha also affect absorbing effects. So, you need to search for good values for both. The polynomial degree looks fine (not very sure), but you may try other values ranging from 2, 3, 4. Try other values for the alpha parameter, e.g, 0.1, 0.01 or 0.001 (yes, try different orders of magnitude). The "best" values may vary for each problem.

hermes-senger avatar May 16 '25 21:05 hermes-senger

To be honest, I have tried to adjust these hyperparameters (e.g., damping_length, damping_polynomial_degree, and damping_alpha ), but the result seems to have remained the same.

Ruihua-Chen avatar May 17 '25 01:05 Ruihua-Chen

Hello! We changed the way simwave defines the damping mask and fixed the calculation of the absorbing layer term. The parameters damping_polynomial_degree and damping_alpha have been deprecated. It appears to be fine in our tests now. Could you test please?

hermes-senger avatar Jul 20 '25 22:07 hermes-senger