SDT-rotor Contents   Functions      PDF Index |
We consider a simple rigid disk of axis Y, thickness h, radius R, mass m. This simple example is very useful because we can easily compute matrices in both of global and local frame for a simple description of motion with 4 DOF. Besides we can compute in SDT equivalent matrices for a mass1 rigid disk, for a disk described by a beam1 element and for a volume disk in hexa8 elements. Then we can compare gyroscopic matrices and make sure that their implementation for each element is correct.
The motion of the disk is described by 2 translations (uc and wc) and 2 rotations DOF (θu and θw). Disk is assumed to be rigid so displacements at each point of the disk are given by the shape functions
(4.1) |
Rotation matrix (2.3) along Y axis is given by
(4.2) |
Using matrix expression given in section 2.1.1 in body fixed local rotating frame, and projecting the integrals by assuming rigid disk motion
(4.3) |
with Iu=Iw=1/4mR2+mh2/12
(4.4) |
(4.5) |
(4.6) |
An unbalanced mass is represented by a static load in the local rotating frame
(4.7) |
Local frame (indexed with L) is rotating in global fixed frame (indexed with G) according to rotation matrix
(4.8) |
so that we have
{qL}=[Rt]{qG}
{qL}=[Rt] {qG}+[Ṙt] {qG}
{ qL}=[Rt] { qG}+2[Ṙt]{qG}+[ Rt] {qG}
and equation (4.6) can thus be rewritten as
(4.9) |
One has RT Ṙ=Ω [
0 | −1 |
1 | 0 |
] and RT R=Ω2 [
1 | 0 |
0 | 1 |
] thus in the gyroscopic effect the translation terms disappear and one has
[DG]=2Ω[ |
| ] |
with Iv=1/4mR2=Iu−2mh2/12 and the xxx UNEXPECTED xxx centrifugal softening in the global frame
[KcG]=−Ω2[ |
| ] |
An unbalanced mass is represented by a rotating load in the global fixed frame
(4.10) |
This validation example considers a disk meshed with hexa8 volume elements. Local frame matrices are computed and projected on the geometrical rigid body modes (x and z translations, and corresponding rotation). One checks matching of
% model of disk: R1=.01;R2=.15;h=0.03;rho=7800; md=d_rotor(sprintf('testvoldisk -dim %.15g %.15g %.15g 5 24',R1,R2,h)) md.DOF=[];md=fe_caseg('assemble -se -matdes 2 1 7 8 not',md); % disk assumed to be rigid: rb=feutil('geomrb',md); cf=feplot(md); cf.def=rb; md.K=feutil('tkt',rb.def(:,[1 3 4 6]),md.K); md.DOF=[1.01 1.03 1.04 1.06]'; md.K{2}=0*md.K{2}; % rigid disk md.K{2}(1,1)=5e5;md.K{2}(2,2)=5e5; % bearing md.K{2}(3,3)=1e5;md.K{2}(4,4)=1e5; % bearing rot /XXX % Campbell in local rotating frame: fe_rotor('campbell-critical',md,linspace(0,9000,31)); % Unbalanced mass: w=1; t=12; wrange=logspace(0,3,100); Q=[]; for j1=1:length(wrange);w=wrange(j1); % rotation matrix R=[cos(w*t) -sin(w*t); sin(w*t) cos(w*t)]; R=[R zeros(2);zeros(2) R]; Rp=w*[-sin(w*t) -cos(w*t); cos(w*t) -sin(w*t)];Rp=[Rp zeros(2);zeros(2) Rp]; Rpp=-w^2*R; % Global matrices MG=R'*md.K{1}*R; DG=2*R'*md.K{1}*Rp + R'*w*md.K{3}*R; KG=R'*md.K{1}*Rpp + R'*w*md.K{3}*Rp + R'*w^2*md.K{4}*R + R'*md.K{2}*R; % compare to theoretical values m=pi*(R2^2-R1^2)*3e-2*7800; Iv=0.5*m*(R2^2+R1^2); Iu=0.5*Iv+m*h^2/12; DGth=zeros(4); DGth(4,3)=Iv; DGth(3,4)=-Iv; DGth=w*DGth; KGth=diag([0 0 1 1]); KGth=-w^2*Iv/2*KGth; if norm(KG-R'*md.K{2}*R-KGth)/norm(KGth)>5e-2;error('Cent. soft mismatch');end if norm(DG-DGth)/norm(DGth)>5e-2; error('gyro matrix mismatch'); end % unbalanced mass: X0L=inv(md.K{2}+w^2*md.K{4})*w^2*[1 0 0 0]'; % local X0L=abs(X0L(1)); X0G=inv(-w^2*MG+1i*w*DG+KG) *w^2*[-1i 1 0 0]'; % global X0G=abs(X0G(1)); Q(1,j1)=X0L; Q(2,j1)=X0G; end figure(4);semilogy(wrange*60/2/pi,Q(1,:),wrange*60/2/pi,Q(2,:)); legend('local','global'); title('Unbalanced mass');setlines xlabel('Rotation velocity [RPM]'); ylabel('Amplitude [m]') if norm(Q(1,:)-Q(2,:))/norm(Q(1,:))>1e-8; error('Global/Local error'); end % check mass1 gyroscopic matrix 70: mdmass=struct('Node',[1 0 0 0 0 0 0], ... 'Elt',[Inf abs('mass1') 0; 1 m m m Iu Iv Iu]); mdmass=fe_case(mdmass,'fixdof','Base',[1.02 ;1.05]) mdmass=fe_caseg('assemble -se -matdes 2 1 70',mdmass) if norm(w*mdmass.K{3}-DGth)/norm(DGth)>1e-8; sdtw('_err','mass1 gyro 70 unmatch'); end % check beam1 gyroscopic matrix 70: Omega=[0 1 0]; % axis of the disk mdbeam1=struct('Node',[1 0 0 0 -h/2*Omega; 2 0 0 0 h/2*Omega],... 'Elt',[Inf abs('beam1') 0; 1 2 1 1 0 0 0]); mdbeam1.il=p_beam('convertto1',p_beam(sprintf('dbval 1 TUBE %.15g %.15g',R2,R1))); mdbeam1.pl=m_elastic('dbval 1 steel'); mdbeam1=fe_case(mdbeam1,'fixdof','fix1',... [1+(find(Omega)+[0;3])/100;2+(find(Omega)+[0;3])/100]); rb=feutil('geomrb',mdbeam1); mdbeam1=fe_case(mdbeam1,'DofSet','fix2',rb); rb=fe_simul('static',mdbeam1); mdbeam1=fe_case(mdbeam1,'remove','fix2'); mdbeam1.DOF=[]; mdbeam1=fe_caseg('assemble -se -matdes 2 1 70',mdbeam1); mdbeam1.DOF=fe_case('gettdof',mdbeam1); rb=feutil('placeindof',mdbeam1.DOF,rb) mdbeam1.K=feutil('TKT',rb.def(:,setdiff(1:6,find(Omega)+[0 3])),mdbeam1.K) if norm(w*mdbeam1.K{3}-DGth)/norm(DGth)>1e-8; sdtw('_err','beam1 gyro 70 unmatch'); end
The response to the unbalanced mass is the same in both of the 2 frames.
The maximum of response matches rotation speed found as critical speed for forward whirl in local and global Campbell diagram.
Note that we can compute Campbell in local frame from Campbell in global frame with:
fL(F)=||fG(F)−Ω|| for forward modes and
fL(B)=||fG(B)+Ω|| for backward modes.
The 2 Campbell diagrams have been computed using matrices in corresponding frame and we check that we can pass from one to other using these formulas.
XXX In this example:
- Centrifugal softening in global fixed frame? Not 0
- In GLOBAL frame gyroscopic matrix DG do not modify unbalanced response because only translation dof are affected...
- In LOCAL frame gyroscopic D do not modify unbalanced response:
X0L=inv(md.K2+w2*md.K4)*w2*[1 0 0 0]'; % local