请问有做Jeffcott转子振动仿真的吗?
大家好 请问有做Jeffcott转子振动仿真的吗?我编程用的是闻邦椿、武新华等著的《故障旋转机械非线性动力学的理论与实验》一书中的运动微分方程,程序编出来没有提示错误,可是输出图形跟书上的不一样啊,轴心轨迹不封闭,有没有高手帮忙指点一下啊,谢谢大家了! 为什么没人回复我呢?是我的提问有问题吗?还是我应该去别的版块提问啊? 将程序帖上来,大家一起分析一下 回复 jgwang 的帖子function out=liewenfun(t,z,flag)
omega=1000; % 轴的转速
a=0.0135; % 裂纹深度
r=0.015;L1=0.57; % r转轴半径/,L1转轴长度/
R=0.025;L=0.012; % R轴承半径/,L轴承长度/
b=0.05*10^(-3); % b圆盘偏心率/
m1=4.0;m2=32.1; % m1轴承处的等效集中质量/,m2转轴中央圆盘质量/
c=0.11*10^(-3); % c轴承间隙/
beta=pi;mu=0.018; % beta裂纹方向与偏心之间的夹角,mu润滑油粘度/
c1=1050.0;c2=2100.0; % c1转子在轴承处的结构阻尼/,c2转子在圆盘处的结构阻尼/
k=2.5*10^7;g=9.8; % k转轴刚度/
epsilon=3.3064e-007;delta=3.0244e+006; % epsilon与delta为仅与裂纹深度a有关的相关刚度参数
P=0.5*m2; % P转子圆盘重量的一半
theta=omega*t+beta; % theta裂纹截面转角
F=(1+cos(theta))/2; % F裂纹开闭规律,描述的是裂纹转角对实际裂纹轴刚度的影响规律(裂纹开闭规律模型有好几种,我用的是比较简单的余弦波模型)
s=(mu*omega*R*L*((R/c)^2)*(L/(2*R))^2)/P; % s为Sommerfeld修正系数,c平均油膜厚度
xi1=c1/(m1*omega);eta1=k/(m1*omega^2); % 方程无量纲化后的系数
xi2=c2/(m2*omega);eta2=2*k/(m2*omega^2); % 方程无量纲化后的系数
G=g/(c*omega^2);M1=(c*m1*omega^2)/(s*P); % 方程无量纲化后的系数
b1=b/c;tau=omega*t;
w=1-epsilon*delta*0.5*F;u=epsilon*0.5*F.*cos(2*tau);l=epsilon*0.5*F.*sin(2*tau);
out=[z(5);...
z(6);...
z(7);...
z(8);...
-(eta1*w+eta1*u)*z(1)-eta1*l*z(2)+(eta1*w+eta1*u)*z(3)+eta1*l*z(4)-xi1*z(5)+fx(z(1),z(2),z(5),z(6))/M1;...
-eta1*l*z(1)-(eta1*w-eta1*u)*z(2)+eta1*l*z(3)+(eta1*w-eta1*u)*z(4)-xi1*z(6)+fy(z(1),z(2),z(5),z(6))/M1-G;...
(eta2*w+eta2*u)*z(1)+eta2*l*z(2)-(eta2*w+eta2*u)*z(3)-eta2*l*z(4)-xi2*z(7)+b1*cos(tau);...
eta2*l*z(1)+(eta2*w-eta2*u)*z(2)-eta2*l*z(3)-(eta2*w-eta2*u)*z(4)-xi2*z(8)+b1*sin(tau)-G];
其中fx、fy为无量纲非线性油膜力
function fxout=fx(x,y,Dx,Dy)
if x-2*Dy~=0
alpha=atan((y+2*Dx)./(x-2*Dy))-0.5*pi*sign((y+2*Dx)./(x-2*Dy))-0.5*pi*sign(y+2*Dx);
else
alpha=atan2((y+2*Dx),(x-2*Dy))-0.5*pi*sign(y+2*Dx)-0.5*pi*sign(y+2*Dx);
end
G=(2/sqrt(1-x.^2-y.^2)).*(pi/2+atan((y.*cos(alpha)-x.*sin(alpha))./sqrt(1-x.^2-y.^2)));
V=(2+(y.*cos(alpha)-x.*sin(alpha)).*G)./(1-x.^2-y.^2);
S=(x.*cos(alpha)+y.*sin(alpha))./(1-(x.*cos(alpha)+y.*sin(alpha)).^2);
fxout=(sqrt((x-2*Dy).^2+(y+2*Dx).^2)./(1-x.^2-y.^2)).*(3.*x.*V-sin(alpha).*G-2.*cos(alpha).*S);
function fyout=fy(x,y,Dx,Dy)
if x-2*Dy~=0
alpha=atan((y+2*Dx)./(x-2*Dy))-0.5*pi*sign((y+2*Dx)./(x-2*Dy))-0.5*pi*sign(y+2*Dx);
else
alpha=atan2((y+2*Dx),(x-2*Dy))-0.5*pi*sign(y+2*Dx)-0.5*pi*sign(y+2*Dx);
end
G=(2/sqrt(1-x.^2-y.^2)).*(pi/2+atan((y.*cos(alpha)-x.*sin(alpha))./sqrt(1-x.^2-y.^2)));
V=(2+(y.*cos(alpha)-x.*sin(alpha)).*G)./(1-x.^2-y.^2);
S=(x.*cos(alpha)+y.*sin(alpha))./(1-(x.*cos(alpha)+y.*sin(alpha)).^2);
fyout=(sqrt((x-2*Dy).^2+(y+2*Dx).^2)./(1-x.^2-y.^2)).*(3.*y.*V+cos(alpha).*G-2.*sin(alpha).*S);
z0='; % 初始值(我自己随便给的)
=ode45('liewenfun',,z0,[])
subplot(2,2,1)
plot(t*1000,z(:,3)) % 裂纹转子响应的时序波形
xlabel('t(milliseconds)');
ylabel('x2');
subplot(2,2,2)
plot(z(:,3),z(:,7)) % 裂纹转子响应的相轨迹
xlabel('x2');
ylabel('Dx2');
subplot(2,2,3)
plot(z(:,3),z(:,4)) % 裂纹转子响应的轴心轨迹
xlabel('x2');
ylabel('y2');
fs=4000;N=1024; % 采样频率和采样点数(我自己随便给的)
n=0:1023;
o=fft(z(:,3)); % 对信号进行快速傅里叶变换
mag=abs(o); % 求得fourier变换后的振幅
fre=n*fs/N; % 频率序列
subplot(2,2,4)
plot(fre(1:N/2,mag(1:N/2)) % 绘出Nyquist频率之前随频率变化的振幅
xlabel('频率Hz');
ylabel('振幅');
写的比较乱,麻烦大家帮忙看看啦
简单看了一下应该是结果提取的问题
稳态问题的数值仿真结果要截取后半段收敛后的数值结果
前半段的数值结果是为收敛了,并不是你要的稳态结果 mjtjiang 发表于 2010-9-27 19:40 static/image/common/back.gif
回复 jgwang 的帖子
function out=liewenfun(t,z,flag)
你好,请问你是做裂纹方向的学长吗?我i刚开始研究裂纹,希望您多指点 本帖最后由 豆浆 于 2013-3-26 10:00 编辑
我运行的这里
回复 jgwang 的帖子
out=[z(5);...
z(6);...
z(7);...
z(8);...
-(eta1*w+eta1*u)*z(1)-eta1*l*z(2)+(eta1*w+eta1*u)*z(3)+eta1*l*z(4)-xi1*z(5)+fx(z(1),z(2),z(5),z(6))/M1;...
-eta1*l*z(1)-(eta1*w-eta1*u)*z(2)+eta1*l*z(3)+(eta1*w-eta1*u)*z(4)-xi1*z(6)+fy(z(1),z(2),z(5),z(6))/M1-G;...
(eta2*w+eta2*u)*z(1)+eta2*l*z(2)-(eta2*w+eta2*u)*z(3)-eta2*l*z(4)-xi2*z(7)+b1*cos(tau);...
eta2*l*z(1)+(eta2*w-eta2*u)*z(2)-eta2*l*z(3)-(eta2*w-eta2*u)*z(4)-xi2*z(8)+b1*sin(tau)-G];
怎么提示??? Index exceeds matrix dimensions. 请各位前辈多指点!
页:
[1]