| |  | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: pimpleFoam & displacementLaplacian: Zelle überlappt/ kollidiert bei Rotationsbewegung (1270 / mal gelesen)
|
JulianSchl Mitglied
 Beiträge: 7 Registriert: 05.06.2021
|
erstellt am: 05. Jun. 2021 16:09 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, Ich versuche eine Rotationsbewegung eines Flügelprofils um die Achse der Profilhinterkante mit pimpleFoam & dem displacementLaplacian Solver zu simulieren (Animation). Nach 558 von 1000 Zeitschritten crasht die Simulation mit einem generischen Fehler. Grund dafür ist das Überlappen / Kollidieren von einer Zelle am der Profilhinterkante:
 Ein Video der Zellkollision ist hier verfügbar. Um das Problem zu beheben habe ich folgendes ausprobiert: Verbessern der Steifigkeit des Meshs mit der cell diffusivity durch das ändern von
Code: displacementLaplacianCoeffs { diffusivity uniform; }
zu Code: displacementLaplacianCoeffs { diffusivity exponential 0.01 inverseDistance ("airfoil.*"); }
, jedoch ohne Erfolg. Die Kollision verzögert sich nur ein bisschen, findet jedoch dennoch statt. Außerdem habe ich versucht den Zeitschritt zu verkleinern von
Code: deltaT 0.01;
zu Code: deltaT 0.001;
Dies hat in einer noch schnelleren Kollision geendet. Nun frage ich mich / euch, welche Parameter ich außerdem ändern könnte, um eine Kollision / ein Überlappen von Zellen verhindern kann. Für einen besseren Überblick habe ich hier Videos der Meshbewegungen angehängt: Flügel unten Flügel oben gesamter Flügel Außerdem habe ich hier den kompletten Fall angehängt. (Es handelt sich um eine gekoppelte Simulation mit der Koppelungslibrary preCICE, welche OpenFOAM mit MBDyn koppelt. Darum ist es nicht möglich die OpenFOAM Simulation auszuführen, ohne die installation von preCICE und MBDyn durchzuführen. Die OpenFOAM Dateien können jedoch ohne Probleme angeschaut werden :zwinker  [Diese Nachricht wurde von JulianSchl am 05. Jun. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 06. Jun. 2021 09:20 <-- editieren / zitieren --> Unities abgeben:          Nur für JulianSchl
Hallo und Willkommen Julian, ein paar Infos zu Deinem Case:
- Rotation nicht nachbildbar. Wenn ich Deine dynamicDict etwas abänder, dann dreht sich alles (wäre auch ne gute Sache hier, oder meinst Du nicht?)
- Deine Randbedingungen machen für mich noch keinen Sinn, wo ist die Strömung?
- moveDynamicMesh kennst Du oder?
- Ergebnisse werden mit Deinem Netz sicherlich nicht gut sein (zu grob). Da Du aber an den Schemen einiges gemacht hast, gehe ich davon aus das Du die Numerik verstehst
- Ein Case anzuhängen mit dem man nicht arbeiten kann ist natürlich alles andere als Optimimal
- Simulation kann man ausführen, allerdings nur mit dem oben genannten moveDynamicMesh
Da man Dein Problem mit dem angehängten Fall nicht reproduzieren kann, kann ich auch keine Hilfestellung geben (Foam Version -> ESI2012).
------------------ Glück Auf, Tobi OpenFOAM® Community - Knowledge Base Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JulianSchl Mitglied
 Beiträge: 7 Registriert: 05.06.2021
|
erstellt am: 06. Jun. 2021 17:05 <-- editieren / zitieren --> Unities abgeben:         
Hallo Tobi, vielen Dank für Deine Antwort !
Zitat:
- Rotation nicht nachbildbar. Wenn ich Deine dynamicDict etwas abänder, dann dreht sich alles (wäre auch ne gute Sache hier, oder meinst Du nicht?)
Ich glaube ich muss etwas genauer erklären, was ich vor habe. Ich versuche OpenFOAM mit einem Mehrkörpersimulationsprogramm (MBDyn) mittels der Coupling Library preCICE zu koppeln. Dabei soll OpenFOAM von der anderen Simulation je Zeitschritt eine Verschiebung erhalten und diese dann in der Simulation berücksichtigen. Bei dem Modell soll es sich später um ein Flügelprofil handeln, das auf dem Rand einer Kreisscheibe um den Kreismittelpunkt rotiert und zusätzlich um den Neutralpunkt oszilliert ( Beispiel). Weil die gerne das komplette rotierende Modell in meinem Mehrkörpersimulationsprogramm simulieren möchte und dann die Verschiebungen des Blattes an OpenFOAM senden möchte, ist es mir nicht möglich die Rotation des Mesh über das dynamicDict durchzuführen (sondern nur über pointDisplacement).
Zitat:
- Deine Randbedingungen machen für mich noch keinen Sinn, wo ist die Strömung?
Das Blatt soll später die Strömung induzieren.
Zitat:
- moveDynamicMesh kennst Du oder?
Ja kenne ich ;) In meinem ersten Beitrag habe ich die Simulation mit pimpleFoam ausprobiert, da die Koppelung mit moveDynamicMesh nicht möglich ist. Nun habe ich die Koppelung entfernt und hier einen neuen Case auf Github hochgeladen ( pimpleFoam funktioniert hier nicht, aber mit moveDynamicMesh -noFunctionObjects kann die Rotation des Meshs angeschaut werden. In dem Beispiel habe ich, wie in meinem ersten Post schon beschrieben, zunächst versucht das Profil um die Profilhinterkante zu rotieren. Ich habe hierzu zwei kleine clips gemacht: ProfilProfilhinterkanteEs ist zu sehen, dass die Rotation zunächst wie erwartet verläuft, es jedoch nach weiteren Zeitschritten zu einer Überlappung der Zellen führt. Nun frage ich mich / Euch, worauf die Deformation / Kollision der Zellen zurückzuführen ist und ob es eine Möglichkeit gibt, wie man evtl. an diesen Fehler herangehen könnte.
Zitat:
- Ergebnisse werden mit Deinem Netz sicherlich nicht gut sein (zu grob). Da Du aber an den Schemen einiges gemacht hast, gehe ich davon aus das Du die Numerik verstehst
Zunächst ist die Genauigkeit nicht wirklich wichtig, Hauptsache ich bekomme die Koppelung zum Laufen  . Das Netz ist dann noch eine andere Baustelle. Die Schemen wurden mir so von meinem Betreuer empfohlen, ich muss mir zu den Schemes erst noch ein Verständnis aneignen.
Zitat:
- Ein Case anzuhängen mit dem man nicht arbeiten kann ist natürlich alles andere als Optimimal
- Simulation kann man ausführen, allerdings nur mit dem oben genannten moveDynamicMesh
Wie ich oben schon geschrieben habe, ist es nun möglich hier den Case mit moveDynamicMesh -noFunctionObjects zu testen. (Ich arbeite mit OpenFOAM-2012) Viele Grüße Julian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 06. Jun. 2021 18:43 <-- editieren / zitieren --> Unities abgeben:          Nur für JulianSchl
Zitat: Original erstellt von JulianSchl:
Es ist zu sehen, dass die Rotation zunächst wie erwartet verläuft, es jedoch nach weiteren Zeitschritten zu einer Überlappung der Zellen führt.
Wie soll das auch funktionieren? Du drehst Deine Geometrie um 360°. Zitat: un frage ich mich / Euch, worauf die Deformation / Kollision der Zellen zurückzuführen ist und ob es eine Möglichkeit gibt, wie man evtl. an diesen Fehler herangehen könnte.
Ich würde Dir da eher zu AMI raten. Du kannst auch zwei Rotationen überlager und dabei wird das Netz nicht zerstört. Nur die Interpolationen am AMI sind problematisch. In der neuersten ESI Version gibt es neue Optionen. Alles andere macht meines Erachtens keinen Sinn, da die Tragflügelrotation zu extrem ist. ------------------ Glück Auf, Tobi OpenFOAM® Community - Knowledge Base Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JulianSchl Mitglied
 Beiträge: 7 Registriert: 05.06.2021
|
erstellt am: 07. Jun. 2021 17:06 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von Shor-ty:
Wie soll das auch funktionieren? Du drehst Deine Geometrie um 360°.
Wenn das Profil auf der Kreisscheibe rotieren soll, führt es auch eine 360° Rotation durch. Ich habe in dem Beispiel nur die Rotationsbewegung visualisiert. Hier habe ich die Rotationsbewegung mit einer Translationsbewegung kombiniert und bekomme dasselbe Problem: Die Zelle kollidiert, wie anfangs hier gezeigt nach ~45° der Kreisscheibenrotation. Wenn ich nur eine reine Translationsbewegung mit displacementLaplacian ausprobiere, funktioniert die Simulation ohne Probleme (siehe hier). Anfänglich scheint die Rotation ja auch zu funktionieren, nur frage ich mich, weshalb diese Kollision der Zellen stattfindet, bzw. ob ich dies vermeiden kann. Ändern der Timesteps und der Diffusivity führen nicht zu dem gewünschten Ergebnis (siehe oben).
Zitat: Original erstellt von Shor-ty:
Ich würde Dir da eher zu AMI raten. Du kannst auch zwei Rotationen überlager und dabei wird das Netz nicht zerstört. Nur die Interpolationen am AMI sind problematisch. In der neuersten ESI Version gibt es neue Optionen. Alles andere macht meines Erachtens keinen Sinn, da die Tragflügelrotation zu extrem ist.
Das AMI an sich würde ja nicht zu dem gewünschten Ergebnis führen, sondern die Rotation des patches mit z.B. dem multiSolidBodyMotionSolver, welchen ich dann im dynamicMeshDict definieren würde. Das funktioniert auch alles, jedoch möchte ich gerne die Rotationsbewegung über die Koppelungs-Library preCICE von Extern zuführen. Der OpenFOAM-Adapter von preCICE führt die Bewegung über die in der pointDisplacement-Datei definierten patches zu. Dies wird auch hier in der Doku so beschrieben. Darum ist es mir in meinem Fall leider nicht möglich eine Rotationsbewgeung direkt über das dynamicMeshDict zu definieren. Vielleicht gibt es zu dem Verhalten des Meshs ja eine Erklärung, bzw. eine Idee, wie man dieses Problem angehen könnte. Edit: Fehlende Url hinzugefügt. [Diese Nachricht wurde von JulianSchl am 09. Jun. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 08. Jun. 2021 20:28 <-- editieren / zitieren --> Unities abgeben:          Nur für JulianSchl
Okay verstehe. Trotzdem könnte man sicherlich die AMI der einzelnen Flügel über die preCICE koppeln. Der wichtigste Videolink geht in Deinem Beitrag leider nicht. Um zu Deinen Fragen zurückzukommen: Um Dir zu helfen, müsste man wissen wie Du diese Bewegung machst. Kann leider nicht beurteilen wieso das gesamte Netz nach Links wandert - außer auf der im Video nicht ersichtlichen Netzfläche bewegt sich ein weiteres Flügelprofil. Wenn ich mir Deine Videos so anschau, dann bekommst Du später auch ein Problem am Tip des Profils. Die Verwendung von dem Laplace-Löser ist ganz gut aber auch limitiert. Große Bewegungen sind nicht drin und sind auch Netz-Zellen-Größen abhängig. Du kannst damit bspw. in einem Zylinder auch den Kolben keine 80 % der Weglänge nach oben schieben. Da ist das Netz zuvor schon alles andere also numerisch in Ordnung. Das Problem hatte ich hier auch schon zu oft. ------------------ Glück Auf, Tobi OpenFOAM® Community - Knowledge Base Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
JulianSchl Mitglied
 Beiträge: 7 Registriert: 05.06.2021
|
erstellt am: 11. Jun. 2021 08:42 <-- editieren / zitieren --> Unities abgeben:         
Hi Tobi, sorry für die verspätete Antwort. Ich wollte eigentlich versuchen, die Verwendung von AMI zu vermeiden, da die Kopplung mit der Verwendung von AMI an Flexibilität verliert. Der gekoppelte solid dynamics solver kann mit AMI die Rotationsbewegung nicht mehr steuern, da diese im AMI ja von der solidBodyMotion in OpenFOAM vorgegeben ist. Ich habe mich noch ein bisschen mit der Thematik befasst und es scheint so, als bleibt mir außer AMI nicht viel übrig. Der OpenFOAM-Adapter von preCICE soll in meinem Case ja Verschiebungen an OpenFOAM übermitteln. Die Übermittlung erfolgt über pointDisplacement. Da es von preCICE zum aktuellen Zeitpunkt keine andere Kopplungsmöglichkeit von Bewegungen anbietet und (soweit mir bekannt) über pointDisplacement keine vollständige Rotationsbewegung in OpenFOAM ausgeführt werden kann, werde ich wohl in den sauren Apfel beißen müssen . Zitat: Original erstellt von Shor-ty: Um Dir zu helfen, müsste man wissen wie Du diese Bewegung machst. Kann leider nicht beurteilen wieso das gesamte Netz nach Links wandert - außer auf der im Video nicht ersichtlichen Netzfläche bewegt sich ein weiteres Flügelprofil.
Die Bewegung wird über die pointDisplacement Datei durchgeführt (preCICE übergibt Displacements von solid solver). Die Netzbewegung entsteht dadurch, dass der Flügelprofil-Patch eine Translations- und eine Rotationsbewegung erfährt. Viele Grüße Julian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 12. Jun. 2021 09:33 <-- editieren / zitieren --> Unities abgeben:          Nur für JulianSchl
|
JulianSchl Mitglied
 Beiträge: 7 Registriert: 05.06.2021
|
erstellt am: 12. Jun. 2021 10:31 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von Shor-ty: Mach mal dein Farfield auf [i]fixedValue in den pointDisplacement. Ich kann es leider nicht testen und selber probieren. Sind nur alles Vermutungen.[/i]
Habe ich bereits versucht, habe versucht das farfield und das airfoil Patch zu rotieren. Das Mesh bleibt nahezu fix, keine Rotation. Es bleibt mir wohl nichts anderes übrig, als solidBodyMotion zu verwenden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 12. Jun. 2021 10:56 <-- editieren / zitieren --> Unities abgeben:          Nur für JulianSchl
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |