| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Tool snapEdges (4123 mal gelesen)
|
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010
|
erstellt am: 30. Jan. 2011 12:22 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, ich vernetze gerade ein paar Dinge mit sHM. Habe festgestellt das er mir die Konturen nicht ganz so sauber macht und mir dann das Tool "snapEdges" geholt. Compiliert und getestet. Beim test kommt immer folgender Fehler: Code: --> FOAM FATAL ERROR: Cannnot read "inlet.stl" From function triSurface::read(const fileName&, const word&, const bool) in file triSurface/triSurface.C at line 371. FOAM exiting
die STL ist im TriSurface Ordner drin. Habe die snapEdgesDict angepasst aber komm nicht auf den Fehler. In der triSurface.C file ist in line 371 nur die Kommandozeile für die Fehlerausgabe. Vielleicht kenn jemand das Problem oder weiß wie ich in sHM mein Netz verbessern kann? Grüße Tobi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 30. Jan. 2011 13:07 <-- editieren / zitieren --> Unities abgeben:         
|
TTB Mitglied CFD Engineer
 
 Beiträge: 353 Registriert: 02.10.2008 BIM HVACTool für Windows OpenFOAM-2.2.x
|
erstellt am: 31. Jan. 2011 10:12 <-- editieren / zitieren --> Unities abgeben:          Nur für Shor-ty
Hallo Tobi, kannst du eine kleine Anleitung hier schreiben, wie man das Tool benutzt und mal ein Screenshot beifügen, nachdem du das Tool angewendet hast? Das Tool snapEdges scheint ja ganz interessant zu sein... Danke... Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neewbie Mitglied CFD Engineer, Research

 Beiträge: 48 Registriert: 08.02.2010 OF 1.7.x OF 1.6-ext
|
erstellt am: 31. Jan. 2011 11:18 <-- editieren / zitieren --> Unities abgeben:          Nur für Shor-ty
|
Marc Aurel Mitglied

 Beiträge: 51 Registriert: 04.11.2009 Ubuntu 10.04 LTD Salome_6.3.0 Openfoam_2.0.x
|
erstellt am: 31. Jan. 2011 11:55 <-- editieren / zitieren --> Unities abgeben:          Nur für Shor-ty
Hallo zusammen, snapEdge kann ich sehr empfehlen. Nach snapEdge sollte zur Sicherheit das Netz mit checkMesh geprüft werden. Weiterer Tipp für den Workflow mit sHM: 1. castellatedMesh 2. snap 3. snapEdge (vor addlayer) 4. addLayers Dieser Ablauf ist sinnvoll, um die Layer von sHM nicht zu deformieren Viele Grüße Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010
|
erstellt am: 13. Feb. 2011 12:53 <-- editieren / zitieren --> Unities abgeben:         
Hey alle zusammen, um die Aussagen von Marc zu untermauern hier die Abfolge visuell dargestellt. Time0: Hintergrundnetz + STL File Time1: snappyHexMesh -> castellatedMesh Time2: snappyHexMesh -> snap Time3: snapEdge Time4: snappyHexMesh -> addLayers Mit snapEdge kann man wunderbar die Patches verbessern. Man kann aber auch wunderbar Zonen snapen ... Das Ergebnis ist sehr zufriedenstellend. Laut Macher dieses Tools kommt bald eine überarbeitete Version raus.
Installation wie auf dem oben genannten Link. Beste Grüße Tobi [Diese Nachricht wurde von Shor-ty am 13. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 13. Feb. 2011 12:55 <-- editieren / zitieren --> Unities abgeben:         
|
jimbo566 Mitglied

 Beiträge: 24 Registriert: 17.02.2011
|
erstellt am: 18. Feb. 2011 08:37 <-- editieren / zitieren --> Unities abgeben:          Nur für Shor-ty
hi Shorty, ich fange gerade an mit snappyhexmesh zu arbeiten und habe eine Frage, wie bekomme ich es hin wie bei dir auf Bild mit Time4 zu sehen ist, das ich in der Mitte der wand große zellen habe die zum Rand hin dann kleiner werden? Hängt das mit den Layern zusammen? Und wenn ja kannst du mir einen Tipp geben wie ich meine Layer einstellen muss damit ich ein ähnlcihes Ergebnsi bekomme? SnapEdge hat damit doch nichts zu tun? Oder
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 18. Feb. 2011 12:08 <-- editieren / zitieren --> Unities abgeben:         
Hallo Jimbo,... schön das es wieder jemand neuen in diesem Forum gibt. Zu deiner Frage. snapEdge hat damit nichts zu tun. Dieses Tool erlaubt Fehler von snap im Tool sHM auszubessern. Mit den großen und kleinen Zellen hat mit dem Hintergrundnetz und den Einstellungen in Snappy zu tun. Du machst mit blockMesh ein Hintergrundnetz (was dir ja bekannt ist) und hierzu kannst du ja schon einmal die Feinheit dieses Netzes erstellen. Grob oder Fein wie du das willst. In snappyHexMesh kannst du dann in surfaceRefinement einstellen wie das Anfangsnetz verfeinert wird. Kurzes Beispiel: Code:
geometry { air.stl { type triSurfaceMesh; name air; regions { wall { name wall; } directMappedWall_platte_u { name air_to_platteu; } directMappedWall_platte_o { name air_to_platteo; } } } }; // Settings for the castellatedMesh generation. castellatedMeshControls { // Refinement parameters // ~~~~~~~~~~~~~~~~~~~~~ // While refining maximum number of cells per processor. This is basically // the number of cells that fit on a processor. If you choose this too small // it will do just more refinement iterations to obtain a similar mesh. maxLocalCells 2000000; // Overall cell limit (approximately). Refinement will stop immediately // upon reaching this number so a refinement level might not complete. // Note that this is the number of cells before removing the part which // is not 'visible' from the keepPoint. The final number of cells might // actually be a lot less. maxGlobalCells 1000000; // The surface refinement loop might spend lots of iterations refining just a // few cells. This setting will cause refinement to stop if <= minimumRefine // are selected for refinement. Note: it will at least do one iteration // (unless the number of cells to refine is 0) minRefinementCells 10; // Number of buffer layers between different levels. // 1 means normal 2:1 refinement restriction, larger means slower // refinement. nCellsBetweenLevels 2; // Explicit feature edge refinement // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Specifies a level for any cell intersected by its edges. // This is a featureEdgeMesh, read from constant/triSurface for now. features ( ); // Surface based refinement // ~~~~~~~~~~~~~~~~~~~~~~~~ // Specifies two levels for every surface. The first is the minimum level, // every cell intersecting a surface gets refined up to the minimum level. // The second level is the maximum level. Cells that 'see' multiple // intersections where the intersections make an // angle > resolveFeatureAngle get refined up to the maximum level. refinementSurfaces { air { // Surface-wise min and max refinement level level (0 1); // faceZone fluidc; // cellZone fluidc; // zoneInside true; } }
Wie du siehst heißt meine zu vernetzende Geometrie "air.stl" welche ich dann in snappy den Namen "air" gebe (wie Fett und Kursiv gekennzeichnet). Weiter unten bei surfaceRefinement siehst du den Namen air wieder und die verfeinerungs Einstellungen. Code: level (0 1);
Heißt soviel, dass snappy das Netz an den Außenstellen verfeinert und den Rest so belässt. Code: level (1 1)
würde bedeuten, dass er die komplette Geometrie nochmals verfeinert. Hier musst du etwas herumspielen und das passende für dich wählen :) Da ich immer Wärmeübertragungen in Fluiden betrachte, ist die Randschicht natürlich auch immer sehr interessant und deswegen füge ich hier Layer ein.Die Regionen sind in sofern wichtig, da du mit diesen deine Layer definieren kannst. Mir war das anfangs auch nicht so klar wie das funktioniert aber dazu musst du dir folgendes vorstellen: Wenn du eine Geometrie als STL ausgibst, dann ist die komplette Oberfläche als ein Patch bezeichnet (bei Catia heißt die dann CATIASTL). Wenn du jedoch ein Rohr hast, willst du sicherlich mehrere Patches generieren - wie Inlet - Outlet - Symmetrien etc. Das kannst du dann in Salome machen. Simple ausgedrückt, zerlegst du deine Oberfläche in Teiloberflächen mit ganz bestimmten Namen (deinen Patches) und speicherst alle Teile einzeln als STL ab. Danach kopierst du alle wieder in eine STL (mit Namen - hierfür gibts auch n kleines Skript von einem Kollegen) - eigentlich hat sich damit zur Anfangs STL nichts geändert außer das du mehrere Patches hast die in deiner STL vorherschen und die du in snappy dann als Regionen auswählen kannst. Etwas kompliziert zu beschreiben ;) in meinem Beispiel habe ich drei Patches - wall - directMappedWall_platteo - directMappedWall_platteu und denen gebe ich dann in Snappy neue Namen, die auch in der boundary-file zu sehen sind. Diese Namen musst du auch bei den Layern verwenden. Code: addLayersControls { relativeSizes true; // Per final patch (so not geometry!) the layer information layers { air_to_platteo { nSurfaceLayers 4; } air_to_platteu { nSurfaceLayers 4; } //flowAirDuctReagent_inlet2 //{ // nSurfaceLayers 1; //} }
Solltest du nur einen Patch haben so musst du in deiner STL - File schauen wie der Name ist Code:
solid '''NAME'''' ... endsolid
Sollte kein Name dranstehen generiert dir Snappy automatisch einen Patch namens "patch0" insofern ich mich noch entsinnen kann  Ich hoff das hilft dir weiter Ansonsten melde dich einfach wieder ... Im CFD-Online Forum habe ich auch schon eine Beschreibung + Testcase bereitgestellt. http://www.cfd-online.com/Forums/openfoam-meshing-snappyhexmesh/8 4654-patch-names-stl-file-snappyhexmesh.html Grüße Tobi
[Diese Nachricht wurde von Shor-ty am 18. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jimbo566 Mitglied

 Beiträge: 24 Registriert: 17.02.2011
|
erstellt am: 21. Feb. 2011 08:07 <-- editieren / zitieren --> Unities abgeben:          Nur für Shor-ty
wow vielen Dank für die ausführliche Antwort!!!! Ich bin jetzt soweit, dass ich in Salome meinen zylinder "zerteilt" habe. In Inlet Outlet und Wall. In den einzelnen Stl Dateien habe cih dann per hand hinter Solid den entsprechenden namen eingefügt. Anschliessend die Stl dateien zusammengefügt zu einer gesamt.stl In SHM habe ich es so langsam mit den refinementSurfaces raus, also habe ich hier ale entsprechenden Einstellungen vorgenommen. Dann habe ich die Polymesh dateien aus dem letzten Timestep Ordner in den constant ordner kopiert um mir so eine neue Boundarie zu erstellen. Richtig? P und U mit inlet, outlet und Wall eingestellt und den Solver ICOFoam drüber laufen lasen. allerdings wurde während dieser sehr einfachen Simulation meine Cor Zahl immer extrem groß. Kann das an meinem Gitter liegen, das noch nicht wirklich gut aussieht? Immer wenn ich versuche mit layern zu arbeiten wird die Netzqualität schlechter als ohne. Kannst du mir hier ncoh einen Tipp geben? Habe cih sonst etwas in meiner Vorgehensweise falsch gemacht?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 21. Feb. 2011 11:21 <-- editieren / zitieren --> Unities abgeben:         
Hey,.. hört sich doch schon wunderbar an. Mit Salome wirst es über "Create Groups" machen. Um die STL 's zusammenzufügen habe ich dir ein Tool angehängt. Damit brauchst du die Namen nicht selber in jede STL reinzuschreiben. Ausführen: ./"Skriptname" -in stl_1.stl stl_2.stl -out main.stl Mit deine Co-Zahl kann ich dir nicht weiterhelfen, da ich mit diesem Solver noch nie gearbeitet habe.
Deine Vorgehensweise ist korrekt. 1. snappyHexMesh mit (castellated + snap) 2. snapEdge (wenn nötig) Falls keine Layer mehr gemacht werden die "point" Datei von Ordner 3 in Ordner 2 kopieren und den kompletten polyMesh-Ordner im Ordner 2 in deine constant kopieren. Deine boundary anpassen wie du schon gesagt hast und dementsprechend deine Anfangswerte in "0". Welche Probleme hast du mit addLayer? Vielleicht hast du die "finalLayerThickness" zu groß für dein Netz. Aber wenn du Layers erzeugst passt ja soweit alles musst halt nur noch etwas rumspielen. Beste Grüße Tobi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jimbo566 Mitglied

 Beiträge: 24 Registriert: 17.02.2011
|
erstellt am: 21. Feb. 2011 12:53 <-- editieren / zitieren --> Unities abgeben:          Nur für Shor-ty
|
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 21. Feb. 2011 13:30 <-- editieren / zitieren --> Unities abgeben:         
Ich bin leider auch noch nicht ganz so fit mit SnappyHexMesh - die refinementBox habe ich selber noch nicht benutzt. Kann dir da keine Auskunft geben. Im Tool "discretizer" wird sie jedoch im sHM Verfahren auch angewendet. Kann aber dazu keine Aussagen treffen. CFD-Online.com findest sicher was oder eventuell gibt dir hier noch jemand einen Rat  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TTB Mitglied CFD Engineer
 
 Beiträge: 353 Registriert: 02.10.2008 BIM HVACTool für Windows OpenFOAM-2.2.x
|
erstellt am: 21. Feb. 2011 13:40 <-- editieren / zitieren --> Unities abgeben:          Nur für Shor-ty
|
jimbo566 Mitglied

 Beiträge: 24 Registriert: 17.02.2011
|
erstellt am: 22. Feb. 2011 09:42 <-- editieren / zitieren --> Unities abgeben:          Nur für Shor-ty
vielen Dank nochmal für die Antworten! Das Forum hat mir bisher echt gut weitergeholfen!!! Da es ja eigentlich etwas Offtopic ist verschieb ich meine neuen Fragen in einen anderen Thread. Um mein Thema viellciht abzuschliessen kann cih ja noch kurz sagen das die hohe Co Zahl durch ein zu großer delataT zustandekamm. Gruß jimbo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bephi Mitglied Student

 Beiträge: 56 Registriert: 21.04.2010 OpenFoam 1.70
|
erstellt am: 05. Jan. 2012 15:10 <-- editieren / zitieren --> Unities abgeben:          Nur für Shor-ty
Hallo zusammen, der Beitrag ist sehr interessant und eigentlich genau das was ich suche. Mein Problem ist leider, dass ich nicht weiß, wie ich mit Salome die patches INLET OUTLET und WALL definiere. Mir liegt nur eine STL vor und wenn ich die in Salome importiere (was nur über den MESH Modus geht), dann kann ich die Funktion "Create Groups" irgendwie nicht so ausführen, wie das beim Geometry-Modus der Fall ist. Hat da jemand eine Idee, wie ich am besten vorgehe, damit die Datei für sHM vernünftig vorbereitet ist? Besten Dank im Vorraus! ------------------ Maschinenbau-Student mit Vertiefungsrichtung "Angewandte Mechanik" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010
|
erstellt am: 05. Jan. 2012 17:48 <-- editieren / zitieren --> Unities abgeben:         
Woher hast du die STL File? Wenn dein CAD Programm STEP Files unterstützt dann exportier es in diesem Format und lade es in Salome ein. Dann kannst du wie gewohnt mittels Create Groups im GEOM deine Flächen definieren. Sollte das nich der Fall sein, kannst du immer noch über blockMesh die Seiten definieren, die sHM dann übernimmt, wenn du offene Flächen hast. Tobi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bephi Mitglied Student

 Beiträge: 56 Registriert: 21.04.2010 OpenFoam 1.70
|
erstellt am: 08. Jan. 2012 16:12 <-- editieren / zitieren --> Unities abgeben:          Nur für Shor-ty
Hallo Tobi, vielen Dank für deine Antwort (hab sie grad erst wahrgenommen). Also mir wurde leider nur die STL zur Verfügung gestellt und ich kann sie nicht als STEP exportieren. In blockMesh kann ich doch aber nur die äußeren Flächen des Quaders, der als Initialnetz generiert wird, benennen oder? In wie fern hat blockMesh für sich schon etwas mit der in sHM verwendeten STL zu tun? Beste Grüße und noch einen schönen Sonntag! ------------------ Maschinenbau-Student mit Vertiefungsrichtung "Angewandte Mechanik" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010
|
erstellt am: 08. Jan. 2012 21:44 <-- editieren / zitieren --> Unities abgeben:         
Das mit dem Blockmesh geht nur, wenn du offene Flächen hast die dann von deinem Blockmesh Netz so beibehalten werden. Nen Beispiel wär die Umströmung einer Kugel. In BlockMesh definierst alle Flächen und via SHM bekommst noch die Kugelfläche. Aber das wird bei dir nicht funktionieren. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bephi Mitglied Student

 Beiträge: 56 Registriert: 21.04.2010 OpenFoam 1.70
|
erstellt am: 09. Jan. 2012 10:27 <-- editieren / zitieren --> Unities abgeben:          Nur für Shor-ty
Genau, das dachte ich mir auch, passt aber bei mir nicht. Das Wichtigste wird sein, die STL in STEP/IGES umzuwandeln, wobei aller Versuche bisher aber fehlgeschlagen sind... Ich bekomme zwar Steps, die können aber weder von Salome, ICEM, FreeCAD oder sonst wem gelesen werden. Kennt jemand noch einen guten und wenn möglich opensource Konverter? ------------------ Maschinenbau-Student mit Vertiefungsrichtung "Angewandte Mechanik" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010
|
erstellt am: 09. Jan. 2012 21:59 <-- editieren / zitieren --> Unities abgeben:         
|
bephi Mitglied Student

 Beiträge: 56 Registriert: 21.04.2010 OpenFoam 1.70
|
erstellt am: 11. Jan. 2012 12:23 <-- editieren / zitieren --> Unities abgeben:          Nur für Shor-ty
Zitat: Original erstellt von Shor-ty: Hier mal die File für das Konvertieren mehrerer STL's zu einer Mainstl.Tobi
Vielen Dank für die Bereitstellung des Skripts. Eine weitere Möglichkeit ist der cat Befehl: Einfach 'cat stl1.stl stl2.stl stl3.stl > final.stl' ausführen. Beide Wege fügen die Einzelteile zusammen und ich erhalte eine Datei mit der gleichen Größe wie die Ursprungsdatei. Alle Einzel-STLs kann ich auch mit Salome/ParaView/... laden, aber nach dem Zusammenfügen kommt bei import->stl immer eine unknown error-Fehlermeldung. Klappt es bei euch reibungslos?
------------------ Maschinenbau-Student mit Vertiefungsrichtung "Angewandte Mechanik" Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010
|
erstellt am: 23. Mai. 2012 13:02 <-- editieren / zitieren --> Unities abgeben:         
hi,... Hinweis ich hab gerade wieder das Skript heruntergeladen und es ist eben nicht das gleiche wie mit "cat"  Es gibt hierbei schon einen Unterschied, der wichtig ist. Das Skript nimmt die Namen der Files in die neue STL mit auf: Code: solid Name-der-ersten-STL . . . endsolid solid Name-der-zweiten-STL . . . endsolid
Dieser kleine aber feine Unterschied ermöglicht es dann mit Regionen zu arbeiten.Via cat funktioniert das nicht Außer man möchte eben nicht mit Regionen arbeiten! Nur zur Info. Tobi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |