How to Simulate an Open Boundary in a 1D Wave Equation Solver?

Click For Summary

Discussion Overview

The discussion revolves around simulating an open boundary condition in a 1D wave equation solver implemented in MATLAB. Participants explore the challenges of achieving a realistic representation of wave behavior at the boundaries, particularly focusing on minimizing reflections at the open end of a string.

Discussion Character

  • Technical explanation, Debate/contested, Mathematical reasoning

Main Points Raised

  • One participant describes their approach to discretizing the wave equation and applying a zero gradient boundary condition, but encounters issues with partial reflections at the boundary.
  • Another participant suggests that partial reflections are expected at a free end due to energy transfer limitations into the surrounding medium.
  • There is a recommendation to explore "absorbing boundary conditions" as a potential solution to reduce reflections, although it is noted that implementing these conditions may be complex.

Areas of Agreement / Disagreement

Participants acknowledge the presence of partial reflections at a free end, but there is no consensus on the best method to eliminate them. The discussion remains unresolved regarding the implementation of absorbing boundary conditions.

Contextual Notes

The discussion does not clarify the specific mathematical details or assumptions underlying the proposed absorbing boundary conditions, nor does it resolve the effectiveness of the zero gradient boundary condition in this context.

emirs
Messages
3
Reaction score
0
I am trying to write a solver for a 1D wave equation in MATLAB, and I have run into interesting problem that I just can't find a way out of.

I start with the wave equation, and then discretize it, to arrive at the following,

U{n+1}(j)=a*(U{n}(j+1)-2*U{n}(j)+U{n}(j-1))+2*U{n}(j)-U{n-1}(j) (for (j=1...end-1))

I'm trying to simulate an open end string (perturbate it in the middle for example, and I want the wave to disappear on the border)

Usually it is done (correct me if I'm wrong) with applying zero gradient boundary condition, which in my case is:
U{n}(end+1)=U{n}(end-1)
and leads to:
U{n+1}(end)=a*(-2*U{n}(end)+2*U{n}(end-1))+2*U{n}(end)-U{n-1}(end);

Unfortunately this condition creates a partial reflection from the end which is supposed to be free.

Please help

Regards
 
Physics news on Phys.org
Anyone?
 
Well, there ARE partial reflections from a free end, I think...the energy cannot transfer into the surrounding air with perfect efficiency.

But to eliminate as much reflection as possible, you should look up "absorbing boundary conditions". These are a bit tricky to implement and it may take a fair bit of reading to get them right.
 
Thank you, it is what I was looking for. You hae put me on the right track.
 

Similar threads

  • · Replies 7 ·
Replies
7
Views
4K
  • · Replies 0 ·
Replies
0
Views
3K
  • · Replies 8 ·
Replies
8
Views
5K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 7 ·
Replies
7
Views
4K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 7 ·
Replies
7
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K