ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

LS-DYNA切缝药包聚能爆破k文件建模与参数设置全解析

LS-DYNA切缝药包聚能爆破k文件建模与参数设置全解析 1. 切缝药包聚能爆破到底在解决什么问题爆破领域的老哥们应该都清楚光面爆破和预裂爆破的核心矛盾就一个字偏。药包在钻孔里爆炸后爆生气体和应力波在岩体里的传播方向是不可控的能量朝着四面八方均匀铺开结果就是孔壁四周都会产生裂纹设计轮廓线之外的岩体照样被拉裂超挖欠挖都来了半孔率也上不去。切缝药包就是为了治这个“偏”字。它的思路非常朴素把药包外面套一个带切缝的管壳爆轰产物在管壳内部先往切缝方向挤压、聚集然后从切缝口喷出去形成一股定向的高速射流。这股射流打在孔壁的某个方向上局部应力集中程度远高于其他方向裂纹优先从这个方向萌生和扩展而管壳本身又挡住了其他方向的爆生气体的直接作用非切缝方向的孔壁损伤就被压下来了。我最早接触这个方向是在做隧道周边孔爆破参数优化的时候当时试了各种装药结构都不理想后来翻文献看到切缝药包聚能爆破的试验数据定向裂纹扩展长度能比普通药包提高百分之三十到五十孔壁损伤范围却明显缩小这个数据对比太直观了所以后来就一直在这个方向做仿真和现场试验。LS-DYNA 在这个问题里扮演的角色就是把上述这个“定向破裂”的物理过程在计算机里重现一遍。你不需要真的去野外打几十发炮眼对比效果也不用反复调整切缝宽度然后报废一批钢管你只需要建立数值模型改参数提交求解看结果。而这一切的输入都集中在一个文本文件里就是 LS-DYNA 的 k 文件也就是 keyword 文件。很多刚接触 LS-DYNA 的人拿到 k 文件第一反应是懵满屏的星号和数字不知道从哪里下手。这篇我就从切缝药包聚能爆破的角度把这个 k 文件从头到尾拆开讲清楚。2. 数值模型的整体设计思路2.1 建模之前必须要拍板的几个物理问题切缝药包爆破的数值模拟物理过程涉及炸药爆轰、爆生气体膨胀、管壳变形、岩体损伤开裂是一个非常典型的爆炸力学多介质耦合问题。你在写 k 文件之前至少要先把下面这些事想明白否则文件写了一半大概率要推倒重来。第一个问题是模型维度。切缝药包在钻孔里如果只研究切缝方向断面上的一层岩体可以简化为二维平面应变模型建模快计算便宜适合做参数敏感性分析。但如果要研究裂纹沿孔轴方向的扩展或者想看看切缝管端部的边界效应那就必须上三维。二维模型在网格数量上比三维少一个数量级以上我刚开始做参数扫描时全部用二维几十个工况一夜跑完到做最终验证时才转三维。第二个问题是对称性。切缝药包模型通常具有对称面沿切缝中线和垂直于切缝的中线都可以取一半甚至四分之一。取半模型的好处不只是省网格更关键的是对称面上的法向位移约束可以天然模拟无限大岩体中相邻药包的相互影响边界条件物理上更可靠。这里要提醒一句取对称模型必须保证网格、材料、载荷严格关于对称面对称不对称的模型硬取半模型会算出错误结果。第三个问题是单位制。LS-DYNA 本身没有单位全靠你输入的数字保持一致。爆破模拟里我推荐用 cm-g-μs 单位制这样压强单位是 Mbar即百万巴炸药爆速用 cm/μs 表达非常方便10 的六次方厘米每秒等于 1 cm/μs。很多初学者用 m-kg-s 单位制结果压力算出来数字极度别扭状态方程参数也容易写错建议直接放弃。2.2 切缝管和药包几何参数怎么定切缝管的几何参数里有三个最敏感切缝宽度、切缝长度、管壳厚度和材料。切缝宽度直接决定了射流的口径切缝太窄射流速度虽高但质量流率低切割能力反而下降切缝太宽聚能效应减弱和裸药包的区别就变小了。文献里常用的切缝宽度范围在药包直径的十分之一到三分之一之间我自己的经验是对于直径 32 到 40 毫米的药包切缝宽度取 3 到 5 毫米比较合适。管壳材料的选择也有讲究。理论上切缝管材质强度越高对爆轰产物的约束越强聚能效果越好但实际工程里你不可能用昂贵的合金管常用的就是 PVC 管或者薄壁钢管。PVC 管的声阻抗远低于钢管爆轰波通过切缝管时会有更大的阻抗不匹配射流形成效率不同仿真时必须用真实的管材参数去建模不能简化成理想刚体。网格划分同样直接影响计算能否跑通。炸药和切缝管区域用映射网格保证单元形状规整因为炸药爆轰时单元变形极大畸形的初始网格很容易在极短时间内触发负体积。岩体区可以适当过渡但过渡要平缓相邻单元尺寸比尽量不超过一比五。3. k 文件核心关键字逐段拆解3.1 从 Node 到 Element 的建模骨架k 文件的骨架就是节点和单元。你用 TrueGrid、HyperMesh 或者 LS-PrePost 画好网格后导出时就是把每个节点的编号、坐标每个单元的编号、节点连接关系写进文件。切缝药包模型里节点数量动不动就是几万到几十万手工写肯定不现实必须依赖前处理软件但你要理解 k 文件里的节点数据段是后面所有内容的基础节点编号错了后面的 part、接触、载荷全部对不上。*NODE关键字下面的每一行就是一个节点格式是节点号然后 x、y、z 坐标可选的还有一些附加信息。*ELEMENT_SOLID用于六面体单元每行是单元号、part 号、八个节点号。如果你用的是二维模型对应的是*ELEMENT_2D或*ELEMENT_SHELL配合平面应变单元算法使用。这里有一个很坑的地方LS-DYNA 的二维平面应变单元y 方向厚度默认为 1但实际模型中切缝药包的切缝宽度在三维里是对称面上的一个尺寸二维模型里需要通过单元厚度或者缩放系数处理否则切缝宽度完全对不上后处理里裂纹扩展宽度也会失真。part 的定义用*PART关键字每个 part 就是一个“材料加单元算法”的组合体。切缝药包模型里至少有六个部分炸药、切缝管、堵塞段、空气、岩体、可能的耦合剂或者水介质。每个 part 指定自己的 section 号和 mat 号section 描述单元算法和积分规则mat 描述材料本构。3.2 材料模型炸药、岩体、切缝管各自的门道炸药是爆破模拟里最核心的材料必须用高能炸药爆轰产物模型配合 JWL 状态方程。*MAT_HIGH_EXPLOSIVE_BURN是 LS-DYNA 里最常用的炸药材料模型它负责控制爆轰波的起爆和传播。JWL 状态方程*EOS_JWL描述爆轰产物压力、体积和能量之间的关系公式是P A(1 - ω/R₁V)e^(-R₁V) B(1 - ω/R₂V)e^(-R₂V) ωE/V这里的 A、B、R₁、R₂、ω 都是要通过试验标定的参数不同的炸药有不同的值。emmmmm公式看着复杂但你在 k 文件里只需要把厂家提供的参数抄进去就行。如果没有现成的参数可以用爆速、爆压等基础参数通过经验公式反推但精度会差一些。岩体材料的选择取决于你要研究什么。如果重点研究爆炸应力波的传播和衰减用*MAT_ELASTIC或者*MAT_PLASTIC_KINEMATIC就够了计算便宜结果稳定。但如果你要把裂纹扩展和损伤演化模拟出来那就必须上*MAT_RHT或者*MAT_JOHNSON_HOLMQUIST_CONCRETE。HJC 模型在岩石类材料的冲击响应模拟里用得非常广它考虑了压力相关的强度、损伤累积和应变率效应能比较好地反映爆炸载荷下岩体的脆性破坏特征。RHT 模型是 HJC 的改进版引入了更多的失效面参数模拟拉伸损伤的精度更高代价是参数数量多到让人头大需要标定的参数动辄一二十个。切缝管可以用*MAT_PLASTIC_KINEMATIC或者*MAT_JOHNSON_COOK。如果只是研究射流形态用简单的弹塑性模型就够了反正管壳最终会被撕裂破坏如果想研究管壳破片对孔壁的二次损伤那就需要 Johnson-Cook 模型配合失效准则。3.3 载荷、边界和初始条件怎么给切缝药包爆破的载荷来源是炸药起爆后的爆轰产物压力不需要像静力分析那样在边界上施加压力载荷而是通过初始化炸药单元的热化学状态让炸药在给定时刻起爆LS-DYNA 自动计算爆轰波传播和压力输出。起爆点用*INITIAL_DETONATION定义指定起爆点的坐标和起爆时间。实际装药结构里雷管通常在药包一端中心起爆仿真里也这么设置爆轰波从起爆点向外球面传播遇到切缝管壁后反射、汇聚形成定向射流。边界条件的设置对结果影响极大。模拟无限岩体时模型边界必须设置无反射边界也就是*BOUNDARY_NON_REFLECTING否则应力波传到模型边界会反射回来在模型里形成虚假的应力叠加后处理出来的裂纹形态就会多出很多不该有的分支。这个坑我踩过无数次早期偷懒没加无反射边界算出来的裂纹扩展长度比文献值偏大百分之二十左右就是反射波叠加造成的。对称面上的处理是施加法向位移约束用*BOUNDARY_SPC_SET固定对称面上的节点在法线方向的自由度。这个和有限元结构分析是一样的道理只不过 LS-DYNA 里是显式分析边界条件的关键字和隐式分析略有差异。4. 单元算法、接触和流固耦合的选择4.1 为什么选择多物质 ALE 而不是纯 LagrangeLS-DYNA 里处理炸药爆炸有三种经典思路纯 Lagrange、Euler、ALE即任意拉格朗日-欧拉方法。早期的爆破模拟大多数用纯 Lagrange炸药单元和岩体单元共节点炸药爆轰后单元大变形很快就把网格挤爆了出现负体积、单元畸变计算终止。切缝药包的问题比普通裸露药包更严重因为炸药外面还套了一层切缝管爆轰产物在管壳内部膨胀时炸药单元会经历剧烈的大变形。纯 Lagrange 网格在这里几乎必死所以现在主流做法是用多物质 ALE 方法就是让炸药和空气共享一套网格炸药爆轰后变成产物和空气在一个网格里混合流动网格本身不发生大变形从根本上避开网格畸变问题。多物质 ALE 用*SECTION_SOLID里的 ALE 算法选项配合*ALE_MULTI-MATERIAL_GROUP定义哪些材料可以在同一套 ALE 网格里相互混合。炸药和空气划分到一个多物质组里它们之间不需要定义接触自然就能通过状态方程交换压力和能量。岩体部分如果也用 ALE 就太浪费了因为岩体本身变形相对有限而且固体材料的本构关系在 ALE 描述下实现起来很复杂。正确做法是岩体继续用 Lagrange 单元然后通过流固耦合算法把 ALE 网格里的爆轰产物压力和 Lagrange 网格里的岩体单元耦合起来。这时就需要*CONSTRAINED_LAGRANGE_IN_SOLID关键字来定义耦合关系。4.2 关键字写法和常见参数含义*SECTION_SOLID里对 Lagrange 单元ELFORM 常用 1 号算法是一阶单点积分单元。单点积分单元计算快但会带来沙漏问题需要额外控制。对 ALE 单元ELFORM 选择 11 号或者 12 号算法多物质 ALE 一般用 11 号。*CONTROL_HOURGLASS是沙漏控制关键字四个 IHQ 参数分别控制沙漏系数和算法。人话讲沙漏就是单元在单点积分时出现的一种零能变形模式网格看起来像被拧麻花但单元应力却为零物理上完全不真实。单点积分单元必出沙漏只是程度问题。爆破属于高压力高应变率问题我推荐沙漏控制采用刚性系数法系数取 0.05 或者 0.1效果比较稳。*CONTROL_TIMESTEP控制时间步长。显式分析的时间步长由最小单元尺寸和波速决定初始时间步长过大计算直接发散过小计算耗时爆炸式增长。这里可以设定质量缩放就是人为增加局部单元密度来放大时间步长但质量缩放会引入额外的人工质量对爆破冲击问题的影响需要评估。我的建议是冲击波到达关键区域之前不要开质量缩放如果实在要开比例控制在百分之一以内。4.3 接触算法在切缝药包里的特殊用途切缝管和岩体之间、堵塞段和孔壁之间如果两者都是 Lagrange 单元就需要定义接触。常用的是*CONTACT_ERODING_SURFACE_TO_SURFACE即侵蚀接触单元失效删除后接触关系仍然保持不会出现单元消失了接触就失效的问题这个特性对模拟管壳破裂和岩体开裂至关重要。接触面参数里有一个静摩擦系数和动摩擦系数切缝管外壁和孔壁岩石之间的摩擦系数取值对切缝管的运动会有一点影响但相对整体爆炸效应而言不是主要矛盾我一般摩擦系数取 0.2 到 0.3对裂纹形态的影响在可接受范围内。5. 后处理分析和效果判读5.1 从 D3PLOT 里看裂纹怎么长出来的计算完成后LS-PrePost 打开 D3PLOT 文件按时间步播放动画你能直观地看到炸药起爆、爆轰波传播、切缝管膨胀、射流冲击孔壁、裂纹在切缝方向萌生和扩展的完整过程。这是做仿真最有成就感的时刻但也是容易出问题的时候因为很多模型“能算完”和“算得对”完全是两回事。最常用的后处理指标是岩体单元的损伤变量。HJC 和 RHT 模型自带损伤变量 D可以通过云图查看单元的损伤程度。损伤变量从 0 到 1 递增0 表示完好1 表示完全失效。正常切缝药包的模拟结果应该是切缝方向上的单元损伤率先达到 1 并形成连续裂纹带而切缝管掩护方向即垂直于切缝的方向孔壁损伤程度明显更低。如果全域损伤一片红说明聚能效果没有体现出来要回头检查材料参数和切缝管设定。压力时程曲线是另一个关键输出。在孔壁上布置几个监测点提取压力随时间的变化曲线。切缝方向的测点应该看到明显的压力峰值而且峰值出现时间早、持续窄这是射流冲击载荷的特征垂直于切缝方向的测点压力峰值低、波形平缓这也是聚能屏蔽效应的体现。两条曲线的差异就是切缝药包优越性的数值证据。5.2 用 *DATABASE 关键字把数据导出来LS-DYNA 里输出控制主要通过*DATABASE_BINARY_D3PLOT和*DATABASE_HISTORY_NODE等关键字实现。D3PLOT 是结果文件按设定时间间隔输出整个模型的云图数据HISTORY_NODE 是节点历史数据可以输出某个节点的位移、速度、加速度等随时间变化曲线。输出间隔的设置需要权衡。间隔太小D3PLOT 文件巨大一台普通工作站的硬盘分分钟被填满间隔太大裂纹萌生和扩展的关键瞬间又可能被跳过。爆破模拟的特点是前期的爆轰和射流形成极快后期裂纹扩展相对缓慢所以可以用*DATABASE_BINARY_D3PLOT的时间间隔分段功能前期输出密度大一些后期稀疏一些。我一般前期每微秒输出一帧后期每五微秒一帧。*DATABASE_EXTENT_BINARY里的 NEIPH 和 NEIPS 参数控制每个单元输出多少个积分点数据如果要做损伤演化云图必须把损伤变量添加到输出列表里否则后处理时云图菜单里找不到损伤变量这一步比较容易漏。6. 常见问题与排查技巧实录6.1 负体积怎么破负体积是爆破仿真里最经典的报错信息栏里弹出一堆“negative volume in solid element”然后计算中止。原因是单元在极度压缩或畸变下体积变成负数几何失效。解决办法不外乎几个方向一是检查网格质量炸药和切缝管区域有没有畸变单元有的话重新划分二是把 ALE 网格加厚给爆轰产物留出充分的膨胀空间三是调整*CONTROL_TIMESTEP里的时间步长缩放系数降低时间步长四是换成 ALE/Euler 描述从根本上解决炸药单元的畸形问题。如果是岩体单元出现负体积多半是岩体单元尺寸不均匀或者材料模型参数过于“软弱”导致局部过度变形。这种情况要在岩体单元里也加入失效准则让过度变形的单元及时删除释放应力避免单元翻转。6.2 计算发散和能量不守恒计算发散通常表现为节点速度无限增大或者应力波在某些位置出现振荡。原因往往出在单位制不统一上比如密度用 g/cm³压力却用 Pa差了好几个数量级结果自然爆掉。另一个常见原因是沙漏能占比过高如果沙漏能占总能量的比例超过百分之十计算结果基本不可信要降低沙漏系数或者改用全积分单元。能量检查是每个爆破仿真必做的验证步骤。LS-DYNA 的*DATABASE_GLSTAT文件里记录了系统的总能量、动能、内能、沙漏能、摩擦能等。爆炸过程的总能量应该保持恒定动能和内能相互转化如果总能量曲线出现明显上升或下降说明有能量被非物理地创造或消耗结果存在问题。6.3 参数标定翻车现场RHT 和 HJC 模型的参数标定是这种模拟里不可绕过的痛。每个参数对结果的影响不同混在一起时很难判断问题出在哪里。我的方法是先固定其他参数逐个改变单一参数观察损伤云图和压力曲线的变化建立“参数-响应”的对应表再反过来根据实际试验数据反推参数。这个过程很磨人但效果可靠。如果只是为了初步对比切缝宽度的敏感性先用*MAT_PLASTIC_KINEMATIC这种简单模型跑通流程再逐步切换到复杂本构可以省很多调试时间。6.4 切缝方向起裂不明显的排查清单如果算出来的结果和切缝药包原理相悖切缝方向的裂纹没有明显优先扩展按下面顺序排查先看切缝管有没有真正约束住爆轰产物管壳材料参数是不是被写成了非常弱的空气材料再看切缝宽度和炸药直径的比例是否合理切缝太宽会丧失聚能效果然后看网格密度切缝口附近和孔壁之间必须有足够的网格分辨率否则射流冲击的关键力学过程根本捕捉不到最后看输出时间如果计算总时长太短裂纹还没来得及扩展就被截断了。7. 关于 k 文件最实用的几个心得最后分享几个我长期折腾 k 文件攒下来心得。第一个心得是版本管理。k 文件是纯文本天然适合丢进 Git 做版本管理。每个工况建一个分支参数调整一目了然出了问题可以随时回退到能跑通的版本。我见过太多人用一个文件反复改最后参数混乱到根本分不清哪个是能出好结果的版本这种事情真的没必要发生。第二个心得是单元编号规范。前处理软件自动生成的编号往往乱序严重虽然 LS-DYNA 不在乎但后处理时你需要在几万个节点里找出某个监测点就很痛苦。我习惯在建模阶段就把关键点位放在特殊编号区间比如孔壁监测点集中放在一亿号段以后查询时直接按编号过滤效率高得多。第三个心得是先从二维做起。切缝药包的全三维模型计算量非常大动辄几十个小时不适合做参数扫描。先用二维模型把所有参数跑明白锁定最优参数区间再转三维做最终验证是性价比最高的路线。二维模型一晚上能跑几十个工况三维一个工况就要一天这个差距会让你的产出效率完全不同。第四个心得是注意 k 文件里的隐含默认值。很多关键字如果你不写LS-DYNA 就按默认处理。比如沙漏控制不写就默认没有有些版本的 LS-DYNA 默认不输出某些变量。新手最容易在“文件算完了但 D3PLOT 里看不到想要的变量”这类问题上卡住多花点时间把*DATABASE相关的关键字全部检查一遍能省下大量返工时间。切缝药包聚能爆破的模拟本质上就是用数值手段把“定向破裂”这个物理过程重现出来而 k 文件就是承载这个重现过程的全部信息的载体。从一开始对着满屏星号发呆到现在能快速定位参数、排查问题、优化模型这个过程需要耐心但只要整体思路清晰按部就班地做下来结果是值得期待的。
返回列表