列车-轨道-桥梁交互仿真研究(Matlab代码实现)

 👨‍🎓个人主页:研学社的博客 

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

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

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

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

目录

💥1 概述

📚2 运行结果

🌈3 Matlab代码实现

🎉4 参考文献


💥1 概述

TTB-2D 软件以 2D 表示形式模拟列车-轨道-桥梁系统的动态响应。火车表示为多个车辆的连续。轨道包括轨道不规则性,并对轨道、垫、枕木、道砟和子道砟进行建模。该桥被建模为具有可定制支撑条件的有限元公式的梁,从而有效地表示各种结构配置。这个经过验证的数值模型考虑了车辆-基础设施的相互作用。

📚2 运行结果

 部分代码:

% Input processing
if calc_type == 0
    out_field = 'StaticShear';
    in_field = 'StaticU';
elseif calc_type == 1
    out_field = 'Shear';
    in_field = 'U';
end % if calc_type == 0
    
% Initialize variables
Sol.Beam.(out_field).xt = zeros(Beam.Mesh.Nodes.Tnum,Calc.Solver.num_t);

% In-line functions (more efficient alternative to subfunctions)
B32_Beam_ele_HS = ...
    @(L,E,I) double(E*I*[[12/L^3,6/L^2,-12/L^3,6/L^2];[12/L^3,6/L^2,-12/L^3,6/L^2]]);

% ---- NO average nodal values ----
if Calc.Options.Shear_calc_mode == 0
    
    for ele = 1:Beam.Mesh.Ele.Tnum

        aux1 = B32_Beam_ele_HS(Beam.Mesh.Ele.a(ele),Beam.Prop.E_n(ele),Beam.Prop.I_n(ele));
        Sol.Beam.(out_field).xt(ele,:) = aux1(1,:) * ...
            Sol.Model.Nodal.U(Model.Mesh.DOF.beam(Beam.Mesh.Ele.DOF(ele,:)),:);

    end %for ele

    ele = Beam.Mesh.Nodes.Tnum;
    aux1 = B32_Beam_ele_HS(Beam.Mesh.Ele.a(ele-1),Beam.Prop.E_n(ele-1),Beam.Prop.I_n(ele-1));
    Sol.Beam.(out_field).xt(ele,:) = aux1(2,:) * ...
        Sol.Model.Nodal.(in_field)(Model.Mesh.DOF.beam(Beam.Mesh.Ele.DOF(ele-1,:)),:);
    
% ---- AVERAGE nodal values ----
elseif Calc.Options.Shear_calc_mode == 1
    
    for ele = 1:Beam.Mesh.Ele.Tnum

        Sol.Beam.(out_field).xt([1,2]+(ele-1),:) = Sol.Beam.(out_field).xt([1,2]+(ele-1),:) + ...
            B32_Beam_ele_HS(Beam.Mesh.Ele.a(ele),Beam.Prop.E_n(ele),Beam.Prop.I_n(ele)) * ... 
            Sol.Model.Nodal.(in_field)(Model.Mesh.DOF.beam(Beam.Mesh.Ele.DOF(ele,:)),:);

    end %for ele

    % Average of nodes with multiple calculations
    Sol.Beam.(out_field).xt(2:end-1,:) = Sol.Beam.(out_field).xt(2:end-1,:)/2;
    
end % Calc.Options.Shear_calc_mode

% ---- Additional Outputs ----

% Maximum Shear Force
[Sol.Beam.(out_field).max,aux1] = max(Sol.Beam.(out_field).xt);
[Sol.Beam.(out_field).max,aux2] = max(Sol.Beam.(out_field).max);
Sol.Beam.(out_field).max_node = aux1(aux2);
Sol.Beam.(out_field).max_COP = Beam.Mesh.Nodes.acum(Sol.Beam.(out_field).max_node);
Sol.Beam.(out_field).max_pCOP = Sol.Beam.(out_field).max_COP/Beam.Prop.L*100;
Sol.Beam.(out_field).max_t_crit = Calc.Solver.t(aux2);
if Sol.Beam.(out_field).max_pCOP < 50
    Sol.Beam.(out_field).max_supp = max(Sol.Beam.(out_field).xt(1,:));
else
    Sol.Beam.(out_field).max_supp = max(Sol.Beam.(out_field).xt(end,:));
end % if Sol.Beam.(out_field).max_pCOP < 50

% Minimum Shear Force
[Sol.Beam.(out_field).min,aux1] = min(Sol.Beam.(out_field).xt);
[Sol.Beam.(out_field).min,aux2] = min(Sol.Beam.(out_field).min);
Sol.Beam.(out_field).min_node = aux1(aux2);
Sol.Beam.(out_field).min_COP = Beam.Mesh.Nodes.acum(Sol.Beam.(out_field).min_node);
Sol.Beam.(out_field).min_pCOP = Sol.Beam.(out_field).min_COP/Beam.Prop.L*100;
Sol.Beam.(out_field).min_t_crit = Calc.Solver.t(aux2);
if Sol.Beam.(out_field).min_pCOP < 50
    Sol.Beam.(out_field).min_supp = min(Sol.Beam.(out_field).xt(1,:));
else
    Sol.Beam.(out_field).min_supp = min(Sol.Beam.(out_field).xt(end,:));
end % if Sol.Beam.(out_field).min_pCOP < 50

% ---- End of function ----

🌈3 Matlab代码实现

🎉4 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]Daniel Cantero (2022) TTB-2D: Train-Track-Bridge interaction simulation tool for Matlab

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

荔枝科研社

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

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

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

打赏作者

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

抵扣说明:

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

余额充值