- 积分
- 0
- 注册时间
- 2012-10-9
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2013-1-7 21:20:01
|
显示全部楼层
来自 湖南长沙
那个程序是有点问题,请问大家有没有用EX543求振型啊,我的怎么求出来是错误的啊,有两条命令,我不是很懂
index=zeros(2*3,1); % 初始化指数矢量
% (2) 计算约束
%--------------------------------------------------------------------------
ConNode=[ 1, 1, 1, 1;... % 约束的节点
17, 1, 1, 1];
ConVal =[ 1, 0, 0, 0;... %约束自由度的值
17, 0, 0, 0];
bcdof=zeros(51,1); % 初始化自由度矢量
bcval=zeros(51,1); % 初始化自由度矢量值
[n1,n2]=size(ConNode);
for ni=1:n1
ki=ConNode(ni,1);
bcdof((ki-1)*3+1:ki*3)=ConNode(ni,2:3+1);
bcval((ki-1)*3+1:ki*3)=ConVal(ni,2:3+1);
end
%--------------------------------------------------------------------------
% (3) 施加节点力
%--------------------------------------------------------------------------
P=[-500,10,2]; % load applied at node 21 in the negative y direction施加载荷
ff=zeros(51,1); % 初始化力矢量
ff(3*(P(2)-1)+P(3))=P(1);
% (4) 坐标变换
%--------------------------------------------------------------------------
% x, y, z 整体坐标系
xx=zeros(17,1); yy=zeros(17,1); zz=zeros(17,1);
dx=0.011;
xx=0:dx:(17-1)*dx; xx=xx';
gcoord=[xx yy zz];
for iel=1:16
nd(1)=iel;
nd(2)=iel+1;
x(1)=gcoord(nd(1),1); y(1)=gcoord(nd(1),2); z(1)=gcoord(nd(1),3);
x(2)=gcoord(nd(2),1); y(2)=gcoord(nd(2),2); z(2)=gcoord(nd(2),3);
leng=sqrt((x(2)-x(1))^2+(y(2)-y(1))^2+(z(2)-z(1))^2);
end
K=sysK;
M=sysM;
% (5) 施加约束
%--------------------------------------------------------------------------
% 检查总体刚度矩阵的主元是否为0
[kk0,mm0,ff0,bcdof0,bcval0,sdof0]=kkCheck1(K,M,ff,bcdof,bcval);
% 对结构系统施加边界条件
%[kk1,mm1,ff1,sdof1]=femApplybc1(K,M,ff0,bcdof0,bcval0);
ni=length(bcdof);
sdof=size(K);
for ii=1:ni
if bcdof(ii)==1
for j=1:sdof
K(ii,j)=0;
K(j,ii)=0;
M(ii,j)=0;
M(j,ii)=0;
ff(j)=ff(j)-bcval(ii)*K(j,ii);
end
K(ii,ii)=1;
ff(ii)=bcval(ii);
end
end
% 检查边界条件,消去相应的自由度
[kk2,mm2,ff2,sdof2]=bcCheck1(kk0,mm0,ff0,bcdof0,bcval0);
[V,D]=eig(kk2,mm2);
[lambda,ki]=sort(diag(D)); % 排序
omega=sqrt(lambda);
omega1=sqrt(lambda)/(2*pi);
V=V(:,ki);
%--------------------------------------------------------------------------
jk=3; %选择显示第几阶模态
Vi=[V(:,jk)];
ik=0;
for ii=1:sdof0
if bcdof0(ii)==0
mcoord(ii,1)=Vi(ii-ik);
else
mcoord(ii,1)=0;
ik=ik+1;
end
end
for ii=1:17
for ij=1:3
mcoordA(ii,ij)=mcoord((ii-1)*3+ij,1);
end
end
nv=20;
for i=1:nv+1
t=(i-1)*(2*pi)/20;
mcoordB=gcoord+[zeros(17,1),mcoordA(:,1),zeros(17,1)]*cos(t);这条命令是什么意思啊
for iel=1:16
nd(1)=iel;
nd(2)=iel+1;
x(1)=mcoordB(nd(1),1); y(1)=mcoordB(nd(1),2); z(1)=mcoordB(nd(1),3);
x(2)=mcoordB(nd(2),1); y(2)=mcoordB(nd(2),2); z(2)=mcoordB(nd(2),3);
plot(x,y,'b');
xlabel('x');
ylabel('y');
title('2-D frame element')
end
end
%--------------------------------------------------------------------------
% 打印结果
%--------------------------------------------------------------------------
disp('The calculation is use of:')
disp('2-D frame element')
disp('and consistent mass matrix')
disp(' ')
disp(' mode numrical ')
num=1:1:10;
frequency=[num' omega1(1:10) ] |
|