(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5M6SH59');
9 minutes read
12 grudnia 2017

Rozwiązywanie problemów ze zbieżnością w nieliniowej analizie

9 minutes read

Otrzymałem ostatnio kilka maili z pytaniami o zbieżność w nieliniowej analizie. Istnieje wiele powodów, dlaczego Twoja analiza nie może się zbiec. Jednym z nich jest złe „sterowanie” analizą – czyli przyjęcie kiepskiej strategii przyrostów obciążenia. Poniżej możesz przeczytać o różnych opcjach sterowania i ich pozytywnych/negatywnych stronach.

Sterowanie niejedno ma imię…

Zacznijmy od podstaw. Używam terminu „sterowanie analizą”, znam jednak również ludzi mówiących o „strategii rozwiązania” czy o „metodach obliczeń”. Kiedy coś ma wiele nazw, dobrze jest zacząć od definicji, żeby uniknąć nieporozumień.

Jak pewnie wiesz, solver do analizy nielinowej dzieli obciążenie na małe „kawałki” nazywane inkrementami (lub tez przyrostami). Następnie solver przykłada kolejne inkrementy obciążenia (czasami w sposób podany przez użytkownika, czasami automatycznie dobiera rozmiar inkrementu po drodze).

Sterowanie składa się z dwóch części:

  • Typ obciążenia (czyli siły aktywne lub przemieszczenia wymuszone),
  • Strategia doboru inkrementu (jak solver dobiera rozmiar następnego inkrementu obciążenia).

Typ obciążenia stosunkowo łatwo wyjaśnić. Możesz obciążyć model siłami aktywnymi lub też wymuszonymi przemieszczeniami. To oddzielny temat, któremu poświęcę kolejny wpis, ale ogólnie rzecz biorąc, musisz wybrać jedną z tych metod.

Każdy kolejny inkrement zwiększa albo obciążenia (w modelach obciążanych silami aktywnymi), albo przemieszczenia (w modelach obciążanych wymuszonymi deformacjami). Oba podejścia mają swoje słabe i mocne strony. Ogólnie można je podsumować następująco:

Obciążenie modelu przemieszczeniami na ogół pomaga ze zbieżnością. Czasami rozwiązuje też problemy ze sztywnym ruchem bryły. Zwykle podejście to uważane jest za „lepsze”.

Obciążenie siłami aktywnymi pozwala lepiej opisać wiele schematów obciążenia. Prawdą jest też, że zbieżność jest tu większym problemem. Pewnych zadań nie da się jednak w skończonym czasie zamodelować ze pomocą obciążeń przemieszczeniami. Jeśli nie wierzysz, spróbuj z płytką o wymiarach 1×1 obciążoną równomiernym parciem na całej powierzchni. Odwzorowanie odpowiednich przemieszczeń jest dość karkołomne. Oczywiście wykonalne… ale raczej niewarte całego zachodu!

Jeśli chodzi o strategię doboru inkrementu, to podzielę możliwości na 2 grupy (unikniemy w ten sposób technicznych detali):

„Normalne” inkrementy: to podejście, w którym solver zwiększa obciążenia (lub przemieszczenia). Można je definiować na różne sposoby. Na przykład możesz określić wartość inkrementu (i zażądać, by pozostał stały) albo też możesz skorzystać z algorytmu, który wybierze najlepszy rozmiar inkrementu w każdym kroku analizy. Niezależnie od metody zwiększają się albo przemieszczenia albo obciążenie siłą.

Sterowanie długością łuku: znowu mamy tu mnóstwo możliwości. Najpopularniejsza jest metodą zmodyfikowana Riksa (choć metoda Crisfielda nie odstaje za mocno). Na ogół pracują one w podobny sposób do tego stopnia, że niektóre solvery definiują po prostu analizę sterowaną długością łuku bez możliwości wyboru jednej z nich. Trik tutaj polega na tym, że w kolejnych krokach nie są zwiększane ani siły, ani przemieszczenia (niezależnie od typu obciążenia). Całością steruje „fikcyjny” parametr. Więcej o nim możesz przeczytać poniżej.

Gdzie w tym wszystkim jest zbieżność?

Jestem prawie pewny, że widziałeś już animacje modeli MES, które zostały obciążone aż do utraty nośności. Na ogół filmiki te wyglądają zachęcająco:

Wyników takich nie da się uzyskać za pomocą wszystkich wymienionych metod. Aby omówić to szerzej, rozwiążmy prosty problem wyboczenia powłoki.

Analiza takiego zadania prowadzi do otrzymania ścieżki równowagi statycznej. Jeśli nie wiesz, co to takiego, zapisz się poniżej tego posta, żeby otrzymać darmowy kurs wprowadzający (w języku angielskim).

Przeanalizujmy wyniki, jakie możemy uzyskać w każdej z metod sterowania analizą. Żeby to zrobić, policzyłem naszą powłokę, obciążając ją siłami aktywnymi (przypadek A), przemieszczeniami wymuszonymi (przypadek B) oraz korzystając z metody sterowania długością łuku (przypadek C). Wszystkie uzyskane przeze mnie ścieżki równowagi statycznej pokazane są poniżej:

  • Przypadek A – siły aktywne: to, o co poprosiłem solver, to stopniowe zwiększanie obciążenia. Na podstawie wzrostów obciążenia solver szukał odpowiednich deformacji, które pozwalają na osiągnięcie równowagi układu. Możesz zobaczyć powyżej, że kiedy obciążenie osiągnęło wartość 31 kN… nie mogło się już zwiększyć. To jest nośność powłoki. Oznacza to, że solver próbował zwiększyć obciążenie, ale nie mógł znaleźć przemieszczeń, przy których całość byłaby stabilna. Po walce poddał się i wyrzucił komunikat „brak zbieżności”. Stało się to w punkcie A na wykresie.
  • Przypadek B – przemieszczenia wymuszone: to nieco mądrzejsze podejście. Solver zwiększał tutaj wymuszone deformacje. Ponieważ po zniszczeniu modelu odkształcenia wciąż rosną, teoretycznie wszystko powinno zadziałać. Potrzebne było dużo czasu, żeby solver zbiegł się w punkcie A na wykresie. Z punktu tego przeniósł się do punktu B (po przerywanej niebieskiej linii). Wynika to z tego, że solver działał „na ślepo”. Nie widział, że w pewnym momencie deformacje maleją… musiał więc „wystrzelać”, gdzie jest punkt B. Znalezienie tego punktu nie zawsze jest możliwe (kilka razy otrzymałem w punkcie A komunikat „brak zbieżności”, zanim obrałem odpowiednią strategię doboru inkrementów, która umożliwiła uzyskanie zbieżności). Mimo wszystko, po różnych kłopotach byłem w stanie znaleźć mniej lub bardziej poprawne podejście.
  • Przypadek C – analiza sterowana długością łuku: to coś innego. Solver zwiększa tu parametr „długości łuku” i próbuje znaleźć jednocześnie siły i przemieszczenia, które się zbiegną. Dzięki temu rozwiązanie pozwala na uzyskanie całej ścieżki równowagi statycznej, włączając w to zakres, w którym zarówno siły jak i przemieszczenia maleją. Bardzo fajna metoda moim zdaniem 🙂

Może być jeszcze gorzej!

Klasycznym zadaniem prosto z koszmarów w przypadku analizy nieliniowej jest deformacja powłoki łukowej o małej wyniosłości łuku obciążonej siłą skupioną. Możesz zobaczyć, jak na ścieżce równowagi statycznej wyglądają deformacje takiego zadania:

Po prostu uwielbiam ten przypadek – nigdy nie przestaje mnie zadziwiać, jak skomplikowane mogą być proste rzeczy! Ścieżka równowagi statycznej takiego przypadku wygląda następująco:

Oto co się dzieje według 3 scenariuszy:

  • Sterowanie siłą (przy użyciu w inkrementach sił czynnych): analiza wyrzuci komunikat „brak zbieżności” w punkcie A. Jeśli nie, będzie rozpaczliwie próbować znaleźć punkt C, podążając czerwoną linią.
  • Sterowanie przemieszczeniami (każdy inkrement zwiększa przemieszczenia):analiza spokojnie przejdzie przez punkt A. Następnie w punkcie B wyrzuci komunikat „brak zbieżności”. Jeśli przy konfiguracji analizy (i czasie obliczeń) będziemy wystarczająco cierpliwi, teoretycznie możliwe jest przejście z punktu B do D po czerwonej linii… choć nigdy tego nie próbowałem.
  • Sterowanie długością łuku: w ten sposób właśnie udało mi się uzyskać ścieżkę równowagi statycznej. Użyłem siły czynnej jako sposobu obciążenia (głównie dlatego, że tak właśnie obciążam większość liczonych modeli). Możliwe byłoby też użycie przemieszczeń jako obciążenia, chociaż niektóre solvery (jak Nastran SOL 106) nie pozwalają na to.

Co zrobić, gdy masz problemy ze zbieżnością

W oparciu o to, co dziś pisałem, wyciągnę wnioski:

Problemy ze zbieżności – lista rzeczy, które mogą pomóc:

  • Jeśli używasz sił czynnych, problemy ze zbieżnością na pewnym etapie analizy mogą (ale nie muszą!) oznaczać, że osiągnąłeś nośność modelu. Spróbuj w miarę możliwości to oszacować. Jeśli właśnie tu tkwi problem, zamień obciążenie na przemieszczenia wymuszone (o ile możliwe jest znalezienie poprawnego kształtu deformacji) lub też użyj analizy sterowanej długością łuku.
  • Jeśli używasz wymuszonych przemieszczeń i masz problemy ze zbieżnością, spróbuj wykorzystać sterowanie długością łuku. To raczej rzadki przypadek, jednak czasami się zdarza.
  • Problemy ze zbieżnością zdarzają się również przy sterowaniu długością łuku. Traktuj je „normalnie”. Zmniejsz inkrement (zauważ, że solvery mają ustawienia pozwalające na wybór, czy solver może w międzyczasie zwiększać długość łuku czy też nie). Możesz też podzielić analizę na mniejsze „kroki”, aby narzucić duże inkrementy tam, gdzie nic się nie dzieje i małe – tam, gdzie to potrzebne.
  • Sterowanie długością łuku ma zabawny „błąd”. Czasami zdarza się, że w punktach bifurkacji („czubek” A na pierwszej z pokazywanych ścieżek równowagi statycznej) solver się „gubi”. Obciążenia zaczynają wtedy spadać do 0, a następnie przykładane są z przeciwnym zwrotem (czyli ściskane belki zaczynają być coraz mocniej rozciągane). Dzieje się tak dlatego, że solver znalazł punkt równowagi na ścieżce, którą już przebył. Po pierwszym takim punkcie solver będzie naturalnie podążać tą drogą z powrotem po ścieżce! Aby temu zapobiec, spróbuj w obszarze bifurkacji użyć małych inkrementów lub też zmień coś nieznacznie w modelu.

Mam nadzieję, że dzisiejszy post okaże się dla Ciebie przydatny. Daj mi znać w komentarzach, co o tym wszystkim myślisz. Jeśli chcesz pomóc, możesz też podzielić się tym artykułem ze swoimi przyjaciółmi 🙂

Chcesz nauczyć się więcej?

Jeśli interesujesz się MESem, możesz dowiedzieć się kilku przydatnych rzeczy ma moim darmowym kursie. Możesz się do niego zapisać poniżej:

Author: Łukasz Skotny Ph.D.

Mam ponad 10 lat doświadczenia w praktycznym wykorzystaniu MES w projektowaniu (prowadzę własne biuro projektowe), a do tego przez dekadę byłem wykładowcą na Politechnice Wrocławskiej. Obecnie tutaj dzielę się swoją wiedzą z inżynierii i MES dzięki kursom oraz na blogu!

Read more

Join my FEA Newsletter

Get my 1h video Lecture on Nonlinear Material

    Your personal data administrator is Enterfea Łukasz Skotny, Skrzydlata 1/7, 54-129 Wrocław/POLAND, Email. By subscribing to the newsletter that includes marketing messages you consent to your personal data processing in accordance with this privacy policy

    Join the discussion

    Comments (0)

    Zapisz się na mój Newsletter o MES (po angielsku)

    Co tydzień otrzymasz maila z anglojęzycznymi materiałami o MES

      Your personal data administrator is Enterfea Łukasz Skotny, Skrzydlata 1/7, 54-129 Wrocław/POLAND, Email. By subscribing to the newsletter that includes marketing messages you consent to your personal data processing in accordance with this privacy policy