필터 지우기
필터 지우기

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.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Numerical 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