0

I am currently working in Nonlinear Friction-Induced Vibration of a Slider–Belt System. I have to solve two set of ordinary differential equation. One is separation equation and another one is reattachment equation.

During vibration, it is necessary to check whether the slider separates from the moving belt or remains in contact with it. The condition for staying in separation only depends on the vertical motion of the vibrating mass m, which is given by the following equation: y(t) > 0.

I have to solve the equations of motion for the mass during separation and the initial conditions for these separation equations are calculated from the equation of motion of reattachment at the last moment in contact. Then, the vertical displacement y(t) of the mass is monitored at the end of each time step. The condition for reattachment is when y(t) becomes zero, which means that the mass is vibrating downward back to the original static position.

At this moment, the slider is just touching the moving belt without any contact force. If y(t) becomes negative at the end of a time step, then the bisection method is used to and the critical point, at which y(t) is very near zero satisfying the defined tolerance in the MATLAB codes, where the dynamics switches from separation phase to reattachment phase

After reattachment, the equations of motion of this system have to be solved until the condition of separation is satisfied again and the initial conditions are calculated from separation governing equation at the last step before reattachment.

This scenario of switching between contact and separation can be repeated. My code is given below and it is not giving correct results and I am not able reproduce the figure no 10 which is there in the journal paper titled “Nonlinear Friction-Induced Vibration of a Slider–Belt System’’

Function File:

function xdot = Numerical(~,x) global m c1 c2 k1 k2 k3 knl F nu

if( (abs(x(3)) == 0) )

xdot = [x(2); -((k1/m)+(k3/2*m))*x(1)-(c1/m)*x(2)-((-k3/2*m)+((nu*k2)/m))x(3)-((nuknl)/m)*(x(3))^3; x(4); (k3/2*m)*x(1)-((k2/m)+(k3/2*m))*x(3)-(c2/m)x(4)-(knl/m)(x(3))^3-(F/m)]; % Ignoring separation

else

xdot = [x(2); -(c1/m)*x(2)-(k1/m)*x(1)-(k3/2)*x(1); x(3); -(c2/m)*x(4)+(k3/2*m)*x(3)-(k3/2*m)*x(3)-(F/m)]; % Considering separation

end end

Run File:

clc; clear all; global m c1 c2 k1 k2 k3 knl F nu

m = 5; c1 = 0; c2 = 0; k1 = 100; k2 = 50; k3 = 60; knl = 100; F = 80; nu = 0.7;

x0 = [0; 0; -1.5; 0]; % initial condition tspan = [0 100]; % time span

[t,x] = ode45('Numerical',tspan,x0); % Solver

p = x(:,1); % Displacement in x direction 
q = x(:,2); % Velocity in x direction 
r = x(:,3); % Displacement in y direction 
s = x(:,4); % Velocity in y direction plot(t,r);
halfer
  • 19,824
  • 17
  • 99
  • 186
  • When doing numerics, then you can be quite sure that the question `abs(x(3))==0` is always going to evaluate to false. instead use that it is less than a tolerance, i.e. `abs(x(3))<1e-5`, this might be your problem. – Nicky Mattsson Feb 28 '17 at 09:07
  • @NickyMattsson is correct. Additionally, it's a bad idea to include any kind of discontinuity in and ODE function, as they can cause stiffness and yield incorrect results. You should instead use [event location](http://www.mathworks.com/help/matlab/math/ode-event-location.html) to cleanly and accurately integrate across the discontinuity. See these questions: [1](http://stackoverflow.com/q/36677683/2278029), [2](http://stackoverflow.com/q/13755352/2278029), [3](http://stackoverflow.com/q/22818556/2278029). – horchler Feb 28 '17 at 16:46
  • Also, unless your version of Matlab is more than 10 years old, I recommend reading about using [anonymous functions](https://www.mathworks.com/help/matlab/math/parameterizing-functions.html#bsgprpq-8) to [specify your integration function and parameters](https://www.mathworks.com/help/matlab/ref/ode45.html#bu3uhuk) (instead of a string and globals, which are slower and bad style). – horchler Feb 28 '17 at 16:49
  • Are the graphs plotted using same coefficients as in your equations ? – SACn Mar 01 '17 at 06:14
  • Yes sir @ Sachin. – Deva Rajan Mar 01 '17 at 06:17
  • @ horchler. Thanks for your idea. I have used event fucnction and still i am not able to get my results. The objective is , i have to solve IS( ignoring equation when y (displacement of the slider ) is zero during time period 0-100 seconds with initial conditions. After that i have to solve CS ( considering separation) equation once y beomes more than zero and also i have to use the initial conditon at the last moment when the silder touches the belt. – Deva Rajan Mar 01 '17 at 06:26

0 Answers0