A question regarding the setup of the absorbing layer.
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?
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.
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
In other words, I hope there will be no reflected waves in the lower left and right parts and they can be absorbed.
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.
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.
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?