zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

MATLAB代码 实现 研究 仿真 交互 桥梁 轨道
2023-09-14 09:14:28 时间

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

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

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

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

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

目录

💥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