Hajlított tartó: feladat Beam 1D végeselemmel A feladatlapon szereplő példa megoldása. A megoldáshoz 1 dimenziós hajlított gerendaelemeket ("beam") használunk. Verzió: 2018.10.15. (%i1) kill(all)$ Az adatok SI alapmértékegységekben (m^2,pa,m,n) (%i7) a:0.8$ b:0.4$ d:0.02$ E0:50e9$ F1:2500$ M1:-500$ p0:-5000$ 1 Merevségi mátrix összeállítása Elemi merevségi mátrix képletéhez saját függvény: (%i8) Kef(I,E,L):=I*E/L^3*matrix( [12, 6*L, -12, 6*L], [6*L, 4*L^2, -6*L, 2*L^2], [-12, -6*L, 12, -6*L], [6*L, 2*L^2, -6*L, 4*L^2] )$ Másodrendű nyomatékok (%i10) I1:(2*d)^4*%pi/64,numer; I2:d^4*%pi/64,numer; Mindkét szakaszon 1-1 elemet használunk. Az elemek hosszai: (%i12) L1:a; L2:b; Rugalmassági moduluszok: (%i14) E1:E0; E2:4*E0; Az egyes elemek merevségi mátrixai
(%i16) Ke1:Kef(I1,E1,L1); Ke2:Kef(I2,E2,L2); A mátrixok és vektorok átméretezéséhez hasznos parancsok definiálása. (A megadott helyekre másolják mátrixok és vektorok elemeit. Nem része a tananyagnak a parancsok működésének megértése, bemásolható és használható.) (%i20) SubMatrix(Mx,rows):=block([n,mx],n:length(rows),mx:zeromatrix(n,n), for i:1 thru n do for j:1 thru n do mx[i,j]:mx[rows[i],rows[j]], return (mx))$ ExtMatrix(mx,rows,size):=block([n,Mx],n:length(rows),Mx:zeromatrix(size,size), for i:1 thru n do for j:1 thru n do Mx[rows[i],rows[j]]:mx[i,j], return (Mx))$ SubVector(Mx,rows):=block([n,mx],n:length(rows),mx:zeromatrix(n,1), for i:1 thru n do mx[i,1]:mx[rows[i],1], return (mx))$ ExtVector(mx,rows,size):=block([n,Mx],n:length(rows),Mx:zeromatrix(size,1), for i:1 thru n do Mx[rows[i],1]:mx[i,1], return (Mx))$ Elemek szabadságifok-sorszámainak tárolása: (Az egyes elemek hányas sorszámú szabadsági fokokhoz csatlakoznak) (Ne feledjük, minden csomópontban 2 szabadságfok van, összesen 2 3=6 DOF!) (%i22) edof1:[1,2,3,4]$ edof2:[3,4,5,6]$ A 6 6-os globális merevségi mátrix összeállítása: (%i23) Kglob:ExtMatrix(Ke1,eDOF1,6)+ExtMatrix(Ke2,eDOF2,6); 2 Teljes rendszerre vonatkozó (globális) megoldás Az első elemre ható, megoszló terhelésből származó tehervektor: (Most csak az 1. elemre hat megoszló terhelés, de több ilyen vektor is lehet). (%i24) Fpe1:p0*L1/2*matrix([1],[L1/6],[1],[-L1/6]);
Az aktív erők vektora. (Az első tagban a koncentrált terhelések - erő és nyomaték - vannak a megfelelő helyekre írva). (A második tagban a megoszló terhelés szerepel, ha több elemre is hat megoszló terhelés, több ilyen tag is lesz). (%i25) Faktiv:matrix([0],[0],[F1],[0],[0],[M1])+ExtVector(Fpe1,eDOF1,6); 2.1 A leszűkített (kondenzált) rendszer megoldása (A megoldás lépései nagyon hasonlóak korábbi Maxima laborokhoz.) A szabad szabadsági fokok megadása (a 2. csomópont teljesen szabad - 3. 4. szabadságfokok, a 3. csomópontnak pedig az elfordulása): (%i26) szabaddof:[3,4,6]$ A rendszer leszűkítése a szabad szabadsági fokokra: (%i28) Kkond:SubMatrix(Kglob,szabadDOF); Fkond:SubVector(Faktiv,szabadDOF); A leszűkített rendszer megoldás a K.U=F egyenlet alapján. (%i29) Ukond:invert(Kkond).Fkond; 2.2 A teljes rendszer megoldása A kapott eredményt kiterjesztjük a teljes, megkötött szabadsági fokokat is tartalmazó rendszerre. (%i30) Uglob:ExtVector(Ukond,szabadDOF,6);
A globális tehervektor számítása a K*U=F egyenlet alapján. (%i31) Fglob:Kglob.Uglob; A reakcióerőket megkaphatjuk, ha a teljes erővektorból kivonjuk az aktív erőket: (%i32) Freakc:Fglob-Faktiv; Az 3-4 szabadsági fokoknál a kerekítési hiba miatti kis értékek vannak. A többi reakcióerő kinyerése külön változóba: (%i35) AyVEM:Freakc[1,1]; MAVEM:Freakc[2,1]; ByVEM:Freakc[5,1]; 3 A lehajlásfüggvény megahározása Az elemi elmozdulásvektorok (%i37) Ue1:SubVector(Uglob,eDOF1); Ue2:SubVector(Uglob,eDOF2);
A formafüggvények vektorához saját függvény. (Ezekkel lehet a csomóponti elmozdulásokból az elem belsejében lévő elmozdulásokat számítani.) (Az első paraméter -x0- az elem bal széle, a második paraméter -L- pedig az elem hossza.) (%i38) Nef(x0,L):=ev(matrix([ 1/4*(1-ξ)^2*(2+ξ), 1/8*L*(1-ξ)^2*(1+ξ), 1/4*(1+ξ)^2*(2-ξ), -1/8*L*(1+ξ)^2*(1-ξ) ]),ξ=2*(x-x0)/l-1,expand)$ Az egyes elemek formafüggvényei: (%i40) N1:Nef(0,L1); N2:Nef(L1,L2); A lehajlásfüggvények számítása (y1 és y2) az egyes elemekre. (%i42) y1:n1.ue1,expand; y2:n2.ue2,expand; A közös elmozdulásfüggvény (if feltétel segítségével minden szakaszon azt ábrázoljuk, ami ott érvényes) (%i44) yvem: if x<l1 then y1 else y2$ wxplot2d(yvem,[x,0,l1+l2],[xlabel,"x[m]"],[ylabel,"y[m]"]);
(Több szakasznál több if-et kellene egymásba ágyaznunk, pl. if x<... then y1 else if x<... then y2 else y3) Az elfordulás számítása (%i48) fi1:diff(y1,x)$ fi2:diff(y2,x)$ fivem: if x < L1 then fi1 else fi2$ wxplot2d(fivem,[x,0,l1+l2],[xlabel,"x[m]"],[ylabel,"fi[rad]"]); A hajlító nyomaték számítása (%i52) Mh1:-diff(fi1,x)*(I1*E1)$ Mh2:-diff(fi2,x)*(I2*E2) $ MhVEM: if x < L1 then Mh1 else Mh2$ wxplot2d(mhvem,[x,0,l1+l2],[xlabel,"x[m]"],[ylabel,"mh[nm]"]);
4 Analitikus megoldás rugalmas szál differenciálegyenletével 4.1 Megoldás a rugalmas szál differenciálegyenletével (A részletesebb magyarázatért lásd a 2. labor anyagát.) (%i58) Mh1a:MAa-Aya*x-p0*x^2/2$ fi1a:integrate(-mh1a/(i1*e1),x)+c1$ y1a:integrate(fi1a,x)+c2$ Mh2a:MAa-Aya*x-p0*L1*(x-L1/2)-F1*(x-L1)$ fi2a:integrate(-mh2a/(i2*e2),x)+c3$ y2a:integrate(fi2a,x)+c4$ Mivel a rendszer statikailag határozatlan, a statikai egyenletekből nem határozhatók meg a reakcióerők. Ezért az összes ismeretlent (reakcióerők, c-k) egyszerre határozzuk meg, a statikai egyenletekből és a peremfeltételekből (illeszkedés, késznyerek). (%i63) ratprint:false$ statika:[ Aya+Bya+F1+p0*L1=0, p0*l1^2/2+f1*l1+bya*(l1+l2)+maa+m1=0 ]; illeszk:[ ev(y1a-y2a,x=l1)=0, ev(fi1a-fi2a,x=l1)=0 ]; kenyszerek:[ ev(y1a,x=0)=0, ev(fi1a,x=0)=0, ev(y2a,x=l1+l2)=0 ],expand; megold:linsolve(append(statika,illeszk,kenyszerek),[maa,aya,bya,c1,c2,c3,c4]),numer;
A lehajlásfüggvények (%i66) y1a2:y1a,megold,expand; y2a2:y2a,megold,expand; yanal:if x<l1 then y1a2 else y2a2$ A szögelfordulás függvények (%i69) fi1a2:fi1a,megold,expand; fi2a2:fi2a,megold,expand; fianal:if x<l1 then fi1a2 else fi2a2$ A hajlító nyomaték függvények (%i72) Mh1a2:Mh1a,megold,expand; Mh2a2:Mh2a,megold,expand; MhANAL:if x<l1 then Mh1a2 else Mh2a2$ 4.2 Az analitikus eredmények összehasonlítása a VEM megoldással Lehajlás (%i73) wxplot2d([yvem,yanal],[x,0,l1+l2],[legend,"vem","analitikus"],[y,0,0.018], [xlabel,"x [m]"], [ylabel, "y [m]"]);
Szögelfordulás (%i74) wxplot2d([fivem,fianal],[x,0,l1+l2],[legend,"vem","analitikus"],[y,-0.1,0.06], [xlabel, "x [m]"],[ylabel,"fi [rad]"]); Hajlító nyomaték (%i75) wxplot2d([mhvem,mhanal],[x,0,l1+l2],[legend,"vem","analitikus"],[y,-500,800], [xlabel,"x [m]"], [ylabel, "Mh [Nm]"]);
A hajlítónyomaték hibája x=a/2-nél: (%i78) vem:mhvem,x=a/2; anal:mhanal,x=a/2; relhiba:abs((vem-anal)/anal); Vagyis a hajlító nyomaték relatív hibája 44%. a itt több elemet használunk, a VEM megoldás pontosítható. BME Műszaki Mechanikai Tanszék. Kidolgozta: A.M. Created with wxmaxima.