Effacer les filtres
Effacer les filtres

How can I simulate nonlinear vibration of sdof system?

3 vues (au cours des 30 derniers jours)
Markus Landwehr
Markus Landwehr le 1 Mai 2017
Commenté : GCats le 27 Mai 2021
Hello everyone, I´m trying to simulate a nonlinear sdof system (see picture).
For this, my program should solve the ODE
% SOLVE d2x/dt2*m + c*dx/dt + k*x + Fr(x) - Fl(x) = F(t)
% initial conditions: x(0) = 0, x'(0)=0
Fr(x) and Fl(x) are the forces of the samples right and left. The mass of the system is clamped between these two. They can be described by a hysteresis, which is calculated by the class "MaterialModel" (attached file).
The approach of my simulation:
At the beginning the function "MaterialModel.fnSetPrestress" is executed. This calculates the prestress and prestrain of the samples at time t = 0. Subsequently, the displacement x of the mass at time t = 0 is calculated. In my case, this is 0, since no external forces are applied and the initial condition is x (0) = 0. In the next time step (t1), the excitation force F (t1) acts on the system, whereby it is deflected. The deflection of the mass results in the right sample being further compressed and the left sample being relaxed. This results in the force Fr (t1) > Fl (t1). For the calculation of Fr (t1) and Fl (t1) the strain eps_r (t1) and eps_l (t1) is first calculated.
The function "MaterialModel.fnCurrentState (eps_r_n, eps_l_n, t_n)" then calculates a delta_eps and delta_t from the difference between the respective values at the current time t1 and the previous time t0. These values are then inserted into the functios "MaterialModel.fnRunPredictorStep; MaterialModel.fnEvaluateFlowCondition; MaterialModel.fnUpdateTemperature;" to calculate the tension of the samples sig_r and sig_l at time t1. The sample forces Fr and Fl can now be calculated using F = sig * A and the Runge-Kutta method (ode45) can solve the ODE up to the time t1 and output the displacement of the mass x (t1). In the last step, the function "MaterialModel.UpdateStateVariables" is called to save the state variables.
After the previously described functions have been executed, the entire sequence for the next time step (t2) is performed until t_end is reached.
The tension of the samples is calculated by a time-incremental predictor-corrector method.
The challenge now is to implement this approach in Matlab. How do I link the solution method of the ODE (ode45) in the program "solver" with the predictor-corrector method in the program "MaterialModell"?
I am happy about any help and feedback. Thanks.
  1 commentaire
GCats
GCats le 27 Mai 2021
Hi Markus, did you ever solve this problem?

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Numerical Integration and Differential Equations dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by