PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Waveguide ex machina



rkv
08.05.2022, 20:19
Guten Abend,

seit gefühlt mehreren Jahren versuche ich, Waveguides mit ABEC zu designen, aber irgendwie verliere ich nach einer Weile die Lust, weil mir dieses try&error einfach zu blöd ist.
Nun, wenn einem eine Arbeit zu blöd ist, sollte man sie wie im echten Leben nach Möglichkeit outsourcen. Am besten an jemanden, der darüber nicht klagt, und wer klagt grundsätzlich nicht? Richtig, ein Computer.

Ich weiss, dass 3eepoint an so einer Lösung arbeitet. Seine Lösung hat aus meiner Sicht aber ein paar entscheidene Nachteile: Es sind mind. 3 Programme involviert, eines davon ist Comsol. Letzteres habe ich nicht und kann ich mir auch nicht leisten.
Als digitaler Signalverarbeiter ist hingegen Matlab quasi Bestandteil der DNA. Und für Privatanwender auch durchaus günstig zu erwerben. Also dachte ich mir, vielleicht geht da ja was. Gut, es gibt einige BEM Toolboxen, mit denen ich einen Waveguide simulieren kann. Allerdings habe ich keine gefunden, die den Fall Waveguide in unendlicher Schallwand simulieren kann. Das könnte ich noch hinfummeln, aber Matlab hat einen weiteren großen Nachteil: Es ist schnarchlangsam. Wenn ich davon ausgehen, dass ein Optimierungsproblem mehrere Iterationen benötigt, ist Rechengeschwindigkeit schon ein Thema. Was also tun?
Matlab bietet die Möglichkeit, C++-Code zu kompilieren und einzubinden. Das ist die Lösung. Also flucks eine eigene BEM-Bibliothek geschrieben, denn partielle Differentialgleichungen, Nabla-Operatoren, Helmholtz-Integrale und diskrete Lösungen wurde alles an der Uni ins Hirn geimpft. Schnell noch die Bibliothek auf Multithreading getrimmt und los kann's gehen.
Hier nun ein erstes sinnvolles Ergebnis:
66192
Die Aufgabe war, eine 19mm-Kalotte mit willkürlich vorgegeben Waveguide-Profil möglichst gut auf Constant-Directivity hin zu optimieren. Das Profil war durch eine Bezier-Kurve vorgegeben und produzierte ein furchtbares Ergebnis. Mein Algorithmus kann wahlweise entweder die Kurvenparameter oder die Punkte des Netzwerks optimieren.
Für das gezeigte Ergebnis hat mein Mac-mini (noch die alte Kiste, also die letzte Generation mit Intel-CPUs) für 10000 Iterationen 1,5 Stunden gebraucht. Die Darstellung habe ich zur besseren Darstellung auf 0° normiert und in 3dB-Konturen dargestellt. Natürlich habe ich das mit ABEC verifiziert.
Spannend wird es nun, wenn ich den Rechner mal eine ganze Nacht durchrechnen lassen.
Am Ende dient Matlab jetzt nur noch als komfortables Anzeigetool. Wenn ich das z.B. durch gnuplot ersetze, wäre ich ganz unabhängig, dazu verspüre ich aber nicht viel Motivation, denn Matlab habe ich ja, warum also mit gnuplot rumschlagen?
Meine Optimierung arbeitet derzeit noch rotationssymmetrisch. Der nächste Schritt wäre jetzt echt 3D, um z.B. auch rechteckige Hörner zu optimieren. Den C++-Code dafür gibt es schon, das Drumherum fehlt halt noch.
Genauso spannend wäre es nun, die Optimierung mit z.B. einem genetischen Algorithmus zu probieren und mit unterschiedlichen Geometrieen (Bezier, Biradial, DXT) zu starten und Kreuzungen daraus zu erzeugen. Hier ist der Ansatz über Matlab natürlich praktisch, da es viele dieser Optimierungsprobleme schon als Toolbox gibt und es somit an einem Sonntagnachmittag schnell programmiert ist. Mal sehen, was die Zukunft bringt.
Wenn es hier dazu Interesse gibt, halte ich Euch auf dem Laufenden.

Raphael

Franky
08.05.2022, 20:23
einfach geil was Du da machst!

gesperrter_benutzer_ct
08.05.2022, 20:41
Wenn es hier dazu Interesse gibt, halte ich Euch auf dem Laufenden.

Definitiv 👍. Danke Dir!

Gaga
08.05.2022, 20:54
Unbedingt!:thumbup:

Gruß,
Christoph

3eepoint
08.05.2022, 20:55
Moin Raphael,

ich bin gespannt auf deine Lösung! Bei meiner ist momentan Entwicklungspause, da ich andere Baustellen habe. Ich habe aber mittlerweile auch nur noch 2 Programme, Matlab und Comsol, für die Berechnung in Nutzung ;) Über laufende Updates würde ich mcih sehr freuen!

PS: Sind die einzigen Nachteile die Programme oder hast du noch andere Dinge die dich stören würden?

rkv
09.05.2022, 08:56
Für mich ist hauptsächlich Comsol der Nachteil. Nicht wegen der Leistungsfähigkeit (auch weiss ich nicht, wie schnell Comsol etwas durchrechnet), sondern wegen der Anschaffung. Wenn man nicht gerade Student ist oder über den Arbeitgeber eine Lizenz hat, ist die Anschaffung von Comsol eine echte Hürde.

Sv.n.K
09.05.2022, 09:08
Super, bitte mehr :)

ArLo62
09.05.2022, 09:48
Japp, will ich auch wissen. Danke fur's teilhaben lassen :prost:
Gruß
Arnim

3eepoint
09.05.2022, 10:17
Für mich ist hauptsächlich Comsol der Nachteil. Nicht wegen der Leistungsfähigkeit (auch weiss ich nicht, wie schnell Comsol etwas durchrechnet), sondern wegen der Anschaffung. Wenn man nicht gerade Student ist oder über den Arbeitgeber eine Lizenz hat, ist die Anschaffung von Comsol eine echte Hürde.

Ah ok, dachte du hast feedback zu meiner Methodik:prost: Bin nach wie vor gespannt wie du das löst =)

JFA
09.05.2022, 10:22
Sehr schön.

Geht statt Matlab auch Octave oder Scilab?

rkv
09.05.2022, 12:02
Keine Ahnung, ich weiss nicht ob Octave 64-bit Mex-Files verarbeiten kann.
Und für das Testen von anderen Optimierungsalgorithmen wollte ich zunächst die Matlab-Toolbox verwenden, bevor ich das in C++ programmiere.
Derzeit verwende ich noch ein Downhill Simplex (Nelder-Mead) in C++.

Von Scilab habe ich noch weniger Ahnung.

FoLLgoTT
10.05.2022, 19:15
Das sieht doch schon ziemlich gut aus! :)

Ich lese gespannt mit. :prost: