Programowanie generacji i przetwarzania siatekAspekty praktyczne
Roman [email protected]
Instytut Technologii Informatycznych w Inżynierii Lądowej
Wydział Inżynierii Lądowej Politechniki Krakowskiej
Seminarium L-5, 16-18.10.2011
Plan prezentacji
I WstępI Zagadnienia związane z siatkamiI Od geometrii do siatek w FEMDKI Programowanie generacji siatek w GMSHI Programowanie modeli CST w BRL-CADI Dane na siatkach – biblioteka MOABI Interpolacja i całkowanie na siatkach – biblioteka GetFEM++
Seminarium L-5, 16-18.10.2011
Dla kogo
Nie musisz – nie programuj!
Jeśli już musisz (lub chcesz :)
I Wybór gotowych rozwiązń (bibliotek)I Ograniczenia narzędzi ( często odkrywane za późno)I Rozwiazania zapewniające rozszerzalność, standardowe interfejsy,
łączenie narzędzi
Prezentacja wybranych narzędzi z punktu widzenia developera.Uwaga: Gustibus non disputandum est
Seminarium L-5, 16-18.10.2011
”Ekonomia głupcze!” ”It’s the economy, stupid” (Bill Clinton).
Wszystko (prawie) rządzi się rachunkiem ekonomicznym:I Programowanie jest kosztowne (budowa środowiska, projektowanie,
dokumentacja, implementacja, testowanie)I Potrzebujesz siatkę do obliczeń MES – weź gotowy zintegrowany
sytem obliczeniowy (ANSYS, Abaqus, Diana, Comsol, itp).I Interesują cię wyniki symulacji – zapłać komuś za budowę modelu
geometrycznego i siatkowanie
Co innego jeżeli:
I Rozwijasz algorytmy bazujące na siatkachI Potrzebujesz generować siatki we własnych programachI Nudzisz się lub szukasz dziury w całymI ...
Seminarium L-5, 16-18.10.2011
Zagadnienia związane z siatkami
I Generacja siatekI od modelu geometrycznego do siatkiI kontrola gęstości siatekI ocena jakości siatekI wygładzanie i optymalizacja siatek
I Organizacja danych na siatkach – siatki jako rodzina struktur danychI Operacje I/O na siatkach, kompresja, przesyłanie, konwersje między
formatamiI Dekompozycja siatek na podobszaryI Algorytmy numeryczne : interpolacja, różniczkowanie, całkowanieI Wizualizacja siatek i danych na siatkach
Coraz częściej wymagamy by narzędzia odnoszące się do powyższychzagadnień były zaimplementowane z myślą o przetwarzaniu równoległym(zrównoleglanie obliczeń to generalnie inna liga)
Seminarium L-5, 16-18.10.2011
Rodzaje reprezentacji bryłModelowanie geometryczne w pigułece 1/10
Najczęściej używane reprezentacje brył:I Półprzestrzenie (Half-Spaces).I Reprezentacja brzegowa (B-Rep).I CSG (Constructive Solid Geometry).I Reprezentacje z przesuwaniem (Sweeping, 2.5D).I Reprezentacje algebraiczne, izopowierzchnie.I Reprezentacje z podziałem przestrzennym:
I Dekompozycja na komórki (Cell decomposition).I Reprezentacja wokselowa (Voxel representation).I Drzewa BSP (Binary Space Partitioning trees).
Seminarium L-5, 16-18.10.2011
Reprezentacja brzegowaModelowanie geometryczne w pigułece 2/10
W reprezentacji brzegowej bryła jestprzedstawiana jako zbiór ścian tworzącychorientowalną i zamkniętą powierzchnię.Powierzchnia jest orientowalna, jeżelimożemy rozróżnić jej dwie strony,korzystając z normalnej do powierzchni.Każda ze ścian może być wielokątempłaskim lub powierzchnią zakrzywioną.Powierzchnie są ze sobą poprawniepołączone krawędziami. W reprezentacjibrzegowej ściany traktuje się jako płatypowierzchniowe ograniczone krawędziami,a krawędzie jako fragmenty krzywychograniczone wierzchołkami.
Seminarium L-5, 16-18.10.2011
Elementy reprezentacji brzegowejModelowanie geometryczne w pigułece 3/10
I Wierzchołek V – punkt w przestrzeni 3DI Krawędź E – krzywa ograniczona przez dwa wierzchołkiI Ściana F – ograniczona krawędziami orientowalna powierzchniaI Pętla L – zamknięty ciąg krawędzi leżący całkowicie we wnętrzu
ściany (otwór 2D)
Dodatkowo wprowadza się pojęcia takie jak:I Pustka – przestrzeń leżąca całkowicie wewnątrz ciała i nie mająca
żadnych punktów wspólnych z brzegiem ciałaI Uchwyt – otwór “na wylot”. Ilość takich otworów określa się jako
genus
Seminarium L-5, 16-18.10.2011
Elementy reprezentacji brzegowej – przykładyModelowanie geometryczne w pigułece 4/10
ściany F = 6 + 4 + 2 = 12krawędzie E = 12 + 12 + 3 = 27wierzchołki V = 8 + 8 + 2 = 18pętle L = 2 + 1 = 3uchwyty G = 1bryły B = 1
uchwyt :
DygresjaTwierdzenie Eulera–Poincare mówi, że w poprawnej topologicznie brylewielkości V , E , F , L, B i G są związane następującym równaniem:
F − E + V − L = 2(B − G )
Seminarium L-5, 16-18.10.2011
Struktury danych dla reprezentacji brzegowejModelowanie geometryczne w pigułece 5/10
Reprezentacja tablicowa topologii
V1
V2
V3
V4
E1E2
E3E4 E5
E6tablica ścianF1 E1, E3, E2F2 E1, E5, E4F3 E2, E6, E5F4 E3, E4, E6
tablica krawędzi
E1 V1, V2E2 V2, V3E3 V3, V1E4 V4, V1E5 V4, V2E6 V4, V3
tablica wierzchołkówV1 x1, y1, z1V2 x2, y2, z2V3 x3, y3, z3V4 x4, y4, z4
Reprezentacja tablicowa jest prosta aczkolwiek bardzo nieefektywnai zwykle się jej nie używa, z wyjątkiem może eksportu lub importu danych
Seminarium L-5, 16-18.10.2011
Struktury danych dla reprezentacji brzegowej – cdModelowanie geometryczne w pigułece 6/10
Krawędź ze skrzydełkami (winged edge)I Dane o wierzchołkach
I współrzędne x,y,zI wskaźniki do n przyległychkrawędzi
I Dane o krawędziachI 2 wskaźniki do wierzchołkówI 2 wskaźniki do przyległychścian
I wskaźnik do następnejkrawędzi
I wskaźnik do poprzedniejkrawędzi
I Dane o ścianachI n wskaźników do krawędziograniczających
e
e.nexte.prev
e.twin
e.left
e.org
Seminarium L-5, 16-18.10.2011
CSG – konstruktywna geometria bryłModelowanie geometryczne w pigułece 7/10
CSG = Constructive Solid GeometryW modelowaniu metodą CSG obiekty buduje się ze zbioru prostychprymitywów (np: sześcian, walec, kula, stożek, torus) łączonych zapomocą skończonej rodziny regularnych operacji boolowskich orazmodyfikowanych przez standardowe operacje geometryczne, zwykletranslację, obrót oraz skalowanie. W modelowaniu CSG obiekt jest zwyklepamiętany jako drzewo binarne, w którym węzły wewnętrzne reprezentująoperacje, a liście proste prymitywy.
Seminarium L-5, 16-18.10.2011
Operacje boolowskieModelowanie geometryczne w pigułece 8/10
A
BA ∪ B A ∩ B A \ B
Problem: rezultatem operacji boolowskiej na dwu bryłach nie zawsze jestbryła. Przykład:
AB A ∩ B
Rozwiązanie: regularyzowane operacje boolowskie.
Seminarium L-5, 16-18.10.2011
Regularyzowane operacje boolowskieModelowanie geometryczne w pigułece 9/10
Regularyzowane operacje boolowskie są odpowiednikiem zwykłychoperacji boolowskich, ale są tak zdefiniowane, że operacja na bryłachzawsze da w wyniku bryłę.
Niech:
Int(A) – wnętrze zbioru AA – domknięcie zbioru A (zbiór A + punkty brzegowe)
Mówimy, że zbiór A jest regularny jeżeli A = Int(A).
Regularyzowane operacje boolowskie definiujemy następująco:Niech op oznacza jedną z operacji: ∩, ∪, \.Regularyzowaną operację op∗ definiujemy jako:
A op∗ B := Int(A op B)
Seminarium L-5, 16-18.10.2011
CSG – przykładModelowanie geometryczne w pigułece 10/10
+
−
−
Seminarium L-5, 16-18.10.2011
Predefiniowane modele geometryczneOd geometrii do siatek w FEMDK 1/5
W praktyce akademickiej posługujemy się najczęściej pewnymistandardowymi modelami geometrycznymi, najczęściej o niezmiennejtopologi, ewentualnie modelami parametrycznymi (sparametryzowanewymiary).
Wychodząc z powyższego założenia w projekcie FEMDKhttps://femdk.l5.pk.edu.pl/femdk stworzono bibliotekę BGD(Basic Geometric Domains) mająca na celu:
I dostarczanie parametrycznych modeli najczęściej używanychobszarów geometrycznych (2D i 3D)
I eksport tych modeli to pełnej reprezentacji brzegowejI interfejs to generatora siatekI narzędzia do wizualizacji geometrii
Seminarium L-5, 16-18.10.2011
Przykład programu korzystającego z BGDOd geometrii do siatek w FEMDK 3/5
1 int main(int argc, char **argv) 2 int result = EXIT_SUCCESS;3 4 int optct = optionProcess(&chqOptions, argc, argv);5 argc -= optct;6 argv += optct;7 8 CHQParams params;9 params.setUp();10
11 femdk::bgd::CircHoleQuarter chq;12 chq.SetParam("Nx", params.Nx);13 chq.SetParam("Ny", params.Ny);14 chq.SetParam("Nh", params.Nh);15
16 chq.Export(outfile, "geo");
Seminarium L-5, 16-18.10.2011
Przykład programu korzystającego z BGDOpcje wiersza poleceń:
./bgd_chq --nx=4 --ny=8 --nh=6 --ex-geom-format=geo \--out-file chq.geo
X
Y
Z
Seminarium L-5, 16-18.10.2011
Narzędzia do generacji i wizualizacji siatekOd geometrii do siatek w FEMDK 4/5
FEMDK dostarcza interfejsów do generatorów siatek (tu GMSH) inarzędzi wizualizacji (tu gnuplot).
1 femdk::bgd::Rectangle r;2 std::vector<double> lc;3 r.SetVertexLC(0.1);4 r.SetVertexLC(0, 0.01);5 getfem::mesh mesh;6 femdk::GMSHMesher mesher;7 femdk::GnuplotViewer viewer;8 mesher.generate(r, mesh);9 viewer.showMesh(mesh);10 viewer.pause();
Seminarium L-5, 16-18.10.2011
Eksport geometrii do modelu B-Rep w formacie GMSHOd geometrii do siatek w FEMDK 5/5
1 femdk::bgd::Rectangle rectangle;2 femdk::bgd::LShape LShape;3 femdk::bgd::ExtrudedShape extruded(&rectangle, false);4 femdk::bgd::ExtrudedShape extrLshape(&LShape, false);5
6 femdk::bgd::CircularSector ci;7 ci.SetFillAngle(2.1);8
9 extruded.BGD::Export("extruded.geo", "geo");10 femdk::bgd::ExtrudedShape extruded1(&ci, false);11
12 extruded1.BGD::Export("extruded1.geo", "geo");13 extrLshape.BGD::Export("extrudedL.geo", "geo");
Seminarium L-5, 16-18.10.2011
Bryły otrzymane przez wyciąganie obszarów BGD
X
Y
Z
X
Y
Z
Seminarium L-5, 16-18.10.2011
Obszary geometryczne zaimplementowane w BGDOd geometrii do siatek w FEMDK 2/5
I BoxI CylinderI RectangleI FiberRectangleI CircularSectorI NotchedRectangleI CircHoleQuarterI LShapeI CShapeI IShapeI SegmentStripI ExtrudedShape
Seminarium L-5, 16-18.10.2011
Generator GMSH
MożliwościI Własny generator + interfejs do innych: tetgen, netgen, triangle.I Wbudowany pre i post-processorI Możliwość integracji dowolnego solveraI Własny prosty język skryptowy do opisu geometriiI Graficzny interfejs na bazie FlTK i OpenGL.I Najnowsze wersje wykorzytują biblioteki projektu OpenCASCADE do
importu modeli B-Rep w formatach STEP, IGES.
Dostęphttp://www.geuz.org/gmsh
Seminarium L-5, 16-18.10.2011
GMSH – przykłady
Seminarium L-5, 16-18.10.2011
GMSH – przykłady
Seminarium L-5, 16-18.10.2011
GMSH – przykłady
Seminarium L-5, 16-18.10.2011
GMSH – przykłady
Seminarium L-5, 16-18.10.2011
GMSH – przykłady
Seminarium L-5, 16-18.10.2011
GMSH – przykłady
Seminarium L-5, 16-18.10.2011
GMSH – przykłady
Seminarium L-5, 16-18.10.2011
GMSH – przykłady
Seminarium L-5, 16-18.10.2011
GMSH – przykłady
Seminarium L-5, 16-18.10.2011
GMSH – przykłady
Seminarium L-5, 16-18.10.2011
GMSH – przykłady
Seminarium L-5, 16-18.10.2011
Obsługa GMSH
Interfejs graficzny SkryptyW = 10;H = 8;lc = 1;Point(1) = 0,0,0,lc;Point(2) = W,0,0,lc;Point(3) = W,H,0,lc;Point(4) = 0,H,0,lc;Line(1)=1,2;Line(2)=2,3;Line(3)=3,4;Line(4)=4,1;Line Loop(1) = 1,2,3,4;Plane Surface(1) = 1;Mesh.Algorithm=5;
Seminarium L-5, 16-18.10.2011
Kołek w wymienniku ciepła
Wygeneruj siatkę czworościenną na dla geometrii pokazanej na rysunku.
r=1.5
r=1.5
40
422.56
z
r
Seminarium L-5, 16-18.10.2011
Rozwiązanie
XY
Z XYZ
YZX
Seminarium L-5, 16-18.10.2011
Rozwiązanie – skryptGeneral.Terminal = 1;r = 1.5;D = 40;L = 22.5;h = 4;d = 6;stp = newp;lc = 2.5;lc1 = 0.6;Point(stp) = 0,0,0,lc; // 1Point(newp) = D/2,0,0,lc; // 2Point(newp) = D/2,h,0,lc; // 3Point(newp) = d/2+r,h,0,lc1;Point(newp) = d/2,h+r,0,lc1;Point(newp) = d/2,h+L-r,0,lc1;Point(newp) = d/2-r,h+L,0,lc1;Point(newp) = 0, h+L,0,lc;c1 = newp;Point(c1) = d/2+r, h+r, 0;c2 = newp;Point(c2) = d/2-r, h+L-r, 0;outl[] = ;ln = newl;Line( ln) = stp, stp+1;outl[] += ln;ln = newl;Line( ln) = stp+1, stp+2;outl[] += ln;ln = newl;Line( ln) = stp+2, stp+3;outl[] += ln;ln = newl;Circle( ln) = stp+3, c1, stp+4;outl[] += ln;ln = newl;Line( ln) = stp+4, stp+5;
outl[] += ln;ln = newl;Circle( ln) = stp+5, c2, stp+6;outl[] += ln;ln = newl;Line( ln) = stp+6, stp+7;outl[] += ln;outl1[] += Rotate 0,1,0,0,0,0, 2*Pi/3 Duplicata Lineoutl[]; ;outl2[] += Rotate 0,1,0,0,0,0, 4*Pi/3 Duplicata Lineoutl[]; ;sur[] = ;waterSur[] = ;gasSur[]= ;fixSur[] = ;allines[] += outl[];allines[] += outl1[];allines[] += outl2[];n = #outl[];For i In 0:#allines[]-1outs[] = Extrude 0,1,0,0,0,0, 2*Pi/3 Lineallines[i ]; ;sur[] += outs[1];If (i % n == 0)waterSur[] += outs[1];EndIfIf (i% n == 1)fixSur[] += outs[1];EndIfIf (i%n > 1)gasSur[] += outs[1];EndIfEndFormysurf = newsl;Surface Loop(ala) = sur[];Physical Surface("bottom")= waterSur[];Physical Surface("fix")= fixSur[];Physical Surface("top")= gasSur[];Volume(newv) = mysurf;
Seminarium L-5, 16-18.10.2011
Programowanie generacji siatek w języku skryptowymGMSH
Jedną z podstawowych uciążliwości w korzystaniu z graficznego interfejsuGMSH jest brak funkcji undo. W przypadku nieskomplikowanych bądźregularnych modeli można zamiast klikania w GUI zaprogramować modelgeometryczny w języku skryptowym GMSH. Ten sposób korzystania zGMSH pozwala na budowanie modeli parametrycznych. Generalniejednak należy mieć na uwadze, że tworzenie dużych modeligeometrycznych w GMSH jest żmudne.
Seminarium L-5, 16-18.10.2011
Uruchamianie zadań wsadowych w GMSH
I Tylko parsuje plik wejściowy bez generacji siatkigmsh - plik.geo
I Wypisuje jawnie wszystkie elementy modelu geometrycznego gmsh-0 plik.geo
I Generuję odpowiednio siatkę 2D i 3Dgmsh -2 plik.geogmsh -3 plik.geo
Seminarium L-5, 16-18.10.2011
”Hello World” w GMSHProgram:
Printf("Hello World");
Rezultat:
Info : Running ’gmsh - hello.geo’Info : Started on Wed Jan 23 23:18:23 2013Info : Reading ’hello.geo’Hello WorldInfo : Read ’hello.geo’Info : Stopped on Wed Jan 23 23:18:23 2013
Odfiltrowanie komunikatów:
gmsh - hello_world.geo | awk ’!/Info *:/’
Dla wersji wypisującej komunikaty do standardowego strumieniadiagnostycznego:
gmsh - hello\_world 2>\&1 | awk ’!/Info *:/’
Seminarium L-5, 16-18.10.2011
GMSH : zmienne i instrukcja przypisania
/* scalar variables */v = 1.0;
/* lists */L[] = ; // empty list
Z[] = 1, 2, 3, v;
Seminarium L-5, 16-18.10.2011
GMSH: operacje na listach
1 /* empty list */2 U[] = ;3 V[] = 1,2;4
5 /* Addressing list elements */6 U[0] = 33;7
8 /* Appending elements of list V to U */9 U[] += V[]; // U is now 33, 1, 210
11 /* Operations on slices */12 U[1,0] += V[]; // U is now 35, 3, 213
14 U[0:2] += U[]; // U is now 70, 4, 415
16 /* Getting list size */17 Printf("Number of elements: %g", #U[]);
Seminarium L-5, 16-18.10.2011
Operatory i funkcje wbudowane
1. (), [], ., #2. ^3. !, ++, --, - (unary)4. *, /, %5. +, -6. <, >, <=, >=7. ==, !=8. &&9. ||10. ?:11. =, +=, -=, *=, /=
Acos, Asin, Atan, Atan2,Ceil, Cos, Cosh, Exp, Fabs,Fmod, Floor, Hypot, Log,Log10, Modulo, Rand, Sqrt,Sin, Sinh, Tan, Tanh
Seminarium L-5, 16-18.10.2011
GMSH: Pętle
1 For i In 1:2:102 Printf("%g", i);3 EndFor
Język GMSH nie dostarcza pętli o nieokreslonej ilości przebiegów.
Seminarium L-5, 16-18.10.2011
GMSH: Instrukcja warunkowa
1 A = 1;2 If (A >= 0)3 Printf("A is non-negative");4 Endif
W języku GMSH nie ma klauzuli ”else”.
Seminarium L-5, 16-18.10.2011
GMSH: Funkcje użytkownika
Funkcje użytkownika są wywoływane bez żadnych argumentów.Przypominają one bardziej makrodefinicje z języka C. Wszystkie zmiennesą w jednej globalnej przestrzeni nazw.
1 Function PrintList2 For __i In 0:#__LTP[]-13 Printf("%g", __LTP[__i]);4 EndFor5 Return6
7 U[] = 881,2,3;8
9 __LTP[]=U[];10 Call PrintList;
Seminarium L-5, 16-18.10.2011
GMSH: Włączanie plików instrukcja include
Pewien stopień modularyzacji modeli geometrycznych można osiągnąćstosując instrukcję Include:
1 Include "moj_model_1.geo";
Instrukcja ta dołącza zawartość pliku o podanej ścieżce, do bieżącegopliku w miejscu wywołania.
Seminarium L-5, 16-18.10.2011
GMSH: Indeksowanie obiektów geometrycznych
Każdy obiekt geometryczny musi mieć przypisany unikalny indeks. Wcelu ułatwienia zarządzania indeksami, GMSH dostarcza specjalnychzmiennych których wartoś jest równa najmniejszemuniewykorzystywanemu indeksowi dla obiektów danego rodzaju:
I newp – indeks dla punktówI nel – indeks dla krzywychI news – indeks dla powierzchniI newv – indeks dla bryłI newll – indeks dla zamkniętej sekwencji krawędzi (line loop)I newsl – indeks dla zamkniętej sekwencji (zbioru) powierzchni
(surface loop)I newreg – indeks dla regionu ( maksimum z newp, newl, news, newv,
newll, newls i indeksów obszarów fizycznych).
Seminarium L-5, 16-18.10.2011
GMSH: Punkty
Punkt z globalnym parametrem długości krawędzi
i = newp;Point(i) = 1.0, 0.0, 0.0;
Punkt z przypisanym parametem długości krawędzi
lc = 0.1i = newp;Point(i) = 1.0, 0.0, 0.0, lc;
Seminarium L-5, 16-18.10.2011
GMSH: Krzywe
I ProsteI Łuki kołoweI Łuki eliptyczneI Splajny
Catmulla-RomaI B-Splajny
X
Y
Z
Seminarium L-5, 16-18.10.2011
GMSH: Krzwe
Point(newp) = 0,0,0;Point(newp) = 1,1,0;Line(newl) = newp-2, newp-1;Point(newp) = Sqrt(2), 0, 0;Circle(newl) = newp-1, newp-3, newp-2;
z[] = ;z[] += newp; Point(newp) = -1, 1.1, 0;z[] += newp; Point(newp) = 0, 2.1, 0;z[] += newp; Point(newp) = 1, 1.1, 0;z[] += newp; Point(newp) = 2, 1.2, 0;
CatmullRom(newl) = z[];BSpline(newl) = z[0:2];
Color Red Line newl-4; // Do not put semicolon hereColor Green Line newl-3;Color Black Line newl-2;Color Magenta Line newl-1;
Seminarium L-5, 16-18.10.2011
GMSH: Kontrola opcji
W plikach wsadowych można ustawiać wszystkie opcje programudotyczące interpretacji danych, ustawień algorytmów czy parameterówwizualizacji.
1 General.LineWidth=2;2 General.PointSize=8;3 Mesh.CharacteristicLengthFromCurvature=1;4 Mesh.Lines = 1;5 Mesh.LineWidth = 2;6 Mesh.CharacteristicLengthFactor = 0.3;
Seminarium L-5, 16-18.10.2011
Powierzchnie
I Powierzchnie płaskieI Powierzchnie interpolowane (transfinite interpolation), w
szczególności powierzchnie otrzymane przez wyciąganie krzywych.I Płaty sferyczne
Seminarium L-5, 16-18.10.2011
Powierzchnie płaskie
Interfejs graficzny SkryptyW = 10;H = 8;lc = 1;Point(1) = 0,0,0,lc;Point(2) = W,0,0,lc;Point(3) = W,H,0,lc;Point(4) = 0,H,0,lc;Line(1)=1,2;Line(2)=2,3;Line(3)=3,4;Line(4)=4,1;Line Loop(1) = 1,2,3,4;Plane Surface(1) = 1;Mesh.Algorithm=5;
Seminarium L-5, 16-18.10.2011
Niestrukturalne siatki czworokątne
Kombinacja poleceń Recombine i Mesh.SubdivisionAlgorithm=1pozwala generować niestrukturalne siatki czworokątne (uwaga na jakośćtak otrzymanej siatki!)
1 Mesh.SubdivisionAlgorithm=1;2 R = 1;3 p1 = newp;4 Point(p1) = 1.5*R, 0, 0, 0.1*R;5 p2 = newp;6 Point(p2) = 2.5*R, 0, 0, 0.3*R;7 k = newl;8 Line(k) = p1, p2;9 le[] = Extrude 0,0,1, 0, 0, 0, Pi/3 Line k; ;10 Recombine Surface le[1];11 Printf("%g %g %g %g", le[0], le[1], le[2], le[3]);
5
1
2
3
4
1 2
3
4
X
Y
Z
Seminarium L-5, 16-18.10.2011
GMSH: Niestrukturalne siatki czworokątnePo lewej użyto tylko polecenia Recombine, po prawej Recombine iMesh.SubdivisionAlgorithm=1.
X
Y
Z X
Y
Z
Seminarium L-5, 16-18.10.2011
Złożony przykład
Seminarium L-5, 16-18.10.2011
Złożony przykład
Seminarium L-5, 16-18.10.2011
Złożony przykład
1 W = 2.0;2 H = 2.0;3 R =0.2;4 lc = 0.1;5 Asp = 3;6
7 pts[] = ;8
9 pts[0] = newp;10 Point(pts[0]) = -W/2, -H/2, 0, lc;11 pts[1] = newp;12 Point(pts[1]) = W/2, -H/2, 0, lc;13 pts[2] = newp;14 Point(pts[2]) = W/2, H/2, 0, lc;15 pts[3] = newp;16 Point(pts[3]) = -W/2, H/2, 0, lc;17
18 cc = newp;19 Point(cc) = 0, 0, 0, lc/2;20 c1 = newp;21 Point(c1) = R, 0, 0, lc/2;22 c2 = newp;23 Point(c2) = 0, R, 0, lc/2;
Seminarium L-5, 16-18.10.2011
Złożony przykład
1 lc1 = newl;2 Circle(lc1) = c1, cc, c2;3 lc2 = newl;4 Rotate 0.0,0.0,1.0, 0.0,0.0,0.0, Pi/2 Duplicata Line lc1; 5 lc3 = newl;6 Rotate 0.0,0.0,1.0, 0.0,0.0,0.0, Pi/2 Duplicata Line lc2; 7 lc4 = newl;8 Rotate 0.0,0.0,1.0, 0.0,0.0,0.0, Pi/2 Duplicata Line lc3; 9
10 outer[] = ;11 outer[0] = newl;12 Line(outer[0]) = pts[0], pts[1];13 outer[1] = newl;14 Line(outer[1]) = pts[1], pts[2];15 outer[2] = newl;16 Line(outer[2]) = pts[2], pts[3];17 outer[3] = newl;18 Line(outer[3]) = pts[3], pts[0];
Seminarium L-5, 16-18.10.2011
Złożony przykład
1 outerloop = newll;2 Line Loop(outerloop) = outer[];3
4 innerloop = newll;5 Line Loop(innerloop) = lc1, lc2, lc3, lc4;6
7 s1 = news;8 Plane Surface(s1) = outerloop, innerloop;9
10 /* s2 = news;11 Plane Surface(s2) = innerloop;12 */13
14 nnl[] = Extrude 0,0,W Line outer[], lc1, lc2, lc3, lc4; ;15
16 s3 = news;17
18 outerloopE = newll;19 Line Loop(outerloopE) = nnl[0], nnl[4], nnl[8], nnl[12] ;20
21 innerloopE = newll;22 Line Loop(innerloopE) = nnl[16], nnl[20], nnl[24], nnl[28] ;
Seminarium L-5, 16-18.10.2011
Złożony przykład
1 Plane Surface(s3) = outerloopE,innerloopE ;2
3 ns[] = Rotate 1,0, 0, 0, 0, W/2, -Pi/2 Duplicata Surface nnl[17], nnl[21], nnl[25], nnl[29]; ;4
5 Translate -Asp*R, 0, 0 Surface ns[]; 6
7 ncb[] = Boundary Surface ns[]; ;8
9 nu1 = newll;
Seminarium L-5, 16-18.10.2011
Złożony przykład
1 nb1[] = Boundary Surface nnl[1]; ;2 nb2[] = Boundary Surface nnl[9]; ;3
4 Delete Surface nnl[1], nnl[9]; 5
6 Line Loop(nu1) = nb1[] ;7
8 nu2 = newll;9 Line Loop(nu2) = ncb[0], ncb[4], ncb[8], ncb[12];10
11 s4 = news;12 Plane Surface (s4) = nu1, nu2 ;13
14 nu3 = newll;15 Line Loop(nu3) = nb2[] ;16
17 nu4 = newll;18 Line Loop(nu4) = ncb[2], ncb[6], ncb[10], ncb[14];19
20 s5 = news;21 Plane Surface (s5) = nu3, nu4;
Seminarium L-5, 16-18.10.2011
Złożony przykład1 //Printf("%g %g %g %g\n", ncb[0], ncb[4], ncb[8], ncb[12]);2
3 a = newsl;4
5 Surface Loop(a) = s1, s3, s4, s5, nnl[5], nnl[13], ns[], nnl[17], nnl[21], nnl[25], nnl[29] ;6
7 Printf("%g %g %g %g %g %g %g %g %g %g %g %g %g %g \n", s1, s3, s4, s5, nnl[5], nnl[13], ns[0],ns[1], ns[2], ns[3], nnl[17], nnl[21], nnl[25], nnl[29]);8 /*9 Physical Surface("holeY") = ns[] ;10 Physical Surface("holeZ") = nnl[17], nnl[21], nnl[25], nnl[29] ;11 Physical Surface("sideX") = nnl[5], nnl[13] ;12 Physical Surface("sideY") = s4, s5 ;13 Physical Surface("sideZ") = s1, s3 ;14 */15 nvv = newv;16 Volume(nvv) = a;17
18 Physical Volume("tet") = nvv ;19
20 Mesh 3;21
22 Show "*";23 Hide 24 Surface11;25 Volume0;26
Seminarium L-5, 16-18.10.2011
Metody obliczeniowe bazujące na modelach CSGIstnieją metody obliczeniowe, dla których modele geometryczne wreprezentacji CSG są ”naturalne” – nie ma potrzeby konwersji tychmodeli do reprezentacji brzegowej.
I Fictitious Domain Metod – rozwiązywanie problemu brzegowego wdanym obszarze Ω przez zastąpienie go dopowiednio sformułowanymproblemem brzegowym w prostszym obszarze OmegaS ⊃ Ω.Przykładowy solwer: http://www.freefem.org/ff3d/
I Overset (Chimera) Grids – specjalnie zaprojektowany solwer dlazachodzących na siebie podobszarów (zdyskretyzowanych siatkamistrukturalnymi (najczęściej) lib niestrukturalnymi). Głównie wzastosowaniach w obliczeniowej dynamice płynów. Przykładowysolwer: Overture http://www.overtureframework.org/
Seminarium L-5, 16-18.10.2011
Overture: ogen – overlaping grid generator
Rysunek z http://www.overtureframework.org/ogen.html. Użyty za zgodą
Seminarium L-5, 16-18.10.2011
Overture: ogen – overlaping grid generator
Rysunek z http://www.overtureframework.org/ogen.html. Użyty za zgodą
Seminarium L-5, 16-18.10.2011
Podziękowania
W przygotowaniu tej prezentacji wykorzystano materiały (przedewszystkim rysunki) dostępne na stronach omawianych programów.Składam w tym miejscu serdeczne podziękowania wszystkim tym, którzytakie materiały opracowali i udostępnili.
Seminarium L-5, 16-18.10.2011
Copyrights
Copyright (CC-BY) 2013 Roman [email protected]
This work is licensed under the Creative Commons Attribution 3.0Unported License. To view a copy of this license, visithttp://creativecommons.org/licenses/by/3.0/ or send a letter to CreativeCommons, 444 Castro Street, Suite 900, Mountain View, California,94041, USA.
Seminarium L-5, 16-18.10.2011
Top Related