Autor
|
Thema: cht_SnappyHexMesh_falschesNetz (2934 mal gelesen)
|
Berglöwe Mitglied Student
Beiträge: 21 Registriert: 18.08.2014
|
erstellt am: 12. Sep. 2014 15:11 <-- editieren / zitieren --> Unities abgeben:
Hallo alle zusammen, Ich versuch gerade mit Snappy ein MultiRegion Case zu erstellen, jedoch kenn ich mich nicht besonders gut mit snappyhexmesh aus und bräuchte Hilfe.. ich habe zunächst für jede Region eine stl erzeugt und diese einzeln in der sHMDict eingelesen. Nun passt snappy aber nicht das Netz an die Geometrie an bzw. schneidet nicht die äußeren Zellen weg. Die Verfeinerungen funktionieren jedoch und auch die Cellzones werden für die Regionen definiert. Wäre nett wenn sich jemand mal meine Dict anschauen könnte. Weis wirklich nicht worin der Fehler liegen könnte. Viele Grüße Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berglöwe Mitglied Student
Beiträge: 21 Registriert: 18.08.2014
|
erstellt am: 12. Sep. 2014 15:16 <-- editieren / zitieren --> Unities abgeben:
|
Berglöwe Mitglied Student
Beiträge: 21 Registriert: 18.08.2014
|
erstellt am: 16. Sep. 2014 12:34 <-- editieren / zitieren --> Unities abgeben:
neimand eine Idee oder Vermutung??... hier nochmals meine aktuelle sHMDict. Code: /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.2.1 | | \\ / A nd | Web: http://www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object autoHexMeshDict; }// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // castellatedMesh true; snap true; addLayers false; geometry { Innen.stl { type triSurfaceMesh; regions { face-1 { name face-1; } face-2 { name face-2; } .... } } Aussen.stl { type triSurfaceMesh; regions { face-100 { name face-100; } face-101 { name face-101; } ..... } } Glasoben.stl { type triSurfaceMesh; regions { face-14 { name face-14; } face-13 { name face-13; } .... } } Glasunten.stl { type triSurfaceMesh; regions { face-95 { name face-95; } face-96 { name face-96; } ... } } }; castellatedMeshControls { maxLocalCells 3000000 ; maxGlobalCells 6000000; minRefinementCells 10; nCellsBetweenLevels 6; allowFreeStandingZoneFaces true; features ( { file "Innen.eMesh"; level 0; } { file "Aussen.eMesh"; level 0; } { file "Glasoben.eMesh"; level 1; } { file "Glasunten.eMesh"; level 1; } ); refinementSurfaces { Glasunten.stl { level (2 2); faceZone Glasunten; cellZone Glasunten; cellZoneInside inside; } Glasoben.stl { level (2 2); faceZone Glasoben; cellZone Glasoben; cellZoneInside inside; } Innen.stl { level (0 0); faceZone Innen; cellZone Innen; cellZoneInside inside; regions { face-24 { level (4 4); } } } Aussen.stl { level (0 0); faceZone Aussen; cellZone Aussen; cellZoneInside inside; } } resolveFeatureAngle 60; refinementRegions { } locationInMesh (14.45 -14.81 5.45); } snapControls { nSmoothPatch 3; tolerance 4; nSolveIter 30; nRelaxIter 5; nFeatureSnapIter 10; implicitFeatureSnap false; explicitFeatureSnap true; multiRegionFeatureSnap true; } addLayersControls { relativeSizes true; layers { } expansionRatio 1.2; finalLayerThickness 0.3; minThickness 0.1; nGrow 0; featureAngle 60; slipFeatureAngle 30; nRelaxIter 5; nSmoothSurfaceNormals 1; nSmoothNormals 3; nSmoothThickness 10; maxFaceThicknessRatio 0.5; maxThicknessToMedialRatio 0.3; minMedianAxisAngle 130; nBufferCellsNoExtrude 0; nLayerIter 50; } meshQualityControls { maxNonOrtho 65; maxBoundarySkewness 20; maxInternalSkewness 4; maxConcave 80; minFlatness 0.5; minVol 1e-16; minArea -1; minTwist 0.02; minDeterminant 0.001; minFaceWeight 0.02; minVolRatio 0.01; minTriangleTwist -1; minTetQuality 1e-30; nSmoothScale 4; errorReduction 0.75; } debug 0; mergeTolerance 1E-6; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
mir ist aufgefallen, dass sHM slave patches zu jeder Fläche erstellt und folgende Fehlermeldung taucht auf
Code:
Morph iteration 1 ----------------- Calculating patchDisplacement as distance to nearest surface point ... --> FOAM Warning : From function autoSnapDriver::calcNearestSurface(..) in file autoHexMesh/autoHexMeshDriver/autoSnapDriver.C at line 916 For point:2007 coordinate 3.9037189 -14.89314 0.0901568627) did not find any surface within:0.48192 meter. --> FOAM Warning : From function autoSnapDriver::calcNearestSurface(..) in file autoHexMesh/autoHexMeshDriver/autoSnapDriver.C at line 916 For point:2008 coordinate 3.90371037 -14.77266 0.0901568627) did not find any surface within:0.48192 meter. ........
[Diese Nachricht wurde von Berglöwe am 16. Sep. 2014 editiert.] [Diese Nachricht wurde von Berglöwe am 16. 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: 16. Sep. 2014 13:03 <-- editieren / zitieren --> Unities abgeben: Nur für Berglöwe
|
Berglöwe Mitglied Student
Beiträge: 21 Registriert: 18.08.2014
|
erstellt am: 16. Sep. 2014 14:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Tobias, danke für die Antwort die Vermutung hatte ich auch schon,habe die Geometrien in paraview geöffnet und mit surfacecheck überprüft, konnte jedoch bisher keine Fehler in den STL finden. Hier ein Beispiel für die Ausgabe von surfaceCheck, sollte denke ich ok sein , gibs andere wege meine stl zu überprüfen : Code: /*---------------------------------------------------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.2.1 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ Build : 2.2.1-57f3c3617a2d Exec : surfaceCheck Aussen.stl Date : Sep 16 2014 Time : 14:49:33 Host : "Berlinux02" PID : 30976 Case : /media/simRun/RK_BA2D_CHT_snappy/mesh/constant/triSurface 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// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Reading surface from "Aussen.stl" ... Statistics: Triangles : 62766 Vertices : 31385 Bounding Box : (-9.99878 -14.8827 -1.14586e-14) (0.055 -14.7827 10.2) Region Size ------ ---- face-100 30697 face-101 6 face-102 79 face-103 424 face-104 432 face-105 416 face-106 5 face-96 158 face-107 3 face-108 4 face-109 3 face-93 275 face-110 3 face-111 30261 Surface has no illegal triangles.
Triangle quality (equilateral=1, collapsed=0): 0 .. 0.05 : 0 0.05 .. 0.1 : 0 0.1 .. 0.15 : 0 0.15 .. 0.2 : 0 0.2 .. 0.25 : 0 0.25 .. 0.3 : 0 0.3 .. 0.35 : 7.9661e-05 0.35 .. 0.4 : 0.000286779 0.4 .. 0.45 : 0.000302712 0.45 .. 0.5 : 0.000446101 0.5 .. 0.55 : 0.00065322 0.55 .. 0.6 : 0.000716949 0.6 .. 0.65 : 0.000908135 0.65 .. 0.7 : 0.00238983 0.7 .. 0.75 : 0.00269254 0.75 .. 0.8 : 0.00955932 0.8 .. 0.85 : 0.0314501 0.85 .. 0.9 : 0.0472071 0.9 .. 0.95 : 0.158398 0.95 .. 1 : 0.74491 min 0.300276 for triangle 32939 max 1 for triangle 4254 Edges: min 0.0275 for edge 46266 points (0.0275 -14.8327 8.4)(0.055 -14.8327 8.4) max 0.165457 for edge 53565 points (-9.14475 -14.7827 10.2)(-9.2823 -14.7827 10.108) Checking for points less than 1e-6 of bounding box ((10.0538 0.1 10.2) meter) apart. Found 0 nearby points. Surface is closed. All edges connected to two faces. Number of unconnected parts : 1 Number of zones (connected area with consistent normal) : 3 More than one normal orientation. End
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: 16. Sep. 2014 15:15 <-- editieren / zitieren --> Unities abgeben: Nur für Berglöwe
Nein, aber wenn du immer "surface closed" erhältst dann passt das. Was mir grad noch einfällt und sehr trivial ist:
- dein Problem ist, dass er das äußere auch mit vernetzt?
- splitMeshRegion -cellZones
- domain0 löschen
- randbedingungen allen anderen Regionen zur Domain0 ändern
Das ist ganz normal das er das mitvernetzt, weil es ja auch eine Region darstellt, die nur nicht im sHMDict definiert wird. ------------------ Best regards, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berglöwe Mitglied Student
Beiträge: 21 Registriert: 18.08.2014
|
erstellt am: 16. Sep. 2014 17:13 <-- editieren / zitieren --> Unities abgeben:
Ja dass is das Problem , danke für den Hinweis werd da nochmal schaun, mir ist jetzt allerdings aufgefallen, dass in der von sHM erzeugten boundary für die einzelnen Flächen der Geometrie, nFaces = 0 definiert ist, das kann ja nicht sein und woher stammen die salve patches. Kannst mir da noch mal weiterhelfen. Code:
228 ( maxY { type patch; nFaces 41382; startFace 139007; } minX { type patch; nFaces 102; startFace 180389; } maxX { type patch; nFaces 102; startFace 180491; } minY { type patch; nFaces 41382; startFace 180593; } minZ { type patch; nFaces 412; startFace 221975; } maxZ { type patch; nFaces 340; startFace 222387; } face-1 { type wall; nFaces 0; startFace 222727; } face-1_slave { type wall; nFaces 0; startFace 222727; } face-2 { type wall; nFaces 0; startFace 222727; } face-2_slave { type wall; nFaces 0; startFace 222727; } face-3 { type wall; nFaces 0; startFace 222727; } face-3_slave { type wall; nFaces 0; startFace 222727; } face-4 { type wall; nFaces 0; startFace 222727; } face-4_slave { type wall; nFaces 0; startFace 222727; } face-5 { type wall; nFaces 0; startFace 222727; } face-5_slave { type wall; nFaces 0; startFace 222727; } face-6 { type wall; nFaces 0; startFace 222727; } face-6_slave { type wall; nFaces 0; startFace 222727; } face-7 { type wall; nFaces 0; startFace 222727; }...... ..
Danke Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bacengeugn Mitglied Konstrukteur
Beiträge: 181 Registriert: 10.11.2011
|
erstellt am: 17. Sep. 2014 08:09 <-- editieren / zitieren --> Unities abgeben: Nur für Berglöwe
Hab ich es richtig verstanden, dass die Flächen, die ich als Randbedingung nutzen will, in regions{} definiert werden müssen? Hast du dann über 100 verschiedene Randbedingungen für Innen.stl? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berglöwe Mitglied Student
Beiträge: 21 Registriert: 18.08.2014
|
erstellt am: 17. Sep. 2014 08:52 <-- editieren / zitieren --> Unities abgeben:
Morgen, ja ich benutze auf Arbeit zurzeit CastNet um die stl zu erstellen. Dabei werden in der STL alle Flächen der Geometrie definiert, die lassen sich dann mit createPatch zu einem Patch zusammenfassen. Also z.B. face-1 und face-2 = Inlet. Keine Ahnung ob das der günstigste weg ist aber erscheint mir relativ flexibel. Grüße Robert 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: 17. Sep. 2014 09:03 <-- editieren / zitieren --> Unities abgeben: Nur für Berglöwe
Zitat: Original erstellt von Berglöwe: Ja dass is das Problem , danke für den Hinweis werd da nochmal schaun, mir ist jetzt allerdings aufgefallen, dass in der von sHM erzeugten boundary für die einzelnen Flächen der Geometrie, nFaces = 0 definiert ist, das kann ja nicht sein und woher stammen die salve patches. Kannst mir da noch mal weiterhelfen. Danke Robert
Das ist alles korrekt. Die Faces die sHM definiert sind innenliegende Verbindungsflächen (internalFaces) und werden von sHM nicht direkt erzeugt. Erst mit dem Splitten der Regionen werden die Faces erzeugt aber die meisten wundern sich, dass die meisten Faces gar nicht erstellt werden. Grund hierfür ist die Tatsache, dass splitMeshRegions alle Faces, die von zwei benachbarten Regionen geteilt werden immer in eine einzelne RB aufgeteilt bspw.
Code:
region1_to_region2
selbst wenn zuvor diese Fläche in der STL anders definiert worden ist. Anders sieht es aus, wenn man Grenzflächen zur Domain definiert. Mehr Informationen finden sich hier: Cad.de cfd-online.com ------------------ Best regards, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Berglöwe Mitglied Student
Beiträge: 21 Registriert: 18.08.2014
|
erstellt am: 17. Sep. 2014 09:52 <-- editieren / zitieren --> Unities abgeben:
Hallo Tobias, vielen vielen Dank erstmal für die Hilfe, jetzt hab ich das Prinzip verstanden und es hat soweit auch funktioniert, leider erschwert das die Festlegung der Randbedingungen. Es wurden jetzt mehrere zusätzliche domains erstellt und alle Fläche als Übergangsflächen definiert, also z.B. Innen_to_domain10 und ähnliches. Werd mich im Forum nochmal belesen, sollte ja dann zu lösen sein. Nochmals Danke Viele Grüße Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bacengeugn Mitglied Konstrukteur
Beiträge: 181 Registriert: 10.11.2011
|
erstellt am: 17. Sep. 2014 09:56 <-- editieren / zitieren --> Unities abgeben: Nur für Berglöwe
Zitat: Original erstellt von Berglöwe: Morgen,ja ich benutze auf Arbeit zurzeit CastNet um die stl zu erstellen. Dabei werden in der STL alle Flächen der Geometrie definiert, die lassen sich dann mit createPatch zu einem Patch zusammenfassen. Also z.B. face-1 und face-2 = Inlet. Keine Ahnung ob das der günstigste weg ist aber erscheint mir relativ flexibel. Grüße Robert
Ich mach es momentan so, dass ich STEP-Dateien meiner Modelle in Salome reinlade, dort die Flächen gruppiere und diese Gruppen einzeln als STL exportiere. Wenn ich die Gruppen merge kann ich sie zwar auch exportieren, sie erscheinen aber dann nicht in der STL. Das Problem an meiner Methode ist, ich bekomme offenbar nie ein geschlossenes Modell. Das Vernetzen kann dann funktionieren muss es aber nicht. Mal gucken ob bei mir createPatch Abhilfe schaffen kann. 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: 17. Sep. 2014 10:01 <-- editieren / zitieren --> Unities abgeben: Nur für Berglöwe
Hallo, dein Problem bei der Vernetzung ist, dass einzelne Flächen dann unterschiedliche Gitterpunkte an den Schnittstellen aufweisen und diese dann von sHM als nicht geschlossen dargestellt werden. Oft denkt man und es scheint auch so, als wären die STL Flächen geschlossen, das aber nicht der Fall ist. Abhilfe schafft hier die Definition von Edges der Schnittlinien und diese mittels Submesh in den zwei STL-Files dann mit den gleichen Eigenschaften zu vernetzen. Alle STL Exportieren und mittels einem kleinen python Skript die Namen vor die Solids schreiben und zusammenfügen. Fertig. ------------------ Best regards, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bacengeugn Mitglied Konstrukteur
Beiträge: 181 Registriert: 10.11.2011
|
erstellt am: 17. Sep. 2014 12:11 <-- editieren / zitieren --> Unities abgeben: Nur für Berglöwe
Ich hatte bereits ein Mesh und die Patchgruppen, also hab ich mit "Create Groups of Geometry" Gruppen ins Mesh eingefügt und dann diese exportiert und zusammengefügt. Damit war die Fläche tatsächlich geschlossen. Danke dir nochmals für die Hilfe. 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: 17. Sep. 2014 13:42 <-- editieren / zitieren --> Unities abgeben: Nur für Berglöwe
Hallo, solang du eine Gruppe hast, wird das auch alles schön vernetzt. Werden aber einzelne STLs zu einer gesamt STL zusammengesetzt (in der dann die Regionen enthalten sind), wird das bei den meisten versuchen Scheitern. Vor allem wenn man verschiedene Netzfeinheitsgrade hat weil ein Teil eine Länge von 0,4m hat und das andere bspw. 0,001m. Nach meiner Ansicht, erhält man bei einer Gruppe von STLs nicht den Namen in den Solids, somit kann man auch nicht mit Regionen arbeiten (außer das hat sich bei der neuen Salome Version geändert). ------------------ Best regards, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |