ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Abaqus车辆-轨道耦合动力学建模:从方案设计到求解控制

Abaqus车辆-轨道耦合动力学建模:从方案设计到求解控制 Abaqus的车辆-轨道模型我前后折腾了快三年才敢说真正入了门。这个方向不像单纯的结构静力分析轮轨接触、悬挂系统、轨道不平顺全压在一起每一步都是坑但只要把底层逻辑捋顺了建模速度能快好几倍。我看网上相关的视频教程不少但大多只教点鼠标的操作不讲为什么这么做导致很多人照着做完了还是改不了一参数就崩。这篇就把我自己建模过程中反复踩过的坑、验证过的思路从方案设计到具体操作完整过一遍。1. 车辆-轨道模型到底在仿真什么1.1 模型背后的工程需求先说清楚这个模型是用来干嘛的不然你连该简化什么都判断不了。车辆-轨道耦合动力学分析核心是研究轮轨之间的相互作用力、车辆运行稳定性、轨道结构的动力响应。工程上最常见的场景有三个一是列车提速或新线路设计时评估车辆动力学性能二是研究轨道不平顺对轮轨力、车体加速度的影响三是钢轨伤损、波浪形磨耗形成机理研究。我把话放这儿如果你只是需要看个动画、出个应力云图那这个模型价值不大它真正的价值在于给出定量的轮轨接触力、加速度时程和疲劳损伤参数。所以建模的每一个环节都要为从哪几个物理量里提取结果服务。比如关注轮轨垂向力接触算法就必须考虑法向穿透控制关注横向稳定性轮轨蠕滑力的计算精度就得足够高关注轨道结构疲劳钢轨网格就不能太粗否则应力集中区域根本捕捉不到。1.2 简化到什么程度才够用很多初学者最大的误区是建模越细越真实结果模型几百个部件、几百万单元算起来遥遥无期或者频繁因为接触穿透、单元畸变崩溃最后不得不删删改改时间全搭进去了。我的建议是按研究目标分层简化。如果目标是车辆动力学响应也就是看车体、转向架的振动加速度和轮轨作用力车辆部分完全可以简化为刚体弹簧阻尼系统。车体、构架、轮对用刚体或解析刚体悬挂用弹簧阻尼单元轨道则简化为弹性支承梁或连续弹性体。这样模型自由度大幅下降接触计算速度能提升一个数量级。如果目标是轨道结构响应比如钢轨应力、轨枕受力、道床振动传播那轨道部分必须建实体或梁壳模型几何细节要跟上车辆部分反而可以用简化的轮对质量块甚至移动载荷代替。如果目标是轮轨接触微观行为比如接触斑内的应力分布、塑性变形那就只能做局部精细模型整车的黄下质量用边界条件代替不必把整个转向架建进去。这条原则贯穿全文你先记下来模型复杂度永远跟着你要提取的结果走而不是跟着实物走。2. 建模前必须想清楚的几个方案问题2.1 单位制与量级控制Abaqus不强制你用什么单位制但你自己必须统一。我最常用的组合是mm、tonne、s、N、MPa也就是长度用毫米质量用吨时间用秒力用牛应力用MPa。钢材密度用7.85e-9 tonne/mm³弹性模量2.1e5 MPa重力加速度9800 mm/s²加速度单位就是mm/s²提取轮轨力默认显示为N。别小看这一步我见过太多同事模型几何没问题结果材料参数输错导致应力大几个数量级。除了参数数值几何尺寸也得跟单位对齐如果从CAD导入的是米制模型导入Abaqus后必须缩放1000倍转成毫米否则单位不一致网格划分时容易出现高度畸形的单元。还有一个容易忽略的量级问题是时间尺度。隐式分析里如果用了确定性的轨道不平顺激励分析时间至少要覆盖列车通过几个转向架间距的长度否则稳态响应根本建立不起来。显式分析里则受限于稳定时间步长钢轨单元尺寸越小步长越小总分析时间就越长。做方案阶段就要估一下轮轨接触区网格如果细化到1mm显式稳定步长大概只有0.1微秒量级跑10米轨道的模拟可能需要数百万步这个计算量普通工作站扛不住。所以在建模前就把网格尺寸、分析步长、总时长这两三类参数定下来后面省去反复推倒重来的痛苦。2.2 车辆子系统建模思路整车模型的主体结构是车体、构架转向架、轮对以及它们之间的悬挂系统。车体、构架在大多数动力学分析里直接用刚体Rigid Body就行。原因很简单它们的刚度远大于悬挂系统变形量级对轮轨力的影响微乎其微而刚体化后能省去大量实体单元自由度。刚体部件建好之后重点关注的是质心位置、转动惯量和约束参考点。质心偏移一丝车体点头和侧滚频率就完全不同结果会明显偏离真实情况。转动惯量如果手头没有试验数据可以用经验公式估算但需要在报告里注明来源。轮对是否建为刚体要看目标。如果只关心垂向轮轨力刚体足够如果想看轮对本身的弹性振动或热负荷引起的轮轨力波动就需要建弹性体。弹性轮对应注意轮轨接触区网格密度这个后面单独讲。悬挂系统是最容易建模出错的地方。Abaqus里面可以用Spring/Dashpot单元模拟一系、二系悬挂也可以用Connector单元。用Spring/Dashpot的话参数直接给刚度K和阻尼C就行一系悬挂轴箱-构架和二系悬挂构架-车体参数不一样方向也不一样垂向刚度主责支撑横向和纵向刚度决定蛇行稳定性。用Connector的话自由度拆得更细节可定义非线性的刚度曲线和阻尼曲线适合研究悬挂失效等特殊工况。2.3 轨道子系统建模思路轨道模型的选择直接决定计算成本。经典做法是三层结构钢轨、轨枕、道床或路基。每一层之间用弹簧阻尼连接器跨接模拟扣件、道床的弹性和阻尼。钢轨如果简化得好整个轨道系统自由度比车辆系统还少。但如果你要研究钢轨伤损、扣件失效或者轨道结构应力钢轨就不能用梁单元得建三维实体。这时问题来了钢轨纵向很长通常模型取50~200米横截面形状又复杂怎么在保证接触精度的前提下控制自由度我的办法是钢轨接触区用实体单元加密远离接触区的轨底、轨腰可以放宽网格。模型纵向分段中间研究区段精细两端过渡区逐渐放大网格末端用无限元或黏性边界吸收反射波。这个思路很多视频里没细讲但确实是最省计算资源的做法。扣件系统通常用弹簧阻尼单元模拟一个扣件位置放一组三向弹簧阻尼垂向刚度横向刚度纵向刚度参数从铁路规范或文献里找。轨枕如果是混凝土轨枕用弹性体简化建模即可如果是宽轨枕或道岔区就需要细节模型。道床可以简化为弹性基础或者连续体但要注意阻尼的取值轨道系统的阻尼比一般在0.01~0.05之间取值不同对共振响应影响很大。3. 从零搭建模型的操作记录3.1 材料定义与截面指派在Part模块把几何模型准备好之后第一件事是进Property模块定义材料。钢材给弹性参数就够了密度7.85e-9、弹性模量2.1e5、泊松比0.3。如果涉及塑性定义应力-塑性应变曲线注意Abaqus用的是真实应力应变不是名义应力应变拉伸试验数据要换算一下。材料定义好后要指派截面。这里有个新手常见问题Solid截面是不需要指定厚度的Shell要指定厚度Beam要在截面里定义梁截面形状和方向。车辆-轨道模型里钢轨用实体或梁都行但如果是梁单元截面方向必须仔细检查默认方向往往和实际安装方向不一致导致惯性矩错误计算结果直接废了。如果用了刚体刚体部件本身不需要材料但它们需要定义质量属性。在Special模块里Assign Inertia给每个刚体的参考点指定质量和转动惯量。忘了给刚体赋质量的后果是模态计算时刚体频率为0或者显式分析里刚体乱飞各种离奇错误。3.2 装配、接触与连接单元设置进入Assembly模块后把车辆各部件、轨道各部件按车-轨相对位置装配到位。这里有个细节轮对初始位置必须和钢轨顶面留一点点间隙或者刚好接触但不能穿透。如果初始穿透量太大隐式分析第一步就不收敛显式分析则会在初始步产生巨大的冲击力结果也是错的。我一直用平移让轮对最低点比钢轨顶面高0.01mm的办法然后靠重力让它自然落座。这样一个微小间隙不影响初始接触状态同时又避免了穿透问题。这一步看似简单但影响很大值得每次建模都刻意检查一遍。接触定义推荐用通用接触General Contact公式化简单自动检测所有接触面适合轮轨这种多体动态接触场景。但要注意指定接触属性法向行为用硬接触Hard Contact切向行为考虑摩擦。轮轨之间的摩擦系数取值干净干燥条件一般在0.3~0.5之间雨天或受污染轨道要低很多。研究全滑动或蠕滑力-滑移率关系时可以用Abaqus提供的可选摩擦公式这里的参数需要参考Kalker滚动接触理论来标定不是随便给个常数就完事的。如果模型里还有轮缘贴靠钢轨轨侧的工况别漏了轮缘与轨侧的接触对。很多新手只看踏面接触结果横向力分析空载拿到的结果完全无法解释。连接单元方面一系和二系悬挂的Spring/Dashpot单元要选择正确的连接方向和自由度。用Cartesian连接器可以定义三个方向的刚度阻尼还能设置止档锁止行为模拟减振器限位。如果要考虑悬挂元件的非线性特性直接给非线性刚度曲线即可。3.3 分析步、载荷与边界条件设置建模完成后进入Step模块。我常用的两步走流程第一步Static, General或隐式动力Static。在这个分析步里施加重力载荷让车辆在轨道上自然落座轮轨接触建立稳定同时确认接触状态没有突变。第二步动态分析。如果研究瞬态冲击用Explicit显式如果研究稳态周期响应用隐式动力Implicit Dynamics。车辆运行时速通常换算成角速度或速度边界条件加到轮对上。边界条件设置必须讲究物理真实且可算。轨道两端要处理反射波问题我的做法端部节点施加黏性阻尼边界参考Abaqus的Dashpot单元或建立过渡区段加无限元CIN3D8让应力波不反弹回来干扰中部结果。注意无限元在显式分析中不是所有版本都支持低版本Abaqus要慎用。车体上的约束主要是自由度限制比如限制横向位移模拟线路约束或者让车体前后端约束纵向自由度防止整车乱跑。但千万别把车体的垂向位移也约束死否则重力载荷就没法传递到轮轨接触上了这个错误导致过好多人的结果完全没意义。4. 网格划分与求解控制4.1 网格策略哪里有密度给哪里网格划分大概是整个建模过程里最需要经验的地方。先给结论轮轨接触区网格细到1~2mm非接触区可以到5~20mm过渡用渐变网格。原因有两层。第一层是接触计算本身的精度要求接触算法是通过节点或单元面判断是否穿透网格太粗接触斑形状都捕捉不到接触力峰值直接被低估。第二层是稳定时间步长限制显式分析中稳定时间步长约等于最小单元边长除以波速网格越细步长越小总计算时间指数级增长所以不能全模型都加密。钢轨横截面网格怎么切我通常把踏面接触区域单独切成一块矩形区域内部用C3D8R六面体单元边角也用六面体扫掠网格。轮对踏面要做网格种子加密保证轮轨接触面的网格密度匹配。接触面上如果两边网格密度差太多接触应力容易出现严重振荡。轨枕、道床这些地方网格就宽松多了C3D8R或C3D6都行。车体和构架如果是刚体不参与网格划分用刚体表面即可。网格质量检查这一步不能省。Abaqus的Mesh模块里Verify功能可以查单元扭曲度Skew、翘曲度Warpage、长宽比Aspect Ratio。出现高度歪斜的单元必须手动调种子或切分区域修复否则隐式分析不收敛、显式分析会触发畸变爆炸。我自己吃过亏钢轨轨底圆弧处网格怎么切都歪最后用六面体主导Hex-dominant混合网格解决了。4.2 显式与隐式的选择逻辑这个选择直接决定你后面所有求解器参数怎么设。简单说如果关注的是瞬态大变形、冲击、碰撞用Explicit显式如果关注的是稳态动力响应、特征值附近的小振动用Implicit隐式。车辆-轨道耦合建模里跑高速、过道岔、车轮扁疤冲击这类场景轮轨力变化剧烈用Explicit最稳。但Explicit的代价就是前面说的时间步长太小有时候一个模型要跑几十个小时。缓解办法是质量缩放Mass Scaling适当增大密度来放大稳定步长代价是惯性力失真。缩放系数别超过1e4缩放区域只放在非关键部位轮轨接触区不要缩放这是我目前能接受的平衡点。隐式分析没有稳定时间步长问题但有收敛问题。轮轨接触分离再接触的过程是强非线性行为经常遇到不收敛。我的经验开启自动稳定Automatic Stabilization并设置合适的阻尼系数用足够小的初始增量步比如1e-4秒同时接触控制里把Allow Separation正确设置能解决大半收敛难题。4.3 轨道不平顺的施加方法轨道不平顺是车辆-轨道动力学模型里绕不开的激励源。这里讲两种常用方法。方法一节点位移加载法。在钢轨左右轨面节点上按波长和幅值直接施加垂向或横向位移历史模拟轨道高低不平顺和轨向不平顺。这是最快的方法缺点是没有考虑不平顺与轨道结构的耦合效应适合研究车辆响应。方法二几何建模法。直接把钢轨轨面几何形状建造成不平顺的形状比如余弦形凹坑或正弦形波磨。这个办法更真实因为轮轨接触几何关系自然成立不需要额外加载。缺点是建模工作量大而且网格要跟着不平顺形状走划分难度高。我的实操建议先小心验证方法一的激励传递路径是否正确当需要研究轮轨磨耗耦合问题时再切换到方法二。另外无论是哪种方法都要注意轨面不平顺的波长覆盖范围。垂向短波不平顺影响轮轨力冲击中长波不平顺影响车体振动舒适度建模时至少覆盖你关心的那一段波长区间。5. 常见问题与排查技巧5.1 接触不收敛和穿透怎么治隐式分析最常见的报错就是Too many attempts made for this increment或者接触状态不断振荡难以收敛。我的排查顺序Contact Stabilization先开起来设一个小阻尼比如0.01先把初始接触稳定住。如果还振荡检查初始过盈量——轮对和钢轨必须没有初始穿透哪怕0.05mm的穿透都可能造成振荡。再看材料参数时间步长问题。隐式分析中如果定义了率相关材料或塑性材料刚度突变时也容易出现收敛困难。这时把增量步调小最大增量步数调大让求解器慢慢爬过去。显式分析更常见的是高频接触振荡接触力像噪声一样剧烈跳动。排查方法是看接触面网格匹配度如果轮对网格和钢轨网格尺寸差别过大接触力在最开始几百步内会有明显的高频振荡。解决办法是统一接触区网格尺寸或者Abaqus里默认的接触离散化方法Surface-to-surface改成Node-to-surface试试。5.2 沙漏和单元畸变细长单元和弯曲受载区域容易出现沙漏模式Hourglassing能量输出显示大量伪变形能。排查方法在后处理里查看ALLAE伪应变能和ALLIE内能的历史曲线如果ALLAE/ALLIE超过5%说明网格质量出问题了。我的标准处理流程第一步检查是不是用了减积分单元C3D8R如果是考虑换成C3D8I非协调模式单元或者C3D8全积分单元。全积分单元虽然没有沙漏问题但容易锁死对接触和弯曲问题并不总是更好。第二步给C3D8R单元加沙漏控制在Section Controls里设置Enhanced增强型沙漏控制这是最省事的方案很多问题加了这个就解决了。单元畸变常见于大变形工况比如车轮过道岔时的轮缘接触区。如果计算中单元过度扭曲Abaqus会报负雅可比错误这时要回到网格模块把畸形单元找出来局部加密或重新划分。不要试图靠调求解器参数绕过这个问题单元网格质量差是硬伤。5.3 计算时间太长怎么办这是所有做车辆-轨道模型的人都要面对的终极问题。解决方法按优先级排第一严格算一遍稳定时间步长和总增量步数的关系。如果总时间步数超过几百万就得回头动网格或动缩放。第二合理设置质量缩放区域整个模型统一缩放是最笨的办法应该只对非关键的大质量部件缩放。第三充分利用Abaqus的MPI并行多核跑DMP并行计算节点数足够的话提升很可观。还有一个容易忽略的优化点输出控制。后处理不关心的中间增量步千万别每步都输出海量场变量我见过有人模型本身挺快结果一个Job跑了三天是因为每步都写着几十GB的结果文件。输出频率改成每10步或每0.001秒输出一次结果文件小几倍后处理也流畅得多。最后说一个我自己摸索出来的习惯任何正式的车辆-轨道模型先做一个缩比验证模型——轨道长度减半、网格适当放粗、只跑0.5秒分析确认整体流程没有错误后再提交完整模型。这样能省下大量试错时间尤其是做批量参数化研究的时候这个习惯能让你从一周一次的建模节奏变成一天好几轮迭代。我自己做参数化研究的时候比如分析不同扣件刚度对轮轨力的影响会专门写一个Python脚本批量改模型中对应的弹簧参数然后在命令行提交多个任务。这个是进阶玩法了但如果你打算持续做车辆-轨道这个方向尽早学起来回报非常大。
返回列表