Xoptfoil2 - Der Profil Optimierer

Jojo26

User
Ein Programm zur Entwicklung und Optimierung von Tragflächenprofilen.

Xoptfoil2 verfolgt den Ansatz, ein Profil durch seine aerodynamischen Eigenschaften, seine Polare, zu beschreiben und daraus die geometrische Form abzuleiten. Im Gegensatz beispielsweise zu „Inversem Profil-Design“ bei der die Geometrie aus der vorgegebenen Druckverteilung abgeleitet wird.

Xoptfoil2 ist der Nachfolger des originalen Xoptfoil von Daniel Prosser und Xoptfoil-JX einer Weiterentwicklung durch Jochen Günzel in den vergangenen Jahren.

Vorgeschichte


Eigentlich sollten nur einmal schnell Bezier-Kurven als weitere Möglichkeit, die Geometrie eines Profils zu definieren, in Xoptfoil-JX eingebaut werden …

Im Projekt Planform Creator 2 (auf RCN hier beschrieben) hatte ich mich zum ersten Mal mit den faszinierenden Bezier-Kurven auseinandergesetzt. Beim Planform Creator 2 dienen sie dazu, den Grundriss einer Tragfläche festzulegen. Der große Vorteil einer Bezier-Kurve ist, dass sich über ihre Kontrollpunkte intuitiv und elegant die Form der Kurve verändern lässt. Im Folgeprojekt Airfoil Editor (auf RCN hier beschrieben) wurden dann die grundsätzlichen Algorithmen zur Darstellung eines Profils mit Bezier-Kurven evaluiert. Damit konnte es dann eigentlich an den Einbau in Xoptfoil-JX gehen …

… wer schon einmal an einem Haus umgebaut hat, kennt die Situation: Eigentlich will man nur mal g’schwind das ehemalige Kinderzimmer in ein Gästezimmer umbauen… größere Fenster wären eigentlich schöner – dann gleich im ganzen Haus - ah, der alte Boden! Raus damit - die Elektrik sieht marode aus – und eigentlich wäre eine große, offene Küche toll …

Am Ende des "Einbaus" wurde fast 80% der Code-Basis von Xoptfoil-JX um- bzw. neu geschrieben. Ziel war es dabei, eine robuste und wartbare Basis für zukünftige Erweiterungen zu schaffen. Nahezu unberührt blieb der Kern der aerodynamischen Berechnungen: Xfoil. Es ist schon faszinierend, wie dieses nun fast 40 Jahre alte Meisterwerk der aerodynamischen Profilberechnung nach wie vor „schnurrt wie ein Kätzle“.

Es freute den Autor des genialen Xoptfoil, Dan Prosser, zu hören, dass sein Programm in die Zukunft getragen wird und war sogleich einverstanden, dieser Weiter- und Neuentwicklung den Namen Xoptfoil2 zu geben:


Xoptfoil2.png

Leistungsmerkmale

  • Profilentwurf auf Basis der „Polare“
  • Optimierung mit „Partikelschwarmoptimierung“
    • Partikel-Retry und Partikel-Rettung
    • Dynamische Gewichtung der Optimierungsziele
  • Aerodynamische Evaluierung mit Xfoil
    • Retry bei Nicht-Konvergenz
    • Erkennen von fehlerhaften Xfoil-Ausreißern
  • Geometrie Form-Funktionen wahlweise
    • Hicks-Henne „Beulen“ Funktion
    • Bezier-Kurve
    • Veränderung der Profil-Parameter
  • Definition der Optimierungsaufgabe mit Arbeitspunkten und
    • Minimaler Widerstand, maximales Gleiten, maximaler Auftrieb
    • Zielwerten für Widerstand, Auftrieb, Gleitzahl
    • Klappenwinkel und Klappenwinkel-Optimierung
  • Profildicke und Wölbung als geometrische Ziele
  • Kontur-Krümmungskontrolle
    • Beulenerkennung bei Hicks-Henne-Funktionen
    • Maximale Krümmung an der Hinterkante
  • Verbesserung einer Optimierung mit verfeinerten Zielen
  • „Worker“ Hilfsprogramm zum Automatisieren typischer Aufgaben bei der Profilentwicklung

Programm, Download und Dokumentation


Xoptfoil2 ist nach wie vor als Command Line Tool ohne grafische Benutzerfläche konzipiert. Die Eingabeparamter werden aus einer Eingabedatei gelesen, das Programmiert prüft und optimiert und am Ende wird das optimierte Profil erzeugt.

Durch die fehlende Benutzeroberfläche ist das Programm für heutige Verhältnisse extrem klein (ca. 2MB) und benötigt keine aufwändige Installation, da es im Grunde nur aus einer Datei besteht. Programmiert in Fortran macht es, wenn möglich, starken Gebrauch von Multi-Threading, um die Rechen-Ressourcen eines PCs best möglich für die Optimierung zu nutzen.

Die jeweils aktuelle Version von Xoptfoil2 ist auf Github unter Releases zu finden. Für Windows reicht es, die zip-Datei herunterzuladen und man kann direkt mit den Beispielen beginnen.
Für Linux müssen die Sourcen heruntergeladen, compiliert und gelinkt werden.

In der neuen Dokumentation werden neben Grundlagen der Profiloptimierung, einem „Getting started“, alle Parameter zur Steuerung der Optimierungsaufgabe erläutert (bitte aufmerksam lesen).

Zur Vorbereitung des Ausgangsprofils einer Optimierung und zum Betrachten des erzeugten Profils wurde der Airfoil Editor https://github.com/jxjo/AirfoilEditor optimiert. Er ist in der Lage, Bezier- oder Hicks-Henne-basierte Profile bzw. Dateiformate zu lesen und darzustellen.


Erste Schritte …

Wer träumt nicht davon in dem nächsten Modell-Projekt eigene, für die Flugaufgabe optimierte Profile, einzubauen?

Zwar wird mit Xoptfoil2 der Entwurf speziell optimierter Profile deutlich vereinfacht, aber ohne aerodynamische Grundkenntnisse, beispielweise das Lesen und Verstehen von Polaren, sollte man sich nicht auf die „Reise“ begeben. Auf der anderen Seite ist die Beschäftigung mit Xoptfoil2 eine tolle Möglichkeit, sich „spielerisch“ in die faszinierende Welt der Profil-Aerodynamik vorzuarbeiten, um dann einige Zeit später (und mit ein wenig Geduld) ganz selbstverständlich mit laminar-turbulenten Umschlag hier und einer Blase dort zu jonglieren…

Für die ersten Schritte empfehle ich sehr, das kleine Kapitel „Getting started“ https://jxjo.github.io/Xoptfoil2/docs/getting_started durchzuarbeiten und ein Verständnis der Wechselwirkung von aerodynamischen Eigenschaften und der Profil-Geometrie aufzubauen – bevor es dann an anspruchsvollere Beispiele mit Hicks-Henne oder Bezier-Funktionen geht.


Projektstatus

Die Version 1.0 ist nun veröffentlicht. Mit ihr können hochwertige Profilentwürfe erzeugt werden, wie sie beispielweise in aktuellen Leistungsmodellen eingesetzt werden.

Geplant ist bzw. war eine grafische Benutzeroberfläche zu entwickeln mit der eine Optimierungsaufgabe definiert und die Ergebnisse analysiert werden können. Der aktuelle Fertigstellungs-Status liegt bei ca. 60%. Ob diese Entwicklung fortgeführt wird, hängt auch vom weiteren Interesse an Xoptfoil2 ab…


Open Source

Mit der Entwicklung rund um Xoptfoil2 bin ich als „one man show“ doch an meine zeitlichen Grenzen gekommen – geschätzt sind viele hundert Stunden in die Entwicklung geflossen.

Das Entwicklungsziel, ein möglichst allgemeingültiges Programm zu schreiben, das mit einer Vielfalt von Profilen in unterschiedlichster Ausgangsqualität, einer großen Bandbereite von Optimierungsaufgaben, den Eigenheiten von Xfoil und schließlich den Unberechenbarkeiten des Partikel-Schwarms zurechtkommt verlangte nach zahlreichen Entwicklungsiterationen und unzähligen Testläufen. Nun ist erstmal „Luft holen“ und hoffentlich bald wieder Fliegen am Hang angesagt 😉

Xoptfoil2 ist Open Source und soll gerne kostenlos genutzt werden. Sehr freuen würde ich mich aber über Rückkopplung von Erfahrungen, Tipps zur Verbesserung des Programms oder der Dokumentation und natürlich besonders, wenn der ein oder andere Software-Macher Lust hat, an dem Projekt mitzuarbeiten.


Nun aber

... genug der Worte.

Viel Freude mit Xoptfoil2 und lasst die Rechner glühen für das neue Super-Profil 🚀

Jochen
 
Zuletzt bearbeitet von einem Moderator:
Servus Jochen!

Vielen Dank für dein großartiges Engagement und das du die Programme frei zur Verfügung stellst. Dies ist ja in keinster Weise selbstverständlich!

Ich habe mich schon etwas mit den beta Versionen und auch mit Version 1 gespielt und ich bin wirklich begeistert.
Dank deiner super Doku dazu ist es selbst für mich als nicht gerade Computeraffinen leicht gewesen alles zu laufen zu bekommen.
Nach kurzer Zeit hatte ich schon einen vielversprechenden ersten Entwurf für einen Profilstrak, der so wahrscheinlich sofort in Positiv gebaut werden kann. Weitere Verbesserungen sind dann eher akademischer Natur, wenn man an die Bauungenauigleiten denkt.

Was auch spitze ist, dass man wie du schon auf der xoptfoil2 Seite schreibst viel über Aerodynamik und Profileigenschaften, Geometrie und Verhalten lernt, wenn man sich mit dem Programm spielt.

Ich würde mich sehr über eine GUI freuen, weil das sicher noch einiges erleichtern bzw. anschaulicher machen würde!

Ich denke mit diesem Programm hast du interessierten Laien ein wahnsinns Tool geschaffen, um in das Thema der Profilentwicklung einzutauchen.

Spannend wird auch sein, ob dadurch nochmal ersichtliche Fortschritte für Leustungsprofile möglich sind!

Also nochmals Vielen Dank!

LG Manuel
 

Jojo26

User
Xoptfoil2 v1.0.2

In dieser neuen kleinen Version wurde der bereits von Xoptfoil-JX bekannte ‚Xfoil_worker‘ nun mit dem Namen ‚Worker‘ wieder zum Leben erweckt.

Der ‚Worker‘ ist ein handliches Tool, um wiederkehrende Aufgaben rund um die Profilbearbeitung und -Optimierung automatisieren zu können. Er nutzt die internen Funktionen von Xoptfoil2, um sie dann als Kommandozeilen-Befehle zur Verfügung zu stellen.

Die verschiedenen Möglichkeiten des ‚Worker‘ sind in der neuen Online-Dokumentation beschrieben. An dieser Stelle soll daher nur die Polaren-Berechnung des ‚Worker‘ näher beleuchtet werden:


Polaren-Generierung

Für die Berechnung der Polaren eines Profils verwendet der ‚Worker‘ (und auch Xoptfoil2) die entsprechenden Funktionen von ‚xfoil‘ in der gleichen Art und Weise, wie sie beispielsweise von Xflr5 genutzt werden. Die erzeugten Polare sind daher identisch.

Um einzelne Polare eines Profils zu berechnen ist es in der Regel am einfachsten, dies direkt in und mit Xflr5 zu machen. Der ‚Worker‘ kommt zum Einsatz, wenn beispielsweise für die aerodynamische Berechnung einer Tragfläche die Polarenschar der Einzelprofile berechnet werden soll – dies dann noch für unterschiedliche Klappenwinkel.

Mit einem Aufruf kann der ‚Worker‘ n Polare für m Klappenwinkel eines Profils errechnen. Dabei werden auch die .dat-Dateien des „ausgeschlagenen“ Profils mit ausgegeben.

Die Polare werden im sogenannten xfoil-Format erzeugt, wodurch sie direkt in Xflr5 eingelesen werden können.


Polaren-Datenbank

Die Ausgabe der Polaren kann optional auch im CSV-Format erfolgen, das wiederum beispielsweise von ‚Excel‘ gelesen werden kann.

Die Polare eines Profils – optional auch die Polare weiterer Profile – werden dabei an das Ende der CSV-Ausgabedatei angehängt, wodurch eine Art Polaren-Datenbank entstehen kann, die dann beispielsweise für eine Excel- Pivot-Analyse zur Verfügung steht. Der ‚Analyse-Fantasie‘ für die Bewertung von Profileigenschaften sind dann keine Grenzen gesetzt. Hier nur ein mehr oder weniger sinnvolles Beispiel, wie die Polaren-Daten in Excel aussehen können.

worker_excel_analysis.png

Interessant wird diese Möglichkeit vor allem in der vergleichenden Bewertung von Profileigenschaften …


Polaren ‚auto_range‘

Bei Polaren-Generierung gibt es eine neue Option ‚auto_range‘. Wird sie gesetzt, muss nicht mehr wie sonst üblich der alpha- oder cl-Bereich vor der Polaren-Berechnung definiert werden.

Die Polaren-Berechnung beginnt bei 0 Grad und endet, wenn cl-max überschritten wurde (darüber, wenn die Strömung abgerissen ist, sind die xfoil-Werte nicht mehr ‚aussagefähig‘). In einem zweiten Berechnungslauf wird die Polare von 0 Grad abwärts gerechnet und endet hier, wenn cl/cd-min erreicht wurde. Am Ende werden die beiden Halb-Polare wieder zu einer Polare zusammengesetzt.

Der große Vorteil von ‚auto_range‘ ist dann, dass die Polare dann entweder nicht mehr den langen „cd-Zipfel“ haben oder zu früh enden. Dadurch passt dann auch gleich der Anzeigebereich in Xflr5, um die Polare zu bewerten:

worker_auto_range.png

So viel für heut … 😉

Viele Grüße

Jochen
 
Ansicht hell / dunkel umschalten
Oben Unten