Metody komputerowe i obliczeniowe Metoda Elementów Skończonych Element dwuwymiarowy liniowy : rama D Jest to element dwuwymiarowy o róŝnych współrzędnych lokalnych i globalnych węzłów niezbędne są transformacje układów współrzędnych. Jego sztywność zdefiniowana jest pośrednio, za pomocą momentu bezwładności I, pola przekroju A, długości oraz modułu Younga E. Transformacje wyraŝone są za pomocą funkcji trygonometrycznych kąta nachylenia elementu w stosunku do osi x globalnego układu współrzędnych, mierzonego w kierunku przeciwnym do kierunku ruchu wskazówek zegara. Element ma dwa węzły definiujące jego końce. KaŜdy węzeł ma dwa stopnie swobody. y element j węzeł i węzeł Θ x Jeśli kaŝdy węzeł moŝe przemieścić się w kierunku osi x i y oraz obrócić się (ma trzy stopnie swobody), to macierz sztywności elementu zdefiniowanego dwoma węzłami (a więc sześcioma stopniami swobody) zapisuje się jako macierz 6x6 (kaŝdy wymiar macierzy to liczba stopni swobody całego elementu): E K = I Ac + s I A cs s I Ac + s I A cs s I A cs I As + c c I A cs I As + c c s c 4I s c I I Ac + s I A cs s I Ac + s I A cs s I A cs I As + c c I A cs I As + c c s c I s c 4I gdzie: c = cos(θ), s = sin(θ). Jeśli w całym układzie wielu połączonych ze sobą elementów wystąpi n węzłów, to macierz sztywności będzie miała wymiar nxn. W dalszym ciągu obowiązuje ogólny układ równań liniowych metody: [K]{u} = {f} gdzie: [K] macierz sztywności, {u} wektor przemieszczeń węzłów, {f} wektor sił działających w węzłach. Jak w poprzednich lekcjach, jeśli znamy sztywność elementu oraz
przemieszczenia węzłów moŝemy wyliczyć działające siły, a jeśli znamy siły, to po rozwiązaniu układu równań moŝemy wyliczyć przemieszczenia. Siły w węzłach kaŝdego elementu wyznacza się z następującego związku: f = k R u, { } [ ][ ]{ } gdzie {u} jest 6-elementowym wektorem kolumnowym, zawierającym przemieszczenia i rotacje węzłów definiujących dany element (w kolejności: u x, u y, φ, u x, u y, φ ), a macierze [ k ] i [R] zdefiniowane są następująco: [ k] EA = EA EI 6EI EI 6EI 6EI 4EI 6EI EI EA EA EI 6EI EI 6EI 6EI EI 6EI 4EI [ R ] = c s s c c s s c Jeśli w schemacie statycznym wystąpi konieczność uwzględnienia nachylonej podpory, to globalna macierz sztywności musi zostać zmodyfikowana w następujący sposób: T K = TKT, gdzie T jest macierzą transformacji o wymiarach takich, jak K (patrz niŝej: funkcja NachylonaPodporaElementRamowyD). x α x Funkcje realizujące obliczenia MES na elementach ramowych D w Matlabie (naleŝy je przepisać w osobnych plikach M-File, nadając im nazwy takie, jakie mają zawarte w nich funkcje): poniŝszą funkcję zapisujemy w pliku: DlugoscKatElementRamowyD.m function [, Th]= DlugoscKatElementRamowyD(x,y,x,y) %funkcja wyznacza dlugosc i kat nachylenia elementu ramowego D na podstawie %wspolrzednych jego wezlow (kat w stopniach) = sqrt((x-x)*(x-x) + (y-y)*(y-y)); Th = atan((y-y)/(x-x))*8/pi;
if Th< Th = 8 + Th; end poniŝszą funkcję zapisujemy w pliku: SztywnoscElementRamowyD.m function y = SztywnoscElementRamowyD(E,A,I,,theta) %funkcja tworzy macierz sztywnosci dla pojedynczego elementu ramowego D %kat theta podajemy w stopniach %wymiar wyniku : 6x6 x = theta*pi/8; c = cos(x); s = sin(x); w = A*c*c + *I*s*s / ( * ); w = A*s*s + *I*c*c / ( * ); w = ( A - *I / ( * )) * c*s; w4 = 6*I*s/; w5 = 6*I*c/; y = E/*[w w -w4 -w -w -w4; w w w5 -w -w w5; -w4 w5 4*I w4 -w5 *I; -w -w w4 w w w4; -w -w -w5 w w -w5; -w4 w5 *I w4 -w5 4*I]; poniŝszą funkcję zapisujemy w pliku: ZlozSztywnoscRamD.m function y = ZlozSztywnoscRamD(K,k,i,j) %funkcja sklada w jedna macierz sztywnosci K wszystkie elementy ramowe D %w zadaniu laczac wszystkie sztywnosci pojedynczych elementow %UWAGA! Funkcja moze byc wywolana po wczesniejszym uruchomieniu %funkcji SztywnoscElementRamowyD! %skladanie (6 składników macierzy kaŝdego elementu) K(*i-,*i-) = K(*i-,*i-) + k(,); K(*i-,*i-) = K(*i-,*i-) + k(,); K(*i-,*i) = K(*i-,*i) + k(,); K(*i-,*j-) = K(*i-,*j-) + k(,4); K(*i-,*j-) = K(*i-,*j-) + k(,5); K(*i-,*j) = K(*i-,*j) + k(,6); K(*i-,*i-) = K(*i-,*i-) + k(,); K(*i-,*i-) = K(*i-,*i-) + k(,); K(*i-,*i) = K(*i-,*i) + k(,); K(*i-,*j-) = K(*i-,*j-) + k(,4); K(*i-,*j-) = K(*i-,*j-) + k(,5); K(*i-,*j) = K(*i-,*j) + k(,6); K(*i,*i-) = K(*i,*i-) + k(,); K(*i,*i-) = K(*i,*i-) + k(,); K(*i,*i) = K(*i,*i) + k(,); K(*i,*j-) = K(*i,*j-) + k(,4); K(*i,*j-) = K(*i,*j-) + k(,5); K(*i,*j) = K(*i,*j) + k(,6); K(*j-,*i-) = K(*j-,*i-) + k(4,); K(*j-,*i-) = K(*j-,*i-) + k(4,); K(*j-,*i) = K(*j-,*i) + k(4,); K(*j-,*j-) = K(*j-,*j-) + k(4,4); K(*j-,*j-) = K(*j-,*j-) + k(4,5); K(*j-,*j) = K(*j-,*j) + k(4,6); K(*j-,*i-) = K(*j-,*i-) + k(5,); K(*j-,*i-) = K(*j-,*i-) + k(5,); K(*j-,*i) = K(*j-,*i) + k(5,); K(*j-,*j-) = K(*j-,*j-) + k(5,4); K(*j-,*j-) = K(*j-,*j-) + k(5,5);
K(*j-,*j) = K(*j-,*j) + k(5,6); K(*j,*i-) = K(*j,*i-) + k(6,); K(*j,*i-) = K(*j,*i-)+ k(6,); K(*j,*i) = K(*j,*i) + k(6,); K(*j,*j-) = K(*j,*j-) + k(6,4); K(*j,*j-) = K(*j,*j-) + k(6,5); K(*j,*j) = K(*j,*j) + k(6,6); %i wynik zwracany przez funkcje y = K; poniŝszą funkcję zapisujemy w pliku: SilyElementRamowyD.m function y = SilyElementRamowyD(E,A,I,,theta,u) %funkcja wylicza sily wezlowe na podstawie znanych przemieszczen u, %geometrii elementu oraz E x = theta*pi/8; c = cos(x); s = sin(x); w = E*A/; w = *E*I/(**); w = 6*E*I/(*); w4 = 4*E*I/; w5 = *E*I/; kk = [w -w ; w w -w w; w w4 -w w5; -w w ; -w -w w -w; w w5 -w w4]; R = [c s ; -s c ; ; c s ; -s c ; ]; y = kk*r*u; poniŝszą funkcję zapisujemy w pliku: WykresNRamaD.m function y = WykresNRamaD(f,) %funkcja rysuje wykres sił normalnych %(pierwszy i czwarty składnik wektora {f}) x = [; ]; z = [-f(); f(4)]; hold on; title('wykres sil normalnych'); plot(x,z); y = [; ]; plot(x,y,'k'); poniŝszą funkcję zapisujemy w pliku: WykresTRamaD.m function y = WykresTRamaD(f,) %funkcja rysuje wykres sił tnacych %(drugi i piaty składnik wektora {f}) x = [; ]; z = [f(); -f(5)]; hold on; title('wykres sil tnacych'); plot(x,z); y = [; ]; plot(x,y,'k');
poniŝszą funkcję zapisujemy w pliku: WykresMRamaD.m function y = WykresMRamaD(f,) %funkcja rysuje wykres momentów zginajacych %(trzeci i szosty składnik wektora {f}) x = [; ]; z = [-f(); f(6)]; hold on; title('wykres momentow zginajacych'); plot(x,z); y = [; ]; plot(x,y,'k'); poniŝszą funkcję zapisujemy w pliku: NachylonaPodporaElementRamowyD.m function y = NachylonaPodporaElementRamowyD(T,alpha,i) %funkcja wyznacza macierz transformacji na podstawie kąta nachylenia podpory %alpha i numeru węzła (kat w stopniach) x = alpha*pi/8; T(*i-,*i-) = cos(x); T(*i-,*i-) = sin(x); T(*i-,*i) = ; T(*i-,*i-) = -sin(x); T(*i-,*i-) = cos(x); T(*i-,*i) = ; T(*i,*i-) = ; T(*i,*i-) = ; T(*i,*i) = ; %i wynik y = T; Przykład nr. Dla podanego układu elementów wykonanych z materiału o znanym module E = GPa, polu przekroju A =.m i momencie bezwładności I = 5* -5 m 4, obciąŝonego jak na rysunku poniŝej, wyznaczyć następujące niewiadome:. macierz sztywności układu. przemieszczenia i rotacje węzłów nr i. reakcje w węzłach nr i 4 4. siły wewnętrzne w kaŝdym elemencie kn knm m 4m 4
Rozwiązanie: Krok dyskretyzacja zadania Zadanie jest juŝ podzielone na elementy i węzły : - element nr zdefiniowany jest węzłami nr i= i j= - element nr zdefiniowany jest węzłami nr i= i j= - element nr zdefiniowany jest węzłami nr i= i j=4 W węzłach nr i 4 są podpory: utwierdzenie. Krok utworzenie macierzy sztywności dla kaŝdego elementu Wprowadzamy zmienne globalne, które przechowują dane materiałowe i geometryczne naszego zadania: współrzędne węzłów x, y, x, y, x, y, x4, y4, E, A,, theta,, theta,, theta (UWAGA! W celu poprawienia przejrzystości wyświetlanych wyników: >>format short) >>x= >>y= >>x= >>y= >>x=4 >>y= >>x4=4 >>y4= >>E=e6 >>A=. >>I=5e-5; >>= >>theta=9 >>=4 >>theta= >>= >>theta=7 Mamy trzy elementy, zatem tworzymy trzy macierze sztywności : k, k i k komendami: >>k=sztywnoscelementramowyd(e,a,i,,theta) >>k=sztywnoscelementramowyd(e,a,i,,theta) >>k=sztywnoscelementramowyd(e,a,i,,theta) Krok składanie macierzy sztywności elementów w jedną globalną macierz dla całego układu PoniewaŜ w układzie mamy 4 węzły, więc globalna macierz sztywności będzie miała wymiar x. Macierz K naleŝy przed składaniem wyzerować, co wykonujemy komendą: >>K=zeros(,) PoniewaŜ mamy trzy elementy, to funkcję ZlozSztywnoscRamD trzeba wywołać trzy razy niezaleŝnie dla kaŝdego elementu, podając jako parametry globalną macierz K (która jest wynikiem), macierz elementu k (k, k, a potem k) i numery węzłów definiujące dany element (najpierw i, potem i i na końcu i 4): >>K=ZlozSztywnoscRamD(K,k,,) >>K=ZlozSztywnoscRamD(K,k,,) >>K=ZlozSztywnoscRamD(K,k,,4) Na odpowiednich miejscach w macierzy K pojawią się sumowane sztywności poszczególnych elementów (PROSZĘ KONTROOWAĆ ZMIANIAJĄCE SIĘ WARTOŚCI!).
Krok 4 uwzględnienie warunków brzegowych Układ równań [K]{u}={f} moŝna rozpisać w postać: ux Fx uy Fy φ M ux Fx uy Fy φ M K * = ux Fx uy Fy φ M u4x F4x u4y F4y φ4 M4 Warunkami brzegowymi w naszym zadaniu są: - przemieszczenia i rotacja węzła nr są niemoŝliwe podpora: ux =, uy = i φ = - przemieszczenia i rotacja węzła nr 4 są niemoŝliwe podpora: u4x =, u4y = i φ4 = - w węźle nr jest obciąŝenie działające w kierunku x : Fx = -. - w węźle nr jest obciąŝenie momentem : M =. Po uwzględnieniu powyŝszych wiadomych, układ równań przyjmuje postać: Fx Fy M ux uy φ K * = ux uy φ F4x F4y M4 nie znamy zatem przemieszczeń i rotacji węzłów i oraz reakcji w węzłach i 4 (podpory). Krok 5 rozwiązanie równań Układ równań moŝna rozwiązać po kawałku, wykreślając pierwsze trzy i ostatnie trzy wiersze i kolumny odpowiadające zerowym przemieszczeniom węzłów (zostaje wnętrze K: od 4. do 9. wiersza i od 4. do 9. kolumny). W Matlabie realizujemy to poleceniami: - przepisanie wyrazów z K do k: >>k=k(4:9,4:9)
- stworzenie wektora wyrazów wolnych (prawej strony równania) ze znanymi obciąŝeniami: >>f=[- ; ; ; ; ; ] - wyznaczenie nieznanych przemieszczeń eliminacją Gaussa: >>u=k\f W wyniku otrzymujemy: ux = -.8m, uy = -.m, φ =.8rad, ux = -.8m, uy = -.m, φ =.4rad Krok 6 obróbka wyników (postprocessing) Mając przemieszczenia wszystkich węzłów, moŝemy obliczyć reakcje w podporach. Najpierw zbierzmy przemieszczenia w jeden wektor (dodajemy do wyników zerowe przemieszczenia i rotacje węzłów nr i 4): >>U=[ ; ; ; u ; ; ; ] a potem wyliczmy siły: >>F=K*U otrzymamy reakcje: fx = F() =.897kN; fy = F() = 8.5865kN, M = F() = -.5kNm, f4x = F() = 7.8kN; f4y = F() = -8.5865kN, M4 = F() = -6.686kNm. Siły w elementach wyznaczymy dzięki funkcji SilyElementRamowyD(E,A,I,,theta,u), której parametrami są: moduł spręŝystości E, pole przekroju A, moment bezwładności I, długości, i, kąty nachylenia theta, theta i theta oraz przemieszczenia węzłów definiujących dany element (czyli parami trójek: ux, uy i φ oraz ux, uy i φ, potem ux, uy i φ oraz ux, uy i φ i na końcu ux, uy i φ oraz u4x, u4y i φ4): najpierw przygotujemy pary przemieszczeń i rotacji dla kaŝdego elementu: >>u=[u() ; U() ; U() ; U(4) ; U(5) ; U(6)] >>u=[u(4) ; U(5) ; U(6) ; U(7) ; U(8) ; U(9)] >>u=[u(7) ; U(8) ; U(9) ; U() ; U() ; U()] a potem wyznaczymy siły: >>f=silyelementramowyd(e,a,i,,theta,u) >>f=silyelementramowyd(e,a,i,,theta,u) >>f=silyelementramowyd(e,a,i,,theta,u) Wyniki najlepiej przedstawić w postaci graficznej. Realizujemy to komendami: Dla elementu nr (po kaŝdej komendzie sprawdzamy wykres, po czym zamykamy go) >>WykresNRamaD(f,) >>WykresTRamaD(f,) >>WykresMRamaD(f,) dla elementu nr >>WykresNRamaD(f,) >>WykresTRamaD(f,) >>WykresMRamaD(f,)
i dla elementu nr >>WykresNRamaD(f,) >>WykresTRamaD(f,) >>WykresMRamaD(f,) Rysunki poniŝej przedstawiają siły wewnętrzne dla elementu nr. Proszę przerysować do zeszytu wszystkie wykresy, składając poszczególne przebiegi T, N i M we wszystkich elementach w wykresy dla całego układu. Wykres sil tnacych Wykres sil normalnych - - -4 - - -6-4 -8-5 - -6-7 - -8-4.5.5.5-9.5.5.5 5 Wykres momentow zginajacych 5 5-5 - -5 -.5.5.5 Przykład nr. Dla danego układu elementów o A=.4m, E=GPa i I = -6 m 4 wyznaczyć:. macierz sztywności układu. przemieszczenia i rotację węzła nr. reakcje w węzłach nr i 4. siły wewnętrzne w kaŝdym elemencie m 8kN/m m 4m
Rozwiązanie: Krok dyskretyzacja zadania Układ jest juŝ zdyskretyzowany. elementami i. węzłami : - element nr zdefiniowany jest węzłami nr i= i j= - element nr zdefiniowany jest węzłami nr i= i j= Krok utworzenie macierzy sztywności dla kaŝdego elementu Tworzymy zmienne globalne. Dla nachylonych elementów wyliczamy ich długości i kąty nachylenia: >>x= >>y= >>x= >>y= >>x=6 >>y= >>E=e6 >>A=.4 >>[, theta]=dlugosckatelementramowyd(x,y,x,y) >>=4 >>theta= Mamy dwa elementy, zatem tworzymy dwie macierze sztywności : k i k komendami: >>k=sztywnoscelementramowyd(e,a,i,,theta) >>k=sztywnoscelementramowyd(e,a,i,,theta) Krok składanie macierzy sztywności elementów w jedną globalną macierz dla całego układu PoniewaŜ w układzie mamy węzły, więc globalna macierz sztywności będzie miała wymiar 9x9. Macierz K naleŝy przed składaniem wyzerować, co wykonujemy komendą: >>K=zeros(9,9) PoniewaŜ mamy dwa elementy, to funkcję ZlozSztywnoscRamD trzeba wywołać dwa razy niezaleŝnie dla kaŝdego elementu, podając jako parametry globalną macierz K (która jest wynikiem), macierz elementu k i numery węzłów definiujące dany element: >>K=ZlozSztywnoscRamD(K,k,,) >>K=ZlozSztywnoscRamD(K,k,,) Na odpowiednich miejscach w macierzy K pojawią się sumowane sztywności poszczególnych elementów. (UWAGA! Proszę obserwować wartości K po kaŝdej komendzie!) Krok 4 uwzględnienie warunków brzegowych W węzłach nr i są podpory utwierdzenia, zatem: ux = uy = φ = ux = uy = φ = PoniewaŜ w układzie znajduje się obciąŝenie równomiernie rozłoŝone, naleŝy je zamienić na równowaŝne obciąŝenie węzłowe wg formuły:
{ } = =.6667kNm 6kN.6667kNm 6kN q q q q p Zatem obciąŝenie w węźle nr wyniesie: Fx =, Fy = -6kN, M = -.6667kNm. Układ równań [K]{u}={f} moŝna rozpisać w postać: = φ φ φ M Fy Fx M Fy Fx M Fy Fx uy ux uy ux uy ux * K Po uwzględnieniu powyŝszych wiadomych, układ równań przyjmuje postać: = φ M Fy Fx.6667 6 M Fy Fx uy ux * K nie znamy zatem. wartości wektora {u} i 6. wartości składowych reakcji. 6kN 8kN/m 6kN.6667kNm.6667kNm
Krok 5 rozwiązanie równań Układ równań rozwiąŝemy po kawałku, wykreślając wiersze i kolumny o numerach - i 7-9 w K (dla zerowych wartości {u}), zostawiając resztę dla nieznanych składowych {u}. Realizujemy to komendą: >>k=k(4:6,4:6) Tak jak w poprzednim przykładzie, wektor f ze znanymi siłami utworzymy komendą: >>f=[ ; -6 ; -.6667] a następnie wyliczymy nieznane przemieszczenia poleceniem (eliminacja Gaussa): >>u=k\f Otrzymamy w wyniku: ux = -.m, uy = -.m, φ = -.5rad Krok 6 obróbka wyników (postprocessing) Mając przemieszczenia wszystkich węzłów, moŝemy obliczyć reakcje w podporach. Najpierw zbierzmy przemieszczenia w jeden wektor (dodajemy do wyników poprzednio pominięte zerowe wartości u): >>U=[ ; ; ; u ; ; ; ] a potem wyliczmy siły: >>F=K*U Składowe wektora {u} przypadające na kaŝdy element wyznaczymy komendami: >>u=[u() ; U() ; U() ; U(4) ; U(5) ; U(6)] >>u=[u(4) ; U(5) ; U(6) ; U(7) ; U(8) ; U(9)] UWAGA! Wyliczenie sił wewnętrznych i opracowanie wykresów proszę zrealizować samodzielnie. Zadanie nr. Zadania do samodzielnego rozwiązania: Dla układu jak na rysunku poniŝej, mając dane: E=GPa, A=.4m, I=4* -6 m 4 wyznaczyć:. macierz sztywności układu. przemieszczenia i rotację węzłów nr i. reakcje w węzłach nr i 4. siły wewnętrzne wraz z ich wykresami w kaŝdym elemencie 4m 5kNm kn 4m
Zadanie nr. Dla układu jak na rysunku poniŝej, mając dane: E=GPa, A=.m, I=9* -5 m 4 wyznaczyć:. macierz sztywności układu. przemieszczenia i rotacje węzłów nr i. reakcje w węzłach nr i 4 4. siły wewnętrzne i ich wykresy w kaŝdym elemencie 5kN/m kn m 4 m 5m m Zadanie nr. Dla układu jak na rysunku poniŝej, mając: E=7GPa, A=.m, I=9* -5 m 4 oraz k = 5kN/m dla elementu spręŝynowego, wyznaczyć:. macierz sztywności układu. przemieszczenia węzłów nr i 4. reakcje w węzłach nr - 4. siły wewnętrzne 5m m 4 kn 5m 6 5 m 5m