【结构仿真】Newmark方法仿真(结构动力学)(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

Newmark方法是一种广泛使用的结构动力学数值技术,用于模拟结构在各种载荷条件下的动态行为。这种方法以 1950 年代开发的 Nathan Newmark 的名字命名,对于求解承受地震或瞬态载荷的结构的运动方程特别有效。纽马克方法的基本原理涉及将结构的运动方程离散化为常微分方程组。它采用分步积分方案对这些方程进行数值求解,并预测结构随时间的响应。Newmark方法的主要特点之一是它能够处理非线性和阻尼效应,使其适用于分析具有真实材料行为和阻尼特性的复杂结构系统。它还以其无条件的稳定性和数值效率而闻名,能够准确有效地模拟结构动力学。

📚2 运行结果

主函数部分代码:

clc
clear

% Modal parameters
wn = 6.283;   % Eigen-frequency (rad/s)
eta = 0.05;   % Damping ratio
wd = wn * sqrt(1 - eta^2); % Damped eigen frequency (rad/s)
M = 0.2533;   % Mass
K = wn^2 * M; % Stiffness
C = 2 * eta * M * wn; % Damping

% Time domain
t = 0:0.05:10;  % Time from 0 to 10 with a step of 0.05
dt = 0.05;      % Time step

% Harmonic force parameters
F0 = 10;        % Amplitude of force
w = wd;         % Pulsation of the harmonic force
F = F0 * sin(pi() * t / 0.6); % Expression of the harmonic force

% Newmark's method parameters (Constant Average Acceleration)
gamma = 1/2;
beta = 1/4;

% Initialize
u = zeros(size(t));
v = zeros(size(t));
a = zeros(size(t));

% Initial conditions
u(1) = 0;
v(1) = 0;
a(1) = (F(1) - C * v(1) - K * u(1)) / M;

% Precompute coefficients
a1 = 1 / (beta * (dt^2)) * M + gamma / (beta * dt) * C;
a2 = 1 / (beta * dt) * M + (gamma / beta - 1) * C;
a3 = (1 / (2 * beta) - 1) * M + dt * (gamma / (2 * beta) - 1) * C;
k_hat = K + a1;

% Initialize arrays for table
p_hat_arr = zeros(size(t));
a_new_arr = zeros(size(t));
v_new_arr = zeros(size(t));
u_new_arr = zeros(size(t));

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]徐伟,赵先锋,史红艳等.表面微结构刀具流体润滑性能仿真分析[J/OL].润滑与密封:1-9[2024-03-25].http://kns.cnki.net/kcms/detail/44.1260.TH.20240321.1644.032.html.

[2]张光伟,尹福来,程礼林等.全旋转指向式导向钻井工具结构设计与仿真[J/OL].机械设计与制造:1-6[2024-03-25].https://doi.org/10.19356/j.cnki.1001-3997.20240315.006.

🌈4 Matlab代码实现

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用 Newmark β 法求解结构速度、位移、加速度的简单 Matlab 代码示例: ```matlab function [u, v, a, t] = newmark_beta(m, c, k, f, delta_t, beta, gamma, u0, v0, a0, t_end) % m: 质量矩阵 % c: 阻尼矩阵 % k: 刚度矩阵 % f: 外力向量 % delta_t: 时间步长 % beta: Newmark β 方法中的 β 参数 % gamma: Newmark β 方法中的 γ 参数 % u0: 初始位移向量 % v0: 初始速度向量 % a0: 初始加速度向量 % t_end: 模拟结束时间 n_steps = round(t_end / delta_t); n_dofs = length(u0); u = zeros(n_dofs, n_steps+1); v = zeros(n_dofs, n_steps+1); a = zeros(n_dofs, n_steps+1); t = zeros(1, n_steps+1); u(:,1) = u0; v(:,1) = v0; a(:,1) = a0; % 计算初始加速度 a(:,1) = (m \ (f(:,1) - c*v(:,1) - k*u(:,1))); for i = 1:n_steps t(i+1) = t(i) + delta_t; % 计算加速度 a(:,i+1) = (m \ (f(:,i+1) - c*v(:,i) - k*u(:,i))); % 计算位移和速度 u(:,i+1) = u(:,i) + delta_t*v(:,i) + (0.5-beta)*delta_t^2*a(:,i) + beta*delta_t^2*a(:,i+1); v(:,i+1) = v(:,i) + (1-gamma)*delta_t*a(:,i) + gamma*delta_t*a(:,i+1); end ``` 在这个示例中,我们将结构的质量、阻尼和刚度矩阵以及外力向量作为输入参数,并使用 Newmark β 方法计算结构的位移、速度和加速度。您需要提供初始的位移、速度和加速度向量,以及所需的模拟时间步长和结束时间。函数将返回一个包含所有时间步长的位移、速度和加速度矩阵,以及每个时间步长的时间向量。 请注意,此示例代码仅用于说明,可能需要根据实际情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值