MatthiasBoese
User
Nachdem ich in meinem ersten Beitrag "The Strak-Machine", https://www.rc-network.de/threads/the-strak-machine.11818595/ die Grundidee und den Prototyp der Strak-Machine vorgestellt habe, möchte ich nun gerne die Fortschritte beschreiben, welche in der Zwischenzeit (nun beinahe zwei Jahre) erzielt werden konnten.
Rückblick
Hierzu aber zunächst eine kurze Zusammenfassung:
- Bei der Strak-Machine handelt es sich um eine open-source Software, welche überwiegend in der Scriptsprache Python erstellt wurde.
- Das Ziel der Strak-Machine ist es, den Anwender möglichst automatisiert bei der Entwicklung eines angepassten Profil-Straks, basierend auf einem vorgegebenen Wurzelprofil, zu unterstützen
- Hierzu wird durch die Strak-Machine für jedes neue Profil, das entlang der "Reynolds-Stationen" einer Tragfläche neu erstellt werden soll, eine "Steuerdatei" für den Profiloptimierer Xoptfoil-JX generiert.
- Xoptfoil-JX führt dann mit Hilfe dieser Steuerdateien die Optimierung des Wurzelprofiles für die einzelnen Reynolds-Stationen durch und erzeugt dadurch neue, besser angepasste Profile.
- Ein Beispiel für die Erstellung eines solchen Straks und damit die grundsätzliche Funktion des Prototyps wurde im ersten Beitrag gezeigt
Die Fortschritte
Seit der Veröffentlichung des ersten Prototyps vor ca. 2 Jahren wurden folgende Funktionen neu entwickelt oder verbessert, von denen ich die wichtigsten später noch im Detail vorstellen möchte:
- Grafischer Editor mit neuer Benutzeroberfläche, um die Ziel-Polaren der Strak-Profile durch Verschiebung einzelner Polaren-Punkte mit der Maus / Touchpad vorgeben zu können
- Automatische Erzeugung von „seed-foils“, also Ausgangsprofilen für jedes einzelne Strak-Profil, welche jeweils eine grobe geometrische Voranpassung der Profile beinhalten
- Nutzung neuer Xoptfoil-JX-Features wie z.B. dynamic weighting und automatische Sicherstellung einer sauberen Geometrie der erzeugten Profile bei Nutzung von Hicks-Henne (auto-curvature), was zu besseren Ergebnissen bei der Optimierung führt
- Fortschrittsanzeige, welche über den Fortschritt bei der Erzeugung des gesamten Profilstraks informiert, sowie der komfortablen Möglichkeit, den „Xoptfoil-Visualizer“ passend zum aktuellen Strak-Profil per Mausklick starten zu können
- Neues Modul „Planform-Creator“ zur Erzeugung elliptischer oder trapezförmiger Flächengeometrien, in denen einzeln Profile vom Typ „user“ (bereits vorhandene, fertige Profile), „opt“ (durch den Optimierer neu zu erstellende Profile) oder „blend“ (mittels geometrischer Interpolation zu erstellende Profile) platziert werden können.
- Automatische Export-Funktion für die erzeugten Flächengeometrien für XFLR5 und FLZ-Vortex, um dort Simulationen durchführen zu können („full-circle“ Unterstützung bei der Entwicklung von Tragflächen / ganzen Flugzeugen)
- Automatische Generierung von Polaren für alle erstellten Profile, welche direkt in XFLR5 importiert werden können
- Diverse Bugfixes
- Eine (bisher noch sehr kleine) Profilbibliothek, welche sowohl Einzelprofile als auch fertig erstellte Profil-Straks enthält, zu denen unter anderem die Profilstraks JX-GS, JX-GT sowie JX-FE (Leitwerk) von Jochen Günzel gehören
- Ein Beispiel-Flugmodell für XFLR5 / FLZ-Vortex mit elliptischer Tragflächengeometrie und V-Leitwerk ähnlich den aktuellen F3F/F3B-Konstruktionen, welches die Profil-Straks JX-GT und JX-FE verwendet.
- Sämtliche aktuellen Quellen, sowie zu Releases gebündelte, fertige Versionen stehen mittlerweile auf GitHub unter der URL
https://github.com/Matthias231/The-Strak-Machine.git zum Download zur Verfügung.
Ein paar der oben genannten neuen Features möchte ich nun im Einzelnen näher beschreiben.
Der grafische Polaren-Editor
Mit Hilfe der Python-Bibliothek „Customtkinter“ wurde eine grafische Benutzeroberfläche erstellt, um die Generierung der „Steuerdateien“ für den Profiloptimierer Xoptfoil-JX für den Anwender einfacher und intuitiver zu gestalten.
Auch ist es nun erst möglich, wirklich jeden einzelnen Ziel-Polarenpunkt individuell zu verschieben und zu gewichten, dies ging beim Prototyp bisher nicht.
Der folgende Screenshot zeigt die neue Benutzeroberfläche für das Beispiel, dass bei bei einem gegebenen Wurzelprofil für den Reynolds-Bereich ReSqrt(Cl) = 150000 (kurz: 150k) weitere Strak-Profile für die Bereiche 100k, 60k und 40k durch den Optimierer erzeugt werden sollen.
Im linken Bereich der Benutzeroberfläche kann dabei zwischen den drei Diagrammtypen „Lift/Drag“-Polare, „Lift/alpha“-Polare und „Glide“-Polare umgeschaltet werden, so dass für jedes einzelne Diagramm immer ein möglichst großer Bereich auf der rechten Seite des Bildschirms zur Verfügung steht.
Im rechten Bereich der Benutzeroberfläche wird das jeweils ausgewählte Polaren-Diagramm angezeigt.
Man sieht im obigen Polaren Diagramm in blau/grün die Polaren des Wurzelprofils, welches für die vorgegebenen ReSqrt(Cl)-Werte (in diesem Fall waren dass die Werte 150k, 100k, 60k und 40k) automatisch durch die Strak-Machine erstellt wurden.
Die hierzu notwendigen Berechnungen werden mit „xfoil_worker“, einem Hilfstool, welches Teil von Xoptfoil-JX ist, automatisch ausgeführt.
Xfoil_worker wiederum verwendet im Kern „Xfoil“.
Die Polaren des Wurzelprofils vermitteln einen ersten Eindruck, wie sich dessen „Performance“ bei den kleiner werdenden ReSqrt(CL)-Werten, für die es nicht ausgelegt wurde, verändert bzw. verschlechtert.
In der Farbe Gelb werden die Ziel-Polaren für die besser angepassten Strak-Profile dargestellt, auf die der Anwender nun durch verschieben der einzelnen Punkte mit der Maus Einfluss nehmen kann.
Für die möglichst exakte grafische Bearbeitung der Ziel-Polaren besteht dabei die Möglichkeit, in die Diagramme hinein zu zoomen und die gezoomten Ausschnitte mit der Maus zu verschieben.
Weiterhin können die Zielpolaren-Punkte aber auch durch direkte Eingabe der Werte in der links stehenden Tabelle eingegeben werden.
Jedem der Zielpolaren Punkte kann nun eine eigene Gewichtung (weighting) zugeordnet werden, wodurch dieser für den Optimierer als wichtiger oder weniger wichtig gekennzeichnet werden kann.
Die Gewichtungen werden im obigen Diagramm als grüne (Gewichtung >=1.0) oder rote Labels angezeigt (Gewichtung < 1.0).
Als graue, gestrichelte Linien werden als kleine Hilfestellung „Referenz-Polaren“ angezeigt, dies jedoch nur für den Fall, dass bereits ein Teil der Strak-Profile erzeugt wurde.
Die Referenz-Polaren sind die Polaren des jeweiligen Vorgänger-Strak-Profils, jedoch nicht bei dessen Auslegungs-ReSqrt(Cl), sondern beim nächst kleineren ReSqrt(Cl) und sollen als „Messlatte“ bzw. zur Orientierung für das neu zu erstellende Strak-Profil dienen.
Um einen etwas besseren Eindruck zur Funktionsweise der grafischen Oberfläche zu vermitteln, habe ich hierzu ein kurzes Video erstellt, welches auch als einfache Kurzanleitung dienen soll:
Der „Planform-Creator“
Der Planform-Creator ist ein weiteres Python-Script, welches bisher allerdings noch über keine komfortable grafische Benutzeroberfläche verfügt, sondern Eingaben lediglich auf Basis einer Parameterdatei verarbeiten kann (jede Änderung erfordert einen Neustart des Scriptes) .
Bei der Parameterdatei handelt es sich um ein menschlich lesbares ASCII-Textfile im .json-Format, welches heutzutage ein gängiges Format zum Datenaustausch / zur Parameterspeicherung ist.
In der Parameterdatei werden grundlegende Daten der Tragfläche vorgegeben, wie z.B.
- die Spannweite
- die Flächentiefe an der Wurzel und im Bereich der Flächenspitze
- die Form der Flächenspitze (eher spitz / eher stumpf)
- die Klappentiefe an der Wurzel / an der Flächenspitze
- der Winkel der Scharnierlinie
- die V-Form der Tragfläche (bisher nur einfach V möglich)
Weiterhin können Profile positioniert und die Flächensegmente zwischen den Profilen einzelnen Klappengruppen zugeordnet werden.
Der Planform-Creator erzeugt dann mit Hilfe der Parameterdatei eine Tragflächengeometrie.
Der folgende Screenshot zeigt ein Beispiel:
Im oberen Bereich der Grafik sieht man den Flächenplan der Tragfläche mit einer orangenen Line bei 1/4 der Flächentiefe und einer Scharnierlinie (rot) sowie die Positionen der einzelnen Profile mit deren Bezeichnung (senkrechte Labels).
Die hellblau hinterlegten Profilnamen zeigen dabei an, dass es sich um bereits vorhandene, vom Anwender vorgegebene Profile handelt („user“).
Die grau hinterlegten Profilenamen bedeuten, dass diese (Zwischen-)Profile automatisch durch den Planform-Creator mittels geometrischer Interpolation (Blending) erzeugt werden sollen („blend“).
Diese Erzeugung geschieht bereits automatisch im Hintergrund, während die Grafik aufgebaut wird und geht sehr schnell.
Für das Blending wird wiederum das Hilfstool „xfoil_worker“ verwendet.
Die gelb-grün hinterlegten Profilnamen bedeuten, dass diese Profile mittels Optimierung durch die Strak-Machine erstellt werden sollen („opt“).
Der Planform-Creator erstellt dabei automatisch einen „Auftrag“ für die Strak-Maschine, der die ReSqrt(Cl) Werte des Wurzelprofils und aller „opt“-Profile enthält.
Der Anwender muß lediglich noch die Strak-Machine starten, die Zielpolare(n) nachjustieren und zum Schluß die automatische Optimierung mittels Xoptfoil-JX ausführen.
Im unteren Bereich der Grafik sieht man die gesamte Tragfläche in der Draufsicht, wobei die in der Parameterdatei vorgegebene Rumpfbreite als „Lücke“ zwischen den beiden Tragflächenhälften zu sehen ist.
In rot dargestellt sieht man die Klappen (in diesem Fall ein 4 Klappen-Flügel, aber beliebig viele Klappen sind möglich).
Nutzung von FLZ Vortex und XFLR5 für die Durchführung von Simulationen
Die mit Hilfe des Planform-Creators erzeugte Tragflächengeometrie wird automatisch sowohl in eine durch XFLR5 lesbare .xml Datei geschrieben, als auch in ein .FLZ-File, welches von FLZ-Vortex gelesen werden kann.
Dabei erfolgt auf Wunsch eine Feininterpolation der Flächensegmente, wodurch z.B. eine elliptische Tragfläche besonders im Bereich der Flächenspitze besser abgebildet wird (man kann dies auch deaktivieren, per Default wird jedoch jedes Flächensegment durch 5 Teilsegmente feininterpoliert).
In FLZ-Vortex erhält man dann in unserem Beispiel das folgende Bild (hier bereits ein komplettes Flugmodell mit Leitwerk):
Durch zweimaliges Ausführen des Planform-Creators, einmal für die Tragfläche und anschließend noch einmal für das Leitwerk, lassen sich FLZ-Files und auch .xml-Files für XFLR5 erzeugen, in denen beides enthalten ist.
In XFLR5 sieht das gleiche Flugmodell dann so aus:
Im obigen Bild wurde bereits eine Simulation durchgeführt und es wird der induzierte Widerstand von Tragfläche und Leitwerk in Form der lila-farbenen Linien sowie die Druckverteilung angezeigt.
Sämtliche weiteren Simulationsmöglichkeiten von XFLR5 können damit nun genutzt werden. Veränderungen am Flugmodell, wie Vorgabe von Massen, Abstand zwischen Flügel und Leitwerk, Anstellwinkel der Flächen etc. können nachträglich direkt in XFLR5 durchgeführt werden.
Auch ein „Refresh“ des mit XFLR5 geänderten Files durch den Planform-Creator, wenn z.B. ein „Feintrimmen“ der Flächengeometrie durchgeführt werden soll, ist möglich.
Ausblick und weitere Schritte
Die Entwicklung von Software ist in der Regel sehr zeitintensiv und so verging seit meinem letzten Beitrag bis heute eine recht lange Zeit, bis die neuen Funktionen implementiert und vorgetestet waren, so dass ich sie zur Verfügung stellen konnte.
Somit wäre es mir natürlich sehr recht, wenn sich der eine oder anderer Mitstreiter (oder auch Mitstreiterin) findet, um neue Ideen umzusetzen und die Entwicklungszeiten zu verkürzen .
Dennoch macht mir die Entwicklung natürlich auch so Spaß und ich hoffe sehr, dass die Strak-Machine der/ dem einen oder anderen von Nutzen sein kann.
Soweit es meine Freizeit zulässt, möchte ich darum in Zukunft in kommenden Releases gerne noch die folgenden Verbesserungen und Weiterentwicklungen vornehmen:
Planform-Creator:
- Eine grafische, möglichst einfach zu bedienende Benutzeroberfläche
- Flexiblere Möglichkeiten bei der Vorgabe der Flächengeometrie, um „Feinanpassungen“ der Tragfläche vornehmen zu können oder um auch einfach nur ein optisch eigenständiges Design realisieren zu können
- Ggf. noch weitere Exportmöglichkeiten zur Unterstützung anderer Tools (z.B. Flow5)
- Evtl. eine einfache erste Berechnung der Auftriebsverteilung, so dass eine Voroptimierung der Tragflächengeometrie bereits im Planform-Creator erfolgen kann.
Strak-Machine --> Airfoil-Machine:
- Bessere Unterstützung bei der Optimierung von Einzelprofilen / des Wurzelprofils (dies ist zwar bereits heute schon möglich, aber etwas umständlich)
- Mehr Möglichkeiten, die bisher ungenutzten Features von Xoptfoil in der grafischen Benutzeroberfläche parametrieren zu können
Aktuelles Release zum Download
Ich hoffe sehr, dass ich durch meinen kurzen Beitrag zu den neuen Funktionen der Strak-Machine bei dem einen oder anderen Leser/Leserin das Interesse geweckt habe, die Software in ihrer aktuellen Fassung einmal selbst auszuprobieren.
Ein aktuelles Release zum Download findet man unter dem folgenden Link:
https://github.com/Matthias231/The-Strak-Machine/releases/download/R3/Strakmachine_R3.zip
Gegenüber dem Prototyp habe ich aus Zeitgründen mittlerweile darauf verzichtet, eine Standalone-Version zu erstellen, welche ohne Python-Installation auskommt (beim Prototyp war dies die „Strak-Machine instant“)
Eine Beschreibung des Installationsprozesses („HowToinstall“), sowie ein Batchfile, welches automatisch weitere benötigte Python-Pakete nachinstalliert („pip_install.bat“), wird aber innerhalb des Releases mitgeliefert, so dass die Installation von Python kein großes Problem darstellen sollte.
Weiterhin ist eine Beschreibung der ersten Schritte („FirstSteps“) enthalten, mit deren Hilfe man das in diesem Beitrag bisher Beschriebene nachvollziehen sowie ein erstes eigenes Strak-Profil erzeugen kann.
Ich wünsche nun allen Interessierten beim Ausprobieren viel Erfolg!
Matthias