# solving a 1 DoF MSS-Spring-Damper when the spring stiffness is a function of displacement

4 views (last 30 days)
reza ahmadian on 16 Feb 2023
Commented: reza ahmadian on 19 Feb 2023
Hello guys,
I'm trying to solve a 1 DoF SMD system whith an external force (as a function of time) and a step spring stiffness as a function of the displacement.
Actually, after reaching a specific displacement, there would be a secondary spring (in parallel) so the total stiffness is afunction of displacement.
Any help would be appreciated.
##### 2 CommentsShow 1 older commentHide 1 older comment
reza ahmadian on 17 Feb 2023
Dear Sam,
The equation will be something like :
F(t)=m*x(2)+b*x(1)+k1*x+k2*f1(x)
where f1(x)= x-x1 if x>x1
=0 if x<=x1
x1,x,b,k1 and k2 are constant parameters
There is an external force. the fact is if that force exceed a specific value, the system will reach the engaging point over time, where the secondary spring will get involved.

Sam Chak on 18 Feb 2023
If the system is stiff, then you can try using the ode15s() solver.
In the following example, the external force f(t) is assumed a unit step function. % Parameters
m = 1;
b = 2;
k1 = 1;
k2 = 1;
xd = 0.5;
% Settings
% x(1) is the position of the spring
% x(2) is the time derivative of x(1)
odefun = @(t, x) [x(2);
(heaviside(t) - b*x(2) - k1*x(1) - k2*((x(1) - xd).*heaviside(x(1) - xd)))/m];
tspan = [0 15];
x0 = [0 0];
% Solving and plotting
[t, x] = ode15s(odefun, tspan, x0);
plot(t, x), grid on
xlabel('t'), ylabel('\bf{x}')
legend('x_1', 'x_2', 'location', 'east') reza ahmadian on 19 Feb 2023
Thanks Sam,
That helped me alot, although I managed to model the problem by Simulink, the answers looks ok now

### Categories

Find more on Programming in Help Center and File Exchange

R2022a

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!