Dokumentacja techniczna systemu obliczeniowego

PoSMES — Polski System MES

Metoda elementów skończonych w przeglądarce internetowej:
podstawy teoretyczne, budowa solvera TOMes® i weryfikacja

Tomasz Walenczak autor systemu i silnika obliczeniowego
wersja systemu 1.1.0 · silnik TOMes® 1.0.0

Streszczenie

Praca opisuje budowę i weryfikację systemu PoSMES — samodzielnego programu do analizy wytrzymałościowej metodą elementów skończonych, działającego w przeglądarce internetowej bez instalacji, bez zależności zewnętrznych i bez przesyłania modelu na serwer. Częścią systemu jest silnik obliczeniowy TOMes®, napisany w całości od podstaw: od formatu macierzy rzadkiej i faktoryzacji LDLᵀ, przez elementy bryłowe TET4, TET10 i HEX8, po trzydzieści siedem rodzajów analiz obejmujących statykę, dynamikę, wyboczenie, plastyczność, kontakt, hipersprężystość, przewodnictwo ciepła, akustykę, zmęczenie, reologię oraz wypełnianie formy wtryskowej.

Omówiono sformułowanie metody, dobór elementów wraz z mechanizmami przeciwdziałającymi blokadzie objętościowej i ścinaniu pasożytniczemu, algorytmy rozwiązywania układów równań i zagadnienia własnego, oraz sformułowania nieliniowe. Osobny rozdział poświęcono weryfikacji: system zawiera zestaw 239 testów porównujących wynik z rozwiązaniami zamkniętymi, którego pełny przebieg jest przytoczony wraz z liczbami. Rozdział trzynasty przedstawia cztery przykłady rachunkowe policzone równolegle wzorem i metodą elementów skończonych.

1.Wstęp

1.1.Cel i zakres

Programy do analizy metodą elementów skończonych są dziś narzędziami dojrzałymi i drogimi. Licencja komercyjnego pakietu kosztuje tyle, co samochód, a jego instalacja wymaga stacji roboczej, uprawnień administratora i kilkudziesięciu gigabajtów miejsca. Dla studenta, konstruktora pracującego jednoosobowo i dla małego biura projektowego jest to bariera nieproporcjonalna do rzeczywistej potrzeby, którą zwykle da się opisać jednym zdaniem: czy ten wspornik wytrzyma i o ile się ugnie.

Celem pracy było zbudowanie systemu, który odpowiada na to pytanie rzetelnie, a jednocześnie jest dostępny natychmiast — bez instalacji, bez konta i bez wysyłania czyjejkolwiek dokumentacji na cudzy serwer. Zakres obejmuje kompletny łańcuch: od wczytania geometrii z systemu CAD, przez siatkowanie, sformułowanie i rozwiązanie układu równań, po prezentację wyniku i raport nadający się do dokumentacji.

Silnik obliczeniowy powstał w całości od podstaw. Nie jest nakładką na istniejący solver ani kompilacją cudzego kodu do postaci uruchamialnej w przeglądarce: format macierzy rzadkiej, faktoryzacja, algorytm przenumerowania, iteracja podprzestrzeni, całkowanie po czasie i modele materiałowe zostały napisane bezpośrednio w języku JavaScript i są przedmiotem rozdziałów od drugiego do dziesiątego.

1.2.Założenia, z których wynika reszta

Cztery decyzje podjęte na początku określiły kształt całego systemu.

Obliczenia po stronie klienta

Zadanie liczy się na komputerze użytkownika, a nie na serwerze. Konsekwencje są dalekosiężne i w większości korzystne: hosting nie musi mieć mocy obliczeniowej ani uruchamiać procesów w tle, więc systemem da się zarządzać na najtańszym koncie współdzielonym; koszt nie rośnie z liczbą użytkowników; a plik CAD — który w praktyce inżynierskiej bywa objęty umową o poufności — nigdzie nie jest wysyłany. Ceną jest wykorzystanie mocy jednej maszyny i jednego wątku, do czego wracamy w punkcie 11.2.

Zero zależności zewnętrznych

Silnik nie korzysta z żadnej biblioteki. Nie ma etapu budowania, transpilacji ani menedżera pakietów — pliki źródłowe są tym, co wykonuje przeglądarka. Ta decyzja kosztowała najwięcej pracy przy pisaniu solvera rzadkiego, ale daje własność, której nie da się kupić za żadną cenę: system otwarty za dziesięć lat nadal będzie działał, bo nie ma w nim niczego, co mogłoby przestać być utrzymywane.

Jednostki SI wewnątrz, jednostki inżynierskie na zewnątrz

Wewnątrz silnika obowiązuje konsekwentnie układ SI: metry, niutony, paskale, kilogramy. Przeliczenia na milimetry i megapaskale wykonuje warstwa interfejsu. W kodzie solvera nie ma ani jednego mnożnika 10⁻³ czy 10⁶, a to najczęstsze źródło błędów rzędu tysiąca w wynikach obliczeń wytrzymałościowych.

Prawda o dokładności zamiast marketingu

Każda analiza deklarowana jako działająca ma odniesienie w rozwiązaniu zamkniętym i test w zestawie weryfikacyjnym; analizy niegotowe są widoczne w katalogu jako zapowiedzi i nie da się ich wybrać. Wynik niesie ze sobą kontrolę równowagi globalnej, a raport — wykaz zastrzeżeń. Rozdział 12 pokazuje, jak ta zasada jest egzekwowana.

2.Sformułowanie metody elementów skończonych

2.1.Zagadnienie brzegowe teorii sprężystości

Punktem wyjścia jest układ równań opisujący równowagę ciała odkształcalnego. W obszarze Ω o brzegu ∂Ω poszukujemy pola przemieszczeń u(x) spełniającego równanie równowagi wewnętrznej wraz ze związkami geometrycznymi i fizycznymi:

∇·σ + b = 0 w obszarze Ω(2.1)
ε = ½(∇u + ∇uᵀ) związek geometryczny(2.2)
σ = D : ε związek fizyczny (prawo Hooke’a)(2.3)

do których dochodzą warunki brzegowe: kinematyczny u = ū na części brzegu Γu oraz statyczny σ·n = t̄ na pozostałej części Γt. Rozwiązanie ścisłe tego układu istnieje tylko dla nielicznych, prostych geometrii — i to jest cała przyczyna, dla której metoda elementów skończonych w ogóle powstała.

2.2.Sformułowanie słabe i zasada prac wirtualnych

Zamiast żądać, by równanie (2.1) było spełnione w każdym punkcie obszaru, żądamy, by było spełnione w sensie całkowym — po przemnożeniu przez dowolne pole przemieszczeń wirtualnych δu znikające tam, gdzie przemieszczenia są narzucone. Po scałkowaniu przez części otrzymujemy zasadę prac wirtualnych:

∫_Ω δε : σ dV = ∫_Ω δu · b dV + ∫_Γt δu · t̄ dS(2.4)

Praca sił wewnętrznych na odkształceniach wirtualnych równa się pracy obciążeń zewnętrznych na przemieszczeniach wirtualnych. Postać ta ma dwie zalety rozstrzygające o jej użyteczności: wymaga od pola przemieszczeń różniczkowalności tylko pierwszego rzędu — zamiast drugiego, jak (2.1) — oraz włącza statyczne warunki brzegowe w sposób naturalny, jako składnik prawej strony, zamiast nakładać je osobno.

2.3.Dyskretyzacja i macierz sztywności

Obszar dzielimy na elementy, a pole przemieszczeń wewnątrz elementu przybliżamy wartościami w jego węzłach, interpolowanymi funkcjami kształtu Na:

u(x) ≈ Σₐ Nₐ(x)·uₐ = N·uₑ(2.5)

Odkształcenie, jako pochodna przemieszczenia, wyraża się przez pochodne funkcji kształtu. Macierz łącząca przemieszczenia węzłowe z odkształceniem oznaczamy tradycyjnie B; dla elementu bryłowego o n węzłach ma ona wymiar 6 × 3n:

ε = B·uₑ , B = [ ∂N/∂x w układzie Voigta ](2.6)

Podstawienie (2.5) i (2.6) do zasady prac wirtualnych (2.4) i wykorzystanie dowolności δu prowadzi wprost do układu równań algebraicznych, w którym macierz sztywności elementu i wektor sił węzłowych mają postać:

Kₑ = ∫_Ωₑ Bᵀ·D·B dV fₑ = ∫_Ωₑ Nᵀ·b dV + ∫_Γₑ Nᵀ·t̄ dS(2.7)
K·u = F układ globalny po agregacji(2.8)

Agregacja polega na dodaniu wyrazów macierzy elementu do odpowiadających im pozycji macierzy globalnej, wskazanych przez numery stopni swobody elementu. W kodzie odpowiada temu klasa Assembler, a same całki (2.7) — funkcja elementSystem.

2.4.Całkowanie numeryczne

Całek (2.7) nie liczy się analitycznie. Zastępuje je sumowanie wartości podcałkowej w wybranych punktach z odpowiednimi wagami — kwadratura Gaussa:

∫_Ωₑ g dV ≈ Σᵢ g(ξᵢ) · |det J(ξᵢ)| · wᵢ(2.9)

Wyznacznik jakobianu przekształcenia z układu naturalnego (ξ, η, ζ) do globalnego (x, y, z) pełni tu podwójną rolę: jest miarą objętości i jednocześnie sprawdzianem poprawności siatki. Wartość ujemna oznacza element wywrócony — błąd w kolejności węzłów, a nie w solverze — i dlatego silnik przerywa wtedy obliczenia z jawnym komunikatem, zamiast liczyć dalej na ujemnej objętości.

Liczba punktów całkowania nie jest kwestią gustu. Musi wystarczyć do ścisłego scałkowania iloczynu BᵀDB, ale nadmiar kosztuje czas proporcjonalnie. Dla tetraedru o prostych krawędziach jakobian jest stały, więc dla TET4 wystarcza jeden punkt, a dla TET10 — reguła czteropunktowa dokładna dla wielomianów drugiego stopnia. HEX8 całkowany jest pełną kwadraturą 2×2×2.

3.Elementy skończone

System udostępnia trzy elementy bryłowe. Różnice między nimi nie są kosmetyczne — decydują o tym, czy wynik będzie miał błąd promila, czy stu procent, przy tej samej liczbie niewiadomych. Rozdział 13 pokazuje to na liczbach.

3.1.TET4 — czterowęzłowy tetraedr

Funkcje kształtu są współrzędnymi barycentrycznymi, więc pole przemieszczeń jest liniowe, a odkształcenie — stałe w całej objętości elementu. Element o stałym odkształceniu nie potrafi opisać zginania inaczej niż schodkowo: zgięcie belki odwzorowuje ciągiem elementów o różnych, ale w środku jednorodnych stanach naprężenia.

N = [ 1−ξ−η−ζ , ξ , η , ζ ](3.1)

Skutek jest drastyczny. W przykładzie z punktu 13.2 ten sam wspornik policzony elementami TET4 daje pierwszą częstość drgań własnych zawyżoną o 133%, podczas gdy TET10 na tej samej siatce myli się o 0,54%. TET4 pozostaje w systemie, bo jest tani i wystarcza tam, gdzie dominuje rozciąganie lub ściskanie — nie dlatego, że jest dobrym wyborem domyślnym.

3.2.TET10 — tetraedr kwadratowy

Dziesięć węzłów — cztery narożne i sześć na środkach krawędzi — daje kwadratowe pole przemieszczeń i liniowe odkształcenie. To wystarcza, by element zginał się poprawnie zamiast ścinać pasożytniczo. Numeracja węzłów jest zgodna z kartami C3D10 pakietów Abaqus i CalculiX oraz CTETRA formatu NASTRAN, dzięki czemu porównanie wyniku z zewnętrznym solverem nie wymaga przestawiania indeksów.

Nₐ = Lₐ(2Lₐ − 1) dla węzłów narożnych N_ab = 4·Lₐ·L_b dla węzłów na krawędzi (a,b)(3.2)

TET10 jest w systemie elementem zalecanym i domyślnym. Kosztuje około 2,5 raza więcej stopni swobody na tej samej siatce, ale — jak pokazuje tabela 13.2 — daje wynik dokładniejszy o dwa rzędy wielkości, więc jest tańszy przy zadanej dokładności, nie droższy.

3.3.HEX8 i dwie choroby elementu trójliniowego

Ośmiowęzłowy sześcian o trójliniowych funkcjach kształtu jest tani i regularny, ale w czystej postaci cierpi na dwie dolegliwości, z których każda potrafi zawyżyć sztywność o rzędy wielkości.

Blokada objętościowa

Przy liczbie Poissona zbliżonej do 0,5 materiał staje się praktycznie nieściśliwy. Element o niskim rzędzie interpolacji nie potrafi jednocześnie spełnić warunku stałej objętości i odwzorować deformacji postaciowej, więc usztywnia się drastycznie. Środkiem zaradczym jest sformułowanie B-bar: część objętościowa macierzy B zostaje zastąpiona jej wartością uśrednioną po elemencie.

B̄ = B_dev + (1/V)·∫ B_vol dV(3.3)

Ścinanie pasożytnicze

Element trójliniowy nie ma w polu przemieszczeń członu kwadratowego, więc poddany zginaniu nie zgina się, tylko ścina. Efekt narasta z wydłużeniem elementu — przy stosunku boków 4:1 potrafi zawyżyć sztywność kilkukrotnie. Lekarstwem są mody niezgodne Wilsona: trzy dodatkowe funkcje bąblowe dokładające brakującą krzywiznę.

u = N·uₑ + G·α , gdzie G ~ (1 − ξ²), (1 − η²), (1 − ζ²)(3.4)

Dziewięć wewnętrznych stopni swobody α (trzy funkcje × trzy kierunki) nie trafia do układu globalnego — usuwa je kondensacja statyczna wykonana wewnątrz elementu:

α = −K_αα⁻¹·K_uαᵀ·u Kₑ = K_uu − K_uα·K_αα⁻¹·K_uαᵀ(3.5)

Element pozostaje więc ośmiowęzłowy z punktu widzenia solvera. Istotny szczegół: pochodne funkcji bąblowych przelicza się na współrzędne globalne z poprawką Taylora–Beresforda–Wilsona, biorąc jakobian ze środka elementu i skalując stosunkiem wyznaczników. Bez tej poprawki element przestaje przechodzić test łaty na siatce zniekształconej — czyli dokładnie wtedy, kiedy najbardziej go potrzebujemy.

Konsekwencja praktyczna Mody niezgodne są wyłączane w zadaniach z dużymi przemieszczeniami: ich kondensacja przy zmiennej geometrii wymagałaby iteracji wewnątrz elementu, a macierz styczna z kondensacją i siły wewnętrzne bez niej dałyby układ niespójny, w którym metoda Newtona traci zbieżność kwadratową. Do zadań zginanych w zakresie nieliniowym właściwym elementem jest TET10.

4.Modele materiałowe

4.1.Sprężystość izotropowa

Macierz konstytutywna materiału izotropowego wyraża się przez stałe Lamégo, wyliczane z modułu Younga i liczby Poissona:

λ = Eν / [(1+ν)(1−2ν)] μ = E / [2(1+ν)](4.1)
Dᵢⱼ = λ + 2μ·δᵢⱼ (i,j ≤ 3), D₄₄ = D₅₅ = D₆₆ = μ(4.2)

Konwencja Voigta przyjęta w systemie: naprężenie [σxx, σyy, σzz, σxy, σyz, σzx] jako składowe tensorowe bez mnożnika, odkształcenie [εxx, εyy, εzz, γxy, γyz, γzx] ze ścinaniem inżynierskim γ = 2ε. Przy takim zestawieniu iloczyn σ·ε jest poprawną gęstością pracy, a macierz D nie wymaga dodatkowego skalowania.

4.2.Plastyczność J2 i powrót promienisty

Model plastyczności opiera się na warunku Hubera–Misesa z wzmocnieniem mieszanym — izotropowym i kinematycznym. Powierzchnia plastyczności ma postać:

f(σ, α, εᵖ) = ‖s − α‖ − √(2/3)·(σ_y + H_iso·εᵖ)(4.3)

gdzie s jest dewiatorem naprężenia, α — naprężeniem resztkowym wzmocnienia kinematycznego, a εᵖ — zastępczym odkształceniem plastycznym. Całkowanie prowadzi się algorytmem powrotu promienistego: najpierw liczymy naprężenie próbne przy zamrożonym odkształceniu plastycznym, a jeżeli wypada poza powierzchnią plastyczności — rzutujemy je z powrotem wzdłuż kierunku dewiatora. Dla wzmocnienia liniowego mnożnik plastyczny wychodzi wprost, bez iteracji:

Δγ = f_próbne / [ 2μ + (2/3)(H_iso + H_kin) ](4.4)
σ = σ_próbne − 2μ·Δγ·n , n = (s − α)/‖s − α‖(4.5)

Kluczem do zbieżności całej analizy nieliniowej jest moduł styczny spójny z algorytmem (Simo–Taylor), a nie ciągły moduł sprężysto-plastyczny. Tylko on zachowuje kwadratową zbieżność metody Newtona:

D^ep = κ·1⊗1 + 2μθ·I_dev − 2μθ̄·n⊗n θ = 1 − 2μΔγ/‖s−α‖ , θ̄ = 1/[1 + (H_iso+H_kin)/(3μ)] − (1 − θ)(4.6)
Zakres stosowalności Sformułowanie jest małoodkształceniowe. Dla metali, gdzie odkształcenia plastyczne liczy się w procentach, jest właściwe. Przy odkształceniach rzędu dziesiątek procent — guma, duże tłoczenie — należałoby przejść na miary logarytmiczne, czego system nie obsługuje i o czym mówi wprost w wykazie ograniczeń.

4.3.Biblioteka materiałów

System zawiera bibliotekę 129 gatunków w czternastu grupach — od stali konstrukcyjnych, przez stopy lekkie i tworzywa, po ceramikę i materiały budowlane. Każdy wpis niesie komplet dziewięciu właściwości, których używa solver, wymienionych w tabeli 4.1.

Tabela 4.1. Właściwości karty materiałowej i ich rola w obliczeniach
WłaściwośćJednostkaGdzie decyduje o wyniku
Moduł Younga EGPamacierz konstytutywna — każda analiza
Liczba Poissona ν—macierz konstytutywna; przy ν → 0,5 blokada objętościowa
Gęstość ρkg/m³drgania własne, dynamika, ciężar własny
Granica plastyczności ReMPawspółczynnik bezpieczeństwa, uplastycznienie
Wytrzymałość RmMPapoprawki na naprężenie średnie w analizie zmęczeniowej
Moduł wzmocnienia HMPanachylenie krzywej za granicą plastyczności
Rozszerzalność α10⁻⁶/Knaprężenia termiczne, sprzężenie termomechaniczne
Przewodność λW/(m·K)przewodnictwo ustalone i nieustalone
Ciepło właściwe cJ/(kg·K)pojemność cieplna w zadaniach nieustalonych
Dlaczego komplet, a nie tylko właściwości sprężyste Właściwość pominięta w przekazaniu do solvera nie powoduje błędu — zostaje zastąpiona wartością domyślną. Zadanie policzy się do końca i zwróci wynik, tyle że dla innego materiału niż wybrany. Przy pominiętej rozszerzalności naprężenia termiczne wychodzą dokładnie zerowe, co wygląda jak poprawny wynik zadania bez obciążenia cieplnego. Jest to klasa błędu gorsza od awarii, bo nie zostawia śladu; dlatego przeliczenie karty na właściwości silnika jest w systemie w jednym miejscu i obejmuje wszystkie dziewięć pozycji.

Wartości są typowe dla gatunku, zebrane z norm przedmiotowych i kart katalogowych — nie są wynikami badań konkretnej partii wsadowej. Rzeczywista granica plastyczności wyrobu bywa wyższa od normowej o kilkanaście procent, a właściwości tworzyw zależą od wilgotności, prędkości odkształcania i kierunku wtrysku silniej niż od samego gatunku. Do obliczeń trafiających do dokumentacji dane bierze się z karty dostawcy — i system mówi to wprost w panelu materiałów, zamiast pozwalać traktować bibliotekę jako źródło danych odbiorowych.

Osobną wartość ma ostrzeżenie przypisane do materiału. Żeliwo szare, szkło, ceramika i beton są materiałami kruchymi o różnej wytrzymałości na rozciąganie i ściskanie — hipoteza Hubera-Misesa, którą system pokazuje jako pole domyślne, jest dla nich kryterium niewłaściwym i należy je oceniać naprężeniem głównym σ₁. Kompozyty i drewno są ortotropowe, więc podane wartości dotyczą kierunku włókien, a wynik izotropowy jest miarodajny wyłącznie dla obciążenia zgodnego z tym kierunkiem. Te uwagi są częścią karty materiału i przechodzą do raportu z analizy — bo błąd interpretacji poprawnie policzonego wyniku jest w praktyce częstszy od błędu obliczeń.

4.4.Właściwości reologiczne

Reologia opisuje zachowanie materiału rozłożone w czasie: pełzanie, czyli narastanie odkształcenia pod stałym obciążeniem, oraz relaksację, czyli spadek naprężenia przy stałym odkształceniu. Dla stali w temperaturze pokojowej zjawiska te są pomijalne. Nie znaczy to jednak, że dotyczą wyłącznie przypadków skrajnych — przeciwnie:

System zbiera te dane w dwóch modelach:

ε̇ = A·σⁿ·exp(−Q/(R·T)) pełzanie ustalone (Norton) G(t) = G₀·[ g∞ + Σᵢ gᵢ·exp(−t/τᵢ) ] relaksacja (szereg Prony’ego)(4.7)

W prawie Nortona wykładnik n mieści się zwykle w przedziale od 3 do 8 i mówi, jak silnie prędkość pełzania rośnie z naprężeniem, a energia aktywacji Q — jak szybko rośnie ona z temperaturą. W szeregu Prony’ego udział g∞ opisuje część sprężystą, która nie relaksuje; udziały g∞ i wszystkie gᵢ muszą sumować się do jedności, co system sprawdza przy wprowadzaniu danych.

Stan wdrożenia Od wersji 1.2.0 dane reologiczne są wykorzystywane przez solver — analizy „Pełzanie" i „Lepkosprężystość" liczą i mają potwierdzenie w zestawie weryfikacyjnym. Stała A prawa Nortona jest skalibrowana tak, by w warunkach odniesienia właściwych dla materiału dawała prędkość pełzania zgodną z danymi doświadczalnymi; przyjęcie wartości z jednej tablicy dla wszystkich gatunków dawało wyniki mylące o rzędy wielkości. Wybór materiału o istotnej reologii zmienia zatem wynik, a karta materiału i raport nadal mówią wprost, że dla obciążeń długotrwałych wynik analizy czysto sprężystej byłby optymistyczny.

Użytkownik może dodać własny materiał, a formularz wymaga deklaracji modelu reologicznego. Odpowiedź „sprężysty, bez efektów reologicznych" jest dopuszczalna i dla stali konstrukcyjnej poprawna — musi być jednak wybrana świadomie, a nie pominięta przez przeoczenie, bo dla tworzywa, cynku czy ołowiu byłaby nieprawdziwa.

5.Rozwiązywanie układów równań

5.1.Macierz rzadka i jej wzorzec

Macierz sztywności zadania o stu tysiącach stopni swobody miałaby w postaci pełnej 10¹⁰ wyrazów, czyli 80 GB. Niezerowych jest wśród nich rzędu kilku milionów. System przechowuje więc wyłącznie je, w formacie CSR (compressed sparse row): tablica wartości, tablica indeksów kolumn i tablica wskaźników początków wierszy.

Istotne jest rozdzielenie wzorca od wartości. Wzorzec — który wyraz jest niezerowy — zależy wyłącznie od topologii siatki, więc liczy się raz. Wartości zmieniają się w każdej iteracji Newtona i w każdym kroku czasowym. Dzięki temu rozdziałowi zadanie nieliniowe nie płaci za analizę struktury przy każdym kroku obciążenia, a sesja licząca kilka analiz na jednej siatce buduje wzorzec tylko przy pierwszej.

5.2.Faktoryzacja LDLᵀ

Macierz sztywności jest symetryczna i — po nałożeniu wystarczających więzów — dodatnio określona. Rozkład Choleskiego byłby dla niej naturalny, ale wymaga pierwiastkowania, a przy zadaniach wyboczeniowych macierz bywa nieokreślona. Stosujemy więc rozkład LDLᵀ:

K = L·D·Lᵀ , L — dolna trójkątna z jednostkową przekątną, D — diagonalna(5.1)

Zaimplementowano wariant „up-looking" Timothy'ego Davisa, w którym kolumna czynnika powstaje z przejścia w górę po drzewie eliminacji — dzięki czemu wzorzec niezerowych wyrazów wychodzi sam, bez wyszukiwania. Rozwiązanie układu sprowadza się do trzech podstawień:

L·y = b → D·z = y → Lᵀ·x = z(5.2)

Faktoryzacja daje przy okazji informację o wartości dla całego systemu: liczbę ujemnych wyrazów przekątnej D. Zgodnie z twierdzeniem Sylvestera o bezwładności jest to liczba wartości własnych leżących poniżej przesunięcia — używamy jej do sprawdzenia, czy solver zagadnienia własnego nie zgubił żadnej postaci. Odpowiadający temu test jest w zestawie weryfikacyjnym pod nazwą „Bezwładność macierzy".

5.3.Przenumerowanie

Podczas faktoryzacji w czynniku L pojawiają się wyrazy niezerowe tam, gdzie macierz pierwotna miała zera. To zjawisko — wypełnienie — decyduje o zapotrzebowaniu na pamięć i czas. Jego rozmiar zależy dramatycznie od kolejności eliminacji niewiadomych, a dobór tej kolejności jest osobnym zagadnieniem kombinatorycznym. System stosuje algorytm przybliżonego minimalnego stopnia, a skuteczność przenumerowania jest przedmiotem testu „Wpływ przenumerowania na wypełnienie".

5.4.Metoda gradientów sprzężonych

Powyżej progu 60 000 stopni swobody czynnik LDLᵀ przestaje mieścić się wygodnie w pamięci przeglądarki. System przechodzi wtedy automatycznie na metodę gradientów sprzężonych z prekondycjonerem niepełnego rozkładu Choleskiego IC(0), która nie tworzy wypełnienia wcale — kosztem tego, że rozwiązanie jest przybliżone z zadaną tolerancją i że każdy nowy wektor prawej strony wymaga pełnej iteracji od nowa.

rₖ₊₁ = rₖ − αₖ·A·pₖ , pₖ₊₁ = M⁻¹rₖ₊₁ + βₖ·pₖ(5.3)

Próg przełączenia dobrano z pomiarów, nie z teorii. Zgodność obu dróg — bezpośredniej i iteracyjnej — jest sprawdzana testem „Gradienty sprzężone wobec solvera bezpośredniego".

5.5.Próg wyboru solvera zależy od tego, ile razy się go użyje

Wybór między rozkładem bezpośrednim a metodą iteracyjną opisuje się zwykle jednym progiem liczby niewiadomych. Jest to uproszczenie, które w tym systemie okazało się mylące, i warto powiedzieć dlaczego, bo przyczyna jest ogólna.

Rozkład LDLᵀ ma dwa koszty o zupełnie różnym charakterze: jednorazową faktoryzację i wielokrotne podstawienie wsteczne. Gradienty sprzężone mają jeden koszt, ponoszony za każdym razem od nowa. Próg dobrany dla statyki — gdzie układ rozwiązuje się raz — jest więc dobrany dla najgorszego możliwego przypadku faktoryzacji i najlepszego dla metody iteracyjnej.

Tabela 5.2. Koszt obu dróg — wspornik HEX8, 60 858 stopni swobody
EtapRozkład LDLᵀGradienty sprzężone
Przygotowanie280 s, 784 MB wypełnienia0,5 s (prekondycjoner IC(0))
Jedno rozwiązanie układu0,53 s8,5 s (212 iteracji)
Statyka — jedno rozwiązanie281 s9 s
Drgania własne — około 180 rozwiązań376 s1530 s
Wniosek z tabeli 5.2 Ta sama macierz, ta sama maszyna, dwa przeciwne rozstrzygnięcia. O wyborze solvera decyduje nie rozmiar zadania, lecz liczba rozwiązań, których wymaga analiza. Iteracja podprzestrzeni potrzebuje jednego rozwiązania na każdy wektor bazy w każdej iteracji — kilkuset na całe zadanie — więc faktoryzacja amortyzuje się już przy drugim.

Konsekwencji praktycznej nie da się jednak wyciągnąć wprost, bo drugą granicą jest pamięć. Wypełnienie rośnie dla siatek przestrzennych mniej więcej jak n4/3: przy stu tysiącach stopni swobody to już półtora giga, czego karta przeglądarki nie udźwignie. Przy takich siatkach żadna droga nie jest dobra i jedyną uczciwą odpowiedzią jest powiedzenie tego użytkownikowi.

Dlatego zadanie własne powyżej progu robi trzy rzeczy, których nie robiło wcześniej: mierzy czas pierwszego rozwiązania i podaje z niego rzut czasu całości, zgłasza kolejne rozwiązania w logu, oraz ma budżet czasu, po którym zwraca częstości z ostatniej ukończonej iteracji. Wynik częściowy jest przy tym pełnowartościową informacją, a nie awaryjnym zastępnikiem: zbieżność iteracji podprzestrzeni jest jednostronna, więc częstości przerwanego zadania są oszacowaniem od góry, a nie liczbą o nieznanym błędzie. Bez tego zadanie na gęstej siatce wyglądało po prostu na zawieszony program — i było to jedyne, co użytkownik mógł o nim wywnioskować.

6.Zagadnienie własne

Drgania własne i wyboczenie liniowe sprowadzają się do uogólnionego zagadnienia własnego o tej samej postaci algebraicznej, choć o zupełnie różnym znaczeniu fizycznym:

K·φ = ω²·M·φ drgania własne (M dodatnio określona) K·φ = −λ·K_g·φ wyboczenie liniowe (K_g bywa nieokreślona)(6.1)

Interesuje nas kilka najniższych par własnych z zadania o dziesiątkach tysięcy niewiadomych, więc metody wyznaczające całe widmo nie wchodzą w grę. Zastosowano iterację podprzestrzeni w ujęciu Bathego: zamiast szukać każdej postaci osobno, prowadzimy blok wektorów naraz. Mnożenie przez K⁻¹ tłumi składowe o wysokich wartościach własnych, a rzut Rayleigha–Ritza na bieżącą podprzestrzeń wydobywa z niej najlepsze przybliżenia:

1. Y = K⁻¹·M·X iteracja odwrotna 2. ortonormalizacja Y 3. A_r = Yᵀ·K·Y , B_r = Yᵀ·M·Y rzut na podprzestrzeń 4. rozwiąż małe zadanie A_r·q = θ·B_r·q 5. X = Y·q nowa baza(6.2)

Rozmiar bloku jest większy od liczby szukanych postaci — zgodnie z zaleceniem Bathego min(2q, q+8). Zapas jest tu konieczny, nie zalecany: bez niego iteracja gubi postacie o bliskich sobie częstościach, a takie występują wszędzie tam, gdzie konstrukcja ma symetrię. Przykład z punktu 13.3 pokazuje to wprost — pręt o przekroju kwadratowym ma dwie niemal identyczne postacie wyboczenia, po jednej na każdą płaszczyznę.

Przy wyboczeniu macierz po prawej stronie bywa nieokreślona, co uniemożliwia rozkład Choleskiego w małym zadaniu rzutowanym. Rozwiązanie jest proste: zamieniamy strony, bo macierzą dodatnio określoną jest zawsze macierz sztywności, i odwracamy otrzymane wartości własne.

7.Analizy nieliniowe

Nieliniowość geometryczna

Przy dużych przemieszczeniach liniowa miara odkształcenia przestaje być poprawna — obrót ciała sztywnego generowałby w niej naprężenia. Stosujemy sformułowanie Lagrange’a całkowite: odniesieniem pozostaje konfiguracja początkowa, miarą odkształcenia jest tensor Greena–Lagrange’a, a miarą naprężenia — drugi tensor Pioli–Kirchhoffa.

F = I + ∂u/∂X gradient deformacji E = ½(FᵀF − I) odkształcenie Greena-Lagrange’a S = D : E drugi tensor Pioli-Kirchhoffa(7.1)

Sprawdzianem poprawności jest test niezmienniczości: pręt obrócony o 30° jako ciało sztywne musi wykazywać zerowe naprężenie. Zestaw weryfikacyjny podaje przy tym liczbę, która najlepiej uzasadnia potrzebę tego sformułowania — miara małych odkształceń daje przy samym obrocie 21,6 GPa naprężenia zastępczego, sformułowanie nieliniowe: 2·10⁻¹⁶ GPa.

Metoda Newtona–Raphsona

Zadanie nieliniowe rozwiązujemy przyrostowo, szukając w każdym kroku obciążenia zera residuum:

r(u) = F_zew − f_wew(u) = 0 K_t·Δu = r , u ← u + Δu(7.2)

Sterowanie obciążeniem uzupełniono automatycznym skracaniem kroku: gdy iteracja się nie zbiega, przyrost jest połowiony, a gdy zbiega w trzech iteracjach lub mniej — wydłużany. Jest to prostsze i pewniejsze niż zgadywanie z góry, ile kroków wystarczy. Norma residuum odnoszona jest do obciążenia, więc jest bezwymiarowa i niezależna od jednostek.

Metoda długości łuku

Sterowanie obciążeniem nie przejdzie przez punkt graniczny: w chwili, gdy konstrukcja traci nośność, macierz styczna staje się osobliwa i metoda się rozbiega. Zadania z przeskokiem — płaskie łuki, powłoki, zatrzaski — wymagają potraktowania mnożnika obciążenia jako dodatkowej niewiadomej i uzupełnienia układu równaniem więzu:

‖Δu‖² + ψ²·Δλ²·q̄ᵀq̄ = Δl²(7.3)

Kontakt

Kontakt realizowany jest metodą funkcji kary z warunkiem nieprzenikania i tarciem Coulomba. Stan tarcia — przyczepność albo poślizg — zapamiętywany jest dopiero po zbieżności kroku, ponieważ w trakcie iteracji węzeł może wielokrotnie przechodzić między tymi stanami. Tarcie działa wiarygodnie w zakresie przyczepności; poślizg właściwy bywa niezbieżny, co jest wymienione w wykazie ograniczeń.

8.Dynamika

Równanie ruchu układu dyskretnego ma postać, do której sprowadzają się wszystkie analizy dynamiczne — różnią się one wyłącznie sposobem jego rozwiązania:

M·ü + C·u̇ + K·u = F(t)(8.1)

Macierz mas

System stosuje macierz mas skupionych, otrzymaną metodą HRZ: proporcje bierze się z przekątnej macierzy spójnej, a następnie skaluje tak, by ich suma dała dokładnie masę elementu. Macierz diagonalna pozwala odwracać masę bez rozwiązywania układu, co jest warunkiem opłacalności całkowania jawnego. Poprawność masy jest sprawdzana wprost — test porównuje masę modelu z iloczynem ρ·V i wymaga zgodności do 10⁻⁹.

Odpowiedź harmoniczna

Dla wymuszenia sinusoidalnego o ustalonej częstości rozwiązanie ustalone znajdujemy w dziedzinie zespolonej, bez całkowania po czasie:

(K − ω²M + iωC)·u = F(8.2)

Sprawdzianem jest wzmocnienie rezonansowe: przy tłumieniu ζ amplituda w rezonansie powinna być 1/(2ζ) razy większa od statycznej. Zestaw weryfikacyjny odtwarza tę zależność z błędem 0,001%.

Całkowanie niejawne — metoda Newmarka

Przebieg czasowy liczony jest metodą Newmarka z parametrami γ = ½ i β = ¼ (reguła średniego przyspieszenia). Schemat jest bezwarunkowo stabilny i nie wprowadza tłumienia sztucznego, więc krok czasowy dobiera się do dokładności, a nie do stabilności.

u_{n+1} = uₙ + Δt·u̇ₙ + Δt²[(½−β)üₙ + β·ü_{n+1}] u̇_{n+1} = u̇ₙ + Δt[(1−γ)üₙ + γ·ü_{n+1}](8.3)

Test sprawdza klasyczny wynik teoretyczny: nagłe przyłożenie obciążenia stałego daje ugięcie dwukrotnie większe od statycznego. Solver odtwarza wartość 1,99 wobec 2,00 z teorii.

Całkowanie jawne

Przy zjawiskach szybkozmiennych opłaca się schemat różnic centralnych: nie wymaga rozwiązywania układu równań, bo macierz mas jest diagonalna. Cena to stabilność warunkowa — krok czasowy musi być mniejszy od czasu przebiegu fali przez najmniejszy element (warunek Couranta):

Δt < Δt_kr = L_min / c , c = √(E/ρ)(8.4)

Silnik pilnuje tego warunku sam i raportuje zarówno krok użyty, jak i graniczny. Zgodność z całkowaniem niejawnym potwierdzono z dokładnością 0,6%.

Spektrum odpowiedzi i drgania losowe

Dla obciążeń sejsmicznych i losowych całkowanie po czasie jest niepotrzebnie kosztowne. Metoda spektrum odpowiedzi składa wkłady postaci własnych, a analiza drgań losowych operuje gęstością widmową mocy:

u_max = Σᵢ Γᵢ · Sd(fᵢ) · φᵢ (kombinacja SRSS albo CQC) σ_rms = √( ∫ |H(f)|² · PSD(f) df ) wzór Milesa jako odniesienie(8.5)

Wartość skuteczna z analizy drgań losowych zgadza się ze wzorem Milesa z błędem 0,6%.

9.Pola skalarne i sprzężenia

Przewodnictwo ciepła, akustyka i filtracja prowadzą do formalnie tego samego zadania: jednego stopnia swobody w węźle i macierzy typu „sztywności" zbudowanej z gradientów funkcji kształtu. System rozwiązuje je wspólnym modułem pola skalarnego, różnicując wyłącznie znaczenie współczynników i warunków brzegowych.

∇·(λ∇T) + q = 0 przewodnictwo ustalone (Fourier) C·Ṫ + K_T·T = Q przewodnictwo nieustalone ∇²p + k²p = 0 akustyka (Helmholtz), k = ω/c v = −(k/μ)·∇p filtracja (Darcy)(9.1)

Przewodnictwo nieustalone całkowane jest wstecznym Eulerem — schematem bezwarunkowo stabilnym, co przy zadaniach cieplnych jest ważniejsze od rzędu dokładności, bo stałe czasowe stygnięcia bywają o rzędy wielkości różne w jednym modelu.

Naprężenia termiczne

Odkształcenie termiczne odejmowane jest od całkowitego przed wyznaczeniem naprężenia:

σ = D : (ε − α·ΔT·I)(9.2)

Dla pręta całkowicie skrępowanego daje to klasyczny wynik σ = −E·α·ΔT, który system odtwarza dokładnie — patrz przykład 13.4. Sprzężenie termomechaniczne jest sekwencyjne: najpierw rozwiązywane jest pole temperatury, potem zadanie mechaniczne. Odkształcenie nie wpływa zwrotnie na temperaturę, co dla zdecydowanej większości zadań inżynierskich jest założeniem poprawnym.

Wypełnianie formy wtryskowej

Przepływ tworzywa w cienkościennym gnieździe formy opisuje przybliżenie Hele-Shawa. Wynika ono z pominięcia bezwładności wobec sił lepkich — liczba Reynoldsa dla stopionego polimeru jest rzędu 10⁻³ — oraz z założenia, że grubość ścianki jest znacznie mniejsza od pozostałych wymiarów wypraski. Zadanie sprowadza się wtedy do jednego równania na ciśnienie, a więc do tego samego modułu pola skalarnego:

∇·(S·∇p) = 0 równanie ciśnienia S = h²/(12η) przewodność kanału η(γ̇) = η₀ / [1 + (η₀·γ̇/τ*)^(1−n)] lepkość — model Crossa(9.3)

Wykładnik przy grubości wymaga komentarza, bo w piśmiennictwie występuje jako h³. Sześcian jest właściwy dla sformułowania powierzchniowego, w którym wypraskę odwzorowuje siatka dwuwymiarowa, a grubość wchodzi wyłącznie przez współczynnik: mieści on wtedy w sobie zarówno paraboliczny profil prędkości po grubości, jak i pole przekroju. W systemie równanie rozwiązywane jest na siatce przestrzennej, gdzie całkowanie objętościowe uwzględnia przekrój kanału samo z siebie; pozostawienie h³ liczyłoby grubość dwa razy. Pomyłka nie jest niewinna — dla ścianki 2,5 mm zawyżała ciśnienie wtrysku o dwa rzędy wielkości.

Czoło strugi wyznaczane jest z rozkładu ciśnienia: węzły porządkuje się według malejącego ciśnienia i napełnia w tej kolejności objętościami do nich przypisanymi, aż do wyczerpania strumienia. Daje to czas dopłynięcia w każdym węźle, a z niego dwie informacje, dla których tę analizę się w ogóle wykonuje. Linie łączenia powstają tam, gdzie sąsiednie elementy mają kierunki przepływu rozbieżne o więcej niż 120° — czyli tam, gdzie dwie strugi spotykają się czołami. Kryterium oparte na samym czasie dopłynięcia jest zwodnicze: wskazuje każdą izochronę, a więc setki miejsc także tam, gdzie wlew jest jeden i żadna linia łączenia powstać nie może. Miejsca zamknięcia powietrza to lokalne maksima czasu wypełnienia — obszary napełniane jako ostatnie, z których powietrze nie ma już którędy ujść.

Szybkość ścinania przyjmowana jest jako wartość charakterystyczna γ̇ ≈ 6·v/h, wyznaczona z prędkości średniej przy wlocie, a nie z rozwiązania. Sprzężenie lepkości z polem prędkości i temperatury należy do analizy pełnej; w tej wersji lepkość jest jedną liczbą na całą wypraskę. Rozkład ciśnienia wychodzi zatem ciśnieniem w samym gnieździe — bez oporu przewężki, kanałów doprowadzających i dyszy, które w rzeczywistej wtryskarce odpowiadają za większą część wskazania manometru. Do porównania wariantów rozmieszczenia wlewów jest to wystarczające, do doboru nastaw maszyny — nie.

Hipersprężystość

Guma i elastomery wymagają opisu innego rodzaju niż metale. Naprężenie nie jest liniową funkcją odkształcenia w żadnym zakresie — wyprowadza się je z energii odkształcenia sprężystego. System używa modelu neo-Hooke’a w postaci ściśliwej:

W = (μ/2)·(I₁ − 3) − μ·ln J + (λ/2)·(ln J)² S = μ·(I − C⁻¹) + λ·ln J·C⁻¹ ℂ = λ·(C⁻¹ ⊗ C⁻¹) + (μ − λ·ln J)·(C⁻¹ ⊙ C⁻¹)(9.4)

Wybór tej postaci — zamiast częstszej w piśmiennictwie, z członem objętościowym (κ/2)(J−1)² — nie jest obojętny. Postać powyższa daje przy małych odkształceniach dokładnie stałe Lamégo λ i μ, więc ten sam materiał policzony liniowo i hipersprężyście zgadza się w zakresie, w którym oba modele obowiązują. Postać z (J−1)² różni się w module objętościowym o 2μ/3; rozjazd byłby widoczny już przy odkształceniu rzędu procenta i nie dałoby się rozstrzygnąć, czy bierze się z modelu, czy z błędu implementacji.

Ograniczeniem jest ściśliwość. Guma ma ν sięgające 0,4995, a elementy przemieszczeniowe blokują się objętościowo w tym zakresie: sztywność objętościowa przewyższa postaciową o cztery rzędy wielkości i zadanie staje się źle uwarunkowane. Sformułowanie mieszane, w którym ciśnienie jest osobną niewiadomą, nie zostało zaimplementowane — analiza sprawdza więc liczbę Poissona i mówi wprost, że wynik będzie za sztywny, zamiast zwrócić go bez komentarza. Drugim ograniczeniem jest sam model: neo-Hooke odtwarza krzywą rozciągania gumy do mniej więcej 100% wydłużenia, wyżej rzeczywisty materiał usztywnia się gwałtownie i potrzebny jest model Ogdena albo Arrudy-Boyce’a.

Napięcie wstępne śrub

Napięcia wstępnego nie da się zadać jako obciążenia. Siła w śrubie jest wynikiem tego, że trzpień skrócono dokręceniem, a złącze się temu opiera; jej wartość zależy od podatności trzpienia i ściskanych części:

F = δ / (1/k_ś + 1/k_cz) Φ = k_ś / (k_ś + k_cz)(9.5)

Przyłożenie pary sił ±F do łba i nakrętki jest błędem podwójnym: pomija sprężystość złącza, a przy późniejszym obciążeniu roboczym siła w śrubie nie zmienia się wcale — gdy tymczasem cały sens obliczania złącza polega na tym, żeby zobaczyć, jak ona rośnie i kiedy złącze się rozwiera.

Rozwiązanie idzie przez odkształcenie wstępne. Elementom trzpienia narzucany jest jednoosiowy skurcz ε₀ = −e·(n ⊗ n) — wyłącznie wzdłuż osi śruby, bez zmiany wymiarów poprzecznych, inaczej niż przy odkształceniu cieplnym, które jest objętościowe. Daje to zastępczy wektor obciążenia ∫Bᵀ·D·ε₀·dV, a naprężenie w trzpieniu wynosi σ = D·(ε(u) − ε₀). Zadanie jest liniowe względem e, więc jedno przejście próbne wystarcza do wyznaczenia współczynnika skali; drugie daje siłę żądaną dokładnie, a nie iteracyjnie. Współczynnik podatności złącza Φ wyznaczany jest z różnicy dwóch policzonych stanów, a nie ze wzorów tablicowych na sztywność ściskanego stożka — model bryłowy zna rzeczywisty rozkład sztywności, który te wzory tylko przybliżają.

Przebieg czasowy nieliniowy

Przebieg liniowy rozwiązuje równanie ruchu przy macierzy K stałej przez cały czas trwania zjawiska. Założenie to przestaje obowiązywać dokładnie tam, gdzie analiza dynamiczna jest najbardziej potrzebna: przy uderzeniu z uplastycznieniem, przy dużych ugięciach z usztywnieniem błonowym i przy zamykaniu się szczeliny kontaktowej. W każdym z tych przypadków wynik liniowy jest gładki, wiarygodnie wyglądający i nieprawdziwy — i nic tego nie sygnalizuje.

Całkowanie idzie schematem Newmarka w postaci przemieszczeniowej, z iteracją Newtona-Raphsona wewnątrz każdego kroku czasowego:

R = F_zew(t) − F_wew(u) − M·a_{n+1} − C·v_{n+1} K_ef = K_styczna(u) + M/(β·Δt²) + C·γ/(β·Δt)(9.6)

Macierz tłumienia liczona jest na sztywności początkowej, nie stycznej. Styczna przy uplastycznieniu maleje, a przy przejściu przez punkt graniczny zmienia znak; tłumienie policzone na niej rosłoby i malało razem z nią, a w skrajnym przypadku dostarczałoby energii zamiast ją rozpraszać. Tłumienie konstrukcyjne jest własnością konstrukcji, nie jej chwilowego stanu.

Podmodelowanie

Naprężenie w karbie zależy od promienia zaokrąglenia, a promień bywa pięćdziesiąt razy mniejszy od gabarytu części. Siatka odwzorowująca karb wiernie ma w całej części tyle elementów, że zadania nie da się policzyć; siatka, którą da się policzyć, pokazuje w karbie wartość zależną od tego, gdzie akurat wypadł węzeł.

Podmodelowanie rozdziela te wymagania. Model globalny liczy rozkład sztywności zgrubną siatką, podmodel obejmuje sam karb z siatką dowolnie gęstą, a warunki na powierzchniach cięcia bierze z rozwiązania globalnego. Podstawą jest zasada św. Wenanta: rozkład naprężenia z dala od zaburzenia zależy tylko od wypadkowej. Przemieszczenia przenoszone są funkcjami kształtu elementu globalnego, po wyznaczeniu współrzędnych naturalnych iteracją Newtona na odwzorowaniu x(ξ) = Σ Nₐ(ξ)·xₐ — interpolacja odległościowa, choć prostsza, nie odtwarza nawet ruchu sztywnego.

Warunek „cięcie dostatecznie daleko od karbu" jest jedyną rzeczą, którą musi rozstrzygnąć człowiek, i decyduje o wiarygodności całości. Dlatego analiza sprawdza go po swojemu: porównuje naprężenie na powierzchniach cięcia policzone w obu modelach. Bez tej kontroli podmodelowanie daje wynik gładki i dowolnie zły. Osobną pułapką jest wykrywanie samej powierzchni cięcia: rozstrzyga o niej ściana, nie pojedynczy węzeł, bo węzeł na obwodzie cięcia leży jednocześnie na wolnej powierzchni bocznej i klasyfikowany osobno wypadłby z cięcia, zostawiając podmodel podparty tylko w środku ściany.

9.5.Redukcja modelu: podstruktury i CMS

Model złożenia rośnie szybciej niż moc obliczeniowa, a pytanie bywa niezmienne: jakie są pierwsze częstości i jak konstrukcja odpowiada na wymuszenie. Odpowiedź dynamiczna leży w przestrzeni rozpiętej przez kilka najniższych postaci drgań — reszta stopni swobody potrzebna jest do tego, żeby te postacie policzyć, nie do tego, żeby je opisać. Redukcja wymienia więc miliony niewiadomych na kilkadziesiąt współrzędnych uogólnionych o tej samej treści fizycznej.

Kondensacja statyczna i jej granica

Punktem wyjścia jest podział stopni swobody na brzegowe (te, którymi podstruktura łączy się z resztą) i wewnętrzne. Kondensacja Guyana wyraża wnętrze przez brzeg:

u_w = −K_ww⁻¹·K_wb·u_b K_kond = K_bb − K_bw·K_ww⁻¹·K_wb(9.7)

Jest to zależność ścisła, jeżeli obciążenie przyłożone jest wyłącznie do brzegu: wnętrze nie ma wtedy własnej prawej strony, więc równanie równowagi wnętrza daje dokładnie wzór (9.7). Ta własność jest sprawdzalna bez tolerancji i w zestawie weryfikacyjnym sprawdzana właśnie tak — przemieszczenia modelu zredukowanego zgadzają się z pełnym z błędem 3·10⁻¹⁰ %, czyli na poziomie zaokrągleń podwójnej precyzji.

W dynamice kondensacja jest natomiast przybliżeniem, i to jednostronnym: pomija bezwładność wnętrza, więc konstrukcja wychodzi za sztywna, a częstości zawyżone. Metoda, która myli się zawsze w tę samą stronę, jest w obliczeniach wytrzymałościowych gorsza od mylącej się losowo — nie daje się skorygować zapasem, bo błąd rośnie z numerem postaci w sposób zależny od zadania.

Baza Craiga-Bamptona

Craig i Bampton dokładają do postaci więzowych postacie własne o zamocowanym brzegu — rozwiązania (K_ww − ω²M_ww)φ = 0 przy u_b = 0. Baza redukcji ma wtedy dwa rodzaje kolumn o wyraźnie rozdzielonych zadaniach:

┌ ┐ ┌ ┐ ┌ ┐ │ u_b │ = │ I 0 │ │ u_b │ Ψ — postacie więzowe (statyka brzegu) │ u_w │ │ Ψ Φ │ │ q │ Φ — postacie własne wnętrza └ ┘ └ ┘ └ ┘ K_r = TᵀKT M_r = TᵀMT(9.8)

Pierwszy blok przenosi ruch brzegu dokładnie tak, jak robi to statyka. Drugi dokłada zdolność wnętrza do drgania niezależnie od brzegu — czyli dokładnie to, czego kondensacji brakuje.

Zbieżność jest jednostronna i tym razem jest to zaletą: baza jest podprzestrzenią przestrzeni pełnej, a iloraz Rayleigha na podprzestrzeni nie schodzi poniżej minimum, więc każda częstość zredukowana jest górnym oszacowaniem dokładnej. Wynik ma więc znany kierunek błędu, a dokładanie postaci wnętrza może go tylko zmniejszyć. Test sprawdza to wprost: częstość, która wyszłaby niższa od dokładnej, oznaczałaby błąd w rzutowaniu, a nie lepsze przybliżenie.

Tabela 9.2. Wpływ liczby postaci wnętrza — wspornik, 528 stopni swobody, brzeg 48 stopni
Postaci wnętrzaWspółrzędnychRedukcjaBłąd częstości 1Błąd częstości 3
0 (sam Guyan)4890,9%0,49%44,85%
25090,5%0,04%0,39%
55390,0%0,008%0,12%
206887,1%0,0002%0,004%
Wniosek z tabeli 9.2 Dwie postacie wnętrza — koszt dwóch procent objętości modelu zredukowanego — zbijają błąd trzeciej częstości z czterdziestu pięciu procent do czterech dziesiątych. To jest cała różnica między kondensacją statyczną a syntezą składowych postaci i powód, dla którego domyślną wartością w interfejsie jest osiem, a nie zero.

Ograniczeniem obecnej wersji jest to, że redukowana jest jedna podstruktura. Superelement powstaje i jego macierze są zwracane w całości, ale sklejenie dwóch takich elementów po wspólnym brzegu wymaga więzów wielopunktowych, których model jeszcze nie ma. Analiza jest więc redukcją struktury, a nie montażem złożenia z klocków — i tak jest opisana w interfejsie, zamiast obiecywać drugie.

10.Zmęczenie i mechanika pękania

Analizy zmęczeniowe nie rozwiązują nowego zadania brzegowego — interpretują policzone wcześniej pole naprężeń. Ich wynikiem jest liczba cykli, a nie rozkład przestrzenny, co ma swoje odzwierciedlenie w interfejsie: dla tych analiz moduł mapy wyników jest wyłączany, bo nie ma czego kolorować.

Trwałość wysokocyklowa — krzywa Basquina

σₐ = σ′f · (2N)^b(10.1)

Wpływ naprężenia średniego uwzględniany jest jedną z trzech poprawek — Goodmana, Gerbera albo Soderberga — a sumowanie uszkodzeń regułą Palmgrena–Minera:

Goodman: σₐ/σ_f + σ_m/R_m = 1 Gerber: σₐ/σ_f + (σ_m/R_m)² = 1 Soderberg: σₐ/σ_f + σ_m/R_e = 1 Miner: D = Σ nᵢ/Nᵢ ≤ 1(10.2)

Trwałość niskocyklowa — Coffin–Manson

Δε/2 = (σ′f/E)·(2N)^b + ε′f·(2N)^c(10.3)

Równania (10.3) nie da się rozwiązać względem N w postaci zamkniętej. System stosuje metodę połowienia przedziału, doprowadzając resztę równania poniżej 10⁻⁶.

Wzrost pęknięcia — prawo Parisa

da/dN = C·(ΔK)^m , ΔK = Y·Δσ·√(πa)(10.4)

Całkowanie prowadzi się od wady początkowej do wymiaru krytycznego wyznaczonego odpornością na pękanie. Dla wykładnika m ≠ 2 istnieje rozwiązanie zamknięte, z którym wynik numeryczny zgadza się co do cyfry.

Ostrożność w interpretacji Współczynniki krzywych zmęczeniowych rzadko bywają dostępne w kartach materiałowych. Gdy użytkownik ich nie poda, system przyjmuje przybliżenie σ′f ≈ R_m + 345 MPa, powszechne dla stali — i oznacza taki wynik jako szacunkowy. Jest to założenie, nie pomiar, a różnica między nimi decyduje o tym, czy wynik wolno wpisać do dokumentacji.

11.Architektura systemu

11.1.Podział na warstwy

System dzieli się na trzy warstwy o wyraźnie rozdzielonych zadaniach. Podział ten nie jest ozdobnikiem — to on pozwala uruchomić ten sam solver w przeglądarce, w wątku roboczym i w środowisku Node bez jednej linii kodu warunkowego.

Tabela 11.1. Warstwy systemu i ich odpowiedzialność
WarstwaZawartośćZależności
Silnik TOMes®solver, elementy, analizy, siatkowanieżadne
Aplikacjainterfejs, import CAD, warunki brzegowe, wyniki, raportsilnik
Serwer PHPkonta, projekty, katalog analiz, poziomy licencjiPDO (SQLite/MySQL)

Silnik nie zna pojęcia „ściany" ani „krawędzi" — przyjmuje gotowe zbiory numerów węzłów. Wybór geometryczny należy do aplikacji, która ma własny model CAD i własny sposób zaznaczania. Dzięki temu biblioteka nie narzuca niczego co do formatu geometrii i pozostaje użyteczna poza tym konkretnym interfejsem.

Warstwa serwerowa jest świadomie wąska. Serwer przechowuje projekty i rozstrzyga o poziomach odpłatności analiz — nie liczy niczego. Praca bez konta jest w pełni możliwa: skoro analiza dzieje się w przeglądarce, serwer nie jest do niej potrzebny.

11.2.Trzy miejsca, w których może liczyć się zadanie

Pierwotne założenie — obliczenia w przeglądarce — ma jedną znaną wadę: zadanie zajmuje wątek karty, więc przy większych siatkach interfejs przestaje odpowiadać. System rozwiązuje to trójstopniowo, wybierając automatycznie najlepszą dostępną drogę.

Tabela 11.2. Drogi wykonania obliczeń, w kolejności pierwszeństwa
DrogaMocInterfejsWarunek
Agent lokalny (Node)wiele rdzeni, pełna pamięćpłynnyuruchomiony przez użytkownika
Wątek roboczy przeglądarkijeden rdzeńpłynnystrona podana przez serwer
Wątek główny kartyjeden rdzeńzablokowanyzawsze dostępna

Agent liczący to ten sam silnik TOMes® uruchomiony poleceniem node silnik/lokalnie/agent.js. Nasłuchuje wyłącznie na adresie pętli zwrotnej, nie czyta plików z dysku i nie ma dostępu do bazy — jego jedynym wejściem jest definicja zadania w treści zapytania. Zadania liczy w osobnych wątkach, dzięki czemu odpowiada na pytanie o stan także w trakcie faktoryzacji, i obsługuje kilka zadań równolegle. Hosting nadal nie liczy niczego: agent stoi na komputerze użytkownika.

To samo zadanie można policzyć wsadowo, bez przeglądarki:

node silnik/lokalnie/policz.js zadanie.json --podsumowanie node silnik/lokalnie/policz.js zadanie.json -o wynik.json

Plik zadania jest tą samą strukturą, którą aplikacja zapisuje przyciskiem „Zapisz zadanie", więc wariant obliczony w nocy skryptem jest dokładnie tym zadaniem, które widać na ekranie.

Log obliczeń

Solver raportuje etapy pracy przez opcjonalny kanał postępu: budowę modelu, składanie macierzy, wybór solvera, kolejne iteracje i kontrolę równowagi. Przy liczeniu przez agenta zdarzenia wędrują do przeglądarki strumieniem NDJSON w trakcie obliczeń, a nie po nich. Najcenniejszy jest przy analizie nieliniowej — ciąg norm residuum Newtona jest najlepszym wskaźnikiem zdrowia zadania: spadek kwadratowy (10⁻², 10⁻⁴, 10⁻⁸) oznacza, że wszystko jest w porządku, spadek liniowy albo stanie w miejscu — że model wymaga uwagi.

11.3.Import CAD i siatkowanie

System otwiera 17 formatów wymiany i siatkowych — od STEP i IGES, przez natywny FreeCAD, po formaty trójkątowe STL, 3MF, glTF i COLLADA. Pliku nie wysyła się nigdzie; czyta go przeglądarka. Formatów natywnych systemów CAD (SLDPRT, IPT, CATPart) system świadomie nie otwiera: ich specyfikacje nie są publiczne, a wszystkie dostępne czytniki są płatne, zamknięte i serwerowe. Zamiast udawać obsługę, program rozpoznaje plik po rozszerzeniu i pokazuje polecenie eksportu do formatu wymiany dla konkretnego programu.

Ograniczenie siatkowania Siatkowanie modeli z importu jest wokselowe: odwzorowuje bryłę z dokładnością podziału, więc otwory i zaokrąglenia wychodzą schodkowo. Do wyników zginania i drgań jest to wystarczające; do oceny koncentracji naprężeń na promieniu przejścia — jeszcze nie.

11.4.Dwa błędy, które bierze się z podziału na warstwy

Podział na warstwy ma cenę i warto ją nazwać, bo obie usterki opisane niżej wyszły z niego wprost. Żadna nie objawiła się wyjątkiem ani błędnym wynikiem — obie powodowały, że program wyglądał na działający i po cichu robił co innego, niż użytkownik zamierzał. To najkosztowniejsza klasa błędów w oprogramowaniu inżynierskim, bo nie zostawia po sobie śladu w wyniku.

Wersjonowanie modułów, a nie punktu wejścia

Aplikacja jest zbiorem modułów ES ładowanych wprost przez przeglądarkę — bez budowania i bez pakowania, co jest świadomym założeniem całego systemu. Znacznik wersji stał jednak wyłącznie przy znaczniku <script src>, czyli przy jednym pliku wejściowym. Wszystko, co ten plik importuje — a to praktycznie cały system — przeglądarka pobierała spod adresu bez znacznika i przechowywała według własnej heurystyki.

Po wgraniu poprawki dawało to stan gorszy od zwykłego nieodświeżenia: część modułów nowa, część sprzed zmiany. Program uruchamiał się bez błędu i zachowywał jak złożenie dwóch wersji. Objawem, który to wykrył, był nowy moduł interfejsu pytający stary katalog warunków brzegowych o warunki właściwe dla akustyki — i pokazujący w odpowiedzi zestaw mechaniczny, bo starsza wersja katalogu rodziny akustycznej jeszcze nie znała.

Rozwiązaniem jest mapa importów budowana po stronie serwera: każdemu modułowi przypisywany jest adres ze znacznikiem czasu jego pliku. Zmiana jednej linii unieważnia dokładnie ten jeden moduł i tylko jego. Jest to zarazem jedyne miejsce w systemie, w którym serwer w ogóle wie o istnieniu plików silnika.

Wymagania analizy i dostępne warunki muszą stać obok siebie

Zestaw warunków brzegowych zależy od analizy, bo zależy od niej fizyka: przy czystym przewodnictwie utwierdzenie nie wpływa na wynik w żaden sposób, a przy statyce — temperatura powierzchni. Druga lista mówi, czego dana analiza wymaga, żeby dało się ją uruchomić. Obie powstały niezależnie i rozjechały się bez śladu.

Tabela 11.3. Rozjazd między listą warunków a listą wymagań
AnalizaWarunki dostępneWarunki wymaganeSkutek
Filtracja w ośrodku porowatymciśnienie na wlocie i wylocie dwa warunki temperatury„Policz" wygaszone na zawsze
Przepływ potencjalnypotencjał prędkości podparcie i obciążenie„Policz" wygaszone na zawsze

Obie analizy stały w katalogu jako działające, obie miały opisaną dokładność potwierdzoną testem solvera i obie były nieosiągalne z interfejsu. Test solvera nie mógł tego wykryć, bo solver liczył je bez zarzutu — zadanie po prostu nigdy do niego nie docierało.

Poprawka polega na przeniesieniu obu list do jednego pliku i sprawdzaniu ich zgodności testem: każdy wymagany typ warunku musi należeć do zestawu dopuszczonego przy tej samej analizie. Jest to warunek konieczny, nie dostateczny — ale wystarcza, żeby analiza nie stała się nieosiągalna wskutek niezależnej zmiany w drugiej liście. Wymagania nie dają się przy tym uśrednić: drgania własne nie potrzebują obciążenia, akustyka wnętrza zamkniętego nie potrzebuje żadnego warunku, bo ściana sztywna jest warunkiem naturalnym równania Helmholtza, a oba zadania polowe potrzebują dwóch warunków brzegowych, bo jeden daje pole stałe i zerowy przepływ.

12.Weryfikacja

Pytanie „skąd wiadomo, że to liczy poprawnie" pada przy każdym odbiorze i jest pytaniem zasadnym. Odpowiedzią jest zestaw weryfikacyjny uruchamiany jednym poleceniem:

node silnik/verify/run.js → RAZEM: 239/239 testów przeszło w 53,0 s

Zestaw nie sprawdza, czy program się nie wywraca — sprawdza, czy wynik zgadza się z rozwiązaniem znanym niezależnie od tego programu. Każdy test podaje wartość otrzymaną, wartość odniesienia, różnicę i tolerancję, więc jego wynik da się ocenić bez zaglądania do kodu.

Struktura zestawu

Tabela 12.1. Grupy testów i przedmiot sprawdzenia
GrupaTestyPrzedmiot weryfikacji
Rdzeń algebraiczny17format CSR, LDLᵀ wobec eliminacji Gaussa, bezwładność Sylvestera
Solvery17PCG z IC(0), obroty Jacobiego, iteracja podprzestrzeni
Analizy liniowe28rozciąganie ścisłe, test łaty, belka Timoszenki, zbieżność siatki, wyboczenie Eulera
Analizy nieliniowe16niezmienniczość obrotu, plastyczność jednoosiowa, nośność graniczna, długość łuku
Kontakt8nieprzenikanie, jednostronność, nasycenie tarcia Coulomba
Analizy cieplne8Fourier, konwekcja, stygnięcie, naprężenia termiczne
Dynamika11rezonans, Newmark, dynamika jawna, spektrum, drgania losowe
Pola skalarne11naprężenie wstępne, rezonanse akustyczne, prawo Darcy’ego
Zmęczenie19Basquin, poprawki średnie, Coffin-Manson, Paris
Reologia9pełzanie Nortona, człon Arrheniusa, relaksacja lepkosprężysta
Wtrysk tworzywa10model Cross, Hele-Shaw, czas wypełnienia, linie łączenia
Hipersprężystość, dynamika nieliniowa, śruby, podmodelowanie24neo-Hooke wobec postaci zamkniętej, Newmark z Newtonem, siła w trzpieniu, ruch sztywny na cięciu
Wskazywanie warunków na modelu13tryby wyboru, tolerancje kierunkowe, trwałość wskazania po przegenerowaniu siatki
Podstruktury i CMS13kondensacja ścisła przy obciążeniu na brzegu, zbieżność jednostronna, symetria macierzy superelementu
Spójność interfejsu z silnikiem16wymagania analizy wobec dostępnych warunków, kompletność katalogu
Publiczne API19zgodność interfejsu, jednostki, sesja wieloanalizowa, narzędzia siatki

Wybrane wyniki

Tabela 12.2. Dokładność wobec rozwiązań zamkniętych — wartości z przebiegu zestawu
SprawdzenieOdniesienieWynik MESRóżnica
Rozciąganie jednoosiowe (TET4/TET10/HEX8)1,1905·10⁻⁴ m1,1905·10⁻⁴ m0,0000%
Test łaty — jednorodność σxx010⁻¹⁵dokładnie
Wspornik zginany, TET10 (Timoszenko)9,5981·10⁻⁴ m9,4314·10⁻⁴ m1,74%
Wspornik zginany, HEX89,5981·10⁻⁴ m9,7134·10⁻⁴ m1,20%
Wspornik zginany, TET49,5981·10⁻⁴ m6,4323·10⁻⁴ m32,98%
Pierwsza częstość, TET10 (Euler-Bernoulli)92,84 Hz93,34 Hz0,54%
Pierwsza częstość, TET492,84 Hz216,05 Hz132,72%
Siła krytyczna wyboczenia (Euler)1165,85 N1146,78 N1,64%
Obrót ciała sztywnego o 30° — naprężenie02,08·10⁻¹⁶dokładnie
Statyka nieliniowa wobec liniowej (małe obciążenie)−1,8789·10⁻⁵ m−1,8788·10⁻⁵ m0,0005%
Równowaga globalna (suma sił i reakcji)010⁻¹¹dokładnie
Wniosek z tabeli 12.2 Dwa wiersze oznaczone na czerwono nie są usterkami solvera — to udokumentowana właściwość elementu liniowego TET4, który przy zginaniu jest zbyt sztywny, a w zadaniu modalnym zawyża częstość ponad dwukrotnie. Zestaw weryfikacyjny celowo je zawiera: liczby te są jedynym rzetelnym uzasadnieniem, dlaczego elementem domyślnym jest TET10.

Zbieżność siatki

Wynik metody elementów skończonych zależy od gęstości siatki i nie ma sposobu, by ocenić go na podstawie jednego przebiegu. Zestaw sprawdza to wprost, a system udostępnia badanie zbieżności użytkownikowi — liczy zadanie na trzech zagęszczeniach i pokazuje zmianę wyniku.

Tabela 12.3. Zbieżność ugięcia wspornika — TET4 wobec TET10
ElementStopnie swobodyBłąd wobec Timoszenki
TET429764,9%
TET4157533,0%
TET102974,5%

Element kwadratowy na siatce pięciokrotnie mniejszej daje wynik siedmiokrotnie dokładniejszy. To jest istota różnicy między rzędem interpolacji a zagęszczeniem — i powód, dla którego zagęszczanie siatki elementami liniowymi jest kosztowną drogą donikąd.

13.Przykłady obliczeniowe

Cztery zadania policzone dwiema drogami: wzorem zamkniętym i metodą elementów skończonych. Wszystkie liczby pochodzą z rzeczywistych przebiegów opisywanego systemu — nie są przepisane z literatury. Materiałem jest stal konstrukcyjna S355: E = 210 GPa, ν = 0,3, ρ = 7850 kg/m³, α = 12·10⁻⁶ 1/K.

13.1.Wspornik zginany siłą skupioną

Wspornik o przekroju prostokątnym 40 × 30 mm i długości 500 mm, utwierdzony jednym końcem i obciążony na swobodnym końcu siłą P = 2000 N.

Dane: L = 0,500 m b = 0,040 m h = 0,030 m P = 2000 N Moment bezwładności przekroju: I = b·h³/12 = 0,040 · 0,030³ / 12 = 9,0000·10⁻⁸ m⁴ Ugięcie od zginania (Euler-Bernoulli): δ_zg = P·L³/(3·E·I) = 2000 · 0,125 / (3 · 210·10⁹ · 9,0·10⁻⁸) = 4,4092 mm Ugięcie od ścinania (poprawka Timoszenki, κ = 5/6): G = E/[2(1+ν)] = 80,77 GPa δ_śc = P·L/(κ·G·A) = 0,0124 mm Ugięcie całkowite: δ = 4,4092 + 0,0124 = 4,4216 mm Naprężenie normalne u podstawy: σ = M·c/I = (2000 · 0,500) · 0,015 / 9,0·10⁻⁸ = 166,67 MPa
Tabela 13.1. Wspornik zginany — porównanie z metodą elementów skończonych
Siatka TET10DOFUgięcieRóżnicaσzast maks.RównowagaCzas
12 × 3 × 33 6754,3594 mm−1,41%128,47 MPa1,0·10⁻¹⁰0,46 s
20 × 4 × 49 9634,3806 mm−0,93%138,15 MPa1,9·10⁻¹⁰1,71 s
Dlaczego naprężenie zbiega wolniej od przemieszczenia Ugięcie zgadza się ze wzorem w granicach procenta, ale naprężenie maksymalne wychodzi wyraźnie niższe od 166,67 MPa i rośnie przy zagęszczaniu. Nie jest to błąd. Przemieszczenie jest wielkością pierwotną i całkową — uśrednia się korzystnie. Naprężenie jest pochodną pola przemieszczeń, a system podaje je jako wartość uśrednioną po objętości elementu, czyli w praktyce z jego środka, a nie z powierzchni, gdzie leży ekstremum. Im gęstsza siatka, tym środek skrajnego elementu bliżej powierzchni i tym wyższa wartość odczytu. Wniosek praktyczny jest taki, że ocena naprężeń wymaga gęstszej siatki niż ocena sztywności, i że bez badania zbieżności nie wolno traktować odczytanego maksimum jako ustalonego.

13.2.Drgania własne tego samego wspornika

Wzór Eulera-Bernoulliego dla wspornika: fᵢ = (βᵢL)²/(2π) · √( E·I / (ρ·A·L⁴) ) gdzie (β₁L) = 1,875104 (β₂L) = 4,694091 (β₃L) = 7,854757 A = b·h = 1,2000·10⁻³ m² ρ·A·L = 4,7100 kg f₁ = 100,26 Hz f₂ = 628,33 Hz f₃ = 1759,35 Hz
Tabela 13.2. Częstości własne — MES (TET10, 16×3×3, 4851 DOF) wobec wzoru
PostaćMESWzórUwaga
1100,67 Hz100,26 Hzzginanie w płaszczyźnie słabszej, +0,41%
2133,82 Hz—zginanie w płaszczyźnie sztywniejszej
3620,10 Hz628,33 Hzdruga postać zginania, −1,31%
4814,06 Hz—druga postać w płaszczyźnie sztywniejszej
51390,84 Hz—skrętna
61693,29 Hz1759,35 Hztrzecia postać zginania, −3,75%
Czego wzór nie mówi, a MES pokazuje Wzór Eulera–Bernoulliego opisuje zginanie w jednej płaszczyźnie i podaje trzy pierwsze częstości. Model przestrzenny wykrywa ich sześć, bo przekrój 40 × 30 mm ma dwie różne sztywności giętne — i rzeczywista druga częstość konstrukcji (133,82 Hz) jest zginaniem w płaszczyźnie sztywniejszej, o którym wzór jednoosiowy milczy. Sprawdzenie: stosunek częstości powinien odpowiadać pierwiastkowi ze stosunku momentów bezwładności, √(1,6·10⁻⁷ / 9,0·10⁻⁸) = 1,333, a 100,67 · 1,333 = 134,2 Hz wobec policzonych 133,82 Hz. Zgodność potwierdza interpretację postaci. Masa modelu wyszła 4,7100 kg wobec ρ·A·L = 4,7100 kg — dokładnie.

13.3.Wyboczenie pręta ściskanego

Pręt o przekroju kwadratowym 20 × 20 mm i długości 500 mm, utwierdzony jednym końcem (długość wyboczeniowa 2L), obciążony siłą próbną 1000 N.

I = 0,020⁴/12 = 1,3333·10⁻⁸ m⁴ L_wyb = 2L = 1,000 m Siła krytyczna Eulera: P_kr = π²·E·I / L_wyb² = π² · 210·10⁹ · 1,3333·10⁻⁸ / 1,000² = 27 634,9 N Oczekiwany mnożnik obciążenia przy P = 1000 N: λ = P_kr / P = 27,635
Tabela 13.3. Wyboczenie — MES (TET10, 3075 DOF)
WielkośćWzór EuleraMESRóżnica
Mnożnik λ₁27,63527,753+0,43%
Siła krytyczna27 634,9 N27 752,9 N+0,43%
Mnożnik λ₂27,63527,764postać w drugiej płaszczyźnie

Przekrój kwadratowy ma jednakową sztywność w obu płaszczyznach, więc dwie pierwsze postacie wyboczenia są niemal identyczne (27,753 i 27,764). Jest to dokładnie ten przypadek, dla którego iteracja podprzestrzeni wymaga bloku wektorów większego od liczby szukanych postaci — bez zapasu jedna z tych dwóch bliskich postaci zostałaby zgubiona.

13.4.Naprężenia termiczne w pręcie skrępowanym

Pręt 300 × 20 × 20 mm, obustronnie skrępowany osiowo, ogrzany o ΔT = 60 K.

Odkształcenie swobodne: ε_term = α·ΔT = 12·10⁻⁶ · 60 = 7,20·10⁻⁴ Skrępowanie daje ε = 0, więc odkształcenie sprężyste ε_spr = −ε_term: σ = −E·α·ΔT = −210·10⁹ · 12·10⁻⁶ · 60 = −151,20 MPa (ściskanie)
Tabela 13.4. Naprężenia termiczne — MES (HEX8, 297 DOF)
WielkośćWzórMESRóżnica
σxx w środku pręta−151,20 MPa−151,20 MPa0,00%
Naprężenie zastępcze151,20 MPa151,20 MPa0,00%

Zgodność jest dokładna, i tak być powinno: stan naprężenia jest tu jednorodny, a element o dowolnym rzędzie interpolacji odtwarza pole stałe bez błędu. Jest to ten sam mechanizm, który sprawdza test łaty — i dlatego wynik niezgodny w tym zadaniu oznaczałby błąd w macierzy konstytutywnej, a nie niedokładność dyskretyzacji.

14.Ograniczenia i kierunki rozwoju

Wykaz poniższy jest częścią systemu, nie dodatkiem do dokumentacji: te same pozycje zwraca programowo funkcja capabilities().knownLimitations i pojawiają się w raporcie z każdej analizy.

Ograniczenia sformułowania

Katalog analiz: 38 z 54

Katalog systemu obejmuje 54 pozycje, z których 38 jest policzalnych i potwierdzonych testem. Pozostałe 16 jest widocznych jako zapowiedzi — nie da się ich wybrać ani wycenić w panelu administratora. Powody nie są jednorodne i warto je rozdzielić:

Tabela 14.1. Analizy w przygotowaniu wraz z przyczyną
GrupaPozycjiPrzyczyna
Rodzina CFD (RANS, LES, ściśliwy, wielofazowy, maszyny wirnikowe, FSI)9 wymaga siatki przyściennej, stabilizacji i całkowania o zupełnie innych wymaganiach niż mechanika ciała stałego
Przetwórstwo tworzyw: docisk i skurcz, paczenie, układ chłodzenia3 nadbudowa nad policzalnym już wypełnianiem formy; wymaga sprzężenia przepływu z polem temperatury
Złącza i przeguby, połączenia śrubowe2 więzy wielopunktowe (MPC), których model jeszcze nie zna
Dynamika wirników1 macierze żyroskopowe i zagadnienie własne w dziedzinie zespolonej
Wibroakustyka1 sprzężenie dwustronne konstrukcja–powietrze

Kierunki rozwoju

  1. Elementy powłokowe i belkowe — otwierają całą klasę konstrukcji cienkościennych, dziś praktycznie niedostępną.
  2. Sformułowanie mieszane dla materiałów nieściśliwych — hipersprężystość została dopisana w wersji 1.3.0, ale elementy przemieszczeniowe blokują się objętościowo przy ν powyżej 0,49, czyli w całym zakresie właściwym dla gum. Ciśnienie jako osobna niewiadoma zdejmuje to ograniczenie i jest warunkiem, by wyniki dla elastomerów były czymś więcej niż oszacowaniem.
  3. Więzy wielopunktowe (MPC) — otwierają złącza, przeguby, sprężyny i sztywne powiązania obszarów. Napięcie wstępne pojedynczej śruby jest gotowe od wersji 1.3.0, ale całe złącze wielośrubowe wymaga wiązania obszarów, którego model jeszcze nie zna.
  4. Wtrysk sprzężony z polem temperatury — obecna analiza wypełniania przyjmuje jedną lepkość na całą wypraskę. Iteracja lepkość ↔ prędkość ↔ temperatura otwiera fazę docisku, skurcz i paczenie, czyli to, po co tę analizę się właściwie wykonuje.
  5. Siatkowanie dopasowane do powierzchni zamiast wokselowego — warunek wiarygodnej oceny koncentracji naprężeń.
  6. Zrównoleglenie solvera — agent liczący korzysta już z wielu rdzeni na poziomie zadań; następnym krokiem jest równoległość wewnątrz jednego zadania.

Spis ważniejszych oznaczeń

SymbolZnaczenieJednostka SI
σ, εtensor naprężenia i odkształceniaPa, —
Dmacierz konstytutywna materiałuPa
Bmacierz odkształcenie–przemieszczenie1/m
Nfunkcje kształtu elementu—
K, K_g, K_tmacierz sztywności: sprężysta, geometryczna, stycznaN/m
M, Cmacierz mas i tłumieniakg, N·s/m
u, Fwektor przemieszczeń węzłowych i siłm, N
Jjakobian przekształcenia geometrycznegom
E, ν, ρmoduł Younga, liczba Poissona, gęstośćPa, —, kg/m³
λ, μstałe LamégoPa
κmoduł ściśliwości objętościowejPa
σ_y, Hgranica plastyczności, moduł wzmocnieniaPa
Δγmnożnik plastyczny—
ω, fczęstość kołowa i częstotliwośćrad/s, Hz
φ, λpostać własna, mnożnik obciążenia krytycznego—
αwspółczynnik rozszerzalności cieplnej1/K
ΔK, C, mzakres współczynnika intensywności naprężeń i stałe ParisaPa·√m

Bibliografia

  1. Zienkiewicz O. C., Taylor R. L., Zhu J. Z.: The Finite Element Method: Its Basis and Fundamentals, wyd. 7, Butterworth-Heinemann, 2013.
  2. Bathe K.-J.: Finite Element Procedures, wyd. 2, Prentice Hall, 2014.
  3. Simo J. C., Hughes T. J. R.: Computational Inelasticity, Springer, 1998.
  4. Belytschko T., Liu W. K., Moran B.: Nonlinear Finite Elements for Continua and Structures, wyd. 2, Wiley, 2014.
  5. Crisfield M. A.: Non-linear Finite Element Analysis of Solids and Structures, Wiley, 1997.
  6. Davis T. A.: Direct Methods for Sparse Linear Systems, SIAM, 2006.
  7. Saad Y.: Iterative Methods for Sparse Linear Systems, wyd. 2, SIAM, 2003.
  8. Hughes T. J. R.: The Finite Element Method: Linear Static and Dynamic Finite Element Analysis, Dover, 2000.
  9. Wilson E. L., Taylor R. L., Doherty W. P., Ghaboussi J.: Incompatible Displacement Models, w: Numerical and Computer Methods in Structural Mechanics, Academic Press, 1973.
  10. Timoshenko S. P., Goodier J. N.: Theory of Elasticity, wyd. 3, McGraw-Hill, 1970.
  11. Dowling N. E.: Mechanical Behavior of Materials, wyd. 4, Pearson, 2012.
  12. Suresh S.: Fatigue of Materials, wyd. 2, Cambridge University Press, 1998.
  13. Rusiński E., Czmochowski J., Smolnicki T.: Zaawansowana metoda elementów skończonych w konstrukcjach nośnych, Oficyna Wydawnicza Politechniki Wrocławskiej, 2000.
  14. Bąk R., Burczyński T.: Wytrzymałość materiałów z elementami ujęcia komputerowego, WNT, 2013.