
多次爆破作用下岩体损伤累积是爆破工程中最容易被低估、也最容易算不准的问题。很多人把 LS-DYNA 爆破模拟的重点放在炸药参数、单元算法和材料本构上结果模型跑完振动速度曲线看着像样实际上损伤分布和现场完全对不上。问题往往不出在求解器而出现在前处理链路单位制没有统一、网格质量不合格、材料参数和单元算法不匹配、多次爆破在时间序列上没有正确衔接。再加上 HyperMesh 新界面把大量经典面板藏进了 Ribbon 工具栏老手都容易迷路更不用说要同时兼顾网格质量检查和 LS-DYNA 关键字设置。本文从实际工程需求出发完整梳理一条 HyperMesh 新界面 LS-DYNA 的多次爆破岩体振动损伤累积模拟路径。文章会聊清楚三个核心问题第一什么样的前处理流程才适合多次爆破模拟第二HyperMesh 新界面里网格质量检查、材料设置、单位制这些“坑”到底怎么避第三多次爆破损伤累积在 LS-DYNA 里怎么实现。读完你至少能理顺一条可以落地的仿线而不是对着 K 文件无从下手。1. 为什么多次爆破损伤模拟这么难很多初学爆破模拟的人第一个模型是单炮孔、单次起爆算出来的振动云图非常漂亮于是以为掌握了 LS-DYNA。但一旦进入真实工程场景比如隧道反复开挖、矿山台阶多次爆破、边坡近区重复装药问题立刻变成另一个量级岩体已经经历过一次爆破损伤第二次爆破的应力波在已损伤介质中的传播路径、衰减规律、能量耗散方式都变了损伤继续累积最终可能出现宏观裂缝甚至失稳。这里的关键难点有三个。第一个难点是损伤的“记忆”。线性弹性材料不存在损伤记忆卸载后就回到原状。但岩体是带初始损伤的弹塑性材料爆破荷载作用后微裂纹扩展、残余应变增加下一次爆破必须在前一次爆破的应力状态和损伤状态基础上继续计算。这就要求模拟时不能简单地把两次爆破看成两个无关的独立计算。第二个难点是时间尺度差异。单次爆炸持续毫秒级但两次爆破之间可能相隔几小时、几天甚至更久。LS-DYNA 显式求解擅长短时冲击问题如果完整模拟几天的蠕变、损伤演化计算量会爆炸。所以必须用“等效循环”的思路对每一次爆破过程做显式求解爆破间歇期的准静态过程做简化处理或忽略只保留材料和结构的损伤状态。第三个难点是前处理环节的精度损失。爆破模拟非常依赖网格质量因为爆炸冲击波高频成分多网格畸变、负体积、沙漏都会直接污染结果。HyperMesh 在网格处理上有天然优势但新界面把很多操作入口改了位置很多工程师找不到网格质量检查面板直接开始求解后面才发现单元质量太差。所以多次爆破损伤累积模拟真正考验的不是你会不会点 LS-DYNA 求解器而是你能否在 HyperMesh 里做出一套规范、可重复的建模流程以及能否把多次载荷正确地串联起来。2. 核心概念HyperMesh新界面、LS-DYNA与损伤累积在进入实操前把几个基本概念理清楚后面才不会绕弯路。HyperMesh 新界面。指的是 HyperMesh 近几个版本采用的 Ribbon 风格界面工具栏按 Workflow 分区和经典界面那种按菜单卡分组的交互方式有很大区别。新界面默认显示“Model”视图左侧有 Model Browser下方有图形区快捷操作。很多老用户一开始不习惯但新界面在几何清理、网格划分、组件管理方面其实更顺手尤其是 1D/2D/3D 网格流程都被整合到了独立的 Ribbon 选项卡中。LS-DYNA。是著名的显式动力学求解器适合冲击、爆破、碰撞等问题。它采用中心差分法显式时间积分不需要像隐式那样迭代求解刚度矩阵因此能高效处理短时强非线性问题。爆破模拟正是它的主场。损伤累积。在工程上可以理解为岩体在反复荷载作用下内部微裂纹发育、弹性模量劣化、强度参数降低的过程。在数值模拟中可以通过材料本构模型内嵌的损伤变量 D 来表征。D0 表示无损D1 表示完全失效。LS-DYNA 中很多材料模型都带损伤变量例如 *MAT_RHT、*MAT_JOHNSON_HOLMQUIST_CONCRETEJHC、*MAT_PLASTIC_KINEMATIC 等。选择哪种材料取决于你要模拟的是岩石、混凝土还是其他材料也取决于你关注的是振动波形还是损伤范围。这里有个常见误解认为 LS-DYNA 岩石爆破必须用流固耦合模拟炸药。实际上工程尺度多次爆破分析多数不需要显式建炸药。更常用的是等效荷载法把爆炸荷载直接施加到炮孔壁或开挖边界上或者使用 *LOAD_BLAST 等简化方式。这样既能保留应力波传播的主要特征又能大幅降低建模和计算成本也更便于实现“多次加载”的循环流程。HyperMesh 在中间承担的任务是建立几何、划分网格、设定材料属性、施加边界条件、输出 LS-DYNA 的 K 文件。K 文件相当于 LS-DYNA 的输入卡片HyperMesh 通过模板把模型信息转换成关键字格式。真正决定计算结果的是你在 HyperMesh 里的每个选择。3. 环境准备与单位制最容易翻车的地方爆破模型不报错不意味着结果是对的。LS-DYNA 本身是没有内部单位的所有物理量都靠你输入的数字和 K 文件中的单位制决定。一个典型的惨痛教训把密度输成千克每立方米把长度单位用成毫米其他参数按米制换算结果应力波传速完全错误振动频率高了几十倍。在 HyperMesh 中设置材料时必须在脑子或表格里明确“长度-质量-时间”的基本单位体系。爆破模拟最常用的是 mm-ms-kg毫米-毫秒-千克或 m-s-kg米-秒-千克。如果使用 mm-ms-kg导出应力的单位是 GPa速度单位是 mm/ms相当于 m/s密度单位是 kg/mm³。这里特别容易把密度写成 g/cm³导致质量不对。常用单位制换算可以参考下面这张表单位制长度时间质量密度应力速度m-s-kg米秒千克kg/m³Pam/smm-ms-kg毫米毫秒千克kg/mm³GPamm/mscm-g-μs厘米微秒克g/cm³Mbarcm/μs在 HyperMesh 新界面的 Materials 模块中创建材料卡片时左下角往往有单位制选项比如 MMKS、MKS、CGS 等。如果你选择了 MMKS那么输入密度时就要按 kg/mm³ 输入典型岩石密度 2600 kg/m³ 2.6e-6 kg/mm³。如果按照 classic 习惯在材料卡片里直接键入“2600”那模型的密度就大了 1e9 倍。我的建议是在项目开始时先用一支笔在纸上写好单位换算表把岩石密度、弹性模量、抗压强度、波速等参数全部换算成同一单位制下的数值再输入到 HyperMesh 材料面板。不要一边输入一边心算。除了单位制LS-DYNA 求解环境也需要确认。如果你是使用 LS-DYNA 管理器LS-Run提交求解需要提前设置好求解器路径。如果是命令行求解需要保证 LICENSE 可用。多次爆破重启动求解还需要额外定义重启动文件后面会详细讲。4. HyperMesh新界面前处理实战从几何到网格这一节是文章的重点也是热搜里大家问得最多的问题HyperMesh 如何检查 3D 网格质量、Materials 设置里怎么设置单位、节点不显示怎么办。我们按实际建模顺序走一遍。4.1 几何导入与清理打开 HyperMesh 新界面File Import Geometry 导入你的岩体几何模型。爆破模拟几何通常包括开挖洞室、炮孔、边坡面等。导入后建议先打开 Auto Cleanup 工具检查自由边、裂缝、重复面。新界面中几何清理入口在 Geometry 选项卡下面。处理思路很简单把对分析不重要的倒角、小孔、细碎曲面压缩或者删除把连续的边界合并。但注意炮孔孔壁是需要保留的加载面不能随手清理掉。在 Cleanup 面板中使用 “Split / edit surfaces” 和 “Defeature” 工具处理。对岩体这样不规则几何推荐先生成 2D 面网格再通过面网格生成体网格。因为直接做 3D 四面体网格边界层很难控制质量也不稳定。4.2 网格划分与 3D 网格质量检查HyperMesh 新界面的 2D 网格划分、3D 网格划分和网格质量检查都是在 Mesh 选项卡下。2D 网格建议使用 Automesh3D 网格使用 Tetramesh四面体或 Hexamesh六面体。爆破近区建议网格加密衰减远区可以逐步放大这样兼顾精度和计算量。网格质量检查是最关键的一步。很多人在 HyperMesh 里画完网格直接导出 K 文件结果求解时报负体积或者计算发散。正确的做法是在 3D 网格生成后立刻打开 Mesh Check Elements 进行质量检查。新界面中 Check Elements 面板可以检查以下关键指标Jacobian雅可比衡量单元形态相对于理想单元的变化建议最小值大于 0.6最好大于 0.7。Skew偏斜度衡量单元内角偏离理想角度的程度越小越好。Aspect Ratio长宽比对于大变形爆破模拟建议控制在 5 以内。Warpage翘曲度主要针对 3D 单元面建议小于 10 度。Max Angle/Min Angle三角单元内角建议在 20°-120°四面体单元内角建议在 20°-130°。检查时打开面板后选择 3D Check然后点击 “Check Elms”下方会出现不合格单元数量。用 “Draw” 按钮可以高亮显示不合格单元。如果问题单元太多建议回到 3D 网格划分调整局部尺寸或添加网格过渡。不要用 Quality Improvement 硬性“拉”质量那只能小修。从实际工程经验看爆破模拟最容易出现质量问题的区域是炮孔孔底、孔口、角点这些几何突变位置。处理方法是在这些区域添加局部 seed种子点控制尺寸或者使用 HyperMesh 的 “silhouette” 功能重新划分局部曲面。如果有个别单元质量差可以手动 edit elements 做局部调整。这里还要提醒一下网格尺寸和时间步长有关。LS-DYNA 显式求解的时间步取决于最小单元边长、材料音速。单元过小会把时间步拖得极小计算量成倍增加。因此网格质量检查和特征长度控制要平衡。多次爆破模型尤其要注意整体计算规模否则一次算几天项目根本推不动。4.3 材料与属性设定含单位进入 Materials 模块创建材料。在 HyperMesh 新界面中可以在顶部 Model Browser 中右键 Materials 选择 Create。也可以从 Material 面板直接创建。在创建材料卡片时关键要选对 LS-DYNA 的材料本构。对于岩石爆破损伤分析常用材料包括*MAT_ELASTIC简单弹性材料适合远区岩体只做振动波传播分析不考虑破坏。*MAT_PLASTIC_KINEMATIC弹塑性材料可以考虑应变率效应和失效常用于等效荷载法研究岩石破坏范围但不直接累积损伤。*MAT_JOHNSON_HOLMQUIST_CONCRETEJHC适合混凝土和岩石类脆性材料带损伤演化。*MAT_RHTRHT 模型比 JHC 更适合岩石包含拉伸损伤和压缩损伤适合爆破和冲击分析。在设置材料参数时单位制务必保持一致。以 mm-ms-kg 为例假设岩石弹性模量为 30 GPa密度为 2600 kg/m³那么参数原始量纲MMKS 输入值密度kg/m³2.6e-6 kg/mm³弹性模量GPa30 000 MPa但在 MMKS 中应力单位 GPa所以输入 30抗压强度MPa80 MPaMMKS GPa 下输入 0.08泊松比无量纲0.25HyperMesh 新界面的 Materials 面板中如果切换单位制为 MMKS会显示对应单位提示。但要注意LS-DYNA 关键字本身不强制写单位HyperMesh 的帮助只是提示。最重要的还是你自己头脑清楚。材料创建完成后要给模型赋予属性。在 Model Browser 中创建 Property选择 LS-DYNA 对应的 section 类型如 SECTION_SOLID关联到材料卡片再把 property 赋给 component。创建 component 时建议把炮孔近区、远区、开挖区分别分成不同 component方便施加载荷和后处理区分。4.4 节点不显示问题排查很多用户刚接触 HyperMesh 新界面时会遇到“节点小球不显示”的情况。这其实不是模型坏了而是显示设置里把 Node 显示关掉了。解决办法在新界面左侧的 Display 面板找到 “Node” 或 “Markers” 开关勾选后节点就会显示出来。也可以使用快捷键比如 F2不同版本有差异进入面板把节点显示打开。在 LS-DYNA 模板下节点是否显示不影响计算因为 K 文件中节点会被完整导出。但建模时我们需要通过节点来加载、约束、测量距离所以建议在节点显示打开的状态下做后续操作。如果节点太大显得杂乱可以关闭节点显示只在检查时打开。5. LS-DYNA 多次爆破模拟的三种实现思路多次爆破损伤累积不是简单在 LS-DYNA 里多放几个炸药。根据工程对象不同有三种主流思路。第一种一次计算内多次起爆。把多个炮孔、多段炸药放进一个模型通过 *INITIAL_DETONATION 定义不同起爆时刻。这样能模拟炮孔间的延时起爆应力波在岩体中叠加但本质上还是一次开挖循环不是“多次爆破”时间序列。第二种重启动Restart方法。分两次甚至多次求解第一次爆破求解结束保存重启动文件第二次爆破时读取第一次的应力、应变和损伤状态在此基础上继续求解。这种方法最接近岩体多次受力损伤累积的真实过程。缺点是重启动控制稍微复杂模型规模无法改变节点、单元编号不能变而且需要在 HyperMesh 中生成多个载荷文件配合 *CHANGE_DYNAMIC_RELAXATION 或 *STRESS_INITIALIZATION 等关键字。第三种等效循环荷载法。不直接模拟炸药爆炸而是提取单次爆破产生的荷载时程曲线分别施加到炮孔壁或开挖面上。研究损伤累积时可以对同一区域反复施加同一段载荷曲线相当于“循环加载”。这种方法计算效率最高也便于参数化研究但需要先有可靠的单次爆破荷载时程或者依赖经验公式。从多次爆破岩体振动损伤累积这个主题来看第二种和第三种在工程上更有价值。如果每一次爆破之间的静应力状态变化不大重启动和等效荷载法的结果差异可控。如果要考虑爆破后岩体应力重分布带来的影响重启动方法更严谨。6. 关键K文件示例与参数说明下面给出一个极简的多次等效循环加载思路示例。我们假设使用 HyperMesh 输出 K 文件后手动修改并加入多次载荷曲线。首先在 HyperMesh 中建立好网格定义一个弹性或弹塑性岩石材料比如 *MAT_PLASTIC_KINEMATIC*MAT_PLASTIC_KINEMATIC $ MID RO E PR SIGY ETAN BETA 1001 2.6e-6 30 0.25 0.080 0.010 1.0这里使用了 mm-ms-kg 单位制RO2.6e-6 kg/mm³E30 GPaSIGY0.08 GPa80 MPa。注意 LS-DYNA 中压力单位默认与长度-质量-时间制一致因此模量和屈服强度都按 GPa 输入。接着定义载荷曲线。假设爆破荷载时程为三角脉冲持续 10 ms*DEFINE_CURVE $ LCID SIDR SFA SFO 3301 0 1 1 $ A O 0.000 0.000 1.000 10.000 5.000 0.000这条曲线表示最大压力 10 GPa。然后在炮孔壁单元表面施加压力载荷*LOAD_SEGMENT $ SSID LCID SF AT 101 3301 1.0 0.0其中 SSID 为炮孔壁 segment set ID需要提前用 *SET_SEGMENT 定义。如果是重启动方式第一次求解结束后第二次求解的 K 文件中要包含*RESTART以及你需要继承的应力损伤场。实际流程是第一次 LS-DYNA 求解生成 d3dump 文件第二次求解使用同一个模型但需要保证网格、材料编号一致再通过 *STRESS_INITIALIZATION 读取。这里必须强调重启动方法的手工操作远比这篇文章写出来的要复杂。HyperMesh 新版界面中也有 LS-DYNA Restart 面板但很多项目组仍然采用“手工修改 K 文件”的方式。最稳妥的做法是每次重启动都把时间和载荷编号设计好并保留详细的变更日志避免自己都忘记改过哪里。7. 求解、后处理与结果验证模型检查无误后在 HyperMesh 中通过 Analysis LS-DYNA Export 输出 K 文件。注意选择正确的求解器版本和输出卡片。导出后先用文本编辑器打开 K 文件检查前几行是否有乱码检查单位制注释是否与你的本意一致。提交求解的命令行示例ls-dyna iblast.k ncpu8 jobidblast如果求解顺利会生成 d3plot、d3dump、messag 等文件。推荐打开 messag 文件查看是否有严重警告比如 “negative volume”、 “material failure” 等。虽然部分警告不影响求解但不建议忽略。后处理推荐使用 LS-PrePost。打开 d3plot 文件lsprepost d3plot在后处理中可以查看等效应力云图判断应力波传播范围。损伤变量云图对于 JHC/RHT 材料可以直接查看损伤变量。位移云图判断岩体变形。节点振动速度时程在炮孔周边和远区选取若干测点输出速度-时间曲线与实测数据对比。验证结果时第一件事不是看云图好不好看而是看能量曲线。LS-PrePost 中工具 能量history energy总能量total energy和动能kinetic energy应该是合理的逐步增长或保持恒定。如果总能量不守恒说明模型有严重问题比如负体积、沙漏能过大、接触穿透。沙漏能控制也是爆破模拟的重点。若沙漏能超过总能量的 10%需要检查单元积分方案。建议对炮孔近区使用全积分单元或者使用 hourglass 控制类型 6 等稳定算法。HyperMesh 的实体单元 section 中默认单元算法往往是单点积分要注意修改。另外多次爆破模型要特别检查第二次加载时的初始状态。如果是重启动方式直接看 d3plot 的第一个 state 是否显示第一次爆破后的残余应力和损伤。如果第一步就是零应力状态说明状态传递没生效结果没有意义。8. 常见问题与排查思路问题现象可能原因排查方式解决方案网格质量检查无结果HyperMesh 未选择 3D 类型打开 Check Elements 面板先选择 3D 再点 Check在面板顶部将 1D/2D/3D 切换为 3D节点小球不显示Display 面板中 Node 显示被关闭查看左侧 Display 面板勾选 Node/Markers 项重新打开节点显示必要时按 F2 进入显示控制求解器报材料参数错误材料单位制与数字不匹配检查 K 文件中材料卡片 RO、E 的量级统一换算单位后再输入振动速度时程数量级异常单位制混乱或载荷压力单位错误对比测点波峰与经验公式结果先恢复单位为 mm-ms-kg检查载荷曲线数值第二次重启动从零开始未设置 *STRESS_INITIALIZATION 或重启动方式不对查看 d3dump 和 messag确认重启动关键字使用 *STRESS_INITIALIZATION 读取前次应力场求解中出现 negative volume网格质量差或单元算法不稳定定位负体积单元位置看是否在炮孔近区优化网格、使用 ALE 或全积分单元沙漏能过大使用了默认单点积分单元查看 GLSTAT 沙漏能历史更换单元算法或加强沙漏控制求解时间太长网格尺寸过小、时间步过短查看 d3hsp 文件中的时间步和单元最小边长优化局部网格或使用质量缩放需谨慎9. 最佳实践与工程建议在多次爆破岩体振动损伤累积模拟中我建议你从以下几条原则出发可以得到更可靠的结果。第一先做小模型网格无关性验证。至少用两套不同密度的网格计算单次爆破比较选点振动速度峰值和损伤范围。如果两套结果差异超过 10%说明网格还不能满足要求。不要一上来就堆几百万单元。第二单位制和材料参数要写在项目文档里。项目组里多个工程师共用 HyperMesh 文件时最常见的问题就是有人说“我按 GPa 输的”有人说“我按 Pa 输的”。建议在 K 文件头部的注释里写明本次计算单位制、材料 MID 列表、载荷曲线编号并安排专人复核。第三多次爆破重启动前先做空算验证。也就是先在 HyperMesh 中生成一个最简单的重启动模型把两次求解都跑通确认状态继承正确再应用到大模型上。这样能避免在项目晚期发现状态丢失。第四远区振动响应最怕数值扩散。如果你的目的是获取边坡、建筑等远区的振动速度建议使用足够大的模型边界或者设置无反射边界条件。HyperMesh 中可以通过 *BOUNDARY_NON_REFLECTING 对模型外边界设置无反射边界防止人为反射波污染结果。模型边界最小尺寸建议满足波阵面在分析时段内不触及边界的距离否则要使用透射边界。第五必须做实测标定。无论你的材料参数来自教科书还是文献都必须和现场爆破振动监测数据对比。通过调整波速、阻尼、荷载幅值使数值振动速度和实测曲线在时域和频域上匹配。这一步没有捷径。没有标定的爆破数值模型只适合做参数趋势研究不适合直接用于安全评价。第六警惕质量缩放。显式求解时间步太小的时候LS-DYNA 允许通过质量缩放增加时间步。质量缩放会导致质量和能量异常对瞬态振动影响很大。爆破模拟建议质量缩放控制在很低的水平例如增加质量比例不超过 1%-2%并在结果中检查质量增加历史。第七处理好单元算法的选择。SOLID 单元在 LS-DYNA 中有常应力单元、全积分单元、一点积分等。爆破近区压力梯度大建议用全积分或高阶单元远区可以用常应力单元。HyperMesh 中创建 LS-DYNA 的 solid section 时会要求填写 elform单元公式一定要理解每个数字的含义再选。第八不要忽略阻尼。爆破振动传播需要对材料阻尼进行合理设定。LS-DYNA 中可以通过 *DAMPING_PART_MASS 或材料模型中的阻尼参数。阻尼太小波会衰减很慢和实测不符阻尼太大损伤范围会被严重低估。工程上常用瑞利阻尼需要根据现场波速和频率范围估算。10. 总结与后续学习方向这篇文章从工程痛点出发把 HyperMesh 新界面和 LS-DYNA 联合仿真多次爆破岩体振动损伤累积的完整思路做了拆解。你可以看到真正的核心并不在于某个按钮怎么点而在于单位制必须在 HyperMesh 材料设置时统一网格质量必须通过 3D Check Elements 检查尤其是炮孔近区多次爆破损伤累积要通过重启动或等效循环荷载实现而不是简单复制炸药后处理验证要以能量、实测波形为准而不是只看云图排错要按单位、材料、单元算法、载荷序列顺序来。如果你准备在项目中实操下一步建议分三步走先用单次爆破跑通一条完整链路的理想模型再做一个非常简单的小块体验证重启动状态继承最后才把实际工程的岩体范围、炮孔布局、材料参数和载荷曲线放到模型里。过程中每次改动 K 文件都留好备份。爆破模拟是一门“越细越复杂”的学问HyperMesh 和 LS-DYNA 只是工具。真正决定精度的仍然是你对岩体力学行为、爆破应力波传播和单位制细节的理解。把这些细节控制住多次爆破损伤累积模型就能从“看起来高级”变成“算得出趋势、对得上实测”的工程工具。