Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  OpenFOAM
  InterFoam divergiert?

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:  InterFoam divergiert? (1554 mal gelesen)
Q.E.D.
Mitglied



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

Beiträge: 18
Registriert: 21.12.2015

erstellt am: 05. Okt. 2017 00:21    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


waterairpipe.png


WaterAirPipe.zip

 
Hallo zusammen,

im Voraus: vielen Dank für das Lesen des Posts und das Betrachten der Files!

Das Problem:

Ich versuche zurzeit das im Bild gezeigte Problem zu berechnen. Der Fall ist relativ einfach gestrickt: es gibt einen Wasser- und einen Lufteinlass. Das Wasser-Luft-Gemisch wird in einem Behälter gefangen und gelangt dann über den Auslass raus.

Das Gitter:

Laut CheckMesh liegt ein akzeptables Gitter vor, wobei alle Checks OK liefern. Es ist wahrscheinlich an den Wänden etwas zu grob. Das ist leider der Tatsache geschuldet, dass mein Rechner leider nicht mehr hergibt. Ein noch feineres Gitter legt meinen Rechner leider lahm. (Ist leider relativ alt...  )

Die BCs:

Meine Vermutung ist, dass etwas an den BCs nicht richtig ist. Ich habe allerdings nun schon so viele Einstellungen getestet, dass ich kaum sagen kann, was denn nun die "beste" Wahl ist.

Aktuell für den Lufteinlass:

alpha.water:

Code:

        type        inletOutlet;
        value      uniform 0;
        inletValue  uniform 0;

U:

Code:

        type        surfaceNormalFixedValue;
        refValue    uniform -1;

p.rgh:

Code:

        type        zeroGradient;

Für den Wasser-Einlass sieht es ganz ähnlich aus. Nur dass bei alpha.water natürlich statt 0 eine 1 da steht. An den Wänden gilt noSlip für die Geschwindigkeit und entsprechend zeroGradient für den Druck. Als Auslass habe ich totalPressure von 0 definiert.

Control-Dict, fvSolution und fvSchemes

Da der Case relativ schnell divergiert, habe ich eine relativ kleine Start-Zeit definiert. Entsprechend ist maxCo auch relativ klein. Die Schemata für die div Terme sind überwiegend upwind, während das Zeit-Schema CrankNicolson 0.5 ist. Ansonsten steuere ich den Pimple-Algorithmus über die Residuen.

Eine Sache, die mir aufgefallen ist und evtl. weiterhelfen könnte: Die Gravitation wirkt in diesem Case in die negative y-Achse. Ich hatte zunächst fälschlicherweise mit der z-Achse gerechnet. Da liefen die ersten Zeitschritte auch mit einer hohen Courant Zahl. Als mir das jedoch aufgefallen ist und ich die Gravitationsachse angepasst habe, divergierte der Case. Das Verhalten kann ich mir leider nicht erklären.

Vielen Dank für eure Hilfe!
Arthur

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

Q.E.D.
Mitglied



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

Beiträge: 18
Registriert: 21.12.2015

erstellt am: 05. Okt. 2017 12:38    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 nochmal,

ich hatte eben so eine Vermutung. Muss ich für InterFoam vielleicht auch eine U.air und U.water definieren, wenn ich diese Inlets wähle?

Bisher dachte ich, dass der Solver anhand der Definitionen in der alpha.water weiß, dass sich die Einlassgeschwindigkeiten in U auf Luft bzw. Wasser beziehen.

Werde ich heute nachmittag mal testen.

Beste Grüße
Arthur

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: 05. Okt. 2017 13:32    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 Q.E.D. 10 Unities + Antwort hilfreich

InterFoam ist ein 2Phasen Löser der mit VOF arbeitet aber nur eine Phase berechnet. Anderes als bei Euler-Euler wo man wirklich zwei Phasen separat berechnet. Du hast also Inlet-Geschwindigkeiten und jenachdem was du da für Alpha definierst, bezieht sich das auf Phase1 oder Phase2.

Übrigens inletOutlet oder outletInlet bei einem fixedValue U Profil macht keinen wirklichen Sinn, da das Flux-Feld immer in die Domain geht.

------------------
Viele Grüße,
Tobias Holzmann

OpenFOAM Tutorials | Publikationen | Für Anfänger wiki.openfoam.com

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: 05. Okt. 2017 14:52    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 Q.E.D. 10 Unities + Antwort hilfreich

Habs mir gerade mal angeschaut. Ein Skript wäre nicht ganz schlecht. Niemand weiß was du für einen Weg gehst um dein Netz zu erstellen. Ich nehme daher mal an:


  • BlockMesh
  • surfaceFeatureExtract
  • snappyHexMesh

Dein BG Netz hab ich erstmal auf 50 Zellen reduziert, das ist mir sonst zu groß. Ich würde die InletPipes extra benennen und dann dort noch ein Refinement draufgeben + Inlets. Die featureEdge Refinements würde ich auch nicht nehmen. Man sieht auch sehr schön das die bei dir gar nichts bringt weil du eh schon n Volume Refinement mit der selben Verfeinerung hast. Die Analyse der Feature Edges zeigt auch das man ggf. an der Y-Hose die Features rausnehmen sollte. Dein Volume-Refinement kannst du auch mit den Surface-Refinements erzeugen.

TotalPressure am Outlet wird hier schwer. Da würde ich andere Settings nehmen, vorallem für U würd ich das Rückströmen verhindern.
InletOutlet für Alpha am Inlet ist Geschmackssache aber da hier sowieso die Fluxes stets positiv sind kann man auch gleich ein fixedValue draus machen.

Gibt noch andere Dinge aber das Hauptproblem stellt wohl dein SurfaceNormalVelocity dar. Schau dir mal die Vektoren an einen Inlets an und überleg dir was das Problem an der Sache ist 
Grüße Tobi

------------------
Viele Grüße,
Tobias Holzmann

OpenFOAM Tutorials | Publikationen | Für Anfänger wiki.openfoam.com

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

Q.E.D.
Mitglied



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

Beiträge: 18
Registriert: 21.12.2015

erstellt am: 05. Okt. 2017 20:30    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


waterAirPipe.zip

 
Hi Tobi!

Vielen Dank für deine Mühe! Deine Tips sind echt Gold wert.

Das Netz habe ich entsprechend deinen Ratschlägen angepasst. Die Y-Pipes werden jetzt separat verfeinert. Außerdem mache ich das jetzt über das surfaceRefinement.

Für p.rhg nehme ich jetzt prhgPressure und setze dort einen Wert fest. Für alpha habe ich an den Inlets nun fixedValue genommen.

Bezüglich SurfaceNormalVelocity: Ich hatte bisher meistens gute Erfahrungen damit gemacht und mir entsprechend keine Sorgen darum gemacht. Aber jetzt wo du es sagst, habe ich darüber nachgedacht. Bei den Inlet-Normalvektoren ist mir aufgefallen, dass der Vektor des Wassereinlasses nach innen zeigt. D.h. effektiv wurde bei mir Wasser rausgesaugt. Meintest du das?

Ein "Umdrehen" des Vorzeichens bei Wasser hat die Rechnung allerdings nur schlechter gemacht. Anschließend habe ich den Luft- und Wassereinlass einfach per Normalvektor definiert. Auch Divergenz.

Interessant ist, dass der Case gut läuft, wenn für g (0 0 -9.81) definiert wird. Bei richtigen Richtung (0 -9.81 0) divergiert die Rechnung leider wieder. Im Anhang finden sich die aktuellen Case-Files, diesmal auch mit Shell-Scripts.     

Vielen Dank nochmal für deine Mühe!
Arthur

PS. Deine YouTube-Tutorials sind top!

Edit: Ok, ich habe jetzt folgende Entdeckung gemacht: Wenn der Case mit internalField 1 für alpha initialisiert wird, dann läuft der Case eigentlich ganz gut an. Aber divergiert dann erneut. Ich schätze mal, dass es auch nicht normal ist, wenn Max(alpha.water) > 1 wird. (In meinem Fall 1.0000066)

Und noch was: ich hatte einen Fehler bei U für inletWater. Der Vektor muss (0 -0.866025 0.5) lauten, ... denke ich. Ich schätze aber, dass mit den Inlet-RBs immer noch was nicht stimmt.

[Diese Nachricht wurde von Q.E.D. am 06. Okt. 2017 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. Okt. 2017 10:17    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 Q.E.D. 10 Unities + Antwort hilfreich

Hi,

die Videos könnten besser sein aber danke für dein Feedback 
Wollte inzwischen noch weitere machen aber bin grad zeitlich nicht in der Lage dazu.

Zu den BC für U. Ich hoffe das du die Vektoren in Paraview entsprechend den Beträgen von U skaliert hast. Problem bei solchen Geschichten (wenn dein Inlet Patch nicht wirklich parallel zum Hintergrund-Netz ist, sind die Faces selber. Die sind nämlich in deinem Fall an der äußeren Kante recht bescheiden. Eine SurfaceNormalVektor BC bewirkt dann ziemlich komische Ergebnisse. Abhilfe schafft das Netz zu optimieren und/oder fixedValue mit der Richtungsvorgabe die du bestimmt hast. Anderenfalls könntest du auch bei deinem Wasser einfach mal ein paar Zellen vorab mit setFields initialisieren. Hilft manchmal auch enorm. Allerdings sind deine Faces am Inlet (zumindest mit meinen Settings) recht schlecht gewesen (da reicht dann auch schon ein einziges aus).

Zu deinen Nachtrag: Es kann durchaus vorkommen das alpha > 1 ist. Wenn sich das in Grenzen hält, dann ist das okay. Physikalisch ist das natürlich unsinnig aber numerisch bedingt möglich.

Wie ich grad noch sehe hast du den Vektor für U korrekt gesetzt (was ich vorher meinte). Schau dir mal deine Inlet-Patches mit den Vektoren an + Skalierung bezüglich U. Vielleicht fällt dir mehr auf 

p_rgh hätte ich mit fixedMean gesetzt. Bei interFoam ist das immer recht bescheiden, gerade mit der Gravitation.

------------------
Viele Grüße,
Tobias Holzmann

OpenFOAM Tutorials | Publikationen | Für Anfänger wiki.openfoam.com

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

Q.E.D.
Mitglied



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

Beiträge: 18
Registriert: 21.12.2015

erstellt am: 06. Okt. 2017 21: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

Hi Tobi!

nochmals Danke für deine hilfreichen Tips!

Bezüglich der Inlet-Patches habe ich eine Vermutung: könnte es sein, dass die Einlass-Geschwindigkeiten für Wasser und Luft einfach zu hoch waren? Vorher hatte ich 1 m/s als Magnitude, was bei dieser Geometrie vielleicht etwas zu viel war. Habe das jetzt deutlich reduziert. Ansonsten habe ich echt keine Idee mehr. 

Ich habe auch deine anderen Tips beherzigt. Initialisiere jetzt ein paar Zellen vor dem Wassereinlass mit setFields.

Die gute Nachricht ist, dass der Case jetzt bei seeehr kleinen Zeitschritten zumindest etwas vorankommt. Aber es konvergiert extrem langsam, ... was irgendwie nicht so zufriedenstellend ist. 

Beste Grüße
Arthur

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

Q.E.D.
Mitglied



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

Beiträge: 18
Registriert: 21.12.2015

erstellt am: 06. Okt. 2017 21:44    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!

nochmals Danke für deine hilfreichen Tips!

Bezüglich der Inlet-Patches habe ich eine Vermutung: könnte es sein, dass die Einlass-Geschwindigkeiten für Wasser und Luft einfach zu hoch waren? Vorher hatte ich 1 m/s als Magnitude, was bei dieser Geometrie vielleicht etwas zu viel war. Habe das jetzt deutlich reduziert. Ansonsten habe ich echt keine Idee mehr.   

Ich habe auch deine anderen Tips beherzigt. Initialisiere jetzt ein paar Zellen vor dem Wassereinlass mit setFields.

Die gute Nachricht ist, dass der Case jetzt bei seeehr kleinen Zeitschritten zumindest etwas vorankommt. Aber es konvergiert extrem langsam, ... was irgendwie nicht so zufriedenstellend ist.   

Beste Grüße
Arthur

Edit: Muss zurückrudern. Gerade als ich den Post fertig geschrieben habe, hat sich interFoam aufgehangen.   

Edit#2: Ich habe jetzt auf den Wänden und an den Patches fixedFluxPressure für p.rhg gesetzt. Damit sieht es jetzt etwas besser aus.

Edit#3: OK, es läuft jetzt. Ich poste morgen nochmal was zur Lösung geführt hat und den ganzen Case.

[Diese Nachricht wurde von Q.E.D. am 06. Okt. 2017 editiert.]

[Diese Nachricht wurde von Q.E.D. am 07. Okt. 2017 editiert.]

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

Q.E.D.
Mitglied



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

Beiträge: 18
Registriert: 21.12.2015

erstellt am: 08. Okt. 2017 14:23    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


waterAirPipe.zip

 
Hallo Tobi und alle Mitlesenden,

also nachdem ich alle zuvor beschriebenen Tips angewandt habe, musste ich nur noch bei den Inlets in alpha.water die inletOutlet BCs durch fixedValue ersetzen. Kann es sein, dass die Neigung der Inlets zu Problemen führte, da dann theoretisch auf einem Patch sowohl zeroGradient als auch fixedValue vorliegen müsste? (Ist meine unbeholfene Folgerung aus der Tatsache, dass die Stabilität der Rechnung vom Vektor für g abhing.)

Ansonsten habe ich für die Inlets bei U statt fixedValue nun flowRateInletVelocity genommen, welches ja auch auf die Flächennormalen zurückgreift. Damit lief es ganz gut.

Interessant: Sobald das Wasser und die Luft in der Y-Kreuzung zusammentreffen, wird die Rechnung sehr unruhig, bzw. die Zeitschritte werden extrem klein bei gleichbleibender Courant-Zahl. Meine Vermutung: Hier wird das Wasser ja eigentlich atomisiert. Folgerung: Müsste man hier nicht einen Multiphase-Solver benutzen, der einen Übergang von Euler zu  Lagrange mit Particle-Tracking vollzieht? (sprayFoam oder MPPICFoam?)

Beste Grüße
Arthur

PS. Im Anhang ist nun auch der funktionierende Case.

[Diese Nachricht wurde von Q.E.D. am 08. Okt. 2017 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. Okt. 2017 17:47    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 Q.E.D. 10 Unities + Antwort hilfreich

Hallo Arthur,

da ich die Hintergründe deines Tuns nicht nachvollziehen kann verweis ich einfach darauf, dass du wissen solltest was mit welchem Löser machbar ist. Auch das Wort atomisieren scheint mir nicht im richtigen Kontext zu stehen.

Freut mich jedenfalls das du deinen Case hinbekommen hast, auch wenn einige Aussagen sich beisen.

------------------
Viele Grüße,
Tobias Holzmann

OpenFOAM Tutorials | Publikationen | Für Anfänger wiki.openfoam.com

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

Q.E.D.
Mitglied



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

Beiträge: 18
Registriert: 21.12.2015

erstellt am: 08. Okt. 2017 18:53    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,

der Hintergrund ist einfach persönliches Interesse. 

"Atomisieren" habe ich in einem Beitrag gelesen, wo es auch um die Interaktion aus Wasser und Luft ging. Ich habe es da als Zerreißen von Wasser (als Kontinuum) zu Tröpchen interpretiert. Aber vielleicht habe ich das auch falsch verstanden ...

Danke nochmal für deine Hilfe! Freue mich auch über jeden Hinweis auf eine falsche Aussage... 

Beste Grüße
Arthur

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