79 lines
2.5 KiB
Mathematica
79 lines
2.5 KiB
Mathematica
|
|
clear all;close all;clc
|
|||
|
|
%---------------------GEOMETRY-----------------------
|
|||
|
|
a=10; %('<EFBFBD><EFBFBD><EFBFBD><EFBFBD> in x: ');
|
|||
|
|
b=10; %('<EFBFBD><EFBFBD><EFBFBD><EFBFBD> in y: ');
|
|||
|
|
%---------------------MESH---------------------------
|
|||
|
|
ex=15; %input('x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ');%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2*2,<EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD>壬<EFBFBD>ܼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD>죬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>кܴ<EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
|
|||
|
|
ey=15; %input('y<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ');
|
|||
|
|
mesh=MeshGenerator(a,b,ex,ey);
|
|||
|
|
%---------------------ELEMENT------------------------
|
|||
|
|
ShapeOption='Q4';%Q8 Q9
|
|||
|
|
quadrature=GaussQuadrature('gauss1');
|
|||
|
|
% gauss1 Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
%---------------------MATERIAL------------------------
|
|||
|
|
%SI mm t MPa N
|
|||
|
|
material=struct();
|
|||
|
|
material.t=0.5; %ע<EFBFBD>ⱡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ㣩<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
material.E=200e9;
|
|||
|
|
material.v=0.3;
|
|||
|
|
material.rho=7800;
|
|||
|
|
material.G=material.E/(2+2*material.v);
|
|||
|
|
|
|||
|
|
K=StiffnessMatrix(material,mesh,quadrature,ShapeOption);
|
|||
|
|
M=MassMatrix(material,mesh,quadrature,ShapeOption);
|
|||
|
|
%---------------------LOADS----------------------------
|
|||
|
|
p0=1e3;
|
|||
|
|
F=ForceVector(mesh,quadrature,ShapeOption,p0);
|
|||
|
|
% c0=input('\n<EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><EFBFBD>صĴ<EFBFBD>С: ');
|
|||
|
|
% cl=input('\nLato da caricare: ');
|
|||
|
|
% F=ForceVector(cl,c0,mesh);Lato da caricare
|
|||
|
|
%---------------------CONSTRAINTS-----------------------
|
|||
|
|
%nc is nodes of constrained elemment
|
|||
|
|
nc=[mesh.lato1];%<EFBFBD><EFBFBD><EFBFBD>۰<EFBFBD>
|
|||
|
|
%nc=[mesh.lato1 mesh.lato2(2:end) mesh.lato3(2:end) mesh.lato4(2:end-1)];%%<EFBFBD>ı߹̶<EFBFBD>
|
|||
|
|
[K_c,M_c,F_c,nctot]=Constraints(nc,K,M,F);
|
|||
|
|
%---------------------SOLUTION---------------------------
|
|||
|
|
w=StaticSolver(K_c,F_c,mesh,nctot);
|
|||
|
|
sprintf('<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>%f',max(abs(w)))
|
|||
|
|
%---------------------PLOT-------------------------------
|
|||
|
|
figure
|
|||
|
|
surf(mesh.x(1,:),mesh.y(:,1),reshape(w,size(mesh.x,2),size(mesh.x,1))');
|
|||
|
|
% axis equal
|
|||
|
|
hold on
|
|||
|
|
title('Deformed geometry')
|
|||
|
|
%-------------------MODAL ANALYSIS--------------------
|
|||
|
|
|
|||
|
|
numberMode=5;
|
|||
|
|
|
|||
|
|
% %ԭʼģ̬<EFBFBD><EFBFBD><EFBFBD>㷽<EFBFBD><EFBFBD>'sm'
|
|||
|
|
% [V,D]=eigs(M_c\K_c,numberMode,'sm');%'smallestabs'
|
|||
|
|
% scal=0.5;
|
|||
|
|
% f=diag(sqrt(D)/(2*pi));
|
|||
|
|
% Vf=sortrows([V',f],size(V,1)+1);
|
|||
|
|
% V=Vf(:,1:size(V,1))';%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>M<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>תK<EFBFBD><EFBFBD>M<EFBFBD><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD><EFBFBD><EFBFBD>棬<EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>sm'<EFBFBD><EFBFBD>'largestabs'<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
[V,D]=eigs(K_c\M_c,numberMode,'lm'); %'largestabs'
|
|||
|
|
scal=0.5;
|
|||
|
|
f= power(diag(sqrt(D)),-1)/(2*pi);
|
|||
|
|
Vf=sortrows([V',f],size(V,1)+1);
|
|||
|
|
V=Vf(:,1:size(V,1))';%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
|
|||
|
|
%<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɶ<EFBFBD>
|
|||
|
|
index=1:mesh.nn*3;
|
|||
|
|
Vo=zeros(mesh.nn*3,5);
|
|||
|
|
index(nctot)=[];%ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɶ<EFBFBD>
|
|||
|
|
for i=1:numel(index)
|
|||
|
|
Vo(index(i),:)=V(i,:);
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
f=sort(f);%<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>
|
|||
|
|
sprintf('Ƶ<EFBFBD><EFBFBD>Ϊ%f',f)
|
|||
|
|
|
|||
|
|
for i=1:numberMode
|
|||
|
|
figure
|
|||
|
|
surf(mesh.x(1,:),mesh.y(:,1),reshape(Vo(1:3:end,i),size(mesh.x,2),size(mesh.x,1))');
|
|||
|
|
title(sprintf('modal %d',i))
|
|||
|
|
end
|