M. Šiňor, Modelování a vizualizace šíření elastických vln v obecném
Transkript
Č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
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 ...
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...
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
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...
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...