フィルターのクリア

How can I simulate nonlinear vibration of sdof system?

3 ビュー (過去 30 日間)
Markus Landwehr
Markus Landwehr 2017 年 5 月 1 日
コメント済み: GCats 2021 年 5 月 27 日
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 件のコメント
GCats
GCats 2021 年 5 月 27 日
Hi Markus, did you ever solve this problem?

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File ExchangeNumerical Integration and Differential Equations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by