Wellenausschnitt ohne Reflexion simulieren
-
Hallo zusammen,
ich hab' mir in den Kopf gesetzt, ein kleines Programm zur Simulation zweidimensionaler mechanischer Wellen zu schreiben.
Es arbeitet nach nem simplen "Masse-Feder-Prinzip", speichert zu jedem Punkt also Auslenkung und Geschwindigkeit und beschleunigt dann die Massepunkte je nach Lage der Nachbarn.Dabei tritt ein kleines Problem auf:
Da ich keinen unendlich großen Bereich simulieren kann, tritt an den Rändern meines simulierten Bereichs immer Reflexion (am losen Ende, wenn der Rand nicht berücksichtigt wird / am festen, wenn ich den Rand auf Elongation 0 setz) auf.
Diese Reflexion stört aber, weil mein simulierter Bereich eben nur einen Ausschnitt aus einer unendlich großen Fläche darstellen soll.Wie bekomm' ich also dieso störende Reflexion möglichst effizient beseitigt?
-
Nun absorbierende Wände in den Simulationen zu implementieren ist ein großes Thema. Im Falle von elektromagnetischen Wellen, welche eine gewissen Ähnlichkeit mit mechanischen Wellen haben, kann man eine recht simple absorbieren Wände implementieren, wenn man die Werte an den Rändern für einen Zeitschritt speichert und diese als fortpflanzende Welle am Rand weiterverwendet. Dadurch erreicht man zwar schon eine Absorption, aber sie ist je nach Winkel der eintreffenden Welle nicht ausreichend und ist selbstverständlich auch abhängig davon, wie stark die Amplitude der Welle ist. Selbst bei sehr guten absorbierenden Wänden bleibt immer noch eine kleine Restreflexion über. Im Falle von elektromagnetischen Simulationen kannst Du mal nach "Mur" und "Pml" googlen.
Winn