M. Šiňor, Modelování a vizualizace šíření elastických vln v obecném

Transkript

M. Šiňor, Modelování a vizualizace šíření elastických vln v obecném
České vysoké učení technické v Praze
Fakulta jaderná a fyzikálně inženýrská
Modelování a vizualizace šíření
elastických vln v obecném
nehomogenním prostředí
Milan Šiňor
Habilitační práce
Praha 2005
Obsah
Obsah
1 Úvod
6
2 Klasická teorie pružnosti
2.1 Elastická deformace . . . . . . . . . . . . . . . . . . . .
2.2 Tenzor napětí . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Rovnice statické rovnováhy . . . . . . . . . . . . . . . .
2.4 Symetrie tenzoru napětí . . . . . . . . . . . . . . . . . .
2.5 Hookův zákon . . . . . . . . . . . . . . . . . . . . . . . .
2.6 Tenzor elastických koeficientů pro izotropní těleso . . . .
2.7 Dynamické rovnice elastického tělesa . . . . . . . . . . .
2.8 Řešení pohybových rovnic pro izotropní elastické těleso .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
9
9
10
11
13
14
15
3 Soubor programů LISA
3.1 LISA/SIM v 1D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1 Šíření vln v homogenním prostředí . . . . . . . . . . . . . . . . . .
3.1.2 Šíření vln v heterogenním prostředí – ideální kontakt na rozhraní .
3.1.3 Šíření vln v heterogenní prostředí – neideální kontakt na rozhraní .
3.2 LISA/SIM ve 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Diskretizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.2 Neideální kontaktní rozhraní . . . . . . . . . . . . . . . . . . . . .
3.2.3 Diferenční schémata pro hraniční uzly výpočetní sítě . . . . . . . .
3.2.4 Generace kódu pro diferenční schéma . . . . . . . . . . . . . . . . .
3.3 LISA/SIM ve 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 Diskretizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.2 Generace kódu pro diferenční schéma . . . . . . . . . . . . . . . . .
3.4 Okrajové podmínky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5 Uložení napočítaných dat – formát NetCDF . . . . . . . . . . . . . . . . .
3.6 Vstupní data pro soubor programů LISA . . . . . . . . . . . . . . . . . . .
3.6.1 Vstupní signály . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
18
18
18
19
20
22
23
28
28
29
30
31
33
33
36
43
44
4 Ilustrační výsledky
4.1 Ukázky filmových sekvencí a souborů VRML . . . . . . . . . . . . . . . . . .
45
56
5 Závěr
62
A Ukázka sestavení výpočetního schématu pro 2D úlohu
A.1 2D schéma – kód v jazyce REDUCE . . . . . . . . . . . . . . . . . . . . . . .
A.2 2D schéma – šablona pro generaci zdrojového kódu v jazyce C . . . . . . . .
A.3 2D schéma – zdrojový kód v jazyce C . . . . . . . . . . . . . . . . . . . . . .
63
63
67
68
B Ukázka CDL reprezentace netCDF souboru
69
C Příklad vstupního souboru pro program LISA 2D
71
D Ukázka generace vstupního souboru ve formátu netCDF
73
E Příklad vytvoření MPEG animace v Matlabu
77
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Seznam obrázků
Seznam obrázků
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Rozdělení intervalu i do dvou pod-intervalů (i)+ a (i)− a zobrazení vnitřních sil. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Časový vývoj vlny v 1D při odrazu na materiálovém rozhraní. . . . . . . . .
Numerická mřížka kolem bodu (i, j) s dodatečnými body (i ± δ, j ± δ). . . .
Blízké okolí bodu (i, j) s dodatečnými body (i ± δ, j ± δ) a (i ± , j ± δ),
(i ± δ, j ± ), kde δ ∆x ∼ ∆y. . . . . . . . . . . . . . . . . . . . . . . .
Rozdělení buňky a zobrazení sil ve 2D. . . . . . . . . . . . . . . . . . . . . .
Ilustrace volných (vlevo) a radiačních (absorpčních) okrajových podmínek. . .
Ilustrace volných okrajových podmínek. . . . . . . . . . . . . . . . . . . . . .
Ilustrace absorpčních (radiačních) okrajových podmínek. . . . . . . . . . . . .
Ukázka aplikačního rozhraní programu Ncview. . . . . . . . . . . . . . . . . .
Ukázka aplikačního rozhraní programu ncBrowse. . . . . . . . . . . . . . . . .
Odraz rovinné vlny na rozhraní plexisklo-hliník. . . . . . . . . . . . . . . . . .
Příklad lokalizace numerické nestability s pomocí napočtených dat uložených
v netCDF souboru. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Časový vývoj šíření energie v Brazilském sendvičovém disku. . . . . . . . . .
Ukázka použití funkce sliceit v prostředí Matlab. . . . . . . . . . . . . . . .
Ukázka programu VRMLview s 3 otevřenými VRML soubory. . . . . . . . . .
Příklad zobrazení materiálových vstupních parametrů pro programy LISA. .
Interakce dvou Gaussových pulsů reprezentujících podélné složky posunutí
v homogenním prostředí při absorpčních okrajových podmínkách. . . . . . . .
Odraz Gaussové podélné vlny na rozhraní plexisklo–hliník při absorpčních
okrajových podmínkách. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rozptyl Gaussové podélné vlny na otvoru ve skle. Zobrazena je podélná složka
posunutí. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rozptyl Gaussové podélné vlny na otvoru ve skle. Zobrazena je příčná složka
posunutí vlny. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rozptyl gaussovského pulsu na podélné trhlině ve skle při absorpčních okrajových podmínkách. Zobrazena je podélná (vlevo) a příčná složka posunutí. . .
Příklad šíření podélné vlny s Gaussovým profilem v hliníku při uvažování
útlumu. V levém sloupci je řešení bez útlumu, v pravém rozdíl mezi vlnou
netlumenou a při započtení útlumu. . . . . . . . . . . . . . . . . . . . . . . .
Vliv konečného rozměru výpočetní sítě a „schodovitéhoÿ rozhraní na gaussovský puls na rozhraní sklo–hliník. V levém sloupci je podélná složka posunutí na
síti 50×50. V pravém sloupci je rozdíl amplitud na sítích o rozměrech 100×100
a 50×50. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Šíření energie v Brazilském sendvičovém disku z plexiskla, ve kterém je tenká
hliníková vložka a trhlina podél této vložky. Disk je zatížen vnější bodovou
silou na okraji trhliny. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rozptyl gaussovského pulsu na hliníkové kouli v plexisklu při volných okrajových podmínkách. Zobrazena je podélná složka posunutí. . . . . . . . . . . .
Interakce dvou Gaussových pulsů v homogenním prostředí ve 3D při volných
okrajových podmínkách. Zobrazena je podélná složka posunutí. . . . . . . . .
Interakce čtyř Gaussových svazků v homogenním prostředí. . . . . . . . . . .
3
19
21
24
25
27
35
36
36
38
39
40
40
41
42
42
43
46
47
48
49
50
51
52
53
54
55
56
Seznam obrázků
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Odraz Gaussové podélné vlny na rozhraní plexisklo–hliník. Absorpční okrajové
podmínky, (I). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Odraz Gaussové podélné vlny na rozhraní plexisklo–hliník. Absorpční okrajové
podmínky, (II). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rozptyl Gaussové vlny na trhlině ve skle, (I). . . . . . . . . . . . . . . . . . .
Rozptyl Gaussové vlny na trhlině ve skle, (II). . . . . . . . . . . . . . . . . . .
Rozptyl Gaussové vlny na trhlině ve skle, (III). Superponované vektorové pole
reprezentuje podélnou složku rychlosti. . . . . . . . . . . . . . . . . . . . . . .
Rozptyl Gaussové vlny na trhlině ve skle otočené o 90◦ , (I). . . . . . . . . . .
Rozptyl Gaussové vlny na trhlině ve skle otočené o 90◦ , (II). . . . . . . . . . .
Rozptyl Gaussové vlny na trhlině ve skle otočené o 90◦ , (III). . . . . . . . . .
Rozptyl Gaussové vlny na kruhovém otvoru ve skle, (I). . . . . . . . . . . . .
Rozptyl Gaussové vlny na kruhovém otvoru ve skle, (II). . . . . . . . . . . . .
Rozptyl Gaussové vlny na kruhovém otvoru ve skle, (III). Superponované vektorové pole reprezentuje podélnou složku rychlosti. . . . . . . . . . . . . . . .
Rozptyl Gaussové vlny na kruhovém otvoru ve skle, (IV). Superponované vektorové pole reprezentuje podélnou složku rychlosti. . . . . . . . . . . . . . . .
Rozptyl Gaussové vlny na kruhovém otvoru ve skle, (V). Zobrazena je podélná
složka rychlostního pole. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rozptyl gaussovského pulsu modulovaného sin-usem na kruhové hliníkové vložce
v plexisklu, (I). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rozptyl gaussovského pulsu modulovaného sin-usem na kruhové hliníkové vložce
v plexisklu, (II). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rozptyl gaussovského pulsu modulovaného sin-usem na kruhové hliníkové vložce
v plexisklu, (III). Superponované vektorové pole reprezentuje podélnou složku
rychlosti. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rovinná vlna dopadající na akustickou čočku. Zobrazeno je pole podélných
posunutí, (I). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rovinná vlna dopadající na akustickou čočku. Zobrazeno je pole podélných
posunutí, (II). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rovinná vlna dopadající na akustickou čočku. Zobrazena je kinetická energie, (III). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rovinná vlna dopadající na akustickou čočku. Zobrazena je kinetická energie, (IV). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rozptyl gaussovského pulsu na kulové hliníkové vložce v plexisklu při volných
okrajových podmínkách. Zobrazena je podélná složka posunutí (I). . . . . . .
Rozptyl gaussovského pulsu na kulové hliníkové vložce v plexisklu při volných
okrajových podmínkách. VRML model reprezentuje podélnou složku posunutí
v čase T = 150, (II). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rozptyl gaussovského pulsu na kulové hliníkové vložce v plexisklu při volných
okrajových podmínkách. VRML model reprezentuje podélnou složku posunutí
v čase T = 170, (III). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rozptyl gaussovského pulsu na kulové hliníkové vložce v plexisklu při volných
okrajových podmínkách. VRML model reprezentuje podélnou složku posunutí
v čase T = 190, (IV). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
56
56
56
57
57
57
57
57
58
58
58
58
58
59
59
59
59
60
60
60
60
61
61
61
Seznam obrázků
Poděkování
Rád bych na tomto místě poděkoval Prof. Ing. Ladislavu Drškovi, CSc. z katedry fyzikální
elektroniky FJFI ČVUT Praha za možnost zúčastnit se projektu EU Copernicus „Development of Mathematical Modelling and Computer Simulation Techniques for the Ultrasonic
Characterization of Structural Materialsÿ, v jehož rámci jsem se blíže seznámil s problematikou studia šíření elastických vln. Rovněž děkuji Doc. Ing. Richardu Liskovi, CSc. z téže
katedry za spolupráci v rámci tohoto projektu a za první verze programů v systému Reduce
pro generaci diferenčních schémat. A v neposlední řadě bych rád poděkoval Ing. Věře Šumové,
která spolupracovala na vývoji diferenčních schémat v případě neideálního kontaktního rozhraní v rámci své diplomové práce [131].
Technická poznámka
Tato práce je napsána ve formátu LATEX [2, 3, 4] a přeložena programem pdfTEX [5], což
představuje jednu z možností, jak můžeme získat dokument ve formátu PDF [6] s aktivními
hypertextovými odkazy. V práci jsou odkazy1 na soubory typu MPEG [91], VRML [72] a
netCDF [52], které jsou uloženy na adrese [1], kde je také k dispozici PDF verze této práce.
Pro soubory MPEG z celé řady multimediálních prohlížečů na platformě Microsoft Windows
můžeme doporučit Sport Video Player [89], vyhovující je také Microsoft Windows Media Player 10 [90]. Pod Linuxem je vhodný např. MPEG Player [87]. Pro práci s VRML soubory
mohu doporučit pod Microsoft Windows např. Cortona VRML Client [76]. Podrobnější informace k souborům MPEG jsou uvedeny v části 4 a k formátům VRML a netCDF v části 3.5.
1
Které jsou aktivní v elektronické verzi tohoto dokumentu.
5
1. Úvod
1
Úvod
Šíření akustických vln v pevných látkách představuje základ ultrazvukových metod diagnostiky materiálů a defektoskopie konstrukcí. Kvantitativní vyšetřování vlastností a struktury
materiálu ultrazvukovými metodami je v podstatě inverzní problém, k jehož řešení je nezbytný model šíření a rozptylu akustických vln. Obecnější konstitutivní vztahy moderních
materiálů omezují použití analytických přístupů k řešení vlnového problému. Proto je nezbytné hledat řešení pomocí numerických metod jako jsou např. metoda konečných diferencí
(MKD) a metody konečných prvků (MKP). Zmíněné numerické metody sice umožňují řešit mnohem obecnější problémy, nicméně je užitečné si uvědomit, že představují numerickou
aproximaci řešení problému mechaniky kontinua a tedy v limitním případě pro ně platí stejné
předpoklady. Přístup metody LISA (Local Interaction Simulation Approach) [7–10], který je
rozpracován v této práci, vychází z obecného předpisu interakce mezi sousedními uzly. Pro
řešení vlnové rovnice formálně připomíná MKD. Pro metodu LISA vyvíjíme stejnojmenný
programový balík, který je možné využít např. pro analýzu:
a) refrakce akustických vln na rozhraní tekutina-pevná látka,
b) šíření akustických vln v anizotropním elastickém prostředí,
c) šíření vln ve vícefázovém (po částech homogenním) materiálu,
d) nehomogenní prostředí s neideálním rozhraním,
e) vnitřní nespojitosti prostředí (typu trhlina).
A to pro různé druhy buzení (silové, kinematické, různé tvary pulsů . . . ). Jako výsledek numerických simulací je možné získat pulsní odezvu materiálu a z ní mohou být vyhodnoceny
rychlosti a útlumové charakteristiky jednotlivých typ vln.
Tato práce je zamýšlena jako jistá příprava na kvantifikaci ultrazvukových měřeni, tzn. vyšetřování vlastností a struktury takových materiálů jako jsou intermetalika (materiály s tvarovou pamětí, vícefázové materiály, vysokoteplotní slitiny), kompozity nebo biomateriály (např.
kostní tkáň).
V práci je také kladen důraz na vizualizaci řešení získaných numerickými výpočty, v tomto
případě pro šíření elastických vln. Jsem přesvědčen, že vizualizace dat výrazně přispívá k pochopení studované problematiky, a proto je např. důležitá pro studenty, kteří se s uvedenou
problematikou teprve seznamují.
6
2. Klasická teorie pružnosti
2
Klasická teorie pružnosti
V této práci se věnujeme šíření elastických vln zejména v pevných látkách. Pochopitelně se
jedná o velmi širokou problematiku, a proto zde budou pouze naznačeny některé základní
principy z této oblasti.
Proto je v této části uveden pouze velmi stručný, přesto snad dostatečně ucelený nástin
odvození základních rovnic, ze kterých budeme vycházet při numerickém studiu šíření elastických vln v obecném nehomogenním prostředí. Mezi základní literární prameny ke studiu
této problematiky můžeme zařadit alespoň publikace [11–14]. Pro hlubší studium je možné
doporučit celou řadu publikací, zmiňme zde alespoň [15–22].
Ze zkušenosti víme, že napětí a deformace jsou ve vzájemném vztahu, který charakterizuje
elastické vlastnosti daného prostředí. Tento vztah je závislý na fyzikálním i chemickém složení
prostředí, na jeho krystalické struktuře, na vnějších termodynamických podmínkách apod.
Tyto okolnosti nás nutí studovat elastické vlastnosti zvlášť u látek skupenství pevného a
zvlášť u látek skupenství kapalného a plynného.
Při následujícím studiu elastických vlastností pevných látek se omezíme na malé deformace a budeme dále předpokládat, že vztah mezi napětím a deformací je lineární. Příslušná
teorie se nazývá klasická nebo též lineární teorie pružnosti.
2.1
Elastická deformace
Uvažujme nyní pevné, elastické těleso v klidovém stavu a bod P o souřadnicích P (x, y, z)
v tomto tělese. Působením vnějších sil (a také tepla, elektrického pole atd.) dochází k elastickému posunutí tohoto bodu. Označme si jeho nové souřadnice P 0 (x0 , y 0 , z 0 ). Dále předpokládáme, že tyto nové souřadnice jsou funkcemi2 prostoru a času a můžeme proto zavést vektor
posunutí 3 u jako

  0
 

u1 (x, y, z, t)
x (x, y, z, t)
x
u(x, y, z, t) =  u2 (x, y, z, t)  =  y 0 (x, y, z, t)  −  y  .
(1)
0
u3 (x, y, z, t)
z (x, y, z, t)
z
Pokud označíme x ≡ x1 , y ≡ x2 , z ≡ x3 , můžeme předchozí vztah zapsat v kompaktním
tvaru:
x0i = xi + ui (xj , t) .
(2)
K posouzení deformace tělesa ovšem musíme vzít v úvahu body dva. Proto kromě bodu
P uvažujme v nedeformovaném tělese ještě bod Q, který je infinitesimálně vzdálen od bodu
P a jeho souřadnice označme xi + dxi . Souřadnice bodů P a Q před deformací jsou tedy
xi a xi + dxi . Dále označme souřadnice bodů P 0 a Q0 , které odpovídají poloze bodů P a Q
v deformovaném stavu tělesa jako x0i a x0i + dx0i .
Ze vztahu (2) plyne pro dx0i vyjádření (v Taylorově rozvoji funkce ui (xj + dxj ) zanedbáme
členy vyšších řádů):4
∂ui
∂ui
0
dxi = dxi +
dxj = δij +
dxj .
(3)
∂xj
∂xj
2
O všech funkcích zde předpokládáme, že jsou spojité a mají spojité parciální derivace všech potřebných
řádů.
3
Někdy se nazývá také přetvoření, viz např. [14].
4
V tomto textu používáme standardním způsobem Einsteinovo sumační pravidlo.
7
2.1
Elastická deformace
kde δij je Kroneckerův symbol (Kroneckerovo delta).
Srovnejme nyní čtverec vzdálenosti obou bodů v původním a v deformovaném stavu
tělesa. Označíme-li ds vzdálenost bodů P Q a ds0 vzdálenost P 0 Q0 , máme pro čtverce těchto
vzdáleností vyjádření
ds2 = dxi dxi = δjk dxj dxk ,
(4)
02
ds =
dx0i dx0i
=
∂ui
δij +
∂xj
∂ui
δik +
dxj dxk .
∂xk
Upravíme-li poslední výraz, dostáváme
∂uj
∂ui ∂ui
∂uk
02
ds = δjk +
+
dxj dxk .
+
∂xk
∂xj
∂xj ∂xk
(5)
(6)
K posouzení změny ve vzdálenosti obou bodů vezměme rozdíl ds02 − ds2 , který můžeme
psát ve tvaru
ds02 − ds2 = 2jk dxj dxk ,
(7)
kde veličiny jk definované vztahem
2jk =
∂uj
∂uk
∂ui ∂ui
+
+
,
∂xk
∂xj
∂xj ∂xk
j, k = 1, 2, 3
(8)
jsou v indexech j, k symetrické.
Všimněme si, že při jk = 0 pro všechny kombinace indexů j a k je ds02 = ds2 . Vzdálenost obou bodů se proto za těchto okolností nezměnila. To znamená, že mohlo dojít pouze
k translaci obou bodů anebo k rotaci jednoho bodu kolem druhého. Samozřejmě je také
možné, že se poloha obou bodů vůbec nezměnila. Pokud jsou veličiny jk různé od nuly, je
z rovnice (7) zřejmé, že dochází ke změně vzdálenosti obou bodů a jk popisují deformaci
tělesa.
Ze stejné rovnice je také zřejmé, že veličiny jk jsou složkami tenzoru druhého řádu, který
je symetrický. Tento tenzor se nazývá tenzorem konečné (velké) deformace.
Derivace druhého řádu v definici (8) ovšem výrazně komplikují další operace s tímto tenzorem. Proto se v následujícím textu ve výrazech pro složky deformací omezíme na lineární
členy. Zavádí se tak pojem malých deformací, při nichž předpokládáme, že složky posunutí
ui a jejich derivace jsou tak malé, že je můžeme zanedbat ve srovnání s 1. Proto také můžeme předpokládat, že součiny těchto derivací můžeme zanedbat oproti derivacím samotným.
Složky malé deformace označíme ejk .
Složky malé deformace dostaneme proto z rovnice (8) zanedbáním kvadratických členů:
1 ∂uj
∂uk
ejk =
+
.
(9)
2 ∂xk
∂xj
Veličiny ejk jsou opět složkami symetrického tenzor druhého řádu, který se nazývá tenzorem
malé deformace.
8
2.2
Tenzor napětí
2.2
Tenzor napětí
Na objemový element uvnitř deformovaného tělesa působí obecně dva druhy sil a to síly
objemové a síly plošné.
Síla objemová působí na jednotlivé objemové elementy tělesa a je úměrná hmotě v tomto
elementu obsažené. Vztáhneme ji na jednotku objemu a označíme F , se složkami v kartézské
soustavě souřadnic Fi . Na objemový element dV bude tedy působit objemová síla F dV ,
přičemž za působiště této síly lze zvolit libovolný bod elementu dV .
Všimněme si nyní plošných sil působících na povrch námi uvažovaného objemového elementu. Plošná síla, působící na plošný element dS, je úměrná jeho velikosti, tj. má tvar T dS,
přičemž vektor T se nazývá vektorem napětí.
Síla T dS vyjadřuje vzájemné silové působení na plošce dS dvou částí uvažovaného tělesa,
které k této plošce z obou stran přiléhají. Je zřejmé, že podle principu akce a reakce jsou
síly, kterými působí první část na druhou a druhá část na první, stejně velké, ale opačného
směru. Záleží tedy na dohodě, kterou z těchto sil označíme +T dS a kterou −T dS. Při volbě
postupujme takto: ploška dS nechť je částí myšlené uzavřené plochy S, která vyděluje z tělesa
určitý konečný objem. Pak směr vnější normály ν plošky dS označujeme za kladný a za sílu
napětí +T dS pokládáme tu plošnou sílu, která působí na element dS z vnější strany plochy S,
tj. ze strany kladné normály. Přitom obecně směr vektoru napětí T nesplývá se směrem vnější
normály ν - napětí T proto nezávisí jen na poloze plošného elementu, ale i na jeho orientaci.
ν
Abychom tuto závislost vyjádřili explicitně, budeme pro vektor napětí užívat označení T .
Tímto symbolem rozumíme napětí, které působí na jednotkovou plošku, jejíž normála je ν.
ν
ν
Průmět vektoru T do směru normály ν, tj. normálová složka vektoru T , se nazývá norν
ν
málovým napětím a obdobně průmět vektoru T do tečné roviny, tj. tečná složka T , se nazývá
tečným napětím nebo také smykovým napětím.
Poté je možné zavést tenzor τij vztahem
ν
T i = τij νj ,
(10)
který se nazývá tenzorem napětí. Podobně jako u tenzoru deformace se jedná o symetrický
tenzor druhého řádu se šesti navzájem různými prvky, což je ukázáno v části 2.4.
2.3
Rovnice statické rovnováhy
Nyní můžeme přejít k odvození podmínek rovnováhy deformovaného elastického tělesa. Přitom předpokládáme, že na uvažované těleso v nedeformovaném stavu nepůsobily žádné síly
a že ani uvnitř, ani na jeho povrchu nevznikla žádná elastická posunutí.
Aby bylo tuhé těleso v rovnováze, musí vymizet výslednice působících vnějších sil a jejich
výsledný moment. Přitom vnitřní síly nepřicházejí v úvahu. To znamená, že kdybychom použili těchto podmínek na celé elastické těleso, vypadla by nám vnitřní napětí, ačkoliv je určení
vnitřních napětí jedním z hlavních úkolů teorie pružnosti. Musíme tedy podmínky rovnováhy
formulovat tak, aby se vnitřní plošné síly staly vnějšími. Přitom víme, že za rovnovážného
stavu je v rovnováze nejen celé těleso schopné deformace, ale i kterákoliv jeho část. Plošné
síly, které působí na povrch kterékoliv myšlené části tělesa, jsou pak vzhledem k této části
již silami vnějšími.
Mysleme si, že z uvažovaného deformovaného tělesa je vydělena část o objemu V a povrchu S. Složky výslednice objemových sil působících na hmotu obsaženou v objemu V jsou
9
2.4
Symetrie tenzoru napětí
dány rovnicí
(V )
Ri
Z
Fi dV .
=
(11)
V
Na povrch S působící plošné síly dávají výslednici, jejíž složky jsou dány rovnicí
Z
ν
(S)
Ri =
T i dS .
(12)
Má-li být nulová výslednice působících sil, musí být nulové i její složky, tedy
Z
Z
ν
Fi dV +
T i dS = 0 .
(13)
S
S
V
ν
Tuto rovnici upravíme tak, že ve druhém integrálu nahradíme nejdříve T i výrazem τij νj a
pak jej převedeme na objemový integrál pomocí Gaussovy věty [23]. Předpokládáme přitom,
že jsou splněny podmínky pro použití této věty, tj. že funkce τij a jejich první derivace jsou
spojité a jednoznačné v celém oboru V .
Platí tedy
Z
Z
Z
∂τij
T νi dS =
τij νj dS =
dV ,
(14)
S
V ∂xj
S
a rovnici (13) je možné napsat ve tvaru:
Z ∂τij
Fi +
dV = 0 .
∂xj
V
(15)
O funkcích Fi rovněž předpokládáme, že to jsou spojité funkce souřadnic, takže celý
integrand v (15) je spojitý. Vzhledem k tomu, že objem V byl volen zcela libovolně, je
zřejmé, že se integrál na levé straně rovnice (15) rovná nule tehdy, je-li jeho integrand roven
nule identicky. Dostáváme tak rovnice statické rovnováhy elastického tělesa ve tvaru
∂τji
+ Fi = 0 .
∂xj
2.4
(16)
Symetrie tenzoru napětí
Další podmínkou rovnováhy je vymizení složek výsledného momentu objemových a plošných
sil. Zde postupujeme obdobným způsobem jako u rovnic statické rovnováhy v předchozím
odstavci 2.3. Vztahy pro složky momentů objemových resp. plošných sil M (V ) a M (S) je
možné psát ve tvaru [16]:
Z
(V )
Mi
(S)
Mi
=
εijk xj Fk dV ,
(17)
V
Z
=
ν
εijk xj T k dS ,
(18)
S
kde εijk reprezentuje Levi-Civitův tenzor třetího řádu [16], který je antisymetrický ve všech
indexech, přičemž jeho nenulové složky nabývají hodnot +1 při sudé permutaci jeho indexů
a hodnot −1 pro permutace indexů liché.
Podmínka
M (V ) + M (V ) = 0
(19)
10
2.5
Hookův zákon
má ve složkovém vyjádření tvar
Z
Z
εijk xj Tkν dS = 0 .
εijk xj Fk dV +
(20)
S
V
ν
Zde opět nahradíme T k výrazem τlk νl podle rovnice (10) a pak použijeme Gaussovu větu.
Tak postupně dostáváme
Z
Z
Z
ν
∂
εijk xj τlk νl dS =
εijk xj T k dS =
(εijk xj τlk ) dV
V ∂xl
S
S
Z
Z
∂τlk
∂τlk
εijk δjl τlk + xj
εijk τjk + xj
=
dV =
dV .
(21)
∂xl
∂xl
V
V
Zavedeme-li tento vztah do rovnice (20), dospíváme k rovnici
Z
∂τlk
εijk xj Fk + τjk + xj
dV = 0 .
∂xl
V
(22)
Z podmínek rovnováhy ovšem plyne:
takže dostáváme
∂τlk
= −Fk ,
∂xl
(23)
εijk τjk dV = 0 .
(24)
Z
V
Spojitost integrandu a libovolnost oboru V vedou k závěru
εijk τjk = 0 .
(25)
Aby εijk nabývalo nenulových hodnot, musí být všechny tři indexy i, j, k navzájem různé.
Pak však v každé ze tří rovnic, které rovnice (25) reprezentuje, jsou z devíti členů levé strany
vždy pouze dva nenulové, liší se navzájem pouze transpozicí indexů j a k. Proto platí
τij = τji
(26)
a tenzor napětí je tenzorem symetrickým.
2.5
Hookův zákon
K aplikaci rovnic uvedených v předchozí části zbývá určit vztah mezi tenzorem napětí τ a
tenzorem deformace e. Tento vztah se nazývá Hookův zákon [15].
Hookův zákon můžeme v jednorozměrném případě psát ve tvaru
τ = E e.
(27)
V tomto případě se τ nazývá prostě napětím, e relativním prodloužením a konstanta E
Youngovým modulem pružnosti (modulem pružnosti v tahu).
Při zobecnění Hookova zákona na vícerozměrný systém se opět omezíme na lineární teorii
pružnosti, tj. budeme předpokládat, že deformace jsou charakterizovány složkami tenzoru
11
2.5
Hookův zákon
malých deformací ekl a složky tenzoru napětí τij jsou jejich lineárními funkcemi. Vzhledem
k symetrii tenzorů ekl a τij tak dostáváme šest rovnic, které můžeme zapsat ve tvaru
τij = Cijkl ekl .
(28)
Tenzor Cijkl je čtvrtého řádu a jeho složky se nazývají elastickými koeficienty. Tenzor
Cijkl má obecně 34 = 81 složek. Z rovnice (28) je ovšem zřejmé, že tenzor Cijkl je symetrický
jak v indexech i a j, tak v indexech k a l. Vzhledem k této symetrii by mělo být obecně
6 × 6 = 36 elastických koeficientů. Z energetických úvah5 ovšem vyplývá, že tenzor Cijkl je
symetrický i při záměně první dvojice indexů s druhou a proto platí:
Cijkl = Cklij .
(29)
Je-li první dvojice indexů v Cijkl shodná s druhou, je rovnice (29) splněna identicky –
takových případů může nastat 6. Pro zbývajících 30 elastických koeficientů máme 15 relací
podle (29), takže nezávislých koeficientů tenzoru Cijkl je nakonec z původních 81 pouze
6 + 15 = 21.
Protože nezávislých koeficientů je méně než 36, je možné elastické koeficienty místo čtyřindexových symbolů reprezentovat pomocí matice cαβ s 2 indexy , kde α a β nabývají hodnoty
1, 2, . . . , 6. Při tomto zápisu užíváme tzv. Voightovu konvenci, která je stanovena takto: Je-li
i = j, nebo k = l, je α = i a β = k, takže např. C1122 = c12 . Je-li i 6= j, je α rovna zbývajícímu
číslu z posloupnosti 1, 2, 3 zvětšenému o 3; stejně tak je tomu s β, je-li k 6= l. Tedy např.
C1233 = c63 , C2223 = c24 , C3123 = c54 .
V kompaktním tvaru můžeme Voightovu konvenci zapsat následovně:
Cijkl = cV (i,j)V (k,l) ,
(30)
V (i, j) = iδij + (1 − δij )(9 − i − j).
(31)
kde
Z rovnice (29) je pak zřejmé, že matice cαβ je symetrická, tj. pro její prvky platí:
cαβ = cβα ,
α, β = 1, 2, . . . , 6 .
(32)
Soustavu 6 nezávislých rovnic (28) je pak možné napsat v maticovém tvaru následovně [16]:








τ11
τ22
τ33
τ23
τ31
τ12


 
 
 
=
 
 
 
c11
c21
c31
c41
c51
c61
c12
c22
c32
c42
c52
c62
c13
c23
c33
c43
c53
c63
c14
c24
c34
c44
c54
c64
c15
c25
c35
c45
c55
c65
c16
c26
c36
c46
c56
c66








e11
e22
e33
2e23
2e31
2e12




.



(33)
Těchto 21 nezávislých koeficientů odpovídá nejobecnějšímu případu anizotropie, který
přísluší krystalické soustavě trojklonné (triklinické). Například jednoklonný krystal má 13
nezávislých koeficientů a krychlová soustava tři [17].
V této práci nás bude zajímat rovněž soustava kosočtverečná (rombická), která má všechny
3 krystalové osy navzájem kolmé. V tomto případě se také mluví o ortotropním materiálu.
5
Podrobněji viz např. [16].
12
2.6
Tenzor elastických koeficientů pro izotropní těleso
Je možné ukázat [17], že kosočtverečná soustava má 9 nezávislých elastických koeficientů a
matice elastických koeficientů má následující strukturu:


c11 c12 c13 0
0
0
 c21 c22 c23 0
0
0 


 c31 c32 c33 0
0
0 
.

c=
(34)
0
0 c44 0
0 

 0
 0
0
0
0 c55 0 
0
0
0
Pro prvky tenzoru Cijkl se v tomto případě

σ1 λ12 λ13

σ2 λ23


σ3
c=



2.6
0
0
c66
používá také následující zápis:

0
0
0
0
0
0 

0
0
0 
.
µ23 0
0 

µ13 0 
µ12
(35)
Tenzor elastických koeficientů pro izotropní těleso
Jako názorný příklad si můžeme uvést odvození elastických koeficientů v nejjednodušším
případě, tj. pro izotropní materiál [13], který má stejné vlastnosti nezávisle na směru. V tom
případě se šest nezávislých složek tenzoru napětí stává funkcemi šesti nezávislých složek
tenzoru deformace a naopak a problém se tak výrazně zjednoduší.
Představme si, že působíme malou silou na elastickou tyč ve směru osy x a vyvoláváme
tak napětí τ11 . Tyč se úměrně tomuto napětí natáhne podle Hookova zákona (27):
1
τ11 .
(36)
E
Je ovšem také rozumné předpokládat, že se tyč na úkor tohoto prodloužení v ostatních
směrech zkrátí. A protože uvažujeme izotropní materiál, není důvod, aby se e22 a e33 od sebe
lišily. Dostáváme tak
e22 = e33 = −ν e11 ,
(37)
e11 =
kde ν se nazývá Poissonova konstanta. Ze zákonů termodynamiky vyplývá, že −1 ≤ ν ≤ 21 ,
ovšem pro většinu materiálů je 0 < ν < 12 [13]. Idealizaci nestlačitelného materiálu pak
odpovídá ν = 12 .
S využitím (36) můžeme tuto rovnici přepsat na tvar
ν
e22 = e33 = − τ11 .
(38)
E
Pokud tuto úvahu zobecníme na působení napětí ve všech třech dimenzích současně,
dostáváme vyjádření pro e11 , e22 a e33 ve tvaru
1
ν
ν
e11 = + τ11 − τ22 − τ33 ,
(39)
E
E
E
1
ν
ν
e22 = − τ11 + τ22 − τ33 ,
(40)
E
E
E
ν
1
ν
e33 = − τ11 − τ22 + τ33 .
(41)
E
E
E
(42)
13
2.7
Dynamické rovnice elastického tělesa
Pro příčné složky napětí a deformace platí vztahy:
τ12 = 2µ e12 , τ13 = 2µ e13 , τ23 = 2µe23 ,
(43)
kde µ ≥ 0 je příčný modul pružnosti, pro který platí [15]:
µ=
E
.
2(1 + ν)
(44)
Vztahy (39) a (43) můžeme proto zapsat ve tvaru








e11
e22
e33
e12
e13
e23


 
 
 
=
 
 
 
1/E −ν/E −ν/E
0
0
0
−ν/E 1/E −ν/E
0
0
0
−ν/E −ν/E 1/E
0
0
0
0
0
0
1/(2µ)
0
0
0
0
0
0
1/(2µ)
0
0
0
0
0
0
1/(2µ)
Inverzní vztah pak zapíšeme jako

 
τ11
λ + 2µ
λ
λ
 τ22  
λ
λ
+
2µ
λ

 
 τ33  
λ
λ
λ + 2µ

 
 τ12  = 
0
0
0

 
 τ13  
0
0
0
0
0
0
τ23
0
0
0
2µ
0
0
0
0
0
0
2µ
0
0
0
0
0
0
2µ



 
 
 
=
 
 
 

 
 
 
=
 
 
 
τ11
τ22
τ33
τ12
τ13
τ23
e11
e22
e33
e12
e13
e23




.



(45)




,



(46)
kde symbol λ označuje vztah
λ=
νE
.
(1 + ν)(1 − 2ν)
(47)
Parametr λ společně s µ se nazývají Lamého parametry.
Inverzní vztahy k (44) a (47) mají tvar
E=
2.7
µ (3λ + 2µ)
,
λ+µ
ν=
λ
.
2(λ + µ)
(48)
Dynamické rovnice elastického tělesa
Zatím jsme uvažovali pouze podmínky statické rovnováhy elastického tělesa a dospěli jsme
k rovnici (16), tj.
∂τij
+ Fi = 0 .
(49)
∂xj
Nyní chceme odvodit pohybové rovnice pro obecné elastické prostředí. Samozřejmě při
dynamických problémech předpokládáme, že ui , τij a Fi jsou obecně funkcemi nejen souřadnic
xi , ale také času t, a že mají spojité derivace potřebných řádů.
Od rovnic statické rovnováhy snadno dospějeme k rovnicím dynamickým, použijeme-li
d’Alembertova principu, viz. např. [23]6 . Podle d’Alembertova principu dostaneme pohybové
6
A pochopitelně např. http://www.google.com/search?q=+d’Alembert+principle,
http://en.wikipedia.org/wiki/D’Alembert’s principle
14
2.8
Řešení pohybových rovnic pro izotropní elastické těleso
rovnice připojením síly setrvačnosti k působícím objemovým a plošným silám. Síla setrvačnosti objemového elementu dV se rovná záporně vzatému součinu jeho hmotnosti a zrychlení.
Je tedy silou objemovou.
Označme ρ(xj , t) hustotu a ∂ 2 ui /∂t2 zrychlení uvažovaného objemového elementu7 . Hmotnost objemového elementu je ρ dV a pro sílu setrvačnosti dostáváme výraz
− ρ dV
∂ 2 ui
.
∂t2
(50)
Rovnice (50) se vztahuje na objemovou jednotku. To znamená, že nám stačí i sílu setrvačnosti vztáhnout na objemovou jednotku a připojit k Fi v rovnici (50). Tak dostáváme
pohybovou rovnici ve tvaru
∂τij
∂ 2 ui
+ Fi − ρ 2 = 0 ,
(51)
xj
∂t
resp. po formální úpravě ve tvaru
τij
∂ 2 ui
+ Fi = ρ
.
xj
∂t2
(52)
V této rovnici vystupují na pravé straně složky posunutí, na levé straně pak složky napětí.
S pomocí Hookova zákona můžeme tuto rovnici upravit tak, ze v ní budou vystupovat buď
jen složky posunutí nebo pouze složky napětí. Pro naše účely bude vhodný první způsob, tj.
vyjádříme τij pomocí rovnice (9) jako lineární funkce derivací posunutí ui . Tak dostáváme
pohybovou rovnici ve tvaru:
∂
∂ 2 ui
∂uk
+ Fi = ρ 2 .
(53)
Cijkl
∂xj
∂xl
∂t
Nyní nám ještě zbývá započítat vnější tření. V této práci předpokládáme, že je závislé
pouze na rychlosti a působí proti směru pohybu (viz např. [14]):
(R)
Fi
= Ri
∂ui
,
∂t
(54)
kde Ri jsou složky koeficientu tření.
Dostáváme tak elastodynamické rovnice ve tvaru, ze kterého budeme vycházet při numerickém řešení v následující části práce:
∂
∂uk
∂ 2 ui
∂ui
Cijkl
+ Fi = ρ
+ Ri
,
i, j, k, l = 1, 2, 3 .
(55)
∂xj
∂xl
∂t2
∂t
2.8
Řešení pohybových rovnic pro izotropní elastické těleso
Pro ilustraci si můžeme ukázat řešení vlnové rovnice (55) v nejjednodušším případě izotropního neohraničeného prostředí, kdy je možné získat analytické řešení. V tomto případě je
možné s využitím relace (46) zapsat pohybové rovnice (55) při zanedbání vnějších sil a tření
ve tvaru [16]:
∂2u
(λ + µ) grad div u + µ ∇u = ρ 2 .
(56)
∂t
7
Přesněji libovolného bodu tohoto elementu. Vzhledem k tomu, že jde o elementární objem, můžeme tyto
hodnoty připsat celému elementu.
15
2.8
Řešení pohybových rovnic pro izotropní elastické těleso
Tuto rovnici můžeme formálně zapsat také následovně:
(v12 − v22 ) grad div u + v22 ∇u =
kde
v12 =
λ + 2µ
,
ρ
v22 =
∂2u
,
∂t2
µ
.
ρ
(57)
(58)
Rovnici (57) je možné přepsat za pomoci Helmholtzovy věty8 o reprezentaci libovolného
vektorového pole ve tvaru součtu potenciálového (nevířivého) a solenoidálního (nezřídlového)
pole. Předpokládáme proto
u = u1 + u2
(59)
kde
rot u1 = 0 ,
(60)
div u2 = 0 .
(61)
Po dosazení (59) do (57) při uvážení (60), (61) dostáváme:
v12 grad div u1 − v22 rot rot u2 =
∂ 2 u1 ∂ 2 u2
+
.
∂t2
∂t2
Působením operátoru div na rovnici (62) dostáváme:
2
∂ u1
2
div
− v1 ∆ u1 = 0 .
∂t2
(62)
(63)
Současně však podle (60) platí
rot
∂ 2 u1
− v12 ∆ u1
∂t2
= 0.
(64)
Pokud je divergence a rotace vektorového pole rovna nule, pak je možné ukázat (např. [23]),
že musí být rovno nule i pole samotné a vektor u1 je proto určen řešením rovnice
∂ 2 u1
− v12 ∆ u1 = 0 ,
∂t2
což je ovšem vlnová rovnice s rychlostí vlnění
s
v1 =
λ+µ
.
ρ
(65)
(66)
Protože div u1 6= 0 , nazývají se tyto vlny vlnami kompresními nebo také vlnami stlačení a
expanze.
Obdobným postupem při obrácení operací rot a div je možné získat vlnovou rovnici pro u2 :
∂ 2 u2
− v22 ∆ u2 = 0 ,
∂t2
8
Např. http://www.google.com/search?q=Helmholtz+theorem
16
(67)
2.8
Řešení pohybových rovnic pro izotropní elastické těleso
přičemž tyto vlny se šíří rychlostí
r
v2 =
µ
ρ
(68)
a nazývají se vlnami torzními, neboť posunutí částic v této vlně vede ke smykové deformaci
rot u2 6= 0 bez změny objemu div u2 = 0 .
Jako nejjednodušší příklad předpokládejme nyní řešení ve tvaru rovinné vlny:
U1
i(kr−ωt)
u=Ue
,
U=
,
(69)
U2
kde k je vlnový vektor a U amplituda. Po dosazení (69) do vlnových rovnic (65) a (67) při
respektování podmínek (60) a (61) dostaneme pro kompresní vlnu relace
v1 =
ω
,
k
k × U1 = 0
(70)
a pro torzní vlnu vztahy
ω
,
k U2 = 0 .
(71)
k
Z (70) je patrné, že kompresní vlny jsou vlnami podélnými a z relace (71) vyplývá, že torzní
vlny jsou vlny příčné .
Obecně ale mohou existovat 3 typy objemových vln šířících se 3 obecně různými rychlostmi. Těmto vlnám přísluší různé směru polarizace, které jsou navzájem ortogonální. Nechť
n je směr šíření fáze a U (j) , j = 1, 2, 3 vektory polarizace jednotlivých módů. Pak mohou
nastat 2 situace:
v2 =
1. Pokud má jeden z vektorů U (j) směr shodný s n, pak se tento mód nazývá podélný (longitudinal) a zpravidla se označuje L. Zbývající 2 módy, jejichž polarizace leží v rovině
kolmé na k, se nazývají příčnými (transverse) a označují se Ti 9 .
2. Pokud žádný z vektorů U (j) nesplňuje předchozí podmínku, vybere se mód, jehož vektor
polarizace U (j) svírá s k nejmenší úhel (zřejmě menší než π/4). Tento mód se pak
nazývá kvazipodélným qL a zbývající módy kvazipříčnými qT .
Způsoby značení módů nejsou ale jednotné, používá se např. označení S (shear ) místo
T (transverse).
Reálné prostředí je ovšem prostorově omezené a na chování vln mají významný vliv okrajové podmínky. Proto kromě popsaných „objemovýchÿ vln existuje i celá řada vln povrchových, mezi které patří vlny Rayleighovi, Loveho a Lambovi. Tato problematika je podrobněji
rozebrána např. v [17, 19, 20].
9
Jak jsme viděli na příkladu izotropního prostředí, v některých speciálních případech postupují oba příčné
módy společně a vzniká tak obecně elipticky polarizovaná vlna, která se označuje T .
17
3. Soubor programů LISA
3
Soubor programů LISA
Mějme elastodynamickou vlnovou rovnici ve tvaru (55). Analytické řešení tohoto systému
rovnic je možné pouze pro jisté specifické a relativně vzácné případy. V případě zcela obecného
nehomogenního prostředí a při obecných okrajových podmínkách analytické řešení zpravidla
neexistuje a vlnovou rovnici je proto nutné řešit numericky s použitím počítače. K tomu
je nejprve třeba soustavu řešených rovnic diskretizovat, dále pak určit numerické vlastnosti
(např. stabilitu) a nakonec napsat samotný numerický kód. K numerickému řešení je možné
použít např. metodu konečných prvků (MKP, FEM)10 či některou z jejich variant a nebo
některou z metod konečných diferencí (MKD, FDM) 11 .
V této práci se budeme věnovat jedné z variant metody konečných diferencí, kterou nazýváme LISA/SIM – Local Interaction Simulation Approach / Sharp Interface Model. S touto
metodou přišel zřejmě první P. P. Delsanto [7,8] a v našem případě se jedná o jisté zobecnění
uvažováním vnějších sil v pohybové rovnici a také započtením útlumových členů. Při diskretizaci rovnic využijeme systém počítačové algebry. V neposlední řadě odvozená diferenční
schémata implementujeme v rámci poměrně obecných počítačových programů.
3.1
LISA/SIM v 1D
Princip metody je nejlépe vidět pro jednorozměrnou případ, proto se nejdříve zaměříme na 1D
úlohu. Výklad rozdělíme do tří částí. Nejprve odvodíme diferenční schéma pro šíření akustické
vlny v homogenním prostředí. Poté se zaměříme na heterogenní materiál složený z několika
homogenních částí s ideálním kontaktním rozhraním. A za třetí odvodíme diferenční schéma
pro heterogenní materiál s neideálními kontaktními přechody mezi jednotlivými materiály.
3.1.1
Šíření vln v homogenním prostředí
V případě jednorozměrného prostředí při zanedbání vnějších sil a tření přejde rovnice (55)
na jednoduchý tvar:
∂2u
∂2u
C
=
ρ
.
(72)
∂x2
∂t2
Předpokládejme homogenní prostředí na určitém konečném úseku, který rozdělíme na n
menších intervalů. Délku intervalů označme a nechť platí, že n je rovno délce celého úseku.
Hmotnost každého úseku je pak m = ρ a budeme ji lokalizovat do středu tohoto intervalu.
Každý i-tý interval interaguje se svými dvěma sousedními intervaly i ± 1 silami Fi± danými
rovnicemi
Fi± = τi± = Cηi± = C (ui±1 − ui ) / ,
(73)
kde τi± je napětí na obou rozhraních i -tého intervalu, C je tuhost materiálu, ηi± deformace a
ui označuje výchylku intervalu z rovnovážné polohy. Dále ze známé pohybové rovnice víme,
že pro každý i-tý interval platí
∂2u
= Fi+ + Fi− .
(74)
∂t2
10
11
Více např. http://www.google.com/search?q=finite+elements+method.
Např. http://www.google.com/search?q=finite+difference+method.
18
3.1
LISA/SIM v 1D
Obrázek 1: Rozdělení intervalu i do dvou pod-intervalů (i)+ a (i)− a zobrazení vnitřních sil.
Do rovnice (74) dosadíme za síly F z rovnice (73) a pro druhou derivaci podle času
použijeme standardní diferenční náhradu [24]
ut+1
− 2uti + ut−1
∂2u
i
i
≈
.
∂t2
δ2
(75)
ut+1
= 2uti − ut−1
+ c uti+1 + uti−1 − 2uti ,
i
i
(76)
Po dosazení získáme rovnici
kde
c=
δ2C
ρ2
(77)
je kvadrát tzv. Courantova čísla [24] a δ je zvolený časový krok. S ohledem na stabilitu diferenčního schématu je nutné volit takové hodnoty a δ , pro které bude splněna podmínka
c ≤ 1 [24]. Rovnice (76) je hledanou diferenční náhradou pro numerické řešení elastodynamické vlnové rovnice.
3.1.2
Šíření vln v heterogenním prostředí – ideální kontakt na rozhraní
Předpokládejme nyní heterogenní prostředí složené z několika homogenních úseků s ideálním
kontaktním rozhraním. Mějme bod výpočetní sítě i, který odděluje dva úseky s různými
fyzikálními vlastnostmi C − , ρ− a C + , ρ+ vlevo a vpravo od bodu i (viz obr. 1). Impedancí
materiálu nazýváme výraz
p
1
(78)
Z ± = ρ± S ± = ± ρ± .
δ
Pokud je kontakt na rozhraní ideální, můžeme rozdělit interval kolem bodu i do dvou podintervalů (viz obr. 1), které budou reprezentovat dvě poloviny původního intervalu, (i)+ a
(i)− o délkách + a − , hmotnostech m+ = 1 /2 ρ+ + a m− = 1 /2 ρ− − a impedancích Z +
a Z − . Vzhledem k ideálnímu kontaktu bude platit v bodě i spojitost amplitudy na rozhraní:
∂ 2 u−
∂ 2 u+
∂ 2 ucm
=
=
,
∂t2
∂t2
∂t2
19
(79)
3.1
LISA/SIM v 1D
kde zrychlení hmotného středu ∂ 2 ucm /∂t2 (cm = center of mass) je zavedeno jako
∂ 2 ucm
m− ü− + m+ ü+
F+ + F−
=
=
.
∂t2
m+ + m−
m+ + m−
(80)
Navíc ještě zavedeme nové vnitřní síly fi± , které udržují oba pod-intervaly pohromadě.
V rovnici (79) a v rovnicích následujících jsme pro stručnost vynechali psaní horního indexu t
a dolního indexu i. Předpokládáme, že vnitřní síly mají stejnou velikost a jsou si navzájem
opačné: f + = −f − . Z pohybových rovnic platí pro pod-intervaly
m±
∂ 2 u±
= F± + f±
∂t2
(81)
a z rovnic (79) a (80) dále plyne
f + = −f − =
m+ F − − m− F +
.
m+ + m−
(82)
Po dosazení do rovnice (81) a krátké úpravě získáme výsledné diferenční schéma12
ut+1 = −ut−1 + t+ ui+1 + t− ui−1 ,
kde
t± =
3.1.3
2Z ±
.
+ Z−
Z+
(83)
(84)
Šíření vln v heterogenní prostředí – neideální kontakt na rozhraní
Nyní předpokládejme, že kontakt na rozhraní mezi dvěma různými prostředími nebude
ideální. V takovém případě již ale vnitřní síly nesplňují rovnici (82). Zavedeme proto do
modelu nový parametr Q , který charakterizuje kvalitu kontaktu na rozhraní a lze jej zapsat
jako
±
f ± = Qfpc
,
(85)
± (pc - perfect contact) označuje vnitřní síly tak, jak jsme je zavedli pro případ ideálního
kde fpc
kontaktního rozhraní v rovnici (82). Parametr Q se může měnit od Q = 0 v případě zlomu do
Q = 1 v případě ideálního kontaktu. Stejně jako v případě popsaném výše snadno dosazením
získáme vztah
t+1
t−1
u±
= − u±
+ 2u± + 2c± u±1 − u±
+Qt∓ −c± u±1 − u± + c∓ u∓1 − u∓ ,
(86)
kde
c± =
t± =
δ2C ±
,
(± )2 ρ±
2ρ± ±
+ ρ− −
ρ+ +
(87)
(88)
a
u±1 = u∓
(i±1) .
12
Ve kterém tentokrát pro jednoduchost předpokládáme c± = 1).
20
(89)
3.1
LISA/SIM v 1D
time = 10
time = 55
1
1
0.5
0.5
0
0
−0.5
−0.5
−1
−1
1
50
100
150
200
1
a)
50
100
150
200
150
200
b)
time = 120
time = 200
1
1
0.5
0.5
0
0
−0.5
−0.5
−1
−1
1
50
100
150
200
1
c)
50
100
d)
Obrázek 2: Časový vývoj vlny v 1D při odrazu na materiálovém rozhraní.
Rovnici (86) lze zjednodušit, pokud ve snaze získat optimální podmínky konvergence a stability bude + a − zvoleno tak, aby platilo c± = 1. Pak můžeme definovat veličinu impedance
(před a za rozhraním) stejně jako v případě ideálního kontaktního rozhraní:
Z± =
p
1 ± ±
ρ
δ
(90)
t± =
2Z ±
=1±r,
Z+ + Z−
(91)
Z+ − Z−
.
Z+ + Z−
(92)
a také
ρ± C ± =
kde
r=
Po této úpravě získá rovnice (86) tvar
wt+1 = −wt−1 − 2rQ∆ + (1 + rQ) w+1 + (1 − rQ) w−1 ,
∆
t+1
= −∆
t−1
+ 2Q∆ + (1 − Q) (w+1 − w−1 ) ,
21
(93)
(94)
3.2
LISA/SIM ve 2D
kde u±1 jsou definovány stejně jako v rovnici (86) a
u=
1 +
u + u− ,
2
∆=
1 +
u − u− .
2
(95)
V případě ideálního rozhraní (Q = 1) je ∆ = 0 a rovnice (93) opět přejde na tvar
ut+1 = −ut−1 + t+ u+1 + t− u−1 ,
(96)
což je diferenční schéma pro ideální kontakt mezi rozhraními.
Uvedená numerická schémata je možné velmi snadno implementovat a je tak možné realizovat programy, které mohou poskytnout velmi názorné a poučné výsledky, což může být
vhodné nejen pro studenty. Na podobných 1D úlohách je možné studovat vlastnosti diferenčních schémat a ověřovat jejich vlastnosti jako např. stabilitu a přesnost porovnáním s případně
známým analytickým řešením.
Numerické programy implementující uvedené algoritmy v 1D jsem realizoval v prostředí
Matlab [57] s relativně flexibilním vstupním rozhraním. V programech je možné zadávat
řadu parametrů, např. počet různých materiálových prostředí a jejich impedanci. Také jsou
předdefinovány různé typy pulsů (obdélník, trojúhelník, sinus, Gauss) a různé typy okrajových
podmínek (volné, absorpční, periodické, pevná hodnota, vývoj hranice s časem . . . ).
Jako malý příklad 1D výpočtu je na obr. 2 znázorněn odraz pravoúhlého pulsu na rozhraní s ideálním kontaktem. Výpočet je realizován s pevnými konci. Červená čára rozděluje
prostředí s impedancí Z = 1 a Z = 2 . Na snímku b) je vidět odraz na rozhraní, na snímku
c) je situace po průchodu pulsu rozhraním a jeho částečném odrazu na rozhraní. Na snímku
d) jsou zobrazeny pulsy po odrazu na pevných koncích.
3.2
LISA/SIM ve 2D
Uvažujme nyní kosočtverečnou soustavu (ortotropní materiál), pro kterou lze matici elastických konstant zapsat ve tvaru (34). Při uvážení symetrie (translační invariance) vzhledem
k ose x3 je možné soustavu rovnic (55) převést na následující systém rovnic:
∂
∂um
∂ 2 uk
∂uk
Cklmn
+ Rk
,
k, l, m, n = 1, 2 ,
(97)
+ fk = ρ
2
∂xl
∂xn
∂t
∂t
∂
∂xl
∂u3
C3l3l
∂xl
+ f3 = ρ
∂ 2 u3
∂u3
+ R3
,
2
∂t
∂t
l = 1, 2 .
(98)
Z rovnice (98) je zřejmé, že šíření ve směru osy x3 je možné řešit samostatně a proto se
nyní soustředíme na řešení soustavy rovnic (97) v rovině x3 = konst..
Za předpokladu kosočtverečné soustavy můžeme rovnice (97) dále upravit na tvar
∂uk
∂uk
∂
∂uh
∂
∂uk
∂uh
∂ 2 uk
σk
+λ
+
µ
+
+ fk = ρ
+ Rk
,
(99)
2
∂xk
∂xk
∂xh
∂xh
∂xh ∂xk
∂t
∂t
kde k = 1, 2, h = 3 − k = 2, 1 a
σk = Ckkkk ,
λ = C1122 ,
22
µ = C1212 .
3.2
LISA/SIM ve 2D
Soustavu rovnic (99) budeme diskretizovat na pravoúhlé síti. Pokud budeme předpokládat
konstantní materiálové parametry σ, λ, µ uvnitř každé buňky, můžeme rovnice (99) přepsat
na tvar
σk
∂ 2 uk
∂ 2 uk
∂ 2 uk
∂ 2 uk
∂uk
+
µ
+
ν
+
f
=
ρ
+ Rk
,
k
2
2
2
∂xh ∂xk
∂t
∂t
∂xk
∂xh
k = 1, 2, h = 2, 1, (100)
kde ν = λ + µ = σ − µ.
V maticovém zápisu může být rovnice (100) zapsána jako
A U,xx + BU,yy + CU,xy + f = ρ U,tt + R U,t ,
kde
3.2.1
(101)
σ1 0
µ 0
0 ν
A =
, B=
, C=
,
0 µ
0 σ2
ν 0
f1
R1
u1
u
f=
, R=
, U =
=
,
f2
R2
u2
v
∂2
∂2
u1
u1
U,xx =
, U,xy =
, atd.
u2
u2
∂x2
∂x∂y
Diskretizace
Nyní nás zajímá diskretizace vlnové rovnice (101).
Předpoklady modelu, za kterých diferenční schéma odvodíme:
• Vlnová rovnice je diskretizována na pravoúhlé síti s délkami hran ∆x, ∆y.
• Posunutí U ij jsou diskretizována v bodech (i, j).
• Ve vzdálenosti δ ∆x ∼ ∆y od bodu sítě i, j jsou umístěny body (i ± δ, j ± δ)
(viz obr. 3).
• Buňka mřížky je označena svým levým dolním rohem, tzn., že buňka se středem v bodě
(i + 1/2, j + 1/2) má indexy i, j.
• Materiálové parametry předpokládáme konstantní uvnitř každé buňky se středem v bodě
(i + 1/2, j + 1/2).
• Hodnoty materiálových matic mohou být nespojité se skoky podél hranic buněk.
Vlnovou rovnici (101) napíšeme ve čtyřech bodech (i ± δ, j ± δ). Hodnoty materiálových
matic jsou v každé buňce konstantní. Můžeme proto zapsat čtyři rovnice ve tvaru
i+āδ,j+b̄δ
i+āδ,j+b̄δ
i+āδ,j+b̄δ
+ C i+a,j+b U,xy
+f
Ai+a,j+b U,xx
+ B i+a,j+b U,yy
i+āδ,j+b̄δ
= ρ U,tt
+ R U,ti+āδ,j+b̄δ ,
kde a, b = −1, 0 a pruh nad indexem značí operátor posuvu 0̄ = 1, −1 = −1.
23
(102)
3.2
LISA/SIM ve 2D
i−1, j +1
i, j +1
i+1, j +1
i, j +1/2
i−δ, j +δ
i−1, j i−1/2, j
i+δ, j +δ
i, j
i−δ, j −δ
i+1, j
i+1/2, j
i+δ, j −δ
i, j −1/2
i−1, j −1
i, j −1
i+1, j −1
Obrázek 3: Numerická mřížka kolem bodu (i, j) s dodatečnými body (i ± δ, j ± δ).
Nahrazení druhých derivací konečnými diferencemi pro a, b = ±1 zavedeme pomocí prvních derivací podle standardní aproximace [24]:
i+a/2,j
i+aδ,j+bδ
U,xx
≈
U,x
i+aδ,j+bδ
− U,x
,
a ∆x/2
(103)
i,j+b/2
i+aδ,j+bδ
U,yy
≈
− U,yi+aδ,j+bδ
,
b ∆y/2
U,y
i+a,j+b/2
i+aδ,j+bδ
U,xy
≈
i,j+b/2
− U,y
a ∆x
U,y
(104)
.
(105)
Takto zůstávají záměrně první derivace v bodech (i ± δ, j ± δ) nevyjádřeny. Tyto derivace
později vyloučíme s pomocí podmínky pro spojitost napětí na hranici buněk, což reprezentuje
ideální kontaktní rozhraní.
První derivace v bodech (i ± 1/2, j), (i, j ± 1/2) aproximujeme opět podle standardních
vztahů, kde zanedbáme členy řádu O(∆x2 ) a vyšší:
i±1/2,j
U,x
≈
U,yi,j±1/2 ≈
U i±1,j − U i,j
,
±∆x
U i,j±1 − U i,j
.
±∆y
(106)
(107)
Pro zavedení spojitosti napětí definujme dodatečné body (i ± δ, j ± ) a (i ± , j ± δ),
přičemž δ ∆x ∼ ∆y .
Složky tenzoru napětí τ můžeme ve dvourozměrném případě pro ortotropní materiál se
24
3.2
LISA/SIM ve 2D
i−δ, j +δ
i−ε, j +δ
i+ε, j +δ
d
i+δ, j +δ
d
i−δ, j +ε
i+δ, j +ε
d
d
i, j
d
d
i−δ, j −ε
i+δ, j −ε
i−δ, j −δ
d
d
i−ε, j −δ
i+ε, j −δ
i+δ, j −δ
Obrázek 4: Blízké okolí bodu (i, j) s dodatečnými body (i±δ, j ±δ) a (i±, j ±δ), (i±δ, j ±),
kde δ ∆x ∼ ∆y.
symetrií v ose x3 psát ve tvaru [17]
τ1ij
τ2ij
ij
= Aij U,x
+ Dij U,yij ,
= E
ij
ij
U,x
kde D, E jsou opět materiálové matice:
0 λ
D=
,
µ 0
+B
ij
E=
U,yij
(108)
,
(109)
0 µ
λ 0
.
Jak již bylo uvedeno, předpokládáme, že hodnoty materiálových matic A, B, C, D, E jsou
pro každou samostatnou buňku konstantní:
Ai+,j+δ = Ai+δ,j+δ = Ai+δ,j+ = Ai,j ,
atd.
Spojitost napětí podél rozhraní budeme počítat v bodech ±. Ponechme zatím první
derivace v bodech (i ± δ, j ± δ) nevyjádřené a aproximujme první derivace v bodech ± pro
a, b = ±1 jako
U i+a,j − U i,j
,
a ∆x
= U,yi+aδ,j+bδ ,
i+aδ,j+b
U,x
≈
U,yi+aδ,j+b
i+a,j+bδ
U,x
=
U,yi+a,j+bδ ≈
i+aδ,j+bδ
U,x
,
U i,j+b − U i,j
b ∆y
25
(110)
(111)
(112)
.
(113)
3.2
LISA/SIM ve 2D
Spojitost tenzoru napětí v bodech ± podél hranic buněk můžeme vyjádřit rovnicemi
τ1i−,j±δ = τ1i+,j±δ ,
τ2i±δ,j−
(114)
τ2i±δ,j+ .
=
Sečteme-li navzájem 4 rovnice (110) a 4 rovnice (114), je možné eliminovat první derivace
U,x , U,y v bodech (i ± δ, j ± δ) a po úpravách dostáváme:
1
1
X
X
ij i+k,j+l
ij
Pkl
U
+ f = ρ U,tt
+ R U,tij .
(115)
k=−1 l=−1
Pro vyjádření časových derivací opět použijeme standardní diferenční schémata:
U,tij ≈
U i,j,n+1 − U i,j,n−1
,
2 dt
ij
U,tt
≈
U i,j,n+1 − 2U i,j,n + U i,j,n−1
,
dt2
kde index n reprezentuje čas.
Tak dostáváme konečné explicitní diferenční schéma ve tvaru:
U i,j,n+1 = −U i,j,n−1 +
1
1
X
X
ij i+k,j+l,n
U
.
Rkl
(116)
k=−1 l=−1
Při odvození příslušných diferenčních schémat jsme využili systém počítačové algebry [25]
Reduce [26, ?]. A jak je zřejmé z předcházejících řádek, bylo možné provést odvození v maticovém tvaru.
V současné době by ke stejnému účelu již mohly být použity také jiné systémy počítačové
algebry typu Mathematica [?], Maple [?] nebo např. pro Linux [?] volně dostupný a velmi
pěkný program MuPAD [?]. Tyto systémy počítačové algebry již nyní také umí z matematických výrazů generovat diferenční schémata v jazycích typu Fortran či C.
Ke shodnému výsledku lze dojít i jinou cestou [10]. Vzhledem k tomu, že tento článek
používá notaci, z níž budeme vycházet v případě neideálního kontaktního rozhraní, stručně
si zde tento postup zopakujeme. Pro zjednodušení zápisu u tohoto příkladu nebudeme nyní
předpokládat žádné vnější síly ani tlumící členy. Z předchozího odvození je vidět, že jde buď
o předem známý parametr, nebo o člen, který lze na konci za pomoci známých diferenčních
náhrad přidat.
Mřížku rozdělíme do buněk stejně jako v předchozím odvození a podobně jako u jedno(k)
dimenzionálního případu zavedeme do jednotlivých buněk síly F n – viz obr. 5, což jsou síly,
kterými působí na uzel Ok jeho nejbližší „sousedéÿ n:
(k)
F n = Mn(k) ∆Un ,
kde
(k)
Mn
(k)
Mn
(k)
=
=
Mn =
0 ψk
ψk 0
1
2 σk
χk
1
2 µk
−χk
(117)
,
(n = k = 1, 2, 3, 4) ,
−χk
1
2 µk
χk
1
2 σk
, (n = 5, k = 1, 4; n = 7, k = 2, 3) ,
, (n = 6, k = 1, 2; n = 8, k = 3, 4)
26
(118)
3.2
LISA/SIM ve 2D
Obrázek 5: Rozdělení buňky a zobrazení sil ve 2D.
a
∆Un = Un − U0 ,
k+1
ψk = (−)
(119)
(λk + µk ) /4 ,
k+1
χk = (−)
(λk − µk ) /4 .
un
Un =
.
vn
Stejně jako v případě 1D, zavedeme také vnitřní síly f kl , kterými na sebe působí jednotlivé
části každé buňky. f kl tedy spojuje „pod-uzelÿ Ok s „pod-uzlemÿ Ol , viz obr. 5. Zřejmě platí
f kl = −f lk .
(120)
Další odvození je shodné s postupem pro jednorozměrný případ. Ze spojitosti napětí (114)
získáme diferenční schéma13 :
δ 2 X (k)
U t+1 = 2 U − U t−1 + 2
Mn ∆Un ,
(121)
ρ
n,k
kde
4
ρ=
1X
ρk .
4
k=1
13
V rovnici (121) jsou z důvodu lepší čitelnosti vynechány prostorové a časové indexy vztahující se k „aktuálníÿ časové vrstvě a „aktuálníÿ prostorové souřadnici. Toto odvození také předpokládá, že všechny čtyři
„pod-buňkyÿ mají stejný objem 41 2 a jejich hmotnosti jsou stejné a rovné 14 ρk 2 . Při skutečném odvození
jsme samozřejmě tato zjednodušení neměli.
27
3.2
LISA/SIM ve 2D
Je patrné, že postup je stejný jako v prvním odvození, diskretizace mřížky i použité dife(k)
renční náhrady, odlišný je jen zápis materiálových matic, matice Mn jsou lineární kombinace
matic A, B, C, D, E.
3.2.2
Neideální kontaktní rozhraní
Pro neideální kontaktní rozhraní (Imperfect Contact Interface - ICI ) stejně jako v případě
ideálního kontaktu rozdělíme mřížku do buněk a každou buňku ještě do dalších čtyř menších
buněk. Je zřejmé, že zrychlení každé ze čtyř menších buněk musí být stejné jako zrychlení
hmotného středu14 :
4
∂ 2 Ucm
1 X l
∂ 2 Uk
=
=
F ,
∂t2
∂t2
ρ 2
k = 1, ..., 4 ,
(122)
l=1
l
l
1
kde F je výslednice tří sil F n vztahujících se k uzlu l. Jak je vidět na obr. 5, např. F =
1
1
1
F 6 + F 1 + F 5 . Rovnice (122) je splněna, jestliže zobecníme rovnici (80) z jednorozměrného
na dvourozměrný případ a dosazením získáme vztah
l
f kl
k
ρ k F − ρl F
=
.
4ρ
(123)
Potom teprve můžeme rozšířit náš model i o neideální kontaktní rozhraní podobně jako
v 1D zavedením tenzoru kvality kontaktu na rozhraní Qkl pro každý uzel O vztahem
(pc)
f kl = Qkl f kl ,
(124)
(pc)
kde f kl značí vnitřní síly pro ideální kontaktní rozhraní, tak jak byly zavedeny vztahem (81).
Qkl nabývá stejně jako v 1D případě hodnot od 0 do 1, pro Qkl = 1 se jedná o ideální kontakt.
Parametr Qkl nemusí být nutně konstantní. Změnou parametru Qkl lze modelovat celou řadu
materiálových nedokonalostí včetně nelineárních procesů.
V případě neideálního kontaktního rozhraní je nutné vyhodnotit iterační rovnice pro
všechny „pod-uzlyÿ:


2
X
δ
k
U (k),t+1 = 2 U (k) − U (k),t−1 + 2 F +
f kl  ,
k, l = 1, ..., 4 ,
(125)
ρ
l6=k
kde index (k) označuje, o který „pod-uzelÿ se jedná.
3.2.3
Diferenční schémata pro hraniční uzly výpočetní sítě
Diferenční schémata pro volné okrajové podmínky (τ = 0) a absorpční (radiační) okrajové
podmínky byly odvozeny analogickým způsobem jako schémata pro vnitřní body výpočetní
sítě. Pouze v tomto případě dostaneme vždy 8 různých diferenčních schémat pro 4 hrany a
4 rohy. V případě absorpčních okrajových podmínek bylo implementováno několik různých
metod, více viz část 3.4.
V případě volných okrajových podmínek navíc vedle klasického odvození diferenčních
schémat pro hraniční uzly se nabízí ještě jedna možnost: Volné okrajové podmínky mohou
14
Opět pouze pro účely tohoto odstavce platí stejné předpoklady jako u rovnice (121).
28
3.2
LISA/SIM ve 2D
být získány také z diferenčního schématu pro vnitřní bod sítě (116), pokud jsou materiálové
konstanty položeny rovny nule (ρ = 0, A = B = C = D = E = 0) vně vlastní výpočetní
oblasti. Tuto skutečnost je samozřejmě možné snadno ověřit prostředky počítačové algebry.
Je zřejmé, že tato metoda má řadu výhod. Především není nutné odvozovat diferenční
schémata pro jednotlivé hranice a rohy výpočetní sítě, přičemž tato schémata mají navíc
obecně nižší řád přesnosti než schéma pro vnitřní body. A také z podmínky stability obvykle
vyplývá nutnost použití kratšího časového kroku pro takto odvozená schémata. Všechny
tyto nevýhody odpadají, použijeme-li po okrajích výpočetní oblasti dodatečné řady bodů, ve
kterých nastavíme materiálové parametry na nulu.
3.2.4
Generace kódu pro diferenční schéma
Po odvození diferenčních schémat za použití systému počítačové algebry Reduce [26] můžeme
systém Reduce použít také ke generování vlastních numerických programů, která reprezentují tato schémata. Např. odvození diferenčního schématu (116) bylo provedeno v maticověvektorovém zápisu, pro jeho počítačovou implementaci toto schéma rozepíšeme do skalárního
tvaru:
ui,j,n+1 = −ui,j,n−1 +
1
1 X
X
i+k,j+l,n
ijkl i+k,j+l,n
cijkl
u
+
c
v
,
uu
vu
(126)
i+k,j+l,n
i+k,j+l,n
,
+ cijkl
cijkl
uv u
vv v
(127)
k=−1 l=−1
v
i,j,n+1
= −v
i,j,n−1
+
1
1 X
X
k=−1 l=−1
kde koeficienty cijkl
pq , p = u, v; q = u, v jsou funkcemi materiálových konstant µ, ν, λ, σ1 , σ2 , R
a f . Tyto koeficienty jsou nezávislé na čase a je proto možné je spočítat pouze jednou na
začátku celého výpočtu. Numerický kód pro jejich výpočet je pochopitelně také automaticky
generován.
Spolu s kódem, který implementuje diferenční schéma (116) s před počítanými koeficienty,
je rovněž automaticky generován kód pro okrajové podmínky volné i absorpčním15 . Příklad
takovéto implementace je uveden v dodatku A. Vlastní zdrojový kód numerického jádra má
v tomto konkrétním případě v jazyce C přibližně 1300 řádek a jeho velikost je asi 60 kB.
Druhou možností je počítat koeficienty cijkl
pq v každém časovém kroku. To má smysl tehdy,
pokud chceme počítat relativně velké úlohy a nemáme dostatek operační paměti. Program
vyžaduje v tomto případě asi třetinovou velikost operační paměti oproti variantě s před
počítanými koeficienty. Ovšem doba výpočtu také zhruba 3× vzroste.
Při implementaci neideálního kontaktního rozhraní byly rovněž realizovány dvě verze
kódu: jedna s před počítanými koeficienty a druhá, která počítá koeficienty až během samotného výpočtu. Verze první má pochopitelně poměrně velké nároky na operační paměť, proto
je spíše použitelná druhá verze, která je ale díky výpočtu koeficientů v každém časovém kroku
pomalejší.
Zde bohužel musím poznamenat, že jsme při návrhu programu trošku zanedbali optimalizaci numerického kódu. Jak je možné vidět v dodatku A.3, tak např. při výpočtu hodnot
ui,j,n+1 (tj. u[2][i][j]) se počítá s koeficienty typu cijkl
uu (tj. cu[0][2][1][i][j]). Vidíme
ovšem, že pro danou dvojici i, j nejsou tyto koeficienty v operační paměti počítače vůbec
seřazeny za sebou! Proto je přístup k nim poměrně neefektivní a celý výpočet je alespoň
15
Pro absorpční podmínky je použito několik různých algoritmů.
29
3.3
LISA/SIM ve 3D
teoreticky výrazně pomalejší. Děkuji tímto Ing. T. Pourovi [133], který mě na tuto chybu nedávno upozornil. Podle zatím velmi předběžných testů při této struktuře koeficientů cu, cv
roste doba výpočtu skutečně přímo úměrně s velikostí úlohy a není např. vůbec zohledněna
rychlá vyrovnávací paměť centrální procesorové jednotky.
Určitě výhodnější je např. následující řazení prvků v paměti počítače: cu[i][j][0][2][1].
Rychlost výpočtu je i v tomto případě jako obvykle závislá na celé řadě parametrů (překladač, přepínače použité při optimalizaci překladu, typ procesoru . . . ). Opět mohu zatím uvést
pouze velmi předběžné a orientační výsledky urychlení výpočtu oproti původní verzi programu při použití překladače gcc [102] s přepínačem -O2: s procesorem Intel Pentium M
zrychlení o 60%, na Intel Xeon o 30% a na AMD Opteron o 50%. I tento malý příklad dokumentuje, že optimalizaci programů se nevyplácí podceňovat a je nutné jí věnovat náležitou
péči.
3.3
LISA/SIM ve 3D
Nyní si přejeme numericky řešit úplnou elastodynamickou vlnovou rovnici (55) v trojrozměrném případě pro souřadnice (x1 , x2 , x3 ) a posunutí u = (u1 , u2 , u3 ):
(Cklmn um,xn )xl + f = ρ uk,tt + R uk,t ,
k, l, m, n = 1, 2, 3 .
(128)
Soustavu rovnic (128) budeme opět diskretizovat na pravoúhlé síti a budeme předpokládat
konstantní materiálové parametry uvnitř každé výpočetní buňky:
Cklmn um,xn xl + f = ρ uk,tt + R uk,t .
Odvození je možné a také jsme jej realizovali pro
konstant s 21 nezávislými koeficienty:

σ1 λ6

σ2


Cklmn = cV (k,l)V (m,n) = 



(129)
zcela obecný případ tenzoru elastických
λ5 τ14
λ4 τ24
σ3 τ34
µ4
τ15
τ25
τ35
γ45
µ5
τ16
τ26
τ36
γ46
γ56
µ6




,



(130)
kde opět využíváme Voightovy konvence (30):
V (i, j) = iδij + (1 − δij )(9 − i − j) .
Jak víme, tato matice je symetrická, a proto jsou z důvodu přehlednosti vypsány pouze prvky
matice nad diagonálou.
Zde si ale z důvodu přehlednosti naznačíme pouze odvození diferenčních schémat pro
ortotropní materiál (34), pro který má tenzor Cklmn pouze 9 nezávislých členů a je možné jej
psát ve tvaru:


σ1 λ12 λ13 0
0
0

σ2 λ23 0
0
0 



σ3
0
0
0 

.
Cklmn = cV (k,l)V (m,n) = 
(131)
µ23 0
0 



µ13 0 
µ12
30
3.3
LISA/SIM ve 3D
Rovnici (129) můžeme také přepsat na tvar:
3
X
(Akn uk,xn xn + Nkn un,xk xn ) + f = ρ uk,tt + R uk,t ,
(132)
n=1
kde

σ1 µ12 µ13
A =  µ12 σ2 µ23  ,
µ13 µ23 σ3


0 ν12 ν13
N =  ν12 0 ν23  ,
ν13 ν23 0

νij = λij + µij .
3.3.1
Diskretizace
Diskretizace ve 3D případě je zcela analogická 2D případu, uvedeme zde proto pouze příslušné
vztahy.
Diferenční schémata pro derivace:
• prvního řádu:
ui±1,j,k − ui,j,k
,
±∆x
ui,j±1,k − ui,j,k
,
±∆y
ui,j,k ±1 − ui,j,k
,
±∆z
i±1/2,j,k
u,x
≈
i,j±1/2,k
u,y
≈
i,j,k±1/2
u,z
≈
(133)
(134)
(135)
• druhého řádu (pro a, b, c = ±1):
i+a/2,j,k
+cδ
ui+aδ,j+bδ,k
,xx
≈
ui+aδ,j+bδ,k
,yy
+cδ
≈
ui+aδ,j+bδ,k
,zz
+cδ
≈
u,x
i,j+b/2,k
u,y
i,j,k+c/2
u,z
− ui+aδ,j+bδ,k+cδ
,x
,
a ∆x/2
(136)
− ui+aδ,j+bδ,k+cδ
,y
,
b ∆y/2
(137)
− ui+aδ,j+bδ,k+cδ
,z
,
c ∆z/2
(138)
i+a,j+b/2,k
+cδ
ui+aδ,j+bδ,k
,xy
≈
ui+aδ,j+bδ,k
,xz
+cδ
≈
ui+aδ,j+bδ,k
,yz
+cδ
≈
i,j+b/2,k
− u,y
,
a ∆x
i+a,j,k+c/2
i,j,k+c/2
u,y
− u,y
,
a ∆x
i,j+b,k+c/2
i,j,k+c/2
u,z
− u,y
.
b ∆y
u,y
(139)
(140)
(141)
Vztah pro tři rovnice v 8 bodech i ± δ, j ± δ, k ± δ, kde a, b, c = −1, 0, m = 1, 2, 3 můžeme
tudíž zapsat jako:
3 X
m,i+āδ,j+b̄δ,k+c̄δ
i+a,j+b,k+c n,i+āδ,j+b̄δ,k+c̄δ
Ai+a,j+b,k+c
u
+
N
u
+f
mn
,xn xn
mn
,xm xn
n=1
m,i+āδ,j+b̄δ,k+c̄δ
= ρ u,tt
+ R u,tm,i+āδ,j+b̄δ,k+c̄δ ,
31
(142)
3.3
LISA/SIM ve 3D
kde opět 0̄ = 1, −1 = −1.
Pro vyjádření spojitosti tenzoru napětí použijeme opět vyjádření v dodatečných bodech
(i ± δ, j ± δ, k ± ), (i ± δ, j ± , k ± δ) a (i ± δ, j ± δ, k ± ), kde δ ∆x ∼ ∆y ∼ ∆z.
Dále předpokládáme, že Amn , Nmn jsou konstantní v každé z buněk:
i+δ,j+δ,k+
Ai+,j+δ,k+δ
= Ai+δ,j+,k+δ
= Amn
= Ai+δ,j+δ,k+δ
= Ai,j
mn
mn
mn
mn
(143)
atd., kde buňka je opět označena rohem s nejmenší sumou indexů.
Derivace v bodech ±, pro a, b, c = ±1 mají tvar:
ui+a,j+bδ,k+cδ
= ui+aδ,j+bδ,k+cδ
,
,x
,x
ui+aδ,j+b,k+cδ
,x
ui+aδ,j+b,k+cδ
,y
ui,j,k
−
,
b ∆y
ui,j,k+c − ui,j,k
≈
,
c ∆z
ui+a,j,k − ui,j,k
≈
,
a ∆x
≈ ui+aδ,j+bδ,k+cδ
,
,y
ui+a,j+bδ,k+cδ
≈
,y
ui+a,j+bδ,k+cδ
,z
ui,j+b,k
ui,j,k+c − ui,j,k
,
c ∆z
ui+a,j,k − ui,j,k
,
≈
a ∆x
ui,j+b,k − ui,j,k
≈
,
b ∆y
= ui+aδ,j+bδ,k+cδ
.
,z
(144)
(145)
(146)
(147)
(148)
ui+aδ,j+b,k+cδ
≈
,z
(149)
ui+aδ,j+bδ,k+c
,x
(150)
ui+aδ,j+bδ,k+c
,y
ui+aδ,j+bδ,k+c
,z
(151)
(152)
Derivace prvního řádu v bodech i ± δ, j ± δ, k ± δ zůstávají opět nevyčísleny.
Složky tenzoru napětí
τkl = Cklmn um,xn
mohou být pro ortotropní materiál zapsány ve tvaru
X
τkk = σk uk,xk +
λkn un,xn ,
(153)
n6=k
τkn = µkn (uk,xn + un,xk ),
k 6= n .
Dále předpokládáme spojitost napětí v rovinách
• x = konst.:
i,j±δ,k±δ
i+,j±δ,k±δ
τn1
= τn1
,
n = 1, 2, 3 ,
• y = konst.:
i±δ,j−,k±δ
i±δ,j+,k±δ
τn2
= τn2
,
n = 1, 2, 3 ,
i±δ,j±δ,k−
i±δ,j±δ,k+
τn3
= τn3
,
n = 1, 2, 3 .
• z = konst.:
32
(154)
3.4
Okrajové podmínky
Vhodná kombinace diskretizovaných vlnových rovnic vyjádřených v 8 buňkách vztažených
k referenčnímu bodu s rovnicemi pro spojitost napětí nám umožňuje eliminovat nevyjádřené
derivace prvního řádu v bodech i ± δ, j ± δ, k ± δ .
Po provedení diskretizace časových derivací standardním způsobem dostáváme diferenční
schéma pro posunutí (u1 , u2 , u3 ):
u(i,j,k),n+1
= −u(i,j,k),n−1
+
m
m
3
1
X
X
(i+a,j+b,k+c),n
cijkabc
ul
lm
.
(155)
l=1 a,b,c=−1
Celé odvození diferenčního schématu bylo v tomto případě nutné provést ve složkové
formě a bylo opět realizováno za pomoci systému počítačové algebry Reduce. A ve speciálním případě (bez tlumících členů, vnějších sil, stejná velikost prostorového kroku ve všech
dimenzích, . . . ) rovněž souhlasí s výsledky P. P. Delsanta [9].
3.3.2
Generace kódu pro diferenční schéma
Nyní máme diskretizační schéma ve tvaru
u(i,j,k),n+1
= −u(i,j,k),n−1
+
m
m
3
1
X
X
(i+a,j+b,k+c),n
cijkabc
ul
lm
.
(156)
l=1 a,b,c=−1
a je možné pro něj opět vygenerovat numerický kód např. v jazyce C.
K vlastní implementaci platí podobné poznámky jako v případě 2D. Uveďme zde alespoň
některé:
v rovnici (156) je nulových, kupř. všechny s pruhem
• Řada koeficientů cijkabc
lm
a 6= 0 ∧ b 6= 0 ∧ c 6= 0.
• Tyto koeficienty musí být uloženy pro každou z buněk (i, j, k) výpočetní mříže.
nejsou závislé na čase a je tedy možné spočítat je pouze jednou před
• Koeficienty cijkabc
lm
začátkem simulace.
• Automaticky generovány jsou kódy funkcí pro počáteční výpočet koeficientů cijkabc
lm
a funkce implementující diskretizační schéma pro jeden časový krok.
Stejně jako v případě 2D máme opět z důvodu úspory operační paměti implementováno
několik verzí kódu s ohledem na to, jaké jsou právě pro daný výpočet priority.
3.4
Okrajové podmínky
Ve 2D i 3D verzích našich numerických programů určených ke studiu šíření elastických vln je
v současné době implementováno několik typů okrajových podmínek:
1. Řešení na hranici je určeno předem danou hodnotou či funkcí.
2. Volné okrajové podmínky.
3. Absorbující (radiační) okrajové podmínky.
33
3.4
Okrajové podmínky
Periodickými okrajovými podmínkami jsem se zatím zabýval pouze velmi okrajově16 .
Podle našich dosavadních zkušeností implementace periodických okrajových podmínek je
snadná pro 1D úlohy, pro vyšší dimenze se nám ovšem uspokojivá implementace doposud
nepodařila.
Jak již bylo zmíněno v části 3.2.3, volné okrajové podmínky jsou pro některé verze 2D
programů LISA implementovány pomocí 2 různých metod. Důvod je ten, že na druhou, po
všech stránkách výhodnější metodu, kdy výpočet v hraničních uzlech je možné implementovat
s vyžitím algoritmu pro vnitřní body sítě, jsme přišli o něco později. Ve všech 3D verzích
programu již používáme pouze jedno diferenční schéma pro vnitřní i hraniční body výpočetní
oblasti.
Samostatnou kapitolou je implementace absorpčních (radiačních) okrajových podmínek.
Zdroj informací k tomuto tématu je pochopitelně velmi bohatý17 , např. [?–48]. Absorpční
okrajové podmínky je možné přesně (zcela bez odrazů na hranici) realizovat pouze za jistých
speciálních podmínek, např. při výpočtu na kruhové oblasti [?]. Vesměs se jedná o metody,
které poskytují nulový odraz při kolmém dopadu na rozhraní a s rostoucím úhlem dopadu
roste také koeficient odrazu.
Zkusili jsme implementaci celé řady metod na výpočet absorpčních (radiačních) okrajových podmínek, zmínil bych zde alespoň 3 možnosti.
Do řešené elastodynamické rovnice přidáme dodatečné členy typu
rkl (x)
∂uk
,
∂xl
Rk (x)
∂uk
,
∂t
k, l = 1, 2, 3 ,
(157)
kterými se snažíme realizovat tlumení v rozšířené okrajové oblasti18 , přičemž rkl (x), Rk (x)
ve vztazích (157) jsou jisté mocninné nebo exponenciální funkce. Jejich vhodná volba je opět
úloha sama pro sebe. Jinak se nám zde opět ukazuje pro nás výhodná generace diferenčních schémat prostředky počítačové algebry. Prostě stačí do rovnic přidat dodatečné členy a
vygenerovat nová schémata.
Dále jsme implementovali absorpční okrajové podmínky na základě metody, která je založena na paraxiální aproximaci [29] elastodynamické rovnice. Tato aproximace může být
charakterizována koeficientem odrazu rj (θ) typicky ve tvaru [30, 31]:
1 − cos θ n
,
(158)
rn (θ) ≈
1 + cos θ
kde n je stupeň aproximace a θ je úhel dopadu měřený od normály hranice oblasti. Z výrazu
pro koeficient odrazu rn (θ) (158) je patrné, že paraxiální aproximace bude zřejmě dávat
uspokojivé výsledky pouze za jistých speciálních podmínek. Navíc jsme měli problémy se
stabilitou takovéto implementace okrajových podmínek.
Poslední možnost, kterou téměř výhradně používáme pro realizaci absorpčních okrajových podmínek, je superpozice řešení s Dirichletovými okrajovými podmínkami (ui = 0) a
Neumannovými okrajovými podmínkami (∂ui /∂xl = 0) [27]. Tato metoda funguje k naší plné
spokojenosti a doposud jsme s ní neměli vůbec žádné problémy.
Ukázka výpočtu s volnými a absorpčními okrajovými podmínkami je na obr. 6. Signál
reprezentující explozi uprostřed výpočetní oblasti se šíří v homogenním prostředí. Zobrazen je
16
Zatím jsem je nepotřeboval a ani je nikdo nepožadoval :-).
Např. http://www.google.com/search?q=nonreflecting+boundary+conditions,
http://www.google.com/search?q=absorbing+boundary+conditions.
18
Buffer, dumping region.
17
34
3.4
Okrajové podmínky
Time = 0
Time = 24
Time = 32
0
0.5
1
1.5
2
0
0.5
1
1.5
2
Obrázek 6: Ilustrace volných (vlevo) a radiačních (absorpčních) okrajových podmínek.
35
3.5
Uložení napočítaných dat – formát NetCDF
Animace ve formátu MPEG, 524 kB
Animace ve formátu MPEG, 2.18 MB
Obrázek 7: Ilustrace volných okrajových podmínek.
Animace ve formátu MPEG, 202 kB
Animace ve formátu MPEG, 1.48 MB
Animace ve formátu MPEG, 333 kB
Obrázek 8: Ilustrace absorpčních (radiačních) okrajových podmínek.
p
modul posunutí u21 + u22 . Podle typu okrajových podmínek je zřejmý odraz (levý sloupec)
či absorpce na hranicích výpočetní oblasti.
Názornější než statické obrázky jsou animace příslušných výpočtů19 zobrazující časový
vývoj řešení. Odkaz na soubory ve formátu MPEG, které odpovídají situaci na obr. 6, je na
obr. 7 pro volné okrajové podmínky a na obr. 8 pro absorpční okrajové podmínky. Bílými
šipkami je označeno rychlostní pole. Snímek na obr. 8 zcela vpravo odkazuje na časový vývoj
pouze podélné složky posunutí. Na této animaci je např. pěkně demonstrován vliv volby
barevné mapy na názornost zobrazení. Mapa barev je zde zvolena s výraznými přechody
mezi jednotlivými barevnými složkami. Při použití této barevné mapy by byly např. velmi
dobře patrné odrazy signálu na hranicích. V této video-sekvenci nejsou alespoň v zobrazeném
měřítku žádné odrazy patrné, a proto lze v tomto případě usuzovat na poměrně slušnou
implementaci absorpčních okrajových podmínek.
3.5
Uložení napočítaných dat – formát NetCDF
Při archivaci napočítaných dat v případě 2D a 3D výpočtů je vhodné postupovat poměrně
uvážlivě. Jako příklad si vezměme 2D výpočet na relativně malé sítí 1000 × 1000 bodů. Pro
uložení 1 proměnné v jednoduché přesnosti v binárním tvaru je třeba 4 MB paměti. Při
uložení 1000 časových snímků je již potřeba 4 GB pouze pro 1 proměnnou. Proměnných,
které nás zajímají, je obvykle více, např. jednotlivé složky posunutí ui , rychlostí vi , složky
19
Ještě vhodnější je pracovat přímo s netCDF soubory, viz odstavec 3.5.
36
3.5
Uložení napočítaných dat – formát NetCDF
tenzoru napětí τij , kinetická energie . . . Proto není možné ukládat výsledky všech proměnných
pro každý časový krok na celé výpočetní oblasti. Volíme si zpravidla jen některé veličiny a i
u nich hodnoty zaznamenáme pouze pro jisté vybrané časy. Mohou existovat také určité části
výpočetní sítě, ve kterých si přejeme podrobnější záznam výsledků. Např. pokud porovnáváme
výsledky výpočtů s měřeními, jistě uvítáme možnost zvolit si oblasti menší než celá výpočetní
doména, kde může být záznam podrobnější, např. pro každý časový krok výpočtu. Jindy může
být naopak vhodné např. redukovat počet prostorových bodů v oblasti záznamu. Všechny
tyto různé typy výsledků by bylo ideální mít v jediném souboru a to případně i včetně
vstupních parametrů. Vzhledem k redukci paměťových nároků by soubor měl být binární a
pokud možno přenositelný mezi různými počítačovými platformami.
Proto před námi stála otázka výběru vhodného datového formátu, který by splňoval naše
požadavky. Přehled a charakteristiky vědeckých datových formátů je možné nalézt např.
na [50]20 . Pro naše účely jsme nakonec volili mezi formáty HDF [51] a netCDF (Network
Common Data Form) [52]. Volba padla na formát netCDF. A i když jsem později získal
zkušenosti s celou řadou jiných datových formátů, o správnosti této volby nebylo nutné nikdy
pochybovat.
Uveďme krátce alespoň některé charakteristiky datového formátu NetCDF [52]:
• NetCDF je zcela nezávislý na hardwarové platformě. Datový soubor je správně interpretován i počítači, které pracují odlišnými způsoby se základními datovými typy. Tato
skutečnost není vůbec samozřejmá a často neplatí ani pro obyčejné textové soubory.
• Přístup do malé části velkého datového souboru je přímý a velmi efektivní.
• Jeden NetCDF soubor může být ve stejném okamžiku využit jak k zápisu (jedním
uživatelem), tak ke čtení (více uživateli).
• K NetCDF souboru je možné přistupovat po sítí: Je např. možné otevřít soubor na
vzdáleném počítači a pracovat s jednotlivými proměnnými.
• K dispozici jsou rozhraní pro jazyky C, C++, Fortran, Java, Perl, atd.
• Je k dispozici velké množství knihoven, funkcí a skriptů umožňujících snadnou manipulaci s daty uloženými v NetCDF formátu, jejich částečný seznam najdeme na [52].
Jako velmi jednoduché, ale přesto nesmírně užitečné můžeme zmínit alespoň programy
ncdump a ncgen, které jsou standardní součástí knihovny netCDF.
• Stejně tak data uložená ve formátu NetCDF mohou být zpracována a zobrazena velkým
množstvím programů jak komerčních, tak i volně šiřitelných, jejich neúplný seznam
je opět na adrese [52]. Zmiňme zde alespoň Matlab [57], Octave [58], Scilab [59] a
Python [60].
• Binární formát netCDF má svoji textovou podobu v reprezentaci Common Data Form
Language (CDL) [52]. Malá ukázka části CDL reprezentace netCDF souboru je uvedena
v dodatku B. Právě např. programy ncdump a ncgen umožňují konverzi mezi formáty
netCDF a CDL navzájem. Ale umožňují také z netCDF souboru či jeho CDL obrazu
vygenerovat program v jazyce Fortran či C, který po přeložení a spuštění daný netCDF
soubor opět vygeneruje. Takto je možné např. snadno získat kostru programu pro práci
s daty ve formátu netCDF.
20
A zajisté na http://www.google.com/search?q=scientific+data+format.
37
3.5
Uložení napočítaných dat – formát NetCDF
Obrázek 9: Ukázka aplikačního rozhraní programu Ncview.
Jak již bylo řečeno, s netCDF formátem můžeme snadno pracovat v řadě programů.
K rychlému a pohodlnému prohlížení netCDF souborů je k dispozici několik nástrojů. Jako
velmi doporučeníhodný se nám jeví zejména program Ncview [53], který je k dispozici bohužel
pouze pro operační systémy typu Unix. V Microsoft Windows je možné jej spustit např.
pomocí prostředí Cygwin [54], přičemž zprovoznění je popsáno v [55]. Další možností je
využít některého emulátoru, např. VMware [78] či volně dostupných Cooperative Linux [77]
nebo VMware Player [79], pro který je možné případně využít některé již připravené virtuální
disky s instalací operačního systému [80].
Ukázka programu Ncview je na obr. 9. Vlevo je panel s ovládacími prvky a seznamem
proměnných. Dole uprostřed je snímek signálu, který se šíří prostředím. Vpravo od tohoto
záznamu jsou 2 detailní pohledy na vybrané oblasti v okolí zdroje signálu a v okolí trhliny.
Zcela vpravo jsou podrobné záznamy z detektorů umístěných po okraji výpočetní oblasti.
Průběh několika takových signálů je pak zobrazen na obrázku vpravo nahoře.
Jako vhodný prohlížeč se ukazuje také program ncBrowse [56], jehož ukázka je na obr. 10.
ncBrowse je napsán v Javě, a proto je možné jej spustit přímo ve více operačních systémech.
ncBrowse má široké možnosti konfigurace a řadu užitečných možností. Grafy nemusí být
pouze typu 2D jako u Ncview, ale umožňuje rovněž 3D zobrazení včetně interaktivní práce
s 3D modelem (natáčení, přibližování grafu . . . ) podobně jako např. s 3D modely v Matlabu
či v prohlížečích VRML modelů. Stejně jako u Ncview je možné promítat jednotlivé snímky
ve formě video-sekvencí, což platí i pro 3D grafy.
Jako první malý příklad je na obr. 11 odkaz na netCDF soubor s výpočtem odrazu
rovinné vlny na ideálním rozhraní. Rovinná vlna je reprezentována podélným polem posunutí.
V tomto případě je analytické řešení známé a můžeme jej porovnat s napočtenými hodnotami.
Příčné složky posunutí by měly být nulové. Numericky obvykle počítáme s konečnou (v tomto
konkrétním případě s jednoduchou) přesností. V tomto netCDF souboru je možné velmi dobře
38
3.5
Uložení napočítaných dat – formát NetCDF
Obrázek 10: Ukázka aplikačního rozhraní programu ncBrowse.
u příčné složky posunutí sledovat šíření numerické chyby, jejíž velikost ale zůstává na úrovni
10−7 , což je v souladu se zaokrouhlovací chybou, protože amplituda podélné vlny je v tomto
případě 1.
Formát netCDF se také ukázal velmi užitečný při vývoji a ladění programů, protože s netCDF soubory je možné samozřejmě pracovat již během vlastního delšího výpočtu. K nalezení
zejména programátorských chyb můžeme sice použít některý debugger typu gdb [67] či některou jeho nadstavbu typu DDD [68]. Pro detekci neoprávněného přístupu do paměti (např.
index pole mimo dovolené meze) nám obvykle pomohou některé knihovny, např. Electric
Fence [69], jejíž vývoj byl zastaven, její nástupce DUMA [70] nebo Valgrind [71]. Horší je
to v situaci, kdy použité numerické schéma je nestabilní nebo při výpočtu porušíme podmínky stability. Toto se nám může snadno stát např. u některých implementací absorpčních
okrajových podmínek zejména v rozích výpočetní oblasti, kde podmínka stability obvykle
vyžaduje použití kratšího časového kroku, jak již bylo zmíněno v části 3.4. Vzhledem ke složitosti schématu ovšem nejsme schopni tuto podmínku přesně určit. Tak se může stát, že řešení
39
3.5
Uložení napočítaných dat – formát NetCDF
soubor ve formátu netCDF, 3 MB
Obrázek 11: Odraz rovinné vlny na rozhraní plexisklo-hliník.
soubor ve formátu netCDF, 1247 kB
soubor ve formátu netCDF, 1738 kB
soubor ve formátu netCDF, 837 kB
Obrázek 12: Příklad lokalizace numerické nestability s pomocí napočtených dat uložených
v netCDF souboru.
diverguje a výpočet je s chybou21 ukončen. Zdroj těchto chyb se hledá poměrně obtížně a
při jejich lokalizaci nám může velmi pomoci rychlé procházení napočítanými daty. K tomu je
formát netCDF zcela ideální, jak je také demonstrováno na obr. 12, na kterém jsou odkazy
na 3 netCDF soubory. Tyto soubory se liší pouze počtem časových kroků (T = 250, 350, 500 )
použitém při simulaci. Jedná se o podobný výpočet jako na obr. 8, pouze je použita jiná verze
absorpčních okrajových podmínek, u kterých nebyla dodržena podmínka stability v rozích
výpočetní oblasti. Studiem netCDF souborů je zde možné snadno vypátrat zdroj nestability.
Na obr. 13 je odkaz na netCDF soubor a 6 animací dokumentujících modelování šíření
signálu podél trhliny pro Brazilský sendvičový disk [49]. Snímek prohlížeče Ncview, ve kterém
je tento soubor obsahující celou řadu zajímavých veličin otevřen, je na obr. 9. Na horní řadě
snímků na obr. 13 je např. velmi dobře patrná pomalu se šířící povrchová Rayleighova vlna.
Na těchto snímcích i animacích je také ilustrován vliv volby měřítka zobrazení a výběru
vhodné barevné mapy. Sloupce vlevo a vpravo poskytují stejné zobrazení jako volby Linear
a Low v programu Ncview [53].
Jak již bylo zmíněno, jako efektivní nástroj pro práci s daty ve formátu netCDF je
možné uvést např. programy Matlab, Octave, Scilab, Python. Např. pro Matlab je k dispozici NetCDF Toolbox [65] a netCDF interface to Matlab [66], při jejichž využití je práce
s netCDF soubory v Matlabu velmi jednoduchá. Stačí soubor zpřístupnit např. příkazem
f = netcdf(’File name’, ’clobber’) a poté jsou již veškerá data v tomto souboru k dispozici. Např. veškerá data reprezentovaná v netCDF souboru proměnnou u jsou dostupná
příkazem f{’u’}(:). Přitom je výhodné, že do paměti není nutně nahrána celá proměnná,
ale pouze ta její část, která je právě vyžadována. Malý, ale kompletní příklad, tentokrát zápis
do netCDF souboru v prostředí Matlab, je uveden v dodatku D.
21
Typicky „Floating point overflowÿ.
40
3.5
Uložení napočítaných dat – formát NetCDF
Energie
(Energie)1/2
(Energie)1/4
Animace ve formátu MPEG, 1.058 MB
Animace ve formátu MPEG, 917 kB
Animace ve formátu MPEG, 992 kB
Animace ve formátu MPEG, 150 kB
Animace ve formátu MPEG, 582 kB
Animace ve formátu MPEG, 321 kB
Obrázek 13: Časový vývoj šíření energie v Brazilském sendvičovém disku.
V programu Matlab je poměrně snadné realizovat grafické uživatelské prostředí pro práci
s daty. Jako malé nadstavby nad funkcí Matlabu slice jsem realizoval funkce slicei a
sliceit. slicei zobrazuje skalární funkci f (x, y, z) a sliceit umožňuje interaktivní zobrazení funkce f (x, y, z, t) . Vlastní aplikace poskytují pouze minimum ovládacích prvků, které
jsou dle názoru autora zcela postačující k rychlé práci s daty. Je proto možné se snadno
pohybovat po časové ose a měnit polohu řezů v rovinách xy , xz a yz . Dále již je v grafické podobě implementováno jen několik základních funkcí pro změnu parametrů zobrazení
typu shading či caxis. Nemá příliš smysl implementovat vlastnosti, které jsou v Matlabu
snadno dostupné standardními prostředky. Proto využití veškerých dalších velmi bohatých
možností Matlabu je k dispozici snadno z příkazové řádky Matlabu a také pomocí grafického
uživatelského rozhraní Matlabu, jak je také ukázáno alespoň na jednom obrázku 14.
Nejen pro 3D úlohy se jako efektivní formát zobrazení dat jeví VRML Virtual Reality
Modeling Language [72]. VRML model je možné vytvořit např. v Matlabu poměrně lehce
funkcí vrml. Vhodný prohlížeč pro VRML modely nalezneme opět např. na [72]. Pro Linux [?] i Microsoft Windows je k dispozici několik volně dostupných aplikací, např. VRMLview [73], Octaga Player [74] či ORBISNAP VRML Viewer [75]. S VRMLview mám někdy
pod Linuxem menší problémy, doprovodná chybová hláška „Warning: Too few colors for
PER VERTEX bindingÿ se projevuje tak, že některé části VRML modelu jsou zobrazeny
pouze jednolitou šedou barvou.
Na platformě Microsoft Windows je možné v rámci webového prohlížeče integrovat Cortona VRML Client [76]. Na základě zkušeností mohu konstatovat, že chodí pěkně i pod
Linuxem v emulátoru VMware [78].
41
3.5
Uložení napočítaných dat – formát NetCDF
Obrázek 14: Ukázka použití funkce sliceit v prostředí Matlab.
Obrázek 15: Ukázka programu VRMLview s 3 otevřenými VRML soubory.
42
3.6
Vstupní data pro soubor programů LISA
256
256
192
192
128
128
64
64
1
1
64
128
192
1
256
1
64
128
192
256
Obrázek 16: Příklad zobrazení materiálových vstupních parametrů pro programy LISA.
Ukázka zobrazení VRML modelů vytvořených v Matlabu z dat napočtených programem
LISA 3D je na obr. 15. Abychom zachovali rozumnou velikost VRML souborů, jsou modely
vytvořeny spíše jen pro ilustraci pouze v malém rozlišení.
V elektronické verzi tohoto dokumentu v části 4 jsou odkazy na několik VRML modelů,
které je možné zobrazit při vhodném nastavení webového prohlížeče.
3.6
Vstupní data pro soubor programů LISA
Implementace metod LISA/SIM ve 2D, 3D a LISA/ICI ve 2D v rámci počítačových programů
je realizována poměrně obecným způsobem.
Vstupní soubor je jednoduchý textový, přesto s poměrně slušnými možnostmi definice
vstupních parametrů. Malý příklad vstupního souboru je uveden v dodatku C. Některé základní vstupní parametry jsou popsány v práci [110].
Pokud jde např. o tvar geometrických oblastí s definicí materiálových parametrů, jako
typické příklady standardně předdefinovaných prvků ve 2D můžeme uvést: obdélník, kružnice,
kruhová výseč, elipsa, polygon (n-úhelník) a každý z nich s libovolným úhlem natočení. Pro
3D jsou k dispozici: kvádr, koule, kulová výseč, elipsoid, válec.
Externími nástroji mohou být ale sestaveny např. zcela libovolné konfigurace materiálových parametrů, které jsou uloženy ve vstupním netCDF souboru. Takto je možné vzít
např. fotografii povrchu materiálu a na základě barevných odstínů přiřadit jednotlivým složkám elastické koeficienty. Příklad vytvoření takového vstupního souboru v Matlabu je uveden
v dodatku D a ukázka zobrazení těchto parametrů je na obr. 16. Na tomto obrázku je pro
ilustraci zobrazen na snímku a) Lamého parametr λ pro křemík jako vstupní parametr pro
programy LISA ze vstupního netCDF souboru pro 2 různé orientace materiálových zrn uspořádaných ve formě šachovnice. Na snímku b) mají jednotlivá zrna náhodnou orientaci.
Každému nemusí tento typ vstupního souboru vyhovovat. Jeden z prvních pokusů grafické nadstavby napsané v Pythonu [60] s pomocí knihovny wxPython [61] je uveden v [124].
Vstupní soubor je také možné generovat jinými nástroji jako jsou Matlab, Octave, Scilab
43
3.6
Vstupní data pro soubor programů LISA
i Python. To je výhodné např. tehdy, pokud si Rpřejeme takový vstupní signál, který není
v programech LISA standardně definován, např. sin(x)/x dx . U Pythonu bychom v tomto
případě využili některou z celé řady dostupných knihoven [62]. Nápadům se meze nekladou,
takže někteří uživatelé dávají při generaci vstupního souboru přednost některému z interpretrů příkazů (shellu), jako jsou csh či bash [63] nebo třeba jinému interpretovanému jazyku
typu Perl [64].
3.6.1
Vstupní signály
Jako vstupní parametry mohou vystupovat složky posunutí ui i vnější síly fi . Těchto signálů
může být téměř libovolný počet22 , mohou se nacházet kdekoliv v rámci výpočetní sítě a mohou
mít libovolnou orientaci. Jako časový a prostorový profil signálu je možné zvolit buď některou
z předdefinovaných funkcí, např. Gauss, sinus, obdélník, polygon, funkce chyb nebo Rickerova
funkce, . . . , přičemž signál může být také modulován jinou funkcí. Opět je pochopitelně možné
vygenerovat vstupní signál externími nástroji nebo použít jako zdroj signálu např. výsledky
měření z reálného experimentu.
Jako malý příklad zdrojového signálu můžeme uvést alespoň signál, jehož časový průběh
je gaussovský modulovaný sin-usem a prostorový průběh je opět Gauss:
uk (x, t) =
N
X
(t − td − i/fr − (x − x0 )/v)2
cn exp −
c2t
i=1
× sin(2πf (t − td − i/fr − (x − x0 )/v + δs )
(y − y0 )2
(z − z0 )2
× exp −
exp
−
,
c2y
c2z
(159)
kde cn , ct , cy , cz jsou parametry pulsu, v je rychlost vlny, td časové zpoždění pulsu, f frekvence
modulující vlny, δs fázový posun, N počet opakování pulsu a fr opakovací frekvence.
22
Jako vždy záleží pouze na alokaci příslušných polí v programu.
44
4. Ilustrační výsledky
4
Ilustrační výsledky
Obrázky zde uvedené jsou vesměs pouze ilustrační a byly získány numerickým řešením elastodynamické vlnové rovnice ve 2D a 3D zpravidla pro velmi jednoduché konfigurace materiálových parametrů. Uvědomuji si, že jednotlivé obrázky a animace by si zasloužily podrobnější
komentář, který ovšem nemusí při prvním čtení této práce každého zajímat. Proto jsem se
rozhodl zevrubnou informaci k obrázkům prozatím nepřipojovat. Samozřejmě pro zájemce
na požádání podrobnou informaci velmi rád doplním :-).
Pokud není uvedeno jinak, jsou čas a amplituda v grafech zpravidla vyjádřeny v libovolných jednotkách.
Papír je přece jen poněkud statické médium a k prezentaci výsledků máme dnes již k dispozici atraktivnější možnosti. Takovým druhým krokem po statických obrázcích jsou animace
či video sekvence. Proto se v této části nachází také několik příkladů s odkazy na MPEG
soubory.
Ještě vhodnější je pak pracovat přímo s výsledky např. ve formátu netCDF [52] ať již
s pomocí některého z prohlížečů tohoto formátu, které jsou uvedeny v části 3.5, nebo např.
s pomocí programů, skriptů či funkcí napsaných pro systémy typu Matlab či Python.
Pro dostatečně názorné prohlížení video-sekvencí (animací) je užitečné se pozastavit
u volby multimediálního prohlížeče a jeho vhodného nastavení. Takovým prohlížečem rozumíme program, ve kterém je možné např. snadno zvolit opakování záznamu a měnit snímkovou
frekvenci. V Linuxu je takových aplikací dostupná celá řada, např. MPlayer [81], xine [82],
Kaffeine [83], VLC [84] či Totem [85]. Vhodné jsou ale zejména takové, ve kterých lze animaci
zastavit a postupovat po jednotlivých snímcích. Mezi takové patří například MpegTV [86] či
autorem práce oblíbený MPEG Player [87]. Prohlížeče s podobnými charakteristikami jsou
i pro Microsoft Windows, vyhledáme je opět standardní metodou23 . Několik málo jsem jich
opět pouze v Linuxu pod emulátorem VMware [78] vyzkoušel a mohu doporučit např. Media
Player Classic (MPC) [88] a zejména Sport Video Player [89]. Přijatelnou volbou je i Microsoft
Windows Media Player 10 [90].
Animace či video-sekvence výsledků simulací lze vytvářet poměrně snadno např. ve formátech AVI či MPEG [91]. V Matlabu za tím účelem můžeme použít např. funkci mpegwrite [92].
Jeden takový malý příklad je uveden v dodatku E.
Animace lze ale vytvářet celou řadou jiných metod. Nesmírně užitečné jsou např. nástroje
z balíku ImageMagick [94]. Z jednotlivých obrázků, které vytvoříme např. v programech typu
Matlab a nebo velmi pohodlně s pomocí Ncview, který při promítání umožňuje jednotlivé
snímky uložit na disk, můžeme snadno vytvořit libovolný typ video-souboru či např. animovaný GIF [93]. Je možné využít také široké možností jazyka JavaScript24 pro prezentaci na
webových stránkách. Soubor takových aplikací na promítání snímků najdeme např. na adrese [95]25 . Jako jednu z takových povedených aplikací je možné jmenovat jsImagePlayer [96],
pro který je např. pro Matlab k dispozici aplikace, která přímo generuje HTML stránky, na
kterých je přehrávání snímků řízeno tímto skriptem [97].
Pochopitelně jsou k dispozici publikace, ve kterých jsou také kvantitativní výsledky získané naším souborem programů LISA. Uvést můžeme alespoň publikace [109–130].
23
Například http://www.google.com/search?q=video+player+frame+step nebo
http://www.google.com/search?q=video+player+frame-by-frame.
24
Např. http://www.javascript.com/, http://javascript.internet.com/.
25
A opět také např. http://www.google.com/search?q=javascript+slideshow
45
4. Ilustrační výsledky
0.5
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0.1
0
0
−0.1
−0.1
Time = 40
Time = 60
0.5
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0.1
0
0
−0.1
−0.1
Time = 48
Time = 65
0.5
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0.1
0
0
−0.1
−0.1
Time = 53
Time = 75
Obrázek 17: Interakce dvou Gaussových pulsů reprezentujících podélné složky posunutí v homogenním prostředí při absorpčních okrajových podmínkách.
46
4. Ilustrační výsledky
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−0.2
Time = 200
Time = 300
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−0.2
Time = 250
Time = 350
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−0.2
Time = 275
Time = 375
Obrázek 18: Odraz Gaussové podélné vlny na rozhraní plexisklo–hliník při absorpčních okrajových podmínkách.
47
4. Ilustrační výsledky
−0.2
0
Time = 75
Time = 145
Time = 105
Time = 155
Time = 115
Time = 180
0.2
0.4
0.6
0.8
−0.2
0
0.2
0.4
0.6
0.8
Obrázek 19: Rozptyl Gaussové podélné vlny na otvoru ve skle. Zobrazena je podélná složka
posunutí.
48
4. Ilustrační výsledky
−0.3
−0.2
Time = 75
Time = 145
Time = 105
Time = 155
Time = 115
Time = 180
−0.1
0
0.1
0.2
0.3
−0.3
−0.2
−0.1
0
0.1
0.2
0.3
Obrázek 20: Rozptyl Gaussové podélné vlny na otvoru ve skle. Zobrazena je příčná složka
posunutí vlny.
49
4. Ilustrační výsledky
0.6
0.5
0.2
0.4
0.1
0.3
0
0.2
0.1
−0.1
0
−0.2
−0.1
Time = 45
0.6
0.5
0.2
0.4
0.1
0.3
0
0.2
0.1
−0.1
0
−0.2
−0.1
Time = 60
0.6
0.5
0.2
0.4
0.1
0.3
0
0.2
0.1
−0.1
0
−0.2
−0.1
Time = 370
0
0.2
0.4
0.6
−0.2
−0.1
0
0.1
0.2
Obrázek 21: Rozptyl gaussovského pulsu na podélné trhlině ve skle při absorpčních okrajových
podmínkách. Zobrazena je podélná (vlevo) a příčná složka posunutí.
50
4. Ilustrační výsledky
Time = 80
Time = 110
Time = 160
−0.2
0
0.2
0.4
0.6
0.8
−2
0
2
4
6
8
10
−3
x 10
Obrázek 22: Příklad šíření podélné vlny s Gaussovým profilem v hliníku při uvažování útlumu.
V levém sloupci je řešení bez útlumu, v pravém rozdíl mezi vlnou netlumenou a při započtení
útlumu.
51
4. Ilustrační výsledky
Time = 75
Time = 90
Time = 120
−0.1
0
0.1
0.2
0.3
0.4
0.5
−5
0
5
−3
x 10
Obrázek 23: Vliv konečného rozměru výpočetní sítě a „schodovitéhoÿ rozhraní na gaussovský puls na rozhraní sklo–hliník. V levém sloupci je podélná složka posunutí na síti 50×50.
V pravém sloupci je rozdíl amplitud na sítích o rozměrech 100×100 a 50×50.
52
4. Ilustrační výsledky
0
Time = 25
Time = 175
Time = 75
Time = 275
Time = 125
Time = 600
0.001 0.01
0.1
0.5
1
0
0.001 0.01
0.1
0.5
1
Obrázek 24: Šíření energie v Brazilském sendvičovém disku z plexiskla, ve kterém je tenká
hliníková vložka a trhlina podél této vložky. Disk je zatížen vnější bodovou silou na okraji
trhliny.
53
4. Ilustrační výsledky
−0.2
0
Time = 190
Time = 280
Time = 220
Time = 340
Time = 250
Time = 390
0.2
0.4
0.6
0.8
−0.2
0
0.2
0.4
0.6
0.8
Obrázek 25: Rozptyl gaussovského pulsu na hliníkové kouli v plexisklu při volných okrajových
podmínkách. Zobrazena je podélná složka posunutí.
54
4. Ilustrační výsledky
−0.1
0
Time = 70
Time = 120
Time = 95
Time = 135
Time = 110
Time = 160
0.1
0.2
0.3
0.4
−0.1
0
0.1
0.2
0.3
0.4
Obrázek 26: Interakce dvou Gaussových pulsů v homogenním prostředí ve 3D při volných
okrajových podmínkách. Zobrazena je podélná složka posunutí.
55
4.1
4.1
Ukázky filmových sekvencí a souborů VRML
Ukázky filmových sekvencí a souborů VRML
V této části je uveden seznam několika vybraných filmových sekvencí (animací) ve formátu
MPEG a souborů ve formátu VRML, na které jsou aktivní odkazy v hypertextové verzi této
práce, jež se nachází na adrese [1]. Uveden je vždy pouze stručný popis souboru a jeden
ilustrační snímek z příslušné video-sekvence či VRML souboru.
Obrázek 27: Interakce čtyř Gaussových svazků
v homogenním prostředí.
(Animace ve formátu MPEG, 1456 kB)
Obrázek 28: Odraz Gaussové podélné vlny na
rozhraní plexisklo–hliník. Absorpční okrajové
podmínky, (I).
(Animace ve formátu MPEG, 398 kB)
Obrázek 29: Odraz Gaussové podélné vlny na
rozhraní plexisklo–hliník. Absorpční okrajové
podmínky, (II).
(Animace ve formátu MPEG, 172 kB)
Obrázek 30: Rozptyl Gaussové vlny na trhlině ve
skle, (I).
(Animace ve formátu MPEG, 155 kB)
56
4.1
Ukázky filmových sekvencí a souborů VRML
Obrázek 31: Rozptyl Gaussové vlny na trhlině ve
skle, (II).
(Animace ve formátu MPEG, 145 kB)
Obrázek 32: Rozptyl Gaussové vlny na trhlině ve
skle, (III). Superponované vektorové pole
reprezentuje podélnou složku rychlosti.
(Animace ve formátu MPEG, 584 kB)
Obrázek 33: Rozptyl Gaussové vlny na trhlině ve skle
otočené o 90◦ , (I).
(Animace ve formátu MPEG, 208 kB)
Obrázek 34: Rozptyl Gaussové vlny na trhlině ve skle
otočené o 90◦ , (II).
(Animace ve formátu MPEG, 208 kB)
Obrázek 35: Rozptyl Gaussové vlny na trhlině ve skle
otočené o 90◦ , (III).
(Animace ve formátu MPEG, 182 kB)
57
4.1
Ukázky filmových sekvencí a souborů VRML
Obrázek 36: Rozptyl Gaussové vlny na kruhovém
otvoru ve skle, (I).
(Animace ve formátu MPEG, 286 kB)
Obrázek 37: Rozptyl Gaussové vlny na kruhovém
otvoru ve skle, (II).
(Animace ve formátu MPEG, 293 kB)
Obrázek 38: Rozptyl Gaussové vlny na kruhovém
otvoru ve skle, (III). Superponované vektorové pole
reprezentuje podélnou složku rychlosti.
(Animace ve formátu MPEG, 743 kB)
Obrázek 39: Rozptyl Gaussové vlny na kruhovém
otvoru ve skle, (IV). Superponované vektorové pole
reprezentuje podélnou složku rychlosti.
(Animace ve formátu MPEG, 1.030 MB)
Obrázek 40: Rozptyl Gaussové vlny na kruhovém
otvoru ve skle, (V). Zobrazena je podélná složka
rychlostního pole.
(Animace ve formátu MPEG, 316 kB)
58
4.1
Ukázky filmových sekvencí a souborů VRML
Obrázek 41: Rozptyl gaussovského pulsu
modulovaného sin-usem na kruhové hliníkové vložce
v plexisklu, (I).
(Animace ve formátu MPEG, 255 kB)
Obrázek 42: Rozptyl gaussovského pulsu
modulovaného sin-usem na kruhové hliníkové vložce
v plexisklu, (II).
(Animace ve formátu MPEG, 711 kB)
Obrázek 43: Rozptyl gaussovského pulsu
modulovaného sin-usem na kruhové hliníkové vložce
v plexisklu, (III). Superponované vektorové pole
reprezentuje podélnou složku rychlosti.
(Animace ve formátu MPEG, 818 kB)
Obrázek 44: Rovinná vlna dopadající na akustickou
čočku. Zobrazeno je pole podélných posunutí, (I).
(Animace ve formátu MPEG, 246 kB)
59
4.1
Ukázky filmových sekvencí a souborů VRML
Obrázek 45: Rovinná vlna dopadající na akustickou
čočku. Zobrazeno je pole podélných posunutí, (II).
(Animace ve formátu MPEG, 234 kB)
Obrázek 46: Rovinná vlna dopadající na akustickou
čočku. Zobrazena je kinetická energie, (III).
(Animace ve formátu MPEG, 230 kB)
Obrázek 47: Rovinná vlna dopadající na akustickou
čočku. Zobrazena je kinetická energie, (IV).
(Animace ve formátu MPEG, 293 kB)
Obrázek 48: Rozptyl gaussovského pulsu na kulové
hliníkové vložce v plexisklu při volných okrajových
podmínkách. Zobrazena je podélná složka
posunutí (I).
(Animace ve formátu MPEG, 158 kB)
60
4.1
Ukázky filmových sekvencí a souborů VRML
Obrázek 49: Rozptyl gaussovského pulsu na kulové
hliníkové vložce v plexisklu při volných okrajových
podmínkách. VRML model reprezentuje podélnou
složku posunutí v čase T = 150, (II).
(Soubor ve formátu VRML, 1.1 MB)
Obrázek 50: Rozptyl gaussovského pulsu na kulové
hliníkové vložce v plexisklu při volných okrajových
podmínkách. VRML model reprezentuje podélnou
složku posunutí v čase T = 170, (III).
(Soubor ve formátu VRML, 1.1 MB)
Obrázek 51: Rozptyl gaussovského pulsu na kulové
hliníkové vložce v plexisklu při volných okrajových
podmínkách. VRML model reprezentuje podélnou
složku posunutí v čase T = 190, (IV).
(Soubor ve formátu VRML, 1.1 MB)
61
5. Závěr
5
Závěr
V této práci jsme se věnovali vývoji a implementací modelu LISA, který slouží ke studiu
šíření elastických vln v libovolném nehomogenním prostředí. I z toho, co zde bylo vlastně
jen naznačeno, je snad zřejmé, že zde uvedená kolekce programů LISA v sobě stále skrývá
velký potenciál a může být s úspěchem využita při studiu šíření akustických vln, při diagnostice materiálů a v defektoskopii. Možnosti programu byly předvedeny na řadě jednoduchých
modelových úloh. Jsem přesvědčen, že k plnému pochopení potenciálu uvedeného přístupu
nestačí studium statického textu a proto je na adrese [1] k dispozici hypertextová verze této
práce s odkazy na několik video-souborů věnovaných řešení některých jednoduchých, přesto
snad názorných úloh z teorie šíření elastických vln. Video-sekvence představují ale pouze
první stupeň po statickém textu. Mnohem více poučení a náhledu do fyzikální problematiky je možné získat se soubory ve formátu netCDF. Proto v elektronické verzi této práce je
také alespoň několik odkazů na výsledky simulací jednoduchých modelových úloh, které jsou
uloženy v tomto formátu.
Dovolil bych si na tomto místě ještě malý výhled do budoucnosti26 . Pokud jde o fyzikální
stránku studované problematiky, prozatím jsme se zabývali vesměs lineárními procesy, i když
s neideálním kontaktním rozhraním již je možné studovat nelineární jevy. Tato problematika
je vysoce aktuální a bezpochyby bude nutné ji více rozpracovat a věnovat se jí.
A nyní k softwarové stránce: Náš soubor programů LISA není v současné době k dispozici
v paralelní verzi. Je proto možné řešit pouze relativně malé úlohy a nevyužije se potenciál
víceprocesorových systémů a počítačových klastrů [98] či gridů [99]. Relativně snadná je paralelizace pro symetrické multiprocesorové systémy [100] s využitím knihovny OpenMP [101],
kdy je možné přímo využít překladače např. od firem Intel [103], Portland Group [104] či
v blízké budoucnosti volně dostupné překladače firmy Sun [105]. Realizoval jsem v tomto
směru pouze první pokusy a výsledky zatím nejsou příliš uspokojivé. Např. při využití dvou
procesorů se výpočet urychlil pouze asi o 30%. Přesto zřejmě není důvod, aby pro relativně
malý počet procesorů výkon nerostl téměř lineárně, a proto se na tuto oblast v blízké budoucnosti určitě zaměřím. Pro výpočetní klastry a gridy je vhodná paralelizace úlohy metodou
MPI [106, 107]. Této problematice se na katedře fyzikální elektroniky FJFI ČVUT ve své
diplomové práci věnoval Ing. T. Pour [132], který rovněž přislíbil spolupráci při realizaci
paralelních verzí kolekce programů LISA s využitím knihovny MPI.
Je dobře známo, že paralelizace úlohy nemá velký smysl, pokud není dostatečně optimalizována sériová verze programu. Tento aspekt byl již krátce zmíněn v části 3.2.4 a určitě bude
vhodné se na optimalizaci programů LISA více zaměřit. A to také z toho důvodu, že růst
výkonu procesorů má své limity a např. růst frekvence procesorů se v poslední době výrazně
zpomalil (viz např. [108]). Proto je nutné hledat rezervy především v architektuře procesorů
a překladačích, které efektivně využijí vlastnosti CPU. Toto je cesta, kterou se bude zřejmě
ubírat další vývoj, rozhodující roli budou mít překladače a efektivní psaní programů.
Je také zajímavé, že vlastně nejsou k dispozici žádné volně dostupné programy pro studium šíření elastických vln. Což je poněkud v kontrastu s oblastí elektromagnetických vln,
pro jejichž modelování je možné získat řadu volně šiřitelných programů. Proto uvažujeme
o zpřístupnění některých programů LISA. To je ovšem projekt s poněkud delším výhledem
a skrývá se za ním poměrně velké množství práce, protože bude např. vhodné napsat velmi
flexibilní a všestranné uživatelské rozhraní.
26
Alespoň pokud se týká zde studované problematiky.
62
A. Ukázka sestavení výpočetního schématu pro 2D úlohu
A
Ukázka sestavení výpočetního schématu pro 2D úlohu
V tomto dodatku je pro získání jisté představy uvedena malá ukázka, jak je možné s pomocí
systému počítačové algebry generovat výpočetní schémata pro numerické modelování.
A.1
2D schéma – kód v jazyce REDUCE
Je zde ukázána část programu v jazyce Reduce, s jehož pomocí je ve 2D generováno numerické
schéma uvnitř výpočetní oblasti.
operator a,b,c,ff,fp,rh,q,deqrhs,w1,w2,w3,w4,pp;
% Materialove matice M
M15 := a(i,j)/2 - ff(i,j)/4;
M45 := a(i,j-1)/2 + ff(i,j-1)/4;
M16 := b(i,j)/2 + ff(i,j)/4;
M26 := b(i-1,j)/2 - ff(i-1,j)/4;
M27 := a(i-1,j)/2 + ff(i-1,j)/4;
M37 := a(i-1,j-1)/2 - ff(i-1,j-1)/4;
M38 := b(i-1,j-1)/2 + ff(i-1,j-1)/4;
M48 := b(i,j-1)/2 - ff(i,j-1)/4;
M11 := c(i,j)/4;
M22 := -c(i-1,j)/4;
M33 := c(i-1,j-1)/4;
M44 := -c(i,j-1)/4;
% diference
dw1 := w3(i+1,j+1) - w1(i,j);
dw2 := w4(i-1,j+1) - w2(i,j);
dw3 := w1(i-1,j-1) - w3(i,j);
dw4 := w2(i+1,j-1) - w4(i,j);
dw15 := w2(i+1,j) - w1(i,j);
dw45 := w3(i+1,j) - w4(i,j);
dw16 := w4(i,j+1) - w1(i,j);
dw26 := w3(i,j+1) - w2(i,j);
dw27 := w1(i-1,j) - w2(i,j);
dw37 := w4(i-1,j) - w3(i,j);
dw38 := w2(i,j-1) - w3(i,j);
dw48 := w1(i,j-1) - w4(i,j);
% Napocteni vyslednice sil v jednotlivych kvadrantech bunky
fp(1) := M16*dw16 + M11*dw1 + M15*dw15;
fp(2) := M22*dw2 + M26*dw26 + M27*dw27;
fp(3) := M33*dw3 + M38*dw38 + M37*dw37;
fp(4) := M44*dw4 + M48*dw48 + M45*dw45;
rh(1) := rh(i,j);
rh(2) := rh(i-1,j);
rh(3) := rh(i-1,j-1);
rh(4) := rh(i,j-1);
63
A.1
2D schéma – kód v jazyce REDUCE
factor w;
deqrhs1 := ((1/(4*rhom)*(q(0,1,i,j)*(rh(1)*fp(2)-rh(2)*fp(1))+q(0,2,i,j)
*(rh(1)*fp(3)-rh(3)*fp(1))+q(0,3,i,j)*(rh(1)*fp(4)-rh(4)*fp(1))))+fp(1))
*dt*dt/(rhom*dx*dx);
deqrhs2 := ((1/(4*rhom)*(q(1,0,i,j)*(rh(2)*fp(1)-rh(1)*fp(2))+q(1,2,i,j)
*(rh(2)*fp(3)-rh(3)*fp(2))+q(1,3,i,j)*(rh(2)*fp(4)-rh(4)*fp(2))))+fp(2))
*dt*dt/(rhom*dx*dx);
deqrhs3 := ((1/(4*rhom)*(q(2,0,i,j)*(rh(3)*fp(1)-rh(1)*fp(3))+q(2,1,i,j)
*(rh(3)*fp(2)-rh(2)*fp(3))+q(2,3,i,j)*(rh(3)*fp(4)-rh(4)*fp(3))))+fp(3))
*dt*dt/(rhom*dx*dx);
deqrhs4 := ((1/(4*rhom)*(q(3,0,i,j)*(rh(4)*fp(1)-rh(1)*fp(4))+q(3,2,i,j)
*(rh(4)*fp(3)-rh(3)*fp(4))+q(3,1,i,j)*(rh(4)*fp(2)-rh(2)*fp(4))))+fp(4))
*dt*dt/(rhom*dx*dx);
lisp;
procedure equalreplaceby1 u;
’replaceby . (for each a in u collect reval a);
algebraic;
put(’replaceby,’psopfn,’equalreplaceby1);
pp := pp(ii,jj);
ruletoa1 := for each aa in {a,b,c,ff,rh} join
for jk := -1:0 join
for ik := -1:0 collect
< <ppp := ((part(pp,0) := aa) where ii=>i+ik,jj=>j+jk);
ppp => mkid(mkid(aa,ik+1),jk+1) > >$
ruletow1 := for jk := -1:1 join
for ik := -1:1 collect
< <ppp := ((part(pp,0) := w1) where ii=>i+ik,jj=>j+jk);
ppp => mkid(mkid(w1,ik+1),jk+1) > >$
ruletow2 := for jk := -1:1 join
for ik := -1:1 collect
< <ppp := ((part(pp,0) := w2) where ii=>i+ik,jj=>j+jk);
ppp => mkid(mkid(w2,ik+1),jk+1) > >$
ruletow3 := for jk := -1:1 join
for ik := -1:1 collect
< <ppp := ((part(pp,0) := w3) where ii=>i+ik,jj=>j+jk);
ppp => mkid(mkid(w3,ik+1),jk+1) > >$
ruletow4 := for jk := -1:1 join
for ik := -1:1 collect
< <ppp := ((part(pp,0) := w4) where ii=>i+ik,jj=>j+jk);
ppp => mkid(mkid(w4,ik+1),jk+1) > >$
ruletow3
ruletow2
ruletow1
:=
:=
:=
append(ruletow3,ruletow4)$
append(ruletow2,ruletow3)$
append(ruletow1,ruletow2)$
64
A.1
2D schéma – kód v jazyce REDUCE
ruletoa1
:=
append(ruletoa1,ruletow1)$
put(’replaceby,’psopfn,’equalreplaceby);
deqrhs1
deqrhs2
deqrhs3
deqrhs4
:=
:=
:=
:=
(deqrhs1
(deqrhs2
(deqrhs3
(deqrhs4
where
where
where
where
ruletoa1);
ruletoa1);
ruletoa1);
ruletoa1);
off nat,echo;
out tmpv;
deqrhs1 := deqrhs1;
deqrhs2 := deqrhs2;
deqrhs3 := deqrhs3;
deqrhs4 := deqrhs4;
write "end";
shut tmpv;
on nat,echo;
clear a,b,c,d,ee,ff,chi,psi,w1,w2,w3,w4,wo1,wo2,wo3,wo4,rh;
operator mu,sigma1,sigma2,nu,lamda,rho,u1,v1,u,v,u2,v2,u3,v3,u4,v4,chi,q;
matrix a,b,c,d,ee,wo1,wo2,wo3,wo4,w1,w2,w3,w4,ff,rh;
a := mat((sigma1(ii,jj),0),(0,mu(ii,jj)));
b := mat((mu(ii,jj),0),(0,sigma2(ii,jj)));
c := mat((0,nu(ii,jj)),(nu(ii,jj),0));
d := mat((0,lamda(ii,jj)),(mu(ii,jj),0));
ee:= mat((0,mu(ii,jj)),(lamda(ii,jj),0));
w1 := mat((u1(1,ii,jj)),(v1(1,ii,jj)));
w2 := mat((u2(1,ii,jj)),(v2(1,ii,jj)));
w3 := mat((u3(1,ii,jj)),(v3(1,ii,jj)));
w4 := mat((u4(1,ii,jj)),(v4(1,ii,jj)));
wo1 := mat((u1(0,ii,jj)),(v1(0,ii,jj)));
wo2 := mat((u2(0,ii,jj)),(v2(0,ii,jj)));
wo3 := mat((u3(0,ii,jj)),(v3(0,ii,jj)));
wo4 := mat((u4(0,ii,jj)),(v4(0,ii,jj)));
omega := mat((omega1),(omega2));
ff := mat((0,chi(ii,jj)),(-chi(ii,jj),0));
rh := mat((rho(ii,jj),0),(0,rho(ii,jj)));
off nat,echo;
out tmpv1;
for ik := -1:0 do
for jk := -1:0 do
< <write "a",ik+1,jk+1," := ",(a where ii=>i+ik,jj=>j+jk);
write "b",ik+1,jk+1," := ",(b where ii=>i+ik,jj=>j+jk);
write "c",ik+1,jk+1," := ",(c where ii=>i+ik,jj=>j+jk);
write "d",ik+1,jk+1," := ",(d where ii=>i+ik,jj=>j+jk);
65
A.1
2D schéma – kód v jazyce REDUCE
write "ff",ik+1,jk+1," := ",(ff where ii=>i+ik,jj=>j+jk);
write "rh",ik+1,jk+1," := ",(rh where ii=>i+ik,jj=>j+jk);
write "ee",ik+1,jk+1," := ",(ee where ii=>i+ik,jj=>j+jk) > >;
for ik := -1:1 do
for jk := -1:1 do
< <write "w1",ik+1,jk+1," := ",(w1 where ii => i+ik, jj => j+jk);
write "w2",ik+1,jk+1," := ",(w2 where ii => i+ik, jj => j+jk);
write "w3",ik+1,jk+1," := ",(w3 where ii => i+ik, jj => j+jk);
write "w4",ik+1,jk+1," := ",(w4 where ii => i+ik, jj => j+jk);
write "wo1",ik+1,jk+1," := ",(wo1 where ii => i+ik, jj => j+jk);
write "wo2",ik+1,jk+1," := ",(wo2 where ii => i+ik, jj => j+jk);
write "wo3",ik+1,jk+1," := ",(wo3 where ii => i+ik, jj => j+jk);
write "wo4",ik+1,jk+1," := ",(wo4 where ii => i+ik, jj => j+jk) > >;
write "end";
shut tmpv1;
on nat,echo;
in tmpv1;
in tmpv;
rule1 := {chi(∼ii,∼jj) => lamda(ii,jj) - mu(ii,jj)};
% Vysledne schema
wn1 := 2*(w1 where ii => i, jj => j) - (wo1 where ii => i, jj => j) +
(deqrhs1 where rule1);
wn2 := 2*(w2 where ii => i, jj => j) - (wo2 where ii => i, jj => j) +
(deqrhs2 where rule1);
wn3 := 2*(w3 where ii => i, jj => j) - (wo3 where ii => i, jj => j) +
(deqrhs3 where rule1);
wn4 := 2*(w4 where ii => i, jj => j) - (wo4 where ii => i, jj => j) +
(deqrhs4 where rule1);
operator un1,un2,un3,un4,vn1,vn2,vn3,vn4;
un1(i,j) := wn1(1,1);
un2(i,j) := wn2(1,1);
un3(i,j) := wn3(1,1);
un4(i,j) := wn4(1,1);
vn1(i,j) := wn1(2,1);
vn2(i,j) := wn2(2,1);
vn3(i,j) := wn3(2,1);
vn4(i,j) := wn4(2,1);
clear a,b,c,d,ee,wo1,wo2,wo3,wo4,w1,w2,w3,w4,ff,rh,un1,un2,un3,un4,vn1,vn2,vn3,vn4;
load gentran;
gentranlang!* := ’c;
system "rm 2dd.c";
gentranout "2dd.c";
gentranin "2dd.tem";
gentranshut "2dd.c";
66
A.2
A.2
2D schéma – šablona pro generaci zdrojového kódu v jazyce C
2D schéma – šablona pro generaci zdrojového kódu v jazyce C
S pomocí programu v jazyce Reduce, jehož část byla uvedena v A.1, je možné odvodit příslušná diferenční schémata. Tato schémata je poté nutné exportovat např. do jazyka C. Soubor, který definuje, co přesně se má exportovat, se v tomto případě nazývá 2dd.tem a může
vypadat např. takto.
void init coeffs (void)
{
double rhom;
int i,j;
for (i=1;i<=nx;++i)
for (j=1;j<=ny;++j)
{
rhom = dx*dx/(dt*dt)*
(rho[i][j]+rho[i-1][j]+rho[i-1][j-1]+rho[i][j-1])/4.0;
;begin;
for k:=0:1 do
for n:=0:2 do
for m:=0:2 do
gentran
cu(k,n,m,i,j) ::=: cru(interior,k,n,m);
for k:=0:1 do
for n:=0:2 do
for m:=0:2 do
gentran
cv(k,n,m,i,j) ::=: crv(interior,k,n,m);
;end;
}
/* Nasleduje nekolik desitek podobnych radku. */
}
void One Step Inside (void)
{
int i,j;
;begin;
gentran
for i:=1:nx do
for j:=1:ny do
<<u(2,i,j) :=: un(interior,i,j);
v(2,i,j) :=: vn(interior,i,j) >>;
;end;
}
/* Nasleduje nekolik dalsich podprogramu pro ruzne typy okrajovych podminek. */
67
A.3
A.3
2D schéma – zdrojový kód v jazyce C
2D schéma – zdrojový kód v jazyce C
Ukázka části zdrojového kódu v jazyce C, který byl vygenerován s pomocí programu v jazyce
Reduce.
void init coeffs (void)
{
double rhom;
int i,j;
for (i=1;i<=nx;++i)
for (j=1;j<=ny;++j)
{
rhom = dx*dx/(dt*dt)*
(rho[i][j]+rho[i-1][j]+rho[i-1][j-1]+rho[i][j-1])/4.0;
cu[0][0][0][i][j]=0.0;
cu[0][0][1][i][j]=(2.0*sigma1[i-1][j-1]*(dt*dt)+2.0*sigma1[i-1][j]*(dt*dt))/(rho
[i-1][j-1]*(dx*dx)+rho[i-1][j]*(dx*dx)+rho[i][j-1]*(dx*dx)+rho[i][j]*(dx*dx));
cu[0][0][2][i][j]=0.0;
cu[0][1][0][i][j]=(2.0*mu[i-1][j-1]*(dt*dt)+2.0*mu[i][j-1]*(dt*dt))/(rho[i-1][j1]*(dy*dy)+rho[i-1][j]*(dy*dy)+rho[i][j-1]*(dy*dy)+rho[i][j]*(dy*dy));
/* Nasleduje nekolik desitek podobnych radku s prirazenim promennym. */
}
void one step inside (void)
{
int i,j;
for (i=1;i<=nx;++i)
for (j=1;j<=ny;++j)
{
u[2][i][j]=cu[0][2][1][i][j]*u[1][i+1][j]+cu[0][1][2][i][j]*u[1][i][
j+1]+cu[0][1][1][i][j]*u[1][i][j]+cu[0][1][0][i][j]*u[1][i][j-1]+cu
[0][0][1][i][j]*u[1][i-1][j]+cv[0][2][2][i][j]*v[1][i+1][j+1]+cv[0]
[2][1][i][j]*v[1][i+1][j]+cv[0][2][0][i][j]*v[1][i+1][j-1]+cv[0][1]
[2][i][j]*v[1][i][j+1]+cv[0][1][1][i][j]*v[1][i][j]+cv[0][1][0][i][
j]*v[1][i][j-1]+cv[0][0][2][i][j]*v[1][i-1][j+1]+cv[0][0][1][i][j]*
v[1][i-1][j]+cv[0][0][0][i][j]*v[1][i-1][j-1]-u[0][i][j];
v[2][i][j]=cu[1][2][2][i][j]*u[1][i+1][j+1]+cu[1][2][1][i][j]*u[1][i
+1][j]+cu[1][2][0][i][j]*u[1][i+1][j-1]+cu[1][1][2][i][j]*u[1][i][j
+1]+cu[1][1][1][i][j]*u[1][i][j]+cu[1][1][0][i][j]*u[1][i][j-1]+cu[
1][0][2][i][j]*u[1][i-1][j+1]+cu[1][0][1][i][j]*u[1][i-1][j]+cu[1][
0][0][i][j]*u[1][i-1][j-1]+cv[1][2][1][i][j]*v[1][i+1][j]+cv[1][1][
2][i][j]*v[1][i][j+1]+cv[1][1][1][i][j]*v[1][i][j]+cv[1][1][0][i][j
]*v[1][i][j-1]+cv[1][0][1][i][j]*v[1][i-1][j]-v[0][i][j];
}
}
/* Nasleduje nekolik dalsich podprogramu pro ruzne typy okrajovych podminek. */
68
B. Ukázka CDL reprezentace netCDF souboru
B
Ukázka CDL reprezentace netCDF souboru
netcdf l2-bd01 {
dimensions:
time = UNLIMITED ; // (33 currently)
nx all = 121 ;
ny all = 121 ;
nx = 121 ;
ny = 121 ;
nxl = 120 ;
nyl = 120 ;
No points tr = 2 ;
time r = 81 ;
nx r 0 = 41 ;
ny r 0 = 41 ;
nx r 1 = 21 ;
ny r 1 = 21 ;
No points ts = 5 ;
time s = 161 ;
Coord dim = 2 ;
Print str = 3 ;
No layers = 4 ;
L No xy = 2 ;
F No pulses = 2 ;
F No t = 3 ;
F No xy = 2 ;
variables:
long itime(time) ;
itime:units = "meter second^-1";
float time(time) ;
time:units = "second";
long itime r(time r) ;
itime r:units = "1";
float time r(time r) ;
time r:units = "second";
long itime s(time s) ;
itime s:units = "1";
float time s(time s) ;
time s:units = "second";
long nt max ;
long nxx ;
long nyy ;
char print fx(Print str) ;
char print fy(Print str) ;
// nasleduji dalsi vynechane definice
69
B. Ukázka CDL reprezentace netCDF souboru
long p tr i(No points tr, Coord dim) ;
float p tr xi(No points tr, Coord dim) ;
// nasleduji dalsi vynechane definice
long L npo(No layers) ;
float L x(No layers, L No xy) ;
// nasleduji dalsi vynechane definice
long F s npo(F No pulses) ;
float F x(F No pulses, F No xy) ;
// nasleduji dalsi vynechane definice
long l idx(nyl, nxl) ;
float rho(nyl, nxl) ;
rho:units = "kilogram meter^-3";
// nasleduji dalsi vynechane definice
float u(time, ny, nx) ;
u:units = "meter";
float v(time, ny, nx) ;
v:units = "meter";
float ek(time, ny, nx) ;
ek:units = "kilogram meter^2 second^-2";
float fx r 0(time r, ny r 0, nx r 0) ;
float u s(time s, No points ts) ;
// nasleduji dalsi vynechane definice
// global attributes:
:data source = "LISA 2D";
:comments = "Brasil disk";
data:
itime = 0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 325,
350, 375, 400, 425, 450, 475, 500, 525, 550, 575, 600, 625, 650, 675,
700, 725, 750, 775, 800 ;
time = 0, 1.587792e-06, 3.175585e-06, 4.763378e-06, 6.35117e-06,
7.938962e-06, 9.526755e-06, 1.111455e-05, 1.270234e-05, 1.429013e-05,
2.381689e-05, 2.540468e-05, 2.699247e-05, 2.858027e-05, 3.016806e-05,
3.969481e-05, 4.12826e-05, 4.28704e-05, 4.445819e-05, 4.604598e-05,
4.763377e-05, 4.922157e-05, 5.080936e-05 ;
nt max = 801 ;
nxx = 121 ;
nyy = 121 ;
nb x0 = 0 ;
nb xN = 0 ;
// nasleduji hodnoty prirazene vsem ostatnim promennym
}
70
C. Příklad vstupního souboru pro program LISA 2D
C
Příklad vstupního souboru pro program LISA 2D
Brazil sandwich disk
#
nx
ny
nt max
1024 1024
1001
# x size y size
0.060
0.060
# c dt
-0.9
# print x print y print t print t r print t s
1
1
25
10
5
# p all mesh p lf idx p inp par p mat par p absb par
1
0
1
0
0
# p fx p fy p f
r
r
r
# p u p v p uv p u vel p v vel p uv vel p ek p t11 p t12
ars ars 0
1
1
0
ars
0
0
# No tr x0:y0
x1:y1
print x print y
2
0.02:0.025
0.02:0.02 1 1
0.045:0.025 0.01:0.01 1 1
# No ts xi:yi
5
c -0.5:-0.5 -0.5
0
c -0.5:-0.5 -0.5 45
c -0.5:-0.5 -0.5 90
c -0.5:-0.5 -0.5 315
c -0.5:-0.5 -0.5 270
# nl
4
#0: absorb type
rho lamda/vl mu/vt sigma1 sigma2
0
vel
1.0 0.0
0.0
# layer type no points
rect
2
# xi:yi
0.0:0.0 -1.0:-1.0
#1: absorb type
rho lamda/vl mu/vt
0
vel
1259.0 2490.0
1130.0
circle 2
-0.5:-0.5 -0.5
#2: absorb type
rho lamda/vl mu/vt
0
vel
2700.0 6400.0
3040.0
rect 2
0.0:0.029 -1.0:0.001
#3: absorb type
rho lamda/vl mu/vt
0
vel
1.0 0.0
0.0
71
p t22
0
C. Příklad vstupního souboru pro program LISA 2D
rect 2
-0.33:-0.5 -0.33:0.001
# nb nb x0 nb y0 nb xN nb yN
0 0
0
0
0
# bc 0x bc 0y bc xn bc yn
ff
ff
ff
ff
# No pulses inp pulse min inp pulse min c
0
0.001
0.0001
# p type
xc:yc theta cn ct
cy
cr
td
f phase size
#
phase shift No repeat freq repeat
% g g l -0.0:-0.5 0.0
1.0 2.0e-6 -0.15 -0.1 0
1.0 4.0
0.0 1 0
% g r t -1.0:-0.5 0.0
1.0 1.0e-6 -0.10 -0.1 0
1.0 1.0
0.0 1 0
# F No pulses
2
#0: cn ct theta t type t npo s type s npo s prof type f phase size
#
phase shift No repeat freq repeat
1.0 1.0
0.0 polyg
3
circle 2
cc
1.0e4 3.0 0 1 1.2e4
# ti:fi
0.0:0
2.0e-6:1.0e8
100.0:1.0e8
# xi:yi
0.048:0.032 0.001
# phase size x phase shift x phase size y phase shift y (in Pi, as always)
0.99 0 1 0
# ms npo ms dx ms theta ms nt
1
-0.02
0
2
# ms ct[ms nt]
# 2000 1
#1: cn ct theta t type t npo s type s npo s prof type f phase size
#
phase shift No repeat freq repeat
-1.0 1.0
0.0 polyg
3
circle 2
cc
1.0e4 3.0 0 1 1.2e4
# ti, fi
0.0:0
2.0e-6:1.0e8
100.0:1.0e8
# xi:yi
0.048:0.028 0.001
# phase size x phase shift x phase size y phase shift y (in Pi, as always)
0.99 0 1 0
# ms npo ms dx ms theta ms nt
1
-0.02
0
2
# ms ct[ms nt]
2000 1
72
D. Ukázka generace vstupního souboru ve formátu netCDF
D
Ukázka generace vstupního souboru ve formátu netCDF
Materiálové vstupní parametry pro výpočet je možné připravit v případě kolekce programů
LISA celou řadou metod. Poměrně efektivní je např. vytvořit vstupní soubor ve formátu
netCDF jedním z celé řady dostupných programů. Zde je ukázána možnost vytvoření takového
souboru v prostředí Matlabu.
function set Si 8 256
file name = ’l2-Si 8 256 inp.nc’;
[nx ny rho lamda mu sigma1 sigma2 vl vt] = set mat chess;
% Plot one of the input parameters
pcolor(lamda)
shading flat
axis equal
axis tight
set (gcf, ’PaperPosition’, [0 0 8.648 8.226]); % figure size 67mm x 67mm
set (gca, ’XTick’, [1 64 128 192 256], ’YTick’, [1 64 128 192 256]);
print Si-lamda.eps -depsc2 -painters
%
% Lisa NetCDF input file
%
f = netcdf(file name, ’clobber’);
% Create NetCDF file.
f.Description = ’NetCDF test input file’;
f.Author = ’M. Sinor’;
f.Created = datestr(now);
% Define dimensions.
f(’nx’) = nx;
f(’ny’) = ny;
f{’rho’}
f{’lamda’}
f{’mu’}
f{’sigma1’}
f{’sigma2’}
f{’vl’}
f{’vt’}
=
=
=
=
=
=
=
% Global attributes.
ncfloat({’nx’,
ncfloat({’nx’,
ncfloat({’nx’,
ncfloat({’nx’,
ncfloat({’nx’,
ncfloat({’nx’,
ncfloat({’nx’,
f{’rho’}(:)
f{’lamda’}(:)
f{’mu’}(:)
f{’sigma1’}(:)
f{’sigma2’}(:)
=
=
=
=
=
rho;
lamda;
mu;
sigma1;
sigma2;
’ny’});
’ny’});
’ny’});
’ny’});
’ny’});
’ny’});
’ny’});
% Define variables.
% Put all the data.
73
D. Ukázka generace vstupního souboru ve formátu netCDF
f{’vl’}(:)
f{’vt’}(:)
= vl;
= vt;
% Close the file.
f = close(f);
function [nx, ny, rho, lamda, mu, sigma1, sigma2, vl, vt] = set mat chess()
GPa = 10^9;
ngx = 8;
ngy = 8;
gx size = 32;
gy size = 32;
nx = ngx * gx size;
ny = ngy * gy size;
[C1 rho1] = C Si;
C2 = Cpp(C1);
lamda e
lamda o
mu e
mu o
sigma1 e
sigma1 o
=
=
=
=
=
=
rho
lamda
mu
sigma1
1000*rho1 * ones (nx, ny);
zeros(nx, ny);
lamda;
lamda;
=
=
=
=
C1(1,2)
C2(1,2)
C1(6,6)
C2(6,6)
C1(1,1)
C2(1,1)
for i = 0:ngx-1
for j = 0:ngy-1
imin = 1 + i*
imax = (i+1)*
jmin = 1 + j*
jmax = (j+1)*
*
*
*
*
*
*
gx
gx
gy
gy
GPa;
GPa;
GPa;
GPa;
GPa;
GPa;
size;
size;
size;
size;
ij = i+j;
if (fix(ij/2)*2 == ij)
lamda (imin:imax, jmin:jmax)
mu
(imin:imax, jmin:jmax)
sigma1(imin:imax, jmin:jmax)
else
lamda (imin:imax, jmin:jmax)
mu
(imin:imax, jmin:jmax)
sigma1(imin:imax, jmin:jmax)
= lamda e;
= mu e;
= sigma1 e;
= lamda o;
= mu o;
= sigma1 o;
74
D. Ukázka generace vstupního souboru ve formátu netCDF
end
end
end
%
sigma1 = lamda + 2* mu;
sigma2 = sigma1;
vl
= sqrt(sigma1 ./rho);
vt
= sqrt(mu ./rho);
%
% end
function [C, rho] = C Si
% Si [100],[010],[001]
% Si (symetrie m3m)
% mass density
rho = 2.33;
% [g/cmˆ3]
C(1,1) = 165.7; % [GPa]
C(1,2) = 63.90;
C(4,4) = 79.56;
C(2,2) = C(1,1); C(3,3) = C(1,1); C(5,5) = C(4,4); C(6,6) = C(4,4);
C(1,3) = C(1,2); C(2,3) = C(1,2);
C(2,1) = C(1,2); C(3,1) = C(1,3); C(3,2) = C(2,3);
function Cpp = Cpp(C)
%
% Otoceni tenzoru napeti
%
% smer [1 1 -2],[-110],[111] :
% pro kubickou symetrii
% ksi = pi./4;
% nu = acos(1/sqrt(3));
Cpp = zeros(6);
Cpp(1,1) = (C(1,1) +
C(1,2) + 2.*C(4,4))./2;
Cpp(2,2) = Cpp(1,1);
Cpp(3,3) = (C(1,1) + 2.*C(1,2) + 4.*C(4,4))./3;
Cpp(1,2) = (C(1,1) + 5.*C(1,2) - 2.*C(4,4))./6;
Cpp(2,1) = Cpp(1,2);
Cpp(1,3) = (C(1,1) + 2.*C(1,2) - 2.*C(4,4))./3;
Cpp(3,1) = Cpp(1,3);
Cpp(2,3) = Cpp(1,3);
Cpp(3,2) = Cpp(2,3);
75
D. Ukázka generace vstupního souboru ve formátu netCDF
Cpp(1,5)
Cpp(5,1)
Cpp(2,5)
Cpp(5,2)
Cpp(4,6)
Cpp(6,4)
= (C(1,2) - C(1,1) + 2.*C(4,4))./3./sqrt(2);
= Cpp(1,5);
=-Cpp(1,5);
= Cpp(2,5);
=-Cpp(1,5);
= Cpp(4,6);
Cpp(4,4) = (C(1,1) - C(1,2) +
C(4,4))./3;
Cpp(5,5)=Cpp(4,4);
Cpp(6,6) = (C(1,1) - C(1,2) + 4.*C(4,4))./6;
% Cpp - End
76
E. Příklad vytvoření MPEG animace v Matlabu
E
Příklad vytvoření MPEG animace v Matlabu
Opět pouze pro ilustraci jako velmi jednoduchý příklad je v tomto dodatku uveden skript
v Matlabu, který z vybrané proměnné uložené v netCDF souboru vygeneruje video ve formátu
MPEG.
% Movie generated by Matlab
no frames = 25;
nx = 256;
ny = 256;
for i = 1:no frames
u(:,:,i) = getcdf(’l2-crack l’,’u’, [i -1 -1], [i -1 -1], [1 1 1], 2);
end;
u min = min(u(:));
u max = max(u(:));
% u min = 1.05* u min;
% u max = 1.05* u max;
m u crack l = moviein(no frames);
for i = 1: no frames
surf(u(:,:,i));
shading interp;
colormap ncv 3gauss
axis([1 nx 1 nx u min u max]);
caxis([u min u max]);
set (gca, ’XTickLabel’, [], ’YTickLabel’, []);
m u crack l(:,i) = getframe;
end;
mpgwrite(m u crack l, ncv 3gauss, ’m u crack l.mpg’, [1 0 1 0 10 5 5 5])
77
Reference
Reference
[1] M. Šiňor: Modelování a vizualizace šíření elastických vln v obecném nehomogenním
prostředí, http://kfe.fjfi.cvut.cz/˜sinor/r/lisa/h2005/ (document), 4.1, 5
[2] LaTeX – A document preparation system, http://www.latex-project.org/ (document)
[3] TEX Users Group, http://www.tug.org/ (document)
[4] Československé sdružení uživatelů TEXu, http://www.cstug.cz/ (document)
[5] pdfTeX, http://www.tug.org/applications/pdftex/ (document)
[6] PDF Reference, http://partners.adobe.com/public/developer/pdf/index reference.html
(document)
[7] P. P. Delsanto, T. Whitcombe, H. H. Chaskelis, R. B. Mignogna: Connection Machine
Simulation of Ultrasonic Wave Propagation in Materials I: The One-dimensional Case.
Wave Motion, 1992, 16, s. 65. 3
[8] P. P. Delsanto, R. S. Schechter, H. H. Chaskelis, R. B. Mignogna, R. B. Kline: Connection Machine Simulation of Ultrasonic Wave Propagation in Materials II: The Twodimensional Case. Wave Motion, 1994, 20, s. 295. 3
[9] P. P. Delsanto, R. S. Schechter, R. B. Mignogna: Connection Machine Simulation of Ultrasonic Wave Propagation in Materials III: The Three-dimensional Case. Wave Motion,
1997, 26, s. 329–339. 3.3.1
[10] P. P. Delsanto, M. Scalerandi: A spring model for the simulation of the propagation of
ultrasonic pulses through imperfect contact interfaces. J. Acoust. Soc. Am., 1998, 104,
s. 2584–2591. 3.2.1
[11] J. Horský, J. Novotný, M. Štefaník: Mechanika ve fyzice. Praha: Academia, 2002.
[12] J. Kvasnica, A. Havránek, P. Lukáč, B. Sprušil: Mechanika. Praha: Academia, 2004.
[13] R. P. Feynman, R. B. Leighton, M. Sands: Feynmanovy přednášky z fyziky 3/3. Havlíčkův Brod: Fragment, 2002. 2.6, 2.6
[14] M. Okrouhlík, C. Höschl, J. Plešek, S. Pták, J. Nadrchal: Mechanika poddajných těles,
numerická matematika a superpočítače. Praha: Ústav termomechaniky AV ČR, 1997. 3,
2.7
[15] M. Brdička: Mechanika kontinua. Praha: Nakladatelství ČSAV, 1959. 2.5, 2.6
[16] M. Brdička, L. Samek, B. Sopko: Mechanika kontinua. Praha: Academia, 2000. 2.4, 2.4,
2.5, 5, 2.8
[17] D. Royer, E. Dieulesaint: Elastic Waves in Solids I. Free and Guided Propagation. Berlin
Heidelberg: Springer-Verlag, 2002. 2.5, 2.8, 3.2.1
[18] D. Royer, E. Dieulesaint: Elastic Waves in Solids II. Generation, Acousto-optic Interaction and Applications. Berlin Heidelberg: Springer-Verlag, 2002.
78
Reference
[19] J. G. Harris: Linear Elastic Waves. Cambridge Texts in Applied Mathematics.
Cambridge University Press, 2001. 2.8
[20] J. L. Rose: Ultrasonic Waves in Solid Media. Cambridge University Press, 1999. 2.8
[21] J. Sapriel: Acousto-Optics. Chichester: John Wiley and sons Ltd., 1979.
[22] M. J. P. Musgrave: Crystal Acoustics. San Francisco: Holden-Day Inc., 1970.
[23] J. Tolar, I. Štoll: Teoretická fyzika. Praha: Vydavatelství ČVUT, 1994. 2.3, 2.7, 2.8
[24] A. Quarteroni, R. Sacco, F. Saleri: Numerical Mathematics. Berlin Heidelberg: SpringerVerlag, 2000. 3.1.1, 3.1.1, 3.2.1
[25] Computer algebra system – Wikipedia, the free encyclopedia,
http://en.wikipedia.org/wiki/Computer algebra system 3.2.1
[26] REDUCE Home Page, http://www.uni-koeln.de/REDUCE 3.2.1, 3.2.4
[27] W. D. Smith: A nonreflecting plane boundary for wave propagation problems. Journal of
Computational Physics, 1974, 15, s. 492–503. 3.4
[28] R. A. Renaut: Absorbing boundary conditions, difference operators, and stability. Journal
of Computational Physics, 1992, 102, s. 236–251.
[29] B. Engquist, A. Majda: Absorbing boundary conditions for the numerical simulation of
waves. Mathematics of Computation, July 1977, Vol. 31, No. 139, s. 629–651. 3.4
[30] R. Clayton, B. Engquist: Absorbing boundary conditions for acoustic and elastic wave
equations. Bulletin of the Seismological Society of America, Dec. 1977, Vol. 67, No. 6,
s. 1529–1540. 3.4
[31] B. Engquist, A. Majda: Radiation boundary conditions for Acoustic and elastic wave
calculations. Communications on Pure and Applied Mathematics, 1979, Vol. XXXII,
s. 313–357. 3.4
[32] L. N. Trefethen: Instability of Difference Models for Hyperbolic Initial Boundary Value
Problems. Communications on Pure and Applied Mathematics, 1984, Vol. XXXVII,
s. 329–367.
[33] A. Majda and S. Osher: Initial-boundary value problems for hyperbolic equations with
uniformly Characteristic Boundary. Communications on Pure and Applied Mathematics,
1975, Vol. XXVIII, s. 607–675.
[34] B. E. Engquist, S. Osher, R. C. J. Somerville (Eds.) Large-Scale Computations in Fluid
Mechanics. Vol. 22, Part 1. Lectures in Applied Mathematics. Providence, Rhode Island:
American Math. Soc., 1985.
[35] R. L. Higdon: Absorbing Boundary Conditions for Difference Approximations to the
Multi-Dimensional Wave Equation. Mathematics of Computation, Oct. 1986, Vol. 47,
No. 176, s. 437–459.
79
Reference
[36] A. Bayliss: Far Field Boundary Conditions for Compressible Flows. Journal of Computational Physics, 1982, 48, s. 182–199.
[37] L. N. Trefethen: Group Velocity Interpretation of the Stability Theory of Gustafsson,
Kreiss, and Sundstrom. Journal of Computational Physics, 1983, 49, s. 199–217.
[38] B. Gustafsson: The Convergence Rate for Difference Approximations to Mixed Initial
Boundary Value Problems. Mathematics of Computation, Apr. 1975, Vol. 29, No. 130,
s. 396–406.
[39] B. Gustafsson, H.-O. Kreiss: Boundary Conditions for Time Dependent Problems with
an Artificial Boundary. Journal of Computational Physics, 1979, 30, s. 333–351.
[40] A. Skollermo: A Better Difference Scheme for Laplace Equation in Cylindrical Coordinates. Journal of Computationa Physics, 1982, 47, s. 160–163.
[41] L. N. Trefethen, L. Halpern: Well-Posedness of One-Way Wave Equations and Absorbing Boundary Conditions. Mathematics of Computation, Oct. 1986, Vol. 47, No. 176,
s. 421–435.
[42] B. Gustafsson: The Choice of Numerical Boundary Conditions for Hyperbolic Systems.
Journal of Computational Physics, 1982, 48, s. 270–283.
[43] B. Gustafsson, H.-O. Kreiss, A. Sundstrom: Stability Theory of Difference Approximations for Mixed Initial Boundary Value Problems. II. Mathematics of Computation, July
1972, Vol. 26, No. 119, s. 649.
[44] C. I. Goldstein: The Finite Element Method With Nonuniform Mesh Sizes for Unbounded
Domains. Mathematics of Computation, Apr. 1981, Vol. 36, No. 154, s. 387.
[45] R. L. Higdon: Initial-Boundary Value Problems for Linear Hyperbolic Systems. SIAM
Review, June 1986, Vol. 28, No. 2.
[46] R. L. Higdon: Numerical Absorbing Boundary Conditions for the Wave Equation. Mathematics of Computation, July 1987, Vol. 49, No. 179, s. 65–90.
[47] J. B. Keller: Exact Non-reflecting Boundary Conditions. Journal of Computational Physics, 1989, 82, s. 172–192.
[48] E. L. Lindman: ”Free-Space” Boundary Conditions for the Time Dependent Wave
Equations. Journal of Computational Physics, 1975, 18, s. 66–78.
[49] Suo, Z., Hutchinson, J.W., Sandwich Test Specimens for Measuring Interface Crack
Toughness. Materials Science and Engineering A107 135-143, 1989. 3.5
[50] Scientific Data Format Information FAQ,
http://www.cv.nrao.edu/fits/traffic/scidataformats/faq.html 3.5
[51] The NCSA HDF Home Page, http://hdf.ncsa.uiuc.edu/ 3.5
[52] Unidata – NetCDF, http://my.unidata.ucar.edu/content/software/netcdf/ (document),
3.5, 4
80
Reference
[53] Ncview: a netCDF visual browser,
http://meteora.ucsd.edu/˜pierce/ncview home page.html 3.5, 3.5
[54] Cygwin, http://cygwin.com/ 3.5
[55] Ncview under cygwin, http://meteora.ucsd.edu/˜pierce/ncview win.html 3.5
[56] ncBrowse, A Graphical netCDF File Browser,
http://www.epic.noaa.gov/java/ncBrowse/ 3.5
[57] The MathWorks – MATLAB and Simulink for Technical Computing,
http://www.mathworks.com/ 3.1.3, 3.5
[58] GNU Octave Repository, http://www.mathworks.com/ 3.5
[59] Scilab - A Free Scientific Software Package, http://scilab.org/ 3.5
[60] Python Programming Language, http://www.python.org/ 3.5, 3.6
[61] wxPython, http://www.wxpython.org/ 3.6
[62] Numeric And Scientific – Python Info Wiki,
http://wiki.python.org/moin/NumericAndScientific 3.6
[63] BASH, http://www.gnu.org/software/bash/bash.html 3.6
[64] The Perl Directory at Perl.org, http://www.perl.org/ 3.6
[65] NetCDF Toolbox for Matlab,
http://woodshole.er.usgs.gov/staffpages/cdenham/public html/MexCDF/ 3.5
[66] The CSIRO netCDF/OPeNDAP interface to matlab,
http://www.marine.csiro.au/sw/matlab-netcdf.html 3.5
[67] GDB: The GNU Project Debugger, http://www.gnu.org/software/gdb/ 3.5
[68] DDD – Data Display Debugger, http://www.gnu.org/software/ddd/ 3.5
[69] Electric Fence, http://freshmeat.net/projects/efence/ 3.5
[70] D.U.M.A. – Detect Unintended Memory Access, http://duma.sourceforge.net/ 3.5
[71] Valgrind, http://www.valgrind.org/ 3.5
[72] Web3D Consortium – Open Standards for Real-Time 3D Communication,
http://www.web3d.org/ (document), 3.5
[73] Systems in Motion (SIM) – SIM VRMLview,
http://www.sim.no/products/SIM VRMLview/ 3.5
[74] Octaga Player for VRML and X3D, http://www.octaga.com/ 3.5
[75] ORBISNAP Free VRML Viewer, http://www.orbisnap.com/ 3.5
[76] Cortona VRML Client, http://www.parallelgraphics.com/products/cortona/
ment), 3.5
81
(docu-
Reference
[77] Cooperative Linux, https://www.colinux.org/ 3.5
[78] VMware, http://www.vmware.com/ 3.5, 3.5, 4
[79] VMware Player, http://www.vmware.com/products/player/ 3.5
[80] VMTN - Virtual Machine Center, http://www.vmware.com/vmtn/vm/ 3.5
[81] MPlayer – The Movie Player, http://www.mplayerhq.hu/ 4
[82] xine - A Free Multimedia Player, http://xinehq.de/ 4
[83] Kaffeine Player, http://kaffeine.sourceforge.net/ 4
[84] VLC media player, http://videolan.org/vlc/ 4
[85] Totem, http://www.hadess.net/totem.php3 4
[86] MpegTV, MPEG Movie and VCD Player for Linux and Unix,
http://www.mpegtv.com/ 4
[87] The Berkeley MPEG Player,
http://bmrc.berkeley.edu/frame/research/mpeg/mpeg play.html (document), 4
[88] Media Player Classic (MPC), http://sourceforge.net/projects/guliverkli/ 4
[89] Sport Video Player, http://www.yessoft.com/ (document), 4
[90] Microsoft Windows Media Player 10,
http://www.microsoft.com/windows/windowsmedia/mp10/default.aspx (document), 4
[91] MPEG . ORG - MPEG Pointers and Resources, http://www.mpeg.org/ (document), 4
[92] MATLAB Central File Exchange – mpgwrite,
http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=309 4
[93] GIF Animation on the WWW, http://members.aol.com/royalef/gifanim.htm 4
[94] ImageMagick: Convert, Edit, and Compose Images,
http://www.imagemagick.org/ 4
[95] JavaScript Kit - Images Slideshows & Galleries,
http://www.javascriptkit.com/script/cutindex21.shtml 4
[96] jsImagePlayer 1.0,
http://www.astro.umd.edu/˜xshcn/jscript/,
http://www.geocities.com/SiliconValley/7116/jv movie.html 4
[97] jsImagePlayer - Movie produced by Matlab, http://www.fi.uib.no/AMOS/JSPLAY/ 4
[98] Computer cluster – Wikipedia, the free encyclopedia,
http://en.wikipedia.org/wiki/Computer cluster 5
[99] Grid computing – Wikipedia, the free encyclopedia,
http://en.wikipedia.org/wiki/Grid computing 5
82
Reference
[100] Symmetric multiprocessing – Wikipedia, the free encyclopedia,
http://en.wikipedia.org/wiki/Symmetric multiprocessing 5
[101] OpenMP: Simple, Portable, Scalable SMP Programming, http://www.openmp.org/ 5
[102] GCC, the GNU Compiler Collection, http://gcc.gnu.org/ 3.2.4
[103] Intel Software Development Products, http://www.intel.com/software/products/ 5
[104] The Portland Group PGI Parallel Fortran, C and C++ Compilers and Tools,
http://www.pgroup.com/ 5
[105] Sun Studio: Compilers and Tools on Linux,
http://developers.sun.com/prodtech/cc/linux index.html 5
[106] The Message Passing Interface (MPI) standard, http://www-unix.mcs.anl.gov/mpi/ 5
Message Passing Interface Forum, http://www.mpi-forum.org/
P. Pacheco, Parallel Programming with MPI, http://www.cs.usfca.edu/mpi/
[107] http://www.google.com/search?q=MPI+message+passing+interface 5
[108] Tom’s Hardware Guide Processors: The Mother of All CPU Charts 2005/2006,
http://www.tomshardware.com/2005/11/21/the mother of all cpu charts 2005/ 5
[109] R. Ježdík, J. Červ: Dispersive Properties of Media Discretized by LISA-2D Code in
Wave Modelling. Acta Techn. CSAV, Vol. 49, s. 409-422.
[110] J. Vodička: Použití genetického algoritmu při identifikaci numericky simulovaných ultrazvukových signálů. Výzkumný úkol, FJFI ČVUT Praha, 2002. 3.6
[111] J. Vodička: Použití genetického algoritmu při ultrazvukové detekci efektů v materiálu.
Diplomová práce, FJFI ČVUT Praha, 2004.
[112] Delsanto, P. - Drška, L. - Liska, R. - Šiňor, M.: Implementation of Method Lisa: Application to Wave Propagation in 2D Systems. In: Workshop 97. Prague: CTU, 1997,
vol. I, p. 125–126.
[113] P. P. Delsanto, L. Drska, R. Liska, M. Sinor: Computer algebra supported solution
of the elastodynamic wave equation in 2D and 3D. In: MODELLING’98: 1st IMACS
Conference on Mathematical Modelling in Mechanics and Geodynamics, Prague, July
7–11, 1998. MODELLING’98 Abstracts, Prague 1998, p. 3.
[114] L. Drska, R. Liska, M. Sinor: Computer Simulation and Visualization of Acoustic Wave
Propagation in 2D and 3D. In: MODELLING’98: 1st IMACS Conference on Mathematical Modelling in Mechanics and Geodynamics, Prague, July 7–11, 1998. MODELLING’98
Abstracts, Prague 1998, p. 5.
[115] R. Jezdik, M. Landa, Z. Prevorovsky, M. Sinor: Source modelling of acoustic emission
induced by crack propagation in bimaterial interface In: MODELLING’98: 1st IMACS
Conference on Mathematical Modelling in Mechanics and Geodynamics, Prague, July
7–11, 1998. MODELLING’98 Abstracts, Prague 1998, p. 2.
83
Reference
[116] P. P. Delsanto, L. Drška, R. Liska, M. Šiňor: Solution of the Elastodynamic Wave
Equation in 2D and 3D. In: Workshop 98. Prague: CTU, 1998, vol. I, p. 55–56.
[117] L. Drska, R. Liska, M. Sinor: LISA 2D/3D Codes: Concepts, Implementation, Applications. Scientific Conference “Final Results and Possibilities of Industrial Applications
of the Results of the Copernicus Project CIPA CT94-0132” August 28 – 31, Universitatea
“Stefan Cel Mare” Suceava, Romania 1998.
http://kfe.fjfi.cvut.cz/˜sinor/r/lisa/s98/
[118] Z. Převorovský, M. Landa, R. Ježdík, P. Hora, M. Šiňor: Dispersion Effects in Ultrasonics Diagnostics of Structures. In: Defectoscopy’99. Book of Abstracts. Prague: Czech
Society for Nondestructive Testing, 1999, p. 7.
[119] Landa, M. - Převorovský, Z. - Hora, P. - Ježdík, R. - Šiňor, M.: Numerical Modeling and Experimental Evaluation of Geometrical Dispersion Effects. In: Proceedings of
”Inženýrská mechanika ’99”. Prague: Czech Society for Nondestructive Testing, 1999,
p. 89–94.
[120] Šiňor, M. - Ježdík, R. - Landa, M. - Převorovský, Z.: Acoustic Emission Induced by
Crack Propagation in Bimaterial Interface: Modelling and Experiment. In: Proceedings
of Workshop 99. Prague: CTU, 1999, p. 52.
[121] M. Šiňor: Simulace a vizualizace šíření elastodynamických vln v obecném nehomogenním prostředí. Seminář F797 Moderní metody počítačové fyziky ateliér FÚ UK, Praha,
1999
http://kfe.fjfi.cvut.cz/˜sinor/edu/sem-mff-1999/
[122] M. Sinor, R. Liska, R. Jezdik: Computer Algebra Supported Numerical Solution of Elastic Waves Propagation. EUROMECH Colloquium 419: Elastic Waves in Nondestructive
Testing Prague, 3-5 October 2000. Institute of Thermomechanics, Academy of Sciences
of the Czech Republic, Prague 2000.
http://kfe.fjfi.cvut.cz/˜sinor/r/lisa/euromech2000/
[123] M. Šiňor: Computer Simulations of Elastic Waves propagation. In: Proceedings of
Workshop 2002. Prague: CTU, 2002, vol. A, s. 154–155. ISBN 80-01-02511-X.
[124] P. Hora, M. Šiňor: Šíření napěťových vln v nehomogenním prostředí. In: Defectoscopy
2002. Liberec: Czech Society for Nondestructive Testing, 2002, s. 75–83. ISBN 80-2142247-5. 3.6
[125] M. Sinor: Computer Algebra Supported Solution of the Elastic Waves Propagation by
Method LISA. ESF Scientific Programme on Nonlinear Acoustic Techniques for MicroScale Damage Diagnostics (NATEMIS). Topical Meeting “LISA and Other Nonlinear
Simulation Techniques” Torino, January 28 – February 1, 2002.
http://kfe.fjfi.cvut.cz/˜sinor/r/lisa/natemis2002/
[126] M. Šiňor, M. Landa: Using Point Source Array for Modeling of Oblique Wave Impact
on Liquid-Solid Interface. In: Proceedings of Workshop 2003. Prague: CTU, 2003, s. 170–
171. ISBN 80-01-02708-2.
84
Reference
[127] M. Sinor, V. Sumova: Computer Algebra Supported Modeling of Wave Propagation.
Ninth International Workshop on Nonlinear Elasticity in Materials: IWNEM 9, joint with
NATEMIS Annual General Workshop 2004 May 30 – June 4, 2004. Blekinge Institute
of Technology, Karlskrona, Sweden. Conference CD-ROM, 2004.
http://kfe.fjfi.cvut.cz/˜sinor/r/lisa/iwnem2004/
[128] M. Sinor: Numerical modeling and visualization of elastic waves propagation in arbitrary complex media. 8th Workshop on Multimedia in Physics Teaching and Learning of
the European Physical Society. Karl-Franzens-Universität Graz. 9–11 September 2004.
WEB (to be published).
http://kfe.fjfi.cvut.cz/˜sinor/docs/mptl2004/
[129] M. Sinor, V. Sumova: Computer Algebra Supported Numerical Modeling of Elastic
Waves Propagation in Complex Media. The 3rd International Colloquium Mathematics
in Engineering and Numerical Physics 7–9 October, 2004, Bucharest. (to be published).
http://kfe.fjfi.cvut.cz/˜sinor/r/lisa/menp2004/
[130] M. Šiňor, V. Šumová: Modelling of the Propagation of Ultrasonic Pulses Through Imperfect Contact Interfaces. In: Proceedings of Workshop 2004. Prague: CTU, 2004, Part
A, Vol. 8, pp. 158–159. ISBN 80-01-02945-X.
[131] V. Šumová: Modelování síření elastických vln v nehomogenním prostedí. Diplomová
práce, FJFI ČVUT Praha, 2005. (document)
[132] T. Pour: Atomární simulace fyzikálních vlastností pevných látek metodou molekulární
dynamiky. Diplomová práce, FJFI ČVUT Praha, 2005. 5
[133] Ing. T. Pour, student doktorského studijního programu na FJFI ČVUT Praha. 3.2.4
2006/04/28
85

Podobné dokumenty

01-VIGOR-rejstrik

01-VIGOR-rejstrik Pro šrouby s vnitřním drážkovým profilem

Více

Matematická analýza - zápočtové příklady

Matematická analýza - zápočtové příklady imaginární část funkce je identicky rovna nule na C, proto funkce není holomorfní a neexistuje tedy primitivní funkce Ψ( b )2 pro neuzavrené křivky neprochazející nulou je integral roven reálnému ...

Více

Climate Change Initiative

Climate Change Initiative Molární koncentrace CO2 a CH4 ze senzorů SCIAMACHY (Envisat) a TANSO (GOSAT, JAXA+NIES+MOE) Pro oblast horních vrstev atmosféry budou využity senzory IASI (MetOp-A), MIPAS (Envisat), ACE-FTS (SCISA...

Více

Simulink 3D Animation

Simulink 3D Animation • Sledování trajektorie objektů • Barva trajektorie jako volitelný vstup • R2012a: – Průmět trajektorie do roviny – Spojnice trajektorie s bodem • -> vrtkoff_traj • -> sf_launchabort

Více

text práce - Katedra geoinformatiky

text práce - Katedra geoinformatiky - souhlasím, aby jeden výtisk diplomové práce byl uložen v Knihovně UP k prezenčnímu nahlédnutí, - souhlasím, že údaje o mé diplomové práci budou zveřejněny ve Studijním informačním systému UP, - v...

Více

CPU RAM I/O BUS

CPU RAM I/O BUS • množiny IP adres se přidělujı́ podle fyzické polohy LAN, např. 147.32.5.* je Břehová, 147.32.8.* je Trojanova • routery v uzlech sı́tě třı́dı́ pakety podle IP adresy adresáta, routery m...

Více