Skip to content

A question regarding the setup of the absorbing layer. #68

Open

Description

@ruihua-chen

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?

Activity

  1. hermes-senger commented on May 16, 2025

    @hermes-senger
    Contributor

    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.

  2. ruihua-chen commented on May 16, 2025

    @ruihua-chen
    Author

    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

  3. ruihua-chen commented on May 16, 2025

    @ruihua-chen
    Author

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

  4. hermes-senger commented on May 16, 2025

    @hermes-senger
    Contributor

    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.
  5. ruihua-chen commented on May 17, 2025

    @ruihua-chen
    Author

    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.

  6. hermes-senger commented on Jul 20, 2025

    @hermes-senger
    Contributor

    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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions