Jeżeli do oprogramowania inżynierskiego można podpiąć własne procedury to NVIDIA udostępnia darmowy driver NVCC za pomocą którego można kompilować kod napisany w C. Można to robić z Visual Studio (od wersji 10) pod Windows lub używając gcc pod Linuxem.
Wówczas oprogramowanie optymalizuje się pod posiadaną kartę graficzną. Warto mieć kartę o CUDA capability większym niż 2.0 ze względu na obsługę typu double.Zobacz Komentarze Newsów
Czy ktoś z forum korzysta może z Elmera? Bardzo ciekawi mnie jak to działa. Bo z tego tutka wynika, że jest OK, a tymczasem ja próbowałem... bezskutecznieZobacz Komentarze Newsów
po zrozumieniu jak działa MES aż do równania Ku=F (i jego szerszych wersji dla dynamiki itd.) czytałem też trochę o tym jak to równanie jest rozwiązywane, a więc o typach solverów. Mam tu jednak trochę wątpliwości. Przede wszystkim za dużo tu wszędzie tych iteracji:
- solvery dzielą się na direct (bezpośrednio rozwiązują układ równań) i iterative (rozwiązują go iteracyjnie) - ok, to jest jasne
- analizy nieliniowe liczy się iteracyjną metodą Newtona-Raphsona, która dzieli obciążenie na przyrosty i dla każdego liczy liniowy układ równań aż do uzyskania równowagi. A więc rozumiem, że to jest niezależne od iteracji z poprzedniego myślnika i można liczyć metodą NR zagadnienie nieliniowe przy pomocy solvera direct lub iterative. Czyli w tym drugim przypadku będą podwójne iteracje - i przy przyrostach obciążenia i przy poszczególnych równaniach liczonych w tych przyrostach. Dobrze myślę ?
- ale jest jeszcze podział na solvery implicit i explicit. Implicit jak wiadomo to znów iteracje. Ale jak to się ma do poprzednich punktów ? To jakby trzeci poziom iteracji czy po prostu w ramach implicit wykorzystuje się metodę NR ? Jeśli tak to rozumiem, że w explicit nie jest ona potrzebna ?
Będę też wdzięczny za krótkie wyjaśnienie głównych różnic między solverami implicit a explicit, ponieważ nadal jest to dla mnie trochę czarna magia. Ale nie chodzi mi o takie rzeczy jak warunkowa stabilność czy inne matematycznie niuanse tylko wytłumaczenie w najprostszych możliwych słowach jak one działają.
Cześć!
To spróbuję odpowiedzieć. Ale zanim to jeszcze jedna rzecz. Ostatnio chyba nieco okłamałem Cię w kilku kwestiach dotyczących budowy macierzy sztywności i sformułowań dla elementów skończonych. Tak mi to nie dawało spokoju, więc nadrobiłem braki, więc gdy coś jest jeszcze w tym temacie niejasne to mogę się poprawić (przynajmniej tak myślę).
1. Analizy nieliniowe. To żeby nie namieszać. Za książką MES w mechanice konstrukcji panów Rakowskiego i Kacprzyka (czy już polecałem?):
Metoda Newtona-Raphsona w każdym cyklu iteracyjnym operuje pełnym obciążeniem (nie jego przyrostami). W poszczególnych cyklach przyjmuje stałe, przybliżone macierze sztywności, co powoduje niespełnienie warunków równowagi. Po każdym cyklu oblicza się obciążenie niezrównoważone służące do wyznaczenia dodatkowych przemieszczeń (zmian zmierzających do konfiguracji odpowiadającej równowadze). Proces obliczeniowy kończy się po osiągnięciu równowagi z przyjętą dokładnością.
I tak, można w poszczególnych cyklach iteracyjnych stosować dowolny solwer do rozwiązania równania macierzowego w danym cyklu. Tak jak piszesz.
Obciążenie na przyrosty jest dzielone w metodzie przyrostowej i mieszanej. I tu można korzystać z dowolnego solwera. A iteracje, które poruszają się po obciążeniu są niezależne od tych, którymi operuje solwer do rozwiązania równania macierzowego w danym podkroku.
Może dla zobrazowania. W metodzie przyrostowej będziemy rozwiązywać następujące po sobie równania:
(K to globalna macierz sztywności w danym kroku, delta r to przyrost przemieszczeń w danym kroku i delta R to przyrost obciążenia w danym kroku)
K1 delta r1 = delta R1
K2 delta r2 = delta R2
K3 delta r3 = delta R3 itd. aż do ostatniego przyrostu obciążenia
A więc są tu iteracje po obciążeniu, które zostało podzielone na ileś podkroków. W każdym z tych podkroków musimy rozwiązać równanie macierzowe (np. K1 delta r1 = delta R1) i możemy to zrobić dowolną metodą - w tym iteracyjną.
PS Rozdział polecanej książki ma też porównanie powyższych metod. I ogólnie dobrze opisaną analizę nieliniową.
Edytowane przez czacza dnia 04/10/2019 11:25
Masz na myśli ten temat ?
https://feazone.org/forum/viewthread.php?forum_id=27&thread_id=1992&pid=6616#post_6616
Analizowałem potem literaturę i wygląda na to, że dobrze mówiliśmy. Direct Stiffness Method to po prostu metoda przemieszczeniowa i odnosi się nie tylko do elementów prętowych (choć tak jest najczęściej w literaturze przedstawiania). Równania różniczkowe w statyce (równania równowagi z teorii sprężystości) są podstawą, z której metodą Galerkina lub Rayleigha-Ritza dochodzimy do sformułowania elementu, czyli de facto wzoru na macierz sztywności. Są w tym temacie jakieś błędy czy dobrze mi się wydaje, że wszystko co tam pisaliśmy jest ok ?
Natomiast co do bieżącej kwestii to tak coś czułem, że to nie jest takie proste z metodą N-R, bo co to za filozofia podzielić obciążenie na małe części i liczyć liniowe równania dla każdego z tych kawałków.
Znasz Abaqusa ? Jeśli tak to moglibyśmy na nim to omówić, bo tam jest to wyraźnie widoczne. Pomijając podział na stepy (kroki analizy, z których nie trzeba korzystać jeśli procedura jest jedna) mamy kolejno:
- increments - przyrosty, a więc podział obciążenia na części
- iterations - w ramach każdego przyrostu jest kilka iteracji aż do uzyskania równowagi
Są jeszcze attempts - to jest mniej wyjaśnione, ale zdaje się, że chodzi po prostu o grupę iteracji i jak np. program nie dojdzie do równowagi po kilku iteracjach to jest 1 nieudany attempt, cofa się i próbuje ponownie zmniejszając Δt (time increment) dla kolejnego attempt itd.
Przy tym jest mowa o tym, że Abaqus/Standard (solver implicit) korzysta z metody Newtona-Raphsona. Rozumiem, że do tych iteracji w obrębie każdego przyrostu. Czy te iteracje metody N-R to te same, o których mowa gdy opisuje się solvery implicit ? W takim razie mogą tu występować jeszcze tylko jedne iteracje - solver iterative (zamiast direct) do równań uzyskanych metodą N-R.
P.S. Czy w takim razie Abaqus korzysta jednocześnie z metody przyrostowej i N-R ? Po co aż 2 metody rozwiązywania zagadnień nieliniowych jednocześnie ?
Edytowane przez BE-FEA dnia 04/10/2019 20:42
Tak z przypomnienia pisałem, że coś tam pokiełbasiłem. Teraz przeczytałem i wydaje się być wszystko OK w tamtym przytaczanym temacie. Jedynie o czym tam nie ma, to żeby mieć macierz elementu by ją wstawić do globalnej macierzy sztywności to trzeba ją napierw policzyć. To policzenie odbywa się przez całkowanie z użyciem kwadratury Gaussa-Legendra, mnożenie macierzy konstytuwnej i funkcji kształtu, a to wszystko biorąc pod uwagę ustawienie elementu w przestrzeni do czego jest potrzebna transformacja ze współrzędnych globalnych do elmentu (isoparametric mapping). To tak w zarysie i z potrzebą wzięcia małej poprawki, bo nie mam przy sobie książek.
Solvery komercyjne mówią użytkownikowi, że korzystają z metody NR, a z pewnością używają jej rozbudowanej o dodatkowe polepszacze i przyspieszacze, żeby się lepiej liczyło. To co piszesz wygląda na metodę mieszaną. A więc podział na podkroki (metoda przyrostowa), następnie w obrębie danego podkroku korzysta z NR, więc iteruje do uzyskania równowagi rozwiązując układy równań liniowych, które to może rozwiązywać metodą interacyjną. Obrazowo:
1 przyrost obciążenia, w nim 10 iteracji NR do uzyskania równowagi.
W 1 iteracji NR, 10 iteracji solwera do rozwiązania równania.
Razem dla na przykład 10 przyrostów będzie łącznie 100 iteracji NR i 1000 iteracji obliczeń solwera.
To tak obrazowo (nadzieję żywię, że tak było). W praktyce, metody o których piszemy są odpowiednio rozbudowane by robić iteracji jak najmniej, nie liczyć co chwila od nowa macierzy sztywności i stosować skróty, gdzie się da by przyspieszyć rozwiązanie. Stąd też czasem pojawia się, że program korzysta z metody Rungego-Kutty lub innej (miałem wypisać więcej, a nic mi nie przyszło do głowy).
A więc iteracje NR to inne iteracje od tych solwerowych iteracji. Abaqus może korzystać jednocześnie z metody przyrostowej i NR, co daje metodę mieszaną.
To jutro zostanie pogadać o metodach jawnych i nie. Pozdrawiam!
Edytowane przez czacza dnia 04/10/2019 21:43
O sposób Runge-Kutty też miałem spytać, ale we wspominanej przez Ciebie książce Rakowskiego i Kacprzyka (moim zdaniem najlepsza polska pozycja o MES) jest to dosyć przystępnie wyjaśnione. O ile dobrze rozumiem to upraszczając robi się tam 2 cykle obliczeniowe dla każdego przyrostu. Pierwszy z nich jest dla połowy obciążenia z danego przyrostu (0.5ΔF_j). Następnie wyznaczamy macierz sztywności K_j-0.5 i w drugim cyklu liczymy przemieszczenia już dla pełnego obciążenia z przyrostu (ΔF_j) korzystając z tej macierzy sztywności K_j-0.5.
Dzięki za wyjaśnienie co do tych wszystkich iteracji itp. Teraz już myślę, że jest to dla mnie jasne. Pozostaje właśnie temat metod implicit i explicit. Będę bardzo wdzięczny za przystępne przedstawienie jak one mniej więcej działają.
P.S. Co jeszcze mógłbyś polecić z literatury (niekoniecznie polskiej) oprócz Kacprzyka i również popularnego Rusińskiego ?
Tak, tak to działa w metodzie Rungego Kutty. To akurat metoda punktu pośredniego. W analizach CFD często można spotkać metodę Rungego Kutty czwartego rzędu, gdzie tych obliczeń dla jednego przyrostu robi się więcej.
Z literatury dużo pomogła mi książka Finite Element Analysis for Engineers autorstwa Rieg, Hackenschmidt, Alber-Laukant, theory i user guide do programu Z88 Aurora oraz ANSYS Theory Reference do którejś ze starszych wersji (np. 9.0). Oprócz pierwszej książki, pozostałe pozycje są do znalezienia w sieci.
Co do implicit i explicit - wiem jak je rozróżnić. Jednak zacząłem się zastanawiać o powód, dla którego w zagadnieniach dynamicznych częściej wykorzystywana jest metoda całkowania jawnego. Mam nadzieję, że zaraz to odkryję i napiszę.
Dzięki za odpowiedź. Zależy mi przede wszystkim na prostym wyjaśnieniu jak te metody działają - co po kolei robią. Tzn. opis w stylu, że np. wyznaczany jest wektor przyspieszeń, z którego liczone są prędkości a potem przemieszczenia itd. Jak to tam wygląda z przyrostami/iteracjami etc.
Edytowane przez BE-FEA dnia 04/18/2019 16:31
Chciałem odpowiedzieć, ale nie wiem co napisać o jawnych i niejawnych metodach.
Na moje (nie jestem tego pewny), równanie macierzowe w metodach jawnych daje się rozseparować, dzięki czemu obliczenia mogą być prowadzone na kolejno przetwarzanych elementach (wielka korzyść w szybkości obliczeń i w zapotrzebowaniu na pamięć, a to główne powody stosowalności metod jawnych).
W metodach niejawnych takich możliwości nie ma, a więc ich stosowalność też mniejsza. Choć oczywiście mają swoje plusy jak na przykład często (bezwarunkowa) stabilność.
Z oczywistości mogę tylko napisać, że w metodzie jawnej, aby znaleźć przemieszczenie w czasie t + dt korzysta się z równowagi w chwili t. Natomiast w metodzie niejawnej by znaleźć przemieszczenie w czasie t + dt potrzebujemy też wektor obciążeń w czasie t + dt, którego to jeszcze nie mamy, a więc musimy rozwiązać równanie za jednym zamachem.
Dzięki za odpowiedź. Ja na razie wiem tyle, że w implicit liczymy przemieszczenia u. Potrzebne są iteracje. Rozwiązanie w danym kroku jest uzyskiwane na podstawie rozwiązania z poprzedniego kroku i konieczne jest odwracanie macierzy sztywności, co jest kosztowne obliczeniowo. Rozwiązanie jest wtedy bezwarunkowo (nawet dla dużych kroków) stabilne - pytanie dlaczego. Natomiast w explicit liczymy bezpośrednio przyspieszenia u'' i nie musimy stosować iteracji ani odwracać macierzy sztywności a jedynie macierz masy (co jest łatwiejsze gdyż ta macierz jest "lumped" - z tego co rozumiem chodzi po prostu o macierz diagonalną). Znając przyspieszenia w chwili t liczymy prędkości w chwili t+1/2 i przemieszczenia w chwili t+1. Rozwiązanie nie jest bezwarunkowo stabilne i trzeba używać odpowiednio małych kroków.
Nawet jak czytam ten opis to jest to dla mnie jakieś nieintuicyjne. Przydałby się przystępny artykuł (są blogi gdzie o MES pisze się w sposób przyjazny) albo rozdział w książce (mniej prawdopodobne) na ten temat.
Edytowane przez BE-FEA dnia 05/23/2019 18:21
W metodzie jawnej możemy doprowadzić do niesprzężonego układu równań. Dzięki temu uzyskujemy niezależne równania różniczkowe, które możemy rozwiązywać jedno po drugim. Nie ma więc co odwracać. A jest tak, ponieważ macierze masy, tłumienia i efektywna macierz sztywności są diagonalne. Macierz diagonalną otrzymuje się przez skupienie mas w węzłach, co prowadzi do wprowadzenia nowych błędów i niestabilności. Diagonalizacja macierzy jest więc ważnym elementem metod jawnych. To w której chwili liczy się prędkości i przyspieszenia zależy przede wszystkim od metody. Niekoniecznie musi być tak jak napisałeś.
Co do metod niejawnych to nie trzeba iterować (mowa tu o rozwiązywaniu równania). Można obliczyć macierz bezpośrednio. Dyskusję o solwerach iterowanych i bezpośrednich prowadziliśmy chyba w tym temacie. W zagadnieniach dynamiki ona tak samo obowiązuje. Jeżeli chodzi o iteracje czasowe: t, t+dt, t+2dt itd. to występują one w obu metodach jawnej i niejawnej.
Z praktyki nie wiem dlaczego metody niejawne są bezwarunkowo stabilne. Z książki wiem, że dlatego, że nie ma w nich współczynnika przed K (macierz sztywności) przy obliczaniu efektywnej macierzy sztywności. W metodach gdzie te współczynniki są, krok czasowy musi być odpowiednio dobrany by minimalizować błędy min. sztucznego tłumienia. Ale to tak po łebkach.
Dziękuję, poczytam o tym jeszcze, bo to chyba nie jest tak bardzo trudne tylko muszę załapać o co dokładnie w tym biega. Najmniej trafia do mnie algorytm explicit - nie bardzo rozumiem te wszystkie kroki czasowe itp.
czacza napisał/a:Z książki wiem, że dlatego, że nie ma w nich współczynnika przed K (macierz sztywności) przy obliczaniu efektywnej macierzy sztywności.
No dobra, to o implicit i explicit wiem na razie chyba wszystko co chciałem wiedzieć. Muszę sobie to jeszcze poczytać na spokojnie. Niestety moje braki w zaawansowanych umiejętnościach matematycznych robią swoje.
Przy okazji analiz dynamicznych mam jeszcze jedno małe pytanie - jak można pokazać na równaniach rozwiązywanych przy liczeniu zagadnień własnych (drgania swobodne i wyboczenie liniowe), że wektory własne mogą mieć dowolne wartości a i tak spełniają rozwiązanie ? Czyli z czego wynika, że wartości na skali do postaci drgań/wyboczenia w programach MES nie mają nic wspólnego z rzeczywistymi przemieszczeniami ?
Równanie rozwiązywane przy drganiach własnych ma postać:
(K - λ M) q = 0
gdzie: K - macierz sztywności, λ - wartość własna (częstotliwość drgań), M - macierz masy, q - wektor własny.
Natomiast dla wyboczenia liniowego jest:
[K_l + λ K_nl1] v = 0
gdzie: K_l - zwykła macierz sztywności (conventional stiffness matrix), K_nl1 - macierz początkowych naprężeń (stress stiffness matrix), λ - wartość własna (mnożnik obciążenia wyboczającego), v - wektor własny.
I teraz pytanie brzmi czy można jakoś prosto pokazać na tych równaniach, że pomnożenie wektora własnego przez dowolną stałą da ten sam wynik ?
"Wektory własne określają postacie drgań układu. Wartości składowych wektora są dowolne, określony jest ich stały stosunek. Oznacza to, że można je dowolnie normować."
Czy można pokazać? Tak. Dla uproszczenia załóżmy, że macierz M jest jednostkowa i zapiszmy jako I. Co nie jest wcale dużym naginaniem, bo M zazwyczaj jest diagonalne i wszystkie składowe na diagonali są sobie równe. A więc teraz jest równanie (K - lambda I) q = 0, które można przekształcić na K q = lambda q. Macierz K jest rzecz jasna określona, a wartości własne lambda już wyznaczone. Widać stąd, że mnożenie wektora q przez skalar nie zmieni powyższej równości. To tak na prosto. Matematycznie da się wykazać, że i dla innych M jest to założenie spełnione. Na angielskiej wikipedii pod hasłem Eigenvalues and eigenvectors są przykłady w tym zakresie i zawsze jest tam napisane, że wektor własny jest odpowiada danej wartości własnej tak samo jak "any scalar multiple of this vector". Czy można inaczej? Tak, możesz rozpisać sobie te wszystkie macierze K, M i policzyć ręcznie czy kalkulatorem równanie i też będzie to samo. Czy to wystarczający dowód? Dla mnie tak, dla matematyka może być za mało, ale więcej nie potrafię na dzisiaj.
Właśnie o takie wyjaśnienie mi chodziło, dziękuję serdecznie. Masz rację, że najlepiej wypróbować tą właściwość wektorów własnych na przykładzie. W książce "Podstawy dynamiki budowli" Chmielewskiego i Zembatego (kolega mi ją polecił jako najlepszą jego zdaniem polską pozycję o dynamice w MES) jest przykład drgań własnych belki. Spróbuję na nim.
Skocz do Forum:
Reklama
Szukaj
Logowanie
Nie jesteś jeszcze naszym Użytkownikiem? Kilknij TUTAJ żeby się zarejestrować.
Tylko zalogowani mogą dodawać posty w shoutboksie.
Bulix 26.01.2022 Witam, szukam osoby która ogarnia program FEMM.
damian14100 25.01.2022 Witam,
Czy znajduje się na forum osoba która ma doświadczenie w obliczeniach wytrzymałościowych wózków wagonowych ?
BE-FEA 31.03.2021 Nie pracuję w Deform, ale może coś podpowiem na zasadzie analogii do innych programów MES. Napisz jeśli nadal aktualne.
daniel8894 31.03.2021 Czy pomógłby ktoś w zrobieniu symulacji procesu skrawania w Deform 3 d
BE-FEA 09.03.2021 Postaram się pomóc, zapraszam do kontaktu jeśli nadal aktualne.
kinia22 09.03.2021 witam, potrzebuje kogoś kto pomoże w przygotowaniu projektu w programie COMSOL - przeplyw ciepła przez ośrodek porowaty!
BE-FEA 02.04.2020 Przerobiło mi jedną literę na emotkę. Chodzi o przycisk new thread
BE-FEA 02.04.2020 Żeby dodać nowy temat wystarczy wejść w odpowiedni dział i kliknąć mały przycisk "ew thread" po prawej stronie.
KrzywaOHIO 30.03.2020 Jak dodać nowy wątek na forum?
Konrad96 02.12.2019 Witam, czy jest tu ktoś kto dobrze zna się na programie Robot struktural i pomógłby mi zamodelować belkę żelbetową podobną do belki użytej w badaniu? Proszę o kontakt jeśli ktoś chciałby pomóc