本帖最后由 wei_x 于 2010-10-10 21:04 编辑
约束模态分析程序如下:
子结构一(只列出修改部分):lx=2;
%x方向长度 ly=1; %y方向长度
jdx=21; %x向节点数
jdy=11; %y向节点数
Tol_dof=3*jdx*(jdy-1);
cons_Ori=1:1:jdx;
%原有约束节点
constraints=cons_Ori; %总约束
% 总刚度矩阵中按是否在界面上分块
add_num=jdx*3;master_mode=15;
kii=k(1:end-add_num,1:end-add_num); kij=k(1:end-add_num,end-add_num+1:end);
%提取约束模态
fi_res1=cat(1,-inv(kii)*kij,eye(add_num));
%合并总模态
fi_1=cat(2,fi_unres1,fi_res1);
%用模态对刚阵和质量阵做第一次坐标变换
k1=fi_1'*k*fi_1; m1=fi_1'*m*fi_1;
子结构二(只列出修改部分): lx=2;
%x方向长度
ly=1;
%y方向长度
jdx=21; %x向节点数
jdy=11; %y向节点数
%总自由度
Tol_dof=3*jdx*jdy; %子结构没有约束
% 总刚度矩阵中按是否在界面上分块
add_num=jdx*3;master_mode=15; kii=k(add_num+1:end,add_num+1:end); kij=k(add_num+1:end,1:add_num);
%提取约束模态
fi_res2=cat(1,eye(add_num),-inv(kii)*kij);
%合并总模态
fi_2=cat(2,fi_res2,fi_unres2);
%用模态对刚阵和质量阵做第一次坐标变换
k2=fi_2'*k*fi_2;
m2=fi_2'*m*fi_2;
模态综合程序如下: master_mode=15;add_num=jdx*3;Tol_num=length(k1);
%master_mode为主模态保留阶数,add_num为界面上自由度数,Tol_num为变换后刚度矩阵维数
K=zeros(2*Tol_num);M=zeros(2*Tol_num); %初始化模态综合矩阵
K(1:Tol_num,1:Tol_num)=k1;K(Tol_num+1:end,Tol_num+1:end)=k2;
M(1:Tol_num,1:Tol_num)=m1;M(Tol_num+1:end,Tol_num+1:end)=m2;
%非耦合模态综合矩阵,直接写成矩阵形式
beta=zeros(2*Tol_num,2*master_mode+add_num);
beta(1:master_mode,1:master_mode)=eye(master_mode);
beta(master_mode+1:master_mode+add_num,master_mode+1:master_mode+add_num)=eye(add_num);
beta(master_mode+1+add_num:master_mode+2*add_num,master_mode+1:master_mode+add_num)=eye(add_num);
beta(end-master_mode+1:end,end-master_mode+1:end)=eye(master_mode);
%第二次坐标变换矩阵beta,由位移列车很容易求的
KK=beta'*K*beta;MM=beta'*M*beta;%做第二次坐标变换
[v,d] = eig(KK,MM);tempd=diag(d);[nd,sortindex]=sort(tempd);v=v(:,sortindex); %求解特征值问题
mode_number=1:5;frequency_sum(mode_number)=sqrt(nd(mode_number))/(2*pi);
%得到最终模态综合方法求出频率
MATLAB模态综合法求解结果 阶数
| 1 | 2 | 3 | 4 | 5 | 频率
| 11.5 | 29.1 | 87.7 | 106.8 | 152.5 |
|