Getting unrealistic result in Newmakrs Beta method while solving structural dynamic problem

3 次查看(过去 30 天)
I am finding response of multi degree of freedom system by using Newmarks Beta method. But i am getting some unrealistic value of response.Follwoing is my code.Please help me . Thank you in advance.
u=zeros(24,1); % assume displacemnt
du=zeros(24,1); % assume velocity
M_m=transpose(V_linear)*M*(V_linear); % Modal mass
C_m=transpose(V_linear)*C*(V_linear); % Modal damping
K_m=transpose(V_linear)*K_linear_1*(V_linear); % Modal stiffaness
q=(transpose(V_linear)*M*(V_linear))\transpose(V_linear)*M*u; % Modal displacement ,A\B == inv(A)*B
dq=(transpose(V_linear)*M*(V_linear))\transpose(V_linear)*M*du; % Modal velocity
P(:,1)=transpose(V_linear)*F(:,1); % Modal force
ddq=(M_m)\(P(:,1) - C_m*dq(:,1) - K_m*q(:,1)); % Modal acceleration
gamma=1/2;
beta=1/4;
K_cap=K_linear_1+ ((gamma)/(beta*dt))*C_m+(1/(beta*dt^2))*M_m;
a_n=(1/(beta*dt))*M_m +(gamma)/(beta)*C_m;
b=(1)/(2*beta)*M_m+dt*(gamma/(2*beta)-1)*C_m;
for i=1:(length(time)-1)
P(:,i+1)=transpose(V_linear)*F(:,i+1);% Modal force
P_cap=P(:,i+1)-P(:,i)+(a_n)*dq(:,i)+b*ddq(:,i);
delq=(K_cap)\P_cap; % A\B == inv(A)*B
deldq=(gamma)/(beta*dt)*delq-(gamma/beta)*dq(:,i)+dt*(1-gamma/(2*beta))*ddq(:,i);
delddq=1/(beta*dt^2)*delq -1/(beta*dt)*ddq(:,i)-1/(2*beta)*ddq(:,i);
q(:,i+1)=q(:,i)+delq;
dq(:,i+1)=dq(:,i)+deldq;
ddq(:,i+1)=ddq(:,i)+delddq;
u(:,i+1)=(V_linear)*q(:,i+1);
du(:,i+1)=(V_linear)*dq(:,i+1);
ddu(:,i+1)=(V_linear)*ddq(:,i+1);
tu=u(:,i+1);
tq=q(:,i+1);
tdq=dq(:,i+1);
tddq=ddq(:,i+1);
error=1;
[K_nonlinear]= K_nonlinear_coeeficient_calulcation(u,K_linear_1);
while (error>=0.001)
ttu=tu;
ttq=tq;
ttdq=tdq;
ttddq=tddq;
Pti(:,i+1)=transpose(V_linear)*F(:,i+1) - transpose(V_linear)*(K_nonlinear)*(V_linear)*ttq;
Pcapi=Pti(:,i+1)-P(:,i)+(a_n)*ttdq + b*ttddq;
delqi=K_cap\Pcapi;
deldqi=(gamma/(beta*dt))*delqi-(gamma/beta)*dq(:,i)+dt*(1-gamma/(2*beta))*ddq(:,i);
delddqi=1/(beta*dt^2)*delqi -1/(beta*dt)*ddq(:,i)-1/(2*beta)*ddq(:,i);
tq=q(:,i)+delqi;
tdq=dq(:,i)+deldqi;
tddq=ddq(:,i)+delddqi;
tu=(V_linear)*tq;
error=((tu-ttu)/ttu)*100;
end
u(:,i+1)=tu;
du(:,i+1)=(V_linear)*tdq;
ddu(:,i+1)=(V_linear)*tddq;
end

采纳的回答

SOUMNATH PAUL
SOUMNATH PAUL 2023-12-30
Hi,
I understand you are getting undersired results for Newmark-beta method.
Without more details about your variables used in the code it is bit difficult to diagnose the exact cause of the issue.
To begin with you may try implementing the below points:
  1. Verify initial conditions are set correctly for displacement, velocity, and acceleration.
  2. Confirm that "V_linear", "M", "C", and "K_linear_1" matrices are correctly defined and normalized.
  3. Check that the time step "dt" is small enough to accurately capture the system's dynamics.
  4. Review the convergence criteria and ensure the error calculation is robust, possibly using absolute error to avoid division by zero.
  5. Debug by stepping through the code to examine where unrealistic values originate.
You may also refer to the following page which will give you an idea about Newmark-beta method :
Hope it helps!
Regards,
Soumnath

更多回答(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