vizualizace prask´an´ı a rozlamov´an´ı objekt˚umartin kafka vedouc´ı diplomov´e pr´ace...
TRANSCRIPT
CESKE VYSOKE UCENI TECHNICKE
FAKULTA ELEKTROTECHNICKA
Vizualizace praskanı a
rozlamovanı objektu
Martin Kafka
Vedoucı diplomove prace Ing. Jaroslav Sloup
Katedra pocıtacu
Rok obhajoby 2004
Zadanı diplomove prace
Skolnı rok 2003/2004
Diplomant: Martin Kafka
Obor: Vypocetnı technika
Nazev tematu: Vizualizace praskanı a rozlamovanı objektu
Visual simulation of breaking and cracking objects
Zasady pro zpracovanı:
Vyznamnou oblast pocıtacove grafiky tvorı metody realisticke syntezy obrazu. Do teto ka-
tegorie patrı i techniky pro vizualizaci a simulaci deformacı objektu vznikajıcıch praska-
nım a rozlamovanım. Proved’te resersi literatury pojednavajı o teto problematice z hlediska
pocıtacove grafiky a mechaniky. Pozornost venujte zejmena metode popsane v disertacnı praci
Jamese F. O-Briena (doda vedoucı diplomove prace) a na jejım zaklade vytvorte aplikaci,
ktera umoznı simulovat praskanı a rozlamovanı objektu zpusobene deformacemi materialu.
Funkcnost aplikace overte alespon na trech ruznych modelech objektu.
Vedoucı diplomove prace: Ing. Jaroslav Sloup
Oponent: Ing. Roman Berka, Ph.D.
i
Cestne prohlasenı
Prohlasuji, ze jsem svou diplomovou praci vypracoval samostatne a pouzil jsem pouze pod-
klady uvedene v prilozenem seznamu.
Nemam zavazny duvod proti uzitı tohoto skolnıho dıla ve smyslu §60 Zakona c.121/2000
Sb., o pravu autorskem, o pravech souvisejıcıch s pravem autorskym a o zmene nekterych
zakonu (autorsky zakon).
V Praze dne 26. kvetna 2004
..................................
podpis
ii
Abstrakt
Cılem teto prace je vytvorit prehled ruznych metod pouzıvanych pri simulaci a vizualizaci
praskanı a rozlamovanı objektu. Prozkoumame tri diametralne odlisne metody a zjistıme je-
jich vyhody a nevyhody. Prvnı metoda se k problemu snazı pristupovat ciste fyzikalne a z toho
plyne vetsı slozitost teto metody. Druha metoda pouzıva prıstup zjednoduseny. Reprezentuje
simulovany objekt jako mnozinu tezist’ spojenych omezujıcımi podmınkami. Nevyhoda je, ze
nepocıta deformace a proto se hodı jen pro urcitou cast materialu. Tretı metoda je uzce specia-
lizovana, a to na praskanı povrchu (naprıklad vysychanı bahna). Tato specializace umoznuje
velkou rychlost vypoctu. Nemalou castı teto prace je implementace prvnı metody simulace.
Cast textu je tedy venovana popisu teto implementace. Take budou zmıneny problemy, ktere
pri implementaci nastaly.
Abstract
The aim of this thesis is to make overview of various methods for visual simulation of
breaking and cracking of object. There will be examined and described three different methods
and their advantages and disadvantages. First method is based on physical principes. This
approach makes this method more general and more complex. Second method represents
object to be broken as set of point masses connected by distance-preserving linear constraint.
In this method, there are not computed deformations, thus, this limits suitable materials to
brittle ones. Last method is specialized for cracking of surface of objects, such as drying of
mud. This allow great speed of simulation. Indispensable part of this work is implementation
of first method of simulation. Whole application is described in part of text. There will be
discussed some problems of implementation.
Obsah
Zadanı diplomove prace i
Cestne prohlasenı ii
Abstrakt iii
1 Uvod 1
2 Fyzikalnı principy 2
2.1 Teleso a material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Geometricke rovnice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 Staticke rovnice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.1 Podmınky rovnovahy na elementarnım ctyrstenu . . . . . . . . . . . . 7
2.3.2 Podmınky rovnovahy na elementarnım kvadru . . . . . . . . . . . . . 8
2.4 Vztah mezi napetım a deformacı . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.1 Matematicky popis fyzikalnıch vlastnostı latky . . . . . . . . . . . . . 13
2.4.2 Obecny Hookuv zakon . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5 Porusenı souvislosti materialu . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.1 Separacnı tenzor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3 Metody simulace 22
3.1 Sıt’ ctyrstenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.1 Souradne systemy modelu . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.2 Tenzory deformace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.3 Tenzory napetı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1.4 Diskretizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.1.5 Koliznı sıly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.1.6 Dekompozice sil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.1.7 Pretvorenı sıte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
iv
Obsah Obsah
3.1.8 Rychlost sırenı praskliny . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2 Sıt’ spojenych elementu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.1 Vypocet prasklin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.2 Vypocet rychlostı a pozic . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3 Praskanı povrchu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.3.1 Inicializace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.3.2 Vypocetnı smycka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4 Popis implementace 45
4.1 Hlavnı cast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.1.1 Inicializace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.1.2 Hlavnı smycka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.1.3 Konfigurace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.1.4 Materialovy soubor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.1.5 Ostatnı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2 Obsluha modelu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2.1 Nacıtanı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.2.2 Binarnı strom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.2.3 Koliznı sıly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.3 Vypocetnı jadro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3.1 Vytvorenı praskliny . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.4 Matematicka knihovna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5 Zhodnocenı a zaver 56
5.1 Metody simulace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.1.1 Sıt’ ctyrstenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.1.2 Sıt’ spojenych elementu . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.1.3 Praskanı povrchu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2 Implementace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
A Prıklad vysledku 63
B CD-ROM 66
B.1 Dokumentace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
B.2 Zdrojove kody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
B.3 Vystupy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
B.4 Obrazky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
v
Obsah Obsah
B.5 Licence a autorska prava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Literatura 68
vi
Seznam obrazku
2.1 Element telesa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Deformace elementarnıho kvadru . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Znazornenı vztahu vnitrnıch a vnejsıch sil . . . . . . . . . . . . . . . . . . . . 5
2.4 Rozklad napetı na tecnou a normalovou slozku . . . . . . . . . . . . . . . . . 6
2.5 Napetı na ctyrstenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.6 Napetı na kvadru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.7 Momenty na kvadru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.8 Zavislost σ na ε . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.9 Linearnı a nelinearnı material . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.10 Element zatızeneho prutu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.11 Tri mozne kombinace sil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.12 Tlakova a tahova slozka sıly . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1 Materialove souradnice objektu . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2 Znazornenı deformacnıch tenzoru . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.3 Vlastnosti uzlu ctyrstenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4 Delenı elementu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.5 Delenı sousednıch elementu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.6 Rezidualnı propagace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.7 Spojenı elementu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.8 Vrstvy modelu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.9 Typy pruzin ve vrstvach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.10 Deformace elementu tahem ci tlakem . . . . . . . . . . . . . . . . . . . . . . . 42
3.11 Deformace elementu smykem . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.12 Topologie sıte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.1 Prekryvanı obalek uzlu stromu . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.2 Prubeh orezavanı mnohostenu . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
vii
Kapitola 1
Uvod
Pocıtacova grafika se v poslednı dobe rozvıjı zavratnym tempem. Umoznujı to zejmena vyspele
graficke akceleratory a vykonny hardware dnesnıch pocıtacu. Pocıtacova grafika nachazı upla-
tnenı skoro ve vsech odvetvıch prumyslu. Naprıklad vystupy programu pro stavebnı inzenyry
uz nejsou jen cısla, ale i pusobive animace, filmovı producenti uz nemusejı stavet drahe ku-
lisy, ale nechajı si film zhotovit na pocıtacıch. Na pocıtacıch uz lze velmi dobre produkovat
zobrazenı realnych i nerealnych procesu.
Vizualizacı prırodnıch jevu se zabyvajı metody realisticke syntezy obrazu. Mezi tyto tech-
niky patrı vizualizace a simulace deformacı objektu vznikajıcıch praskanım a rozlamovanım.
Moznostı, jak realizovat deformace a praskliny objektu, je nekolik. Lisı se od sebe kvalitou
vystupu a s tım souvisejıcı slozitostı vypoctu.
Jednak je zde moznost fyzikalne pocıtat deformace. Tato metoda ovsem nenı vhodna pro
resenı na pocıtacıch uz kvuli tomu, ze tato metoda hojne pouzıva takove pojmy jako integrace
nebo diferencial, tedy takove pojmy, ktere pocıtacum vubec nesedı. Lepsı vlastnosti majı
metody zalozene na metodach konecnych prvku (FEM ). Tyto metody jsou hojne vyuzıvany.
Umoznujı totiz spocıtat deformace relativne presne a pritom pomerne rychle. Dalsı metodou
je pouzitı pruzin simulujıcıch vazby mezi jednotlivymi elementy. Tyto metody ovsem nejsou
zdaleka tak kvalitnı jako predchozı metody. Kazda metoda se tedy hodı pro jine ucely.
V nasledujıcım textu se nejdrıve budeme snazit proniknou do vypoctu deformacı a vzniku
prasklin. Pak si popıseme tri odlisne metody pro simulaci praskanı. Jednak to bude metoda
O’Briena, ktera se snazı simulovat praskliny podle fyzikalnıch principu, druha metoda nenı
zalozena na fyzikalnıch vztazıch, ale simuluje trojrozmerne praskliny. Poslednı metoda je
specializovana na simulaci povrachovych prasklin, jako je treba vysychanı bahna. Soucastı
teto prace je implementace O’Brienovy metody simulace. Jejı popis najdeme v kapitole 4.
1
Kapitola 2
Fyzikalnı principy
Nejprve bude vhodne si vysvetlit, jak vubec deformace a nasledne i praskliny vznikajı. Po-
pis techto zalezitostı totiz zkoumane prace neobsahujı. Mozna z duvodu, ze jde o pomerne
znamou latku a s tımto tematem by mel byt (alespon ramcove) seznamen kazdy z predmetu
fyziky a podobnych. Presto se tomuto tematu budeme venovat, protoze potrebna znalost
presahuje ramec zakladnıch znalostı a tyto znalosti budeme potrebovat k pochopenı funkce
ve zkoumanych pracıch.
2.1 Teleso a material
Vypoctem deformacı se zabyva cast fyziky, ktera se nazyva mechanika teles. Mechanika teles
se zabyva studiem pusobenı vnejsı vlivu na telesa. Vnejsı vlivy mohou byt naprıklad sıly,
teplota, chemicke reakce, nebo elektricke sıly. Prıkladem sıly muze byt naprıklad gravitacnı
sıla, elektromagneticke sıly, nebo mechanicke sıly.
Dulezitou vlastnostı telesa je jeho material. Material je vlastne soubor mikroskopickych
castecek spojenych vnitrnımi silami. Temto casteckam se rıka atomy. Pro nase ucely je vsak
dobre predpokladat pohled na material z makroskopickeho hlediska. Tedy, ze material je
spojite medium, ve kterem se vliv jednotlivych atomu neprojevı. Podle prostorovych vlastnostı
mohou byt materialy homogennı, heterogennı a izotropnı. Homogennı material ma ve vsech
bodech prostoru stejne vlastnosti. Heterogennı material je pravym opakem homogennıho.
Material je obvykle slozen z nekolika nesourodych substancı. Prıkladem je treba beton, ktery
je slozen zejmena z cementu a sterku a tyto dve slozky vytvarejı nespojitou hmotu. Izotropnı
material je takovy material, ktery ma vlastnosti v bodu ve vsech smerech stejne.
2
Kapitola 2. Fyzikalnı principy 2.2. Geometricke rovnice
�
�
�
dw
h
Teleso
Obrazek 2.1: Element telesa
2.2 Geometricke rovnice
Vezmeme nejake teleso, ktere je vytvoreno z nejakeho konkretnıho materialu. Tento objekt po-
stupne zatezujeme nejakou vnejsı silou. Na objektu pote muzeme pozorovat, jak se deformuje.
Vezmeme elementarnı kvadr tohoto telesa, viz. obr 2.1. Pro deformaci telesa jsou charakteris-
ticke dva zakladnı deformacnı modely. Pri prvnım deformacnım modelu predpokladame, ze se
menı pouze delkove parametry kvadru. Uhly mezi stenami kvadru zustavajı zachovany. Tento
model se uplatnuje zejmena pri deformaci pod tlakem, ci tahem. Druhy deformacnı model
naopak predpoklada, ze se menı vzajemne uhly mezi stenami, ale delky hran zustavajı stejne.
Tato situace nastava pri namahanı smykem.
Pro vypocet je vhodne zavest relativnı zmeny rozmeru a uhlu. Deformace tahem ci tlakem
se tyka pouze delek hran. Proto je vyhodne zavest relativnı zmeny delek εx, εy a εz. Na
obrazku 2.2(a) je rez elementarnım kvadrem v rovine xy a vycteme z nej, jak tyto promenne
definujeme. Obrazek vyjadruje posun a deformaci elementarnıho kvadru o velikostech ∆x a
∆y. Pritom predpokladame, ze se kvadr posunuje a deformuje pouze v ose x. Vznikly posun
v bodu vyjadruje funkce u(x, y, z). Relativnı zmenu delky hrany ∆x vyjadrıme s ohledem na
infinitesimalnı rozmery kvadru jako
εx = lim∆x→0
∆u∆x
= lim∆x→0
u(x+ ∆x, y, z)− u(x, y, z)∆x
=∂u
∂x. (2.1)
Obdobne vzorce popisujı deformace ve smerech y a z. Zıskame je analogickym postupem,
cyklickou zamenou indexu (x→ y → z → x a u→ v → w → u, apod.)
εy =∂v
∂yεz =
∂w
∂z. (2.2)
Na obrazku 2.2(b) je vyznacena uhlova deformace γxy. Ta se vypocıta jako soucet deformacı
3
Kapitola 2. Fyzikalnı principy 2.2. Geometricke rovnice
y
x
∆x
∆y
u(x, y, z) u(x+ ∆x, y, z)
(a) Deformace v tahu
y
x
∆x
∆y
u(x, y + ∆y, z)
u(x, y, z) γ2
v(x
+∆x,y,z)
γ1
v(x,y,z)
(b) Deformace ve smyku
Obrazek 2.2: Deformace elementarnıho kvadru
γ1 a γ2. Pak muzeme videt, ze
γ1 = lim∆x→0
∆v∆x
= lim∆x→0
v(x+ ∆x, y, z)− v(x, y, z)∆x
=∂v
∂x
γ2 = lim∆y→0
∆u∆y
= lim∆y→0
u(x, y + ∆y, z)− u(x, y, z)∆y
=∂u
∂y
γxy = γ1 + γ2 =∂v
∂y+∂u
∂x= γyx . (2.3)
Uhlove deformace ve dvou zbyvajıcıch rovinach zıskame opet cyklickou zamenou indexu.
Vychazejı tedy
γyz =∂w
∂y+∂v
∂z= γzy, γzx =
∂u
∂z+∂w
∂x= γxz . (2.4)
Tyto rovnice se nazyvajı geometricke rovnice. Slozky deformace lze usporadat do ctvercove
matice
ε =
εx
12γyx
12γzx
12γxy εy
12γzy
12γxz
12γyz εz
. (2.5)
Lze ukazat, ze pri ortogonalnı transformaci souradnic se matice deformace ε transformuje
podle vzorcu
ε′ = T · ε ·T′ a ε = T′ · ε′ ·T , (2.6)
tedy jako symetricky tenzor deformace druheho radu.
Ze trı posunu u, v a w popsanych spojitymi a spojite diferencovatelnymi funkcemi lze jed-
noznacne vypocıtat slozky deformace. Opacne formulovana uloha, tedy ze sesti nezavislych
4
Kapitola 2. Fyzikalnı principy 2.3. Staticke rovnice
∆A
~n
∆~F
−∆~F
vnitrnı cast
vnejsı cast
Obrazek 2.3: Znazornenı vztahu vnitrnıch a vnejsıch sil
slozek tenzoru deformace vypocıtat integracı tri posuny, nemusı mıt vubec resenı. K jedno-
znacnemu resenı je treba, aby byly splneny doplnujıcı podmınky vyjadrene derivacemi slozek
deformace, tzv. St. Venantovy rovnice kompatibility. Sest rovnic kompatibility lze odvodit
vyloucenım posunu z geometrickych rovnic.
2.3 Staticke rovnice
Nynı budeme hledat obecne podmınky, ktere je treba splnit, aby libovolna castice telesa
byla v rovnovaze. K sestavenı podmınek rovnovahy v okolı vnitrnıho bodu opet poslouzı
kvadr. Zıskame soustavu trı diferencialnıch rovnic, ktere se nazyvajı Cauchyho staticke rov-
nice. Podmınky rovnovahy v malem okolı hranicnıho bodu tvorı soustavu linearnıch alge-
braickych rovnic a pri jejich odvozenı vyjdeme z elementarnıho ctyrstenu.
V podmınkach rovnovahy se uplatnı dva druhy sil. Vnejsı sıly majı charakter zatızenı.
Pusobı bud’ na hmotu telesa, jako tzv. objemove sıly nebo jsou plosne rozdelene po povr-
chu telesa a nazyvajı se plosne. Prıkladem objemovych sil jsou v prve rade sıly gravitacnı,
setrvacne, elektricke, nebo magneticke. Vztahujeme je k jednotce objemu telesa, a proto majı
rozmer N/m3. Podobne plosne sıly majı rozmer N/m2 a liniove sıly N/m. Osamele pusobıcı
sıla se v prırode prakticky nevyskytuje. Obvykle je zavadıme jako limitnı prıpad limitnı prıpad
vyslednice sil, ktere jsou soustredeny na velmi male plose. Vnitrnı sıly pusobı plosne mezi
jednotlivymi casticemi a branı jejich vzajemnemu oddelenı.
Abychom mohli ukazat uzkou souvislost mezi vnejsımi a vnitrnımi silami, rozdelıme teleso
myslenym rezem na dve casti. Vnejsı cast pusobı na vnitrnı silami, jejichz vyslednice na
plosce ∆A oznacıme ∆~F. Podle Newtonova zakona akce a reakce pusobı vnitrnı cast na sve
okolı stejne velkou silou avsak opacneho smeru, tedy −∆~F. Cela situace je na obrazku 2.3.
V obou prıpadech se jedna o vnitrnı sıly, ktere zajist’ujı souvislost telesa podel mysleneho rezu.
Predstavme si dale, ze jsme vnitrnı cast vyjmuli. V takovem prıpade musıme nahradit silovy
5
Kapitola 2. Fyzikalnı principy 2.3. Staticke rovnice
~σ
∆A
τ ~tσ ~n
Obrazek 2.4: Rozklad napetı na tecnou a normalovou slozku
ucinek obklopujıcı prostredı zatızenım ∆~F/∆A, ktere muzeme povazovat za vnejsı povrchovou
sılu na hranici vyjmute casti.
Dıky tomu, ze si predstavujeme material telesa jako kontinuum, muzeme rozmery plosky
zmensovat do nekonecna. Tak dojdeme k definici vektoru napetı v bode, ktery je definovan
vzorcem
~σ = lim∆A→0
∆~F∆A
[Nm2
]. (2.7)
Vektorem ~σ a normalou ~n k plosce ∆A je urcena rovina. Zaved’me tecny vektor ~t ke krivce,
ktera je prusecnicı teto roviny s povrchem ∆A. Pri teto uvaze nebudeme rozlisovat povrch
mysleneho rezu od skutecneho hranicnıho povrchu telesa. Budou-li vektory ~n a ~t jednotkove,
muzeme vektor napetı vyjadrit podle obrazku 2.4 takto
~σ = σ~n + τ~t , (2.8)
kde σ je normalova a τ tecna neboli smykova slozka vektoru napetı.
Dalsı moznostı, jak vyjadrit vektor napetı, je vyjadrit slozky px, py a pz jako prumety
vektoru ~σ do smeru souradnicovych os
~σ = px~e1 + py~e2 + pz~e3 = ~p , (2.9)
kde ~e1, ~e2 a ~e3 jsou bazove vektory lokalnıho souradnicoveho systemu. Ve zvlastnım prıpade,
kdy je normala k povrchu telesa rovna jednomu bazovemu vektoru, naprıklad kdyz ~n = ~e1, pak
slozka px = σx je normalovym napetım a zbyvajıcı dve slozky py = τxy a pz = τxz predstavujı
tecna smykova napetı. Oznacenı smykovych napetı dvema indexy je dano nasledujıcı umluvou.
Prvnı index ukazuje smer vnejsı normaly, druhy znacı smer napetı. Obdobne relace muzeme
sestavit i pro zbyvajıcı dva smery.
6
Kapitola 2. Fyzikalnı principy 2.3. Staticke rovnice
y
z
x
∆A
N2
N3
N1
τxy
τyx
τzy
τzx
px
~ppy
pzτxz
σx
σz
τyz
σyQ
Obrazek 2.5: Napetı na ctyrstenu
2.3.1 Podmınky rovnovahy na elementarnım ctyrstenu
Uvazujme elementarnı ctyrsten na obrazku 2.5. Na plosku urcenou body N1, N2 a N3 pusobı
vektor napetı ~σ. Jestlize ∆A bude castı hranicnı plochy telesa (v limite ∆x → ∆y → 0
prejde bod Q na hranici), vektor napetı ~σ se ztotoznı s vektorem vnejsıch povrchovych sil ~p.
Dulezitou zavislost mezi devıti slozkami a tremi slozkami vektoru hranicnıho zatızenı v bode Q
odvodıme z podmınek rovnovahy sil pusobıcıch na elementarnı ctyrsten ve smeru os souradnic.
Plosky ∆A1(Q,N2,N3), ∆A2(Q,N1,N3), ∆A3(Q,N1,N2) jsou prumety roviny ∆A do ro-
vin yz, xz a xy a proto
∆A1 = ∆A · nx ∆A2 = ∆A · ny ∆A3 = ∆A · nz , (2.10)
kde nx, ny a nz jsou slozky jednotkoveho vektoru vnejsı normaly k ∆A a jsou urceny kosiny
uhlu, ktere svıra normala s osami souradnic (nx = ~n · ~x, ny = ~n · ~y, nz = ~n · ~z). Podmınka
rovnovahy sil v ose x je
px ·∆A− σx ·∆A1 − τyx ·∆A2 − τzx ·∆A3 = 0 . (2.11)
Dosadıme-li vztahy z rovnice (2.10) do rovnice (2.11), rovnovahova podmınka nabude, po
vynasobenı cinitelem 1/∆A, tvaru
px = σxnx + τyxny + τzxnz . (2.12)
7
Kapitola 2. Fyzikalnı principy 2.3. Staticke rovnice
Zbyvajıcı dve podmınky rovnovahy obdrzıme cyklickou zamenou indexu.
py = τxynx + σyny + τzynz (2.13)
pz = τxznx + τyzny + σznz . (2.14)
Pokud se blıze podıvame na rovnice (2.12), (2.13) a (2.14), uvidıme, ze je lze jednoduse
prepsat do maticoveho zapisu. Tedy, ze
~p = σ~n , (2.15)
kde
σ =
σx τyx τzx
τxy σy τzy
τxz τyz σz
. (2.16)
Pri ortogonalnı transformaci souradnic nabude rovnice (2.15) tvaru
~p′ = σ′~n′ . (2.17)
Pretransformujeme-li vektory ~p′ a ~n′, zjistıme, ze matice σ se transformuje podle vztahu
σ′ = TσTT σ = TTσ′T , (2.18)
tedy jako symetricky tenzor druheho radu.
2.3.2 Podmınky rovnovahy na elementarnım kvadru
Staticke rovnice majı v analyze napjatosti telesa podobny vyznam jako geometricke rovnice
pro analyzu stavu deformace. Jestlize geometricke rovnice byly odvozeny za predpokladu, ze
v telese se menı spojite slozky posunu, pri odvozenı statickych rovnic musıme uvazit spojite
zmeny ve slozkach napetı. Na elementarnı kvadr Q M1 M2 M3 na obrazku 2.6 pusobı zbyvajıcı
cast telesa elementarnımi silami. Podobne jako v predchozım odstavci je i zde predpoklad,
ze slozky napetı (s ohledem na infinitesimalnı rozmery kvadru) v ramci teze steny nemenı.
To vsem znamena, ze na ploskach QM2 M3, QM3 M1 a QM1 M2, ktere jsou mimochodem
zaporne, jsou slozky napetı urceny svymi hodnotami v bode Q. Budou-li souradnice tohoto
bodu (x, y, z), muzeme pro plosku QM2 M3 psat
σx = σx(x, y, z) τxy = τxy(x, y, z) τxz = τxz(x, y, z) ,
pro plosku QM3 M1 analogicky
σy = σy(x, y, z) τyz = τyz(x, y, z) τyx = τyx(x, y, z) ,
8
Kapitola 2. Fyzikalnı principy 2.3. Staticke rovnice
y
z
x
σy
σ′x
σ′y
σx
σ′z
σz
τ ′zy
τ ′zx
τxz
τxy
τ ′yz
τ ′yx
τ ′xz
τ ′xy
τzxτzy
τyz
τyx
∆z
∆x
∆y
Q
M3
M2
M1
Obrazek 2.6: Napetı na kvadru
a konecne pro plosku Q M1 M2
σz = σz(x, y, z) τzx = τzx(x, y, z) τzy = τzy(x, y, z) .
Jestlize posuneme stenu QM2 M3 paralelne do bodu M1, zmenı se souradnice x o ∆x,
takze slozky napetı (na kladne plosce) budou
σ′x = σx(x+ ∆x, y, z) τ ′xy = τxy(x+ ∆x, y, z) τ ′xz = τxz(x+ ∆x, y, z) ,
a analogicky na zbyvajıcıch ploskach posunutych o ∆y, resp. ∆z
σ′y = σy(x, y + ∆y, z) τ ′yz = τyz(x, y + ∆y, z) τ ′yx = τyx(x, y + ∆y, z),
σ′z = σz(x, y, z + ∆z) τ ′zx = τzx(x, y, z + ∆z) τ ′zy = τzy(x, y, z + ∆z) .
Carkou je vyznacena zmena polohy. Vedle povrchovych sil, zıskanych jako soucin velikosti
prıslusne elementarnı plosky a prıslusne slozky napetı, pusobı na elementarnı kvadr v jeho
tezisti jeste objemova sıla, kterou pro tuto chvıli oznacıme ~F a jejız slozky ve smerech os x,
y a z oznacıme Fx, Fy a Fz.
Rovnovazna soustava vsech sil pusobıcıch na kvadr na obrazku 2.6 musı splnovat sest
skalarnıch podmınek rovnovahy. Tri podmınky silove a tri momentove. Silove podmınky rov-
novahy se nazyvajı Cauchyho rovnice. Podmınku rovnovahy sil pusobıcıch ve smeru osy x
sestavıme (po uprave) ve tvaru
(σ′x − σx) ∆y∆z + (τ ′yx − τyx) ∆x∆z + (τ ′zx − τzx) ∆x∆y + Fx ∆x∆y∆z = 0
9
Kapitola 2. Fyzikalnı principy 2.3. Staticke rovnice
Po vydelenı teto rovnice objemem ∆x∆y∆z prejdeme k limite (∆x→ ∆y → ∆z → 0)
lim∆x→0
σx(x+ ∆x, y, z)− σx(x, y, z)∆x
+ lim∆y→0
σy(x, y + ∆y, z)− σy(x, y, z)∆y
+
+ lim∆z→0
σz(x, y, z + ∆z)− σz(x, y, z)∆z
+ Fx = 0 .
Z teto rovnice tedy dostaneme prvnı ze silovych podmınek rovnovahy
∂σx
∂x+∂τyx
∂y+∂τzx
∂z+ Fx = 0 . (2.19)
Zbyvajıcı dve podmınky dostaneme opet cyklickou zamenou indexu
∂τxy
∂x+∂σy
∂y+∂τzy
∂z+ Fy = 0 (2.20)
∂τxz
∂x+∂τyz
∂y+∂σz
∂z+ Fz = 0 . (2.21)
Nynı snadno odvodıme vektorovy zapis uvedenych rovnic
∂~σ1
∂x+∂~σ2
∂y+∂~σ3
∂z+ ~F = 0 . (2.22)
Dalsı tri podmınky rovnovahy jsou momentove. Ty sestavıme kolem lokalnıch os procha-
zejıcıch tezistem kvadru C a rovnobeznych s osami souradnic x, y a z. Lokalnı osy jsou urceny
polohovymi vektory ~r1, ~r2 a ~r3, jak muzeme videt na obrazku 2.7. Na obrazku jsou popsany
pouze elementarnı sıly vyvozujıcı vzhledem k ~r1 nenulovy moment. V tomto prıpade vychazı
−(τ ′zy + τzy) ∆x∆y∆z2
+ (τ ′yz + τyz) ∆x∆y2
∆z = 0 .
Tuto rovnici muzeme vydelit elementarnım objemem ∆x∆y∆z. Prejdeme-li nynı k limi-
tam ∆x→ ∆y → ∆z → 0, τ ′zy → τzy, τ ′yz → τyz, dostaneme vyslednou momentovou podmın-
ku. Zbyvajıcı dve podmınky dostaneme obdobnym postupem
τyz − τzy = 0
τzx − τxz = 0
τxy − τyx = 0 .
(2.23)
Tyto vztahy dokazujı, ze matice napetı (2.16) je symetricka. Jsou matematickym vyjadrenım
vety o vzajemnosti smykovych napetı, ktera rıka, ze smykova napetı na dvou vzajemne
kolmych ploskach jsou stejne velka a obe smerujı bud’ k prusecnici, nebo od nı.
Vektorovy zapis momentovych podmınek zıskame obdobnym zpusobem, jako vektorovy
zapis silovych podmınek. Po postupnem prenasobenı rovnic (2.23) jednotkovymi vektory ~e1,
~e2, ~e3 a sectenım takto upravenych rovnic vyjde
(τyz − τzy)~e1 + (τzx − τxz)~e2 + (τxy − τyx)~e3 = ~0 .
10
Kapitola 2. Fyzikalnı principy 2.4. Vztah mezi napetım a deformacı
y
z
x
∆z
∆x
∆y
M1
M3
M2Q
C ~r2
~r3
~r1
τ ′xy
τ ′yz
τxz
τzy
Obrazek 2.7: Momenty na kvadru
Prımym vypoctem se muzeme presvedcit, ze predchozı zapis je jen upravou rovnice
~e1 × ~σ1 + ~e2 × ~σ2 + ~e3 × ~σ3 = ~0 , (2.24)
ktera je vektorovym vyjadrenım vety o vzajemnosti smykovych napetı.
Rovnici (2.24) jsme mohli odvodit prımo pomocı obrazku 2.7. Moment sıly ~R k bodu C
je roven vektorovemu soucinu ~M = ~r× ~R. Polohovy vektor spojuje bod C s pusobistem sıly~R. Jelikoz platı
~r1 =∆x2~e1 ~r2 =
∆y2~e2 ~r3 =
∆z2~e3 ,
muzeme psat
∆x2~e1 × (~σ′
1 + ~σ1) +∆y2~e2 × (~σ′
2 + ~σ2) +∆z2~e3 × (~σ′
3 + ~σ3) = ~0 . (2.25)
Po vydelenı teto rovnice elementarnım objemem ∆x∆y∆z a limitnım prechodu, kde polozıme
∆x→ ∆y → ∆z → 0, vyplyne rovnice (2.24).
2.4 Vztah mezi napetım a deformacı
Pri odvozovanı geometrickych a statickych rovnic jsme predpokladali, ze teleso je souvisle
vyplneno hmotou. Je to predpoklad ryze geometricky, ktery nedava zadnou predstavu o me-
chanicko-fyzikalnıch vlastnostech zkoumane latky. Abychom mohli formulovat vztah mezi
tenzory napetı a deformace, fyzikalnı rovnice, musıme, na zaklade experimentalne zjistenych
materialovych konstant, vytvorit vhodny matematicky model fyzikalnıch vlastnostı latky.
11
Kapitola 2. Fyzikalnı principy 2.4. Vztah mezi napetım a deformacı
odtız
enı
σ
poru
senı
DC
B
A σp
cara σ× ε
εεp
σo
σe
σl
Obrazek 2.8: Zavislost σ na ε
Z fyzikalnıho hlediska budeme predpokladat, ze latka vyplnujıcı objem telesa je homo-
gennı a izotropnı. Tedy, ze latka ma fyzikalnı a chemicke vlastnosti nezavisle na poloze
castice v telese a ze fyzikalne mechanicke vlastnosti latky jsou ve vsech smerech, vychazejıcıch
z tehoz bodu, stejne.
Zakladnı materialove konstanty zıskame tahovou zkouskou tyce pocatecnı delky l0 a
prurezu A0. Pracovnı diagram na obrazku 2.8 zobrazuje zavislost mezi konvencnım napetım
σ =F
A0, (2.26)
kde F je tahova sıla, a konvencnı deformacı (relativnım prodlouzenım)
ε =l − l0l0
=∆ll0
, (2.27)
kde l je delka vzorku po deformaci.
Body A, B a C postupne znacı mez umernosti (σl), mez pruznosti (σe) a mez pev-
nosti (σp). Mez umernosti ohranicuje obor platnosti Hookova zakona
σ = E · ε pro σ ≤ σl , (2.28)
kde E je Younguv modul pruznosti. Mez pruznosti oddeluje pruznou oblast od oblasti plas-
ticke. U nekterych materialu (napr. ocel) je tento prechod zvyraznen mezı kluzu σo, jak je
teckovane vyznaceno na obrazku 2.8. Po jejım prekrocenı nastava plasticke pretvarenı ma-
terialu, ktere se vyznacuje tım, ze pri uplnem odtızenı zustavajı v telese trvale (plasticke)
deformace εp. Vedle pojmu plasticke pretvarenı se tez ujal ekvivalentnı nazev plasticke tecenı.
V souladu s tımto pojmem pak nazyvame napetı oddelujıcı pruznou a plastickou oblast mezı
tecenı, nebo mezı plasticity.
12
Kapitola 2. Fyzikalnı principy 2.4. Vztah mezi napetım a deformacı
σ=Eε
α
ε
σ
E = tgα
(a) Linearnı material
σ
αs
ε
dσ
dε
Es = tgαs
Et = tgαtσs
εs
σ=σ(ε) αt
(b) Nelinearnı material
Obrazek 2.9: Linearnı a nelinearnı material
Zjevnym nedostatkem konvencnı deformace ε je jejı zavislost na pocatecnı delce vzorku
l0. Tento nedostatek odstranıme tak, ze uvazıme spojitou zmenu delky tyce behem pusobenı
sıly F ′ (0 ≤ F ′ ≤ F , l0 ≤ l′ ≤ l). Vysledne delce tyce l prıslusı deformace
ε =
l∫l0
dl′
l′= lg
l
l0= lg(1 + ε) .
Rozvedeme-li poslednı clen teto rovnice v mocninou radu, dostaneme nazorne vyjadrenı
zavislosti mezi skutecnou a konvencnı deformacı ve tvaru
ε = ε− 12ε2 +
13ε3 − · · · .
Nelinearnı cleny lze zanedbat jedine v prıpade malych deformace. Pruvodnım jevem velkych
delkovych zmen je i znacne zmensenı prurezove plochy zkusebnı tyce, takze je patrny i rozdıl
mezi skutecnym napetım
σ =F
A
a napetım konvencnım. Deformacnı cara zavislosti skutecneho napetı σ na skutecne deformaci
ε je na obrazku 2.8 vyznacena carkovane.
2.4.1 Matematicky popis fyzikalnıch vlastnostı latky
Material se nazyva pruzny, jestlize odtezovanı probıha po stejne draze jako zatezovanı. Na
obrazku 2.9(a) je uveden pracovnı diagram pro latku linearne pruznou, ktera se rıdı Hoo-
kovym zakonem (2.28). Deformacnı cara nelinearne pruzne latky, popsana rovnicı
σ = σ(ε) ,
13
Kapitola 2. Fyzikalnı principy 2.4. Vztah mezi napetım a deformacı
∆Fx
∆Fz = 0
∆Fx
∆z
∆y ∆x
du(x+ ∆x)
du(x)
∆Fy = 0
Obrazek 2.10: Element zatızeneho prutu
je na obrazku 2.9(b). Nelinearnı zavislost muzeme jednoduse prevest na linearnı vztah mezi
diferencialy obou promennych ve tvaru
dσ =∂σ
∂εdε , (2.29)
kde ∂σ∂ε = Et je tzv. tecnovy modul pruznosti, jımz je charakterizovana okamzita tuhost
materialu.
V praktickych aplikacıch se muzeme setkat jeste s tzv. secnovym modulem pruznosti,
ktery je podle obrazku 2.9(b) definovan jako
Es =σs
εs. (2.30)
S fyzikalnım vztahem 2.4.1 mezi napetım a deformacı uzce souvisı dulezity pojem z me-
chaniky poddajnych teles, tedy energie deformace. Smysl tohoto pojmu vysvetlıme na
prıklade prutu tazeneho silou F . Na obrazku 2.10 je vyznacen elementarnı kvadr, ktery jsme
rezem vyjmuli ze zkusebnı tyce, jejız osa je totozna s osou x. Silovy ucinek okolı je nahrazen
elementarnımi vnitrnımi silami ∆Fx, ∆Fy a ∆Fz. Za predpokladu, ze prurezova plocha prutu
je mala ve srovnanı s jeho delkou, muzeme povazovat prıcne slozky ∆Fy a ∆Fz za zanedbatelne
ve srovnanı s ∆Fx.
Necht’ vnejsı sıla F vyvodı v prurezu x posun u(x). Jestlize ji zvetsıme o dF , zvetsı se
posun u o du, jak je schematicky naznaceno na obrazku 2.10. Elementarnı vnitrnı sıly pusobıcı
v rezech x a x+ ∆x vykonajı na prırustcıch posunutı praci
∆Fx[du(x+ ∆x)− du(x)] = ∆Fx · d[u(x+ ∆x)− u(x)] = ∆Fx · d(∆u) ,
14
Kapitola 2. Fyzikalnı principy 2.4. Vztah mezi napetım a deformacı
ktera se formou energie deformace akumuluje ve hmote kvadru a snazı se tento kvadr uvest
zpet do tvaru pred pritızenım dF . Energii deformace akumulovanou v jednotce objemu prutu
nazveme hustotou energie (mernou energiı) a oznacıme W . Jejı infinitesimalnı prırustek
odpovıdajıcı protazenı hrany ∆x o d(∆u) bude
dW = lim∆V→0
1∆V
·∆Fx(∆u) = lim∆Ax→0∆x→0
∆Fx
∆Ax· d(
∆u∆x
)= σx · dεx . (2.31)
Diferencialnı symboly ”d“ a ∆ se vztahujı k ruznym velicinam. Zatımco ∆ je svazan s rozmery
konstrukce (elementarnı delkou nebo plochou), symbol ”d“ byl zvolen pro infinitesimalnı
prırustek vnejsıho zatızenı, a proto jsme jej mohli pri poslednı uprave vytknout pred zavorku.
Celkovou energii akumulovanou v objemove jednotce na konci zatezovacı drahy vypocteme
integracı vztahu (2.31) (index x v dalsım vypoustıme)
W =
ε∫ε0
σ′(ε) dε′ . (2.32)
V tomto vzorci ε0 znacı pocatecnı deformaci, ktera muze byt zpusobena napr. oteplenım nebo
smrst’ovanım.
V uvedenem prıpade jsme predpokladali, ze pocatecnı deformace byla udelena jeste pred
zavedenım tahove sıly F ′(0 ≤ F ′ ≤ F ), takze se neuplatnı pri vypoctu energie deformace.
Budeme-li naopak predpokladat, ze deformace ε0 je tyci udelena teprve po zavedenı vnejsı
sıly F ′ (naprıklad dodatecnym oteplenım), dojdeme k vyjadrenı hustoty doplnkove energie
deformace ve tvaru
W ∗ =
σ∫0
ε′(σ′) dσ′ . (2.33)
Jestlize uvedeme energeticke vztahy (2.32) a (2.33) v diferencialnı forme
dW = σ(ε) dε dW ∗ = ε(σ) dσ ,
muzeme podat energetickou formulaci fyzikalnıch rovnic pro pruzny material ve tvaru
σ =dW (ε)
dεε =
dW ∗(σ)dσ
. (2.34)
V prıpade linearnıho pruzneho materialu je
W =12E(ε− ε0)2 W ∗ = σ ε0 +
12E
σ2 , (2.35)
tedy skutecne
σ =dWdε
= E(ε− ε0) ε =dW ∗
dσ= ε0 +
σ
E. (2.36)
15
Kapitola 2. Fyzikalnı principy 2.4. Vztah mezi napetım a deformacı
2.4.2 Obecny Hookuv zakon
Pri formulaci fyzikalnıch vztahu pro ruzne materialy jsme se az dosud omezili na prıpad
jednooseho tahu. Predpoklad izotropie zada, aby tyto vztahy byly nezavisle na smeru pusobenı
vektoru napetı. To znamena, ze pri tlakovem namahanı musıme dostat tvarove stejny pracovnı
diagram jako pri tahovem namahanı.
Nynı prejdeme k formulaci fyzikalnıch rovnic pro obecny prıpad stavu napetı a deformace.
Pri protazenı valce pocatecnı delky l0 a prumeru b0 dochazı navıc ke zmensenı prumeru o ∆b.
Prıcna deformace (relativnı zuzenı) bude
εb = −∆bb0
< 0 .
Pomer ∣∣∣∣εbεl∣∣∣∣ = ν =
1m
, (2.37)
kde εl = ∆l/l0, znacı soucinitel prıcne kontrakce. Velicinu ν nazyvame tez Poissonovym
cıslem, pro m se ujal nazev Poissonova konstanta. Je-li relativnı prodlouzenı ve smeru osy
x oznacene εx, bude relativnı prodlouzenı izotropnı latky ve vsech prıcnych smerech stejne,
takze muzeme psat
εy = εz = −ν εx . (2.38)
V dalsım textu omezıme sve uvahy na linearne pruzne materialy, pro ktere je vzhledem ke
vzorci (2.28).
εx =1Eσx εy = − ν
Eσx εz = − ν
Eσx . (2.39)
Zatım jsme predpokladali, ze jedinym nenulovym napetım je σx. V prıpade obecneho stavu
napetı (σx 6= 0, σy 6= 0, σz 6= 0), obdrzıme rozsıreny Hookuv zakon superpozicı ucinku
jednotlivych slozek napetı. S prihlednutım k (2.39) vyjde
εx = +1Eσx −
ν
Eσy −
ν
Eσz =
1E
(σx − ν(σy + σz)
)εy = − ν
Eσx +
1Eσy −
ν
Eσz =
1E
(σy − ν(σz + σx)
)(2.40)
εz = − ν
Eσx −
ν
Eσy +
1Eσz =
1E
(σz − ν(σx + σy)
).
Temto vztahum muzeme dat ponekud jinou podobu, zavedeme-li relativnı zmenu objemu.
Elementarnı kvadr zmenı vlivem normalovych napetı svuj pocatecnı objem ∆V = ∆x∆y∆z
na hodnotu ∆V ′ = ∆x′ ∆y′ ∆z′, kde ∆x′ = ∆x + εx ∆x, atd. Relativnı zmena objemu tedy
bude
ω =∆V ′ −∆V
∆V=
(1 + εx)(1 + εy)(1 + εz)∆x∆y∆z −∆x∆y∆z∆x∆y∆z
= εx + εy + εz (2.41)
16
Kapitola 2. Fyzikalnı principy 2.4. Vztah mezi napetım a deformacı
Pri poslednı uprave jsme zanedbali souciny slozek deformace oproti linearnım clenum. Po
dosazenı (2.40) do (2.41) a po uprave dostaneme
ω = εx + εy + εz =3(1− 2ν)
E
σx + σy + σz
3=σx + σy + σz
3E0, (2.42)
kde E0 je tzv. objemovy modul pruznosti.
Spojenım vztahu (2.42) s prvnı rovnicı (2.40) muzeme jednoduse vyjadrit napetı σx jako
funkci slozek deformace ve tvaru
σx =E
1 + ν
(εx +
ν
1− 2 νω
)=
E
(1 + ν)(1− 2 ν)((1− ν)Ex + ν (εy + εz)
), (2.43)
odkud cyklickou zamenou indexu vyplynou dalsı dva obdobne vzorce pro napetı σy a σz.
Uhlove deformace γyz, γzx a γxy jsou zpusobeny smykovymi napetımi τyz, τzx a τxy.
Vzajemna souvislost mezi uvedenymi mimodiagonalnımi prvky tenzoru napetı a deformace je
vyjadrena vztahy
γxy =τxy
Gγyz =
τyz
Gγxz =
τxz
G, (2.44)
kde G je modul pruznosti ve smyku linearne pruzneho materialu.
Ze trı materialovych konstant E, ν a G jsou nezavisle dve. Vaze je totiz predpoklad
izotropie, ktera zada nezavislost fyzikalnıch rovnic na volbe soustavy souradnic. Necht’ α11,
α21, α31 jsou uhly, ktere svıra osa x s pootocenymi osami x′, y′, z′. Napetı σx vztazene
k soustave x, y, z vyjadrıme pomocı slozek tenzoru napetı σ′ z transformacnıho zakona (2.18).
Vzhledem k definici transformacnı matice T muzeme psat
σx = ~n′T σ′ ~n′ ,
kde ~n′ = (cosα11, cosα21, cosα31)T.
Po provedenı naznacenych maticovych operacı vychazı
σx = σ′x cos2 α11 + σ′y cos2 α21 + σ′z cos2 α31 +
+ 2(τ ′xy cosα21 cosα11 + τ ′yz cosα31 cosα21 + τ ′xz cosα31 cosα11
). (2.45)
Podobny vysledek plyne i ze vzorce (2.6)
εx = ε′x cos2 α11 + ε′y cos2 α21 + ε′z cos2 α31 +
+ 2(γ′xy
2cosα21 cosα11 +
γ′yz
2cosα31 cosα21 +
γ′xz
2cosα31 cosα11
). (2.46)
Vztahy (2.45) a (2.46) dosadıme do prvnıho vyjadrenı rovnice (2.43) s tım, ze relativnı zmena
objemu ω je (jakozto skalar) nezavisla na volbe souradne soustavy a ~n′T · ~n′ = 1, takze
ω = ω′ = ω′(cos2 α11 + cos2 α21 + cos2 α31
).
17
Kapitola 2. Fyzikalnı principy 2.5. Porusenı souvislosti materialu
(a) tlakove (b) tahove (c) ostatnı
Obrazek 2.11: Tri mozne kombinace sil
Rovnez rovnice (2.43) musı platit musı platit pro libovolny smer urceny uhly α11, α21, α31,
a proto koeficienty nasobene kosiny techto uhlu musı byt na obou stranach rovnice identicky
stejne. Identita clenu nasobenych kvadraty kosinu potvrzuje platnost trı vztahu typu (2.43).
Porovnanım koeficientu u soucinu cosα21 cosα11, cosα31 cosα21 a cosα31 cosα11 vyjde po-
stupne
τ ′xy =E
2(1 + ν)γ′xy τ ′yz =
E
2(1 + ν)γ′yz τ ′xz =
E
2(1 + ν)γ′xz .
Vratıme-li se zpet k soustave x, y, z, zjistıme z porovnanı se vztahy (2.44), ze
G =E
2(1 + ν). (2.47)
2.5 Porusenı souvislosti materialu
Predchozı odstavce popisujı vztah mezi vnejsımi silami a deformacemi telesa. Deformace
jsou nezbytne pro popis chovanı materialu, ktery je zatızen, ale nasım cılem nenı teleso je
deformovat, ale jıt dale za deformace a prozkoumat praskanı materialu. Matematicky popis
prasklin ale nenı vubec jednoducha technika, ktera presahuje ramec tohoto textu a proto se
omezıme jen na zakladnı informace, potrebne k pochopenı souvislostı.
Na element telesa pusobı vnitrnı sıly, urcene tenzorem napetı σ. Tyto sıly majı ruzny smer
a podle smeru je muzeme rozdelit do trı skupin. V prvnı skupine jsou sıly, ktere majı opacny
smer a pusobı proti sobe (viz obrazek 2.11(a)). Tyto sıly zpusobujı stlacovanı elementu. Dru-
hou skupinou jsou sıly, ktere majı take opacny smer, ale pusobı od sebe (viz obrazek 2.11(b)).
Tato skupina sil zpusobuje vznik prasklin v elementu. Poslednı skupinou jsou sıly, ktere nemajı
opacny protejsek a samy o sobe nemajı na praskliny vliv. Pouze zpusobujı posun elementu a
pro vypocet nejsou zajımave (viz obrazek 2.11(c)).
Prozkoumejme nynı chovanı elementu pri pusobenı jednotlivych skupin sil. Tahove sıly
zpusobujı vznik napetı v elementu. Pokud velikost tohoto napetı prekrocı urcitou hodnotu,
tak vznikne porusenı materialu, neboli prasklina. Rovina praskliny je kolma na smerovy vektor
sil. Pokud jiz element porusen je, snazı se sıly rozevrıt prasklinu jeste vıce a tak ji rozsırit.
Sıly ovsem ovlivnujı jen takovou prasklinu, ktera je kolma na smerovy vektor sil. Pokud na
18
Kapitola 2. Fyzikalnı principy 2.5. Porusenı souvislosti materialu
element pusobı tlakove sıly a element jeste porusen nenı, nedeje se nic. Ale pokud je element
porusen, pak tlakove sıly zpusobujı uzavıranı praskliny, tady praskanı nepokracuje. Ostatnı
sıly nemajı, jak uz bylo uvedeno vyse, na praskliny vliv. Samozrejme na element nepusobı
tyto skupiny sil jednotlive, ale vzdy nejaka jejich kombinace. Pak je podstatne, ktera skupina,
jestli tlakova, nebo tahova, prevazuje.
Abychom mohli urcit, jak se bude element chovat, potrebujeme nejakym zpusobem zıs-
kat sıly, ktere na element pusobı. Ty zıskame dekompozicı tenzoru napetı σ. Protoze σ je
ctvercova matice o dimenzi tri, ktera je pro izotropnı material symetricka, ma tri realna
vlastnı cısla. Oznacme tedy vi(σ), kde i nabyva hodnot 1, 2, nebo 3, i-tym vlastnım cıslem
matice σ a ~ni(σ) vlastnı vektor odpovıdajıcı vlastnımu cıslu vi(σ). Kladne vlastnı cısla pritom
odpovıdajı tahovym a zaporne tlakovym slozkam napetı.
Pro vektor ~a z R3 muzeme zkonstruovat 3× 3 symetrickou matici m(~a). Tato matice ma
jedno vlastnı cıslo rovne |~a| a odpovıdajıcı vlastnı vektor rovny ~a. Ostatnı vlastnı cısla ma
nulove. Tato matice je definovana jako
m(~a) =
{aaT/|a| pokud ~a 6= 0
0 jinak, (2.48)
kde a je 3 × 1 matice, ktera ma slozky stejne jako vektor ~a. Tuto matici pak vyuzijeme pri
rozkladu tenzoru napetı na tlakove a tahove slozky.
Kdyz uz mame mechanizmus, kterym dokazeme rozlozit matici na slozky a pak ji opet
slozit, muzeme rozlozit tenzor napetı σ na tahovou a tlakovou slozku. Tahova slozka tenzoru
napetı σ+ je urcena jako soucet jednotlivych tahovych castı, ktere zıskame z rozkladu tenzoru
σ. Obdobne tlakova slozka σ− je urcena souctem tlakovych castı. Jednotlive casti zkonstruu-
jeme z vlastnıch cısel a odpovıdajıcıch vlastnıch vektoru tenzoru σ. Pritom tahove slozky jsou
ty, jejichz vlastnı cıslo je kladne a tlakove slozky majı odpovıdajıcı vlastnı cıslo zaporne.
σ+ =∑
i∈{1,2,3}vi>0
vi(σ) ·m(~ni(σ)) (2.49)
σ− =∑
i∈{1,2,3}vi<0
vi(σ) ·m(~ni(σ)) . (2.50)
Ted’, kdyz mame k dispozici tlakovou i tahovou slozku tenzoru napetı σ+ a σ−, muze-
me vypocıtat prıslusne tlakove a tahove sıly, ktere na element pusobı. To muzeme provest
pouzitım rovnic rovnovazneho stavu, jakou je take rovnice 2.22. Z teto rovnice, ktera vy-
jadruje vztah mezi zmenou napetı a sılou, a z rovnice 2.7 odvodıme, ze sıla, ktera odpovıda
nejakemu napetı σ, se vypocıta integracı napetı pres plochu elementu. Tahovou slozku sıly
19
Kapitola 2. Fyzikalnı principy 2.5. Porusenı souvislosti materialu
∆A
~F+
~F
~F−
Obrazek 2.12: Tlakova a tahova slozka sıly
tedy dostaneme jako~f
+=∫∫∆A
σ+ · ~ndS , (2.51)
kde ∆A je plocha elementu a ~n je normalovy vektor elementarnı plosky dS. Obdobne tlakovou
slozku sıly na element dostaneme zamenou slozky napetı za tlakovou
~f−
=∫∫∆A
σ− · ~ndS . (2.52)
Znazornenı vzajemneho vztahu mezi tlakovou, tahovou a celkovou vnitrnı sılou muzeme videt
na obrazku 2.12.
2.5.1 Separacnı tenzor
Celkova vnitrnı sıla je tedy rozlozena do tahove a tlakove komponenty a ted’ potrebujeme
urcit nejakou hranici, kdy zacne prasklina vznikat a prıpadne take rovinu, ve ktere prasklina
vznikne. Toho docılıme pres separacnı tenzor, jak muzeme odvodit z [4]. Separacnı tenzor ς
je specialnı variantou tenzoru napetı σ, ktera popisuje jen tahove a tlakove slozky napetı. Ale
nepopisuje ostatnı nevyvazene sıly.
Protoze tahove a tlakove sıly pusobı na povrchu elementu, muzeme kazdemu elementu
priradit sadu tlakovych a tahovych sil. Jednu, ktera odpovıda elementu a ostatnı od sousednıch
elementu. Soucet sady tlakovych, resp. tahovych sil je nevyvazena tahova, resp. tlakova sıla~F
+, resp. ~F
−. Sadu tahovych sil oznacıme {~f
+} a sadu tlakovych sil oznacıme jako {~f
−}.
Separacnı tenzor je urcen nasledujıcım vztahem
ς =12
−m(~F+) +
∑~f∈{~f+}
m(~f) + m(~F−)−
∑~f∈{~f−}
m(~f)
. (2.53)
20
Kapitola 2. Fyzikalnı principy 2.5. Porusenı souvislosti materialu
Separacnı tenzor nepopisuje nevyvazene sıly, ktere zpusobujı translaci elementu. Take je in-
variantnı vuci transformacım.
Ze separacnıho tenzoru ς prımo urcıme, zda ma prasklina vzniknout. Protoze matice m(~v),
libovolneho vektoru ~v, je realna a symetricka, tak jı muzeme urcit tri, ne nutne ruzna a nenu-
lova, vlastnı cısla. Nejvetsı kladne vlastnı cıslo tenzoru ς oznacıme v+. Pokud je hodnota v+
vetsı, nebo rovna hodnote vlastnosti materialu, ktere budeme rıkat pevnost τ , tak material
v tomto elementu selze a vznikne prasklina. Pro spojite systemy prasklina vznika presne ve
chvıli, kdy
v+ != τ ,
tedy v momente, kdy se velikost vlastnıho cısla v+ presne rovna velikosti pevnosti materialu τ .
Orientace roviny, ve ktere prasklina vznikne je urcena vlastnım vektorem ~n+, odpovıdajıcım
vlastnımu cıslu v+. V prıpade, ze se nekolik vlastnıch cısel rovna pevnosti τ , vznika v elementu
nekolikanasobna prasklina, kazda orientovana podle odpovıdajıcıho vlastnıho vektoru.
Tento vyklad vypoctu prasklin zdaleka nenı kompletnı a je zde jeste spousta aspektu, ktere
ovlivnujı vznik a vyvoj praskliny telesa. Jednım takovym omezenım je maximalnı rychlost
sırenı praskliny, ktera je tesne spjata s rychlostı sırenı zvuku v materialu telesa. Tyto casti
teorie ale nebudeme probırat, protoze jsou to pomerne rozsahle casti a presahujı ramec tohoto
textu. Navıc je pro pochopenı nasledujıcıho textu a tım padem i jednotlivych metod simulace
a vizualizace nepotrebujeme.
21
Kapitola 3
Metody simulace
Aby bylo mozne simulovat deformace a praskanı na pocıtaci, je treba pouzıt diskretnı metody
vypoctu. Tyto metody nam ale nevypocıtajı simulaci presne. Pouze se snazı realite co nejvıce
priblızit. Nektere metody davajı vysledky lepsı, ale zase jsou slozite a potrebujı prılis casu na
vypocet. Nektere metody jsou naopak rychle, hodı se pro simulaci v realnem case, ale vysledek
zase nenı uplne realisticky. Navıc existujı specializovane metody, ktere se hodı do specialnıch
konkretnıch situacı. V nasledujıcım textu si popıseme a rozebereme tri ruzne metody. Prvnı
je zalozena na fyzikalnıch principech. Proto se nejvıce priblizuje realite. Zato ovsem zaplatıme
vetsı slozitostı. Druha metoda je zalozena take na simulaci trojrozmerneho objektu, ale uz
ne podle fyzikalnıch vztahu. Vyuzıva tedy nejake zjednodusenı a dıky tomu je rychlejsı. Dıky
tomu ma vsak znacne nevyhody. Poslednı metoda je specializovana na simulaci povrchoveho
praskanı, ktere najdeme naprıklad pri vysychanı bahna. Dıky teto specializaci je velmi rychla.
3.1 Sıt’ ctyrstenu
Pokud budeme chtıt simulovat deformace a praskanı objektu, logicky pouzijeme metodu
zalozenou na metode konecnych prvku (FEM). Tato metoda rozdelı objekt do sıte elementu, se
kterymi pak pracuje. James F. O’Brien v [4] upravil a rozvinul metodu konecnych prvku k si-
mulaci a hlavne k vizualizaci realistickeho praskanı. Jeho metoda dokaze simulovat praskanı
jak krehkych, tak plastickych materialu. K tomu je potreba propracovat nejen model vytvarenı
a rozsirovanı prasklin, ale i vypocet deformacı.
3.1.1 Souradne systemy modelu
Metoda simulacı deformacı byla odvozena tak, ze nejdrıve byl stanoven model chovanı defor-
macı pro spojite kontinuum a pote na tento model byla aplikovana metoda konecnych prvku.
V metode se pouzıva sıt’ ctyrstenu. Ctyrsteny majı oproti jinym elementum nektere vyhody.
22
Kapitola 3. Metody simulace 3.1. Sıt’ ctyrstenu
V
UW
~u
~u′
~u′′
V
UW
~u
~u′
~u′′
Obrazek 3.1: Materialove souradnice objektu
Naprıklad jako pomocı trojuhelnıku dokazeme aproximovat jakykoliv plochu, tak ctyrsteny
dokazı vyplnit jakykoliv objem. Nevyplatı se totiz pouzıvat elementy vyssıch stupnu, protoze
vypocet na slozitejsıch elementech je relativne komplikovany a vysledek nenı o tolik lepsı.
Rozdelıme tedy objekt do sıte ctyrstenu. Proces vzniku takoveto sıte je podobny tri-
angulaci plochy, rozsıreny do tretıho rozmeru. Kazdy uzel teto sıte ma polohu vuci telesu
urcenou pomocı materialovych souradnic ~u = (u, v, w)T. Jak je videt z obrazku 3.1, tyto
souradnice uzlu se nemenı. Pohybujı se vlastne s materialem v okolı tohoto uzlu. Deformace
materialu je definovana funkcı ~x(~u) = (x, y, z)T, ktera transformuje materialove souradnice
na souradnice svetove. Tam, kde je material existuje, je tato funkce spojita, ale tam kde
material nenı, naprıklad v mıste porusenı materialu, je hodnota teto funkce nedefinovana.
3.1.2 Tenzory deformace
Pro reprezentaci lokalnıch deformacı materialu pouzijeme tzv. Greenuv tenzor napetı ε. Ten
muze byt reprezentovan jako symetricka realna ctvercova matice 3× 3. Je definovan jako
εij =(∂~x∂ui
· ∂~x
∂uj
)− δij , (3.1)
kde δij je Kroneckerova delta, ktera je definovana nasledovne
δij =
{1 pro i = j
0 jinak.
Tento tenzor reprezentuje pouze deformace. Je invariantnı vuci transformacım telesa ve sve-
tovych souradnicıch a je roven jednotkove matici, pokud nenı teleso deformovano. Protoze je
to tenzor, tak nenı zavisly na volbe orientace materialovych ci svetovych souradnic. Tenzor
ε poskytuje nelinearnı model konecne deformace a tato nelinearita umoznuje pouzitı jak
pro tuhe materialy, ktere se deformujı pouze nepatrne, tak i pro mekke materialy, ktere se
deformujı vıce.
23
Kapitola 3. Metody simulace 3.1. Sıt’ ctyrstenu
Pro deformace, krome tenzoru deformace, jeste potrebujeme tenzor rychlosti deformace ν,
ktery reprezentuje rychlost, jakou se tenzor deformace menı. Je odvozen jako derivace tenzoru
ε podle casu
νij =
(∂~x∂ui
· ∂~x∂uj
)+
(∂~x∂ui
· ∂~x
∂uj
), (3.2)
kde ~x je derivace svetovych souradnic ~x podle casu, tedy rychlost bodu ve svetovych sourad-
nicıch.
Tenzor deformace ε popisuje deformace materialu, ale obsahuje take urcitou odchylku.
Tato odchylka je zmena objemu elementu. Protoze pevne telesa pri deformacıch prakticky
nemenı objem, musıme tuto odchylku popsat a odecıst. Upraveny tenzor deformace ε′ bez
teto zmeny je definovan jako
ε′ij = εij −13
3∑k=1
εkk δij . (3.3)
Pri deformacıch prodelava material dve faze. V prvnı fazi jsou deformace elasticke. V teto
fazi jsou zmeny materialu vratne. To znamena, ze kdyz teleso odtızıme, vratı se do puvodnıho
tvaru. V druhe fazi jsou deformace plasticke. Tyto zmeny jsou nevratne. Mez, kdy elasticke
deformace prechazejı v plasticke je urcena konstantou k1. Pokud je mıra deformace vyssı
nez konstanta k1, pak jsou deformace plasticke. Konstanta k2 ohranicuje mnozstvı plasticke
deformace.
Pro porovnavanı tenzoru deformace ε′ potrebujeme nejakou velicinu, se kterou bychom
porovnali konstantu k1. Velikost tenzoru deformace ε′ je presne ta velicina, kterou potrebujeme
a je definovana takto
J(ε′) =3∑
i=1
3∑j=1
ε′ij ε′ij . (3.4)
Dokud platı J(ε′) ≤ k1, tak se material chova elasticky. Ale jakmile J(ε′) prekrocı k1, tak
rozdelıme tenzor deformace ε do dvou komponent. Prvnı cast εe popisuje elasticke deformace
a druha cast εp popisuje plasticke deformace. Dohromady davajı
ε = εe + εp . (3.5)
Na pocatku vypoctu je tenzor εp roven nulove matici a jak se material deformuje zmena
tenzoru εp je urcena nasledujıcım vztahem
∆εp =
(ε′−εp)
(√J(ε′−εp)−k1
)√
J(ε′−εp)pro
√J(ε′ − εp > k1
0 jinak. (3.6)
24
Kapitola 3. Metody simulace 3.1. Sıt’ ctyrstenu
k1
k2
(a) elasticka
k1
k2
(b) plasticka
k1
k2
(c) plasticka
k1
k2
(d) limit k2
k1
k2
εp
ε′
nulova deformace
Obrazek 3.2: Znazornenı deformacnıch tenzoru
Tenzor plasticke deformace εp pak aktualizujeme tak, aby se v nem promıtla hranice plasticke
deformace k2, tedy podle nasledujıcıho vzorce
εp = (εp + ∆εp) min
(1,
k2√J(εp + ∆εp)
). (3.7)
Chovanı deformacnıho modelu vidıme na obrazku 3.2. Kazdy podobrazek reprezentuje
urcity stav bodu v materialu, ktery je deformovan. I kdyz k zobrazenı hodnot tenzoru ε′
je zapotrebı petidimenzionalnı prostor, tak rovina obrazku zjednodusene reprezentuje mozne
hodnoty tenzoru. Stredovy bod, resp. krız, reprezentuje nulovou deformaci, resp. nulovy ten-
zor ε′. Vnitrnı kruznice reprezentuje stav, kdy J(ε′) = k1, vnejsı kruznice pak stav, kdy
J(εp) = k2. Na obrazku 3.2(a) je znazornen stav pri elasticke deformaci. Tenzor εp, znazorneny
ctvereckem, zustava ve stredu kruhu, zatımco tenzor ε′, znazorneny carkou s teckou na konci,
se pohybuje uvnitr. Jakmile se tenzor ε′ dostane za hranici elasticke deformace k1, zacına se
material deformovat plasticky. Ctverecek reprezentujıcı tenzor plasticke deformace εp opustı
stredovy bod a zacne se pohybovat ve smeru carky. Vzdalenost je stejna, jakou urazı tecka
na konci carky, tedy zmena je stejna jako u tenzoru deformace ε′. Celou situaci ilustrujı
obrazky 3.2(b) a 3.2(c). Ale tenzor plasticke deformace εp nemuze opustit vnejsı kruh, k2, jak
ukazuje obrazek 3.2(d). Deformace za touto hranicı se chovajı jako elasticke. Nutno pozna-
menat, ze prasklina muze vzniknout kdekoliv v regionu elasticke i plasticke deformace.
25
Kapitola 3. Metody simulace 3.1. Sıt’ ctyrstenu
3.1.3 Tenzory napetı
Tenzory deformace ε a zmeny deformace ν poskytujı hrubou predstavu o vnitrnıch sılach ma-
terialu, ale nezohlednujı vlastnosti materialu. Tenzor napetı σ kombinuje informace o defor-
macıch a parametry materialu a urcuje vnitrnı sıly v telese. Podobne jako tenzory deformace
jej lze zapsat jako matici 3 × 3. Tenzor napetı σ je slozen ze dvou castı. Jednak z tenzoru
elastickeho napetı σε, ktere odpovıda elastickym deformacım a z tenzoru viskoznıho napetı
σν , ktery je umerny tenzoru rychlosti zmeny deformacı ν. Celkove vnitrnı napetı je soucet
techto dvou castı
σ = σε + σν . (3.8)
Tenzory σε a σν jsou obecne urceny jako
σεij =
3∑k=1
3∑l=1
Cijkl εekl (3.9)
σνij =
3∑k=1
3∑l=1
Dijkl νkl , (3.10)
kde C je tenzor ctvrteho radu, ktery urcuje vztah mezi tenzory εe a σε a D je tenzor ctvrteho
radu, ktery definuje tlumıcı vlastnosti materialu.
V trojrozmernem prostoru muze byt kazdy tenzor ctvrteho radu reprezentovan jako 81
nezavislych skalarnıch hodnot, ale protoze oba tenzory εe i σε jsou symetricke, vetsina slozek
C je nadbytecna, nebo zavisla, takze muzeme C redukovat na 36 nezavislych hodnot, ktere
urcujı vztah mezi sesti nezavislymi hodnotami εe a sesti nezavislymi hodnotami σε. Pokud
se jeste omezıme na izotropnı material, zjistım, ze dalsı slozky C jsou zavisle a tenzor C
kolabuje do dvou nezavislych hodnot µ a lambda, ktere autor nazyva Lame konstantami
materialu, viz [4]. Konstanta µ pritom urcuje tuhost materialu a konstanta λ urcuje odolnost
proti zmenam elementu. S predpokladem izotropie tedy vzorec (3.9) vypada takto
σεij =
3∑k=1
λ εekk δij + 2µ εeij . (3.11)
Podobne, jako tenzor C, muzeme redukovat i tenzor D. Zbydou nam dve nezavisle hodnoty
φ a ψ. Vzorec (3.10) pak vypada takto
σνij =
3∑k=1
φ νkk δij + 2ψ νij . (3.12)
Parametry φ a ψ urcujı, jak rychle material distribuuje vnitrnı kinetickou energii. Protoze
se σν vztahuje pouze k rychlosti zmen tenzoru deformace ε, tak netlumı pohyby, ktere jsou
26
Kapitola 3. Metody simulace 3.1. Sıt’ ctyrstenu
~m4
~m2
~m3
~m1 ~p1
~p2
~v1
~v2
~v4~p4
~v3
~p3
Obrazek 3.3: Vlastnosti uzlu ctyrstenu
lokalne pevne, tedy kdy se pohybuje element jako celek, a ma vhodne vlastnosti pro sırenı
vnitrnıch vibracı materialu.
Narozdıl od rovnic, ktere urcujı vztah polohy uzlu a deformacı elementu, jsou vztahy
na vypocet tenzoru napetı linearnı. Tento linearnı model je postacujıcı pro popis chovanı
vetsiny materialu. Ale pro nektere materialy, naprıklad pro biologicke tkane, je tento popis
nedostacujıcı. V takovych prıpadech nebudou koeficienty, urcujıcı vztah mezi deformacemi a
napetım, konstanty, ale budou funkcemi deformacı.
Z tenzoru deformace ε a ν a z tenzoru napetı σ muzeme vypocıtat hustotu elastickeho
potencialu η a hustotu potencialu tlumenı κ. Ty jsou v jakemkoliv bode v materialu dany
vztahy
η =12
3∑i=1
3∑j=1
σεij εij (3.13)
κ =12
3∑i=1
3∑j=1
σνij νij . (3.14)
Elasticky potencial je v podstate vnitrnı kineticka energie materialu a potencial tlumenı se
vztahuje ke kineticke energii z nız byly odstraneny slozky zpusobujıcı pohyb telesa, jako celku,
a ktera je prizpusobena hustote materialu.
3.1.4 Diskretizace
Kazdy ctyrsten sıte ma ctyri uzly a kazdy tento uzel ma ctyri vlastnosti. Jednak pozici
v materialu, kterou udavajı materialove souradnice ~m, pozici ve svetovych souradnicıch ~p
a rychlost uzlu ve svetovych souradnicıch ~v. Pro oznacenı uzlu v ramci prıslusneho ctyrstenu
budeme pouzıvat dolnı index. Takze oznacenı ~m[2] oznacuje materialove souradnice druheho
uzlu elementu. Celou situaci muzeme videt na obrazku 3.3.
Pro vypocet jakehokoli bodu uvnitr ctyrstenu s vyhodou pouzijeme barycentricke sourad-
nice. Vysledny bod je tak definovan jako linearnı kombinace bodu ctyrstenu. Mejme tedy vek-
27
Kapitola 3. Metody simulace 3.1. Sıt’ ctyrstenu
tor ~b = (b1, b2, b3, b4)T, ktery urcuje barycentricke souradnice bodu, ktery se pak vypocıta
jako (~u
1
)=
(~m[1] ~m[2] ~m[3] ~m[4]
1 1 1 1
)~b . (3.15)
Barycentricke souradnice muzeme pouzıt take k interpolaci pozice uzlu ve svetovych sourad-
nicıch, i k interpolaci rychlosti(~x
1
)=
(~p[1] ~p[2] ~p[3] ~p[4]
1 1 1 1
)~b (3.16)
(~x
1
)=
(~v[1] ~v[2] ~v[3] ~v[4]
1 1 1 1
)~b . (3.17)
Pokud naopak chceme urcit barycentricke souradnice bodu uvnitr ctyrstenu, ktery je urcen
naprıklad materialovymi souradnicemi, pak stacı invertovat vztah (3.15). Dostaneme tak
~b = β
(~u
1
), (3.18)
kde β je matice 4× 4 definovana jako
β =
(~m[1] ~m[2] ~m[3] ~m[4]
1 1 1 1
)−1
. (3.19)
Kdyz slozıme vzorec (3.18) se vzorcem (3.16) a se vzorcem (3.17), dostaneme vztahy,
ktere interpolujı polohu ve svetovych souradnicıch a rychlost v zavislosti na materialovych
souradnicıch
~x(~u) = P β
(~u
1
)(3.20)
~x(~u) = V β
(~u
1
), (3.21)
kde matice P, resp. V jsou matice 3× 4 a jsou definovany jako
P =(~p[1] ~p[2] ~p[3] ~p[4]
)(3.22)
V =(~v[1] ~v[2] ~v[3] ~v[4]
). (3.23)
Jeste poznamenejme, ze matice β musı byt vypocıtana jen tehdy, kdyz je element vytvoren,
nebo se zmenı materialove souradnice uzlu elementu. Pro nedegenerovane elementy je zaru-
ceno, ze matice β je regularnı, ale pro elementy, jejichz steny jsou skoro rovnobezne, muze
byt matice β spatne podmınena, coz muze neprıznive ovlivnit numerickou stabilitu vypoctu.
28
Kapitola 3. Metody simulace 3.1. Sıt’ ctyrstenu
Vztahy pro vypocet tenzoru deformace ε a ν obsahujı parcialnı derivace polohy ~x a rych-
losti ~x vzhledem k materialovym souradnicım uzlu ~u, ktere jsou dany nasledujıcımi vztahy
∂~x∂ui
= Pβ ~δi (3.24)
∂~x∂ui
= V β ~δi , (3.25)
kde ~δi = (δi1, δi2, δi3)T. Protoze interpolace barycentrickymi souradnicemi je linearnı, jsou
tyto parcialnı derivace po celem elementu konstantnı.
Elasticke a tlumıcı vnitrnı sıly elementu pusobı v jeho uzlech. Elasticka sıla i-teho uzlu~f
ε
[i] je definovana jako zaporna cast hustoty elastickeho potencialu η, s ohledem na polohu
uzlu ~p[i] a integrovana pres cely element. Mame tenzor σε, matici β a pozice ve svetovych
souradnicıch ~p[i] vsech ctyr uzlum takze elasticka sıla uzlu i pak bude
~fε
[i] = −V2
4∑j=1
~p[j]
3∑k=1
3∑l=1
βjl βik σεkl , (3.26)
kde V je objem elementu definovany smısenym soucinem vektoru hran, tedy jako
V =16
( (~m[2] − ~m[1]
)×(~m[3] − ~m[1]
) )·(~m[4] − ~m[1]
). (3.27)
Obdobne je definovana tlumıcı sıla ~fν
[i] jako zaporna cast hustoty potencialu tlumenı κ, integ-
rovaneho pres cely element s ohledem na rychlost ~v[i]. Vztah tedy vypada takto
~fν
[i] = −V2
4∑j=1
~p[j]
3∑k=1
3∑l=1
βjl βik σνkl . (3.28)
Soucet techto dvou komponent nam da celkovou vnitrnı sılu, kterou element pusobı na uzel i
a vypocıtame ji jako
~f [i] = −V2
4∑j=1
~p[j]
3∑k=1
3∑l=1
βjl βik σkl . (3.29)
Celkova internı sıla, ktera pusobı na tento uzel, je souctem sil od vsech elementu, jimz uzel
nalezı.
Pro vypocet zrychlenı, rychlostı a novych pozic uzlu jeste potrebujeme hmotu prıslusneho
uzlu. Tu vypocıtame jednoduse tak, ze hmotu elementu, ktera se vypocıta jako ρ V , kde ρ
je hustota materialu a V je objem elementu definovany ve vzorci (3.27), vydelıme 4mi, tedy
jako ρ V/4.
29
Kapitola 3. Metody simulace 3.1. Sıt’ ctyrstenu
3.1.5 Koliznı sıly
K simulaci chovanı materialu potrebujeme jeste interakci s vnejsım okolım. Navıc v materialu,
krome vnitrnıch sil, take pusobı sıly mezi elementy. Tyto vnejsı sıly jsou pocıtany penalizacnı
metodou. Tato metoda ma samozrejme nevyhody, ale pro tuto metodu byla shledana jako
dostacujıcı. Vyhoda totiz je, ze je pomerne rychla a snadna pro implementaci.
Penalizacnı metoda pracuje tak, ze se vypocıta mıra presahu dvou interagujıcıch elementu
a z toho se odvodı sıla, kterou na sebe tyto elementy pusobı. Dıky tomu, ze vzajemne sıly
zacnou pusobit az tehdy, kdyz se do sebe elementy proniknou, tedy az s urcitym zpozdenım.
Pokud jsou konstanty pro vypocet nastaveny dobre, pak se tato chyba neprojevı. Pro vypocet
sıly je potreba pouzıt nejakou mıru od ktere odvodıme velikost vzajemnych sil. Pro tento
ucel je mozne vyuzıt bud’ hloubku vzajemne penetrace elementu, nebo take objem mno-
hostenu, ktery vznikne jako prunik elementu. Hloubka penetrace elementu je pro vypocet
snazsı, ale nenı prılis vhodna pro komplexnı interakce v systemu. Naproti tomu vypocet ob-
jemu prunikoveho telesa je sice slozitejsı, ale chovanı teto metody je pak realistictejsı.
Sıla je urcena tremi kvantitami. Jednak velikostı, pak smerem a jeste bodem, kde tato
sıla pusobı. Pusobiste sıly je vypocteno jako teziste prunikoveho telesa. Velikost sıly je prımo
umerna objemu pruniku elementu. Necht’ F = {Fi} je mnozina sten, kterymi je definovano
prunikove teleso a Pi ={~pij
}je seznam bodu, ktere definujı stenu Fi, orientovany po smeru
hodinovych rucicek. Objem takoveho telesa se pak vypocıta jako
vol(F) =|F|∑i=1
|Pi|∑j=3
( (~pi,j − ~pi,1
)×(~pi,j−1 − ~pi,1
) )·(~q− ~pi,1
), (3.30)
kde ~q je zvolen jako jeden z bodu ~pi,j . Vedlejsı efekt volby bodu ~q, jako jednoho z vrcholu
mnohostenu, je, ze nekolik castı vztahu (3.30) bude pak nulovych a tım se znacne zjednodusı.
Smer, ve kterem koliznı sıla pusobı je odvozen z normal sten prunikoveho mnohostenu.
Rekneme, ze na sebe pusobı dva elementy A a B. Mnozina sten FA je podmnozinou mnoziny
F a steny, ktere patrı do mnoziny FA odpovıdajı stenam, ktere vznikly ze sten elementu A.
Mnozina FB je definovana obdobne pro teleso B. Smer koliznı sıly, ktera pusobı na teleso B
je urcena takto
fB
=
∥∥∥∥∥∥∥|FA|∑i=1
|PAi |∑
j=3
(~pA
i,j − ~pAi,1
)×(~pA
i,j−1 − ~pAi,1
)∥∥∥∥∥∥∥ . (3.31)
Vektor smeru pusobenı sıly je urcen jako soucet normal sten z mnoziny FA. Protoze platı
FA ∪FB = F , FA ∩FB = ∅ a soucet vsech normal sten mnohostenu F je nula, tak fA
= fB
.
Pusobiste koliznı sıly je urceno jako teziste koliznıho mnohostenu. Vypocet tohoto teziste
30
Kapitola 3. Metody simulace 3.1. Sıt’ ctyrstenu
je urcen takto
center(F) =
|F|∑i=1
|Pi|∑j=3
vol(~q, ~pi,1, ~pi,j−1, ~pi,j)(~q + ~pi,1 + ~pi,j−1 + ~pi,j
)4 vol(F)
, (3.32)
kde vol(F) je objem prunikoveho mnohostenu, ktery se vypocıta podle vzorce (3.30) a kde
vol(~q, ~pi,1, ~pi,j−1, ~pi,j) je objem ctyrstenu urceneho body ~q, ~pi,1, ~pi,j−1, ~pi,j a spocıta se
jako sestina smıseneho soucinu vektoru hran.
Koliznı sıla ovsem muze pusobit pouze na uzly elementu a sıla, kterou jsme vypocıtali
pusobı v mıste teziste pruniku elementu. Proto musıme tuto sılu distribuovat do uzlu. To
provedeme s pomocı barycentrickych souradnic takto
~f [i] = b[i]~f , (3.33)
kde ~b = (b[1], b[2], b[3], b[4]) je barycentricka souradnice teziste mnohostenu, kterou vypocı-
tame podle vzorce (3.18). Jednotlive sıly v uzlech musı byt rovnobezne, protoze samy o sobe
nezpusobujı deformaci elementu, ale pouze jeho posun, ci rotaci. Soucet ucinku techto sil je
shodny s pusobenım jedne sıly v tezisti mnohostenu.
Koliznı sıla je v tomto modelu slozena ze trı slozek. Z opravne, tlumıcı a ze trecı sıly.
Opravna sıla ~f err napravuje prunik, neboli nutı kolidujıcı telesa, aby se vratily do polohy, ve
ktere spolu kolidovat nebudou a je linearne zavisla na objemu pruniku elementu. Vypocıta se
jako
~fA
err = kerrfA
vol(F) (3.34)
~fB
err = kerrfB
vol(F) , (3.35)
kde kerr je koeficient, ktery urcuje velikost odezvy v zavislosti na velikosti pruniku. Tlumıcı
sıla urcuje ~fdmp modeluje rozprostrenı energie v prubehu narazu. Take pusobı ve smeru fA,
ale jejı velikost je urcena kombinacı rychlostı vrcholu elementu a prunikoveho mnohostenu.
Je tedy popsana nasledujıcım vztahem
~fA
dmp = −kdmpfA
vol(F)
(4∑
i=1
bA[i]~vA[i] −
4∑i=1
bB[i]~vB[i]
)· fA
, (3.36)
kde kdmp je tlumıcı koeficient, b[i] je barycentricka souradnice teziste pruniku vzhledem k ele-
mentu A, ~vA[i] je rychlost i-teho uzlu v elementu A. Obdobne jsou definovany promenne b[i]
a ~vB[i], ale pro element B. Sıla ~f
B
dmp muze byt spocıtana tak, ze ve vzorci pro ~fA
dmp zamenıme
hornı indexy, nebo take stacı negovat tento vztah. Poslednı slozkou je sıla trecı ~f frc. Ta se
vypocıta takto
~fA
frc = −kfrc
∣∣∣~fA
err
∣∣∣ 4∑i=1
bA[i]wA[i] , (3.37)
31
Kapitola 3. Metody simulace 3.1. Sıt’ ctyrstenu
kde wA[i] je cast relativnı rychlost i-teho uzlu, ktera je kolma ke smeru pusobenı sıly f
Aa kfrc
koeficient trenı mezi dvema objekty. Abychom mohli rozlisit mezi statickym a dynamickym
trenım, pouzıvame dve hodnoty koeficientu kfrc. Jeden koeficient se pouzıva do doby, nez je
soucet ve vzorci (3.37) prekrocı urcitou hranici a druhou konstantu pouzijeme, pokud je tento
soucet vetsı.
Tato metoda vypoctu koliznıch sil nepridava do systemu zadnou energii, protoze vysledny
moment sil je nulovy. Pracuje spolehlive az do doby, kdy nektera dvojice projde skrz. Pak je
smer sıly nedefinovany a chovanı teto metody tım padem take. Vysledky teto metody take
nezavisı na rozlisenı sıte, protoze velikost koliznı sıly zavisı pouze na objemu pruniku, coz
je geometricka kvantita. V metodach, ve kterych je velikost sıly funkcı hloubky pruniku, je
velikost celkove sıly, ktera pusobı na teleso, zavisla na jemnosti delenı sıte.
3.1.6 Dekompozice sil
Abychom mohli urcit, kde prasklina vznikne, potrebujeme zjistit jednak mısto, ve kterem
prasklina vznikne a jednak smer jımz je urcena rovina praskliny. V teto metode muze prasklina
vzniknout pouze v uzlu sıte, takze vzhled prasklin je predem dan. Ale dıky lokalnımu pretvore-
nı sıte nemusı prasklina postupovat pouze po hranicıch mezi elementy, takze tato nevyhoda je
pomerne dobre kompenzovana. Mısto, ve kterem prasklina vznikne, urcıme analyzou vnitrnıch
sil v okolı uzlu.
Sıly, ktere pusobı na uzel muzeme rozdelit na tlakove, tahove a ostatnı (nevyvazene).
Tahove sıly zpusobujı vznik praskliny, nebo rozsırenı jiz existujıcı praskliny. Tlakove zpusobujı
uzavıranı existujıcı praskliny. Ostatnı sıly nas nezajımajı, protoze zpusobujı pouze posun uzlu,
resp. elementu jako celku a nemajı na praskliny vliv. Pro tenzor napetı σ daneho elementu
sıte muzeme vypocıtat tri vlastnı cısla vi(σ), ktere jsou, dıky tomu, ze matice σ je realna a
symetricka, realne. Kazdemu vlastnımu cıslu odpovıda vlastnı vektor ni(σ).
Pri rozkladu tenzoru σ na tlakovou a tahovou slozku vyuzijeme konstrukci matice m(~v)
z vektoru ~v podle vztahu (2.48). Tahova, resp. tlakova slozka tenzoru napetı σ+, resp. σ− se
vypocıta podle
σ+ =3∑
i=1
max(0, vi(σ))m(ni(σ)) (3.38)
σ− =3∑
i=1
min(0, vi(σ))m(ni(σ)) . (3.39)
Z tenzoru tahoveho napetı σ+ a tenzoru tlakoveho napetı σ− muzeme vypocıtat vnitrnı
tahovou slozku sıly ~f+
a vnitrnı tlakovou slozku sıly ~f−, kterymi element pusobı na jednotlive
32
Kapitola 3. Metody simulace 3.1. Sıt’ ctyrstenu
prıslusne uzly. K tomu vyuzijeme modifikovany vzorec (3.29)
~f+
[i] = −V2
4∑j=1
~p[j]
3∑k=1
3∑l=1
βjl βik σ+kl . (3.40)
Obdobne muzeme spocıtat take tlakovou sılu uzlu ~f−, ale s vyhodou vyuzijeme toho, ze platı
σ = σ+ + σ−, takze muzeme tlakovou slozku vypocıtat efektivneji tak, ze ji vypocteme ze
vzorce ~f [i] = ~f+
[i] +~f−[i].
Kazdy uzel tak bude mıt sadu tahovych a tlakovych sil od ctyrstenu, ke kterym patrı.
Tyto mnoziny oznacıme jako {~f+} a {~f
−}. Nevyvazena tahova ~f+, resp. tlakova ~f
−sıla uzlu
je souctem sil z mnoziny {~f+}, resp. {~f
−}. Sıly, ktere pusobı na uzel popisuje varianta tenzoru
napetı, ktere budeme rıkat stejne, jako autor [4], tedy separacnı tenzor ς. Tento tenzor popisuje
vyvazene tlakove a tahove sıly v uzlu a tedy nepopisuje nevyvazene sıly, ktere zpusobujı posun
uzlu. Vypocıtame ho podle tohoto vztahu
ς =12
−m(~f+) +
∑~f∈{~f+}
m(~f) + m(~f−)−
∑~f∈{~f−}
m(~f)+
. (3.41)
Protoze je to tenzor, tak je invariantnı k transformacım materialovych i svetovych souradnic.
Ze separacnıho tenzoru prımo urcıme, zda ma v prıslusnem uzlu vzniknout prasklina.
Nejvetsı vlastnı cıslo ς oznacıme v+. Pokud je hodnota v+ vetsı, nez hodnota pevnosti ma-
terialu τ , pak v tomto uzlu material selze. Vznikne prasklina, ktera je urcena rovinou, ktera
je kolma k vlastnımu vektoru n+ matice ς, ktery odpovıda vlastnımu cıslu v+. V prıpade, ze
hodnotu τ prekrocı zaroven nekolik vlastnıch cısel, muze byt vytvorena nasobna prasklina.
Nejdrıve se vygeneruje prvnı, pak se tenzor prepocıta a znovu se urcuje, zda prasklina vznikne.
3.1.7 Pretvorenı sıte
V teto metode prasklina nemusı postupovat po hranicıch mezi elementy, ale elementy jsou
rozdeleny tak, aby rozdelenı kopırovalo rovinu praskliny. Takove pretvorenı sıte je treba
provest tak, aby byla zachovana jejı konzistence.
Nejdrıve je uzel, ve kterem prasklina vznikne, zdvojen, takze mısto jednoho uzlu mame
dva. Prvnı n+, ktery nalezı kladnemu poloprostoru roviny praskliny a n−, ktery nalezı za-
pornemu poloprostoru. Oba tyto uzly majı stejne materialove i svetove souradnice a stejnou
rychlost. Majı ale ruznou hmotnost, ale ta bude vypocıtana pozdeji. Prasklina tak bude
prochazet mezi temito novymi body.
Vsechny elementy, jimz nalezı puvodnı uzel musejı byt prozkoumany a musıme jim urcit
pozici vzhledem k rovine praskliny. Elementum, ktere lezı na zaporne strane roviny, bude
33
Kapitola 3. Metody simulace 3.1. Sıt’ ctyrstenu
(a) pred delenım (b) rovina praskliny (c) prvnı cast
(d) druha cast
Obrazek 3.4: Delenı elementu
prirazen uzel n− a elementum na kladne strane roviny priradıme uzel n+. Ne vsechny elementy
vsak budou jednoznacne na urcite strane roviny. Takove elementy nejdrıve musıme podle
roviny praskliny rozdelit.
Postup a vysledek rozdelenı elementu vidıme na obrazku 3.4. Element pred delenım je
na obrazku 3.4(a). Na obrazku 3.4(b) je element pred delenım, ale se zakreslenou rovinou
praskliny. Sipky znazornujı pusobenı tahovych sil na uzel. Pak rozdelıme element podle ro-
viny praskliny, pricemz spravne priradıme novemu ctyrstenu uzel n+, nebo n−. Druha cast
puvodnıho ctyrstenu musı byt take jeste rozdelena. Ale oba nove elementy uz jsou na stejne
strane roviny. Mezi temito dvema elementy totiz nenı prasklina. Tyto dve casti delenı ele-
mentu znazornujı obrazky 3.4(c) a 3.4(d).
Nakonec jeste musıme rozdelit elementy, ktere sousedı s puvodnım elementem, jinak
by byla porusena konzistence sıte. Tyto elementy muzeme rozdelit do dvou skupin, viz
obrazek 3.5(a). Jedna skupina sousedı s prasklym elementem celou stenou. Tyto elementy,
respektive jeden element, protoze kazda stena elementu ma maximalne jednoho souseda,
rozdelıme stejne, jako praskly element, ale nevytvarıme dvojici uzlu. Jak je element rozdelen
muzeme videt na obrazku 3.5(b). Druha skupina elementu (a tech vıc byt muze) sousedı
s prasklym elementem pouze hranou. Takove elementy rozdelıme na dve casti, jak je zna-
zorneno na obrazku 3.5(c). Toto sekundarnı delenı elementu nevytvarı zadne nove uzly. Tım
predejdeme kaskadnımu delenı cele sıte a delenı elementu koncı jeho sousedech.
Pokud prasklina dorazı na okraj sıte, to znamena, ze deleny element se nachazı na okraji
sıte, je potreba duplikovat prıslusne uzly tak, aby prasklina pokracovala za hranice sıte.
Tak muze byt element oddelen od sıte a vznikajı ulomky telesa. Kvuli numericke stabilite
34
Kapitola 3. Metody simulace 3.1. Sıt’ ctyrstenu
(a) pred delenım (b) rovina praskliny (c) prvnı cast
Obrazek 3.5: Delenı sousednıch elementu
je potreba zohlednit jeste jednu vec. Pokud bude rovina praskliny hodne blızko nejakemu
uzlu, pak delenım vzniknou spatne podmınene elementy. To muze mıt za nasledek nestabilitu
systemu. Proto, pro male vzdalenosti roviny od uzlu, primkneme rovinu k uzlu, jako by rovina
tımto uzlem prochazela.
Po dokoncenı delenı je potreba prepocıtat vsechny ulozene parametry prıslusnych uzlu a
elementu. U uzlu je potreba prepocıtat hlavne hmotnost. U elementu je potreba prepocıtat
transformacnı matici β a matice P a V.
3.1.8 Rychlost sırenı praskliny
V predchozıch odstavcıch jsme urcili smer sırenı praskliny, ale jeste nevıme, jakou rychlostı
by se prasklina mela sırit. Delka praskliny, ktera vznikne v jednom casovem kroku, je zatım
urcena velikostı elementu v sıti. Protoze ale prasklina muze postupovat rychleji nez je pomer
velikosti elementu a casoveho kroku, tak musıme zavest jeste nejakou techniku, ktera zarucı, ze
rychlost sırenı praskliny bude nezavisla na velikosti elementu, ani na velikosti casoveho kroku.
Pokud bychom tento problem nebrali v uvahu, pak mohou v telese vzniknout nezadoucı efekty,
jako je skokove vytvarenı prasklin, nebo vibrace v okolı rozdeleneho uzlu.
K vyresenı tohoto problemu je pouzita heuristika, ktera urcuje rezidualnı propagaci pras-
kliny. Pokud by casovy krok byl nekonecne maly, tak by prasklina vznikla presne ve chvıli,
kdy v+ = τ . Protoze je casovy krok konecny, tak prasklina nastava ve chvıli, kdy v+ ≥ τ ,
Takze v uzlu zustava nejaky zbytek v∗ = v+ − τ . Tato heuristika distribuuje tento zbytek
do nove vytvorenych uzlu v okolı praskliny. Obrazek 3.6 tuto situaci schematicky ilustruje.
Do vypoctu je tento zbytek zahrnut takto. Mame uzel se separacnım tenzorem ς a zbytkem
v∗, ktery praskne podle roviny s normalou n+. Modifikujeme separacnı tenzor uzlu podel
praskliny na tenzor ς ′ podle nasledujıcıho vztahu
ς ′ = ς +α
nm(n+) v∗ , (3.42)
kde n je pocet uzlu podel praskliny, ktere jsou spojeny hranou s uzlem, ktery prasknul a
35
Kapitola 3. Metody simulace 3.2. Sıt’ spojenych elementu
(a) pred prasknutım (b) po prasknutı
Obrazek 3.6: Rezidualnı propagace
α ∈ 〈0, 1〉 je koeficient, ktery urcuje jak hodne se prasklina sırı. Vetsı hodnoty α jsou pro
krehke materialy, jako je sklo, polystyren, a podobne, ktere praskajı hodne, kdezto male
hodnoty α jsou pro tvarne materialy, ktere praskajı mene.
3.2 Sıt’ spojenych elementu
Tuto metodu predstavili Jeffrey Smith, Andrew Witkin a David Baraff v roce 2000 a je
popsana v [8]. Oproti metode popsane v predchozım textu pouzıva sıt’ ctyrstenu, ktere
jsou mezi sebou svazany omezujıcımi podmınkami. Schematicke znazornenı dvou sousednıch
ctyrstenu je na obrazku 3.7. Tyto spoje mezi elementy nejsou pruzne. Proto tato metoda
nepocıta deformace a hodı se na praskanı takovych materialu, ktere se prılis nedeformujı.
Takovym typickym materialem je naprıklad sklo.
Pred vypoctem je potreba zjistit, ktere elementy spolu sousedı a mezi nimi vytvorit spoj.
Protoze spoje jsou vytvareny mezi tezisti elementu, musıme jeste vypocıtat stred hmoty ele-
mentu. Teziste muzeme vypocıtat tak, ze nejprve vypocıtame teziste jedne strany. Teziste
elementu pak lezı v jedne tretine usecky z teziste strany a poslednıho vrcholu. Spoje mezi
elementy jsou vytvorene jako pevne a majı hranici pevnosti. Po prekrocenı hranice zatızenı
spoje je spoj zrusen a mezi elementy vznika prasklina. Hranice pevnosti spoje nenı konstantnı
pro vsechny elementy, ale je urcena jako kombinace objemu spojovanych elementu a plochy
steny, kterou tyto dva sousednı elementy sdılejı. Tato provazanost mezi geometriı objektu
a hranicı pevnosti je potrebna pro realistickou simulaci. Vyslednou simulaci muzeme take
ovlivnit aplikacı nejake funkce na hodnotu hranice pevnosti. Muzeme pak nasimulovat ani-
zotropnı material, nebo jine specialnı chovanı materialu. Autori uvadejı, ze obdrzeli velmi
dobre vysledky po aplikaci sumovych a turbulentnıch funkcı. Vysledek vypoctu tedy velmi
zavisı na volbe hranice pevnosti jednotlivych spoju.
Vlastnı vypocet probıha tak, ze pro kazdy spoj vypocıta hodnotu vnitrnı sıly a porovnava
36
Kapitola 3. Metody simulace 3.2. Sıt’ spojenych elementu
spojenı elementu
teziste
Obrazek 3.7: Spojenı elementu
velikost sıly s hranicı pevnosti. Pri prekrocenı hranice je spoj zrusen a tak vznika prasklina.
Vystupem jednoho kroku je tedy opet sıt’ elementu a spoju mezi nimi. Ty jsou parametry
vypoctu v prıpadnem dalsım kroku, i kdyz tato metoda pracuje i v jednom kroku a vsechny
praskliny jsou vypocıtany najednou.
3.2.1 Vypocet prasklin
Autori v [8] formulujı zakladnı problem vypoctu sil, ktere pusobı na tuhe spoje jako jedno
resenı zjednodusenych Lagrangeovych multiplikatoru do nasledujıcı rovnice
JWJT~λ = −JWQ , (3.43)
kde W je inverznı matice hmoty a Q je globalnı vektor vnejsıch sil. Ten popisuje jaka sıla
pusobı na ten ktery element v prubehu narazu. Matice J je definovana jako
J =∂C∂p
, (3.44)
kde C je vektor funkcı spoju. Pro kazdemu spoji v systemu prıslusı jedna funkce ve vektoru C.
Hodnota pro jeden spoj je nulova, kdyz je spoj nezatızeny a nenulova v ostatnıch prıpadech.
Pokud chceme do systemu pridat nejake pocatecnı zatızenı, pak modifikujeme vztah (3.43).
Pocatecnı nastavenı vektoru C nebude nulove, ale budou v nem nejake nenulove polozky.
Rovnice (3.43) pak bude vypadat nasledovne
JWJT~λ = −JWQ− kC , (3.45)
kde k je nejaky normalizacnı koeficient. Slozky vektoru spoju jsou definovany jako rozdıl
vzdalenostı tezist’ a delky spoje, ktera se vypocıta jen na pocatku vypoctu. Matematicky
vztah pro vypocet vektoru spoju je tedy takovyto
Ci(pa,pb) = ‖pa − pb‖ − di , (3.46)
kde pa a pb jsou polohy tezist’, ktere spoj spojuje a di je delka spoje i.
37
Kapitola 3. Metody simulace 3.2. Sıt’ spojenych elementu
Vektor ~λ najdeme vyresenım rovnice (3.43). Ten obsahuje velikosti sil, ktere pusobı na
spoje. Pouzijeme jej k urcenı, ktery spoj zrusıme, pokud je sıla na spoj vetsı, nez jeho pevnost.
Nutno poznamenat, ze spoje v krehkem materialu vydrzı osmkrat vetsı sılu v tlaku, nez v tahu
a to musıme zohlednit pri rozhodovanı jestli spoj zrusıme.
Kdyz zname vektor ~λ, tak muzeme spocıtat vektor Q, ktery popisuje sıly, ktere pusobı na
kazde teziste elementu, v reakci na sıly Q
Q = JT~λ . (3.47)
Hodnota vektoru Q spolu s vektorem vnejsıch sil Q dohromady davajı velikost celkove sıly,
ktera pusobı na element. Tato sıla muze byt pouzita pro dalsı vypocet po vzniku praskliny,
naprıklad k simulaci odletavajıcıch fragmentu telesa, nebo jako vstup pro dalsı kroky simulace.
Rovnice, kterou resıme, tedy
JWJT~λ = b (3.48)
ma pro dane b nekolik resenı ~λ, ktere rovnici splnuje. Ale to jeste neznamena, ze jakekoliv
resenı je fyzikalne realizovatelna kombinace vnitrnıch sil na spoje. Resenı, ktera nam vyhovujı
majı jistou strukturu. Protoze spoje mezi elementy jsou tuhe, tak sıly, ktere jsou vytvareny
nejakym posunem elementu δp, mohou jedine vzrustat. Tyto posuny odpovıdajı tahovym
sılam na spoje ~λ = Jδp. Muzeme tedy rıci, ze vsechny fyzikalne vyhovujıcı resenı, pro nejake
posunutı δp, mohou byt zapsany jako
~λ = Jδp .
Jinak receno, vektor ~λ se musı nachazet ve sloupcovem prostoru matice J a tım padem take
ve sloupcovem prostoru matice JWJT, nehlede na to, ze musı mıt stejnou dimenzi. Resenı
rovnice (3.48) ~λ, ktere lezı ve sloupcovem prostoru matice JWJT, je take optimalnı resenı a
protoze linearnı rovnice ma pouze jedno optimalnı, pak metodou, kterou vypocıtame jedno
optimalnı resenı, dostaneme take fyzikalne spravne resenı.
Autori k resenı pouzıvajı metodu vazanych gradientu. Vıce se o teto metode muzeme
dozvedet v [7], nebo v [5]. Tato numericka metoda hleda optimalnı resenı. Nejenom, ze tato
metoda dava spravne resenı, ale vyuzıva rozptylenosti matice JWJT k rychlejsımu nalezenı
resenı.
Simulace narazu muze byt vypoctena v jedinem kroku nalezenım vektoru Q. Pokud ale
chceme pokracovat ve vypoctu, naprıklad simulacı systemu po odtızenı, nebo simulacı po-
maleho zatezovanı, muzeme vypocet rozlozit do nekolika kroku. Tımto zpusobem muzeme
simulovat beh casu. Cas potrebny k vyvazenı sil v materialu je mnohokrat mensı, nez prubeh
narazu, a tak muzeme casove kroky rozdelit do mensıch bez ztraty moznosti nalezt resenı.
38
Kapitola 3. Metody simulace 3.2. Sıt’ spojenych elementu
Autori uvadejı 50 kroku jako optimalnı pocet. Vetsı pocet kroku je zbytecne narocny, bez
viditelneho zlepsenı.
U krehkych materialu je energie, potrebna k vytvorenı praskliny, podstatne vetsı, nez
energie potrebna k rozsırenı jiz existujıcı praskliny. To je take duvod, proc se sklo rozlomı
do nekolika velkych kusu a ne do mnoha malych kousku. Abychom podporili zvetsovanı jiz
existujıcıch prasklin, musıme modifikovat algoritmus. Po odstranenı spoje, ktery nevydrzel
napetı, snızıme pevnost okolnıch spoju, takze v dalsım kroku mnohem snadneji prasknou.
Jednou moznostı, jak snızit pevnost okolnıch spoju, je snizovanı az dvakrat podle nasledujıcıho
vztahu
sinew = si
old
(1− 1
2sin(2Θ +
π
2
)),
kde Θ ∈ 〈−π2 ,
π2 〉 je uhel mezi prasklym spojem a sousednım i-tym spojem. Promenne si
old,
resp. sinew je pevnost v predchozım kroku, resp. nova pevnost spoje.
3.2.2 Vypocet rychlostı a pozic
Ze sıly Q, ktera pusobı v mıste narazu a z hmotnostı elementu muzeme vypocıtat jejich
vysledne linearnı a uhlove rychlosti. Pro dany bod i platı
~pi = ~vi + ~ωi × ~pi , (3.49)
kde ~pi je rychlost bodu, ~vi je prıma linearnı rychlost bodu, ~ωi je uhlova rychlost bodu a ~pi
je pozice bodu. Takze pokud mame teleso slozene ze trı, nebo vıce elementu s tezisti ~p0, ~p1,
~p2, . . . , ~pn, muzeme vyresit nasledujıcı soustavu rovnic pro prımou rychlost ~vsolid a uhlovou
rychlost ~ωsolid telesa
I −p∗0I −p∗1I −p∗2...
...
I −p∗n
(~vsolid
~ωsolid
)=
~p0
~p1
~p2...
~pn
, (3.50)
kde I je jednotkova matice 3 × 3, ~vsolid a ~ωsolid je prıma a uhlova rychlost telesa a ~p0, . . . ,
~pn jsou rychlosti jednotlivych elementu a p∗ jsou matice vektoroveho soucinu ve tvaru
p∗ =
0 −pz py
pz 0 −px
−py px 0
.
Pomocı tohoto vztahu muzeme vypocıtat rychlost pevneho telesa. To ale znamena, ze pokud
chceme pocıtat rychlosti jednotlivych ulomku, musıme tento vztah pouzıt pro kazdy element
zvlast’.
39
Kapitola 3. Metody simulace 3.3. Praskanı povrchu
vnejsı vrstva
vnitrnı vrstva
Obrazek 3.8: Vrstvy modelu
3.3 Praskanı povrchu
Metoda, kterou spolecne zverejnili Koichi Hirota, Yasuyuki Tanoue a Toyohisa Kaneko v [3],
nenı urcena pro simulaci trojrozmernych prasklin, neboli pro destrukci telesa, ale pro si-
mulaci povrchoveho praskanı. Takove praskanı muzeme aplikovat naprıklad na vysychanı
bahna, nebo jakekoli rozpınanı, ci kontrakci telesa, naprıklad vlivem teploty. Tato metoda
nenı zalozena na FEM, jako predchozı metody. Dıky tomu muze byt velmi rychla.
V teto metode je pro vypocet pouzita sıt’ elastickych pruzin, ktere spojujı elementy.
Napınanı pruzin simuluje vnitrnı napetı v materialu a prasklina vznikne prekrocenım pevnosti
pruziny a jejım naslednym prerusenım. Protoze vetsina prasklin vznika na povrchu objektu,
probıha simulace praskanı pouze na povrchu telesa. Dıky tomu ma tato metoda nızke naroky
na vypocetnı sılu pocıtace. Na druhou stranu touto metodou nelze simulovat destrukci telesa.
Teleso je rozdeleno na dve vrstvy (viz obrazek 3.8). Jednak na vnitrnı vrstvu, ktera dıky
pusobenı vnitrnıch sil praska, a na vnejsı vrstvu, kde praskliny nevznikajı. Vnejsı vrstva je
rozdelena na male elementy a jednotlive elementy jsou propojeny se sousednımi z vnitrnı vr-
stvy. Take v ramci vnejsı vrstvy jsou mezi sebou elementy propojeny. V tomto pruzinovem
modelu jsou elementy reprezentovany uzly. Propojenı mezi sousednımi elementy je repre-
zentovano pruzinami. Propojenı s elementy z vnitrnı vrstvy je reprezentovano smykovymi
pruzinami. Schematicke zobrazenı obou typu pruzin je na obrazku 3.9. Svisle pruziny zna-
zornujı smykove pruziny. Ostatnı znazornujı pruziny mezi sousednımi elementy ve vnejsı vr-
stve. Body na koncıch pruzin jsou teziste jednotlivych elementu vnejsı vrstvy. Prıcina vzniku
praskliny je zmena fyzikalnıch parametru telesa, jako je treba kontrakce pri vysychanı po-
vrchu. Postupna kontrakce povrchu telesa je realizovana jako zmensovanı nezatızene delky
pruzin.
Simulace probıha ve dvou fazıch. V prvnı fazi jsou vypocıtavany polohy a rychlosti uzlu.
V teto fazi je pouzita casova konstanta τ . V druhe fazi jsou vycısleny kontrakce a expanze
materialu. Pritom je pouzita casova konstanta T . Pritom platı, ze T > τ .
40
Kapitola 3. Metody simulace 3.3. Praskanı povrchu
m
h
k
Obrazek 3.9: Typy pruzin ve vrstvach
3.3.1 Inicializace
Prvnım krokem simulace je samozrejme inicializace. V te jsou vypocıtany fyzikalnı a geomet-
ricke konstanty, ktere jsou dany parametry materialu a simulace. Pred zacatkem simulace jsou
dany nasledujıcı konstanty. Material definuje hustota materialu ρ, Younguv modul pruznosti
E a modul pruznosti ve smyku G. Pruziny ovlivnujı konstanty κ, coz je prumerna hodnota
maximalnıho povoleneho napetı, σ2, ktera vyjadruje rozptyl maximalnıho povoleneho napetı
na plochu a H, coz je hloubka vnejsı vrstvy elementu. Dalsı parametry ovlivnujı presnost
vypoctu. Patrı k nim T a τ , jako casove kroky, γ je kontrakce vnejsı vrstvy v ramci jednoho
casoveho intervalu T a δx vyjadrujıcı unosnou chybu pozice uzlu.
Pomocı techto koeficientu muzeme vypocıtat ostatnı koeficienty a inicializovat promenne.
Nejdrıve vypocıtame koeficienty pruzin kij a koeficienty smykovych pruzin hij podle nasledu-
jıcıch vztahu
kij =Aij
Lij(3.51)
hi =BiG
H, (3.52)
kde Aij je plocha steny mezi dvema prıslusnymi elementy i a j ve vnejsı vrstve, Bi je plo-
cha mezi elementem i ve vnejsı vrstve a prıslusnym elementem ve vnitrnı vrstve a Lij = l0ij
je vzdalenost tezist’ krajnıch elementu pruziny v nezatızenem stavu v case t = 0. Situaci
znazornujı obrazky 3.10 a 3.11.
Maximalnı napetı, ktere pruzina mezi elementy i a j, vydrzı je definovana takto
κij = κ+σ√Aij
Gauss() , (3.53)
kde Gauss() je funkce, ktera generuje normalizovana nahodna cısla, ktera majı Gaussovo
rozdelenı. Hmotnost uzlu mi se vypocıta jako soucin hustoty materialu ρ a objem BiH.
Do vypoctu je jeste zahrnuto trenı. Dıky nemu je pohyb uzlu stabilnı. Koeficient trenı c se
41
Kapitola 3. Metody simulace 3.3. Praskanı povrchu
Lij
Aij
(a) bez zatızenı
lij
(b) se zatızenım
Obrazek 3.10: Deformace elementu tahem ci tlakem
vypocıta jako
c = 2α√kmaxmi , (3.54)
kde kmax je maximalnı hodnota konstant pruzin κij , kterou muzeme modelu nalezt. Koeficient
α ovlivnuje utlum oscilacı materialu. Podle autoru je treba tuto konstantu volit citlive, protoze
pri hodnotach mensıch nez 6 zacına byt model nestabilnı. Pri hodnotach vetsıch nez 20 se
chovanı modelu menı jen malo. Proto je tato konstanta nastavena na zhruba 20.
3.3.2 Vypocetnı smycka
Smycka delsıho casoveho kroku T probıha, pokud jsou vsechny uzly stabilnı a sıly, kterymi
na ne pusobı pruziny, jsou v rovnovaze. Rovnovaha sil nastane tehdy, kdyz je soucet sil, ktere
na uzel pusobı je nulovy. Pred vypoctem je definovana konstanta, ktera vyjadruje maximalnı
velikost sıly, ktera je jeste v rovnovaze. Tato konstanta δF se vypocıta jako
δF = kminδx , (3.55)
kde kmin je nejmensı hodnota konstant vsech pruzin v modelu. Vysychanı vnejsı vrstvy je
simulovana zmensovanım delky pruziny v nezatızenem stavu. Pomer nove a stare nezatızene
delky pruziny r v case t se vypocıta podle nasledujıcıho vztahu
r(t) = γt/T . (3.56)
Sıla Fi, ktera pusobı na uzel i, je definovana jako soucet sil jednotlivych pruzin, ktere jsou
k uzlu pripojeny a smykove sıly
Fi =∑
j
kijxi − xj
|xi − xj |(|xi − xj | − Lij)− hi (xi −Xi) , (3.57)
42
Kapitola 3. Metody simulace 3.3. Praskanı povrchu
H
Bi
(a) bez zatızenı
di
(b) se zatızenım
Obrazek 3.11: Deformace elementu smykem
kde xi a Xi jsou pozice tezist’ vnejsıho a vnitrnıho elementu a xj je pozice teziste sousednıho
elementu ve vnejsı vrstve. Lij je delka pruziny mezi elementy i a j v nezatızenem stavu.
Model je ve stabilnım stavu pokud jsou sıly pusobıcı na uzly mensı nez δF . V tomto stavu
se provadı vypocet posunutı uzlu. Posunutı uzlu i je vypocıtano podle nasledujıcıch vzorcu
vt+τi = vi +
(vi −
Fi
c
)(e−
cmi
τ − 1)
(3.58)
xt+τi = xi −
mi
c
(vi −
Fi
c
)(e−
cmi
τ − 1)
+Fi
cτ , (3.59)
kde xt+τi a vt+τ
i je pozice a rychlost i-teho uzlu v dalsım casovem intervalu.
Pruzina praskne ve chvıli, kdyz zacne platit
lijLij
> κij .
Prerusenı praskliny muze byt implementovano tak, ze se nastavı koeficient pruziny na 0.
Predpokladame, ze smykove pruziny prasknout nemohou.
Pro simulaci muzeme pouzıt ruzne topologicke usporadanı propojovacıch pruzin. Toto
usporadanı ovlivnuje tvar vytvarenych prasklin. Topologicke usporadanı je vlastne dano
zpusobem, kterym delıme vrstvy do elementu. Nejjednodussı je pouzıt delenı na ctverce,
ci sestiuhelnıky. Sıt’ ctvercu je pruzinami propojeno se ctyrmi sousedy. Pokud jako zakladnı
element pouzijeme sestiuhelnıky, bude kazdy element k sousedum pripojen sesti pruzinami.
Na obrazku 3.12 je videt rozdıl mezi usporadanım do tetragonalnı a do hexagonalnı sıte.
Sırka trhliny je urcena jako rozdıl delek nezatızene a zatızene pruziny pred prasknutım.
43
Kapitola 3. Metody simulace 3.3. Praskanı povrchu
(a) tetragonalnı sıt’ (b) hexagonalnı sıt’
Obrazek 3.12: Topologie sıte
Predpokladame, ze prasklina vznika ve stredu spoje. V prıpade, ze okolnı pruziny jeste
nepraskly, umıstıme konce praskliny do stredu okolnıch bodu. Pokud jiz sousednı pruziny
praskly, spojıme prasklinou jejich stredy. Pokud se protına vıce prasklin, umıstıme jejich
prusecık do stredu bodu.
Pokud budeme porovnavat tetragonalnı a hexagonalnı modely, zjistıme, ze sıt’ zalozena
na ctvercıch ma sklon generovat rovnobezne s mrızkou a vytvarı vıce malych nespojenych
prasklin. Oproti tomu sıt’ zalozena na sestiuhelnıcıch generuje vıce izotropnı vzory prasklin.
Tento rozdıl je zpusoben faktem, ze v tetragonalnı sıti nevznikajı smykove sıly ve vnejsı vrstve.
Pro simulaci je tedy vhodnejsı hexagonalnı sıt’.
Zmenou materialovych parametru E aGmuzeme ovlivnit hustotu prasklin. Pokud budeme
simulovat material, ktery nenı izotropnı, majı praskliny v ruznych smerech ruzne chovanı.
Toho muzeme docılit tak, ze tuhost pruzin nebude ve vsech smerech stejna, ale bude se se
smerem menit. Takove chovanı materialu je podobne naprıklad praskanı stromove kury.
44
Kapitola 4
Popis implementace
Nezanedbatelnou castı teto prace je implementace O’Brienovy metody simulace praskanı a
rozlamovanı objektu. Cely program je napsan v jazyce C++ a je primarne urcen pro operacnı
system Linux. Je ale napsan tak, ze jde prelozit i pod operacnım systemem Microsoft
Windows, i kdyz jen s omezenou funkcnostı.
Navaznost prekladu programu a systemu, v Linuxu, zajist’ujı softwarove balıky AutoConf
a AutoMake. Dıky nim je preklad pomerne jednoduchy, protoze konfiguraci knihoven a
prekladace zajist’ujı prave tyto pomocne programy. Podrobnejsı informace o prekladu lze
nalezt prımo v archıvu programu v souboru INSTALL.
Abychom mohli program prelozit a nasledne i spustit, potrebujeme mıt nainstalovanou
knihovnu SDL (viz http://www.libsdl.org/). Ta je vyuzıvana k zobrazovanı modelu pres
OpenGL. Pokud chceme nacıtat modely komprimovane programem GZip, musıme mıt jeste
nainstalovanou knihovnu ZLib (viz http://www.gzip.org/zlib/). Ta ale nenı povinna a pri
kompilaci v Linuxu je zapınana automaticky. Pri prekladu pod Windows je potreba upravit
podmınky prekladu. Program podporuje vystup do nekolika formatu. Jednım z nich je vystup
do rastrovych obrazku ve formatu BMP. Obrazky jsou ukladany pres funkce z knihovny SDL,
takze funguje pod Linuxem i pod Windows. Hlavnım vystupem je vystup do videa ve formatu
MPEG. Kodovanı do tohoto formatu zarizuje knihovna FFMPEG, kterou muzeme najıt na
adrese http://ffmpeg.sourceforge.net/. Tato knihovna je soucastı projektu a preklada se
do staticky pripojovane knihovny. Tuto knihovnu ale nelze prelozit pro operacnı system Win-
dows, takze vystup do MPEGu je podporovan pouze v Linuxu. Pokud mame nainstalovanou
knihovnu libquicktime, muzeme zapnout vystup do formatu Apple QuickTime. Vystup
do tohoto formatu je ale opet podporovan pouze v Linuxu. Tuto knihovnu najdeme na adrese
http://libquicktime.sourceforge.net/.
Program se sklada z nekolika celku. Jednou z nich je hlavnı cast, ktera se stara o inicializaci,
nacıtanı modelu a udalosti klavesnice. Hlavnım ucelem teto trıdy je ale zobrazovanı dat a
45
Kapitola 4. Popis implementace 4.1. Hlavnı cast
spoustenı vlastnıho vypoctu. Dalsı castı je vlastnı model. Ten reprezentuje elementy a uzly
modelu. Poslednı a nejdulezitejsı je cast, ktera se stara o vlastnı vypocet.
4.1 Hlavnı cast
Tato cast se sklada z nekolika trıd. Jednou takovou trıdou je CMain. Jak uz nazev napovıda,
jedna se o hlavnı trıdu. Tato trıda zajist’uje inicializaci programu, inicializaci vsech knihoven
pro vystup, inicializaci grafickeho vystupu na obrazovku a OpenGL a obsluhu udalostı od
uzivatele. Take implementuje hlavnı smycku programu.
4.1.1 Inicializace
Rozhranı teto trıdy je velmi jednoduche. Jednou funkcı rozhranı je funkce na inicializaci. Tuto
funkci zastava konstruktor. Ten zajist’uje nactenı konfigurace, kteremu se budeme venovat
pozdeji, inicializaci knihovny SDL a nastavenı okna pro zobrazovanı. Pritom pro toto okno
zapına podporu OpenGL. Konfigurace OpenGL je umıstena do zvlastnı funkce. Tam jsou
nastaveno stınovanı, z-buffer, svetlo a take je nastavena projekcnı matice. Dale inicializace
pokracuje nactenım souboru ve kterem jsou ulozeny vlastnosti materialu. Tento soubor za-
pouzdruje zvlastnı trıda. Pote nasleduje inicializace video vystupu. Kazdy vystup do souboru
je inicializovan jen tehdy, kdyz je povolen. Takze inicializujeme knihovnu pro MPEG soubory
FFMPEG. Pritom alokujeme pamet’ pro uchovavanı aktualnıho obrazu. Pak pokracuje inicia-
lizace knihovny pro QuickTime. Ta pouzıva na vstupu jiny format, nez FFMPEG, takze ma
svuj specialnı buffer pro obraz. Poslednı je inicializace bufferu pro vystup do BMP. Kdyz je
nainicializovan vystup, tak nacteme soubory s modely. Nejdrıve nacteme model, ktery budeme
simulovat, pak model okolnı podpory modelu. Ta slouzı k interakci okolı s hlavnım modelem.
Tento model je nepohyblivy a ani se nedeformuje. Poslednım nacıtanym modelem je model
projektilu. Tento projektil pak bude zpusobovat deformace a rozlamovanı hlavnıho modelu.
Zbyva uz jen nainicializovat vypocetnı system.
4.1.2 Hlavnı smycka
V hlavnı smycce je cela scena zobrazena, spoustı se jednotlive vypocetnı kroky a obsluhujı
udalosti od uzivatele. Tuto cinnost obsluhuje metoda Run a dalsı pomocne funkce. Metoda
Run provadı smycku, ktera se sklada ze trı castı a to ze zobrazenı, provedenı vypocetnıho
kroku a obsluhy udalostı. Protoze vypocet jednotlivych kroku probıha v radu milisekund az
mikrosekund a zobrazenı stavu vypoctu se deje kazdych zhruba deset az sto milisekund, tak
vypocet probıha v kazdem pruchodu smyckou, kdezto zobrazenı probıha jednou za nekolik
iteracı. Pomer mezi poctem vypoctenych a zobrazenych kroku udava framerate videa a casovy
46
Kapitola 4. Popis implementace 4.1. Hlavnı cast
krok simulace. Kazdy pruchod smyckou je aktualnı cas simulace inkrementovan o urcitou
konstantu, neboli o casovy krok simulace. Pokud je aktualnı cas vetsı, nez cas, ve kterem se
ma zobrazit snımek, provedeme zobrazenı. Tato metoda ma sice nevyhodu v male nepresnosti,
ale tato nepresnost nenı vetsı nez velikost casoveho kroku. Navıc ma tato metoda vyhodu
v tom, ze hodnota framerate a casoveho kroku jsou nezavisle. Vypocet jednotlivych kroku
zajist’uje jina trıda, takze kazdy krok je vypocten zavolanım jiste metody trıdy pro vypocet.
Zobrazenı ma na starosti metoda RenderScene. Ta nejdrıve vycistı buffery OpenGL a
nastavı polohu kamery, respektive nastavı transformace modeloveho souradneho systemu
OpenGL. Take nastavuje pozici svetla ve scene. Pote vola funkci na zobrazenı kazdeho mo-
delu. Tato funkce se jmenuje RenderMesh a jako parametr ma model, ktery prave zobrazuje.
Metoda RenderMesh umı zobrazovat model nekolika zpusoby. Jednak umı zobrazit model
jako soubor plosek, tedy jako vyplnene teleso, nebo jako dratovy model. Kazdy tento zpusob
ma jeste tri moznosti. Muzeme zobrazit material telesa, tedy tak jak ho vidıme v realnem
svete, nebo muze zobrazovat hodnoty deformace jednotlivych elementu, nebo zobrazuje ve-
likosti tahovych sil na uzly. Poslednı dve metody zobrazujı hodnoty jako barevne spektrum,
kde zelena je nejnizsı, nebo nulova hodnota a cervena je kriticka hodnota. Pritom pri defor-
macıch je hranicnı hodnota uroven, pri ktere se jiz material zacına deformovat plasticky. Pri
zobrazenı tahovych sil je cervena hodnota hranicı, pri ktere material v uzlu selze. Po zobra-
zenı modelu je cely obsah obrazove pameti ulozen do bufferu, prıpadne zpracovan a ulozen do
vystupnıch souboru. Pri ukladanı do rastrovych obrazku musıme provest vertikalnı preklopenı
obrazu (kvuli tomu, ze OpenGL ma vertikalnı souradnou osu prevracenou, nez funkce SDL
pro ukladanı obrazu). Pri ukladanı pres FFMPEG musıme obraz prevest z RGB do YUV.
K tomu slouzı zvlastnı funkce, kterou nebudeme rozebırat, protoze bychom si museli vysvetlit
i cely format YUV. Pro zapis do QuickTime videa musıme obraz take otocit, ale navıc funkce
pro kodovanı chtejı obrazove data usporadany do pole radku.
Kazdy pruchod hlavnı smyckou jsou take obslouzeny udalosti od uzivatele. Tyto udalosti
jsou v SDL organizovany do fronty. Vybıranı udalostı z fronty a volanı prıslusne obsluhy
ma na starosti metoda ProcessEvents. Ta obsahuje smycku, ktera se provadı dokud nenı
fronta udalostı prazdna a podle typu udalosti je zavolana prıslusna obsluzna funkce. Pro
podrobnejsı popis mechanizmu udalostı a funkcı na obsluhu fronty udalostı bych odkazal
ctenare na dokumentaci ke knihovne SDL, kde jsou prıslusne struktury a funkce podrobne
popsany. V programu jsou obslouzeny udalosti z klavesnice, udalosti mysi a systemova udalost
SDL QUIT, ktera slouzı k ukoncenı vypoctu a tım i celeho programu. Udalosti mysi jsou ob-
slouzeny prımo ve funkci ProcessEvents. Mysı muzeme ovladat natocenı sceny.
Udalosti klavesnice jsou obslouzeny ve funkci HandleKeyDown. Podle stisknute klavesy se
provedou prıslusne akce. Tlacıtky Escape, nebo q ukoncıme provadenı programu. Sipkami na-
47
Kapitola 4. Popis implementace 4.1. Hlavnı cast
horu a dolu muzeme menit vzdalenost kamery od stredu modelu. Mezernıkem pak spoustıme,
ci zastavujeme vypocet. Nutno poznamenat, ze po spustenı programu je vypocet automa-
ticky spusten. Klavesou c menıme zpusob zobrazenı objektu. Opakovanym stiskem klavesy
se prepıname mezi zobrazenım materialu, deformacı a pevnosti. Klavesou r prepıname mezi
zobrazenım dratoveho a vyplneneho modelu.
4.1.3 Konfigurace
Nastavenı programu muzeme ovlivnit konfiguracnım souborem. Ten je nacıtan pri iniciali-
zaci trıdy CMain a je zapouzdren ve trıde CConfig. Tato trıda obsahuje mnoho promennych,
kterymi ovlivnujeme beh programu. Do techto promennych jsou nacıtany hodnoty z konfi-
guracnıho souboru. Ten ma velice jednoduchy format. Je textovy a kazda polozky je zapsana
na samostatnem radku. Kazda promenna je zapsana ve formatu promenna = hodnota. Pritom
pocet mezer nenı podstatny, protoze jsou ignorovany. Pokud polozka obsahuje textovou hod-
notu, muzeme hodnotu uzavrıt do uvozovek a tım program donutıme, aby mezery neignoro-
val. Do souboru take muzeme zapisovat komentare. Zbytek radku od znaku # je bran jako
komentar. Dalsı ignorovanou polozkou jsou oznacenı sekcı. Ty jsou uzavreny do hranatych
zavorek. Kazda polozka ma tedy sve jednoznacne jmeno. Jmena polozek ale nejsou citliva na
velikost pısmen.
V konfiguracnım souboru muzeme menit mnoho vlastnostı programu. Ten je totiz puvod-
ne koncipovan tak, ze vubec nemel byt reagovat na ovladanı uzivatele a vsechny parametry
vypoctu jsou nastaveny pred spustenım. Protoze pocet moznych polozek je pomerne velky,
odkazuji zajemce na na soubor example.cfg, prıpadne na zdrojove soubory trıdy CConfig,
kde je ukazan prıklad pouzitı jednotlivych polozek.
Pri nacıtanı souboru je nejdrıve vsem promennym nastavena vychozı hodnota pro prıpad,
ze by v konfiguracnım souboru nebyla uvedena. Pote jsou cteny jednotlive radky souboru. Ty
jsou upraveny tak, ze se z nich odstranı komentare a mezery. Pak jsou rozdeleny na jmeno
promenne a jejı hodnotu. Podle jmena je hodnota prirazena prıslusne promenne trıdy.
4.1.4 Materialovy soubor
Obsluhu materialu ma na starosti trıda CMaterialFile. Soubor, v nemz jsou uvedeny pa-
rametry jednotlivych materialu ma podobny format, jako soubor konfiguracnı. Rozdıl ale je,
ze nazvy sekcı nejsou ignorovany a oznacujı jmeno materialu. Materialy jsou tedy cteny do
pole specialnıch struktur CMaterial. Tato struktura ma polozky pro jmeno materialu, pro
parametry zobrazenı jako je hodnota ambientnı, difuznı, odrazova a mıra odrazu a hodnoty
fyzikalnı jako Lame konstanty, tlumıcı konstanty, hustotu, pevnost a mıru rezidualnı pro-
48
Kapitola 4. Popis implementace 4.2. Obsluha modelu
pagace. Trıda CMaterial obsahuje jeste metody pro nastavenı materialu pro zobrazenı a
operator prirazenı.
Trıda CMaterialFile obsahuje, krome funkcı pro ctenı souboru, ktere pracujı obdobne
jako funkce ve trıde CConfig, metodu pro hledanı materialu podle jmena a metodu pro
nastavenı materialu v HSL barevnem modelu, ktera se pouzıva pri zobrazenı deformacı, ci
pevnosti.
4.1.5 Ostatnı
Do teto casti programu patrı jeste nekolik pomocnych trıd a globalnıch funkcı. Mezi trıdy patrı
zejmena trıda CInFile. Ta zajist’uje transparentnı praci se soubory pri zapnute podpore kom-
prese i bez komprese. Protoze je urcena pro ctenı textovych souboru (at’ uz komprimovanych,
nebo nezabalenych), obsahuje, krome metod pro otevıranı a zavıranı souboru, metodu pro
ctenı radky ze souboru.
Mezi pomocne funkce patrı funkce pro konverzi barevnych modelu (z RGB do YUV). Ta
se jmenuje RGB24toYUV420 a jak uz vyplyva z nazvu, konvertuje obrazova data z RGB24
do YUV420. Dalsı funkcı, ktera provadı upravy obrazu, je funkce FlipImage. Ta prevracı
obrazek podle horizontalnı osy. Dalsı funkcı konverze mezi barevnymi modely je HSL2RGB. Jak
uz nazev napovıda, jedna se o funkci, ktera prevadı data v barevnem modelu HSL do RGB.
Ta ale nesouzı ke konverzi celeho obrazku, ale pouze prevadı jednu hodnotu. a je vyuzita pri
zobrazovanı. Dalsı funkce jsou prıtomny pouze kvuli rozdılnosti operacnıch systemu Linux a
Windows. Mezi ty patrı funkce FileExists, ktera vracı true, pokud soubor, ktery je jejım
parametrem, existuje.
4.2 Obsluha modelu
Dalsı cast programu se venuje sprave modelu. Trıda CMeshFile poskytuje rozhranı k celemu
modelu. Tato trıda se stara o nacıtanı modelu a obsahuje vlastnı data modelu. Vnitrne jsou
data reprezentovana jako dynamicke pole specialnıch trıd. Pro uzly je to trıda CNode. Tato
trıda obsahuje vsechna potrebna data uzlu jako je pozice uzlu ve svetovych souradnicıch,
pozice uzlu v materialovych souradnicıch, rychlost a zrychlenı uzlu ve svetovych souradnicıch.
Dale obsahuje vektory sil, ktere na uzel pusobı, separacnı tenzor ς a jeho vlastnı cısla a
vektory. Poslednı polozkou, ktera prımo souvisı s vypoctem, je hmotnost uzlu. Obdobna trıda
CVolume udrzuje data kazdeho elementu. Krome indexu prıslusnych uzlu, normal na jednotlive
steny a indexu sousednıch elementu obsahuje matice poloh a rychlostı uzlu, inverznı matici
materialovych souradnic uzlu β a promennou, ktera obsahuje objem elementu. Dalsımi daty,
ktere tato trıda obsahuje, jsou tenzory plasticke deformace εp, tenzor napetı σ a jeho tlakovou
49
Kapitola 4. Popis implementace 4.2. Obsluha modelu
a tahovou slozku σ− a σ+. Obe tyto trıdy majı samozrejme podpurne funkce, ktere se starajı
o prepocıtavanı potrebnych hodnot, jakymi jsou naprıklad normaly sten elementu.
Rozhranı trıdy CMeshFile je pomerne jednoduche. Krome konstruktoru, ktery se stara
o nacıtanı modelu a jeho inicializaci, v teto trıde najdeme metody pro praci s uzly a ele-
menty. Jedna skupina metod slouzı k prıstupum k jednotlivym uzlum, nebo elementum.
Druha skupina umoznuje uzly pridavat. Funkce pro odebıranı elementu neexistuje. To proto,
ze pri simulaci pouze nove elementy vznikajı, ci jsou zmeneny, ale nikdy nejsou odstranovany.
Uzly ale odstranovat potrebujeme. Kvuli rychlosti vsak nenı odstranenı realizovano fyzickym
uvolnenım pameti, ale pouze nastavenı uzlu do neaktivnıho stavu. Tento postup sice nechava
uzly v pameti, ale protoze pocet odebranych uzlu je pomerne maly (vzhledem k poctu novych
uzlu) se tato technika jevı jako vyhodnejsı.
4.2.1 Nacıtanı
Konstruktor trıdy CMeshFile slouzı k inicializaci modelu. Nejdrıve nastavı spravny material
pro model. Pote se snazı model nacıst ze souboru. Soubor je v teto trıde opet reprezen-
tovan trıdou CInFile, takze modely mohou byt komprimovany. Vlastnı ctenı provadı metoda
ReadFile. Format souboru s modelem je textovy. Kazdy zaznam je na samostatnem radku.
Prvnı radek urcuje pocet uzlu modelu. Pak nasleduje tolik radek, kolik je uzlu a na techto
radcıch jsou zapsany polohy jednotlivych uzlu. Jednotlive slozky polohoveho vektoru jsou
oddeleny mezerou. Za poslednım uzlem je zapsan pocet elementu modelu. Za touto radkou
jsou opet jednotlive elementy. Kazda radka popisuje jeden element a kazdy element je popsan
ctyrmi udaji. Prvnı z nich je pro nas nezajımave, ale ostatnı ctyri jsou podstatne. Jsou to
totiz indexy prıslusnych uzlu modelu. Ostatnı casti souboru pro nas nejsou zajımave, takze
je nebudeme popisovat. Takze ctenı modelu probıha tak, ze nejprve vytvorı pole uzlu a pak
cte elementy a prirazuje jim spravne uzly.
Protoze modely mohou obsahovat velke mnozstvı elementu a tım padem by vykreslovanı
bylo velmi pomale, je v programu zabudovan mechanizmus, ktery zarucuje vykreslovanı jen
tech elementu, ktere jsou na povrchu telesa jsou tedy videt. Nejprve ale musıme zjistit, ktere
elementy jsou na povrchu telesa. To udelame tak, ze projdeme vsechny elementy a zjistıme
jejich sousedy. Pokud element nema ctyri sousedy, tak je alespon jedna jeho strana na po-
vrchu telesa a element bude vykreslen. Protoze zjist’ovanı sousednıch elementu je pomerne
zdlouhave, umoznuje program nacıtanı informacı o sousednıch elementech z predpocıtaneho
souboru. Format tohoto souboru je obdobny formatu modelu. Prvnı radka udava pocet ele-
mentu a ostatnı radky obsahujı indexy sousednıch elementu.
V dalsı fazi nacıtanı se vynulujı, nebo spravne nastavı vsechny parametry uzlu i elementu.
Vypocıta se objem kazdeho elementu a podle hustoty nastaveneho materialu je vypoctena
50
Kapitola 4. Popis implementace 4.2. Obsluha modelu
Obrazek 4.1: Prekryvanı obalek uzlu stromu
hmotnost kazdeho uzlu. Take je treba vypocıtat inverznı matici materialovych souradnic a
normalove vektory sten elementu. Ostatnı polozky jsou nastaveny na nulu.
4.2.2 Binarnı strom
Pro rychlejsı vypocet kolizı je v teto casti take zabudovana stromova struktura, ktera velmi
ulehcuje vyhledavanı v modelu. Tento strom je implementovan ve trıde CBtree a je to v pod-
state modifikovany BSP strom. Modifikovany musı byt proto, ze model se sklada z ctyrstenu
a podprostor tedy nelze jednoduse rozdelit plochou. Je to ale strom binarnı, takze kazdy uzel
ma dva potomky. Zkonstruovany strom ale nemusı byt vyvazeny.
Kazdy uzel ma obalku, ktera obepına vsechny elementy v podstromu a jejı hrany jsou
rovnobezne s osami. Tato vlastnost umoznuje velmi rychlou detekci zda se zkoumany objekt
nachazı v prostoru obalky. Dalsı parametr uzlu je stred obalky. Podle tohoto stredu jsou
pak vnitrnı elementy rozdeleny do dvou skupin a delenı rekurzivne pokracuje na techto dvou
skupinach. K rozdelovanı elementu do skupin potrebujeme nejen stred, ale i rovinu, podle
ktere budou elementy roztrıdeny. Tato rovina je kolma na nejdelsı hranu obalky uzlu. Tım je
zarucena co nejlepsı vyvazenost stromu.
Postup konstrukce stromu je tedy takovy, ze nejdrıve vypocteme stred vsech elementu
v danem uzlu. Pritom pocıtame nejvetsı odchylku od stredu. Tato odchylka nam poslouzı pri
rozhodovanı, podle ktere osy budeme elementy rozdelovat. Pak rozdelıme elementy na dve
poloviny, podle toho na ktere strane rozdelovacı roviny element lezı. Pak zacneme rekurzivne
rozdelovat obe skupiny elementu. Rekurze koncı kdyz je v uzlu jeden element. Pri navratu
z vytvarenı podstromu jeste vypocıtame hodnotu obalovacıho kvadru a to tak, ze obalka
aktualnıho uzlu bude obepınat vsechny obalky potomku.
Dıky tomu se mohou obalky sousednıch uzlu prekryvat (viz obrazek 4.1). To ale znamena,
ze chybne vyhodnotıme nekolik uzlu. Nastestı je pocet techto chyb zanedbatelny a strom i tak
velmi urychluje hledanı kolizı mezi modelem a jinym objektem. Pri hledanı kolidujıcıch ele-
mentu postupujeme tedy tak, ze prochazıme strom od korene a vsechny uzly, s jejichz obalkou
objekt nekoliduje preskakujeme. Tım ale zjistıme pouze potencialne kolidujıcı elementy. Pak
jeste musıme projıt vsechny nalezene elementy a vypocıtat kolize presneji. K prohledavanı
stromu a vyhledavanı potencialnıch kolizı je urcena funkce GetPotentialCollisions. Pokud
51
Kapitola 4. Popis implementace 4.2. Obsluha modelu
(a) pred orıznutım (b) orıznuty mnohosten (c) po orıznutı
Obrazek 4.2: Prubeh orezavanı mnohostenu
chceme zjistit kolize mezi dvema modely, musıme pouzıt jejı pretızenou verzi, ktera vracı
specialnı strukturu CBtree::CCollisionStack, coz je zasobnık obsahujıcı vsechny dvojice
elementu z obou modelu, ktere spolu potencialne kolidujı.
Pote co zjistıme ktere elementy spolu potencialne kolidujı, musıme zjistit presne, zda spolu
opravdu kolidujı. Ke zjist’ovanı kolizı mezi dvema ctyrsteny je urcena funkce GetCollision
trıdy CBTree. Tato funkce ma jeden parametr, a sice druhy strom, se kterym kolize zjist’ujeme.
Ovsem oba stromy musejı byt listy stromu, protoze presne zjist’ovanı kolizı ma smysl jen mezi
dvema elementy. Zpusob zjist’ovanı, zda dva ctyrsteny kolidujı, je zalozena na metode uvedene
v [1]. Je to metoda, ktera je velmi rychla, takze se vyplatı vypocıtat nejprve zda spolu elementy
kolidujı a pak teprve zjist’ovat mıru teto kolize.
4.2.3 Koliznı sıly
Velikost koliznıch sil je odvozena z objemu pruniku dvou elementu. K vypoctu velikostı ko-
liznıch sil je urcena trıda CCollisionVolume. Tato trıda vypocıta mnohosten, ktery repre-
zentuje prunik elementu. Vypocet probıha tak, ze postupne orezavame jeden element stenami
druheho elementu.
Vlastnı orezanı probıha tak, ze se uzlum nastavı prıznak podle toho, na ktere strane
orezavacı roviny jsou. Pak prochazıme pres vsechny hrany mnohostenu a podle jejı polohy
vuci orezavacı rovine je bud’ odstranena, to v prıpade, ze se oba koncove body hrany nachazejı
na zaporne strane roviny, nebo je cela ponechana, kdyz jsou oba koncove body na kladne
strane, nebo je rozdelena na dve casti dalsım bodem, ktery lezı na orezavacı rovine. Zapornou
cast pak odstranıme.
Po tomto orıznutı nam zbyde torzo mnohostenu a my ho opet musıme uvest do kon-
zistentnıho stavu. To provedeme tak, ze mezi uzly, ktere lezı na orezavacı rovine hledame
dvojice, ktere jsou koncovymi body hran, ktere majı spolecnou stenu. Pak tyto uzly spojıme
hranou. Nakonec pridame jednu stenu, ktere priradıme nove hrany. Cely postup je znazornen
52
Kapitola 4. Popis implementace 4.3. Vypocetnı jadro
na obrazku 4.2. V prvnı casti je orezavacı plocha s mnohostenem. V druhe casti je orıznuty
mnohosten a ve tretı je novy mnohosten.
Po orezanı elementu vsemi stenami druheho elementu nam zbyde mnohosten, ktery repre-
zentuje prunik zkoumanych elementu. V dalsım kroku vypocıtame objem tohoto mnohostenu
a jeho stred. Pak z normal prıslusnych sten mnohostenu vypocıtame smer pusobenı koliznı
sıly a nakonec jednotlive vektory koliznıch sil ~f err, ~fdmp a ~f frc. Ty pak secteme a tım zıskame
celkovy vektor koliznı sıly.
4.3 Vypocetnı jadro
Tretı cast programu je implementacı vlastnıho vypoctu. O vypocet kroku se stara trıda
CSolver. Vypocet jednoho casoveho kroku je realizovan jednou metodou, ktera se jmenuje
ComputeStep. Ta obsahuje cykly pres vsechny elementy, nebo pres vsechny uzly a v kazde
smycce se vypocıta urcita cast kroku. V prvnı smycce jsou vypocıtany tenzory napetı a defor-
mace. to zarıdı funkce ComputeTensors. Tato funkce pracuje tak, jak je popsano v popisu me-
tody simulace. V dalsı smycce se vypocıtajı tahove a tlakove slozky vnitrnıch sil. A to ve funkci
ComputeFractureForces. Pak jsou prıslusne uzly rozdeleny a vytvoreny praskliny. To ob-
stara funkce ComputeFracture. Pak, s pomocı funkce ComputeInternalForces, vypocıtame
vnitrnı sıly, ktere pusobı na jednotlive uzly. V dalsı casti jsou vypocıtany koliznı sıly mezi
objekty. To se odehrava ve funkci ComputeExternalForces. Zbyva uz jen, pomocı funkce
ComputePositions, vypocıtat nove zrychlenı, rychlosti a polohy jednotlivych uzlu a prepocı-
tat vlastnosti elementu.
Funkce pro vypocet tenzoru, internıch sil a poloh jsou celkem jednoznacne dany metodou
simulace. Zajımavejsı jsou funkce pro vypocet prasklin a externıch sil. Funkce pro vypocet
externıch sil totiz nepracuje ve smycce, ale pomocı metod trıdy CBtree zjistı potencialne ko-
lidujıcı dvojice elementu a pak smyckou pres tyto dvojice zjist’uje konkretnı kolize. Vypocet
koliznıch sil zastava jiz popsana trıda CCollisionVolume. Koliznı sıly jsou nakonec distri-
buovany do uzlu. Funkce pro vypocet prasklin vypocıta vlastnı cısla a vlastnı vektory tenzoru
ς a podle velikosti nejvetsıho kladneho vlastnıho cısla se pak rozhodne, zda uzel selhal, ci
ne. Pokud ano, je zavolana funkce SplitElements. Tato funkce vytvarı trıdu specializovanou
pro vytvarenı prasklin CSplitter. Hned po vytvorenı teto trıdy jsou nalezeny vsechny ele-
menty s nimiz zpracovavany uzel inciduje. Pak je zahajeno vlastnı vytvarenı praskliny. Pote
se prepocıtajı hodnoty tenzoru v rozdelenych elementech a pokracuje se ve vypoctu.
Pro vypocet je naimplementovano nekolik pomocnych funkcı. Mezi tyto funkce patrı
naprıklad funkce ComputeJ, ktera vypocıta invariant J pro zadany tenzor. Take sem patrı
funkce ComputeSigma pro vypocet tenzoru napetı σ. Dalsı funkce slouzı k vypoctu internıch
53
Kapitola 4. Popis implementace 4.3. Vypocetnı jadro
sil z tenzoru napetı a jmenujı se ComputeF a ComputeFIter. Vypocet sil totiz pracuje jako
nekolik iteracı pres jednotlive slozky matic a je vyhodne umıstit cely vypocet do zvlastnıch
funkcı. Poslednı pomocnou funkcı je MatrixFromVector, ktera vracı matici m(~a) ze zadaneho
vektoru ~a.
4.3.1 Vytvorenı praskliny
Trıda CSplitter zajist’uje spravne vytvorenı praskliny prıslusnych elementu v okolı uzlu,
v nemz selhal material. Data trıdy tvorı seznam elementu, ktere s uzlem incidujı. Pro svuj ucel
ma trıda definovane vnitrnı pomocne trıdy CVertex, CVol a CEdge. Tyto trıdy reprezentujı
body, elementy a hrany. Pred zacatkem delenı jsou tedy vytvoreny jednotlive pole vsech
ctyrstenu, jichz se delenı tyka, jejich hran a uzlu. Tyto tri pole dohromady davajı strukturu
podobnou okrıdlene hrane. V metode SplitVolumes se tedy nejdrıve inicializujı potrebna
pole uzlu, elementu a hran. Pritom se vypocıta pozice kazdeho uzlu vuci delıcı rovine.
Nasleduje smycka pres vsechny elementy, kde se podle pozic uzlu stanovı, zda ma byt
element prerazen k uzlu, ktery patrı na zapornou stranu delicı roviny, nebo se ponecha na
kladne strane, nebo je potreba jej rozdelit. Pritom je vytvareno pole elementu, ktere prımo
neincidujı s rozdelovanym uzlem, neboli jsou v druhe vrstve, ale je potreba je take rozdelit.
Po rozdelenı vsech elementu probehne aktualizace modelu. Vypocıtajı se hlavne sousednı
elementy tak, aby byla obnovena konzistence dat modelu.
Pokud je treba element rozdelit, zavola se metoda SplitVolume. Zde je urcena poloha
elementu vuci delıcı rovine a podle toho je element rozdelen. Pokud delıcı rovina protına
element ve dvou uzlech, rozdelı se element na dva. Jinak je rozdelen na tri tak, jak je uvedeno
v popisu metody. Pri rozdelovanı jsou take rozdeleny sousednı elementy, ktere s aktualnım
elementem sousedı stenou. Elementy, ktere s danym elementem sousedı pouze hranou jsou
pridany do pole a jsou pak rozdeleny zvlast’. Vlastnı rozdelenı pracuje tak, ze jsou puvodnımu
elementu prirazeny patricne nove uzly a novym elementum jsou prirazeny zbyvajıcı. Tım
padem nenı potreba odstranovat elementy. Muze se ale stat, ze vytvorıme uzel, ktery pak
nevyuzijeme, nebo puvodnı uzel nebude patrit zadnemu elementu. Pak tento uzel musıme
odstranit. Rozdelenı sousednıch elementu probıha stejne, pouze prirazenı uzlu je modifikovano
tak, ze s uzly, ktera nejsou na spolecne stene se nepracuje a zustavajı stejne.
Po rozdelenı a prirazenı elementu je potreba prepocıtat indexy sousednıch elementu.
Rozdelenı elementu je ale lokalnı a proto nenı potreba prepocıtavat cely model. Stacı si pouze
pamatovat vsechny zpracovane elementy a jejich sousedy a jim upravit informace o sousedech.
To zarizuje metoda UpdateAdjacentVolumes. Nejprve vytvorı pole vsech elementu, kterych
se rozdelovanı tyka. Pak toto pole prochazı a hleda dvojice sousedu.
54
Kapitola 4. Popis implementace 4.4. Matematicka knihovna
4.4 Matematicka knihovna
Cely program hojne vyuzıva sluzeb matematicke knihovny 3DMath++. Tuto knihovnu jsem
vytvoril pro praci s vektory a ctvercovymi maticemi dimenze 2 az 4. Je to knihovna, ktera
se hodı pro praci v trojrozmernem a dvojrozmernem prostoru. Cela knihovna je soucastı
projektu a pri prekladu je staticky je pripojena k programu. V nasledujıcım textu popıseme
zakladnı operace, ktere tato knihovna umoznuje.
Pro praci s vektory jsou implementovany trıdy Vector2f, Vector3f a Vector4f a je-
jich obdoba pro dvojitou presnost Vector2d, Vector3d a Vector4d. Kazda trıda ma sadu
zakladnıch metod pro vytvarenı vektoru, prıstup k jednotlivym slozkam vektoru a nulovanı
vektoru. Pak jsou v techto trıdach naimplementovany operatory pro praci s vektory jako je
scıtanı, odcıtanı, skalarnı nasobenı, nasobenı a delenı skalarem, porovnavanı a prirazovanı.
Nakonec ma kazda trıda sadu metod pro rozsırenou praci s vektory. Mezi tyto metody patrı
funkce pro vypocet velikosti vektoru, normalizaci vektoru, vypocet symetrickeho vektoru po-
dle osy, extrakci kolme slozky na osu a linearnı interpolaci. Vektory dimenze 3 majı take
metodu pro vypocet vektoroveho soucinu. Vsechny trıdy majı take definovany operatory pro
konverzi mezi odpovıdajıcımi presnostmi a funkce pro konverzi mezi ruznymi dimenzemi (po-
kud to ma smysl). K teto casti patrı take sada konstantnıch promennych, ktere reprezentujı
nulovy vektor a jednotlive jednotkove vektory rovnobezne s osami.
Trıdy pro praci s maticemi jsou implementovany obdobne. Existujı trıdy matic Matrix2f,
Matrix3f a Matrix4f a v dvojite presnosti Matrix2d, Matrix3d a Matrix4d. Vsechny trıdy
majı opet sadu metod pro prıstup k jednotlivym slozkam, ci sloupcum nebo radkum matice.
Take majı operatory pro unarnı i binarnı operace s maticemi jako scıtanı a odcıtanı, nasobenı
maticı, nasobenı a delenı skalarem a porovnavanı a prirazenı. Krome metod pro vynulovanı
matice jsou implementovany metody pro vypocet determinantu, transpozici matice, vypocet
matice doplnku a inverznı matice.
Pro praci s prostory jsou implementovany funkce, ktere umoznujı nasobit matici s vekto-
rem zleva i zprava. Cela knihovna je koncipovana pro praci se sloupcovymi vektory a proto je
potreba si davat pozor, zda nasobıme matici zleva, nebo zprava. Pak jsou naimplementovany
funkce, ktere umoznujı jednoduse vytvaret matice afinnıch transformacı, jako je posunutı, ro-
tace, zvetsovanı, ale i jinych jako je naprıklad transformace stredove a ortograficke projekce
a nektere dalsı. Pro vypocet je dulezita jeste jedna funkce. Je to funkce pro vypocet vlastnıch
cısel matice dimenze 3. Je to funkce, ktera implementuje metodu Jakobiho rotacı, a proto je
urcena pouze pro realne a symetricke matice. U tech je zaruceno, ze majı realna vlastnı cısla.
55
Kapitola 5
Zhodnocenı a zaver
Z predchozıho textu je videt, ze tema simulace praskanı a rozlamovanı je pomerne rozsahle a
obtızne jak po fyzikalnı strance, tak po strance simulace, ktera nemusı vzdy sledovat fyzikalnı
principy. Popis fyzikalnıch principu do vetsıch detailu presahuje ramec tohoto textu. Ale pro
zakladnı predstavu stacı. Pokud bychom vsak prece jen chteli simulovat chovanı materialu
presne podle fyzikalnıch rovnic, velmi brzo bychom narazili na problemy uplne jineho cha-
rakteru, jako je naprıklad diskretizace a vubec otazka realizace diferencialnıho a integralnıho
poctu na pocıtaci. Proto je daleko vyhodnejsı pouzıt nejakou diskretnı metodu simulace, jako
naprıklad metoda konecnych prvku, ktera sice neposkytuje naprosto presne vysledky, ale pro
vetsinu aplikacı stacı. Stejne nejsme schopni obsahnout vsechny detaily a pokud bychom zasli
do krajnosti, museli bychom simulovat chovanı jednotlivych atomu a vzajemnych vztahu mezi
nimi. To ovsem, v makroskopickem merıtku, ani veda na dnesnı urovni nedokaze. Takze se
snazıme pouzıvat techniky, ktere nejakym zpusobem cely problem zjednodusı. Ale tak, aby-
chom dostali dostatecne kvalitnı vysledky.
5.1 Metody simulace
V kapitole o metodach simulace praskanı najdeme tri diametralne odlisne metody. Kazda
metoda vyuzıva jinych technik a jinych zjednodusenı. Kvuli tomu bude take kazda metoda
vhodna pro jinou situaci. K problemu simulace praskanı muzeme pristupovat z ruznych po-
hledu. Pokud chceme fyzikalne verohodny model simulace, musıme pocıtat s tım, ze bude
mıt odlisne naroky na vypocetnı vykon pocıtace, nez metody, ktere k problemu pristupujı
z ciste vizualizacnı stranky. Metody zamerene na vizualizaci nikdy nebudou fyzikalne korektnı,
ale pokud chceme simulovat praskanı nejakeho objektu jen pro graficke potreby, muzeme se
s vystupem takove metody spokojit.
56
Kapitola 5. Zhodnocenı a zaver 5.1. Metody simulace
5.1.1 Sıt’ ctyrstenu
Ze zkoumanych metod je tato metoda simulace praskanı nejvıce fyzikalne korektnı. Autor
totiz vychazı ze fyzikalnıch vztahu a vyvinul metodu, ktera vypocıtava fyzikalnı vlastnosti
jednotlivych elementu. Z tech pak zase pomocı fyzikalnıch vztahu vypocıtava fyzikalnı vlast-
nosti uzlu. Konecnym vysledkem jsou sıly, respektive zrychlenı a rychlost jednotlivych uzlu,
ktere ovlivnujı deformace objektu a vnitrnı dekomponovane sıly, jejichz velikost je prımou
prıcinou vzniku praskliny.
Dıky tomu, ze v teto metode pracujeme s tenzory, maticemi a vektory jednotlivych velicin,
je tato metoda pomerne narocna na vypocet. Pocıtanı s temito velicinami totiz zahrnuje velky
pocet operacı s jednotlivymi slozkami kazde veliciny. I kdyz je tedy slozitost teto metody
srovnatelna s ostatnımi, tak obsahuje velky pocet skrytych konstant a tım padem je daleko
pomalejsı.
Na druhou stranu je tato metoda promyslena do vsech detailu a v materialu, ktery jsem
mel k dispozici je popsano velke mnozstvı technik, ktere pomahajı urychlit vypocet. Prıkladem
muze byt prace se stromy ohranicenı elementu, ktere jsou v textu [4] popsany velmi dukladne
a vcetne ruznych zaludnostı, se kterymi se muzeme pri implementaci setkat.
Dıky tomu, ze je tato metoda vypracovana na zaklade fyzikalnıch principu, je pomerne
obecna a dovoluje simulovat velke mnozstvı ruznych materialu. I kdyz je popis metody
primarne zameren na homogennı a izotropnı materialy, muzeme modifikovat algoritmus na
vypocet i pro anizotropnı materialy. Nehomogennı materialy lze simulovat zmenou vlastnostı
materialu v ruznych uzlech, ci elementech. Vetsina materialu je ale homogennı a izotropnı a
proto nam zakladnı model simulace stacı.
Pri implementaci teto metody bychom jiste museli resit i takove problemy, jako je in-
terakce objektu mezi sebou. Na to autor teto metody take myslel a popsal vhodne resenı
interakcı objektu. Interakce probıha vyhradne pres kolize objektu, takze jednotlive objekty
na sebe pusobı pomocı koliznıch sil. Ty jsou vyreseny pres penalizacnı metodu. Ta funguje
tak, ze jeden objekt na druhy pusobı sılou o velikosti umerne velikosti presahu objektu. Tato
metoda sice nenı uplne fyzikalne presna, protoze telesa na sebe zacnou pusobit az ve chvıli,
kdy do sebe telesa proniknou, mısto ve chvıli, kdy do sebe narazı. Vzhledem k tomu, ze jed-
notlive elementy jsou pomerne male, tak tuto nevyhodu muzeme prehlednout. Navıc muzeme
ovlivnovat velikost sıly prıslusnymi koeficienty a tak ovlivnovat chovanı teles pri vzajemnem
stretu.
Samotny zakladnı algoritmus neposkytuje dokonale vysledky. Bez technik jako je rezi-
dualnı propagace, ci ovlivnovanı smeru sırenı praskliny muzeme simulovat materialy, ktere
nejsou prılis krehke. U tech se totiz tyto techniky projevı podstatnou merou. Prıkladem
57
Kapitola 5. Zhodnocenı a zaver 5.1. Metody simulace
muze byt naprıklad sklo, ve kterem, bez pouzitı rezidualnı propagace, v jednom casovem
kroku vznikne prasklina o delce rovne velikosti elementu. Pritom ale z praxe vıme, ze pokud
sklo zacne praskat, sırı se praskliny velmi rychle. Simulaci takoveho chovanı umoznuje prave
technika rezidualnı propagace. Tato technika ale vyzaduje pomerne velkou znalost topologie
v okolı vzniku praskliny. Dıky tomu je tato technika pomerne narocna na implementaci.
Podobne je na tom i technika ovlivnovanı smeru sırenı praskliny. Ta ma za nasledek
to, ze prasklina se muze sırit pouze ”dopredu“ a nevznikajı neprılis realisticke efekty, jako je
zalomenı praskliny v ostrem uhlu. Pri implementaci teto techniky potrebujeme znat jednotlive
praskliny v danem uzlu, coz vyzaduje nemale usilı pri navrhu a nasledne implementaci.
Vypocetnı smycka algoritmu je slozena ze ctyr castı. V prvnı casti jsou vypocıtany tenzory
elementu. Tato cast ma tedy slozitost O(n), kde n je pocet elementu. Dalsı cast pro vsechny
uzly vypocıta vnitrnı sıly, takze ma slozitost O(m), kde m je pocet uzlu modelu. V dalsı casti
jsou vypocteny externı sıly. Protoze muzeme najıt maximalne n elementu, na nez pusobı sıla,
tak je slozitost tohoto kroku O(n). Poslednı castı je vypocet zrychlenı, rychlosti a pozic vsech
uzlu. Slozitost tohoto kroku je tedy O(m). Celkova slozitost algoritmu je tedy O(n + m),
coz nenı mnoho, ale v jednotlivych castech algoritmu jsou velke skryte konstanty. Proto je
simulace praskanı touto metodou nejpomalejsı ze zkoumanych metod.
5.1.2 Sıt’ spojenych elementu
Tato metoda pracuje take se sıtı ctyrstenu. Jednotlive elementy ale nejsou simulovany podle
fyzikalnıch principu, ale jsou spolu svazany pomocı pevnych omezenı. Pokud je zatızenı tohoto
omezenı vetsı, nez urcita mez, tak toto omezenı zrusıme. Jako dusledek vznikne prasklina.
Tato metoda nenı v materialech, co jsem mel k dispozici, prılis dobre popsana. Princip me-
tody je sice jasny, ale matematicke vztahy a hlavne promenne v nich nejsou vubec vysvetleny.
Dıky tomu muzeme pouze usuzovat, jak ktera promenna vypada a tudız se mohou vyskytnout
nejasnosti a nedorozumenı.
Metoda umoznuje simulovat bud’ jednorazove zatızenı impulsem sıly, ktere je vyreseno
v jednom kroku. Druhou moznostı je podstoupit vysledky kroku dalsımu vypoctu a tak
muzeme simulovat naprıklad pomaly rust zatızenı. Pokud bychom pouzili simulaci v jednom
kroku, pak na vystupu dostaneme vysledny stav objektu, tedy jak tento objekt popraska.
Ale to se prılis nehodı na vytvarenı animacı. V tom prıpade je lepsı pouzıt simulaci ve vıce
krocıch.
Z popisu metody je videt, ze nepocıta deformace. Proto se hodı predevsım na krehke
materialy, jako je sklo. Pro materialy, ktere se nejdrıve deformujı a pak teprve prasknou, jako
je naprıklad olovo, nebo guma, musıme pouzıt jinou metodu. Dıky tomu, ze metoda nenı
zalozena na fyzikalnıch postupech, muze byt velmi rychla. Navıc tato metoda nenı omezena
58
Kapitola 5. Zhodnocenı a zaver 5.1. Metody simulace
volbou casoveho kroku, jako tomu bylo v prıpade metody predchozı. Prakticky se v teto
metode pojem casovy krok vubec nezavadı.
Slozitost teto metody je vlastne slozitost pouzite metody pro resenı soustavy linearnıch
rovnic. Autori pouzıvajı metodu svazanych gradientu, ktera by mela nejpozdeji po n vratit
presne resenı, kde n je pocet rovnic. Soustava rovnic je slozena z tolika rovnic, kolik je spoju
mezi elementy. Protoze kazdy element ma ctyri steny, muzeme predpokladat, ze pocet spoju
je 4n, kde n je pocet elementu. Tento vztah nenı uplne presny, protoze nekolik elementu
se nachazı na povrchu telesa a tedy nema vsechny ctyri sousedy. Pocet techto elementu je
vzhledem k celkovemu poctu elementu zanedbatelny. V dalsı casti algoritmu je vypocet pozic
a rychlostı uzlu. Tam take hledame resenı soustavy n linearnıch rovnic. Slozitost teto metody
je tedy O(n). Opet se jsou v metode velke skryte konstanty, takze vypocet (ac radove rychlejsı,
nez O’Brienova metoda), je pomerne zdlouhavy.
5.1.3 Praskanı povrchu
Poslednı metoda se specializuje na simulaci praskanı povrchu. Dıky tomu, ze nevyuzıva prin-
cipu mechaniky je opet velmi rychla. Navıc nesimuluje chovanı celeho trojrozmerneho telesa,
ale jen jeho povrchu, coz jı umoznuje pouzıt pomerne snadny vypocet. Princip metody je
zalozen na rozpınanı, ci smrst’ovanı povrchove vrstvy modelu, coz ma za nasledek vznik napetı
a vnitrnıch sil v teto vrstve. V dusledku pak vznikajı praskliny.
Simulace nenı zalozena na fyzikalnıch vztazıch, ale jednotlive elementy jsou spojeny pruzi-
nami. Kazda pruzina ma danou tuhost a maximalnı hodnotu povoleneho napetı. Po prekrocenı
tohoto napetı je pruzina zrusena a mısto nı vznika prasklina.
Vypocet je rozdelen do dvou castı. V prvnı casti jsou vypocıtany sıly pusobıcı na uzly a
posunutı jednotlivych uzlu. V druhe casti jsou vypocıtany zmeny delek jednotlivych pruzin
a napetı kazde pruziny. V teto casti se take urcı, ktera pruzina bude zrusena a tudız kde
vzniknou nove praskliny.
Pri popisu metody je zmınena moznost pouzıt ruzne topologicke utvary. Na volbe tvaru
elementarnıch teles totiz pomerne hodne zalezı. Pri volbe tetragonalnı sıte se neuplatnujı
smykove sıly, coz jiste nenı zanedbatelne. Oproti tomu praskliny vygenerovane hexagonalnı
sıtı se jevı daleko realistictejsı. Takze i pres problematictejsı implementaci se jevı tato sıt’ jako
vyhodnejsı.
Pokud chceme simulovat anizotropnı materialy, stacı tuto metodu velmi jednoduse mo-
difikovat. Jednotlive elementy pak nebudou mıt ve vsech smerech konstantnı parametry, coz
ma za nasledek mırne zeslozitenı vypoctu. Nastestı tato zmena nenı nijak drasticka.
Cely algoritmus probıha ve dvou smyckach a kazda smycka pocıta parametry m pruzin.
Pocet pruzin je pritom zavisly na volbe topologie sıte. Pokud zvolıme hexagonalnı sıt’, pak
59
Kapitola 5. Zhodnocenı a zaver 5.2. Implementace
je pocet pruzin 6n, kde n je pocet elementu v sıti. Celkova slozitost algoritmu je tedy take
O(n). Rozdıl v metodach je tedy pouze v poctu elementu. Protoze ale pocet elementu muze
dosahovat tisıcu, tak je tento rozdıl podstatny. V tom je vyhoda specializovanych metod a
proto se jevı, tam kde to jde, vyhodnejsı vyuzitı specializovane metody. Samozrejme cena za
rychlejsı zpracovanı je bud’ mensı obecnost metody, nebo horsı kvalita vysledku.
5.2 Implementace
Vlastnı program je clenen do nekolika logickych castı. Vetsina z techto castı ma pouze po-
mocny charakter. Mezi tyto casti patrı zejmena konfigurace a podpora nacıtanı modelu. Dalo
by se rıci, ze do teto casti patrı take hlavnı cast, ktera se hlavne stara o zobrazenı. Pri
implementaci pomocnych trıd nenastaly vetsı problemy, protoze system prace techto trıd je
jednoduchy. Zajımavostı je system zobrazenı, zalozeny na detekci viditelnych sten. K tomu
je nutne tyto steny zjistit, ale to se provede pouze pri inicializaci a prıpadne po vytvorenı
praskliny. To uz je ale jen lokalnı vypocet, takze je pomerne rychly.
Az prekvapive jednoducha je implementace vypoctu. To proto, ze se jedna o implementaci
matematickych vztahu. Presto, ze pocet radek jednotlivych funkcı je pomerne velky, dıky
pouzitı matematicke knihovny jsou tyto funkce pomerne prehledne a snadno pochopitelne.
Pri implementaci vypoctu se objevily problemy se stabilitou vypoctu, protoze pracujeme
s cısly, ktera jsou v pomerne velkem intervalu. Hodnoty deformacı jsou totiz v radu desetin
az setin, ale velikosti vnitrnıch sil se z deformacı vypocıtajı nasobenım konstant v radu 109,
takze je treba davat pozor na pretecenı.
Take implementace binarnıho stromu modelu byla pomerne bezproblemova. Vytvarenı
stromu probıha rekurzivne, coz predstavuje potencialnı riziko v tom, ze nektere elementy mo-
hou byt v neprıznive poloze a vlivem nepresnosti vypoctu se muze vypocet zacyklit. To vyustı
v pretecenı zasobnıku a nasledny pad programu. Proto je tuto techniku potreba naimplemen-
tovat tak, aby bylo takove riziko minimalnı. Toho je docıleno, mimo jine, pouzitım dvojite
presnosti. Pri vypoctu se neustale vypocıtava stred podmnoziny elementu, coz je pomerne
narocne. Snaha je tedy takova, aby se strom nemusel porad konstruovat znovu. V prubehu
vypoctu se model vetsinou pouze deformuje. To znamena, ze se menı pouze poloha elementu
a ne jejich pocet. Proto nemusıme vytvaret cely strom znovu, ale stacı pouze prepocıtat
hranice jednotlivych uzlu stromu. Autor jde jeste dal a modifikuje strom tak, ze obalka v jed-
notlivych uzlech je trochu vetsı, nez by bylo potreba. Tım je zaruceno, ze nenı potreba strom
prepocıtavat kazdy krok, ale jen obcas. Velikost presahu obalky je urcena kombinacı rych-
losti jednotlivych uzlu a multiplikativnı konstanty. Tuto techniku jsem z casovych duvodu
nenaimplementoval. Je take treba poznamenat, ze vypocet stromu nenı nejnarocnejsı.
60
Kapitola 5. Zhodnocenı a zaver 5.2. Implementace
Nejslozitejsı se ukazala implementace trıd pro vypocet koliznıch sil a pro vytvarenı pras-
kliny. Trıda pro vypocet koliznıch sil nejdrıve vypocıta prunik elementu. Tento prunik je
vlastne obecny mnohosten, ktera vznikne orezanım jednoho elementu stenami druheho ele-
mentu. Pokud se orezavacı rovina nachazı prılis blızko uzlu, nastane problem s presnostı
vypoctu prusecıku hrany a roviny. Dıky tomu vznikalo mnozstvı problemu a vypocet nepra-
coval spravne. Nakonec jsem tento problem vyresil tak, ze vypocet vzajemne pozice uzlu a
orezavacı roviny probehl pouze jednou. Podle pozice se ulozı kazdemu uzlu prıznak a pak uz se
pracuje pouze s tımto prıznakem. Dalsım problemem je rekonstrukce rozdeleneho mnohostenu
do konzistentnıho stavu. Musıme vyhledat prıslusne dvojice uzlu a mezi nimi vytvorit hrany
a stenu. Jakakoliv nepresnost v implementaci ma za nasledek dalsı chyby a ve vysledku al-
goritmus muze zpusobovat nemale problemy. V tuto chvıli bych vytknul jednu vec autorovi
teto metody. Pri jejım popisu totiz neuvedl konstanty pro vypocet koliznıch sil. Jejich zıskanı
stalo nemale usilı metodou pokus omyl. Vzhledem k tomu, ze se jedna o pet konstant, tak
zıskanı alespon priblizne funkcnı kombinace je pomerne problematicke. Tyto konstanty majı
totiz podstatny vliv na vzajemne pusobenı teles a mala odchylka ma za nasledek neprirozene
chovanı.
Dalsı podobnou technikou je metoda delenı elementu v okolı uzlu, v nemz selhal ma-
terial. Tato technika opet vypocıtava prusecıky hran a roviny, takze je opet potreba venovat
nalezitou pozornost presnosti vypoctu. Polohy jsou opet vypocteny predem a jen jednou.
Nastava zde ale jeden horsı problem a to v mnozstvı moznych kombinacı vzajemnych poloh
elementu a delıcı roviny. Z toho plyne pomerne velka slozitost teto techniky a tedy potencialnı
zdroj neprıjemnych chyb. Pro snadnou implementaci teto techniky je bezpodmınecne nutna
vhodne navrzena datova struktura modelu. Je potreba brat ohled zejmena na snadne urcenı
sousednıch elementu a prıslusnost uzlu k elementu. S temito dvema informacemi se totiz, pri
rozdelovanı elementu, intenzivne pracuje.
Dıky nedostatku casu v programu nejsou implementovany nektere velmi dulezite tech-
niky. Dıky tomu nenı vystup programu bez chyb. Jedna se zejmena o techniku rezidualnı
propagace. Da se rıci, ze tato technika je zivotne dulezita pro simulaci krehkych materialu,
jako je naprıklad sklo. Ale protoze implementace deformacı a hlavne koliznıch sil a vytvarenı
praskliny byla pomerne problematicka, tak na tuto techniku nezbyl cas. Navıc jejı implemen-
tace take nenı zrovna trivialnı. V teto technice pracujeme totiz se vsemi uzly a elementy
podel praskliny a to opet znamena potrebu velmi dobre znalosti topologie v oblasti kazde
praskliny. dalsı potrebnou technikou je eliminace zpetnych prasklin. Ta take nenı naimple-
mentovana a to opet z duvodu nedostatku casu. Tato technika vylepsuje vysledny vzhled
prasklin, takze se vyznamnou merou podılı na vysledku. Pro implementaci potrebujeme znat
vsechny praskliny v okolı nove vytvarene, takze opet potrebujeme nejakou strukturu, ktera
61
Kapitola 5. Zhodnocenı a zaver 5.2. Implementace
udrzuje prehled o vsech prasklinach. Jsou ale materialy, kde se tyto techniky projevujı mene.
Takovymi materialy jsou naprıklad guma, ci olovo.
Pro simulaci je jeste potreba nejaky externı objekt, ktery bude simulovat projektil, ci
jine teleso. Toto teleso narazı do simulovaneho objektu a tım vyvola deformace a nasledne
porusenı materialu. Protoze nove teleso by se melo take chovat podle zakonu fyziky, je potreba
naimplementovat take chovanı tohoto telesa. To ale znamena simulovat dalsı teleso. Proto do
systemu nenı takove teleso zahrnuto, ale je nahrazeno hmotnym bodem. Ten ma konecnou
hmotnost, rychlost, zrychlenı a smer, takze jedine, co potrebujeme vypocıtat je posun tohoto
bodu a kolize se simulovanym telesem. Velikost sıly, kterou tento bod pusobı na objekt je
odvozena z jeho rychlosti. Protoze se nejedna o teleso, ma tento postup i nevyhody. Ty se
projevı zejmena v tom, ze se simulovane teleso ”proborı“. Je to zpusobeno prılis malym
pomerem plochy bodu a elementu, na ktery bod pusobı.
Testovanı aplikace probıhalo zkousenım ruzne slozitych modelu s ruznymi parametry
vypoctu. Pri testovanı ruzne slozitych modelu se potvrdilo, ze slozitost metody je linearnı.
Simulace s modelem, ktery mel kolem 700 elementu, trvala zhruba 20 minut. Simulace modelu
o cca 1400 elementech trvala zhruba 40 minut. Pritom vsechny ostatnı parametry byly stejne.
Pri testovanı se ovsem projevily problematicke casti vypoctu, ktere jsou citlive na stabilitu
vypoctu. Pri slozitejsıch modelech bylo potreba pouzıt mensı casovy krok, nez u jednodussıch
modelu. U slozitejsıch modelu bylo potreba pouzıt casovy krok okolo jedne mikrosekundy,
kdezto u jednodussıch modelu bohate stacilo 50 mikrosekund.
Kvuli absenci implementace rezidualnı propagace nema smysl simulovat krehke materialy.
Pokud takovy material chceme prece jen simulovat, nebudou vysledky prılis realisticke. Pro
simulaci v aktualnım stavu aplikace se hodı materialy jako je guma, ci olovo. Pritom se
tyto dva materialy podstatne lisı. Navıc na takovych materialech jsou videt prednosti teto
metody simulace. Tyto materialy totiz patrı do skupiny, kdy je material nejdrıve deformovan
a teprve pak zacne selhavat a tedy praskat. Pritom guma je elasticky material. To znamena, ze
se deformuje elasticky. Plasticka deformace se uplatnuje pouze v male mıre. Olovo je naopak
plasticky material, ktery se prakticky nedeformuje elasticky. Vystup simulace techto materialu
muzeme videt na CD-ROM (prıloha B).
62
Dodatek A
Prıklad vysledku
V teto prıloze muzeme videt prıklad vysledku simulace. Protoze primarne je program urcen
pro vystup videa, je vetsina vystupu ve formatu DivX na CD-ROMu v B. Zde si ukazeme
pouze jeden prıklad vystupu. Je to stredne velky model desky z gumy o zhruba 700 elementech,
do ktere narazı hmotny bod. Celkova doba simulace je priblizne 0,1 sekundy.
Na prvnı sade obrazku je videt simulace desky v nekolika casovych okamzicıch. Na prvnım
obrazku vidıme pouze malou deformaci desky. Na dalsım uz zacına deska praskat. Na dalsıch
obrazcıch se prasklina rozsiruje a vznikajı dalsı, nove praskliny. Na poslednıch obrazcıch je uz
deska pomerne hodne rozpraskana.
Na dalsı serii obrazku muzeme videt tu samou situaci, ale pri zobrazovanı namahanı
jednotlivych elementu. Zelena barva je pritom nulove zatızenı a cervena barva oznacuje mısto,
ktere je blızko hranice vzniku praskliny. Z obrazku muzeme videt, ze vzdy po vzniku praskliny
je postizeny element odlehcen a nenı deformovan ani namahan.
63
Dodatek A. Prıklad vysledku
64
Dodatek A. Prıklad vysledku
65
Dodatek B
CD-ROM
CD-ROM, na kterem jsou vsechny nıze uvedene materialy je ulozen v knihovne Graficke
skupiny na Katedre pocıtacu, kde je mozne si ho, po dohode s vedoucım diplomove prace
zapujcit.
B.1 Dokumentace
Text teto prace vcetne zdrojovych kodu nalezneme v adresari cdrom://text. Tento adresar
obsahuje dve verze tohoto textu. V souboru dipl.ps najdeme verzi urcenou pro tisk a je
ve formatu PostScript. Tento soubor byl vytvoren sazecım programem LATEX. Druha verze
se nachazı v souboru dipl.pdf. Ten je urceny pro prohlızenı na pocıtaci. Tento soubor byl
vytvoren programem pdfLATEX.
Dale je zde adresar cdrom://text/sources. Ten obsahuje zdrojove kody tohoto textu,
vcetne obrazku. Hlavnım souborem je dipl.tex, ale preklad se spoustı automatizovane pres
prıkaz make. Pro preklad je nutne mıt nainstalovany styl pro BibTEX, ktery je v souboru
csplain.bst a nastroj pro konverzi obrazku do PDF.
B.2 Zdrojove kody
V adresari cdrom://sources se nachazejı zdrojove kody implementace O’Brianovy metody
simulace. Zdrojove kody jsou urceny pro operacnı system GNU/Linux, ale jdou prelozit
i pro operacnı system MS Windows. Pod operacnım systemem Linux jsou pro preklad
nutne knihovny AutoConf, AutoMake a hlavne SDL. Preklad se provede posloupnostı
prıkazu ./configure a make. Pro detailnejsı popis moznostı je mozne se podıvat do souboru
INSTALL, do kapitoly tohoto textu o implementaci a do vypisu prıkazu ./configure –help.
66
Dodatek B. CD-ROM B.3. Vystupy
B.3 Vystupy
Na CD-ROM take muzeme najıt vystupy implementace a to v adresari cdrom://outputs.
Vsechny soubory byly vygenerovany ve formatu MPEG a prevedeny do formatu DivX.
Tento adresar obsahuje podadresare, ktere rozdelujı vystupy podle materialu pouzitych pri
simulaci. Dalsı delenı je podle typu zobrazenı.
B.4 Obrazky
Obrazky vkladane do tohoto textu ve formatu EPS1, ktere jsou pouzity pri vytvarenı posts-
criptove verze tohoto textu a obrazky ve formatu PDF2 (pro PDF verzi textu) jsou vytvoreny
vektorovym kreslıcım programem XFig a jsou v souborech s prıponou FIG. Ostatnı obrazky
ve formatu PNG3 jsou vytvoreny aplikacı a jsou prevedeny z formatu BMP. Vsechny obrazky
potrebne pro preklad jsou na patricnych mıstech v adresari se zdroji tohoto textu.
B.5 Licence a autorska prava
Veskere texty, vcetne zdrojovych kodu programu, byly psany textovym editorem VIM. Pro
preklad textu byl vyuzit sazecı program LATEX, pdfLATEX a BibTEX. Vsechny obrazky jsou
rucne kreslene programem XFig. Program pro preklad vyuzıva prekladac GCC a podpurne
systemy AutoConf, AutomMake a make. Soucastı programu je knihovna FFMpeg, ktera
je vyuzıvana pro vystup do videa. Program ke svemu behu vyuzıva knihovnu SDL a prıpadne
take libquicktime. Vsechny vyse jmenovane programy a knihovny jsou volne siritelne pod
licencı GPL.
1Encapsulated PostScript2Portable Document Format3Portable Network Graphics
67
Literatura
[1] Fabio Ganovelli, Federico Ponchio, Claudio Rocchini. Fast tetrahedron-tetrahedron over-
lap algorithm. Journal of Graphics Tools, 7(2):17–26, 2002.
[2] J. H. Heinbockel. Introduction to Tensor Calculus and Continuum Mechanics. Department
of Mathematics and Statistics, Old Dominion University, 1996.
[3] Koichi Hirota, Yasuyki Tanoue, Toyohisa Kaneko. Generation of crack patterns with a
physical model. The Visual Computer, 14(3):126–137, 1998.
[4] James F. O’Brien. Graphical Modeling and Animation of Fracture. PhD thesis, Georgia
Institute of Technology, Cerven 2000.
[5] William H. Press, Saul A. Teukolsky, Willian T. Vetterling, Brian P Flannery. Numerical
Recipes in C: the art of scientific computing. Cambridge university press, 2nd edition,
1992.
[6] Prof. Ing. Jirı Sejnoha, DrSc. Doc. Ing. Jitka Bittnarova, CSc. Pruznost a pevnost 10.
Vydavatelstvı CVUT, 1997.
[7] Jonathan Richard Shewchuk. An introduction to the conjugate gradient method without
the agonizing pain. Carnegie Mellon University, Pittsburgh, 1994.
[8] Jeffrey Smith, Andrew Witkin, David Baraff. Fast and controllable simulation of the
shattering of brittle objects. Graphics Interface, May 2000.
[9] Jeffrey Smith, Andrew Witkin, David Baraff. Fast and controllable simulation of the
shattering of brittle objects. Computer Graphics Forum, 20(2):81–91, 2001.
Vysazeno systemem pdfLATEX.
68