• No results found

TECHNICK ´A UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborov´ych studi´ı Studijn´ı program: N2612 - Elektrotechnika a informatika Studijn´ı obor: 1802T007 - Informaˇcn´ı technologie

N/A
N/A
Protected

Academic year: 2022

Share "TECHNICK ´A UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborov´ych studi´ı Studijn´ı program: N2612 - Elektrotechnika a informatika Studijn´ı obor: 1802T007 - Informaˇcn´ı technologie"

Copied!
47
0
0

Loading.... (view fulltext now)

Full text

(1)

Fakulta mechatroniky, informatiky a mezioborov´ ych studi´ı

Studijn´ı program: N2612 - Elektrotechnika a informatika Studijn´ı obor: 1802T007 - Informaˇcn´ı technologie

Rozˇ s´ıˇ ren´ı projektu Flow123D-NGH o hled´ an´ı nekompatibiln´ıch sousednost´ı

Diplomov´ a pr´ ace

Autor: Bc. Luk´ aˇs Krejˇc´ık

Vedouc´ı pr´ ace: doc. Ing. Dalibor Frydrych, Ph.D.

V Liberci 17.5. 2013

(2)
(3)

Byl jsem sezn´amen s t´ım, ˇze na mou diplomovou pr´aci se plnˇe vztahuje z´akon ˇc. 121/2000 Sb. o pr´avu autorsk´em, zejm´ena § 60 - ˇskoln´ı d´ılo.

Beru na vˇedom´ı, ˇze TUL m´a pr´avo na uzavˇren´ı licenˇcn´ı smlouvy o uˇzit´ı m´e DP a prohlaˇsuji, ˇze s o u h l a s ´ı m s pˇr´ıpadn´ym uˇzit´ım m´e diplomov´e pr´ace (prodej, zap˚ujˇcen´ı apod.).

Jsem si vˇedom toho, ˇze uˇz´ıt sv´e diplomov´e pr´ace ˇci poskytnout licenci k jej´ımu vyuˇzit´ı mohu jen se souhlasem TUL, kter´a m´a pr´avo ode mne poˇzadovat pˇrimˇeˇren´y pˇr´ıspˇevek na

´

uhradu n´aklad˚u, vynaloˇzen´ych univerzitou na vytvoˇren´ı d´ıla (aˇz do jejich skuteˇcn´e v´yˇse).

Diplomovou pr´aci jsem vypracoval samostatnˇe s pouˇzit´ım uveden´e literatury a na z´akladˇe konzultac´ı s vedouc´ım diplomov´e pr´ace.

Datum:. . . .

Podpis:. . . .

(4)

R´ad bych touto cestou velmi podˇekoval vedouc´ımu diplomov´e pr´ace doc. Ing. Daliboru Frydrychovi, Ph.D. za vˇsechny rady a konzultace t´ykaj´ıc´ı se diplomov´e pr´ace. Bez jeho odborn´ych rad a veden´ı by dokonˇcen´ı t´eto diplomov´e pr´ace nebylo moˇzn´e. Tak´e bych r´ad podˇekovat moj´ı rodinˇe za mor´aln´ı podporu v pr˚ubˇehu tvorby diplomov´e pr´ace.

(5)

Pr´ace se zab´yv´a v´ypoˇcty parametr˚u vazeb mezi prvky v nekonformn´ıch s´ıt´ıch. Prvn´ıˇc´ast pr´ace se vˇenuje odvozen´ı matematick´ych rovnic popisuj´ıc´ıch vazby element˚u v nekonformn´ı s´ıti. Druh´a ˇc´ast popisuje implementaci v jazyce C++. Ve tˇret´ı ˇc´asti jsou uvedeny testy spr´avnosti implementovan´eho k´odu a rychlosti ˇreˇsen´ı vzorov´ych ´uloh.

Kl´ıˇ cov´ a slova

elementy, s´ıtˇe, sousednost element˚u, koneˇcn´e prvky, nekonformn´ı sousednost element˚u v metodˇe koneˇcn´ych prvk˚u

Abstract

The thesis solve calculation of parameters of the bindings between elements in the non- conforming networks. The first part deals with the derivation of mathematical equation describing bindings between elements in nonconforming network. The second part descri- bes the implementation in C++. The third part describes the testing accuracy of the implemented code and speed of solving sample tasks.

Keywords

elements, networks, elements adjacency, finite elements, nonconforming elements adja- cency solved by finite elements method

(6)

Uvod´ 9

1 Teoretick´a ˇc´ast 11

1.1 Z´akladn´ı pojmy . . . 11

1.2 Rychl´y test . . . 13

1.3 Typy sousednost´ı element˚u . . . 15

1.4 N´astroj GMSH pro tvorbu s´ıt´ı . . . 24

1.5 Vstupn´ı soubor .msh . . . 25

2 Implementace 26 2.1 Hlavn´ı tˇr´ıdy projektu . . . 26

2.2 Porovn´avac´ı algoritmy . . . 28

2.3 Kompar´atory . . . 29

2.4 Implementace rovnic popisuj´ıc´ı sousednosti . . . 30

2.5 Tˇr´ıda v´ysledk˚u TResult . . . 33

2.6 Tˇr´ıda TResultList . . . 33

2.7 Tˇr´ıda TCross . . . 34

3 Ovˇeˇren´ı funkˇcnosti implementace 35 3.1 Form´at v´ystupn´ıch soubor˚u . . . 35

3.2 Testy . . . 37

Z´avˇer 43

Literatura 44

A Kompletn´ı v´ypoˇcet parametr˚u 45

B Vliv parametru na hustotu generovan´e s´ıtˇe 46

C V´ystupn´ı soubor pro funkci testov´an´ı 47

(7)

1 Elementy - ´useˇcka AB a troj´uheln´ık ABC . . . 12

2 Rychl´y test - vyluˇcuj´ıc´ı moˇznost pr˚uniku . . . 13

3 Rychl´y test - moˇznost pr˚uniku element˚u . . . 14

4 Vliv parametru na polohu bodu . . . 15

5 Kompatibiln´ı sousednost ´useˇcek . . . 16

6 Useˇ´ cky nemaj´ı pr˚unik . . . 16

7 Useˇ´ cky maj´ı pr˚unik P . . . 17

8 Useˇ´ cka leˇz´ı mimo troj´uheln´ık . . . 19

9 Useˇ´ cka leˇz´ı uvnitˇr troj´uheln´ıku . . . 19

10 Useˇ´ cka leˇz´ı na hranˇe troj´uheln´ıku . . . 20

11 Useˇ´ cka m´a s troj´uheln´ıkem jeden pr˚unik . . . 20

12 Useˇ´ cka m´a s troj´uheln´ıkem dva pr˚uniky . . . 21

13 Troj´uheln´ık leˇz´ı uvnitˇr druh´eho troj´uheln´ıku . . . 21

14 Troj´uheln´ık proch´az´ı jednou hranou druh´eho troj´uheln´ıku . . . 22

15 Troj´uheln´ık prot´ın´a dvˇe hrany druh´eho troj´uheln´ıku v jeho vrcholech . . . 23

16 Troj´uheln´ık prot´ın´a dvˇe hrany druh´eho troj´uheln´ıku . . . 23

17 Troj´uheln´ık prot´ın´a tˇri hrany druh´eho troj´uheln´ıku . . . 24

18 Geometrie a V´ypoˇcetn´ı s´ıt’ . . . 24

19 Rozklad troj´uheln´ıku na pomocn´e ´useˇcky TLineAdaptive . . . 27

20 TElement a jeho potomci . . . 28

21 Pˇr´ıklad popisuj´ıc´ı implementaci rovnic . . . 31

22 Prov´az´an´ı dvou v´ysledk˚u TResult a jejich vazba pˇri uloˇzen´ı do seznamu . . 33

23 V´ystupn´ı soubor - kˇr´ıˇz´ıc´ı se elementy . . . 35

24 V´ystupn´ı soubor - tabulka . . . 36

25 Test funˇcnosti . . . 37

26 Geometrie a s´ıt’ pro zjiˇstˇen´ı vlivu rychl´eho testu . . . 38

27 Casy porovn´ˇ an´ı element˚u v z´avislosti na hustotˇe s´ıt´ı . . . 38

28 Cas porovn´ˇ av´an´ı bez uˇzit´ı rychl´eho testu . . . 39

29 Cas porovn´ˇ av´an´ı pˇri uˇzit´ı rychl´eho testu . . . 39

30 Oblast s velk´ym pˇrekryt´ım a oblast s mal´ym pˇrekryt´ım s´ıt´ı . . . 40

31 Vliv velikosti pˇrekr´yvaj´ıc´ıch se oblast´ı dvou s´ıt´ı . . . 40

(8)

34 Vliv poˇctu ´useˇcek na rychlost porovn´av´an´ı . . . 42 35 S´ıt’ vygenerovan´a s parametrem hustoty s´ıtˇe 1.0 . . . 46

(9)

Pro ˇreˇsen´ı ´uloh popsan´ych parci´aln´ımi diferenci´aln´ımi rovnicemi se v souˇcasnosti po- uˇz´ıv´a ˇrada v´ypoˇcetn´ıch syst´em˚u, zaloˇzen´ych na diskretizaci prostoru z´ajmov´e oblasti (me- toda koneˇcn´ych prvk˚u, metoda koneˇcn´ych objem˚u). Specifick´ym probl´emem pˇri pouˇzit´ı tˇechto v´ypoˇcetn´ıch syst´em˚u je generov´an´ı s´ıtˇe.

Poˇzadavky na vlastnosti takov´e s´ıtˇe jsou mnohdy ve vz´ajemn´em rozporu. Pˇr´ıkladem jsou s´ıtˇe rozs´ahl´ych oblast´ı, na nichˇz je nutn´e zohlednit mal´e detaily. Generov´an´ı s´ıt´ı na takov´ych oblastech vede k datovˇe velmi objemn´ym s´ıt´ım, nebot’ oblast je rozdˇelena na velk´e mnoˇzstv´ı element˚u (ˇr´adovˇe miliony element˚u). Vlastn´ı v´ypoˇcty realizovan´e s takov´ymi s´ıtˇemi jsou pak velmi n´aroˇcn´e na pamˇet’ poˇc´ıtaˇce.

Jedno z moˇzn´ych ˇreˇsen´ı je pouˇzit´ı nekonformn´ı s´ıtˇe. Nekonformn´ı s´ıt’ umoˇzˇnuje kom- binaci r˚uzn´ych typ˚u element˚u bez jejich kompatibiln´ıho spojen´ı. Zjednoduˇsenˇe ˇreˇceno, na dan´e z´ajmov´e oblasti jsou vygenerov´any dvˇe nebo v´ıce s´ıt´ı. Tyto s´ıtˇe jsou nez´avisl´e a mohou zohledˇnovat nezbytnˇe nutn´e poˇzadavky. Mohou tak b´yt relativnˇe hrub´e a mohou se skl´adat z mal´eho poˇctu prvk˚u. V´ypoˇcetn´ı syst´em pak potˇrebuje pro svoji pr´aci zn´at vz´ajemn´e vazby mezi prvky a parametry tˇechto vazeb. Stanoven´ı vz´ajemn´ych vazeb prvk˚u mezi jednotliv´ymi s´ıtˇemi a parametr˚u vazeb je ´uloha analytick´e geometrie.

Na ´Ustavu nov´ych technologi´ı a aplikovan´e informatiky jsou ˇreˇseny ´ulohy proudˇen´ı podzemn´ı vody do vod´arensk´eho tunelu Bedˇrichov. Tato z´ajmov´a oblast m´a plochu nˇekolika kilometr˚u ˇctvereˇcn´ych a mocnost stovek metr˚u. Samotn´y tunel m´a pr˚umˇer cca 3 metry.

Oblast nav´ıc obsahuje nˇekolik puklinov´ych syst´em˚u. Celou z´ajmovou oblast si lze tedy pˇredstavit jako 3D tˇeleso, kter´e prot´ınaj´ı 2D roviny a proch´az´ı j´ı 1D linie.

Pˇri generov´an´ı konformn´ı s´ıtˇe popisuj´ıc´ı oblast bedˇrichovsk´eho tunelu vznikne s´ıt’ ob- sahuj´ıc´ı miliony prvk˚u. Nav´ıc hrany modelovan´ych prvk˚u v tˇesn´em okol´ı tunelu mus´ı m´ıt rozmˇery v ˇr´adech metr˚u, aby vystihly tvar tunelu. Na okraj´ıch s´ıtˇe naopak prvky mohou m´ıt rozmˇery hrany v ˇr´adu kilometr˚u. Plynul´e zvˇetˇsov´an´ı hran element˚u pˇri generov´an´ı s´ıtˇe je nav´ıc komplikov´ano puklinov´ymi syst´emy.

Moˇzn´ym ˇreˇsen´ım by byl kvalitnˇejˇs´ı gener´ator s´ıtˇe. Tento vˇsak v dobˇe vzniku t´eto pr´ace nebyl k dispozici a je ot´azkou, zda existuje. Pˇri generov´an´ı nekonformn´ı s´ıtˇe by bylo moˇzn´e prvky vygenerovat pro jednotliv´e dimenze nez´avisle. Hustotu s´ıtˇe by bylo moˇzn´e dobˇre kontrolovat. Nedoch´azelo by tak ke vz´ajemn´emu ovlivˇnov´an´ı jednotliv´ych dimenz´ı.

(10)

1D a 2D s´ıt´ıch. D˚uraz bude kladen na podrobnou anal´yzu ˇreˇsen´e problematiky tak, aby bylo moˇzn´e na pr´aci v budoucnu nav´azat pˇri ˇreˇsen´ı v´ypoˇct˚u vazeb na nekonformn´ıch 1D, 2D a 3D s´ıt´ıch.

(11)

1 Teoretick´ a ˇ c´ ast

1.1 Z´ akladn´ı pojmy

Pro pr´aci s elementy a hled´an´ı jejich vz´ajemn´ych sousednost´ı je tˇreba definovat z´akladn´ı pojmy (z oblasti analytick´e geometrie a sousednost´ı). Aby bylo moˇzno pracovat s tˇelesy um´ıstˇen´ymi v rovinˇe nebo prostoru je nutno zav´est kart´ezskou soustavu souˇradnic, kter´a umoˇzˇnuje urˇcovat souˇradnice polohy tˇelesa.

Kart´ezsk´a soustava souˇradnic v rovinˇe (2D) je tvoˇrena dvojic´ı stejn´ych ˇc´ıseln´ych os x, y v rovinˇe, pro kter´e plat´ı:

1) obˇe osy jsou navz´ajem kolm´e

2) jejich pr˚useˇc´ıku O odpov´ıd´a na obou os´ach ˇc´ıslo 0

Kart´ezsk´a soustava souˇradnic v prostoru (3D) je tvoˇrena trojic´ı stejn´ych ˇc´ıseln´ych os x, y, z v prostoru, pro kter´e plat´ı:

1) vˇsechny osy jsou navz´ajem kolm´e 2) prot´ınaj´ı se v jednom bodˇe

3) jejich pr˚useˇc´ıku O odpov´ıd´a na vˇsech os´ach ˇc´ıslo 0

Zaveden´ı souˇradn´e soustavy umoˇzˇnuje zkoumat geometrick´e prvky analytick´ymi meto- dami. Jedn´a se tedy o tzv. analytickou geometrii. Pro ˇreˇsen´ı ´uloh v analytick´e geometrii je nutn´e objasnit nˇekter´e z´akladn´ı pojmy, jeˇz jsou v pr´aci pouˇzity:

Bod je bezrozmˇern´y z´akladn´ı geometrick´y ´utvar definovan´y pouze svoj´ı polohou (napˇr.

bod A), respektive polohov´ym vektorem:

A = [xA, yA, zA]

Pˇr´ımka je matematicky definov´ana jako jednorozmˇern´y z´akladn´ı geometrick´y ´utvar, kter´y je nekoneˇcnˇe tenk´y a nekoneˇcnˇe dlouh´y [8]. Pˇr´ımku lze zadat pomoc´ı dvou bod˚u, nebot’ kaˇzd´ymi dvˇema body lze v´est pr´avˇe jednu pˇr´ımku. Pˇr´ımka se standardnˇe znaˇc´ı mal´ym p´ısmenem. Toto je definice parametrick´e rovnice pˇr´ımky urˇcen´e bodem A, smˇerov´ym vektorem u a parametrem t:

X = A + tu; t ∈ R

Useˇ´ cka je ˇc´ast pˇr´ımky ohraniˇcen´a dvˇema body A a B. Toto je definice parametrick´e rovnice ´useˇcky:

X = A + t(B − A); t ∈< 0; 1 >

(12)

Pr˚useˇc´ık je bod, kter´y je pr˚unikem dvou ´useˇcek nebo pˇr´ımek.

Pr˚unik dvou ˇci v´ıce mnoˇzin je takov´a mnoˇzina, kter´a obsahuje pouze ty prvky, kter´e se nal´ezaj´ı ve vˇsech tˇechto mnoˇzin´ach.

Orientovan´a ´useˇcka je ´useˇcka, kter´a m´a urˇcen poˇc´ateˇcn´ı a koncov´y bod. Pˇri grafick´em zn´azornˇen´ı se koncov´y bod oznaˇcuje ˇsipkou.

Vektor je mnoˇzina vˇsech orientovan´ych ´useˇcek, kter´e maj´ı stejn´y smˇer i velikost. Vektor se znaˇc´ı tuˇcn´ym p´ısmem napˇr. u .

Element je geometrick´y prvek (v cel´e pr´aci se uˇz´ıv´a pojem element nam´ısto pojmu prvek, aby se pˇredeˇslo z´amˇenˇe napˇr. s chemick´ymi prvky). U jednotliv´ych element˚u se rozliˇsuje jejich dimenze, ta se t´yk´a objekt˚u z hlediska modelov´an´ı [5]. Nen´ı tedy ovlivnˇena souˇradnicov´ym syst´emem, v nˇemˇz je element zobrazen (napˇr. ´useˇcka zobrazen´a v 2D i 3D kart´ezsk´em syst´emu souˇradnic je poˇr´ad 1D elementem). Na obr´azku 1 jsou zobrazeny pˇr´ıklady element˚u pouˇzit´ych v pr´aci - pˇr´ıkladem 1D elementu je ´useˇcka, pˇr´ıkladem 2D elementu je troj´uheln´ık, 3D elementem by byl ˇctyˇrstˇen.

V´ypoˇcetn´ı s´ıt’ se z´ısk´a rozloˇzen´ım konkr´etn´ı simulovan´e oblasti na jednotliv´e elementy.

Obr´azek 1: Elementy - ´useˇcka AB a troj´uheln´ık ABC

Diplomov´a pr´ace se zab´yv´a ˇreˇsen´ım vz´ajemn´ych sousednost´ı (kompatibiln´ıch i nekom- patibiln´ıch) element˚u. Definice sousednost´ı obsahuje zdroj [7, strana 4].

Sousednost element˚u je vz´ajemn´a pozice element˚u ve v´ypoˇcetn´ı s´ıt, kter´a je urˇcena poˇctem spoleˇcn´ych uzl˚u a pr˚unikem jednotliv´ych element˚u.

Kompatibiln´ı sousednost nastane, pokud elementy stejn´e dimenze maj´ı spoleˇcnou pr´avˇe jednu celou stˇenu. Elementy r˚uzn´ych dimenz´ı jsou kompatibilnˇe sousedn´ı v pˇr´ıpadˇe, ˇ

ze element niˇzˇs´ı dimenze leˇz´ı na stˇenˇe elementu vyˇsˇs´ı dimenze.

Nekompatibiln´ı sousednost nastane, pokud dva r˚uzn´e elementy maj´ı nepr´azdn´y pr˚unik a nen´ı mezi nimi kompatibiln´ı sousednost.

(13)

1.2 Rychl´ y test

V pˇr´ıpadˇe, kdy konkr´etn´ı s´ıt’ obsahuje n element˚u, mus´ı b´yt pˇri jejich vz´ajemn´em porovn´av´an´ı provedeno n2 porovn´an´ı. Pˇri porovn´av´an´ı element˚u v r´amci dvou s´ıt´ı (pˇre- kr´yva˙j´ıc´ıch se pouze ˇc´asteˇcnˇe) nen´ı d˚uvod porovn´avat navz´ajem ty elementy, kter´e spolu nemohou m´ıt ˇz´adn´y pr˚unik. V r´amci optimalizace porovn´av´an´ı element˚u je v programu implementov´an algoritmus ”rychl´y test”, kter´ym jsou vyˇrazeny vˇsechny elementy, kter´e se nikdy nemohou navz´ajem prot´ınat. V´yhodou tohoto postupu je fakt, ˇze ho lze pouˇz´ıt uni- verz´alnˇe pro porovn´av´an´ı element˚u libovoln´ych typ˚u (´useˇcka - ´useˇcka, ´useˇcka - troj´uheln´ık, troj´uheln´ık - troj´uheln´ık).

Obr´azek 2: Rychl´y test - vyluˇcuj´ıc´ı moˇznost pr˚uniku

Na obr´azku 2 je zobrazen pˇr´ıklad dvou 2D element˚u (v pˇr´ıpadˇe 3D elementu je nutno uvaˇzovat nav´ıc osu z). Troj´uheln´ık ABC je element 1, ´useˇcka EF je element 2. Jak je z obr´azku patrno, na ose Y nen´ı hodnota minima troj´uheln´ıku Y 1min vyˇsˇs´ı neˇz hodnota maxima Y 2max useˇ´ cky. Takt´eˇz hodnota minima ´useˇcky Y 2min nen´ı vyˇsˇs´ı neˇz hodnota ma- xima Y 1max troj´uheln´ıku. Z toho plyne, ˇze na ose Y mohou, ale nemus´ı, m´ıt zobrazen´e

(14)

elementy spoleˇcn´y pr˚unik. Na ose X ovˇsem je hodnota minima ´useˇcky X2min vyˇsˇs´ı neˇz hod- nota maxima X1max troj´uheln´ıku, tud´ıˇz tyto dva elementy nikdy nemohou m´ıt spoleˇcn´y pr˚unik. Na ose X je vyznaˇcena ˇsipkou oblast, do n´ıˇz nem˚uˇze zasahovat ani jeden z obou element˚u.

Obr´azek 3: Rychl´y test - moˇznost pr˚uniku element˚u

Algoritmus ”rychl´y test”slouˇz´ı pro minimalizaci poˇctu porovn´av´an´ı element˚u, nevylu- ˇ

cuje tedy vˇsechny pˇr´ıpady, kdy elementy nemaj´ı pr˚unik. Jak je vidˇet na obr´azku 3 nen´ı v tomto pˇr´ıpadˇe porovn´av´an´ı element˚u vylouˇceno, jelikoˇz mezi zobrazen´ymi elementy nen´ı ˇ

z´adn´y prostor, do nˇehoˇz nem˚uˇze zasahovat ani jeden z obou element˚u (tento prostor je na obr´azku 2 zobrazen tuˇcnou ˇsipkou).

(15)

1.3 Typy sousednost´ı element˚ u

Useˇ´ cka - ´useˇcka

Sousednost dvou ´useˇcek je nejjednoduˇsˇs´ım pˇr´ıpadem sousednosti element˚u, proto je pochopen´ı pr´ace s ´useˇckou velmi d˚uleˇzit´e, protoˇze ostatn´ı sloˇzitˇejˇs´ı pˇr´ıpady sousednost´ı element˚u vych´azej´ı ze sousednosti dvou ´useˇcek (napˇr. troj´uheln´ık je rozloˇzen na 3 ´useˇcky).

Na z´akladˇe definice parametrick´e rovnice ´useˇcky lze vyvodit vliv parametru na polohu bodu na ´useˇcce. Na obr´azku 4 je zobrazena pˇreruˇsovanou ˇcarou pˇr´ımka, na n´ıˇz leˇz´ı ´useˇcka p (zad´ana body AB). Poloha bodu P je definov´ana rovnic´ı:

P = A + tu; t ∈< 0; 1 >

Kdyˇz bude parametr t = 0, tak se bod A = P . V pˇr´ıpadˇe, ˇze parametr t ∈< 0; 1 >, tak bod P bude ∈ na ´useˇcce mezi bodem A a B. Kdyˇz parametr t = 1, tak se bod P = B. Pokud parametr t /∈< 0; 1 >, tak bod P /∈ na ´useˇcce AB, ale ∈ na pˇr´ımce zobrazen´e pˇreruˇsovanou ˇ

carou.

Obr´azek 4: Vliv parametru na polohu bodu

Kompatibiln´ı sousednost ´useˇcek

Dvˇe ´useˇcky jsou navz´ajem kompatibiln´ı, pokud maj´ı spoleˇcnou pr´avˇe jednu celou stˇenu.

Jestliˇze ´useˇcka p je zad´ana body AB a ´useˇcka q je zad´ana body CD, potom jsou obˇe ´useˇcky kompatibiln´ı, pokud jsou totoˇzn´e p=q.

(16)

Obr´azek 5: Kompatibiln´ı sousednost ´useˇcek

Useˇ´ cky nemaj´ı pr˚unik

Pˇri urˇcov´an´ı, zda maj´ı dvˇe ´useˇcky spoleˇcn´y pr˚unik, se nejprve pouˇzije rychl´y test. Na jeho z´akladˇe lze urˇcit pˇr´ıpady, v nichˇz elementy nemohou m´ıt pr˚unik. Pokud elementy mohou m´ıt pr˚unik, pracuje se s parametricky zadan´ymi ´useˇckami p a q.

Obr´azek 6: ´Useˇcky nemaj´ı pr˚unik

p : x = a1+ tu y = a2+ tu q : x = c1+ sv y = c2+ sv

V pˇr´ıpadˇe, ˇze parametr t nebo s /∈< 0; 1 > lze ˇr´ıci, ˇze ´useˇcky nemaj´ı spoleˇcn´y pr˚unik.

(17)

Useˇ´ cky maj´ı pr˚unik

Aby dvˇe ´useˇcky p, q mˇely spoleˇcn´y pr˚unik, nesm´ı to b´yt vylouˇceno rychl´ym testem. D´ale tak´e parametry obou ´useˇcek t, s ∈< 0; 1 >. Pokud jsou splnˇeny pˇredchoz´ı podm´ınky, je pr˚unikem ´useˇcek p, q bod P .

Obr´azek 7: ´Useˇcky maj´ı pr˚unik P

Moˇzn´e typy sousednost´ı dvou ´useˇcek jsou pops´any v tabulce 1. Je zde zohlednˇen i vliv rychl´eho testu na moˇznost pr˚uniku dvou ´useˇcek a jsou zde uvedeny parametry t a s.

Typ sousednosti Rychl´y test Parametr t Parametr s Useˇ´ cky nemaj´ı pr˚unik bez pr˚uniku - -

Useˇ´ cky jsou totoˇzn´e pr˚unik je moˇzn´y nelze vypoˇc´ıtat nelze vypoˇc´ıtat Useˇ´ cky maj´ı 1 pr˚unik pr˚unik je moˇzn´y 0 < t < 1 0 < s < 1

Tabulka 1: Sousednosti ´useˇcky a ´useˇcky

(18)

Useˇ´ cka - troj´uheln´ık

Sousednost ´useˇcky a troj´uheln´ıku je podobn´a pˇr´ıpadu sousednosti dvou ´useˇcek. Zde je jedn´ım elementem ´useˇcka a druh´ym elementem je troj´uheln´ık, kter´y je tvoˇren tˇremi hranami (´useˇckami) a tˇremi pr˚uniky tˇechto hran.

Pˇri rozhodov´an´ı, o jak´y typ sousednosti se jedn´a, se nejprve provede rychl´y test (pro vylouˇcen´ı pˇr´ıpadu, kdy elementy nemohou m´ıt spoleˇcn´y pr˚unik). D´ale se vezme pˇr´ımka (jednoznaˇcnˇe urˇcen´a elementem ´useˇcky na n´ı leˇz´ıc´ı) a zjist´ı se poloha dvou pr˚unik˚u t´eto pˇr´ımky s troj´uheln´ıkem. Podle toho, jak´e jsou hodnoty parametr˚u (t0, t1) popisuj´ıc´ıch pr˚uniky elementu ´useˇcka s jednou hranou troj´uheln´ıka, se rozhodne, o jak´y typ sousednosti se jedn´a. Jednotliv´e typy sousednost´ı v z´avislosti na rychl´em testu a hodnot´ach parametr˚u jsou zobrazeny v tabulce 2.

Typ sousednosti Rychl´y test Parametr t0 Parametr t1

Useˇ´ cka leˇz´ı mimo troj´uheln´ık bez pr˚uniku - - Useˇ´ cka leˇz´ı uvnitˇr troj´uheln´ıku pr˚unik je moˇzn´y t0 < 0 1 < t1 Useˇ´ cka leˇz´ı na hranˇe troj´uheln´ıku pr˚unik je moˇzn´y 0 < t0 < 1 0 < t1 < 1

t0 < 0 0 < t1 < 1 0 < t0 < 1 1 < t1 Useˇ´ cka m´a s troj´uheln´ıkem 1 pr˚unik pr˚unik je moˇzn´y t0 < 0 0 < t1 < 1

0 < t0 < 1 1 < t1 Useˇ´ cka m´a s troj´uheln´ıkem 2 pr˚uniky pr˚unik je moˇzn´y 0 < t0 < 1 0 < t1 < 1

Tabulka 2: Sousednost´ı ´useˇcky a troj´uheln´ıka .

Useˇ´ cka leˇz´ı mimo troj´uheln´ık

Pokud pˇri proveden´ı rychl´eho testu pro ´useˇcku a troj´uheln´ık je zjiˇstˇeno, ˇze elementy nemaj´ı spoleˇcn´y pr˚unik, znamen´a to, ˇze ´useˇcka EF nem´a pr˚unik s ˇz´adnou hranou troj´uheln´ıku ABC, a ani neleˇz´ı uvnitˇr tohoto troj´uheln´ıku. Mus´ı tedy leˇzet mimo troj´uheln´ık ABC.

Useˇ´ cka m˚uˇze leˇzet mimo troj´uheln´ık, i kdyˇz to nen´ı urˇceno rychl´ym testem. Jedn´a se konkr´etnˇe o pˇr´ıpad, kdy spoleˇcn´y pr˚unik nen´ı vylouˇcen rychl´ym testem, ale na z´akladˇe porovn´an´ı element˚u je zjiˇstˇeno, ˇze spolu elementy nemaj´ı ˇz´adn´y pr˚unik. Tento pˇr´ıpad je zobrazen na obr´azku 8.

(19)

Obr´azek 8: ´Useˇcka leˇz´ı mimo troj´uheln´ık

Useˇ´ cka leˇz´ı uvnitˇr troj´uheln´ıku

Pˇri postupn´em zjiˇst’ov´an´ı pr˚unik˚u ´useˇcky a prvn´ı, druh´e a tˇret´ı hrany troj´uheln´ıka nesm´ı b´yt nalezen ˇz´adn´y pr˚unik. Pˇri splnˇen´ı tˇechto podm´ınek ´useˇcka EF neleˇz´ı mimo troj´uheln´ık a ani nem´a ˇz´adn´y pr˚unik s hranami troj´uheln´ıku, tud´ıˇz leˇz´ı uvnitˇr troj´uheln´ıku ABC.

Obr´azek 9: ´Useˇcka leˇz´ı uvnitˇr troj´uheln´ıku

Useˇ´ cka leˇz´ı na hranˇe troj´uheln´ıku

V pˇr´ıpadˇe, ˇze ´useˇcka leˇz´ı na libovoln´e hranˇe troj´uheln´ıku, mohou nastat dva pˇr´ıpady. Po- kud je ´useˇcka s libovolnou hranou troj´uheln´ıku totoˇzn´a, jedn´a se dle definice o kompatibiln´ı sousednost. V druh´em pˇr´ıpadˇe, kdy ´useˇcka nen´ı s libovolnou hranou troj´uheln´ıku totoˇzn´a,

´

useˇcka leˇz´ı pouze na ˇc´asti hrany troj´uheln´ıku nebo naopak obsahuje celou hranu. Na

(20)

obr´azku 10 je zn´azornˇen pˇr´ıpad, v nˇemˇz ´useˇcka DE obsahuje celou hranu AB z troj´uheln´ıku ABC. V tomto pˇr´ıpadˇe jsou hodnoty parametr˚u 0 < t0 < 1 a 0 < t1 < 1.

Obr´azek 10: ´Useˇcka leˇz´ı na hranˇe troj´uheln´ıku

Useˇ´ cka m´a s troj´uheln´ıkem jeden pr˚unik

Pokud m´a ´useˇcka EF s troj´uheln´ıkem ABC jeden pr˚unik P , znamen´a to, ˇze krajn´ı bod E ´useˇcky EF leˇz´ı uvnitˇr troj´uheln´ıku ABC a druh´y krajn´ı bod F leˇz´ı mimo troj´uheln´ık (poˇrad´ı bod˚u m˚uˇze b´yt i opaˇcn´e). V tomto pˇr´ıpadˇe jsou hodnoty parametr˚u t0 < 0, 0 < t1 < 1. Pokud by pozice krajn´ıch bod˚u E a F byly prohozeny, pak by hodnoty parametr˚u byly 0 < t0 < 1, 1 < t1.

Obr´azek 11: ´Useˇcka m´a s troj´uheln´ıkem jeden pr˚unik

(21)

Useˇ´ cka m´a s troj´uheln´ıkem dva pr˚uniky

Jestliˇze m´a ´useˇcka EF s troj´uheln´ıkem ABC dva pr˚uniky P 1 a P 2, plat´ı, ˇze oba krajn´ı body E a F ´useˇcky leˇz´ı vnˇe troj´uheln´ıku ABC. ´Useˇcka tedy ”ˇreˇze”troj´uheln´ık.

Obr´azek 12: ´Useˇcka m´a s troj´uheln´ıkem dva pr˚uniky

Troj´uheln´ık - troj´uheln´ık

Troj´uheln´ık leˇz´ı uvnitˇr troj´uheln´ıku

Aby troj´uheln´ık B1B2B3mohl leˇzet uvnitˇr troj´uheln´ıku A1A2A3, nesm´ı b´yt rychl´ym testem vylouˇcena moˇznost pr˚uniku tˇechto element˚u. Pˇri zjiˇst’ov´an´ı vz´ajemn´ych pr˚unik˚u hran obou

Obr´azek 13: Troj´uheln´ık leˇz´ı uvnitˇr druh´eho troj´uheln´ıku

(22)

troj´uheln´ık˚u ovˇsem nesm´ı b´yt nalezen ˇz´adn´y pr˚unik hran. Tento pˇr´ıpad je zobrazen na obr´azku 13.

Troj´uheln´ık proch´az´ı jednou hranou druh´eho troj´uheln´ıku

K tomuto pˇr´ıpadu sousednosti doch´az´ı v pˇr´ıpadˇe, ˇze jednou hranou prvn´ıho troj´uheln´ıku proch´az´ı dvˇe hrany druh´eho troj´uheln´ıku. Jak je patrno z obr´azku 14 (v nˇemˇz jsou zobra- zeny oba pˇr´ıpady) protnut´ı jedn´e hrany troj´uheln´ıku se jeˇstˇe m˚uˇze liˇsit t´ım, ˇze troj´uheln´ık B1B2B3 m´a uvnitˇr troj´uheln´ıku A1A2A3 jeden vrchol a troj´uheln´ık C1C2C3 m´a uvnitˇr troj´uheln´ıku dva vrcholy.

Obr´azek 14: Troj´uheln´ık proch´az´ı jednou hranou druh´eho troj´uheln´ıku

Troj´uheln´ık prot´ın´a dvˇe hrany druh´eho troj´uheln´ıku

Pˇr´ıpad˚u, kdy kdy prvn´ı troj´uheln´ık m´a protnuty dvˇe hrany druh´ym troj´uheln´ıkem, exis- tuje v´ıce. Na obr´azku 15 je zobrazen pˇr´ıpad, kdy je troj´uheln´ık A1A2A3 protnut ve vr- cholu. Troj´uheln´ık B1B2B3, kter´y prot´ın´a troj´uheln´ık A1A2A3 m´a uvnitˇr dva sv´e vrcholy.

Troj´uheln´ık C1C2C3 takt´eˇz prot´ın´a troj´uheln´ık A1A2A3, ale m´a uvnitˇr pouze jeden vrchol.

Dalˇs´ı pˇr´ıpad protnut´ı dvou hran je na obr´azku 16. Troj´uheln´ık B1B2B3 prot´ın´a dvˇe hrany troj´uheln´ıku A1A2A3 a m´a uvnitˇr jeden sv˚uj vrchol. Troj´uheln´ık C1C2C3

”ˇreˇze“ troj´uheln´ık A1A2A3 - proch´az´ı jeho dvˇema hranami, ale nem´a uvnitˇr ˇz´adn´y vrchol.

(23)

Obr´azek 15: Troj´uheln´ık prot´ın´a dvˇe hrany druh´eho troj´uheln´ıku v jeho vrcholech

Obr´azek 16: Troj´uheln´ık prot´ın´a dvˇe hrany druh´eho troj´uheln´ıku

Troj´uheln´ık prot´ın´a tˇri hrany druh´eho troj´uheln´ıku

Pˇr´ıpad, kdy troj´uheln´ık A1A2A3 prot´ın´a tˇri hrany troj´uheln´ıku B1B2B3 nastane, po- kud kaˇzd´a hrana troj´uheln´ıku A1A2A3 je protnuta dvˇema hranami troj´uheln´ıku B1B2B3. Pˇr´ıklad protnut´ı tˇr´ı hran jsou na obrazku 23.

(24)

Obr´azek 17: Troj´uheln´ık prot´ın´a tˇri hrany druh´eho troj´uheln´ıku

1.4 N´ astroj GMSH pro tvorbu s´ıt´ı

Program GMSH pouˇz´ıv´a k popisov´an´ı geometrie metodu koneˇcn´ych prvk˚u [3]. Kon- kr´etnˇe jsou modely geometri´ı (soubory s pˇr´ıponou .geo) tvoˇreny pomoc´ı jednotliv´ych bod˚u, orientovan´ych ´useˇcek, orientovan´ych povrch˚u a objem˚u. Vzhled geometrie a v´ypoˇcetn´ı s´ıtˇe je zn´azornˇen na obr´azku 18.

Obr´azek 18: Geometrie a V´ypoˇcetn´ı s´ıt’

(25)

Vygenerov´an´ı v´ypoˇcetn´ı s´ıtˇe (vstupn´ı soubor .msh) na z´akladˇe modelu geometrie je zajiˇstˇeno automaticky programem GMSH. V tomto programu lze i nastavit parametr, kter´y ovlivn´ı hustotu vygenerovan´e s´ıtˇe. Nastaviteln´y rozsah parametru je 0.1 aˇz 1.0, pˇriˇcemˇz pˇri velikosti parametru 0.1 je s´ıt’ desetkr´at hustˇs´ı, neˇz pˇri parametru 1.0. Vliv parametru na hustotu generovan´e s´ıtˇe je zobrazen v pˇr´ıloze B.

1.5 Vstupn´ı soubor .msh

Soubor typu .msh je souborem z nˇehoˇz jsou naˇc´ıt´ana vstupn´ı data pro zpracov´an´ı sousednost´ı element˚u pomoc´ı programu NGH [4]. Soubor obsahuje tyto ˇc´asti: hlaviˇcku ($MeshFormat), informace o jednotliv´ych uzlech ($Nodes) a informace o elementech ($Ele- ments). Lev´a ˇc´ast zobrazen´eho zdrojov´eho k´odu obsahuje data z re´aln´eho pˇr´ıkladu a prav´a ˇ

c´ast obsahuje obecn´y popis k´odu vstupn´ıho souboru.

$MeshFormat $MeshFormat

2 0 8 verze typ_souboru velikost_souboru

$EndMeshFormat $EndMeshFormat

$Nodes $Nodes

2 poˇcet_uzl˚u

1 0 0 uzel-ˇc´ıslo x-souˇradnice y-souˇradnice

2 1 1 ...

$EndNodes$ $EndNodes

$Elements $Elements

1 poˇcet_element˚u

1 1 3 2 1 0 1 2 element-ˇc´ıslo element-typ poˇcet_tag˚u <tag>...seznam uzl˚u

$EndElements $EndElements

(26)

2 Implementace

Implementace programu NGH slouˇz´ıc´ıho pro hled´an´ı nekompatibiln´ıch sousednost´ı je realizov´ana v jazyce C++ [6]. Program je naps´an objektovˇe s d˚urazem na maxim´aln´ı uni- verz´alnost. To je v´yhodou pˇri prov´adˇen´ı vˇetˇs´ıch zmˇen v programu, kdy staˇc´ı pozmˇenit pouze jednotliv´e tˇr´ıdy a jejich vz´ajemn´e propojen´ı a nen´ı tˇreba mˇenit cel´y k´od programu.

Pˇr´ıkladem takov´eho rozˇs´ıˇren´ı m˚uˇze b´yt pˇrid´an´ı dalˇs´ıho elementu ”tetrahedron”. V pˇr´ıpadˇe pˇrid´an´ı tohoto elementu je tˇreba vytvoˇrit tˇr´ıdu TTetrahedron, pomoc´ı n´ıˇz bude tento ele- ment naˇcten ze vstupn´ıho souboru. V n´avaznosti na tuto tˇr´ıdu je nutno vytvoˇrit i nov´y kompar´ator pro tento element a zahrnout ho do programu, podobnˇe jako tomu bylo u pˇredchoz´ıch element˚u.

2.1 Hlavn´ı tˇ r´ıdy projektu

Tˇr´ıda TPoint

Tˇr´ıda TPoint vytv´aˇr´ı objekty, kter´e maj´ı definovan´e souˇradnice x, y, z. Objekty t´eto tˇr´ıdy tedy koresponduj´ı s teoretickou definic´ı bodu.

Tˇr´ıda TNode

Tˇr´ıda TNode je potomkem tˇr´ıdy TPoint, z n´ıˇz dˇed´ı jednotliv´e souˇradnice x, y, z pro vytv´aˇren´y objekt uzel. Krome podˇedˇen´ych souˇradnic m´a objekt uzel jeˇstˇe svoje oznaˇcen´ı uzlu (je re- prezentov´ano cel´ym ˇc´ıslem).

Tˇr´ıda TElement

Tˇr´ıda TElement je abstraktn´ı tˇr´ıda jej´ıˇz objekty maj´ı: svoje oznaˇcen´ı, jsou urˇcit´eho typu, obsahuj´ı dalˇs´ı ˇc´ıseln´e parametry ze vstupn´ıho souboru (v programu se s nimi nepracuje) a ukazatele na jednotliv´e uzly tvoˇr´ıc´ı konkr´etn´ı element.

Tˇr´ıdy TLine a TTriangle

Tˇr´ıda TLine je potomkem tˇr´ıdy TElement, kter´a je typu 1 a obsahuje ukazatele na dva uzly (poˇc´ateˇcn´ı a koncov´y uzel ´useˇcky). Tˇr´ıda TTriangle je takt´eˇz potomkem tˇr´ıdy TElement, ovˇsem je typu 2 a obsahuje ukazatele na tˇri uzly (tˇri vrcholy troj´uheln´ıka).

Tˇr´ıda TLineAdaptive

Tˇr´ıda TLineAdaptive je potomkem tˇr´ıdy TLine a slouˇz´ı jako pomocn´a tˇr´ıda pro roz- klad troj´uheln´ık˚u ze tˇridy TTriangle na pomocn´e ´useˇcky (ty jsou vyuˇzity pouze v kom- par´atorech). Rozklad prob´ıh´a tak, ˇze uzly tvoˇr´ıc´ı vrcholy troj´uheln´ıka jsou postupnˇe pˇriˇrazeny tˇrem ´useˇck´am TLineAdaptive. Prvn´ı vrchol troj´uheln´ıka je poˇc´ateˇcn´ım uzlem prvn´ı po-

(27)

mocn´e ´useˇcky, druh´y vrchol je koncov´ym uzlem prvn´ı pomocn´e ´useˇcky, a z´aroveˇn je po- ˇ

c´ateˇcn´ım uzlem druh´e pomocn´e ´useˇcky, tˇret´ı vrchol je koncov´ym uzlem druh´e pomocn´e

´

useˇcky, a z´aroveˇn je poˇc´ateˇcn´ım uzlem tˇret´ı pomocn´e ´useˇcky a prvn´ı vrchol je koncov´ym uzlem tˇret´ı pomocn´e ´useˇcky. Pro snadnˇejˇs´ı pochopen´ı je rozklad zobrazen na obr´azku 1.2.

Vrcholy troj´uheln´ıku jsou oznaˇceny 123, ´useˇcky jsou oznaˇceny U 1 aˇz U 3, pˇriˇcemˇz poˇc´ateˇcn´ı uzly ´useˇcek maj´ı index 0 a koncov´e index 1.

Obr´azek 19: Rozklad troj´uheln´ıku na pomocn´e ´useˇcky TLineAdaptive

Tˇr´ıda TMesh

Tˇr´ıda TMesh obsahuje metodu AddNode, kter´a prov´ad´ı ukl´ad´an´ı ukazatel˚u (na objekty TNode) do mapy nodeLabelMap. Jednotliv´e ukazatele jsou ukl´ad´any do mapy v poˇrad´ı, v nˇemˇz jsou tˇr´ıdou TMeshReader naˇc´ıt´any. Tˇr´ıda TMesh obsahuje d´ale metodu AddEle- ment, slouˇz´ıc´ı pro ukl´ad´an´ı ukazatel˚u na elementy do mapy elementLabelMap. Tato metoda funguje analogicky k metodˇe AddNode, ovˇsem ukl´ad´any nejsou ukazatele na uzly, ale na elementy.

Tˇr´ıda TMeshReader

Tˇr´ıda TMeshReader slouˇz´ı k naˇcten´ı jednotliv´ych uzl˚u a element˚u ze vstupn´ıho souboru .msh. Pˇri naˇcten´ı uzlu je vytvoˇren objekt tˇr´ıdy TNode. Naˇcten´ı element˚u tˇr´ıdou TMeshRea- der prob´ıh´a tak, ˇze element pˇri parsov´an´ı z´ısk´a oznaˇcen´ı, typ, dalˇs´ı parametry a ukazatele ukazuj´ıc´ı na konkr´etn´ı uzly (jejich poˇcet z´aleˇz´ı na typu). Podle typu elementu je tˇr´ıdou TElementFactory vytvoˇren konkr´etn´ı objekt (TLine, TTriangle,...), kter´y je potomkem

(28)

abstraktn´ı tˇr´ıdy TElement (viz obr´azek 20).

Obr´azek 20: TElement a jeho potomci

2.2 Porovn´ avac´ı algoritmy

Rychl´y test

Proveden´ı rychl´eho testu je realizov´ano tˇr´ıdou TQuickTest. Tato tˇr´ıda vol´a metodu get- Min a getMax (ze tˇr´ıdy TElement). Na z´akladˇe minim a maxim porovn´avan´ych element˚u se vyhodnot´ı, zda elementy mohou nebo nemohou m´ıt spoleˇcn´y pr˚unik, pokud elementy nemohou m´ıt spoleˇcn´y pr˚unik, nen´ı d´ale v programu prov´adˇeno jejich porovn´av´an´ı. Teorie prov´adˇen´ı rychl´eho testu je bl´ıˇze pops´ana v kapitole 1.2.

V´ybˇer porovn´avaˇce dle typu element˚u

V´ybˇer vhodn´eho porovn´avaˇce je prov´adˇen tˇr´ıdou TManagerComparators. Tato tˇr´ıda vy- tvoˇr´ı tˇri objekty kompar´ator˚u pro tˇri r˚uzn´e typy kompar´ator˚u (LL, LT, TT) a referenci na objekty uloˇz´ı do mapy. Ve tˇr´ıdˇe TManagerComparators je d´ale specifikov´ano jak´a hodnota kl´ıˇce odpov´ıd´a jak´emu typu kompar´atoru. Zavol´an´ım metody getComparator se provede porovn´an´ı typ˚u element˚u a vypoˇcte se kl´ıˇc tohoto porovn´an´ı. Na z´akladˇe hodnoty kl´ıˇce je zavol´an objekt konkr´etn´ı kompar´ator viz tabulka 3. Pˇriˇcemˇz konkr´etn´ı kompar´atory jsou potomci abstraktn´ıho kompar´atoru TAbstractComparator.

Hodnota kl´ıˇce dvou porovn´avan´ych element˚u se z´ısk´a takto:

int key = typElementu1 + 1000 * typElementu2;

V pˇr´ıpadˇe pˇrid´an´ı nov´eho kompar´atoru (pro dalˇs´ı typy element˚u) staˇc´ı do tˇr´ıdy TMa- nagerComparators pˇridat nov´y kl´ıˇc a jemu pˇriˇrazen´y objekt kompar´ator, ˇc´ımˇz je zajiˇstˇena snadn´a rozˇsiˇritelnost programu. Vzhledem k podobn´emu pouˇzit´ı ˇreˇsen´ı pro jednotliv´e typy kompar´ator˚u se zde jedn´a o n´avrhov´y vzor Strategy [1], [2].

(29)

Typ elementu 1 Typ elementu 2 Kl´ıˇc Kompar´ator

Line - 1 Line - 1 1001 TComparatorLL

Line - 1 Triangle - 2 2001 TComparatorLT

Triangle - 2 Line - 1 1002 TComparatorLT

Triangle - 2 Triangle - 2 2002 TComparatorTT Tabulka 3: Volba vhodn´eho kompar´atoru

2.3 Kompar´ atory

Konkr´etn´ı kompar´atory (zvolen´e tˇr´ıdou TManagerComparators) jsou abstraktn´ı tˇr´ıdy, kter´e porovn´avaj´ı dva elementy a v´ysledek ukl´adaj´ı do objektu tˇr´ıdy TResult. Tˇr´ıdy kom- par´ator˚u jsou jedny z nejd˚uleˇzitˇejˇs´ıch tˇr´ıd cel´eho programu NGH, nebot’ slouˇz´ı k v´ypoˇctu parametr˚u a souˇradnic v r´amci jednotliv´ych sousednost´ı.

Tˇr´ıda TComparatorLL

Tˇr´ıda TComparatorLL slouˇz´ı k porovn´av´an´ı dvou element˚u typu ´useˇcka, pˇriˇcemˇz k po- rovn´av´an´ı dojde zavol´an´ım metody Compare. Po zavol´an´ı t´eto metody jsou naˇcteny do promˇenn´ych A, B, C, D (typu TPoint) poˇc´ateˇcn´ı a koncov´e uzly obou ´useˇcek. S naˇcten´ymi promˇenn´ymi probˇehne v´ypoˇcet parametr˚u t, s a souˇradnic pr˚uniku P , postup v´ypoˇctu je kompletnˇe pops´an v kapitole 2.4 - v´ypoˇcet programu. Parametr t popisuje vzd´alenost pr˚uniku P od poˇc´ateˇcn´ıho bodu A a parametr s popisuje vzd´alenost pr˚uniku P od poˇc´ateˇc- n´ıho bodu C (viz obr´azek 7). Vypoˇcten´e v´ysledky jsou uloˇzeny do objektu tˇr´ıdy TResult (viz kapitola 2.5).

Tˇr´ıda TComparatorLT

Tˇr´ıda TComparatorLT funguje analogicky k pˇredchoz´ı tˇr´ıdˇe. Pˇri zavol´an´ı metody Compare jsou naˇcteny promˇenn´e A, B pro ´useˇcku a pot´e jsou do promˇenn´ych C[3], D[3] (takt´eˇz typu TPoint) naˇcteny poˇc´ateˇcn´ı a koncov´e uzly troj´uheln´ıka. Troj´uheln´ık je d´ale pomoc´ı tˇr´ıdy TLineAdaptive rozloˇzen na jednotliv´e ´useˇcky (viz obr´azek 19). Vzhledem k vyuˇzit´ı tˇr´ı po- mocn´ych ´useˇcek (TLineAdaptive) se v r´amci kompar´atoru pracuje s parametry t a s jakoˇzto s jednorozmˇern´ym polem. Struktura ukl´adan´ych dat t´ım ovˇsem nen´ı nijak ovlivnˇena.

Tˇr´ıda TComparatorTT

Tˇr´ıda TComparatorTT opˇet funguje analogicky k pˇredchoz´ı tˇr´ıdˇe. Pˇri zavol´an´ı metody Compare jsou ovˇsem naˇc´ıt´any promˇenn´e pro dva troj´uheln´ıky (A[3], B[3], C[3], D[3]). Oba

(30)

troj´uheln´ıky jsou rozkl´ad´any na pomocn´e ´useˇcky (TLineAdaptive), kter´ych je v tomto kompar´atoru pouˇzito tedy celkem ˇsest.

2.4 Implementace rovnic popisuj´ıc´ı sousednosti

Pochopen´ı postupu popisuj´ıc´ı pˇrevod v´ypoˇctu parametr˚u a pr˚unik˚u dvou ´useˇcek z ana- lytick´e geometrie do programov´e implementace je velmi d˚uleˇzit´e. Proto je pˇr´ıklad imple- mentace rovnic pops´an na konkr´etn´ım pˇr´ıkladu nekompatibiln´ı sousednosti dvou ´useˇcek (viz obr´azek 21). Popis je rozdˇelen na dvˇe ˇc´asti - popis matematick´eho v´ypoˇctu a popis v´ypoˇctu programu.

Matematick´y v´ypoˇcet

V pˇr´ıkladu jsou zad´any 4 body vˇcetnˇe jejich souˇradnic. Body A a B leˇz´ı na pˇr´ımce p, body C a D leˇz´ı na pˇr´ımce q. Rovnice 1 parametricky popisuje pˇr´ımky p a q. V rovnic´ıch 2 a 3 je proveden v´ypoˇcet parametr˚u t a s. Jelikoˇz parametr t ∈< 0; 1 > a parametr s ∈< 0; 1 > tak plat´ı, ˇze ´useˇcky AB a CD (leˇz´ıc´ı na pˇr´ımk´ach p a q) maj´ı spoleˇcn´y pr˚unik. Souˇradnice pr˚uniku P [x, y] se vypoˇc´ıtaj´ı dosazen´ım parametr˚u z rovnice 3 do pa- rametrick´eho vyj´adˇren´ı pˇr´ımek popsan´eho v rovnici 1. Postup tohoto dosazen´ı je zobrazen v rovnici 4.

p : x = 1 + 3t y = 1 + 3t (1)

q : x = 1 + 4s y = 3

− − − − − − − − − − − − − − − − −−

1 + 3t = 1 + 4s (2)

1 + 3t = 3

− − − − − − − − − − − − − − − − −−

t = 2/3 (3)

s = 1/2

− − − − − − − − − − − − − − − − −−

x = 1 + (3 ∗ 2/3) → x = 3 (4)

(31)

y = 3 → y = 3

− − − − − − − − − − − − − − − − −−

P [x, y] = P [3, 3] (5)

Obr´azek 21: Pˇr´ıklad popisuj´ıc´ı implementaci rovnic

V´ypoˇcet programu

Pˇri tvorbˇe v´ypoˇcetn´ıho syst´emu bylo nejd˚uleˇzitˇejˇs´ı, aby tento syst´em dok´azal pracovat univerz´alnˇe pro vˇsechny moˇzn´e pˇr´ıpady sousednost´ı. V pˇr´ıpadˇe, ˇze tedy u konkr´etn´ıho pˇr´ıkladu nen´ı sousednost element˚u vylouˇcena rychl´ym testem, jsou u tohoto pˇr´ıkladu vypoˇcteny parametry t a s na jejichˇz z´akladˇe se d´ale rozhoduje o typu sousednosti ele- ment˚u.

Rovnice 6 obsahuje parametrick´y popis pˇr´ımky p a q. Rovnice 7 porovn´av´a x-ov´e a y-ov´e sloˇzky obou pˇr´ımek. Rovnice 8 upravuje tvar pˇredchoz´ı rovnice na jin´y tvar, kter´y bude l´epe implementovateln´y do programu. Rovnice 9 popisuje, jak´ym zp˚usobem jsou jednotliv´e ˇc´asti pˇredchoz´ı rovnice implementov´any v programu. Rovnice 10 obsahuje vyj´adˇren´ı parametru t z´ıskan´e z prvn´ı a druh´e ˇc´asti rovnice 8. Rovnice 11 obsahuje fin´aln´ı vyj´adˇren´ı parametr˚u t a s. Kompletn´ı postup vyj´adˇren´ı parametr˚u t a s je uveden v pˇr´ıloze A.

(32)

p : x = Ax+ ax∗ t y = Ay + ay∗ t (6) q : x = Cx+ bx∗ s y = Cy+ by ∗ s

− − − − − − − − − − − − − − − − −−

Ax+ ax∗ t = Cx+ bx∗ s (7)

Ay+ ay ∗ t = Cy + by∗ s

− − − − − − − − − − − − − − − − −−

ax∗ t + bx∗ s = Cx− Ax (8)

ay∗ t + by∗ s = Cy − Ay

− − − − − − − − − − − − − − − − −−

ax= (Bx− Ax) ay = (By− Ay) (9) bx= (−1)(Dx− Cx) by = (−1)(Dy− Cy)

cx = (Cx− Ax) cy = (Cy − Ay)

− − − − − − − − − − − − − − − − −−

t = cy− (by∗ s)

ay t = cx− (bx∗ s)

ax (10)

− − − − − − − − − − − − − − − − −−

t = (cy ∗ bx) − (cx∗ by)

(ay ∗ bx) − (ax∗ by) s = (ay ∗ cx) − (ax∗ cy)

(ay∗ bx) − (ax∗ by) (11)

U jmenovatele (ay∗ bx) − (ax∗ by) shodn´eho pro oba parametry t a s je nutn´e prov´est kontrolu, zda se nerovn´a nule. Jmenovatel se rovn´a nule v pˇr´ıpadˇe, ˇze porovn´avan´e pˇr´ımky jsou rovnobˇeˇzn´e.

(33)

2.5 Tˇ r´ıda v´ ysledk˚ u TResult

Jednotliv´e kompar´atory (TComparatorLL, TComparatorLT a TComparatorTT) pˇri porovn´av´an´ı element˚u porovn´avaj´ı postupnˇe jednotliv´e hrany obou tˇechto element˚u. To znamen´a, ˇze pˇri porovn´an´ı dvou element˚u z´ısk´ame v´ıce v´ysledk˚u (pro vˇsechny kombinace hran) uloˇzen´ych v objektech tˇr´ıdy TResult.

Tˇr´ıda TResult v sobˇe obsahuje tyto informace: ukazatel na konkr´etn´ı element jenˇz je porovn´av´an, ˇc´ıslo hrany porovn´avan´eho elementu, velikost parametru, ukazatel na druh´y objekt TResult popisuj´ıc´ı vlastnosti druh´eho elementu s kter´ym je porovn´av´an´ı prov´adˇeno a ukazatel na objekt tˇr´ıdy TCross (obsahuj´ıc´ı souˇradnice pr˚unik˚u provn´avan´ych element˚u).

Datov´a struktura tˇr´ıdy TResult je jasnˇe patrn´a na obr´azku 24, v nemˇz jsou zobrazeny oba objekty TResult (d´ıky vz´ajemn´emu odkazov´an´ı) a i objekt TCross obsahuj´ıc´ı pr˚uniky.

2.6 Tˇ r´ıda TResultList

Tˇr´ıda TresultList slouˇz´ı k uloˇzen´ı v´ysledk˚u TResult do datov´eho kontejneru seznamu [9]. Konkr´etnˇe jde o oboustrannˇe zˇretˇezen´ym seznamem vhodn´ym k ˇcast´emu vkl´ad´an´ı a odeb´ır´an´ı prvk˚u, seznam nav´ıc obsahuje odkazy na pˇredchoz´ı a n´asleduj´ıc´ı prvky a umoˇz- ˇ

nuje proch´azen´ı pomoc´ı iter´atoru.

Obr´azek 22: Prov´az´an´ı dvou v´ysledk˚u TResult a jejich vazba pˇri uloˇzen´ı do seznamu Volba ukl´ad´an´ı do datov´eho kontejneru seznam se jev´ı jako nejvhodnˇejˇs´ı vzhledem k obsahu ukl´adan´ych dat, nutnosti jejich ˇrazen´ı a jejich struktuˇre. Na obr´azku 22 vlevo je vidˇet dva navz´ajem prov´azan´e v´ysledky z tˇr´ıdy TResult. Tato prov´azanost je zn´azornˇena ˇsipkou a realizov´ana je pomoc´ı ukazatele coupledResult, kter´y je souˇc´ast´ı tˇr´ıdy TResult.

(34)

Prav´a ˇc´ast obr´azku 22 zobrazuje uspoˇr´ad´an´ı v´ysledk˚u TResult jiˇz do struktury seznamu a ˇsipky zde naznaˇcuj´ı, ˇze dvojice TResult jsou i nad´ale prov´azan´e.

2.7 Tˇ r´ıda TCross

Tˇr´ıda TCross obsahuje souˇradnice x a y jednotliv´ych pr˚unik˚u, kter´e spolu maj´ı dvojice element˚u. Ukazatel na tˇr´ıdu TCross je souˇc´ast´ı tˇr´ıdy TResult, t´ım je umoˇznˇen pˇr´ıstup k souˇradnic´ım jednotliv´ych pr˚unik˚u (uloˇzen´ych ve tˇr´ıdˇe TCross) ze tˇr´ıdy TResult.

(35)

3 Ovˇ eˇ ren´ı funkˇ cnosti implementace

Testov´an´ı vytvoˇren´eho programu bylo prov´adˇeno na notebooku s n´asleduj´ıc´ımi para- metry:

Operaˇcn´ı syst´em: Windows XP, Servis pack 3 CPU: Intel Celeron 1.6Ghz

Operaˇcn´ı pamˇet’: 2GB RAM Cygwin: Cygwin_4.x

3.1 Form´ at v´ ystupn´ıch soubor˚ u

Parameter .ngh

V´ystupn´ı soubor Parameter.nhg obsahuje data uspoˇr´adan´a do struktury seznam. Tento v´ystupn´ı seznam je vytvoˇren tˇr´ıdou TResultList. N´asleduj´ıc´ı pˇr´ıklad obsahuje obr´azek s kˇr´ıˇz´ıc´ımi se elementy, tabulku vz´ajemn´ych vztah˚u a pr˚unik˚u a obsah v´ystupn´ıho sou- boru.

Obr´azek 23: V´ystupn´ı soubor - kˇr´ıˇz´ıc´ı se elementy

(36)

Obr´azek 23 obsahuje dva vz´ajemnˇe se kˇr´ıˇz´ıc´ı troj´uheln´ıky, kter´e maj´ı 6 spoleˇcn´ych pr˚unik˚u (P1 - P6). Jelikoˇz pro kaˇzd´y jeden pr˚unik existuje ve v´ystupn´ım souboru Parame- ter.nhg jeden ˇr´adek, tak pro obr´azek 23 bude v´ystupn´ı soubor obsahovat 6 ˇr´adk˚u.

Obr´azek 24: V´ystupn´ı soubor - tabulka

Tabulka zobrazen´a na obr´azku 24 detailnˇe popisuje obsah v´ystupn´ıho souboru. Pro snazˇs´ı vizualizaci je tabulka rozdˇelena na 3 barvy. Modr´a ˇc´ast tabulky obsahuje informace t´ykaj´ıc´ı se prvn´ıho elementu - je zde uloˇzen popisek elementu, ˇc´ıslo hrany a velikost pa- rametru (ud´avaj´ıc´ı vzd´alenost bod˚u v r´amci hrany). Zelen´a ˇc´ast je analogick´a k modr´e ˇ

c´asti, ale obsahuje informace t´ykaj´ıc´ı se druh´eho elementu. ˇCerven´a ˇc´ast je spoleˇcn´a pro oba elementy a obsahuje souˇradnice x a y pr˚unik˚u obou element˚u.

V´ystupn´ı soubor zobrazuje fin´aln´ı strukturu souboru Parameter.nhg:

$Parameter.ngh

$Element1 Side Parameter | Element2 Side Parameter | Px Py 1 0 0.75 | 2 0 0.5 | 2.5 1

1 0 0.25 | 2 2 0.5 | 1.5 1 1 1 0.25 | 2 0 0.75 | 2.75 1.5 1 1 0.5 | 2 1 0.25 | 2.5 2 1 2 0.5 | 2 1 0.75 | 1.5 2 1 2 0.75 | 2 2 0.25 | 1.25 1.5

$EndElements-Sides-Parameters

(37)

3.2 Testy

V ˇc´asti testov´an´ı bylo provedeno mnoˇzstv´ı test˚u (na r˚uzn´ych velikostech s´ıt´ı a pˇri r˚uzn´ych hustot´ach s´ıt´ı) pro ovˇeˇren´ı funkce a rychlosti. Pro potˇrebu mˇeˇren´ı ˇcasu byla uˇzita metoda diffclock (vyuˇz´ıvaj´ıc´ı makro CLOCKS PER SEC popsan´e v knihovnˇe Time.h).

Test spr´avn´e funkce

Testov´an´ı funkˇcnosti zjiˇst’uje schopnost jednotliv´ych kompar´ator˚u urˇcit hrany element˚u, vypoˇc´ıtat parametry a zjistit souˇradnice pr˚unik˚u (TCross), kter´e elementy navz´ajem maj´ı.

Testov´an´ı v s´ıti bylo provedeno na s´ıt´ı obsahuj´ıc´ı 11 element˚u (vˇcetnˇe tˇr´ı diskretizovan´ych

´

useˇcek prot´ınaj´ıc´ıch tuto s´ıt’). Na obr´azku 25 je zobrazena testovan´a s´ıt’.

Obr´azek 25: Test funˇcnosti

Pˇri testov´an´ı bylo nalezeno celkem 19 pr˚unik˚u v s´ıti, kter´e jsou zobrazeny zelenˇe. Kaˇzd´y pr˚unik odpov´ıd´a jednomu ˇr´adku v´ystupn´ıho souboru uveden´eho v pˇr´ıloze C.

Test vlivu rychl´eho testu

Testov´an´ı vlivu pouˇzit´ı algoritmu rychl´y test na v´yslednou rychlost porovn´an´ı vˇsech element˚u, bylo provedeno na dvou vz´ajemnˇe se pˇrekr´yvaj´ıc´ıch ˇctvercov´ych s´ıt´ıch, kter´e byly protnuty ´useˇckou. Geometrie ˇctvercov´ych s´ıt´ı a konkr´etn´ı vygenerovan´a s´ıt’ s parametry hustoty obou s´ıt´ı rovno jedn´e je zobrazena na obr´azku 26.

(38)

Obr´azek 26: Geometrie a s´ıt’ pro zjiˇstˇen´ı vlivu rychl´eho testu

Testov´an´ı bylo provedeno nejprve pˇri nejniˇzˇs´ı hustotˇe s´ıtˇe (parametry s´ıt´ı rovno jedn´e) a byly mˇeˇreny ˇcasy nutn´e pro porovn´an´ı vˇsech element˚u pˇri zapnut´em rychl´em testu a bez jeho pouˇzit´ı. V dalˇs´ıch kroc´ıch testov´an´ı byla zvyˇsov´ana hustota s´ıt´ı (sniˇzoval se parametr hustoty s´ıt´ı). Souhrn v´ysledk˚u mˇeˇren´ı je na obr´azku 27 a to vˇcetnˇe poˇctu porovn´avan´ych element˚u, kter´y je z´avisl´y na hustotˇe generovan´ych s´ıt´ı.

Obr´azek 27: ˇCasy porovn´an´ı element˚u v z´avislosti na hustotˇe s´ıt´ı

Na obr´azku 28 je graf zobrazuj´ıc´ı t´emˇeˇr exponenci´aln´ı r˚ust ˇcasu nutn´eho pro porovn´an´ı vˇsech element˚u v z´avislosti na hustotˇe s´ıtˇe pro pˇr´ıpad, kdy nen´ı pouˇzit rychl´y test.

Na obr´azku 29 je pro ´uplnnost graf zobrazuj´ıc´ı ˇcasu nutn´y pro porovn´an´ı element˚u v pˇr´ıpadˇe, kdy je pouˇzit rychl´y test. Z grafu je patrno, ˇze u vˇetˇs´ıch hustot s´ıt´ı je n´ar˚ust ˇ

casu tak´e t´emˇeˇr exponenci´aln´ı, ovˇsem ˇcasov´a n´aroˇcnost je mnohon´asobnˇe niˇzˇs´ı, pˇri uˇzit´ı rychl´eho testu.

(39)

Obr´azek 28: ˇCas porovn´av´an´ı bez uˇzit´ı rychl´eho testu

Pˇri porovn´av´an´ı element˚u se zapnut´ym a vypnut´ym rychl´ym testem a pˇri r˚uzn´ych hus- tot´ach s´ıtˇe, bylo zjiˇstˇeno, ˇze porovn´an´ı 2595ti element˚u (parametry s´ıt´ı 0.4) bez vyuˇzit´ı rychl´eho testu trv´a stejnˇe dlouho (kolem 1370ms) jako porovn´an´ı 43536ti element˚u (para- metry s´ıt´ı 0.1) s vyuˇzit´ım rychl´eho testu. Na z´akladˇe tˇechto v´ysledk˚u je jasn´e, ˇze vyuˇzit´ı rychl´eho testu pˇri porovn´av´an´ı element˚u je z´asadn´ı pro urychlen´ı bˇehu programu a m´a i po- zitivn´ı vliv na jeho stabilitu, nebot’ nejsou ”zbyteˇcnˇe”porovn´av´any elementy, kter´e spolu nemohou m´ıt ˇz´adn´y pr˚unik. V dalˇs´ıch testech se tedy bude prov´adˇet porovn´av´an´ı element˚u pouze se zapnut´ym rychl´ym testem.

Obr´azek 29: ˇCas porovn´av´an´ı pˇri uˇzit´ı rychl´eho testu

(40)

Testy spoleˇcn´ych oblast´ı s´ıt´ı

Testov´an´ı dvou s´ıt´ı je zamˇeˇreno na zjiˇstˇen´ı vlivu velikosti pˇrekr´yvaj´ıc´ıch se oblast´ı obou s´ıt´ı. Porovn´an´ı je provedeno na dvojici s´ıt´ı, kter´e se pˇrekr´yvaj´ı v´ıce neˇz ze tˇr´ı ˇctvrtin a na dvojici, kter´a se nepˇrekr´yv´a ani jednou celou ˇctvrtinou. Oba zm´ınˇen´e pˇr´ıpady jsou zobrazeny na obr´azku 30.

Obr´azek 30: Oblast s velk´ym pˇrekryt´ım a oblast s mal´ym pˇrekryt´ım s´ıt´ı

U obou pˇr´ıpad˚u bylo testov´an´ı postupnˇe prov´adˇeno pro r˚uzn´e hustoty s´ıt´ı. Na z´akladˇe v´ysledk˚u z obr´azku 31 lze konstatovat, ˇze velikost pˇrekr´yvaj´ıc´ı se oblasti ovlivˇnuje rychlost porovn´av´an´ı pouze pro menˇs´ı hustoty s´ıt´ı. U hustˇs´ıch s´ıt´ı jsou ˇcasy porovn´av´an´ı t´emˇeˇr

Obr´azek 31: Vliv velikosti pˇrekr´yvaj´ıc´ıch se oblast´ı dvou s´ıt´ı

shodn´e, pˇrestoˇze poˇcet pr˚unik˚u je u s´ıtˇe s vˇetˇs´ım pˇrekryt´ım zhruba osmkr´at vˇetˇs´ı, neˇz u s´ıtˇe s menˇs´ım pˇrekryt´ım.

(41)

Testy rychlosti

Testov´an´ı rychlosti bylo provedeno na s´ıt´ıch r˚uzn´ych velikost´ı a s r˚uznou hustotou generov´an´ı s´ıtˇe (viz obr´azek 32). Nejmenˇs´ı vygenerovan´e s´ıtˇe obsahovali pouze nˇekolik element˚u, ale nejrozs´ahlejˇs´ı a nejhustˇs´ı s´ıt’ mˇela t´emˇeˇr sto tis´ıc element˚u. S´ıt’ tohoto rozsahu byla nejrozs´ahlejˇs´ı s´ıt’, kterou bylo moˇzn´e na testovac´ım PC zpracovat.

Obr´azek 32: Rychlost porovn´av´an´ı v r˚uzn´ych s´ıt´ıch

Kromˇe rozsahu a hustoty s´ıtˇe, m´a vliv na rychlost tak´e poˇcet ´useˇcek kˇr´ıˇz´ıc´ıch s´ıt’. Pˇr´ıpad kˇr´ıˇzen´ı pomoc´ı jedn´e, dvou a tˇr´ı ´useˇcek je zobrazen na obr´azku 33.

Obr´azek 33: S´ıt’ kˇr´ıˇz´ı jedna, dvˇe, tˇri ´useˇcky

V´ysledky pˇr´ıpadu kˇr´ıˇzen´ı s´ıtˇe pomoc´ı v´ıce ´useˇcek jsou shrnuty v obr´azku 34. R˚uzn´y poˇcet ´useˇcek nem´a z´asadn´ı vliv na poˇcet porovn´avan´ych element˚u nebo rychlost. Zp˚usobuje

(42)

pouze drobn´e zv´yˇsen´ı ˇcasov´e n´aroˇcnosti, kter´e odpov´ıd´a zv´yˇsen´ı poˇctu element˚u. Pˇri vyˇsˇs´ım poˇctu ´useˇcek se ovˇsem zvyˇsuje poˇcet pr˚unik˚u element˚u.

Obr´azek 34: Vliv poˇctu ´useˇcek na rychlost porovn´av´an´ı

(43)

Z´ avˇ er

C´ılem diplomov´e pr´ace bylo zanalyzovat moˇzn´e typy sousednost´ı vyskytuj´ıc´ıch se ve v´ypoˇcetn´ıch s´ıt´ıch, d´ale zpracovat rovnice pro jednotliv´e typy s´ıt´ı a implementovat v´ypoˇcetn´ı syst´em do projektu NGH a vytvoˇren´e texty ovˇeˇrit z hlediska funkce a rychlosti.

Vzhledem k absenci liter´arn´ıch zdroj˚u popisuj´ıc´ıch jednotliv´e pˇr´ıpady sousednost´ı z t´eto specifick´e oblasti, jsem musel vytvoˇrit znaˇcn´e mnoˇzstv´ı n´akres˚u (doplnˇen´e o v´ypoˇcty v ana- lytick´e geometrii), pro pochopen´ı vlivu vz´ajemn´ych poloh jednotliv´ych element˚u. Ty nejn´a- zornˇejˇs´ı n´akresy zobrazuj´ıc´ı jednotliv´e pˇr´ıpady sousednost´ı element˚u, jsou zahrnuty v di- plomov´e pr´aci. Jednotliv´e n´akresy jsem doplnil o rovnice popisuj´ıc´ı pr´aci s parametry (popisuj´ıc´ımi pr˚uniky element˚u) v r´amci sousednost´ı element˚u. Na z´akladˇe n´akres˚u jsem se rozhodl pro zpracov´an´ı ve 2D prostˇred´ı. Pr´ace tedy uvaˇzuje vz´ajemn´e vztahy element˚u

´

useˇcka a troj´uheln´ık ve 2D prostˇred´ı.

V ˇc´asti implementace jsem zapracoval ´uvahy (z teoretick´e ˇc´asti) a postupy v´ypoˇctu do jednotliv´ych kompar´ator˚u, slouˇz´ıc´ıch pro porovn´av´an´ı jednotliv´ych typ˚u element˚u. D´ale jsem implementoval algoritmus rychl´y test, kter´y slouˇz´ı k vylouˇcen´ı porovn´av´an´ı element˚u, kter´e spolu nemohou m´ıt ˇz´adn´y spoleˇcn´y pr˚unik.

V´ystupem z programu NGH je soubor Parameter.ngh, kter´y obsahuje oznaˇcen´ı vz´ajemnˇe porovn´avan´ych element˚u, ˇc´ısla hran element˚u, kter´e spolu maj´ı nˇejakou interakci, hodnoty parametr˚u popisuj´ıc´ı vzd´alenosti pr˚unik˚u a souˇradnice jednotliv´ych pr˚unik˚u element˚u.

Pˇri testov´an´ı programu NGH jsem si nejprve ovˇeˇril funkˇcnost v´ypoˇctu porovn´an´ım vstupn´ı s´ıtˇe a v´ystupn´ıho souboru. D´ale jsem provedl srovn´an´ı ˇcasu potˇrebn´eho pro po- rovn´an´ı element˚u pˇri vyuˇzit´ı algoritmu rychl´y test a bez nˇeho. Pro s´ıtˇe obsahuj´ıc´ı velk´y poˇcet element˚u, coˇz je i pˇr´ıpad bedˇrichovsk´eho tunelu, je uˇzit´ı rychl´eho testu naprosto nezbytn´e.

Tato diplomov´a prace je z´akladem pro dalˇs´ı ˇreˇsen´ı ´uloh zab´yvaj´ıc´ı se sousednost´ı ele- ment˚u. Jako dalˇs´ı moˇzn´y zp˚usob, jak nav´azat na tuto diplomovou pr´aci, je rozˇs´ıˇren´ı prostˇred´ı na 3D a zahrnut´ı trojrozmˇern´ych element˚u do programu.

(44)

Literatura

[1] ECKEL, B.: Mysl´ıme v jazyku C++, Grada Publishing, Praha, 2006, ISBN 80-247- 1015-3.

[2] GAMMA, E.: Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Weasley, 2006, ISBN 02-0016-3361-2.

[3] GMSH: a three-dimensional finite element mesh generator with built-in-pre-and post- processing facilities. 2010. Str´anky s dokumentac´ı softwaru GMSH. Editov´ano 2013- 05-11. URL: http://geuz.org/gmsh/.

[4] FLOW123D, version 1.7. Str´anky s dokumentac´ı softwaru FLOW123D. Editov´ano 2013-04-02. URL: http://dev.nti.tul.cz/trac/flow123d.

[5] MARYˇSKA, J. - KR ´ALOVCOV ´A, J. - HOKR, M. - ˇSEMBERA, J. 2010. Modelov´an´ı transportn´ıch proces˚u v horninov´em prostˇred´ı. 1. vyd´an´ı. Liberec: Technick´a univer- zita v Liberci. ISBN 978-80-7372-571-6.

[6] LIBERTY, J: Nauˇcte se C++ za 21dn´ı. Computer Press, Praha, 2002. ISBN 80-7226- 774-4.

[7] KR ´ALOVCOV ´A, J. - MARYˇSKA, J. - KOPAL, J. - C´ISA ˇROV ´A, K. 2009, TUL.

V´ypoˇcet sc´en´aˇr˚u v´yvoje migrace vybran´ych radionuklid˚u.

[8] DOST ´ALOV ´A, M. - GARDAVSK ´A, E. - HAM ˇR´IKOV ´A, R. - JANK˚U, V. - TAN- NENBERGOV ´A, M. 2006, Z´aklady matematiky (Projekt ESF). Vysok´a ˇskola b´aˇnsk´a - Technick´a Univerzita Ostrava. ISBN 978-80-248-1295-3.

[9] SKLENICKA, P.: C++ ˇsablony: Linux Software [online]. Publikov´ano: 1.2. 2011. Edi- tov´ano 2011-02-02. URL: http://www.linuxsoft.cz/article.php?id article=1792.

(45)

A Kompletn´ı v´ ypoˇ cet parametr˚ u

p : x = Ax+ ax∗ t y = Ay + ay∗ t q : x = Cx+ bx∗ s y = Cy+ by ∗ s

− − − − − − − − − − − − − − − − −−

Ax+ ax∗ t = Cx+ bx∗ s Ay+ ay ∗ t = Cy + by∗ s

− − − − − − − − − − − − − − − − −−

ax∗ t + bx∗ s = Cx− Ax ay∗ t + by∗ s = Cy − Ay

ax∗ t + bx∗ s = cx ay∗ t + by ∗ s = cy

− − − − − − − − − − − − − − − − −−

t = cy− (by∗ s)

ay t = cx− (bx∗ s) ax cy − (by∗ s)

ay

= cx− (bx∗ s) ax

− − − − − − − − − − − − − − − − −−

ay ∗ (cx− (bx∗ s) = ax∗ (cy− (by∗ s) (ay ∗ cx) − (ay∗ bx∗ s) = (ax∗ cy) − (ax∗ by ∗ s) (ay ∗ cx) − (ax∗ cy) = (ay ∗ bx∗ s) − (ax∗ by ∗ s) (ay∗ cx) − (ax∗ cy) = s ∗ ((ay ∗ bx) − (ax∗ by))

− − − − − − − − − − − − − − − − −−

t = (cy ∗ bx) − (cx∗ by)

(ay ∗ bx) − (ax∗ by) s = (ay ∗ cx) − (ax∗ cy) (ay∗ bx) − (ax∗ by)

− − − − − − − − − − − − − − − − −−

(46)

B Vliv parametru na hustotu generovan´ e s´ıtˇ e

Obr´azek 35: S´ıt’ vygenerovan´a s parametrem hustoty s´ıtˇe 1.0

(47)

C V´ ystupn´ı soubor pro funkci testov´ an´ı

$Parameter.ngh

$Element1 Side Parameter | Element2 Side Parameter | Px Py 1 0 0.576923 | 8 1 0.192308 | 0.384615 4.29886e-17

2 0 0.528037 | 6 0 0.803738 | 1.01869 1.06324 2 0 0.630435 | 8 2 0.913043 | 1.08696 0.913043 2 0 0.630435 | 11 2 0.0869565 | 1.08696 0.913043 3 0 0.0625 | 4 0 0.6875 | 1.375 1.82917

3 0 0.5 | 9 0 0.666667 | 1.66667 1.66667 3 0 0.884615 | 9 1 0.0384615 | 1.92308 2 3 0 0.5 | 11 1 0.333333 | 1.66667 1.66667 4 0 0.833333 | 9 0 0.2 | 1.2 1.2

4 0 0.166667 | 11 0 0.8 | 2 1.6 4 0 0.833333 | 11 1 0.8 | 1.2 1.2

5 0 0.0471698 | 7 0 0.0188679 | 0.943396 1.08868 5 0 0.0555556 | 9 2 0.933333 | 0.933333 1.06667 5 0 0.833333 | 10 0 0.7 | -7.37257e-18 0.6

5 0 0.0555556 | 10 2 0.0666667 | 0.933333 1.06667 6 0 0.933333 | 8 0 0.0266667 | 0.973333 0.973333 6 0 0.0869565 | 8 1 0.634783 | 1.26957 5.14996e-19 6 0 0.933333 | 10 1 0.973333 | 0.973333 0.973333 7 0 0.826087 | 9 1 0.669565 | 0.66087 2

$EndElements-Sides-Parameters

References

Related documents

Bylo by tak´ e vhodn´ e, vyrobit nanovl´ akenn´ y filtr s niˇ zˇs´ım tlakov´ ym sp´ adem (ide´ alnˇ e stejn´ ym, jako maj´ı komerˇ cn´ı c´ıvky) a zjistit jeho ´

Prostˇred´ı robotu je zn´amo a je reprezentov´ano pomoc´ı geometrick´e mapy. Dan´a mapa m˚ uˇze b´ yt zachycena pr˚ ujezdem robotu v prostˇred´ı na z´akladˇe pokyn˚

Nicm´ enˇ e v t´ eto pr´ aci byla vyuˇ zita pouze jej´ı element´ arn´ı funkˇ cnost, tedy zazn´ amen´ av´ an´ı pohybu prstu po vymezen´ em prostoru bez moˇ znosti

Pr´ ace navazuj´ıc´ı na tuto by se mohly zab´ yvat vlivem r˚ uzn´ ych pˇredpomiˇ novaˇ c˚ u na ˇ casovou n´ aroˇ cnost ˇreˇsen´ı pˇri pouˇ zit´ı monolitick´

Indukovan´e v´ıˇriv´e proudy ve vodiˇci bud´ı vnitˇrn´ı magnetick´e pole. Podle Lencova pravidla je toto pole orientov´ano tak, ˇze p˚ usob´ı proti vnˇejˇs´ımu poli

Cílem diplomové práce je zvážit možnosti řešení kolizí v aplikaci IREView Blender a vytvořit vhodnou metodu, schopnou detekce kolizí mezi objekty IRE zářičů a

Studijn´ı program: N2612 – Elektrotechnika a informatika Studijn´ı obor: 1802T007 – Informaˇ cn´ı technologie Autor pr´ ace: Bc.. Daniel

Z´ akladn´ım pˇredpokladem pro dosaˇ zen´ı hmatateln´ eho v´ ystupu t´ eto bakal´ aˇrsk´ e pr´ ace bylo namˇ eˇren´ı impulsn´ıch odezev v urˇ cit´ em prostoru.