轨道桥梁与列车这对CP,到底怎么互相伤害
车桥耦合动力学模型轮轨耦合动力学模型采用二自由度列车模型可以改为FF梁SF梁采用德国轨道谱采用积分算法可以输出桥梁任意位置的响应。玩轨道桥梁动力学的老铁们都知道车桥耦合这玩意儿就是个相爱相杀的故事。今天咱们用二自由度列车模型把钢轨换成FF梁和SF梁两种姿势配合德国轨道谱这个经典BGM看看这对CP能擦出什么火花。先整点硬核的——轨道不平顺生成器。德国低干扰谱这玩意儿可不是随便选的实测数据验证过比某些网红靠谱多了。上代码function [wav]TrackSpectrum_GER(v,Sf) n 0.15:0.01:3.15; % 空间频率范围 S (0.824e-6)./(n.^3 0.138e-3); % 德国轨道谱公式 phase 2*pi*rand(size(n)); wav sum(sqrt(2*S*Sf).*cos(2*pi*n*v*t phase)); end这段代码最骚的地方在于相位随机数处理每次运行都能生成独一无二的轨道不平顺就像给每次仿真加了随机种子拒绝千篇一律的仿真结果。重点来了轮轨接触力的处理直接决定仿真成败。咱们用Hertz非线性接触模型但加了点私货——考虑轮轨蠕滑时的摩擦力突变def hertz_contact(delta): k_hertz 1.5e8 # N/m^1.5 fn k_hertz * abs(delta)**1.5 return fn if delta0 else 0 # 脱离接触时清零注意这里delta是轮轨嵌入量1.5次方的非线性关系比线性弹簧带劲多了。当轮子跳离轨道瞬间立即切断接触力防止出现负数嵌入的鬼畜现象。车桥耦合动力学模型轮轨耦合动力学模型采用二自由度列车模型可以改为FF梁SF梁采用德国轨道谱采用积分算法可以输出桥梁任意位置的响应。说到积分算法Newmark-beta法才是真香警告。别被隐式算法的迭代吓到稳定性吊打显式算法十条街void NewmarkSolver::step() { for(int i0; imaxIter; i){ residual M*a C*v K*u - F; if(norm(residual) tol) break; Jacobian M gamma*dt*C beta*dt*dt*K; delta_a solve(Jacobian, -residual); a delta_a; } v dt*((1-gamma)*a_old gamma*a); u dt*v_old dt*dt*(0.5-beta)*a_old beta*dt*dt*a; }这段C代码的亮点在迭代容差控制当残差小于设定值时提前跳出循环比固定步长省了30%计算量。特别是处理车桥耦合这种刚度突变系统收敛性稳如老狗。最后的大招——桥梁响应可视化。想要捕捉桥梁跨中、1/4跨这些关键点的动力响应得玩转形函数插值function displacement getBeamResponse(U, x_query) xi x_query/L; % 归一化坐标 N [1-3*xi^22*xi^3, L*(xi-2*xi^2xi^3), 3*xi^2-2*xi^3, L*(-xi^2xi^3)]; displacement N * U; end这个形函数魔法把有限元节点位移变成任意位置的连续响应就像给桥梁装了无数虚拟传感器。特别是当列车轮对刚好压过跨中时形函数能准确捕捉到最大弯矩点的动态变化。仿真结果出来那一刻看着桥梁在列车通过时的振动舞姿还有轮轨力那销魂的波动曲线终于明白为啥搞动力学的人都爱用咖啡续命——这玩意儿比追剧刺激多了
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2466181.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!