您的位置:网站首页 > Ansys教程

验证ANSYS输出的整体K和

时间:2010-11-14 12:33:46 来源:未知
 
%
% 目的:验证ANSYS中输出整体刚度矩阵K和整体质量矩阵M
 以一个6单元简支梁模型计算结果为例,相应ANSYS代码见例1所示。
%
% 验证基础:
% (1) 基于模态分析中,验证ANSYS振型是否关于质量矩阵M归一化
% (2) 特征值分析,由K,M计算特征值,即频率和振型,与ANSYS计算结果对比
%
% 注意事项:
% (1) ANSYS输出矩阵以Harwell-Boeing格式存储,并且由于K,M的对称性
      仅存储了对角线以下的元素,因此,在还原矩阵时,还应将对称部分考虑进去。
%
% (2)  关于如何输出K,M的ANSYS命令流以及如何提取Harwell-Boeing格式矩阵,
      可参考前期整理的资料。
%
 Author: J.H.Zhu
 2009-06-09
clc;clear;
% 提取K,M
K1=full(hb_to_msm('stiffness'));
M1=full(hb_to_msm('mass'));
% 还原对角线以上元素,使之为对称阵
K =diag(diag(K1)/2)+K1-diag(diag(K1));
K = K+K';
M =diag(diag(M1)/2)+M1-diag(diag(M1));
M = M+M';
% 特征值分析,即计算频率Freq和振型Phi
[X1,Lamda]=eig(K,M);
[nd,nd]=size(K);
fdof=[1:18]';
pdof=[1,2,17]';% 约束自由度
fdof(pdof)=[];
[nfdof,nfdof]=size(X1);
for j=1:nfdof;
    mnorm=sqrt(X1(:,j)'*M*X1(:,j));
    X1(:,j)=X1(:,j)/mnorm;
end
[L,i]=sort(diag(Lamda));
X2=X1(:,i);
Phi=zeros(18,nfdof);
Phi(fdof,:)=X2;
Freq = sqrt(L)/(2*pi);
% 读取ANSYS输出的频率与振型;
Freq_ansys = load('Freq.txt');
for i =1:6
    name=['mod0',num2str(i),'.txt'];
    Phi_ansys(:,i)=load(name);
end
% 计算两者误差
Err_F = norm(Freq(1:6)-Freq_ansys(1:6));
Err_Phi = norm(Phi(:,1:6)-Phi_ansys(:,1:6));
% 验证归一化
Phi_ansys(pdof,:)=[];
test = Phi_ansys'*M*Phi_ansys;
bar3(test)