Autor
|
Thema: Bestimmung des Strömungswiderstandkoeffizienten für einen porösen Zylinder in OF (919 / mal gelesen)
|
OFAmateur007ek Mitglied
Beiträge: 5 Registriert: 04.09.2020
|
erstellt am: 04. Sep. 2020 13:14 <-- editieren / zitieren --> Unities abgeben:
Hallo miteinander, ich habe kürzlich angefangen mich in OpenFoam einzuarbeiten. Ich habe eine 2D-Umströmung eines porösen Zylinders simuliert, soweit alles einfach. Nun möchte ich den Strömungswiderstandskoeffizienten, welcher auf den Zylinder wirkt, bestimmen. Doch ich kann forcecoeffs im controlDict-Ordner hierfür nicht verwenden, da man in OF keine Patches für interne Faces erstellen kann. Mein alternativer Ansatz war es also mittels Paraview die Zellregion des Zylinders zu extrahieren und die Kraft darauf zu berechnen, um so zumindest indirekt den Koeffizienten Cd zu kriegen. Anderswo habe ich es ausführlich beschrieben: https://www.cfd-online.com/Forums/paraview/229249-drag-force-calculation-porous-cylinder.html Leider nicht richtig. Bei forcecoeffs wird zwar durchaus die Porosität unter Umständen berücksichtigt, aber halt nur mit Patches. https://www.openfoam.com/documentation/guides/latest/doc/guide-fos-forces-force-coeffs.html Was vielleicht einer weiter? Danke im Voraus! [Diese Nachricht wurde von OFAmateur007ek am 04. Sep. 2020 editiert.] [Diese Nachricht wurde von OFAmateur007ek am 04. Sep. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Friendly Mitglied
Beiträge: 69 Registriert: 05.06.2017
|
erstellt am: 21. Sep. 2020 16:07 <-- editieren / zitieren --> Unities abgeben: Nur für OFAmateur007ek
Hallo, ich nehme an, du hast den Zylinder mit dem Darcy-Forchheimer-Modell gerechnet und hast deswegen keine patches. Ich hätte folgende Idee, die sich hoffentlich "leicht" implementieren lässt. Gemacht habe ich es nicht. Zunächst müsstest du dafür eine cellZone definieren mit den jeweiligen Zellen, die du zur Bestimmung des Widerstandsbeiberts verwenden möchtest. Mit Hilfe von volRegion, müsstest du dann die erforderlichen Daten wie Druck, Geschwindigkeit etc. samplen und sie später verrechnen. Das ganze ist hier erklärt: https://www.cfd-online.com/Forums/openfoam-post-processing/118165-sampling-cellset.html Hoffe es hilft.
Grüße, Friendly
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OFAmateur007ek Mitglied
Beiträge: 5 Registriert: 04.09.2020
|
erstellt am: 22. Sep. 2020 16:55 <-- editieren / zitieren --> Unities abgeben:
Hallo lieber Friendly, zuerst einmal vielen Dank für deinen interessanten Ansatz! Ja, ich benutzte das Darcy-Forchheimer Modell im fvOptions-Ordner für mein Problem. Die poröse Zellzone habe ich bereits in blockMesh als "porous" definiert. Re = 100 mit U0 = 1 m/s. Im controlDict habe ich dann dem Ansatz von cfd-online folgend folgendes hinzugefügt: Code:
functions { volFieldValue1 { type volFieldValue; libs ("libfieldFunctionObjects.so"); log true; writeControl writeTime; writeFields true; regionType cellZone; name porous; operation volAverage; fields ( U p ); } }
Klappt. Dieser Vorschlag hingegen konnte keinen Postprocessing-Ordner erstellen:
Code:
cellObj1 { type volRegion; libs ("libfieldFunctionObjects.so"); enabled true; writeControl adjustableRunTime; writeInterval 0.01; log true; writeFields true; regionType cellZone; name porous; operation none; fields ( p U ); }
In volFieldValue habe ich bis zu 30s folgende Werte erhalten: Code:
# Region : cellZone porous # Cells : 3300 # Volume : 7.850342e-01 # Time volAverage(U) volAverage(p) 5 (4.367639e-04 8.642613e-07 7.675885e-24) -2.257972e-01 10 (4.072414e-04 -1.837840e-06 5.596721e-24) -1.782918e-01 15 (3.966297e-04 -9.299148e-08 4.825904e-24) -1.601596e-01 20 (3.917445e-04 4.436269e-06 4.505260e-24) -1.513882e-01 25 (3.908363e-04 -6.386791e-06 4.323701e-24) -1.493970e-01 30 (3.975167e-04 -7.499127e-06 4.742320e-24) -1.608238e-01
Meine Anströmgeschwindigkeit ist in x-Richtung (positiv). Hab versucht mit den Widerstandkoeffizienteen mit cw=-(2*p*A)/(Ux^2*rho*A) mit A=1m^2 und rho=1000kg/m^3, aber cw ist im 4-stelligen Bereich. Verzeiht mir meine dämlichen Anfängerfehler, aber weiß leider nicht weiter . Mit sehr freundlichen Grüßen, OFAmateur007ek [Diese Nachricht wurde von OFAmateur007ek am 22. Sep. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Friendly Mitglied
Beiträge: 69 Registriert: 05.06.2017
|
erstellt am: 23. Sep. 2020 09:48 <-- editieren / zitieren --> Unities abgeben: Nur für OFAmateur007ek
Hallo, du hast also einen riesigen Zylinder (1m^2), der mit Wasser durchströmt wird. Ich denke, dass hier auch den Reibungswiderstand miteinrechnen musst. Dein Ansatz bezieht sich nur auf den Druckwiderstand. Ein möglicher Fehler, der mir spontan einfällt und den viele gerne machen: Wenn du mit OpenFOAM inkompressible rechnest, was bei Wasser und dieser Strömungsgeschwindigkeit definitiv der Fall ist, rechnest du mit einem kinematischen Druck. Der Druck ist durch die Dichte geteilt. Du hast z.B. einen Druck von -1.608238e-01. Negativer Druck macht physikalisch keinen Sinn. Es ist aber zulässig so zu rechnen, solange du inkompressibel rechnest. Ich denke, dein Druckfeld wurde innertial auf 0 gesetzt, so wie es in den meisten Tutorials ist denke ich. Dein negativer Druck ist somit die Differenz zum Referenzdruck von 0. Das bedeutet für dein "wahres p": wahrere p = 101325 Pa - (1.608238e-01 m^2/s^2 * 1000 kg/m^3) Hoffe es hilft! Grüße, Friendly
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 07. Okt. 2020 08:55 <-- editieren / zitieren --> Unities abgeben: Nur für OFAmateur007ek
Hallo zusammen, schon mal die Funktion "forces" angeschaut? Ich verweise mal auf das hier: Code:
dict.readIfPresent("porosity", porosity_); if (porosity_) { Info(log_)<< " Including porosity effects" << endl; } else { Info(log_)<< " Not including porosity effects" << endl; }
Gegenenfalls etwas, dass Ihr euch anschauen könnt. Ist übrigens auch bei »forceCoeffs« integriert. Ach übrigens, man kann in FOAM schon interne Faces auswählen und intern "verwrusteln". Man kann so ziemlich alles mit OpenFOAM (: ------------------ Glück Auf, Tobi OpenFOAM® Community - Knowledge Base Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Friendly Mitglied
Beiträge: 69 Registriert: 05.06.2017
|
erstellt am: 12. Okt. 2020 10:30 <-- editieren / zitieren --> Unities abgeben: Nur für OFAmateur007ek
|
| |
OFAmateur007ek Mitglied
Beiträge: 5 Registriert: 04.09.2020
|
erstellt am: 17. Nov. 2020 15:58 <-- editieren / zitieren --> Unities abgeben:
Hi miteinander, tut mir Leid, dass ich so spät antworte, es ist so einiges dazwischen gekommen und ich hatte keine Zeit mehr hierfür. Friendly, dein interessanter Ansatz hat leider nicht weitergeführt, es kamen merkwürdige Ergebnisse heraus. Shor-ty, an "includig porosity effects" habe ich auch gedacht, aber als selectionMode wird ja für Darcy-Forchheimer in fvOptions "patches" eben nicht angeboten. Ich benutze eine Zellenregion, welche in blockMeshDict definiert wird. Klappt es etwa mit Snappyhexmesh? Damit habe ich leider noch keine Erfahrung. MfG OFAmateur007ek
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|