SpatiDist = Spatial Distribution
červenec 2011, Petr Frantík
poslední aktualizace: listopad 2012
http://spatidist.kitnarf.cz
Aplikace SpatiDist slouží pro definici geometrie a vlastností materiálu určitého tělesa v prostoru. Umožňuje vytvářet materiálově nehomogenní modely schopné simulovat pohyb, deformace a lom těles v konstrukčním i materiálovém měřítku. Slouží pro generování pružinových sítí a sítí čtyřúhelníkových konečných prvků, viz obr. 1.
Obr. 1: Sítě vygenerované aplikací SpatiDist. Vlevo pružinová síť, vpravo síť čtyřúhelníkových konečných prvků.
Aplikace SpatiDist předpokládá složení modelu ze souvislých oblastí, jejichž tvar je určen pomocí polygonů. V každé takové oblasti je dán právě jeden materiál. Tyto oblasti se mohou překrývat, přičemž rozhodující je oblast definovaná později. Vzniká tak vrstevnatá struktura oblastí, viz obr. 2.
Obr. 2: Oblasti
Základní a zároveň nejspodněji položenou oblastí je tzv. Doména. Velikost domény musí být větší než velikost modelu. Doménu si lze představit jako hrubý kus materiálu, ze kterého bude model vyřezán, obr. 3. Tvar modelu je určen polygonálním Okrajem. Body ležící mimo okraj nebudou součástí modelu i když leží v doméně nebo v jiné oblasti modelu. Je třeba dát pozor, aby doména dostatečně přesahovala přes okraj modelu. Generování bodů totiž probíhá v celé doméně a může tak ovlivnit tvar sítě uvnitř okraje.
Obr. 3: Doména a okraj modelu
Obrázek 3 představuje nejjednoduší uspořádání v aplikaci SpatiDist, tj. Doménu s daným Okrajem. Výsledkem generování bodů sítě bude model s tvarem daným okrajem tvořený jediným materiálem, viz např. obr. 1.
Vstupem do aplikace SpatiDist je datový soubor ve formátu XML s příponou SPDT. Tento soubor lze snadno vytvořit a editovat jako prostý text např. v aplikaci Notepad nebo Vim.
Následující výpis ukazuje příklad obsahu datového souboru, dle kterého se vygeneruje model na obr. 1 vlevo.
<Container>
<LinearCohesiveFunction package="cz.kitnarf.spatialdistribution" />
<Material package="cz.kitnarf.spatialdistribution" density="200" thickness="0.15" modulusE="2000" cohesiveFunction="container[0]" name="sponge"/>
<QuadraticSizeFunction package="cz.kitnarf.spatialdistribution" coefficients="0.02,0,0,0,0.03,0.04" />
<DistanceDistributor package="cz.kitnarf.spatialdistribution" />
<Template package="cz.kitnarf.spatialdistribution" >
<Polygon2D package="cz.kitnarf.geom" >
<Point x="0" y="0" />
<Point x="1" y="0" />
<Point x="1" y="0.5" />
<Point x="0.75" y="0.75" />
<Point x="0.5" y="0.5" />
<Point x="0.5" y="0.2" />
<Point x="0" y="0.2" />
</Polygon2D>
<MaterialRegion package="cz.kitnarf.spatialdistribution" material="container[1]" sizeFunction="container[2]">
<Point x="-0.1" y="-0.1" />
<Point x="1.1" y="-0.1" />
<Point x="1.1" y="1.1" />
<Point x="-0.1" y="1.1" />
</MaterialRegion>
</Template>
</Container>
Výpis datového souboru je strukturován pomocí odsazení (tabelátorů) a zvýrazněn barvami. Nejvyšším objektem, tj. objektem bez odsazení, je kontejner všech objektů. Označen je anglickým termínem Container. Jeho funkcí, kromě sdružování všech objeků, je schopnost dát objekty uvedené uvnitř něj k dispozici prostřednictvím odkazu. Tyto objekty jsou ve výpisu označeny červenou barvou. Jsou v něm číselně řazeny od nuly ve stejném pořadí, jak se vyskytují v datovém souboru. Přístupné jsou pomocí řetězce container[index], kde index odpovídá pořadí objektu.
Objekt jménem LinearCohesiveFunction slouží k určení chování materiálu modelu ve fázi vzniku trhliny. Protože se vyskytuje v kontejneru jako první, bude přístupný pomocí řetězce container[0].
Dalším objektem je Material, jenž bude plnit funkci materiálu modelu v jeho doméně. Za pošimnutí stojí odkaz na předchozí objekt, jenž se vyskytuje jako argument mezi jeho parametry. Materiál bude přístupný pomocí řetězce container[1], protože je druhý v pořadí.
QuadraticSizeFunction je objekt, který určuje závislost velikosti prvků sítě na poloze v rovině modelu.
DistanceDistributor zajišťuje metodu generování bodů v rovině modelu.
Objekt Template sdružuje definice oblastí modelu. Jako první podobjekt je předpokládán Okraj modelu. Dalším objektem má být Doména a nakonec mohou následovat zbylé oblasti.
Okraj modelu je definován pomocí třídy Polygon2D.
Point reprezentuje bod v rovině modelu. Slouží pro definici tvaru polygonu.
Posledním objekt, jménem MaterialRegion, je Doména modelu. Jedná se o polygon s daným materiálem a funkcí velikosti prvků.
Aby bylo možno aplikaci SpatiDist spustit, musí být v operačním systému nainstalována Java platforma (verze 1.6 a pozdější). Platformu lze stáhnout z adresy http://www.java.com/en/download/manual.jsp. Je-li Java platforma správně nainstalována, lze soubor aplikace spatidist.jar spustit.
Aplikace SpatiDist se spouští buď přímo (kliknutím na soubor spatidist.jar) nebo z konzoly operačního systému (pokud jí systém disponuje). Spuštění z konzoly je vhodné pro hromadné zpracování a pro sledování podrobných varovných či chybových výpisů. Spuštění z konzoly se provede zapsáním následujícího řetězce do konzoly operačního systému (v případě, že jsme přítomni v adresáři, kde je umístěn soubor spatidist.jar):
java -jar spatidist.jar
Každý objekt v datovém souboru je uveden názvem své třídy. Na rozdíl od obecného formátu XML souboru, musí tento název rozlišovat velikost písmen. Aplikace SpatiDist totiž hledá danou třídu v souboru aplikace (spatidistapplication.jar) dle tohoto názvu (Java rozlišuje velikost písmen). Navíc, pokud se daná třída nenachazí v balíku cz.kitnarf.spatidistapplication musí být jméno balíku uvedeno jako parametr. Tento přístup umožňuje definovat svou vlastní Javovskou třídu.
Prvním příkladem je gradientní síť modelu válce. Obvod válce je aproximován pravidelným dvacetiúhelníkem. Body okraje modelu tvořící dvacetiúhelník jsou vygenerovány pomocí tabulky v aplikaci Microsoft Excel pomocí funkcí concatenate() a zaokrouhlit.na.text(), viz cylinder.xls. Střed válce je umístěn do počátku souřadnic. Pro určení velikosti prvků sítě je zvolena QuadraticSizeFunction s parametrem coefficients="0.004,0,0,0,-8,-8". Tyto koeficienty zajišťují zmenšování prvků směrem k okraji válce. Výsledný datový soubor je cylinder.spdt, soubory modelu pro aplikaci FyDiK jsou zabalené v archivu cylinder.zip.
Obr. 4: Vygenerované sítě modelu válce
Následující videozáznam ukazuje simulaci nárazu válce do pružné desky.
Vyvinuto v rámci mezifakultního projektu specifického vysokoškolského výzkumu na VUT v Brně registrovaného na VUT pod č. FAST/FCH/FSI-S-11-1: Chování trhlin/mikrotrhlin v kompozitech s křehkou matricí. Domovská stránka aplikace SpatiDist je http://spatidist.kitnarf.cz.
Wikipedia, the free encyclopedia: Notepad, http://en.wikipedia.org
Wikipedia, the free encyclopedia: Vim, http://en.wikipedia.org