Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  OpenFOAM
  pimpleFoam & displacementLaplacian: Zelle überlappt/ kollidiert bei Rotationsbewegung

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  pimpleFoam & displacementLaplacian: Zelle überlappt/ kollidiert bei Rotationsbewegung (819 mal gelesen)
JulianSchl
Mitglied


Sehen Sie sich das Profil von JulianSchl an!   Senden Sie eine Private Message an JulianSchl  Schreiben Sie einen Gästebucheintrag für JulianSchl

Beiträge: 7
Registriert: 05.06.2021

erstellt am: 05. Jun. 2021 16:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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





Sehen Sie sich das Profil von Shor-ty an!   Senden Sie eine Private Message an Shor-ty  Schreiben Sie einen Gästebucheintrag für Shor-ty

Beiträge: 2463
Registriert: 27.08.2010

OpenFOAM-dev (Foundation)
OpenFOAM-xxxx (ESI)

erstellt am: 06. Jun. 2021 09:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für JulianSchl 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von JulianSchl an!   Senden Sie eine Private Message an JulianSchl  Schreiben Sie einen Gästebucheintrag für JulianSchl

Beiträge: 7
Registriert: 05.06.2021

erstellt am: 06. Jun. 2021 17:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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:
Profil
Profilhinterkante

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.
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





Sehen Sie sich das Profil von Shor-ty an!   Senden Sie eine Private Message an Shor-ty  Schreiben Sie einen Gästebucheintrag für Shor-ty

Beiträge: 2463
Registriert: 27.08.2010

OpenFOAM-dev (Foundation)
OpenFOAM-xxxx (ESI)

erstellt am: 06. Jun. 2021 18:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für JulianSchl 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von JulianSchl an!   Senden Sie eine Private Message an JulianSchl  Schreiben Sie einen Gästebucheintrag für JulianSchl

Beiträge: 7
Registriert: 05.06.2021

erstellt am: 07. Jun. 2021 17:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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





Sehen Sie sich das Profil von Shor-ty an!   Senden Sie eine Private Message an Shor-ty  Schreiben Sie einen Gästebucheintrag für Shor-ty

Beiträge: 2463
Registriert: 27.08.2010

OpenFOAM-dev (Foundation)
OpenFOAM-xxxx (ESI)

erstellt am: 08. Jun. 2021 20:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für JulianSchl 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von JulianSchl an!   Senden Sie eine Private Message an JulianSchl  Schreiben Sie einen Gästebucheintrag für JulianSchl

Beiträge: 7
Registriert: 05.06.2021

erstellt am: 11. Jun. 2021 08:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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





Sehen Sie sich das Profil von Shor-ty an!   Senden Sie eine Private Message an Shor-ty  Schreiben Sie einen Gästebucheintrag für Shor-ty

Beiträge: 2463
Registriert: 27.08.2010

OpenFOAM-dev (Foundation)
OpenFOAM-xxxx (ESI)

erstellt am: 12. Jun. 2021 09:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für JulianSchl 10 Unities + Antwort hilfreich

Mach mal dein Farfield auf fixedValue in den pointDisplacement. Ich kann es leider nicht testen und selber probieren. Sind nur alles Vermutungen.

------------------
Glück Auf,
Tobi

OpenFOAM® Community - Knowledge Base

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

JulianSchl
Mitglied


Sehen Sie sich das Profil von JulianSchl an!   Senden Sie eine Private Message an JulianSchl  Schreiben Sie einen Gästebucheintrag für JulianSchl

Beiträge: 7
Registriert: 05.06.2021

erstellt am: 12. Jun. 2021 10:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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





Sehen Sie sich das Profil von Shor-ty an!   Senden Sie eine Private Message an Shor-ty  Schreiben Sie einen Gästebucheintrag für Shor-ty

Beiträge: 2463
Registriert: 27.08.2010

OpenFOAM-dev (Foundation)
OpenFOAM-xxxx (ESI)

erstellt am: 12. Jun. 2021 10:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für JulianSchl 10 Unities + Antwort hilfreich

Was mir gerade natürlich noch einfällt wäre OverSet Mesh. Damit kannst deine Rotationen aufjedenfall ganz simple gestalten, da jedes Flügelprofil eigenständig bewegt wird. Das Hintergrundnetz kann hierbei dann auch statisch bleiben.

------------------
Glück Auf,
Tobi

OpenFOAM® Community - Knowledge Base

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz