Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  OpenFOAM
  PostProcessing einer Berieselungssimulation

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:  PostProcessing einer Berieselungssimulation (467 mal gelesen)
TheB1gLebowski
Mitglied


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

Beiträge: 2
Registriert: 03.08.2021

erstellt am: 03. Aug. 2021 16:15    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


BildForum.PNG

 
Liebes Forum,

ich führe eine Berieslungssimulation eines einzelnen Füllkörpers durch und möchte herausfinden welche Stellen auf der Oberfläche des Körpers durch Wasser benetzt werden. Der verwendete Solver ist der interFoam und der Füllkörper wurde mittels SnappyHexMesh generiert. Dabei geht es besonders darum wie lange die Stellen benetzt werden. Das heißt zunächst möchte ich herausfinden welche Stellen überhaupt über den gesamten Zeitraum der Simulation jemals mit Wasser in Kontakt waren. Dafür wäre es toll wenn man dies in paraFoam visualisiert darstellen könnte wo insgesamt überall Wasser war und nicht wo gerade in dem spezifischen Zeitschritt Wasser ist (Dies ist ja leicht zu visualisieren).

Meine Idee um den zeitlichen Faktor mit zu betrachten ist, die alpha.water Werte in den einzelnen Zellen bzw auf der Oberfläche des Körpers über die geschriebenen timeSteps aufzusummieren und somit einen Absolutwert an alpha.water für die Zellen zu generieren und am besten wäre es, dies dann in paraFoam als "heat map" (also hohe alpha.water Werte entsprechen langer Zeit) visualisieren zu können. Ich konnte leider für beides -also wo war überhaupt Wasser und die Summen der alpha.water Werte keine Lösung finden. es wäre toll wenn mir jemand dabei weiterhelfen könnte, gerne auch andere Ideen um die Problemstellung anzugehen. Da es um die Benetzung des Füllkörpers geht reicht auch eine Lösung die nur den Füllkörper betrachtet (möglicherweiße etwas mit surface?) 

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: 04. Aug. 2021 14:24    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 TheB1gLebowski 10 Unities + Antwort hilfreich

Hallo "GuterFilm",

die Fragestellung kann natürlich mit verschiedenen Methoden umgesetzt werden. Aber dafür benötigst Du (wahrscheinlich) erstmal eigene Libraries die Du programmieren musst. Was ggf. möglich wäre ist die Betrachtung eines Wandfilms. Dazu muss man aber Lagrange rechnen. Die Frage die sich mir bei Dir stellt ist auch, ob eine Lagrange Betrachtung nicht sinniger ist als eine VOF Analyse. Das ist aber abhängig davon, wie viele Tropfen du hast (https://openfoam.org/release/2-0-0/surface-film/).

Ansonsten müsstest Du ggf. eine FunctionObject schreiben, die deine Summation erfüllt. Alternativ natürlich, direkt in den VOF Solver rein. Da könnte man dann zwei neue volScalarFields erstellen.

Benetzt?
Hier würde man sich nur die fvPatches anschauen (internalField = 0). Dann über jede Boundary (ggf. gezielt nur den Körper) loopen und jedes Face betrachten -> alpha@Face > 0 --> benetzt und dann den Wert von 0 auf 1 setzen.

Das Feld würde dir dann später angeben, was alles benetzt wurde (Zeitpunkt unbekannt).

Menge?
Ähnlich wie zuvor, allerdings müsste man hier wohl die Zellwerte der Faces betrachten. Eine blose Aufsummierung macht für mich keinen Sinn. Wenn dann müsste das Integral auf die Benetzungszeit gemittelt werden. Sonst macht das keinen Sinn (zumindest aus meiner derzeitigen Überlegung).

Natürlich musst Du das alles hinzuprogrammieren aber das sollte kein Problem darstellen 

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

OpenFOAM® Community - Knowledge Base

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

TheB1gLebowski
Mitglied


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

Beiträge: 2
Registriert: 03.08.2021

erstellt am: 09. Aug. 2021 10:51    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 schnelle und ausführliche Antwort. Die VOF Methode ist mir vorgegeben, weshalb ich diese auch nicht ändern kann und somit eine Lagrange Betrachtung auch wenn vielleicht sinnvoller, nicht möglich ist.

Bezüglich deines Punktes mit dem benetzt sein, habe ich leider nicht ganz verstanden wie du das meinst. Ich denke es handelt sich bei dem was du beschrieben hast um eine function, die programmiert werden muss ?

Bezüglich der Summation der Felder bin ich von der bloßen Aufsummierung auch weg da dies wenig sinnvoll war. Ich habe nun durch die fieldAverage function eine Betrachtung durchgeführt. So wie ich das verstanden habe bildet diese function ein Mittel über die geschriebenen Timesteps für mein alpha.water feld. Deswegen kann man ja davon ausgehen das hohe Mittelwerte für eine längere Zeit benetzt gewesen sein müssen. Liege ich mit dieser Annahme auf dem richtigen Weg ?

Viele Grüße

Lebowski 

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: 09. Aug. 2021 11:51    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 TheB1gLebowski 10 Unities + Antwort hilfreich

Hey Lebowski,


  • Wenn Du VOF verwenden musst, dann sollte das Netz auch entsprechend fein aufgelöst sein (sofern du einzelne Tropfen abbildest - aber die Tropfen sind ja auch recht groß - also auch machbar - definitiv)
  • Die Punkte die ich erwähnt habe, sind nicht in FOAM integriert und müssten (natürlich) programmiert werden
  • Bei der functionObject siehst Du das richtig, sofern du als base time; gewählt hast. Allerdings muss ich dazu sagen, dass ein «averaging» mit Deinen erstellten Zeitschritten nicht ganz sauber ist, da Du nur die diskreten Zeitpunkte vorliegen hast. Da Deine Simulation aber transient ist, ist die Benetzung in jedem Zeitschritt individuell und man müsste diese Funktion natürlich mit dem Löser zusammen ausführen (nicht über postProcess sondern ins «controlDict» als Funktion definieren). Nur wenn Du das so machst, erhältst Du eine quantitativ richtige Aussage. Alles andere kann - muss aber nicht - richtig sein und ist natürlich abhängig davon, wie viele Zeitschritte Du gespeichert hast. Wenn Du daraus ein flüssiges Video machen kannst (30 FPS), dann sollte das Ergebnis auch ganz akzeptabel sein.

Mit Deiner erwähnten Funktion hab ich noch nicht wirklich gearbeitet und kann damit auch nicht genau sagen was Du zuletzt bekommst:
Code:

Calculates average quantities for a user-specified selection of volumetric 
    and surface fields.                                                       
                                                                               
    Fields are entered as a list of sub-dictionaries, which indicate the type of
    averages to perform, and can be updated during the calculation.  The current
    options include:                                                           
    - \c mean: arithmetic mean                                                 
    - \c prime2Mean: prime-squared mean                                       
    - \c base: average over 'time', or 'iteration'                             
    - \c window: optional averaging window, specified in 'base' units         
                                                                               
    Average field names are constructed by concatenating the base field with   
    the averaging type, e.g. when averaging field 'U', the resultant fields   
    are:                                                                       
    - arithmetic mean field, \c UMean                                         
    - prime-squared field, \c UPrime2Mean                                     
                                                                               
    Information regarding the number of averaging steps, and total averaging   
    time are written on a per-field basis to the \c "<functionObject           
    name>Properties" dictionary, located in \<time\>/uniform                   
                                                                               
    When restarting form a previous calculation, the averaging is continuous or
    may be restarted using the \c restartOnRestart option.                     
                                                                               
    The averaging process may be restarted after each calculation output time 
    using the \c restartOnOutput option or restarted periodically using the \c 
    periodicRestart option and setting \c restartPeriod to the required       
    averaging period.                           

Ich müsste im Code nachschauen, ob das «mean» dann für jedes einzelne Face/Zelle gilt oder ein Mittelwert im Allgemeinen abbildet.

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