You are on page 1of 9

Implementacja generatora siatek N-ktnych

Raport wewntrzny L-5/B-161/2009 Listopad 2009

Roman Putanowicz Instytut Technologii Informatycznych w Inynierii Ldowej (L-5) Politechnika Krakowska <R.Putanowicz@L5.pk.edu.pl> Revision : 1.1.1.1 5 grudnia 2009

Spis treci
1 Wstp 2 Narzdzia 3 Dekompozycja obszarw na wypuke wielokty 4 Generacja siatek N-ktnych poprzez diagramy Voronoi 5 Generacja siatek N-ktnych za porednictwem siatek dualnych 5.1 Przykady . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 5.1.2 Siatki 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . Siatki 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 3 4 4 5 5 5

Wstp
Implementacja N-ktnej wersji metody elementw skoczonych wymaga w oczywisty sposb moliwoci tworzenia siatek N-ktnych. Autorowi nie s znane powszechnie dostpne generatory takich siatek, std niniejszy raport prezentujcy rne sposoby zbudowania takiego generatora. Jakkolwiek zawsze jest moliwe opracowanie odpowiedniego algorytmu i zaimplementowanie generatora od zera, to podobnie jak w przypadku klasycznych generatorw siatek, nie jest to zadanie atwe, zwaszcza jeeli postawi si wysokie wymagania co do niezawodnoci dziaania i moliwoci kontroli procesu generacji. Std w raporcie pooono nacisk przede wszystkim na atwo i szybko implementacji oraz na wykorzystanie gotowych komponentw.

Narzdzia
Implementacja generatora siatek N-ktnych, przy zaoeniach jak przedstawione we wstpie, wymaga przygotowania odpowiedniego zestawu narzdzi programistycznych. W tym konkretnym przypadku na podstawowy zbir narzdzi skadaj si: Biblioteka MOAB (Mesh Oriented dAta Base), http://trac.mcs.anl.gov/ projects/ITAPS/wiki/MOAB. Bibilioteka MOAB dostarcza narzdzi do przechowywania i przetwarzania danych dla siatek. MOAB dostarcza struktur dla reprezentacji siatek strukturalnych i niestrukturalnych, w szczeglnoci dla reprezentacji siatek wykorzystywanych w metodzie elementw skoczonych. MOAB dostarcza interfejs umoliwiajcy deniowanie oraz operacje na dowolnych danych uytkownika skojarzonych z elementami siatki. MOAB implementuje interfejs iMesh zdeniowany przez ITAPS (Interoperable Technologies for Advanced Petascale Simulations) http://www.tstt-scidac.org. Interfejs iMesh jest wykorzystywany przez wiele rnych narzdzi w celu wymiany danych o siatkach. Generator siatek Geompack++ http://members.shaw.ca/bjoe. Jest to program autorstwa Barry Joe wspierany przez rm Zhou Computing Services Inc. i dystrybuowany nieodpatnie dla celw edukacyjnych i badawczych. Geompack++ jest zaawansowanym generatorem umoliwiajcym generacj siatek na paszczyznach, powierzchniach zakrzywionych i siatek objtociowych. Generator Geompack++ umoliwia siatkowanie obszarw o brzegach opisanych krzywymi i powierzchniami NURBS. Generator siatek triangle, http://www.cs.cmu.edu/~quake/triangle.html. Efektywny i niezawodny generator siatek trjktnych dla obszarw 2D. Biblioteka VTK, http://www.vtk.org. VTK jest du, wszechstronn bibliotek dla graki komputerowej, przetwarzania obrazw i wizualizacji danych. Oprcz podstawowego interfejsu w jzyku C++ biblioteka VTK dostarcza interfejsy w jzykach Python, Tcl, Java. Biblioteka g2, http://g2.sourceforge.net. Biblioteka g2 jest niewielk przenon bibliotek graki wektorowej w jzyku C. Dostarcza wygodnego zestawu funkcji uatwiajcych tworzenie graki dwuwymiarowej i zapisywanie jej w rnych formatach. Istniej rwnie interfejsy umoliwiajce korzystanie z

tej biblioteki w jzykach Python i Octave. G2 stanowi idealne narzdzie to tworzenia prototypw lub prostych narzdzi do wizualizacji. Python, http://www.python.org. Skryptowy jzyk programowania wysokiego poziomu, popularny w zastosowaniach naukowych. AWK, http://www.gnu.org/software/gawk. Jzyk programowania skonstruowany z myl o przetwarzaniu plikw tekstowych. AWK umoliwia szybkie tworzenie parserw dla rnych formatw danych i pisanie narzdzi do konwersji formatw. W celu umoliwienia prostego i szybkiego tworzenia prototypw i nowych narzdzi powyszy zestaw bibliotek i programw zosta wzbogacony o nowe elementy, w szczeglnoci: Pakiet MOABUtils jest to zestaw bibliotek dostarczajcych dodatkowych funkcji uatwiajcych prac z bibliotek MOAB. Jedn z takich pomocniczych bibliotek jest biblioteka moabg2 umoliwiajca rysowanie elementw siatki bezporednio na podstawie struktur danych biblioteki MOAB. PyMOAB interfejs do biblioteki MOAB dla jzyka Python. MOABAwk modu (DLL) dla interpretera gawk umoliwiajcy wywoywanie funkcji z biblioteki MOAB z poziomu jzyka AWK. Narzdzie to nadaje si doskonale do pisania konwerterw formatw siatek. Rozszerzenia biblioteki g2 modykacja biblioteki g2 umoliwiajca kontrol nad mysz (np. wskazywanie obiektw). PyGeompack interfejs Pythona do programy Geompack. PyMesh zestaw skryptw w jzyku Python uatwiajacy operacje na siatkach.

Dekompozycja obszarw na wypuke wielokty


Najprostszym pomysem na generacj siatek wieloktnych jest wykorzystanie jakiego algorytmu dekompozycji dowolnego obszaru wieloktnego na wielokty wypuke. Tego typu operacja jest na przykad dostpna w generatorze Geompack. Rysunek 1 pokazuje obszar i jego dekompozycj na wielokty wypuke otrzyman tym generatorem. Jakkolwiek gotowe i proste, to rozwizanie nie da si zastoso-

Rysunek 1: Obszar i jego dekompozycja na wielokty wypuke otrzymana generatorem Geompack++. 3

wa w oglnym przypadku generacji siatki poniewa nie mamy moliwoci kontroli gstoci siatki. Dekompozycja generowana przez Geompack++ tworzona jest bez dodawania punktw Steinera w obszarze, niezalenie od tego jak zdyskretyzowany jest brzeg obszaru. Zatem jeeli wyjciowy obszar jest wypuky nie zostanie przeprowadzony aden podzia.

Generacja siatek N-ktnych poprzez diagramy Voronoi


Drugim podejciem do generacji siatek wieloktnych mogoby by wykorzystanie diagramw Voronoi. Generacj tego typu diagramw umoliwia generator triangle. Rysunek 2 pokazuje triangulacj Delaunaya oraz diagram Voronoi dla tej triangulacji. Niestety, poprawne diagramy Voronoi s generowane przez triangle jedy-

Rysunek 2: Triangulacja Delaunaya obszaru i diagram Voronoi dla tej triangulacji. nie w przypadku triangulacji Delaunaya. W przypadku triangulacji Delaunaya z ograniczeniami (Constrained Delaunay Triangulation) lub dostosowanej triangulacji Delaunaya z ograniczeniami (Conforming Contrained Delaunay Triangulation) diagram generowany przez triangle moe by wadliwy. Generacja siatki wieloktnej na podstawie diagramw Voronoi i przy uyciu generatora triangle moga by by rozwizaniem jedynie w przypadku obszarw wypukych.

Generacja siatek N-ktnych za porednictwem siatek dualnych


W sensie topologicznym siatki dualne s to siatki, w ktrych elementy siatki oryginalnej s wzami, a wzy siatki oryginalnej s elementami siatki dualnej. Z punktu widzenia kombinatoryki pooenie wzw siatki dualnej jest nieistotne. Dla geometrycznej realizacji siatki dualnej wzy siatki dualnej przyjmuje si najczciej w rodku cikoci elementw siatki podstawowej. Z wyjtkiem wyznaczania wsprzdnych wzw, tworzenie siatki dualnej wymaga tylko operacji topologicznych i daje si opisa przez stosunkowo prosty algorytm. Jeeli zatem dysponujemy siatk 4

trjktn dla danego obszaru, to generacja na jej podstawie siatki wieloktnej nie nastrcza trudnoci. Przy tym podejciu wymagania dotyczce sterowania gstoci siatki czy wymagania co do formatu modelu geometrycznego zostaj przeniesione na generator siatek trjktnych odgrywajcy rol preprocesora. W opracowanej implementacji generatora siatek wieloktnych jako preprocesor moe by wykorzystywany dowolny z generatorw: GRUMMP, triangle, gmsh, Geompack++. 5.1 Przykady

5.1.1 Siatki 2D

Rysunek 3: Przykad siatki w skomplikowanym obszarze.

Rysunek 4: Oryginalna siatka i siatka do niej dualna. 5.1.2 Siatki 3D Generator siatek wieloktnych opracowano z myl o obszarach paskich. Jednak z uwagi na to, e w procesie generacji siatki w minimalnym stopniu korzysta si z informacji geometrycznej, generator moe by atwo dostosowany do generacji siatek

Rysunek 5: Ilustracja zalenoci midzy siatk oryginaln a dualn. na powierzchniach. Na rysunkach 7 i 8 pokazano przykad zastosowania opracowanego generatora dla danych w 3D. W zasadzie do penej funkcjonalnoci w przypadku 3D brakuje jedynie uwzgldniania w procesie generacji krawdzi, ktre le na krawdziach modelu geometrycznego, tak by stanowiy one boki wieloktw.

3 4 5 6 7 8 9 10 11 12 13 14

Rysunek 6: Siatka wieloktna z pokolorwana w zalenoci od liczby bokw elementw.

Rysunek 7: Trjktna siatka na brzegu obiektu trjwymiarowego.

Rysunek 8: Siatka dualna do siatki z pokazanej na rysunku 7.

Literatura
[1] g2 graphical library. http://g2.sourceforge.net, 2008. [2] Barry Joe. Flips for Quadrilateral Meshes. Technical Report ZCS2008-04, Zhou Computing Services Ins., March 2008. [3] Barry Joe. Geompack++ File Formats for Regions and Meshes. Technical Report ZCS2008-01, Zhou Computing Services Ins., March 2008. [4] Barry Joe. Geompack++ Meshing Operations. Technical Report ZCS2008-02, Zhou Computing Services Ins., March 2008. [5] Barry Joe. Shape Measures for Quadrilaterals, Pyramids, Wedges, and Hexhahedra. Technical Report ZCS2008-03, Zhou Computing Services Ins., March 2008. [6] Ray J. Meyers, Karl Merkley, and Timothy J. Tautges. Snl implementation of the tstt mesh interface. 8th International Conference on Numerical Grid Generation in Computational Field Simulations, Honolulu, HA, June 2-6 2002. [7] Python programming language ocial website. http://www.python.org, 2008. [8] Timothy J. Tautges. MOAB-SD: Integrated Structured and Unstructured Mesh Representation. Engineering With Computers, 20:286293, 2004. [9] Timothy J. Tautges, Ray Meyers, Kar Merkley, Clint Stimpson, and Corey Ernst. Moab: A Mesh-Oriented Database. Technical Report SAND2004-1592, Sandia National Laboratories, Albuquerque, NM, April 2004.

You might also like