Autor |
Macierz pochodnych funkcji kształtu [B] |
BE-FEA
Użytkownik
Postów: 112
Data rejestracji: 01.12.17 |
Dodane dnia 05/10/2019 01:47 |
|
|
Witam,
ostatnio postanowiłem zapoznać się z przykładami ręcznych obliczeń MES dla elementów 2D (tarcze). W literaturze jest bardzo mało przykładów i praktycznie tylko w anglojęzycznej (w polskiej jedynie u Cecota). Rozumiem w tych przykładach wszystko oprócz jednej rzeczy. Otóż w książkach tak są przedstawione współczynniki macierzy pochodnych funkcji kształtu (macierz B we wzorze na K):
Czasami zamiast 1,2,3 jest i,j,k. Niby wszystko jasne - numerujemy węzły przeciwnie do ruchu wskazówek zegara a następnie do wzorów podstawiamy współrzędne kolejnych węzłów.
Problem pojawia się gdy jest więcej elementów. Jak w tym przykładzie z książki Borkera:
Z pierwszym elementem jest łatwo. Zamiast węzła nr 3 mamy nr 4, czyli kolejno 1,2,4 i tak podstawiamy do wzorów z poprzedniego obrazka.
Natomiast nie rozumiem jak to jest dla drugiego elementu. Ma on węzły o kolejnych numerach 2,3,4, ale do wzorów już nie podstawiamy w takiej samej kolejności. Czyli nie jest tak, że i=2, j=3, k=4. Dla jasność żeby było wiadomo o co mi chodzi podam przykład - beta 1:
- wg pierwszego obrazka (teoria z książek) beta1 = y_drugiego węzła - y_trzeciego węzła; tak samo jest dla 1 elementu z drugiego obrazka (tylko trzeci węzeł ma numer 4)
- dla 2 elementu z drugiego obrazka beta1 = y_trzeciego węzła - y_pierwszego węzła (z tym, że trzeci węzeł ma numer 4 a pierwszy ma numer 2)
Pytanie więc jaka tu jest zasada ? Czyżby nie grała roli kolejność węzłów wg cyfr (2<3<4) tylko obowiązywała jakaś inna reguła ? A może bierzemy jakiś węzeł i od niego idąc przeciwnie do wskazówek zegara wybieramy pierwszy, drugi i trzeci węzeł. Wtedy dla drugiego elementu musielibyśmy zdaje się zaczynać od węzła nr 3 (on byłbym pierwszym węzłem, nr 4 drugim a nr 2 trzecim). Jeśli tak jest to jak wybieramy węzeł, od którego zaczynamy ? |
|
Autor |
RE: Macierz pochodnych funkcji kształtu [B] |
jasiu
Użytkownik
Postów: 87
Data rejestracji: 23.07.07 |
Dodane dnia 05/10/2019 17:10 |
|
|
Ano tak! Nie zaczynamy wg wielkości numerów (one nie maja znaczenia) tylko tak aby było "po kolei" czyli twoje i,j,k jest zapętlona trójką, startującą od dowolnego węzła, a potem wg zasady zgodnie /niezgodnie z ruchem zegara. |
|
Autor |
RE: Macierz pochodnych funkcji kształtu [B] |
BE-FEA
Użytkownik
Postów: 112
Data rejestracji: 01.12.17 |
Dodane dnia 05/10/2019 18:57 |
|
|
A, rozumiem. Ale to nie ma znaczenia od którego węzła zaczniemy ? I moglibyśmy np. dla drugiego elementu pójść od węzła nr 2 przeciwnie do zegara (czyli kolejno 2,3,4) i wyjdzie to samo ? Mimo, że składniki macierzy [B] będą zamienione miejscami ? |
|
Autor |
RE: Macierz pochodnych funkcji kształtu [B] |
czacza
Użytkownik
Postów: 57
Data rejestracji: 31.05.14 |
Dodane dnia 05/21/2019 14:05 |
|
|
Macierz B musi być zbudowana tak by Epsilon (odkształcenia) = Bq, gdzie q to wektor przemieszczeń węzłowych. Wektor przemieszczeń niech będzie taki [1x (przemieszczenie węzła 1 w x), 1y, 2x, 2y, 3x, 3y], do niego dopasowana musi być macierz B. Po prostu to ma do siebie pasować. Notka: Węzły 1, 2, 3 to numeracja lokalna elementu.
Więc odpowiadając na pytania:
Można inaczej zapisać macierz B (w innej kolejności), jeżeli odpowiednio ułoży się przemieszczenia w wektorze przemieszczeń i odwrotnie.
PS. Generalnie to wszystko musi być zaplanowane. Pierwsze to kierunek numeracji węzłów w elemencie, a drugie to macierz B. Inaczej bardzo łatwo się pomylić czy to z minusami (w sensie które przemieszczenie od którego odjąć) czy to z ich miejscami w macierzy. Zaplanowanie też trzeba składać globalną macierz sztywności by i przemieszczenia były odpowiednio do wszystkiego przed zapisane.
Edytowane przez czacza dnia 05/21/2019 14:09 |
|
Autor |
RE: Macierz pochodnych funkcji kształtu [B] |
BE-FEA
Użytkownik
Postów: 112
Data rejestracji: 01.12.17 |
Dodane dnia 05/21/2019 20:15 |
|
|
Dzięki. Do przemieszczeń jeszcze nie dotarłem, dlatego pozwolę sobie od razu spytać - czy rozpoczęcie układania macierzy B od innego węzła skutkuje koniecznością zrobienia czegoś inaczej w kolejnych krokach (przy składaniu macierzy K i przemieszczeniach) czy to jakby samo się odpowiednio ułoży ? Bo do wyznaczania macierzy elementu stosuje się tą lokalną numerację (1,2,3 dla każdego elementu) a do tych globalnych macierzy i wektorów już przechodzi się na numerację globalną. Czyli teoretycznie wydawałoby się, że nic się nie zmienia na dalszych etapach. Chyba, że ten wektor przemieszczeń, o którym piszesz to właśnie elementowy. Mógłbyś trochę szerzej, najlepiej na przykładzie 1 elementu, opisać jaka jest różnica gdy zmieniamy macierz B rozpoczynając od innego węzła ? Byłbym bardzo wdzięczny.
P.S. Znasz jakiekolwiek przykłady takich zadań (w internecie albo w książkach) ? Ja znalazłem dosłownie kilka i to w bardzo mało znanych książkach (gł. anglojęzycznych). Jest tego jak na lekarstwo a przydałoby się więcej przykładów żeby zrozumieć metodę. |
|
Autor |
RE: Macierz pochodnych funkcji kształtu [B] |
czacza
Użytkownik
Postów: 57
Data rejestracji: 31.05.14 |
Dodane dnia 05/22/2019 14:33 |
|
|
Jeżeli do wyznaczenia macierzy sztywności k podejdziemy książkowo to powstaje ona z całkowania po objętości mnożenia kombinacji macierzy B i D (D to macierz konstytutywna), tu obrazek https://docplayer.pl/docs-images/41/407203/images/page_9.jpg. W takim przypadku jedno i drugie będzie odpowiednio skonstruowane i dopasowane do siebie. A więc jeżeli inaczej zapisać macierze B i D (na przykład traktując kierunek y przed x) to końcowa macierz też będzie inna. To było odnośnie pierwszego pytania.
To teraz otrzymywanie odkształceń. Weźmy macierz B jak w rysunku zamieszczonym przez Ciebie poprzednio. Wektor przemieszczeń [x1, y1, x2, y2, x3, y3]. Mnożenie tych macierzy da trzyelementową macierz odkształceń [Epsx, Epsy, Epsxy]. Mnożenie macierzy będzie w rezultacie takie: [Beta1x1 + Beta2x2 + Beta3x3, Gamma1y1 + Gamma2y2 + Gamma3y3, Beta1y1 + Gamma1x1 + ...]. A więc można zmienić macierz B, ale tylko tak by w rezultacie było to samo. Jeżeli macierz B miałaby jako pierwszy wyraz Beta3 to wektor przemieszczeń analogicznie musiałby mieć x3 na przedzie itd. Być może da się to mocno przemieszać i iść zupełnie nie po kolei, ale aż tak dobrze nie umiem mnożyć macierzy by to widzieć :-) W każdym razie, chyba teraz trochę widać.
Przykładów, niestety, żadnych nie znam.
Edytowane przez czacza dnia 05/22/2019 14:34 |
|
Autor |
RE: Macierz pochodnych funkcji kształtu [B] |
BE-FEA
Użytkownik
Postów: 112
Data rejestracji: 01.12.17 |
Dodane dnia 05/22/2019 18:45 |
|
|
Jeszcze raz dziękuję za wyjaśnienia. Znalazłem w necie jeden przykład, nawet całkiem niezły:
http://www.unm.edu/~bgreen/ME360/2D%20Triangular%20Elements.pdf
(od strony 20)
U nich np. y_23 oznacza y_2 - y_3.
Dla wygody zapisują lokalną numerację węzłów, więc wiadomo od którego węzła startują. Tworzą macierz B a następnie k dla każdego elementu.
Macierz k powstaje przez pomnożenie grubości i powierzchni elementu, macierzy B, transponowanej macierzy B i macierzy D (prosta macierz zawierająca dane materiałowe, więc zawsze taka sama niezależnie od numeracji węzłów). Czyli k samo się zmieni jak zaczniemy od innego węzła, bo po prostu będziemy mnożyć (i transponować) inne B. Potem jest oczywiście agregacja tych elementowych k do globalnego K. Rozumiem, że to tu mogą zacząć się różnice jeśli zmienimy B. Ale na tym etapie używamy już chyba globalnej numeracji węzłów, która jest stała od początku i niezależna od lokalnej. Później jeszcze jest wektor przemieszczeń, ale i tam zdaje się korzystamy z globalnej numeracji. Czy mam rację ? W którym dokładnie miejscu mogą się zacząć różnice i dlaczego ?
Edytowane przez BE-FEA dnia 05/22/2019 19:22 |
|
Autor |
RE: Macierz pochodnych funkcji kształtu [B] |
czacza
Użytkownik
Postów: 57
Data rejestracji: 31.05.14 |
Dodane dnia 05/23/2019 12:38 |
|
|
Pełna racja.
Różnice mogą się zacząć jeśli w solwerze chciałbyś nie wyliczać tej całki za każdym razem ani nie liczyć macierzy B, a korzystać z wcześniej przygotowanej macierzy sztywności i innych macierzy dla elementu. To oczywiście poprawi szybkość budowy globalnej macierzy, ale zmusza do konsekwentnego pilnowania pozycji składowych macierzy. Czy taka sytuacja jest prawdopodobna? Tak, dla tych prostych elementów, bywa, że ktoś liczy coś samodzielnie, bez użycia solwera komercyjnego i w programie zapisuje macierze prosto z książek. Wtedy pewne kroki omija. Sam miałem z tym trochę problemów i mimo tego, że wydawało mi się, że pilnuję numeracji to musiałem później niektóre części kodu poprawiać. |
|
Autor |
RE: Macierz pochodnych funkcji kształtu [B] |
BE-FEA
Użytkownik
Postów: 112
Data rejestracji: 01.12.17 |
Dodane dnia 05/23/2019 19:15 |
|
|
Ok, to w tej kwestii zdaje się wszystko jasne. Dziękuję bardzo za wyczerpujące wyjaśnienia.
Jak już jesteśmy w temacie własnych kodów do MES to sam przymierzam się żeby taki stworzyć, choć bardzo powoli jak widać po moich licznych wątpliwościach dot. działania metody. Powiedz mi proszę, z jakich źródeł korzystałeś pisząc swój program (oprócz książki Rakowskiego, którą oboje uważamy za numer 1 w zakresie polskiej literatury o MES) ? Chodzi mi nie tyle o informacje teoretyczne co przykłady prostych programów MES. Wiesz gdzie można znaleźć proste kody do analiz statycznych (liniowych i ew. nieliniowych) np. w C++, Fortranie czy języku MATLAB-a ? Te języki akurat mniej więcej ogarniam. Kojarzę tylko jedną godną uwagi książkę - "Introduction to FEA using MATLAB and Abaqus" A. Khennane. Ale może da się gdzieś w internecie lub innych książkach znaleźć przykładowe kody ? |
|
Autor |
RE: Macierz pochodnych funkcji kształtu [B] |
czacza
Użytkownik
Postów: 57
Data rejestracji: 31.05.14 |
Dodane dnia 05/24/2019 10:37 |
|
|
Niestety nie znam przykładów książek z kodami. Strona https://wilis.pg.edu.pl/kwm/ksiazki zawiera dwie pozycje, do których zamieszczone są przykładowy skrypty do MATLABA. Z tego co widziałem to są tam funkcje służące do zbudowania pełnych programów.
Z pewnością na Github znajdziesz też kody innych użytkowników, które możesz podpatrzyć. Z88 Aurora ma też tam swój profil, część ich oprogramowania jest opensource, więc możesz zobaczyć przykłady. Kiedyś potrzebowałem też jakiegoś gotowca w MATLABie i znalazłem go przez ich wyszukiwarkę w skryptach przesyłanych przez użytkowników. |
|
Autor |
RE: Macierz pochodnych funkcji kształtu [B] |
BE-FEA
Użytkownik
Postów: 112
Data rejestracji: 01.12.17 |
Dodane dnia 05/24/2019 19:19 |
|
|
Dziękuję, na pewno się przyda. Zapomniałem dodać, że szukam kodów do elementów 2D, ale i takie pewnie da radę znaleźć. Oprócz skryptów MATLABa przydałyby mi się też bardzo kody np. w C++ albo Fortranie, bo tam nie ma gotowych funkcji do MES jak w MATLABie i można się więcej nauczyć studiując kod. Gdybyś trafił na jeszcze jakieś ciekawe źródła pomocne przy tworzeniu własnego programu MES to będę wdzięczny za informację. Zacznę oczywiście od analiz liniowych, ale docelowo fajnie by było napisać kod dla przypadków nieliniowych. |
|
Autor |
RE: Macierz pochodnych funkcji kształtu [B] |
czacza
Użytkownik
Postów: 57
Data rejestracji: 31.05.14 |
Dodane dnia 05/27/2019 09:51 |
|
|
W książce pana Zienkiewicza jest kilka procedur dla obliczeń nieliniowych i są one dobrze wytłumaczone. Co prawda, są to czasem podejścia przestarzałe, ale łatwe w zaprogramowaniu. Tak samo jest w Theory Reference Manual od Ansysa. Jest w nim wiele odnośników do starych już publikacji o procedurach obliczeniowych, ale są one dobrze opisane, dostępne i w miarę przystępne. No i trochę o solwerach i przechowywaniu macierzy jest w książce pana Riega do Z88 Aurora. Choć co do macierzy i ich rozwiązywania to lepiej zostawić to sprawdzonym już bibliotekom wbudowanym - są szybkie, zoptymalizowane i trudno znaleźć ich minusy. |
|
Autor |
RE: Macierz pochodnych funkcji kształtu [B] |
BE-FEA
Użytkownik
Postów: 112
Data rejestracji: 01.12.17 |
Dodane dnia 05/27/2019 18:28 |
|
|
Mówisz o tej 3-tomowej anglojęzycznej serii Zienkiewicza (jest jeszcze mało znana 1-tomowa po polsku) ? Jakoś mi nie leży ten podręcznik, chociaż uważany jest za biblię MES. Opisuje dziwne szczegóły zamiast skupić się na najważniejszych aspektach.
Natomiast wszelkie Theory Guides do programów MES faktycznie są często wartościowym źródłem wiedzy. Książkę „Finite Element Analysis for Engineers. Basics and Practical Applications with Z88Aurora” F. Rieg też widziałem i zgadzam się, że jest niezła. Korzystałem również z tego programu. Ma już swoje lata i jest dosyć niewygodny w obsłudze (zwłaszcza zadawanie war. brzegowych jest bardzo toporne), ale ciężko o dobrą alternatywę wśród programów open source. Oprócz Elmer FEM, który naprawdę mi się podoba i Code_Aster, do którego testowania dopiero się zabieram.
Edytowane przez BE-FEA dnia 05/27/2019 18:29 |
|
Autor |
RE: Macierz pochodnych funkcji kształtu [B] |
czacza
Użytkownik
Postów: 57
Data rejestracji: 31.05.14 |
Dodane dnia 06/05/2019 12:04 |
|
|
Tak, o tej książce pana Zienkiewicza pisałem. Właśnie te dziwne szczegóły przydają się w odpowiednich momentach - trudno niektóre z tych informacji znaleźć gdzie indziej.
Czy możesz coś napisać o Elmerze? Ma preprocesor czy jest skryptowy? Co z geometrią i siatką - import z zewnątrz? Będę wdzięczny za małe podsumowanie jego możliwości. Kiedyś byłem bardziej na czasie z programami opensource, ale ostatnio wypadłem z obiegu. Code Aster mi nie podszedł ze względu na francuski kod, dokumentację i wyrzucane błędy. Niestety nie przemogłem się do nauki i programu i francuskiego, więc ostatecznie zrezygnowałem bez walki. |
|
Autor |
RE: Macierz pochodnych funkcji kształtu [B] |
BE-FEA
Użytkownik
Postów: 112
Data rejestracji: 01.12.17 |
Dodane dnia 06/05/2019 14:44 |
|
|
Elmer ma preprocessor i to zaskakująco przyjazny jak na open-source. Także nie trzeba się bawić w skrypty. Meshed też jest, ale dosyć uproszczony i nie radzi sobie z większymi modelami. Najlepiej robić siatkę w Gmsh i zaimportować do Elmera. Posprocessora też nie ma, ale ParaView sobie doskonale radzi. Także polecam zestaw Gmsh, Elmer i ParaView. Elmer może liczyć mechanikę, ciepło i elektromagnetyzm. Minus jest taki, że długo liczy, ale jest opcja parallel processingu, więc może wystarczy ją odpowiednio ustawić.
Przetestowałem też Code_Aster. Ma bardzo duże możliwości a dzięki preprocessorowi Salome_Meca nie trzeba grzebać w kodzie. Większość funkcji jest po angielsku, tylko te rzadziej używane zostały po francusku, ale idzie się przyzwyczaić. W necie nie brakuje tutoriali. Meshowanie jest o wiele lepsze niż w Elmerze (zarówno siatki hexa/quad jak i tetra/tria). Jako postprocesor może posłużyć ParaVis wbudowany w Saome_Meca. Ten program ma naprawdę duży potencjał. |
|