Devarajan K" wrote in message <o92unj$nfr$1@newscl01ah.mathworks.com>...
> I am currently working in Nonlinear FrictionInduced 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 give 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 FrictionInduced 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)((nu*knl)/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);
>
> Expecting positive reply
>
> Thanks and Regards
> Devarajan K
> kdevarajanmts@gmail.com
Without getting into the details of your problem it seems to me that you should let the odefunctions take care of the reattachmentevents (similar to bouncing?). Have a look at the ballode demofile. There it is shown how to set up the functions necessary to automatically handle such discrete event.
HTH
