Wyobraź sobie, że musisz przejść przez ponad 10 000 wartości i ręcznie wprowadzić je do modelu, zakładając że wpisanie każdej z nich zajmuje kilka kliknięć i powiedzmy 10 sekund. To 100 000 sekund, czyli 28 godzin żmudnej pracy. Koszmar, prawda? A potem wyobraź sobie, że musisz to zrobić jeszcze raz. I być może kolejny i kolejny…
Ten post został napisany przez Gościnnego Autora BIM Cornera, Johanna Riad.
Każde oprogramowanie ma pewne ograniczenia. Twórcy oprogramowania trzymają się cienkiej granicy pomiędzy posiadaniem wystarczającej funkcjonalności w swoim programie, a posiadaniem tak skomplikowanego programu, że przyprawia to jego użytkowników o zawroty głowy (mówię o tobie Revit). Im bardziej zróżnicowani użytkownicy, tym trudniej jest zaspokoić potrzeby wszystkich. Nie jest to jednak mniej frustrujące dla użytkownika, który wie, co chce zrobić, a brakuje mu tylko jednego przycisku, który pozwoli mu wykonać zadanie.
Jednym ze sposobów rozwiązania tego problemu jest wykorzystanie programowania do tworzenia własnych funkcji poprzez API*. W dalszej części opiszę przykład, w którym takie podejście okazało się skuteczne.
Spis Treści
1. Studium przypadku: WoodHub
Inżynierowie z MOE mieli specyficzny dla projektu problem, który musieli w jakiś sposób rozwiązać. Pracowali nad dużym projektem biurowym w Odense, gdzie kilka budynków drewnianych miało być zbudowanych na tej samej betonowej piwnicy. Aby pracować wydajnie, podzielili projekt na kilka mniejszych modeli FEM-Design, które mogli analizować i projektować indywidualnie. Jednak podczas modelowania piwnicy, obciążenia z budynków znajdujących się powyżej musiały być przeniesione i zastosowane do modelu piwnicy.
Oczywiście można było to zrobić ręcznie, odczytując wszystkie indywidualne reakcje punktowe i liniowe w każdym modelu konstrukcji nośnej równocześnie tworząc odpowiednie obciążenie w modelu piwnicy. Należało by to zrobić dla każdego przypadku obciążenia.
Za każdym razem, gdy nastąpiłaby zmiana projektu, obciążenia z tego modelu musiałyby zostać zaktualizowane.
Na szczęście istniał lepszy sposób. Napisanie skryptu do przenoszenia reakcji z jednego modelu jako obciążeń do drugiego było możliwe dzięki FEM-Design API*. Własny skrypt został opracowany w Grasshopperze w ramach współpracy MOE z grupą Strusoft API. Skrypt działa w następujący sposób:
1. Wczytuje model FEM-Design określony przez użytkownika, w którym analiza została już przeprowadzona i istnieją wyniki (model 1).
2. Dekonstruuje wszystkie reakcje podparcia punktowego i liniowego dla każdego przypadku obciążenia.
3. Tworzy nowe przypadki obciążeń ze wszystkich przypadków obciążeń w modelu 1, chyba że jako dane wejściowe podano konkretne obciążenia.
4. Tworzy obciążenia punktowe i liniowe w nowych przypadkach obciążeń. Użytkownik może podać limit, aby obciążenia mniejsze od pewnej wartości były pomijane. Obciążenia liniowe są upraszczane zgodnie z instrukcjami MOE, dzięki czemu wygładzane są niepotrzebne wartości szczytowe spowodowane naturą programów FE.
5. Odczytuje drugi model, w którym mają być wprowadzone nowe przypadki obciążeń (model 2). Skrypt korzysta ze współrzędnych FEM-Design, więc ważne jest, aby model 2 został poprawnie umieszczony w tym samym układzie współrzędnych co model 1.
6. Przypadki obciążeń i obciążenia są dodawane do modelu 2.
7. Model 2 jest zapisany i można go otworzyć w programie FEM-Design.
. . .
W każdym przypadku, gdy przeniesienie obciążenia wymaga aktualizacji, skrypt może zostać ponownie uruchomiony.
2. Zalety programowania, gdy jesteś inżynierem budownictwa
Opinie zawarte w dalszej części artykułu są dość subiektywne, oparte na moich własnych doświadczeniach. Mam doświadczenie w czerpaniu korzyści z programowania, jak również wpadaniu w niektóre powszechne pułapki. Mam nadzieję, że ta część da do myślenia inżynierom budowlanym, którzy są zainteresowani wykorzystaniem programowania w swojej pracy.
Wiedza z zakresu programowania może być niezwykle przydatna dla inżyniera budowlanego. Poniżej opiszę kilka obszarów, w których widzę najbardziej oczywisty potencjał, a w następnym rozdziale przejdę do niektórych zagrożeń.
2.1. Powtarzające się zadania
Kiedy pewne zadanie musi być powtarzane kilkukrotnie (w tym samym projekcie lub pomiędzy różnymi projektami), często możemy zaoszczędzić czas poprzez automatyzację całego przepływu pracy lub jego części. Może to być związane z projektem konstrukcyjnym, jak również np. tworzeniem rysunków lub dokumentacji. Powyższe studium przypadku jest dobrym przykładem powtarzalnego zadania, które można stosunkowo łatwo zautomatyzować. Innymi przykładami może być zapisywanie tych samych informacji na kilku rysunkach, projektowanie wielu podobnych kolumn, tworzenie raportów obliczeniowych, ciągłe przesyłanie modelu 3D do portalu internetowego w celu udostępnienia i wiele, wiele innych.
2.2. Duże ilości danych
W dużych projektach ilość informacji może stać się trudna do opanowania. Zdolność do cofnięcia się od pojedynczych obiektów danych i spojrzenia na szerszy obraz może często być kluczowa. Jeśli dobrze czujesz się pracując z danymi, tworząc szybko wykresy, wizualizacje i inne rodzaje podsumowań, możesz uzyskać widok projektu z perspektywy lotu ptaka. To może pozwolić Ci dostrzec ważne wzorce. Na przykład, jeśli wizualizujesz ślad węglowy proponowanej struktury, możesz zobaczyć, że pewna część struktury stanowi dużą część tego śladu. Wiedząc o tym, możesz być w stanie rozwiązać ten problem poprzez przeprojektowanie tej części struktury.
Dobrym pomysłem wydaje się być również użycie tego podejścia do sprawdzania błędów. Jeśli pewne elementy lub wyniki nie są zgodne z oczekiwanym wzorem, staje się to oczywiste w odpowiednich wizualizacjach. Robiąc to, dobrze jest pomyśleć, jak ułatwić ludzkiemu oku dostrzeżenie błędów, np. stosując kodowanie kolorami tak jak na poniższym wykresie. Tworzenie wizualizacji tego typu często wymaga jedynie dość podstawowej wiedzy programistycznej.
It can also be a good idea to use this approach to check for errors. If certain elements or results break an expected pattern, it becomes obvious in appropriate visualizations. When doing this, a good idea is to think of how to make it easier for the human eye to see errors, such as applying color coding to the graph below. Making visualizations like this often only requires quite basic programming knowledge.
2.3. Analizy wrażliwości
Jako inżynierowie budowlani zawsze przyjmujemy założenia, gdy (próbujemy) przekształcić rzeczywistość w model. Przyjmowane przez nas założenia są czasami powszechnie uznawane za prawdziwe, ale w większości przypadków musimy kierować się własnym osądem inżynierskim. Ważne jest, aby zrozumieć implikacje naszych założeń, a jednym ze sposobów na lepsze zrozumienie jest analiza wrażliwości. Jeśli przeprowadzimy symulację, aby zobaczyć, jakie efekty dają inne założenia, możemy wziąć te wyniki pod uwagę podczas projektowania. Inne wartości sztywności, pełzania i skurczu, sekwencje konstrukcji itp. mogą czasami całkowicie zmienić zachowanie konstrukcji, o czym warto wiedzieć.
2.4. Problemy optymalizacyjne
Innym ważnym obszarem, w którym programowanie jest przydatne, jest rozwiązywanie problemów optymalizacyjnych. W inżynierii strukturalnej jest to często związane z oszczędnością materiału, co z kolei pozwala na zmniejszenie śladu węglowego i kosztów. Wykonywanie optymalizacji ręcznie jest często zbyt czasochłonne, ale z pomocą programowania często można o wiele bardziej zoptymalizować swoje konstrukcje. Optymalizacja może dotyczyć również innych zagadnień niż oszczędność materiału, jak np. oszczędność czasu poprzez poprawę kolejności etapów budowy lub znalezienie sposobów na optymalizację produkcji, transportu lub montażu elementów budowlanych.
3. Ryzyko!
Po opisaniu niektórych możliwości programowania, chcę również poruszyć niektóre związane z tym wyzwania i zagrożenia. Uważam, że musimy być ich bardzo świadomi, aby uniknąć rozwoju, który w najlepszym przypadku jest nieidealny, a w najgorszym wręcz szkodliwy.
Jedną z istotnych wyzwań jest to, że programowanie jest dziedziną wiedzy odrębną od inżynierii strukturalnej. Nauka programowania wymaga czasu,który można by poświęcić na doskonalenie innych umiejętności inżynierskich. Można dyskutować, jakie umiejętności są najważniejsze dla inżyniera budowlanego, a nadmierne skupienie się na programowaniu może potencjalnie uczynić inżynierów budowlanych bardziej sztywnymi (w przeciwieństwie do kreatywnych i zdolnych do dostrzegania niuansów). Można chcieć zatrudnić specjalistów od programowania, wewnętrznie lub jako konsultantów, aby móc skupić się na podstawowych umiejętnościach inżynierii strukturalnej. Z drugiej strony, pewna podstawowa znajomość programowania jest przydatna, aby zrozumieć potencjał i wiedzieć, kiedy należy poprosić o pomoc w automatyzacji przepływu pracy.
Innym wyzwaniem jest tendencja do próby dostosowania problemu do rozwiązania programistycznego, zamiast odwrotnie. Istnieje ryzyko, że nadmiernie upraszczamy zadanie, aby móc znaleźć „efektywne” rozwiązanie programistyczne. Rozwiązania tworzone w ten sposób są jedynie wydajne, jeśli nie uchwycą prawdziwej złożoności problemu. Wiąże się to z tendencją, którą często widzę, gdy zakres proponowanej aplikacji programistycznej jest zbyt duży. Czasami inżynierowie próbują rozwiązać cały proces projektowania za pomocą modelu parametrycznego. Moim zdaniem jest to swego rodzaju utopia dla inżynierów, którzy chcieliby, aby rzeczywistość można było sprowadzić do czegoś czysto matematycznego i logicznego. Rzeczywistość jest jednak bardziej skomplikowana, a na każdym kroku pojawiają się praktyczne problemy, wyjątki od reguł oraz subiektywne opinie. Połączenie zautomatyzowanych i ręcznych przepływów pracy jest często znacznie lepszym pomysłem.
4. Podsumowanie
Na początku może się to wydawać przygnębiające, ale jeśli się nad tym zastanowić, to w gruncie rzeczy jest to dość podnoszące na duchu, że to, co robimy jako ludzie, nie może być całkowicie zastąpione przez programowanie. To właśnie równowaga w tworzeniu programów i automatyzacji, które dobrze współpracują z ludzkim wkładem i osądem, jest najbardziej interesująca w mojej pracy.
*API to interfejs programistyczny, który pozwala użytkownikom komunikować się z programem poprzez programowanie.
Chcesz nauczyc się programowa? Mam coś dla Ciebie
Grasshopper Fundamentals Training
Sprawdź inne artykuły o Grasshopperze na BIM Corner:
Myślenie komputacyjne – Dlaczego inżynierowie powinni je znac?
Dlaczego branża budowlana jest do bani?
BIM w Grasshopperze – kompletna lista pluginów