ODE45 Multiple Degrees of Freedom Problem

4 visualizaciones (últimos 30 días)
Maximilian
Maximilian el 9 de Nov. de 2022
Comentada: Rena Berman el 15 de Nov. de 2022
Hello,
I am currently trying to model the displacement of a 3DOF system using matlabs ODE45 solver. However as much I try to fix the errors I am getting I do not seem to be making any progress. At the moment I am just trying to get the solver to run without error and will then plot this at a later date. Any advice / help would be greatly appreciated.
These are the errors that I am getting.
Thanks in advance.
  2 comentarios
Stephen23
Stephen23 el 10 de Nov. de 2022
Original question by Maximilian retrieved from Google Cache:
"ODE45 Multiple Degrees of Freedom Problem"
Hello,
I am currently trying to model the displacement of a 3DOF system using matlabs ODE45 solver. However as much I try to fix the errors I am getting I do not seem to be making any progress. At the moment I am just trying to get the solver to run without error and will then plot this at a later date. Any advice / help would be greatly appreciated.
% This script produces a transient response of a 3DOF dynamic model of a
% jacket platform
clear all
clc
% Define global variables which will be used in the other functions
% global M k F I
%% Input Parameters
E=204e+9; % Youngs modulus (GN/m^2)
R=1.25; % Outer radius of steel jacket (m)
r=1.23; % Inner radius of steel jacket (m)
M=9000e+3; % Deck mass (kg)
I=1.35e+9; % Inertia (kgm^2)
a= pi*(R^2-r^2); % Cross-sectional area (m^2)
I2nd= (pi/4)*(R^4-r^4); % Second moment of area (m^4)
l= [16 14 17 13] ; % Length to centre of mass (m)
L = 20 ; % Leg Length (m)
Nrun = length(L);
omega = zeros(3, Nrun); % Natural Frequencies
%% Defining forcing
% Wave specs : Height=2m ; Period=4s
fxa= 0.00;
fxb= 0.00;
fxc= 0.00;
fxd= 0.00;
fya= 371.56;
fyb= 378.96;
fyc= 371.56;
fyd= 351.44;
K=(3*E*I2nd) / (L^3) % Jacket stiffness (N/m)
% Define the mass, stiffness, and damping matirces m, k and c
% and amplitude of force F. We are using proportional damping
m=[ M 0 0 ; 0 M 0 ; 0 0 I ];
k= [ 4.*K 0 (2.*K*(l(1)-l(2))) ; 0 4.*K (2.*K*(l(4)-l(3))) ; 2.*K*(l(1)-l(2)) 2.*K*(l(4)-l(3)) 2.*K*(l(1)^2+l(2)^2+l(3)^2+l(4)^2) ];
c= 0.2*k;
F=[ fxa+fxb+fxc+fxd ; fya+fyb+fyc+fyd ; (fxa+fxb)*l(1)-(fxc+fxd)*l(2)-(fya+fyd)*l(3)+(fyb+fyc)*l(4) ];
% ODE Solution
% Initial Conditions
tspan = [0 1000] ;
z0 = [0 0 0 0 0 0] ;
% Solution
[t, z] = ode45(@(t, z) doffunc(t, z, k, M, I), tspan, z0) ;
%% ODE Function
function zdot=doffunc(t, z, k, M, I)
zdot = zeros(6, 1) ;
zdot(1)= z(4);
zdot(2)= z(5);
zdot(3)= z(6);
zdot(4)= ( - 0.2*((k(1)*z(4)) - (k(3)*z(6))) - (k(1)*z(1)) - (k(3)*z(3)) + F(1))/M;
zdot(5)= ( - 0.2*((k(5)*z(5)) - (k(6)*z(6))) - (k(5)*z(2)) - (k(6)*z(3)) + F(2))/M;
zdot(6)= ( - 0.2*((k(7)*z(4)) - (k(8)*z(5)) - (k(9)*z(6))) - (k(7)*z(1)) - (k(8)*z(2)) - (k(9)*z(3)) + F(3))/I;
end
These are the errors that I am getting.
Rena Berman
Rena Berman el 15 de Nov. de 2022
(Answers Dev) Restored edit

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 9 de Nov. de 2022
Editada: Jan el 9 de Nov. de 2022
The error message tells you, that Matlab fails in the function F. Unfortunately you post the other code, but not the failing function. Please edit the question and add this function also to allow to help you.
Or do you mean this vector?
F=[fxa+fxb+fxc+fxd; ...
fya+fyb+fyc+fyd; ...
(fxa+fxb)*l(1)-(fxc+fxd)*l(2)-(fya+fyd)*l(3)+(fyb+fyc)*l(4) ];
If so, include in in the list of provided parameters:
[t, z] = ode45(@(t, z) doffunc(t, z, k, M, I, F), tspan, z0) ;
...
function zdot=doffunc(t, z, k, M, I, F)
Then inside doffunc the values of the vector F is used, not the function stored in the File F.m .
  1 comentario
Maximilian
Maximilian el 9 de Nov. de 2022
Hello Jan,
Thank you so much I can't believe I missed this.
Thank you for your help

Iniciar sesión para comentar.

Más respuestas (1)

Torsten
Torsten el 9 de Nov. de 2022
% This script produces a transient response of a 3DOF dynamic model of a
% jacket platform
clear all
clc
% Define global variables which will be used in the other functions
% global M k F I
%% Input Parameters
E=204e+9; % Youngs modulus (GN/m^2)
R=1.25; % Outer radius of steel jacket (m)
r=1.23; % Inner radius of steel jacket (m)
M=9000e+3; % Deck mass (kg)
I=1.35e+9; % Inertia (kgm^2)
a= pi*(R^2-r^2); % Cross-sectional area (m^2)
I2nd= (pi/4)*(R^4-r^4); % Second moment of area (m^4)
l= [16 14 17 13] ; % Length to centre of mass (m)
L = 20 ; % Leg Length (m)
Nrun = length(L);
omega = zeros(3, Nrun); % Natural Frequencies
%% Defining forcing
% Wave specs : Height=2m ; Period=4s
fxa= 0.00;
fxb= 0.00;
fxc= 0.00;
fxd= 0.00;
fya= 371.56;
fyb= 378.96;
fyc= 371.56;
fyd= 351.44;
K=(3*E*I2nd) / (L^3) % Jacket stiffness (N/m)
K = 9.1650e+06
% Define the mass, stiffness, and damping matirces m, k and c
% and amplitude of force F. We are using proportional damping
m=[ M 0 0 ; 0 M 0 ; 0 0 I ];
k= [ 4.*K 0 (2.*K*(l(1)-l(2))) ; 0 4.*K (2.*K*(l(4)-l(3))) ; 2.*K*(l(1)-l(2)) 2.*K*(l(4)-l(3)) 2.*K*(l(1)^2+l(2)^2+l(3)^2+l(4)^2) ];
c= 0.2*k;
F=[ fxa+fxb+fxc+fxd ; fya+fyb+fyc+fyd ; (fxa+fxb)*l(1)-(fxc+fxd)*l(2)-(fya+fyd)*l(3)+(fyb+fyc)*l(4) ];
% ODE Solution
% Initial Conditions
tspan = [0 10] ;
z0 = [0 0 0 0 0 0] ;
% Solution
[t, z] = ode45(@(t, z) doffunc(t, z, k, M, I, F), tspan, z0) ;
plot(t,z)
%% ODE Function
function zdot=doffunc(t, z, k, M, I, F)
zdot = zeros(6, 1) ;
zdot(1)= z(4);
zdot(2)= z(5);
zdot(3)= z(6);
zdot(4)= ( - 0.2*((k(1)*z(4)) - (k(3)*z(6))) - (k(1)*z(1)) - (k(3)*z(3)) + F(1))/M;
zdot(5)= ( - 0.2*((k(5)*z(5)) - (k(6)*z(6))) - (k(5)*z(2)) - (k(6)*z(3)) + F(2))/M;
zdot(6)= ( - 0.2*((k(7)*z(4)) - (k(8)*z(5)) - (k(9)*z(6))) - (k(7)*z(1)) - (k(8)*z(2)) - (k(9)*z(3)) + F(3))/I;
end
  1 comentario
Maximilian
Maximilian el 9 de Nov. de 2022
Hello Torsten,
Thank you so much I can't believe I missed this.
Thank you for your help

Iniciar sesión para comentar.

Categorías

Más información sobre Programming en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by