SpatiDist = Spatial Distribution
červenec 2011, Petr Frantík
poslední aktualizace: listopad 2012
http://spatidist.kitnarf.cz

SpatiDist dokumentace (verze 1.0 a pozdější)
Petr Frantík

 

Obsah

  1. Úvod
  2. Pojmy
  3. Oblasti
  4. Spuštění aplikace
  5. Objekty
  6. Příklady
  7. Poznámky
  8. Literatura

 

Úvod

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ů.

 

Pojmy

Distributor
představuje metodu obecného generování bodů sítě uvnitř Domény. Model může mít pouze jeden distributor.

Doména
je nejspodnější polygonální oblast, jenž definuje typ materiálu. Uvnitř domény budou generovány body sítě pomocí Distributoru.

Okraj
je polygon určující tvar modelu. Body modelu mohou ležet pouze uvnitř oblasti omezené okrajem. Okraj modelu musí ležet uvnitř Domény.

Pružinová síť
je model tělesa tvořený příhradovou strukturou pružin působících pouze v tahu a tlaku. Každému uzlu sítě je zároveň přiřazen určitý objem tělesa, který se znázorňuje pomocí konvexního polygonu, viz obr. 1 vlevo.

Síť konečných prvků
představuje model tělesa tvořený pomocí čtyřúhelníkových konečných prvků, viz obr. 1 vpravo. Tato síť se v aplikaci SpatiDist generuje pomocí triangulace. Z triangulace se určitým postupem vytvoří síť čtyřúhelníků a trojúhelníků, které se vzápětí rozdělí (řezy v polovinách stran) na čtyřúhelníky.

 

Oblasti

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.

 

Datový soubor

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ů.

 

Spuštění aplikace

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

 

Objekty

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.

DistanceDistributor
generuje body v rovině pomocí generátoru náhodných čísel tak, aby nový bod nebyl blíže k již existujícím bodům, než je vzdálenost daná funkcí velikosti prvků. Má následující parametr:
package="cz.kitnarf.spatialdistribution".

LinearCohesiveFunction
definuje lineární kohezivní funkci. Má následující parametr:
package="cz.kitnarf.spatialdistribution".

Material
je objekt představující základní materiál modelu. Má následující parametry:
package="cz.kitnarf.spatialdistribution",
cohesiveFunction -- odkaz na objekt definující kohezivní funkci,
density -- objemová hmotnost,
fractureEnergy -- lomová energie,
modulusE -- modul pružnosti,
tensileStrength -- pevnost v tahu,
thickness -- tloušťka.

MaterialRegion
slouží k definici oblasti modelu. Jedná se o polygon s daným materiálem a funkcí velikosti prvku. Má následující parametry:
package="cz.kitnarf.spatialdistribution",
material -- materiál oblasti,
sizeFunction -- funkce velikosti prvku na oblasti.

Point
reprezentuje bod v rovině modelu. Má následující parametry:
x -- souřadnice x,
y -- souřadnice y.

Polygon2D
je objekt definující polygon, konkrétně Okraj modelu. Obsahuje body, tj. objekty třídy Point. Má následující parametr:
package="cz.kitnarf.geom".

QuadraticSizeFunction
určuje velikost prvků sítě pomocí kvadratické funkce:
d(x,y)=c0+c1x+c2y+c3xy+c4x2+c5y2,
kde x,y jsou souřadnice bodu v rovině modelu a d je velikost prvku.
Objekt má následující parametry:
package="cz.kitnarf.spatialdistribution",
coefficients -- koeficienty ci v řetězci vzájemně oddělené čárkami.

Template
definuje geometrii modelu. Obsahuje další objekty. Má následující parametr:
package="cz.kitnarf.spatialdistribution".

 

Příklady

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.

 

Poznámky

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.

 

Literatura

Wikipedia, the free encyclopedia: Notepad, http://en.wikipedia.org

Wikipedia, the free encyclopedia: Vim, http://en.wikipedia.org