Autor
|
Thema: Randbedingungen Kreisringausschnitt (4055 mal gelesen)
|
maschi95 Mitglied
Beiträge: 8 Registriert: 18.09.2014
|
erstellt am: 18. Sep. 2014 12:24 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich arbeite grade an meiner Projektarbeit und komme mit der Simulation nicht zu recht. Ich benutze HELYX-OS(GUI, nutzt SnappyHexMesh) und möchte den Fluidraum zwischen Gleitring und Gegenring (Dichtspalt) simulieren. Erklärung Ich habe für den einen Ring eine stl-Datei genutzt (mit Strukturen darauf) und habe dann mittels 2 Zylindern und 3 Ebenen mir den Fluidraum abgegrenzt und vernetzen lassen (Zur Untersuchnung meines Problems möchte ich mir mehrere leicht veränderte Geometrien erstellen). Der eine Ring steht still, der andere dreht sich mit einer bestimmten Geschwindigkeit. Um das Modell bezüglich Rechenaufwand zu vereinfachen, betrachte ich einen Ausschnitt des Kreisringes. Das Fluid soll in radialer Richtung bei Umgebungsdruck frei ein- und ausströmen. Dabei verwende ich folgende RB:
- Patch Pressure Inlet Velocity, p=1 Fixed Value
- Patch Pressure Inlet Outlet Velocity, p=1 Fixed Value
- Wedge für die Flächen des Kreisringausschnitts links und rechts
- eine Kreisringfläche steht still fixed Wall, slip
- eine Kreisringfläche "Rotating Wall", slip
weitere Settings:
- transient, incompressible, RANS, Laminar, PIMPLE
- adjustable time step, max. courant number = 0.5
Ich denke das Gitter ist in Ordnung (Check Mesh war ok). Ich bin mir mit den Randbedingungen etwas unsicher, da die bisherigen Ergebnisse keinen physikalischen Sinn ergeben (Residuen des Druckes schwanken). Besten Dank im Vorraus! [Diese Nachricht wurde von maschi95 am 25. Sep. 2014 editiert.] [Diese Nachricht wurde von maschi95 am 25. Sep. 2014 editiert.] [Diese Nachricht wurde von maschi95 am 25. Sep. 2014 editiert.] [Diese Nachricht wurde von maschi95 am 29. Sep. 2014 editiert.] 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: 18. Sep. 2014 13:17 <-- editieren / zitieren --> Unities abgeben: Nur für maschi95
Hallo Maschi und willkommen im Forum, wie wäre es mit einem Bild, einem Plot oder sonstiges?
Code:
max. courant number = 1
Mich wundert es das deine Simulation nicht abbricht (: ------------------ Best regards, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
maschi95 Mitglied
Beiträge: 8 Registriert: 18.09.2014
|
erstellt am: 18. Sep. 2014 21:10 <-- editieren / zitieren --> Unities abgeben:
Hallo Shor-ty, vielen Dank für Deinen Post! Anbei ein Bild mit dem Modell, den Residuen und einem Ausschnitt des Terminals. Die vordere rote Wand soll rotieren, ihr hinteres Gegenstück steht still und hat eine Haftbedingung. Bei der linken grünen Fläche und ihrem Gegenstück habe ich "Wedge" eingestellt. Das Fluid soll entlang der positiven y-Achse einströmen. Für den unteren Zufluss habe ich Pressure Inlet Velocity , p=1 bar Fixed Value und den oberen Ausfluss Pressure Inlet Outlet Velocity, p=1 bar Fixed Value gewählt. 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: 18. Sep. 2014 23:12 <-- editieren / zitieren --> Unities abgeben: Nur für maschi95
Hi, deine Angabe mit "wedge" ist für mich schon wieder neu. Mich wundert es wirklich, dass deine Simulation läuft. Wie ist den dein Netz aufgebaut wenn du WEDGE verwendest? Was sagt dir checkMesh denn (Ausgabe)? Normal müsste es hier auch schon Fehler bezüglich deinem Wedges geben, wenn du was falsch gemacht hast. Die Flächen oben und unten sind geschlossen oder offen? Ich weiß immer noch nicht wirklich wie deine Bedingungen sind.
- Poste doch bitte deine checkMesh Ausgabe
- Poste doch bitte deinen Inhalt in der boundary Datei
- smoothSolver für U,h,e,k,epsilon,omega,T, etc. ist okay aber wird in den Foren oft mit dem PBiCG abgeändert
- Dein Druck sieht alles andere als schön aus
- Was sagt dir deine Massenerhaltung
------------------ Best regards, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
maschi95 Mitglied
Beiträge: 8 Registriert: 18.09.2014
|
erstellt am: 19. Sep. 2014 15:48 <-- editieren / zitieren --> Unities abgeben:
Hallo, die Flächen unten und oben sind geschlossen. Der Fluidraum ist ein in sich geschlossener Raum. Das Fluid soll von unten nach oben in y-Richtung fließen. Ich benutze Helyx-OS als grafische Oberfläche, da ich mit einem Terminal nicht so gut klarkomme. So sieht meine CheckMesh-Datei aus:
Code:
******************** * CHECK MESH * ******************** Case : Procs : -1 Log : Env : /opt/openfoam230/etc/bashrc Vendor : /opt MachineFile : Solver : /*---------------------------------------------------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.3.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ Build : 2.3.0-f5222ca19ce6 Exec : checkMesh -case /home/ Date : Sep 19 2014 Time : 06:36:10 Host : "ubuntu" PID : 3593 Case : /home nProcs : 1 sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). fileModificationChecking : Monitoring run-time modified files using timeStampMaster allowSystemOperations : Disallowing user-supplied system call operations// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Create polyMesh for time = 0 Time = 0 Mesh stats points: 61348 faces: 160122 internal faces: 144354 cells: 49588 faces per cell: 6.140114544 boundary patches: 12 point zones: 0 face zones: 0 cell zones: 0 Overall number of cells of each type: hexahedra: 45540 prisms: 1160 wedges: 0 pyramids: 0 tet wedges: 4 tetrahedra: 0 polyhedra: 2884 Breakdown of polyhedra by number of faces: faces number of cells 4 4 5 192 6 224 9 2184 12 252 15 28 Checking topology... Boundary definition OK. Cell to face addressing OK. Point usage OK. Upper triangular ordering OK. Face vertices OK. Number of regions: 1 (OK). Checking patch topology for multiply connected surfaces... Patch Faces Points Surface topology ffminx 0 0 ok (empty) ffmaxx 0 0 ok (empty) ffminy 0 0 ok (empty) ffmaxy 0 0 ok (empty) ffminz 0 0 ok (empty) ffmaxz 0 0 ok (empty) cylinder 2396 2525 ok (non-closed singly connected) cylinder0 3000 3155 ok (non-closed singly connected) Links 2364 2523 ok (non-closed singly connected) Rechts 2364 2523 ok (non-closed singly connected) Ebene1 2822 3188 ok (non-closed singly connected) Ebene2 2822 3188 ok (non-closed singly connected) Checking geometry... Overall domain bounding box (0.07998643353 0.7913381299 -0.1480341455) (0.1200135665 1 0.1480341455) Mesh (non-empty, non-wedge) directions (1 1 0) Mesh (non-empty) directions (1 1 1) Wedge Links with angle 8.530764908 degrees ***Wedge patch Links not planar. Point (0.08675976319 0.8475501524 0.1271324898) is not in patch plane by 3.282494866e-08 metre. Boundary openness (-5.655475173e-16 8.095443895e-17 -3.586334673e-17) OK. Max cell openness = 3.275105145e-16 OK. Max aspect ratio = 6.357422047 OK. Minimum face area = 1.012675018e-06. Maximum face area = 2.786921961e-05. Face area magnitudes OK. Min volume = 1.28264111e-09. Max volume = 8.191970302e-08. Total volume = 0.00214267461. Cell volumes OK. Mesh non-orthogonality Max: 55.11763921 average: 7.132242305 Non-orthogonality check OK. Face pyramids OK. Max skewness = 1.132134074 OK. Coupled point location match (average 0) OK. Failed 1 mesh checks. End
Hier die Boundary-Datei:Code:
FoamFile { version 2.0; format ascii; class polyBoundaryMesh; location "0/polyMesh"; object boundary; } 12( ffminx { nFaces 0; startFace 144354; type wall; } ffmaxx { nFaces 0; startFace 144354; type wall; } ffminy { nFaces 0; startFace 144354; type wall; } ffmaxy { nFaces 0; startFace 144354; type wall; } ffminz { nFaces 0; startFace 144354; type wall; } ffmaxz { nFaces 0; startFace 144354; type wall; } cylinder { nFaces 2396; startFace 144354; type patch; } cylinder0 { nFaces 3000; startFace 146750; type patch; } Links { nFaces 2364; startFace 149750; type wedge; } Rechts { nFaces 2364; startFace 152114; type wedge; } Ebene1 { nFaces 2822; startFace 154478; type wall; } Ebene2 { nFaces 2822; startFace 157300; type wall; } )
Im CheckMesh befindet sich tatsächlich ein Fehler. Ist "wedge" überhaupt die richtige RB für das was ich vorhabe, oder müsste ich nicht eher "Cyclic AMI" wählen? Wenn ja, wie wendet man dies an? Was genau ist mit "smoothSolver für U,h,e,k,epsilon,omega,T, etc. ist okay aber wird in den Foren oft mit dem PBiCG abgeändert" gemeint? Wie kann ich die Massenerhaltung überprüfen? Gruß und besten Dank! 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: 19. Sep. 2014 16:11 <-- editieren / zitieren --> Unities abgeben: Nur für maschi95
Hallo,
- in OpenFOAM hast du die Möglichkeit für jeden Term der zu lösen ist explizite Verfahren und Löser anzuwenden. Die Einstellungsmöglichkeiten findest du unter system/fvSolution und system/fvSchemes. Ich wollte dir nur den Hinweis geben, dass es effektivere Löser gibt als wie den smoothSolver
- Bitte verwende bei Code-Snippes die Code-Tags, ich verweise mal hierauf --> Allgemeine Hinweise zum Forum
- Deine wedge Bedingung ist schon korrekt, sofern du ein 2d Modell erstellt hast. Ich nehme aber an das du das Netz falsch erstellt hast, bzw. wie schon ausgegeben wird, sind deine Winkel nicht korrekt. Zwischen Wedge1 und Wedge2 müssen 5° bestehen. Wenn du deinen Case mal hochladen könntest, wäre es möglich das mal etwas genauer zu betrachten.
- Im UserGuide befindet sich eine Lektion über 2d Netze mittels blockMesh, kann man aber auch mittels 3d und extrudieren erstellen; hier kannst du mal einen Einblick in das hier werfen: 2d rotationssymmetrische Netz
- checkMesh hat drei Fehlerabstufungen: Einstern (*), Zweistern (**) und Dreistern (***), letzteres sollte man definitiv ausbessern oder zumindest nötige Vorkehrungen treffen
- Zwecks der Strömung ... du willst quasi sowas wie einen Simmenring zwischen Lager und Dichtung simulieren. Zwischen drin ist noch ein kleiner Spalt in dem das Fluid noch herumströmen kann? Kanns mir immer noch nicht ganz erklären. So wie sich das für mich gerade anhört ist dein Setting mehr wie:
Code:
stehende Platte - Luftspalt - Rotierte Platte
PS: Gibt es einen Grund wieso du einen transienten Solver verwendest? Denke dich interessiert eher das stationäre Strömungsfeld, oder? ------------------ Best regards, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
maschi95 Mitglied
Beiträge: 8 Registriert: 18.09.2014
|
erstellt am: 21. Sep. 2014 22:15 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich bin mit OpenFOAM nicht so vertraut. Welche Datei brauchst Du, um den Case betrachten zu können? Das Modell ist so aufgebaut, dass ich einen stehenden und einen rotieren Ring mit einem Spalt dazwischen habe, in dem das Fluid strömen kann. Worin genau besteht der Fehler mit den 5° zwischen Wedge 1 und Wedge2? In Helyx kann ich das nirgendswo bestimmen, ich kann nur Wedge als Randbedingung wählen. Bei der Netzerstellung gebe ich das BaseMash in Helyx ja vor, aber wie kann ich dort den Winkel beeinflussen? Ich betrachte das Modell instationär, da ich den "Anfahrvorgang" des rotierenden Kreisrings und die Auswirkung auf das Fluid mitbetrachten soll. Danke für das Tutorial! 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: 22. Sep. 2014 08:47 <-- editieren / zitieren --> Unities abgeben: Nur für maschi95
|
maschi95 Mitglied
Beiträge: 8 Registriert: 18.09.2014
|
erstellt am: 22. Sep. 2014 15:51 <-- editieren / zitieren --> Unities abgeben:
Hallo, hier das p-File:
Code: /*--------------------------------*- C++ -*----------------------------------*\ | o | | | o o | HELYX-OS | | o O o | Version: v2.1.1 | | o o | Web: http://www.engys.com | | o | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; location "0"; object p; } dimensions [ 0 2 -2 0 0 0 0 ]; internalField uniform 0.0; boundaryField { ffminx { type zeroGradient; } ffmaxx { type zeroGradient; } ffminy { type zeroGradient; } ffmaxy { type zeroGradient; } ffminz { type zeroGradient; } ffmaxz { type zeroGradient; } cylinder { type fixedValue; value uniform 1.0; } cylinder0 { type fixedValue; value uniform 1.0; } Links { type wedge; } Rechts { type wedge; } Ebene1 { type zeroGradient; } Ebene2 { type zeroGradient; } }
Hier das U-File:
Code: /*--------------------------------*- C++ -*----------------------------------*\ | o | | | o o | HELYX-OS | | o O o | Version: v2.1.1 | | o o | Web: http://www.engys.com | | o | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volVectorField; location "0"; object U; } dimensions [ 0 1 -1 0 0 0 0 ]; internalField uniform (0.0 0.0 0.0); boundaryField { ffminx { type fixedValue; value uniform ( 0 0 0); } ffmaxx { type fixedValue; value uniform ( 0 0 0); } ffminy { type fixedValue; value uniform ( 0 0 0); } ffmaxy { type fixedValue; value uniform ( 0 0 0); } ffminz { type fixedValue; value uniform ( 0 0 0); } ffmaxz { type fixedValue; value uniform ( 0 0 0); } cylinder { type pressureInletVelocity; value uniform ( 0 0 0); } cylinder0 { type pressureInletOutletVelocity; value uniform ( 0 0 0); } Links { type wedge; } Rechts { type wedge; } Ebene1 { type slip; } Ebene2 { type rotatingWallVelocity; value uniform ( 0 0 0); origin ( 0 0 0); axis ( 1 0 0); omega 133.0; } }
boundary-datei:
Code:
FoamFile { version 2.0; format ascii; class polyBoundaryMesh; location "0/polyMesh"; object boundary; } 12( ffminx { nFaces 0; startFace 54714; type wall; } ffmaxx { nFaces 0; startFace 54714; type wall; } ffminy { nFaces 0; startFace 54714; type wall; } ffmaxy { nFaces 0; startFace 54714; type wall; } ffminz { nFaces 0; startFace 54714; type wall; } ffmaxz { nFaces 0; startFace 54714; type wall; } cylinder { nFaces 560; startFace 54714; type patch; } cylinder0 { nFaces 728; startFace 55274; type patch; } Links { nFaces 2406; startFace 56002; type wedge; } Rechts { nFaces 2406; startFace 58408; type wedge; } Ebene1 { nFaces 886; startFace 60814; type wall; } Ebene2 { nFaces 886; startFace 61700; type wall; } )
Helyx benutzt SnappyHexhMesh. Liegt darin vielleicht der Fehler, das die Randbedingung Wedge nicht funktioniert? Anbei Bilder meines Netzes. Das Netz ist nicht 100% sauber, da dieses Modell eine Vereinfachung darstellt, um die Randbedingungen zu bestimmen. Es unterscheidet sich nur von den Größenverhältnissen, der Aufbau ist gleich. Desweiteren habe ich um den Fluidraum eine Box zur Verfeinerung des Netzes gelegt. Gruß und besten Dank! [Diese Nachricht wurde von maschi95 am 22. Sep. 2014 editiert.] 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: 22. Sep. 2014 16:26 <-- editieren / zitieren --> Unities abgeben: Nur für maschi95
Hallo, danke für die Dateien, bzw. den Code. Ähm... als Datei wäre das natürlich besser vor allem fehlt einfach das Netz Wenn du mittels snappyHexMesh vernetzt, dann hast du kein 2d Case und dann werden die Winkel auch nicht stimmen. D.h. du müsstest so vorgehen wie ich das in meinem Tutorial gemacht hab (sofern du es mit snappyHexMesh machen möchtest). Ansonsten bleibt dir die Möglichkeit das in einem CAD Programm zu konstruieren, dir die Punkte in blockMeshDict zu übernehmen (Hinweis: Genauigkeit sollte > 10 Nachkommastellen sein) und dann mittels blockMesh dein Netz erstellen. Am Besten wäre es, wenn du dein ganzen Ordner komprimierst, irgendwo hochlädst und den Link zur Verfügung stellst.
- Netz ist definitiv kein 2d Netz, somit sind wedges auch falsch
Code:
Description This boundary condition is similar to the cyclic condition, except that it is applied to 2-D geometries. \heading Patch usage Example of the boundary condition specification: \verbatim myPatch { type wedge; } \endverbatim
Wie du hieraus entziffern kannst, wäre cyclic die Alternative in einem 3D Mesh. Allerdings wolltest du doch 2d rechnen oder? Damit ist natürlich die Simulation wesentlich kostengünstiger. Aber ich denke in deinem Fall werden es bei 3D auch nur weniger wie ein paar hunderttausend Zellen sein. PS: Dein Netz sieht aber nicht schön an den Kanten aus?!
------------------ Best regards, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
maschi95 Mitglied
Beiträge: 8 Registriert: 18.09.2014
|
erstellt am: 24. Sep. 2014 15:36 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe es jetzt mal mit Cyclic AMI als Randbedingung versucht. Das CheckMesh sieht so weit ganz gut aus, bis auf die zwei Warnungen. Allerdings kommt dann beim Simulieren ein Fehler: CheckMesh:
Code: ******************** * CHECK MESH * ******************** Case : /home/../Helyx/Engys/HELYX-OS/v2.1.1/kjsadf Procs : -1 Log : /home/../Helyx/Engys/HELYX-OS/v2.1.1/kjsadf/log/checkMesh.log Env : /opt/openfoam230/etc/bashrc Vendor : /opt MachineFile : Solver : /*---------------------------------------------------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.3.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ Build : 2.3.0-f5222ca19ce6 Exec : checkMesh -case /home/../Helyx/Engys/HELYX-OS/v2.1.1/kjsadf Date : Sep 24 2014 Time : 06:11:59 Host : "ubuntu" PID : 3431 Case : /home/../Helyx/Engys/HELYX-OS/v2.1.1/kjsadf nProcs : 1 sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). fileModificationChecking : Monitoring run-time modified files using timeStampMaster allowSystemOperations : Disallowing user-supplied system call operations// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Create polyMesh for time = 0 --> FOAM Warning : From function void Foam::cyclicAMIPolyPatch::calcTransforms(const primitivePatch&, const pointField&, const vectorField&, const pointField&, const vectorField&) in file AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C at line 204 Patch areas are not consistent within 0.01 % indicating a possible error in the specified angle of rotation owner patch : Links neighbour patch : Rechts angle : -360 deg area error : 199.9398436 % match tolerance : 0.0001 --> FOAM Warning : From function void Foam::cyclicAMIPolyPatch::calcTransforms(const primitivePatch&, const pointField&, const vectorField&, const pointField&, const vectorField&) in file AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C at line 204 Patch areas are not consistent within 0.01 % indicating a possible error in the specified angle of rotation owner patch : Rechts neighbour patch : Links angle : -360 deg area error : 199.9398436 % match tolerance : 0.0001 Time = 0 Mesh stats points: 34364 faces: 96866 internal faces: 90806 cells: 31304 faces per cell: 5.99514439 boundary patches: 12 point zones: 0 face zones: 0 cell zones: 0 Overall number of cells of each type: hexahedra: 31152 prisms: 132 wedges: 0 pyramids: 0 tet wedges: 0 tetrahedra: 0 polyhedra: 20 Breakdown of polyhedra by number of faces: faces number of cells 5 20 Checking topology... Boundary definition OK. Cell to face addressing OK. Point usage OK. Upper triangular ordering OK. Face vertices OK. Number of regions: 1 (OK). Checking patch topology for multiply connected surfaces... Patch Faces Points Surface topology ffminx 0 0 ok (empty) ffmaxx 0 0 ok (empty) ffminy 0 0 ok (empty) ffmaxy 0 0 ok (empty) ffminz 0 0 ok (empty) ffmaxz 0 0 ok (empty) cylinder 664 717 ok (non-closed singly connected) cylinder0 728 779 ok (non-closed singly connected) Links 1214 1290 ok (non-closed singly connected) Rechts 1214 1290 ok (non-closed singly connected) Ebene1 1120 1200 ok (non-closed singly connected) Ebene2 1120 1200 ok (non-closed singly connected) Checking geometry... Overall domain bounding box (0.07997889445 0.8995198754 -0.03492073332) (0.1200211056 1 0.03492073332) Mesh (non-empty, non-wedge) directions (1 1 1) Mesh (non-empty) directions (1 1 1) Boundary openness (-5.044796995e-16 8.585170829e-17 -1.877969446e-16) OK. Max cell openness = 3.291081172e-16 OK. Max aspect ratio = 5.521267256 OK. Minimum face area = 1.086829376e-06. Maximum face area = 8.544888701e-06. Face area magnitudes OK. Min volume = 1.811992024e-09. Max volume = 1.099522935e-08. Total volume = 0.0002654158427. Cell volumes OK. Mesh non-orthogonality Max: 42.47546935 average: 2.416341217 Non-orthogonality check OK. Face pyramids OK. Max skewness = 1.16154818 OK. Coupled point location match (average 0) OK. Mesh OK. End
Hier die Fehlermeldung bei der Simulation:
Code: ****************** * Run Case * ****************** Case : /home/../Helyx/Engys/HELYX-OS/v2.1.1/kjsadf Procs : -1 Log : /home/../Helyx/Engys/HELYX-OS/v2.1.1/kjsadf/log/pimpleFoam.log Env : /opt/openfoam230/etc/bashrc Vendor : /opt MachineFile : Solver : pimpleFoam /*---------------------------------------------------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.3.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ Build : 2.3.0-f5222ca19ce6 Exec : pimpleFoam -case /home/../Helyx/Engys/HELYX-OS/v2.1.1/kjsadf Date : Sep 24 2014 Time : 06:16:40 Host : "ubuntu" PID : 3646 Case : /home/../Helyx/Engys/HELYX-OS/v2.1.1/kjsadf nProcs : 1 sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). fileModificationChecking : Monitoring run-time modified files using timeStampMaster allowSystemOperations : Disallowing user-supplied system call operations// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Create mesh for time = 0 --> FOAM Warning : From function void Foam::cyclicAMIPolyPatch::calcTransforms(const primitivePatch&, const pointField&, const vectorField&, const pointField&, const vectorField&) in file AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C at line 204 Patch areas are not consistent within 0.01 % indicating a possible error in the specified angle of rotation owner patch : Links neighbour patch : Rechts angle : -360 deg area error : 199.9398436 % match tolerance : 0.0001 --> FOAM Warning : From function void Foam::cyclicAMIPolyPatch::calcTransforms(const primitivePatch&, const pointField&, const vectorField&, const pointField&, const vectorField&) in file AMIInterpolation/patches/cyclicAMI/cyclicAMIPolyPatch/cyclicAMIPolyPatch.C at line 204 Patch areas are not consistent within 0.01 % indicating a possible error in the specified angle of rotation owner patch : Rechts neighbour patch : Links angle : -360 deg area error : 199.9398436 % match tolerance : 0.0001 Reading field p Reading field U Reading/calculating face flux field phi AMI: Creating addressing and weights between 1214 source faces and 1214 target faces --> FOAM Warning : From function AMIMethod<SourcePatch, TargetPatch>::checkPatches() in file lnInclude/AMIMethod.C at line 57 Source and target patch bounding boxes are not similar source box span : (0.04 0.0992922138 0.00395193587) target box span : (0.12 0.0992922138 0.00395193587) source box : (0.08 0.9001334486 0.03096879745) (0.12 0.9994256624 0.03492073332) target box : (0.24 0.9001334486 -0.03492073332) (0.36 0.9994256624 -0.03096879745) inflated target box : (0.2322098521 0.8923433007 -0.04271088119) (0.3677901479 1.00721581 -0.02317864958) --> FOAM FATAL ERROR: Unable to find initial target face
From function void Foam::AMIMethod<SourcePatch, TargetPatch>::initialise(label&, label&) in file lnInclude/AMIMethod.C at line 139. FOAM aborting #0 Foam::error: rintStack(Foam::Ostream&) in "/opt/openfoam230/platforms/linux64GccDPOpt/lib/libOpenFOAM.so" #1 Foam::error::abort() in "/opt/openfoam230/platforms/linux64GccDPOpt/lib/libOpenFOAM.so" #2 at AMIPatchToPatchInterpolation.C:0 #3 Foam::faceAreaWeightAMI<Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> >, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > >::calculate(Foam::List<Foam::List<int> >&, Foam::List<Foam::List<double> >&, Foam::List<Foam::List<int> >&, Foam::List<Foam::List<double> >&, int, int) in "/opt/openfoam230/platforms/linux64GccDPOpt/lib/libmeshTools.so" #4 Foam::AMIInterpolation<Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> >, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > >::update(Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > const&, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > const&) in "/opt/openfoam230/platforms/linux64GccDPOpt/lib/libmeshTools.so" #5 Foam::AMIInterpolation<Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> >, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > >::AMIInterpolation(Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > const&, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > const&, Foam::autoPtr<Foam::searchableSurface> const&, Foam::faceAreaIntersect::triangulationMode const&, Foam::AMIInterpolation<Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> >, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > >::interpolationMethod const&, double, bool) in "/opt/openfoam230/platforms/linux64GccDPOpt/lib/libmeshTools.so" #6 Foam::cyclicAMIPolyPatch::resetAMI(Foam::AMIInterpolation<Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> >, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > >::interpolationMethod const&) const in "/opt/openfoam230/platforms/linux64GccDPOpt/lib/libmeshTools.so" #7 Foam::cyclicAMIPolyPatch::AMI() const in "/opt/openfoam230/platforms/linux64GccDPOpt/lib/libmeshTools.so" #8 Foam::tmp<Foam::Field<double> > Foam::cyclicAMIPolyPatch::interpolate<double>(Foam::Field<double> const&, Foam::UList<double> const&) const in "/opt/openfoam230/platforms/linux64GccDPOpt/lib/libfiniteVolume.so" #9 Foam::cyclicAMIFvPatch::makeWeights(Foam::Field<double>&) const in "/opt/openfoam230/platforms/linux64GccDPOpt/lib/libfiniteVolume.so" #10 Foam::surfaceInterpolation::makeWeights() const in "/opt/openfoam230/platforms/linux64GccDPOpt/lib/libfiniteVolume.so" #11 Foam::surfaceInterpolation::weights() const in "/opt/openfoam230/platforms/linux64GccDPOpt/lib/libfiniteVolume.so" #12 in "/opt/openfoam230/platforms/linux64GccDPOpt/bin/pimpleFoam" #13 __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6" #14 in "/opt/openfoam230/platforms/linux64GccDPOpt/bin/pimpleFoam" /home/marcel/Helyx/Engys/HELYX-OS/v2.1.1/kjsadf/solver.run: line 28: 3646 Aborted (core dumped) $SOLVER -case $CASE 2>&1 3647 Done | tee $LOG
Ich habe etwas recherchiert und es hieß, die Fehler haben zwei Ursachen: Entweder ein Bug bei OpenFoam, der angeblich mit einem Update gelöst werden kann. Ich habe allerdings die neuste Version von OpenFoam. Die zweite Ursache soll ein nicht genug verfeinertes Netz in den Bereichen sein, die man mit CyclicAMI belegen will. WIe bewertest Du das? Ich habe den Case mal die Anlage gelegt. Mit einem 3D oder einem 2D Netz zu rechnen ist eigentlich unwichtig. Hauptsache ich kann das Modell mit dem Aufbau so rechnen. Gruß [Diese Nachricht wurde von maschi95 am 30. Sep. 2014 editiert.] 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: 24. Sep. 2014 16:35 <-- editieren / zitieren --> Unities abgeben: Nur für maschi95
Hallo, AMI ist Arbitary Mesh Interface und hat was mit bewegten Netzen zu tun und das liegt bei dir höchstwahrscheinlich nicht vor (: Wieso nimmst du nicht - die von mir schon erwähnte - cyclic Bedingung? Das CheckMesh dann durchläuft ist ja auch klar. Wedges = 2D das du nicht hast deswegen gibt es Fehler. Zudem hast du deinen Winkel auch nicht richtig. Das dir checkMesh bei deinem Netz nen Fehler bring ist auch klar weil du ja keine AMI Schnittstelle hast. PS: kannst du die STL Datei zur Verfügung stellen? ------------------ Best regards, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
maschi95 Mitglied
Beiträge: 8 Registriert: 18.09.2014
|
erstellt am: 25. Sep. 2014 11:33 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe meinen ersten Post mit der Modellbeschreibung überarbeitet. Dort befindet sich auch das Modell. Das soll Modell soll in 3D simuliert werden. Ich verstehe den Unterschied zwischen Cyclic und Cyclic AMI noch nicht ganz. Auf der OpenFoam Seite steht, dass sich Cyclic AMI besonders für rotatorische Anwendungen eignet. Wie muss man das Netz erstellen, damit die Patches links und rechts über Cyclic verbunden werden können? Du hast erwähnt, dass man die Punkte aus dem STL-File ins BlockMeshDict übernehmen könnte. Wie genau funktioniert das, bzw. welche Hilfsmittel benutzt man dafür? Gibt es noch andere Wege ein entsprechendes Gitter zu erstellen? 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: 25. Sep. 2014 12:00 <-- editieren / zitieren --> Unities abgeben: Nur für maschi95
Hallo, AMI bedeutet Arbitary Mesh Interface und bedeutet, dass sich dein NETZ bewegt. Bspw. vernetzt du einen Rotor einer Windanlage oder eine Schraube von einem Schiffsantrieb. Diese Bewegen sich während der Simulation, d.h. das numerische Netz wird rotieren. Zwischen statischem Netz und Rotationsnetz gibt es ein Interface (AMI). Siehe hier AMI OpenFOAM.com. Ich hoff das es nun einleuchtend ist. AMI hat mit deinem Fall nichts gemeinsam, weil du kein bewegtes Netz hast. ------------------ Best regards, Tobias Holzmann 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: 26. Sep. 2014 11:56 <-- editieren / zitieren --> Unities abgeben: Nur für maschi95
Hey, also ich hab mir mal das ganze angeschaut und »naja«, mehr kann ich nicht sagen... Einige Fragen/Anmerkungen:
- Sind die Details in deiner STL nötig?
- Dein Hintergrundnetz ist nich »optimal« für snappyHexMesh
- Wenn du mit Teilregionen deiner STL arbeiten würdest, könntest du das Netz optimieren
Ich hab mal etwas herumprobiert und das Netz sieht gerade so aus wie im Anhang gezeigt. Leider bin ich jetz auf dem Sprung und Fahre wieder in die Heimat nach Deutschland; ergo erst wieder am Montag verfügbar. ------------------ Best regards, Tobias Holzmann 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: 29. Sep. 2014 09:47 <-- editieren / zitieren --> Unities abgeben: Nur für maschi95
Hi, ich hab deinen Case falsch vernetzt, das mir erst jetzt gerade aufgefallen ist. Deswegen habe ich jetzt einfach deinen hergenommen und deine Randbedingungen mal geändert.
- cyclic gibt dir bei checkMesh einen Fehler weil dein Netz schlecht ist
- createPatch -overwrite würde deinen Case aufräumen (const/polyMesh/boundary)
- deine InletOutlet Bedingung versteh ich nicht wirklich?
Bei mir läuft der Case, ob das physikalisch korrekte Ergebnisse sind kann ich dir aber nicht beantworten. Der Zeitschritt ist mir aber viel zu klein (kann am Netz liegen, oder den RB)... Würde dir empfehlen erstmal ein ordentliches Netz zu erstellen. Viel Erfolg (: ------------------ Best regards, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
maschi95 Mitglied
Beiträge: 8 Registriert: 18.09.2014
|
erstellt am: 10. Okt. 2014 11:21 <-- editieren / zitieren --> Unities abgeben:
Hallo, vielen Dank für deinen Post! Entschuldige, dass ich erst so spät antworte, aber ich war einige zeit im Urlaub. Zitat: Sind die Details in deiner STL nötig?
Die Details des STL sind hochgesetzt, da mir gesagt wurde, das dies wegen der Mikrostrukturen notwendig ist. Daher habe ich dies einfach bei der Konvertierung auf Maximum gesetzt. Zitat: Dein Hintergrundnetz ist nich »optimal« für snappyHexMesh
Ich vermute, hier meinst Du entweder, dass die Seitenverhältnisse der Zellen etwa 1 sein müssen oder die Feinheit des Netzes an sich. Ich habe beides angepasst. Das Hintergrundnnetz ist jetzt so fein, wie die gröbste Stelle im erstellten Netz. Zitat: Wenn du mit Teilregionen deiner STL arbeiten würdest, könntest du das Netz optimieren
Ich benutze das STL als eine Seitenfläche und die anderen habe ich mir über Zylinder und Ebenen mit SnappyHexhMesh erstellt (Ich habe es auch mal rein mit STLs pobiert, aber das macht momentan keinen Unterschied). Zitat: createPatch -overwrite würde deinen Case aufräumen (const/polyMesh/boundary)
Danke, das war es, was ich wohl brauche. Wenn ich hier aber versuche die beiden Flächen als cyclic zu erstellen, stimmen die Punkte nicht überein und er bricht dann mit einem Fehler ab. Ich denke es liegt an dem schlechten Gitter. (Ich hab es in einem anderen case bei einer Parallelverschiebung auch mal probiert, hier hat es geklappt. pointSync habe ich auch getestet.) Hier noch der Link zum aktuellen Case: ModellIch habe das Gitter nochmal versucht zu verbessern. Es bleibt aber bei dem Fehler. Was kann ich noch tun, um das Netz zu verbessern damit ich die beiden Flächen mit cyclic verknüpfen kann? Oder was mache ich noch grundlegend falsch? Wenn es bei dir geklappt hat, muss es ja gehen. Gruß und Besten Dank! 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: 11. Okt. 2014 13:37 <-- editieren / zitieren --> Unities abgeben: Nur für maschi95
Hallo Dirk, eine simple Frage:
- wieso hast du nich dein Fluidraum als STL erzeugt? Damit lässt es sich so viel leichter leben!
Dein Problem liegt darin, dass du deine Seitenflächen zum Snappen mit den von dir erzeugten Geometrien in sHM erstellst. Allerdings sind das ja nur Flächen und die Schnittpunkte der Flächen gibt es da dann nicht. Enstprechend hast du eine schlechte Kantenapproximation! Normalerweise wird immer der Fluidraum erstellt (als STL)... Das wäre jetzt zuerst mal mein Tipp an dich! Am Besten erstellst du die STL mit als regionale STL und dann hast gleich die Möglichkeit deine Details feiner zu vernetzen. Meine Anmerkungen zum Hintergrundnetz hast du nicht in allen Punkten richtig verstanden. Das Hintergrundnetz sollte wenn möglich aus Würfelzellen bestehen. Wie grob diese sind liegt in deinem Ermessen. ------------------ Best regards, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|