SDT-rotor         Contents     Functions         Previous Next     PDF Index

3.7  Time domain analysis

Once rotor model is created, one can perform time computation. nl_spring function is very useful in that case. Gyroscopic effects can be treated as non linear load depending on instant value of a model DOF (observation of the rotation speed for example). Links between fixed and rotating parts can also be modelized as non linear loads.

3.7.1  Simple example

Following example simply computes the response to an impact on the disk, assuming that rotation speed is 1000 RPM:

 model=d_rotor('TestShaftDiskMdl'); % build simple 1D rotor

 % Define Time option and other parameters:
 opt=fe_time('TimeOpt Newmark .25 .5 0 1e-4 1e4'); % TimeOpt
 Range=struct('Omega',1000/60*2*pi);
 model=stack_set(model,'info','Range',Range);
 opt.matdes=[2 1 70];
 model=stack_set(model,'info','TimeOpt',opt);
 model=fe_rotor('TimeOptAssemble',model);

 % initial impact:
 model=fe_case(model,'DofLoad','In',...
     struct('def',1,'DOF',2.02,...
            'curve',sprintf('TestStep%.15g',opt.Opt(4)*5)));

 % Compute response:
 def=fe_time(model); iiplot(def);

3.7.2  Gyroscopic effects

Gyroscopic coupling is represented by a load −Ω(t).D(Ω=1)*V where Ω is the rotation speed and D the gyroscopic coupling matrix. That can be applied at each step of time using the DofKuva nl_spring non linearity (see sdtweb('nl_spring')).

An unbalanced mass is a load proportional to rotation speed. In the local rotating frame it can be described using nl_spring DofV non linearity.

Following example deals with the simple 1D rotor and performs a time integration in fixed global frame taking in account the gyroscopic effect, for an initial impact on the disk. Note that the non linear holding of the gyroscopic effect is not necessary here since the global frame is considered, and rotation speed is assumed to be constant (1000 RPM). The gyroscopic effects (in green in figure below) are coupling the y and z motion.


Figure 3.7: y (top) and z (bottom) deflection, with (green) and without (blue) gyroscopic effect.

 model=d_rotor('TestShaftDiskMdl');
 model=fe_case(model,'FixDof','Ends',...
           [1.01 1.02 1.03 4.01 4.02 4.03 0.01]);
 % TimeOpt:
 opt=d_fetime('TimeOpt -gamma .501');
 opt.NeedUVA=[1 1 1];
 opt.IterEnd='if ite>90;evalin(''caller'',''assignin(''''base'''',''''def'''',out)'');end';
 opt.Follow=1; opt.RelTol=-1e-5;
 opt.Opt(7)=-1; % factor type sparse  
 opt.Opt(4)=1e-4; opt.Opt(5)=0.6e4; % NSteps
 % Initial impact:
 model=fe_case(model,'DofLoad','In',...
     struct('def',1e3,'DOF',2.02,...
            'curve',sprintf('TestStep%.15g',opt.Opt(4)*5)));
 % Without gyroscopic effect:          
 def0=fe_time(opt,model) % compute
           
 % With NL gyroscopic effects:
 model=stack_set(model,'pro','DofKuva1005', ... % gyroscopic effects 
     struct('il',[1005 fe_mat('p_spring','SI',1) 0 0 0 0 0],...
     'type','p_spring','NLdata',struct(...
         'type','DofKuva','lab','gyroscopic effect', ...
         'Dof',[],'Dofuva',[0 1 0],'MatTyp',70,...
         'factor',-1*1000/60*2*pi,'exponent',1,'uva',[0 1 0])));
      
 def=fe_time(opt,model) % compute
 
 % Display results as curves
 ci=iiplot; 
 iicom('sub 2 1');
 iicom(ci,'IIxOnly',{'disp(1)';'disp(2)'});
 i1=fe_c(ci.Stack{'disp(1)'}.DOF,2+[.02;.03],'ind');
 iicom(ci,sprintf(';cax1;chc%i;cax2;chc%i',i1(1),i1(2)));
 % comgui('ImWrite',comgui('cd','o:\sdt.cur\rotor\plots\shaftdisk_withandwithoutgyro.png'))
 % display deformation
 cf=feplot(model); % display model
 cf.def=def0; % without gyrocopic effects
 cf.def=def;  % with gyroscopic effects

In the fixed basis the simplest bearing model is a linear spring (celas element. In rotating basis, using a spring to model beaing is not possible using a celas element. The nl_spring RotCenter non linearty is usefull to modelize link between rotating and non rotating parts.

In the fixed basis one can use a non linear spring to model the bearing. The nl_maxwell non linearity describes a set of generalized maxwell rheological models that can be used as non linear bearing in the global frame. As an illustration, following example replaces the linear bearing of the 1D rotor by a zener model of the link.

 model=d_rotor('TestShaftDiskMdl'); % Build model
 model=fe_case(model,'FixDof','Ends',...
                     [1.01 1.02 1.03 4.01 4.02 4.03 0.01]); % Clamp ends
 % TimeOpt:
 opt=d_fetime('TimeOpt');
 opt.Follow=1; opt.RelTol=-1e-5;
 opt.Opt(7)=-1; % factor type sparse  
 opt.Opt(4)=1e-4; opt.Opt(5)=0.6e4; % NSteps
 opt.IterInit='model.FNL0=model.FNL+0;';
 % Initial impact:
 model=fe_case(model,'DofLoad','In',...
     struct('def',1e3,'DOF',2.02,...
            'curve',sprintf('TestStep%.15g',opt.Opt(4)*5)));
 % NL bearings
 % define nl_maxwell data
 model.il(ismember(model.il(:,1),[100;101]),:)=[]; % remove properties
 k0=500000; k1=k0/2; c1=600; % 20.41% for f=54.15 Hz
 data=nl_maxwell(sprintf('db Fu"zener k0 %.15g  k1 %.15g c1 %.15g"',k0,k1,c1));
 data.Sens{2}=3.02; % translation sensor defining nl_maxwell inputs
 r1=p_spring('default'); r1=feutil('rmfield',r1,'name'); 
 r1.NLdata=data; r1.il(3)=k0; % translation sensor defining nl_maxwell inputs
 r1.il(1)=100; model=stack_set(model,'pro','bearingy',r1);
 r1.NLdata.Sens={'trans',3.03}; % translation sensor defining nl_maxwell inputs
 r1.il(1)=101; model=stack_set(model,'pro','bearingz',r1);
 
 ci=iiplot(3); % results will be store there
 def0=fe_time(opt,model); % compute

©1991-2023 by SDTools
Previous Up Next