Optimalizace geometrie rozhledny



ezgif.com-gif-maker (1)

Author:

Categories: Tutorials

Tagged with: | | | |


Pro svou práci jsem si vybral využití parametrického modelu k nalezení požadované geometrie rozhledny. Následně jsem hledal optimálního umístění a velikost bočních otvorů, při snaze minimalizovat maximální tahové a tlakové napětí.

Geometrie rozhledny je tvořena shodnými, vzájemně odsazenými boxy. Velikost odsazení je řízena harmonickou řadou, dle inspirace v Book stacking problem (https://mathworld.wolfram.com/BookStackingProblem.html).


Geometrie rozhledny

  1. Nejprve se za pomoci Rectangle a Extrude vytvoří první box.
    Snímek obrazovky 2022-08-26 130254
  2. Rozkopírování jednotlivých boxů je nejprve horizontální a následně potom vertikální. Pro horizontální posun je využito Expression, která udává vzájemné odsazení následujícího boxu. Díky Mass Addition jsou tyto relativní odsazení jednotlivých boxů převedeny na celkové odsazení. Pro vytvoření vektorů vertikálního odsazení je opět využito Mass Addition. V tomto případě je výška všech boxů 3m, proto i vertikální vektory odpovídají násobkům 3.
    Snímek obrazovky 2022-08-26 123636
  3.  Aby nedocházelo k problémům při tvorbě Meshe, byla odstraněna zdvojená vodorovná konstrukce, která vznikla překryvem stropu spodního a podlahy horního boxu. K vybrání pouze vodorovných konstrukcí došlo za pomoci komponent Deconstruct Brep a List Item. Následně se překrývající desky spojily za pomoci Brep Join a díky komponentě Bounding Box došlo k vytvoření nové desky, ve které již překrývající se část není zdvojená. 
    zdvojená konstrukce
  4.  Následně došlo k vyříznutí otvorů. Zde je uveden příklad čelního okna. Nejprve je vybrána čelní stěna boxu. Na ní jsou za pomoci komponenty Evaluate Surface vytvořeny dva body. Jejich umístění je vybráno relativně za pomoci UV souřadnic definovaných Slidery . Tyto body tvoří úhlopříčku otvoru. Přes komponentu Bounding Box dojde k vytvoření obdélníku okolo této úhlopříčky. Tento obdélník je následně vertikálně i horizontálně rozkopírován, stejně jako je popsáno v bodě 2. Solid Difference vyřízne otvory z čelních stěn. Vstupní otvor na zadní stěně  i boční otvory byly vytvořeny analogicky.
    čelní otvor
  5. Za pomoci Range je po výšce boxu rozmístěn daný počet špriclí. Následně je zejména díky komponentám Construct point, Move a Line vytvořen celý žebřík. Zde je důležité se neutopit v Data Tree. K získání kontroly nad scriptem velmi pomáhá vypisovat si data do Panelů a mít tak stále přehled. (Žebříky pro rozdílně vysoké boxy by bylo lepší vytvářet se stejně vzdálenými špriclemi, nikoliv se stejným počtem špriclí.)
    žebřík

Z počátku jsem nevěděl, jak by rozhledna inspirovaná Book stacking problemem měla vypadat. Přepočítávat jednotlivé odsazení pro různé počty boxů a jejich rozměry by bylo velmi zdlouhavé. Právě parametrický model mi umožnil měnit jednotlivé rozměry a počet boxů tak, abych si velmi rychle našel geometrii, která se mi líbí.

Velké množství boxů tvoří malé předsazení ve spodních patrech. Naopak u malého počtu boxů nevynikne příliš velké celkové předsazení.

porovnani

 

Nejvíce mým estetickým požadavkům odpovídá geometrie tvořená pěti boxy. Při tomto počtu boxů je předsazení viditelné hned od prvního patra a zároveň je poslední patro v porovnání s prvním  již velmi předsazené.  Rozhledna také není příliš nízká, ale ani vysoká. Pro další práci jsem tedy zafixoval parametr počtu boxů právě na pěti.

 

jihozapad rozhazene

 

 Hledání optimálního umístění a velikosti postranních oken


Umístění a velikost postranních otvorů jsem se rozhodl svěřit genetickému algoritmu (NSGA-II) za pomoci pluginu Wallacei. Wallacei na rozdíl třeba od Galapagos umožňuje multikriteriální optimalizaci. Já jsem si jako kritéria zvolil maximální tlak a tah. Parametry, neboli také geny, jsou velikost a umístění jednotlivých bočních otvorů spolu s výškou jednotlivých boxů. Boční otvory každého boxu jsou na obou stranách ve stejném místě. Jejich vodorovné umístění i velikosti v jednotlivých boxech jsou však rozdílné.
Velikost fitness funkcí (tah, tlak) je vypočtena metodou konečných prvků za pomoci pluginu Karamba3D

 

  1. Model je pro jednoduchost zatížen pouze vlastní vahou betonové konstrukce. Velikost Meshe výpočtového modelu je 0,4 m. Pro menší velikost již velmi narůstá doba výpočtu.
    karamba model
  2. Pro vyobrazení výsledků napětí v modelu byl vytvořen následující script.
    shell view

Pro evoluci jsem zvolil 750 generací o 200 jedincích.
nastavení evoluce
Začátek simulace – Boční otvory jsou ještě velmi různorodé. Výška jednotlivých boxů se také velmi mění.
GIF optimalizace
Závěr evoluce – Lze si všimnout, že čtvrtý a pátý box mají velmi malou výšku, zatímco druhý box je naopak velmi vysoký. Horizontální umístění otvoru v posledních dvou boxech je spíš v předsazené části. To všechno odlehčuje předsazenou část a snižuje tak tendenci celé konstrukce k překlopení.
Vertikálně jsou poslední dva otvory umístěny v horní polovině boxu. Nastává zde kompromis mezi maximálním vylehčením boxu (otvor přes celou výšku) a zvětšením průřezu nosníku pod oknem, jež vynáší předsazenou část. Žádný otvor není až do kraje, a nezvyšuje tak extrémy napětí způsobené velmi malým průřezem.
Otvor ve spodním boxu konverguje k zániku, jelikož efekt vylehčení je u spodního boxu již zanedbatelný. Na druhém a třetím boxu nastávají dvě varianty. První varianta jsou relativně velké otvory v pravé části boxů. Druhou variantou jsou velmi malé otvory v levé části boxů.
Gif konec optimalizace
Kritéria jsou pouze maxima tahu a tlaku. Otvor tedy nemůže být umístěn ve výrazně tlačené, nebo tažené oblasti a způsobovat tím tak další extrémy napětí. Spodní tři boxy však mají oblasti, kde nejsou příliš namáhány. Algoritmus konverguje k určitým variantám, avšak při ručním umístění otvorů do těchto nenamáhaných míst je patrné, že na extrémní hodnoty napětí nemají téměř žádný vliv.
tahtlak
Pro získání výsledků na obrázku by bylo třeba upravit kritéria evoluce. Namísto extrémní hodnoty tahu a tlaku v celém modelu by bylo lepší minimalizovat celé tlačené a tažené oblasti určitým průměrováním. Vhodné by bylo také přidat kritérium, které by zvětšovalo otvory. Možné by bylo například maximalizovat výhledy, solární zisky v otvorech, či minimalizovat spotřebu betonu. Tím by bylo zajištěno umístění otvorů do míst, kde nemají příliš velký vliv na statiku.


Vizualizace

Vizualizace byla provedena v programu Twinmotion. Přenesení dat z Rhina je díky DataSmith exporter pluginu velmi rychlé a snadné.

vizualizace - rozhledna


Limity a možná vylepšení

Líbilo by se mi, kdyby se při změně geometrie konstrukce(počet boxů, délka boxů) v reálném čase vykreslovala i optimální umístění a velikosti postranních oken. To však díky potřebě zapnutí optimalizace, časově náročnému výpočtu a nutnosti exportu výsledků není možné.

Parametrem vstupujícím do evoluce by nemusel být vždy pouze jeden boční otvor v každém patře. Otvorů by mohlo být více. Také by bylo možné optimalizovat čelní otvor, či vstupní otvor.  Jak jsem již zmiňoval dříve, také by šlo přidat další kritéria.
S těmito změnami by však velmi narůstal čas výpočtu, který byl pro mě již takto dost limitující. Možným řešením by bylo provádět výpočet na serveru.


Rád bych poděkoval autorům pluginů, které jsem ve své práci použil.
Clemens Preisinger –  Karamba3D https://www.karamba3d.com/
Mohammed Makki, Milad Showkatbakhsh, Yutao Song – WallaceiX  https://www.wallacei.com/
Unreal Datasmith Rhino Exporter – https://www.unrealengine.com/en-US/datasmith/plugins?sessionInvalidated=true


Grasshopper soubor – Optimalizace geometrie rozhledny