clear all % memoria torlese clc % Command Window torlese format shortG % Command window megjelenítési formátuma pkg load signal % signal csomag betoltese pkg load dataframe % dataframe csomag betoltese %% PREPROCESSING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % meretek h1=10000; a1=5000; % tulajdonsagok % sorszam, keresztmetszet terulete, rugalmassagi modulus, suruseg prp=[1 706.86 200000 7.85e-9]; % csomoponti koordinatak (x y (z)) crd=[0 0;0 h1 a1 0;a1 h1 2*a1 0;2*a1 h1 3*a1 0;3*a1 h1 4*a1 0;4*a1 h1 5*a1 0;5*a1 h1 6*a1 0;6*a1 h1]; % kapcsolati matrix (kezdopont, vegpont, tulajdonság sorszama) con=[1 2 1;3 4 1;5 6 1;7 8 1;9 10 1;11 12 1;13 14 1 % fuggoleges rudak 1 3 1;3 5 1;5 7 1;7 9 1;9 11 1;11 13 1 % lenti rudak 2 4 1;4 6 1;6 8 1;8 10 1;10 12 1;12 14 1 % fenti rudak 1 4 1;3 6 1;5 8 1;9 8 1;11 10 1;13 12 1]; % atlos rudak % kinematikai peremfeltetelek % (csomopontszam, elmozdulas koordinata lokalis sorszama, elmozdulas nagysaga) kbc=[1 1 0 1 2 0 13 2 0]; % dinamikai peremfeltetelek % (csomopontszam, elmozdulas koordinata lokalis sorszama, ero nagysaga) dbc=[2 1 20000 7 2 -20000 9 2 -40000]; % megjelenitesi beallitasok sc=200; % nagyitas merteke lw=3; % vonalvastagsag mode=0; % lengeskep sorszama (0 eseten a statikus vizsgalat eredmenye) %% SOLVING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% dim=size(crd,2); % dimenzio (2D vagy 3D) non=size(crd,1); % csomopontok szama noe=size(con,1); % elemek (=rudak) szama dof=non*dim; % szerkezet szabadsagfokszama K=zeros(dof,dof); % globalis merevsegi matrix inicializalasa M=zeros(dof,dof); % globalis tomeg matrix inicializalasa F=zeros(dof,1); % csomoponti tehervektor inicializalasa if ~isempty(dbc) % ha van terheloero, annak elhelyezese a F((dbc(:,1)-1).*dim+dbc(:,2))=dbc(:,3); % csomoponti tehervektorba end Pset=(kbc(:,1)-1).*dim+kbc(:,2); % ismert elmozdulaskoordinatak sorszama Aset=[1:dof]'; % osszes elmozdulaskoordinata sorszama Nset=setdiff(Aset,Pset); % szabad elmozdulaskoordinatak sorszama q=zeros(dof,1); % csomoponti elmozdulasvektor inicializalasa q(Pset)=kbc(:,3); % ismert elmozdulaskoordinatak elhelyezese N1=con(:,1); % elemek kezdopontjainak sorszamai N2=con(:,2); % elemek vegpontjainak sorszamai A=prp(con(:,3),2); % elemek keresztmetszeteinek teruletei E=prp(con(:,3),3); % elemek rugalmassagi modoluszai R=prp(con(:,3),4); % elemek surusegei v=crd(N2,:)-crd(N1,:); % elemek iranyvektorai L=rssq(v,2); % elemek hosszai uv=v./L; % elemek iranyegysegvektorai % merevsegi es tomegmatrix eloallitasa: for e=1:noe T=blkdiag(uv(e,:),uv(e,:)); % elmozdulás transzformációs mátrixa K1=A(e)*E(e)/L(e); % elem merevsegi matrixanak elemei Ke=T'*[K1 -K1;-K1 K1]*T; % elem transzformalt merevsegi matrixa d1=(N1(e)-1)*dim+1:N1(e)*dim; % elem kezdopontjanak elmozdulaskoordinata sorszamai d2=(N2(e)-1)*dim+1:N2(e)*dim; % elem vegpontjanak elmozdulaskoordinata sorszamai d=[d1,d2]; % elem csomopontjainak elmozdulaskoordinata sorszamai K(d,d)=K(d,d)+Ke; % merevsegi matrix globalis merevsegi matrixba rakasa M1=R(e)*A(e)*L(e)/6; % elem tomegmatrixanak elemei Me=M1*[2*eye(dim),eye(dim);eye(dim),2*eye(dim)]; % elem tomegmatrixa M(d,d)=M(d,d)+Me; % tomegmatrix globalis tomegmatrixba rakasa end % csomoponti tehervektor kiegeszitese a kinematikai tehervektorral F=F-K(:,Pset)*kbc(:,3); % kinematikai peremfeltetelek figyelembe vetele: Knn=K(Nset,Nset); % merevsegi matrix szabad resze Mnn=M(Nset,Nset); % tomeg matrix szabad resze Fn=F(Nset); % tehervektor szabad resze % elmozdulasok kiszamitasa q(Nset)=Knn\Fn; % Kq=F egyenlet megoldasa % modalanalizis [Q,D]=eig(Knn,Mnn); % sajatfrekvenciak, lengeskepek kiszamitasa [D,idx]=sort(diag(D)); % sajatfrekvenciak sorbarendezese Q=Q(:,idx); % lengeskepek sorbarendezese %% POSTPROCESSING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % elmozdulasbol szarmaztatott mennyisegek kiszamitasa Fall=round(K*q.*1e8)./1e8; % csomoponti erok kiszamítasa qmat=reshape(q,dim,non)'; % csomoponti elmozdulasmatrix qabs=rssq(qmat,2); % elmozdulasok abszolut erteke Fmat=reshape(Fall,dim,non)'; % csomoponti eromatrix Fabs=rssq(Fmat,2); % erok abszolut ertekei DL=sum(uv.*(qmat(N2,:)-qmat(N1,:)),2); % rudak hosszvaltozasa DL=round(DL.*1e8)./1e8; % hosszvaltozasok kerekitese EPS=DL./L; % rudak fajlagos nyulasa S=E.*EPS; % rudakban fellepo normalfeszultseg N=A.*S; % ruderok % abrazolas: if mode==0 dcrd=crd+sc*qmat; else Qa=zeros(dof,1); Qa(Nset)=Q(:,mode); Qmat=reshape(Qa,dim,non)'; dcrd=crd+sc*Qmat; end % koordinatak elmozdulas utan elemenkent abrazolashoz: def(1:3:3*noe-2,:)=dcrd(N1,:); def(2:3:3*noe-1,:)=dcrd(N2,:); def(3:3:3*noe,:)=NaN; if dim==2 % sikbeli feladat esete plot(def(:,1),def(:,2),'LineWidth',lw); else % trebeli feladat esete plot3(def(:,1),def(:,2),def(:,3),'LineWidth',lw); end %axis equal % tengelyeken azonos leptek beallitasa % eredmenyek numerikus megjelenitese: if dim==2 N_colname={'x','y','ux','uy','u','Fx','Fy','F'}; Nm_colname={'ux','uy','u','Fx','Fy','F'}; else N_colname={'x','y','z','ux','uy','uz','u','Fx','Fy','Fz','F'}; Nm_colname={'ux','uy','uz','u','Fx','Fy','Fz','F'}; end csomoponti_eredmenyek=dataframe(crd,qmat,qabs,Fmat,Fabs,'colnames',N_colname) disp(' ') [Nmax, Nmaxloc] = max([qmat,qabs,Fmat,Fabs], [], 1); [Nmin, Nminloc] = min([qmat,qabs,Fmat,Fabs], [], 1); csomoponti_szelsoertekek=dataframe([Nmax;Nmaxloc;Nmin;Nminloc],... 'colnames',Nm_colname,... 'rownames',{'max_ertek','max_helye','min_ertek','min_helye'}) disp(' ') E_colname={'kezdopont','vegpont','hosszvaltozas','fajlagos_nyulas','feszultseg','rudero'}; Em_colname={'hosszvaltozas','fajlagos_nyulas','feszultseg','rudero'}; elemi_eredmenyek=dataframe(N1,N2,DL,EPS,S,N,'colnames',E_colname) disp(' ') [Emax, Emaxloc] = max([DL,EPS,S,N], [], 1); [Emin, Eminloc] = min([DL,EPS,S,N], [], 1); elemi_szelsoertekek=dataframe([Emax;Emaxloc;Emin;Eminloc],... 'colnames',Em_colname,... 'rownames',{'max_ertek','max_helye','min_ertek','min_helye'}) disp(' ') sajatfrekvenciak=dataframe(sqrt(D)/(2*pi),'colnames','f[Hz]')