Xfoil_Worker – Ein kleines Tool zur Profilbearbeitung

Jojo26

User
Wer sich häufiger mit dem Entwurf von Profilen beschäftigt, wird sicherlich das ein oder andere Mal an dem Punkt angekommen sein, wo man ein herzhaftes “Jetzt rutsch mir doch den Buckel runter!” vor sich hin murmelt. Nach der der 17. Iteration nochmal alle Profile einer Fläche durchrechnen – und das dann noch für verschiedene Klappenstellungen … Nein!

Xfoil_Worker versucht diesen Punkt („Buckel runter rutschen“) möglichst hinauszuzögern indem er sich wiederholende Arbeitsschritte zu automatisieren hilft.

Das Tool kann nicht viel, kommt ohne Benutzeroberfläche aus, ist daher gar nicht „sexy“, versucht aber die wenigen Sachen, die es kann, möglichst gut und schnell zu erledigen. Gedacht also als hilfreiches, weiteres Werkzeug für den ambitionierten Profil-Werker. Als Windows Kommando-Zeilen-Tool kann es einfach in eine kleine Batch-Datei eingebaut werden, so dass es dann auch per Mouse-Click gestartet werden kann.

Entstanden ist der „Worker“ als Nebenprodukt zu den Arbeiten rund um Xoptfoil-JX zur Profiloptimierung und dem Projekt „Strak Machine“ (more to come …). Der Name „Xfoil_Worker“ weist bereits darauf hin, dass für die meisten Funktion Programmroutinen von Xfoil, dem Klassiker der Profilberechnung, benutzt werden. Daher sollten beispielsweise die mit dem Worker erzeugten Profilpolare denen von Xflr5 oder Profili entsprechen (beide Programme nutzen auch Xfoil im Kern).

Da das Tool nicht für Einsteiger gedacht ist, möchte ich auch bei der folgenden kurzen Beschreibung der Funktionen gewisse Vorkenntnisse voraussetzen.


Normalisieren von Profilen

Das Ausgangsprofil wird „re-paneled“ (Defaultwert 200 Punkte), gedreht und normiert, so dass der Nasenpunkt genau bei 0,0 – und die Mitte der Endleiste bei 1,0 liegt.

Eine kleine Besonderheit findet an der Profilnase statt: Bei vielen Profilen unterscheidet sich der „linkeste Punkt der Profil-Koordinaten“ vom „echten, virtuellen Nasenpunkt einer gedachten Kurve durch die Koordinaten“. Der Worker bestimmt diesen „echten Nasenpunkt“ eines Profils und versucht entweder eine bestehende Profilkoordinate auf diesen Punkt zu schieben oder aber fügt einen neuen Koordinatenpunkt für diese Nase ein. Daher hat das erzeugte Profil häufig einen Datenpunkt mehr als für das re-panel angegeben.

Ein kleines Beispiel des Normalisierens:

Normalize Airfoil.png

Tipp: Mit einer kleinen Schleife in einer Batchdatei bekommt die eigene Profilsammlung in einem Rutsch eine "Frischzellenkur" (siehe Beispeil "Smooth_all.bat")


Smoothing eines Profils

Bei Smoothing wird versucht eine möglichst glatte, kontinuierliche Profiloberfläche zu erhalten. „Unsauberkeiten“ (mir fällt gerade kein besseres Wort ein) entstehen leicht bei der manuellen Bearbeitung von Profilpunkten, als ungewolltes Ergebnis beim inversen Profildesign, durch Bugs in Programmen oder ganz profan, wenn die Koordinaten der Profildatei zu wenig Dezimalstellen haben.
Das Programm „Profil-Editor“ widmet sich auch dieser Aufgabenstellung und erlaubt Koordinatenpunkte mit hoher Genauigkeit manuell zu verschieben. Der Worker verfolgt hier einen programmatischen Ansatz bei dem versucht wird, so viel wie nötig, aber so wenig wie möglich automatisch zu korrigieren. Ziel ist es, die grundlegenden Profileigenschaften möglichst nicht zu verändern.

Zum Einsatz kommt ein recht einfacher, leichtgewichtiger Algorithmus (Chaikin Corner Cut), der in seiner Funktion gut mit „Schmirgelpapier“ verglichen werden kann. Wenn das Smoothing mehrmals – zum Beispiel hunderte Male – auf ein Profil angewendet wird, beginnt auch das Profil langsam dünner zu werden. Also wie im richtigen Leben…

Zur Veranschaulichung noch ein Beispiel anhand eines durchaus bekannten Profils. Dargestellt als blau gestrichelte Linien ist die Krümmung (= 2. Ableitung) des Profil-Polygons. Die Zick-Zack-Linie ist vor allem das Ergebnis von nur 4 Dezimalstellen in der Profildatei. Rot gestrichelt dann das Ergebnis nach dem Smoothing und mit 7 Dezimalstellen.

Smoothing.png

Ein kleiner Hinweis: In manchen Fällen ergibt sich doch eine augenscheinliche Veränderung der Profileigenschaften, insbesondere bei den Profilmomenten. Die Ursache hierfür liegt dann vermutlich in einem „Mikro-Hinterkanten-Spoiler,“ der sich bei inversen Profildesign leicht einschleicht, mit bloßen Auge praktisch nicht erkennbar ist, den Momentenverlauf aber stark beeinflusst. Dieser Mikro-Spoiler wird beim Smoothing „gnadenlos“ abgetragen.

Und noch ein Hinweis: Die mit Xfoil_Worker erzeugten Profile sollten nicht weiter in Xflr5 bearbeitet oder gar gespeichert werden. Sonst kann man wieder von vorne anfangen. Xflr5 arbeitet in der aktuell verfügbaren Version 6.47 noch mit 5 Dezimalstellen und hat ein paar kleine Bugs bei der Änderungen von Dicke oder Wölbung...


Setzen der Wölbklappe

Beim Ausgangsprofil wird auf Basis der vorgegeben Parameter die Klappe auf den gewünschten Wert gesetzt.
Isoliert gesehen ist diese Funktion nicht besonders hilfreich. Interessant wird es dann aber mit …


Berechnen der Profilpolare

Die Polarenberechnung entspricht in den Möglichkeiten ungefähr denen von Xflr5. Es können sowohl Typ 1 als auch Typ 2 berechnet werden. Bei der Polarenberechnung wird versucht, „Ausreißer“, die beispielsweise durch Nicht-Konvergenz an einem Arbeitspunkt entstehen, zu erkennen und zu korrigieren.
Die Ergebnispolare wird im sogenannten „Xfoil-Format“ abgespeichert. In Xflr5 kann eine solche Polarendatei mit der Funktion „Import Xfoil Polar“ direkt wieder eingelesen werden.

Tipp: Im Dateiauswahl-Dialog von Xflr5 lassen sich alle erzeugten Polarendateien mit dem Suchfilter anzeigen, selektieren und anschließend mit „einem Schlag“ einlesen.
Und noch Hinweis: In der aktuellen Version von Xflr5 wird der Typ der importierten Polar nicht korrekt angezeigt, dadurch nicht verwirren lassen. Intern werden die Polare richtig zugeordnet.


Das Programm Xfoil_Worker ist Teil von Xoptfoil-JX und hier auf Github in der jeweils neuesten Version zu finden: https://github.com/jxjo/Xoptfoil/releases. Wer das Tool mal gschwind testen möchte, findet im Anhang die aktuelle Version in der Minimalkonfiguration einschließlich eines kleinen Beispiels.

Falls Ihr noch weitere Ideen habt, welche Aufgaben der Worker übernehmen könnte, schreibt sie doch hier rein. Bei genügend Bedarf wird der Worker gerne erweitert.

Viele Grüße

Jochen

(Tobias, danke für das kritische Testen und die spannenden Diskussionen über die Ergebnisse! ;) )
 

Anhänge

  • Xfoil_Worker-windows.zip-umbenannt in.txt
    763,5 KB · Aufrufe: 228

Tunc Uzun

Vereinsmitglied
OS Vorraussetzungen... Limitierungen...

OS Vorraussetzungen... Limitierungen...

Hallo Jochen,

Und erst einmal vielen Dank das Du dein Tool mit dem Rest der "rechnenden Zunft" teilst! :)

Habe versucht es kurz anzuwerfen unter Win10, sehe aber nur sehr kurz ein Fenster auf- und zugehen ohne das ich etwas erkennen kann.
Welche Vorraussetzungen erwartet dein Tool (.Net oder ähnliches)? Denn irgendwas scheint ihm zu fehlen oder zu missfallen...
 

Jojo26

User
Hallo Tunc,

... wenn Du den Worker in irgendeinem Verzeichnis laufen lassen willst, musst Du einen "Path" auf das Verzeichnis legen, in dem Xfoil_Worker.exe liegt. Oder Du kopierst das Programm in das Verzeichnis, in dem Du es laufen lassen willst. Dann sollte ein Batch-Job mit dem Aufruf des Workers laufen. Hast Du das so gemacht?

... wenn das Fenster nach wie vor nur "aufblitzt", solltest Du einen Command-Shell (="Eingabeaufforderung") öffnen, in das Verzeichnis wechseln und den Worker von Hand aufrufen. Eventuelle Fehlermeldungen sollten dann zu sehen sein.

Gutes Gelingen!

Jochen
 

husi

User
Frage

Frage

Hallo Jochen,

erst einmal vielen Dank, das du uns das Programm XFoil_worker zur Verfügung stellst.

Zum testen habe ich eine DAT-Datei genommen, die eine schlimme Punktverteilung hat. Die Datei wollte ich gerne glätten, weil XFoil nur Blösinn in der Druckverteilung auspuckt.
Hier ein Screenshot aus dem AutoCAD und entsprechende DAT-Datei.

Kannst du mir sagen, was ich genau (laut dem Hinweis) machen soll? Bisher habe ich "blos" die XFoil.exe benutzt, ein Programm Kompiliert habe ich zuletzt im DOS-Zeitalter...

Frage.png

So sieht es im XFoil aus...
XFoil_Punkte_geglättet.png


Vielen Dank
Mirko
 

Anhänge

  • MH_63_mod.dat
    17,4 KB · Aufrufe: 120

Jojo26

User
Hallo Mirko,

... au, au - was hast Du denn da aus Deinem Profilkeller geholt? ;)

Die (Xfoil) Fehlermeldung sagt aus, dass die maximale Anzahl Datenpunkte (zur Zeit ca. 360) bei dem Profil überschritten werden.
Typischerweise bewegt man sich heute zwischen 160 - 250 Datenpunkten.

Im Anhang habe ich Dir das Profil auf 200 Punkte normiert. Du kannst auf der Basis versuchen die noch "wilde" Oberfläche zu smoothen.

Viele Grüße

Jochen
 

Anhänge

  • Mirkos_MH_63_mod-norm.dat
    5,1 KB · Aufrufe: 130

husi

User
Hallo Jochen,
... au, au - was hast Du denn da aus Deinem Profilkeller geholt? ;)
schaurig nicht?

Es sieht nach deiner "Zauberbehandlung" schon viel besser aus. Es könnte sein, das ich diese Zauberbehandlung noch hin und wieder einmal brauche.
Würdest du uns / mir auch verraten, wie du es geschafft hast, die Punkte zu reduzieren?
Frage_2.png - Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Frage_2.png Ansichten: 0 Größe: 10,3 KB ID: 11801965


Ich habe mir einen Bauplan als Download-Plan gekauft und wollte das Profil nachrechnen. Denn in den div. Bauberichten wurde hin und wieder geschrieben, das das Modell wie ein Amigo fliegt. Die meisten Erstflüge endeten nach dem Freigeben des Modells in einem Looping mit anschließender Reparatur. Genau dies wollte ich nicht, wenn ich das Modell baue und einfliege...


Vor und nach dem Glätten (mit xfoil_worker) sieht es so aus 😀
Beide Versionen sind mit der gleichen reduzierten Punktanzahl im XFoil gerechnet.
Vergleich.png - Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Vergleich.png Ansichten: 0 Größe: 16,1 KB ID: 11801966


Vielen Dank
Mirko
 
Hi, cool das Du xoptfoil weiterentwickelst - ich hab in der Vergangenheit da auch schon einige, in meinen Augen sinnvolle, Funktionen reingestrickt.
Hab versucht das letzte Release zu kompilieren, da fehlt aber "omp_lib" (in main.f90) - jetzt nehm ich erstmal die compilierte Version.
 
...in der Doku fehlt beim Kapitel "Polars" das "-w polars" in den Beispielen. Komicherweise scheint er dann trotzdem nichts zu tun:

PS C:\Portable\Xoptfoil-JX-1.52.1-windows\BW> Xfoil_worker -w polars -i iPolars.txt -r 600000 -a RG15-smoothed.dat -o RG15

Xfoil_Worker Version 1.52.1 (c) 2020 Jochen Guenzel

Reading airfoil from file: RG15-smoothed.dat

Usage: Xfoil_worker -w worker_action [Options]

-w polars Generate polars of 'airfoil_file'
-w norm Repanel, normalize 'airfoil_file'
-w smooth Repanel, normalize, smooth 'airfoil_file'
-w flap Set flap of 'airfoil_file'

Options:
-i input_file Specify an input file (default: 'inputs.txt')
-o output_prefix Specify an output prefix (default: 'foil')
-r xxxxxx Specify a default reynolds number (re_default)
-a airfoil_file Specify filename of seed airfoil
-v Generate file 'design_coordinates' for visualizer
-h, --help Display usage information and exit

Refer to the worker reference guide for complete input help.

PS C:\Portable\Xoptfoil-JX-1.52.1-windows\BW>

das iPolars.txt sieht so aus:
&polar_generation
generate_polars = .true.
type_of_polar = 1
op_mode = 'spec-al'
op_point_range = -4, 13, 0.25
polar_reynolds = 100000, 200000, 500000
/

Noch eine Kleinigkeit: in der Doku wiederholt sich immer "Command line options used for polar generation:"
 

Jojo26

User
Hallo Mirko,

Würdest du uns / mir auch verraten, wie du es geschafft hast, die Punkte zu reduzieren?

... das war kein "magic" ;) Ich hatte im Xfoil-Code kurzzeitig die maximale Punkteanzahl erhöht um dann Dein Profil normieren zu können. Da ich eventuelle Seiteneffekte dieser Erhöhung nicht untersuchen wollte, habe ich diese Veränderung nicht dauerhaft gemacht.
Es freut mich, wenn es Dir geholfen hat. Ich hatte schon vermutet, dass das Profil aus einem CAD-Programm stammt...

Hallo "Röhrich",

... vielen Dank für die Hinweise! Und sorry. Da hat sich wiedermal ein Typo eingeschlichen. Der Parameter für die Polarenerzeugung heißt "-w polar" (also ohne "s"). Ich ändere die Ausgabe des Hilfetextes und verbessere die Fehlermeldung.

Eine Anmerkung: Wenn in der Steuerdatei RE-Zahlen für die Polare angegeben sind, haben diese Vorrang vor der Re-Zahl in der Kommandozeile (Parameter "-r") - oder andersrum: Der Parameter ist dann überflüssig.

Hab versucht das letzte Release zu kompilieren, da fehlt aber "omp_lib" (in main.f90)

... das ist Fortran-Lib für Multi-Threading. Sie sollte eigentlich beim GNU Fortran-Compiler dabei sein (?). Wenn Du in der CMake-Steuerdatei "CMakeLists.txt" das Multi-Threading ausschaltest, müsste es auch ohne die Lib kompilieren ("set(ENABLE_OPENMP FALSE")

Viele Grüße

Jochen
 

Jojo26

User
Neue Version des kleinen Tools: Xfoil_Worker v1.60

Erweiterungen:
  • Setzen von Dicke und Wölbung eines Profils und der Rücklagen
  • Mischen von zwei Profilen
Der Xfoil_Worker ist vor allem nützlich, um sich wiederholende Arbeitsschritte in hoher Qualität zu automatisieren. Beispielsweise wurden diese Profile und Polare mit einem kleinen Batch-Job erzeugt:

JX-GX Vergleich Dicken.png

Das Programm Xfoil_Worker ist Teil von Xoptfoil-JX und auf Github in der jeweils neuesten Version zu finden: https://github.com/jxjo/Xoptfoil/releases.
Wer das Tool mal gschwind testen möchte, findet im Anhang die aktuelle Version in der Minimalkonfiguration einschließlich eines kleinen Beispiels.
 

Anhänge

  • Xfoil_Worker-1.60-windows.zip - umbenannt in .txt
    831,2 KB · Aufrufe: 229
Ansicht hell / dunkel umschalten
Oben Unten