1. 项目概述:为什么选择LS-DYNA做岩石爆破模拟
爆破模拟这事,听起来挺玄乎,其实本质就是用有限元方法在计算机里“炸”一次石头,看它会怎么碎、怎么飞。我第一次接触LS-DYNA做岩石爆破模拟,是给一个露天矿的边坡稳定性项目做前期评估,当时甲方要求在不进行现场试验的前提下,预测不同装药量对岩体的损伤范围,说实话,压力挺大。但LS-DYNA这套软件确实是为这类高速瞬态动力学问题而生的,尤其擅长处理大变形、材料破坏、冲击波传播这类问题,算得上是爆破仿真领域的事实标准,很多高校、科研院所和工程单位都在用。
这个项目标题里包含了三个关键词:计算机模拟、建模分析、岩石爆破模拟。严格来说,这不是一个“拿来即用”的软件操作教程,而是一整套从工程问题出发,到数值模型建立、参数选择、求解控制、结果解读的完整技术路线。适合的人群很明确:正在做岩石力学、地下工程、采矿爆破方向的在校研究生,以及想用数值仿真辅助设计却没有太多头绪的现场工程师。我在这篇文章里会把整个思路掰开揉碎,讲清楚每一步为什么这么做,有哪些坑,哪些参数属于“一票否决”级别,哪些细节决定你的结果能不能让审稿人或者总工信服。
需要提前说明的是,我在实际项目中使用的LS-DYNA版本是R11左右,不同版本的关键字格式略有差异,但整体流程和建模思路基本通用,你手头如果是R7、R9或者新出的R13、R14,核心方法不会变。另外,这篇文章不是软件操作手册的搬运工,而是把这些年我踩过的坑、花过的时间、总结出来的经验,原原本本分享出来,你按照这个思路往下走,至少能少走两个月的弯路。
2. 整体设计思路:从工程问题到数值模型的层层拆解
做爆破模拟最忌讳的事情,就是一上来就打开前处理软件开始画网格。爆破问题的本质是炸药爆轰瞬间释放巨大能量,在岩体内形成强冲击波,随后应力波传播、反射、叠加,最终导致岩石损伤破碎。这个过程跨越了微秒到毫秒的时间尺度,涵盖了气体产物膨胀、裂纹萌生扩展、块体抛掷等复杂物理过程。所以建模之前,先想清楚三件事:你要回答什么问题、采用什么方法、模拟到什么精度。
2.1 先明确爆破模拟的核心需求
我接触过不少同行,做爆破模拟的目的大致分三类。
第一类是研究型需求,比如写论文,想搞清楚某种装药结构下的裂纹扩展机理,或者对比不同孔距、排距对破碎效果的影响,这种需求对模型的精细度和物理过程还原度要求比较高,往往需要三维模型配合细网格,甚至会用到SPH(光滑粒子流体动力学)方法模拟近区的岩石剧烈变形。
第二类是工程评估需求,比如矿山设计阶段要确定爆破振动对周边建构筑物的影响范围,或者评估爆破对边坡稳定性的扰动程度,这种需求更关注远区的应力波传播和振动速度峰值,近区的碎块抛掷细节反而没那么重要,这个时候可以把爆炸荷载简化成等效压力曲线或者压力时程,重点做岩体的动力响应分析。
第三类是安全性校核需求,比如城市基坑爆破、隧道掘进爆破,要保证对周边管线和道路不造成破坏,这种需求通常关心临界药量和安全距离,对数值模型的精度要求同样很高,但往往需要联合结构动力学、流体力学甚至多物理场耦合的方法。
这个项目标题既然强调了“岩石爆破模拟建模分析”,我建议按第一类和第二类的混合需求来准备方案,既要保留近区岩石损伤的刻画能力,也要确保远区应力波传播的合理性。
2.2 LS-DYNA在爆破模拟中的核心方法和工具
LS-DYNA处理爆破问题的常用方法有三种:ALE(Arbitrary Lagrangian-Eulerian)、SPH(光滑粒子流体动力学)和S-ALE(Structured ALE)。
ALE方法是我个人最推荐新手入门的方法,思路很直白:空气和炸药这类容易发生大变形的材料用流动的网格来描述,岩石这类基本不发生大变形的材料用拉格朗日网格来描述,两种网格之间通过耦合算法传递力和位移。这种方法的好处是理论成熟、资料丰富、后处理功能完善,而且对计算机性能的要求不算极端,一台配置还行的工作站就能跑起来。
SPH方法则是无网格方法,用一系列粒子代替网格单元,非常适合模拟爆破近区的岩石碎裂和飞散过程,不会出现网格畸变导致计算终止的问题。但SPH的缺点是边界条件处理比较麻烦,粒子自由面会产生非物理的应力振荡,而且粒子数越多、接触搜索越耗时,工程规模的应用成本比较高。
至于S-ALE方法,可以理解成对ALE方法的改良,网格形状更规则,计算稳定性更好,尤其适合处理包含大位移流固耦合的爆炸问题,不过它的前处理设置相对复杂,对新手不太友好。
实际选型的时候,如果你的问题更关注“岩石损伤范围”和“振动传播”,用流固耦合ALE网格就够了;如果你的问题要研究“碎块飞散轨迹”和“抛掷堆积”,建议近区用SPH粒子、远区用拉格朗日网格做混合建模;如果是超大尺度工程问题,我建议改用等效荷载法,把爆源简化成一个压力时程曲线施加在炮孔壁上,这样计算效率会提升几个量级。
2.3 为什么“建模分析”比单纯仿真更重要
很多初学者容易忽略一件事:LS-DYNA求解器本身不会告诉你结果对不对,它只是按照你给定的模型、参数和算法,忠实地解出一组方程组。真正值钱的是建模分析的过程,是你在前处理阶段对问题的抽象和简化。
比如,岩石本构模型有几十种,弹塑性的、损伤的、高压状态方程的,你选哪一种,直接决定了计算结果的可信度。又比如,炸药爆轰产物是应该用JWL状态方程来做完整爆轰模拟,还是简化为一个峰值压力加载,这取决于你的问题是“找规律”还是“绝对预测”。再比如,单元尺寸怎么定、人工阻尼怎么设、时间步长怎么控制,这些都会显著影响结果。
所以这篇文章的主体思路是:先把爆轰物理背景讲透,再讲材料模型和参数标定,然后落实到一个具体的建模流程中,最后把求解和后处理中容易翻车的细节拿出来单独说。这一整套逻辑,就是“建模分析”四个字的真实含义。
3. 核心建模要点:材料模型、参数标定与网格策略
岩石爆破模拟的参数体系非常庞杂,涉及炸药、岩石、空气三种材料,各自又包含密度、强度参数、状态方程参数等多个维度。很多人在这一步就迷失了,要么参数来自某篇年代久远的论文,要么是别人模型的复制,最后算出来的结果要么不收敛,要么物理上完全不对劲。
3.1 单位制的统一是一切的前提
在LS-DYNA里,因为没有强制单位制概念,所以建模时必须自己约定一套自洽的单位系统。爆破问题我推荐采用cm-g-μs单位制,也就是长度单位用厘米、质量单位用克、时间单位用微秒,这样导出的压力单位是兆帕(因为1 g/(cm·μs²) = 1×10⁵ Pa = 0.1 MPa,再换算成标准值需要自己核对)。这套单位制的优势在于,岩石和炸药的典型参数数值区间比较友好,网格尺寸和计算时间步长也容易控制。
需要特别提醒的是,重力加速度在cm-g-μs单位制下是9.8×10⁻⁴ cm/μs²,很小的一个数,如果设置了重力荷载且数值填错一个量级,整个应力场的本底值都乱了,后面根本没法分析。我的习惯是在Excel里先列一张单位换算表,把密度、弹性模量、强度、压力、时间、速度几个核心量全部换算好,再填入关键字文件,避免边建模边换算出错。
3.2 岩石材料模型怎么选,RHT和HJC怎么取舍
岩石本构模型的选择,基本决定了你模拟的“物理可信度”。目前在爆破模拟领域用得最多的有两类:HJC模型(Holmquist-Johnson-Cook)和RHT模型(Riedel-Hiermaier-Thoma),两者都是为冲击和爆炸加载条件下的混凝土、岩石类材料开发的。
HJC模型长于描述材料在大高压、高应变率、大变形条件下的强度演化,包含压力相关强度、损伤累积和残余强度,比较适合处理爆炸冲击波作用下的破碎问题。但它对应变软化和拉伸破坏的描述略显粗糙,很多工程案例中会发现拉裂范围偏小,因为HJC对拉伸损伤不敏感。
RHT模型则是从混凝土动态破坏研究中发展起来的一套更接近物理机制的本构,引入了弹性极限面、失效面、残余强度面的概念,能更好地描述脆性材料从弹性到损伤再到碎裂的渐进过程,同时对应变率效应、拉伸截断、损伤软化都做了专门处理。在我看来,对于岩石爆破这类以拉裂破坏为主导的问题,RHT模型的适用性明显优于HJC。
当然,无论选哪个模型,都别直接照搬论文里的参数。不同岩石的密度、孔隙率、含水量对参数影响极大,必须根据你的岩样实验数据重新标定。工程上如果实验数据不足,至少要有单轴抗压强度、抗拉强度、弹性模量、泊松比这些基础力学指标来反推模型参数。
3.3 炸药爆轰的JWL状态方程参数
炸药建模在LS-DYNA中通常用高能炸药材料模型(MAT_HIGH_EXPLOSIVE_BURN)配合JWL状态方程。JWL方程描述的是爆轰产物压力和比容之间的关系,包含两个指数衰减项和一个压力项,形式比较复杂,但工程上理解起来并不难:它就是在描述炸药爆炸后的气体产物在膨胀过程中,压力是如何快速衰减的。
关键的参数包括爆速D、爆压P_CJ、初始密度ρ₀,以及JWL方程中的A、B、R1、R2、ω。这些参数通常情况下不需要你自己去推导,可以直接从炸药手册或LS-DYNA的关键字手册案例中找到常见炸药的推荐值,比如乳化炸药、铵油炸药、TNT都有成熟参数。但有一点必须注意:如果用的是模型简化法(等效压力加载),就不需要JWL方程,只需要按经验公式计算爆腔壁面的峰值压力和作用时间,再把它直接施加到炮孔壁上。
我个人做爆破模拟时,除非研究课题特别关注炸药与岩石的耦合作用细节,否则更倾向于使用等效荷载方法来处理工程问题,因为完整爆轰模拟的计算成本实在太高,动辄几十个小时,而等效荷载方法在结果趋势上并不会差太多,而且更容易收敛。这个取舍在2.2节已经提过,后面第4节还会专门对比。
3.4 网格划分策略:尺寸、拓扑和流固耦合界面
在爆破模拟中,网格尺寸直接决定两个东西:计算成本和应力波分辨率。应力波在岩石中的传播速度大约是每秒几千米量级,一个周期内需要至少8到10个单元才能保证波形不畸变,所以如果关心的是主频在100到200赫兹范围内的爆破振动信号,那么最大网格尺寸大约在0.1到0.25米这个级别;如果想精细刻画炮孔附近的粉碎区和破裂区,那近区的单元尺寸必须细化到厘米级甚至毫米级。
很多新人在这一步容易走极端:恨不得全局都画细网格,结果一个模型几百万单元,算几天几夜都算不完。更理智的做法是分区过渡,在炮孔近区用密网格(比如1到2厘米),在远区逐渐过渡到疏网格(比如20到50厘米),中间用渐变网格连接。这种做法的理论基础是惠更斯原理和波的衰减特性——只有近区的冲击波压力梯度大,需要高分辨率捕捉,远区的波阵面已经相对平滑,不需要过多单元。
网格拓扑上,六面体网格的精度和收敛性优于四面体,但复杂地质体边界往往只能画出四面体。我的经验是:炸药和空气域尽量用六面体,岩石域中关键研究区域用六面体,非关键区域用四面体也是可以接受的。流固耦合界面上,需要保证空气网格和炸药网格之间共节点或采用Coupling约束,严防网格穿透和初始穿透警告。
4. 实操过程:从前处理到求解的完整解析
现在进入实操环节。我会把整个建模过程按流程拆开,从几何建模开始,经过网格划分、关键字设置、求解控制,到最后运行求解器,每一步都附上我在实际项目里验证过的操作建议。
4.1 几何建模与模型尺寸设定
根据爆破问题的对称性,可以大幅简化模型尺寸。比如单孔柱状装药问题,如果岩体条件在爆炸加载方向上具有对称性,可以建1/2模型甚至1/4模型,并在对称面上施加法向约束,这样计算量直接下降到原来的1/2或1/4。轴对称问题则可以选择二维模型,把岩石看作一个平面应变问题,进一步压缩成本。
模型尺寸的设定必须考虑边界效应。如果模型太小,应力波会快速到达边界,产生虚假反射,严重污染目标区域的应力场。解决这个问题的标准做法是在模型边界设置无反射边界条件(*BOUNDARY_NON_REFLECTING),把透射边界吸收掉。但即便如此,模型还是应该足够大,保证在关注时间段内应力波不会传播到边界,一般要求目标区域到边界的距离大于应力波在关注时长内传播距离的1.5倍。
拿一个典型的单孔爆破模型举例:孔径10厘米,药径7厘米,装药长度1米,岩石区域可以建成长宽高各5米的正方体,炮孔位于中心。这样在1000微秒以内的模拟时间段内,应力波大概传播3到4米,还碰不到边界,边界反射影响很小。
4.2 网格划分操作
我通常使用HyperMesh或LS-PrePost完成网格划分,两个工具各有优劣。HyperMesh网格控制能力强,适合复杂几何;LS-PrePost完全免费,操作门槛低,而且可以直接以关键字形式导出网格数据,对于爆破模型这种长方体或圆柱体占主导的模型足够用了。
网格划分的具体操作不是这篇文章的重点,但有几个原则值得重复强调:炸药和空气域要画得匀称,因为流固耦合算法对网格质量非常敏感,如果网格拉伸过大,容易产生压力振荡甚至计算终止;岩石近区网格尺寸要与炸药网格尺寸保持合理比例,一般不超过3比1,否则耦合界面上的节点搜索会出现问题。
网格划分完成后,需要及时检查单元质量,重点关注Jacobian、翘曲率、最大内角等指标。对于爆炸力学问题,一个Jacobian为负的单元就可能让计算在数千步后崩溃,而这种问题往往隐藏得很深,排查起来极其耗时。
4.3 关键字设置:材料、状态方程、接触与边界条件
网格准备好了,接下来就是往LS-DYNA关键字文件里填写模型信息。我推荐直接用文本编辑器打开.k文件进行修改,因为爆破模型的关键字数量不多(通常几十个卡片),但每张卡片的内容都对计算稳定性有决定性影响。
一个最基本的流固耦合爆破模拟,需要的核心关键字包括如下这些:
- *KEYWORD:文件头,包含模型标题和终止控制参数
- *NODE、*ELEMENT_SOLID:节点和单元定义
- *PART:零件定义,每个PART关联一个材料和一套算法
- *MAT_HIGH_EXPLOSIVE_BURN:炸药材料,需要填密度、爆速、爆压
- *EOS_JWL:炸药状态方程参数
- *MAT_NULL:空气材料(密度、动力粘度)
- *EOS_LINEAR_POLYNOMIAL:空气状态方程(通常用线性多项式)
- MAT_RHT或MAT_JOHNSON_HOLMQUIST_CONCRETE:岩石本构
- *INITIAL_DETONATION:爆轰起爆点定义
- *CONSTRAINED_LAGRANGE_IN_SOLID:流固耦合约束卡片,负责空气网格和岩石网格之间的相互作用
- *BOUNDARY_NON_REFLECTING:无反射边界
- *CONTROL_TIMESTEP:时间步控制
- *DATABASE_BINARY_D3PLOT等:输出控制
参数填写过程中,最容易被忽略的坑是关键字默认值。比如空气的初始内能参数、线性多项式状态方程的系数,很多新手以为填个密度就完事了,结果算出来压力场全是噪声。空气模型需要给一个很小的初始内能(比如2.5×10⁻⁶左右的单位制相关值),才会在爆轰冲击下产生正常的压力波。
另一个高频错误是起爆点的坐标设置错误。明明炸药装填在炮孔底部,起爆点却被设成了炮孔口坐标,爆轰波方向反了,近区破碎形态完全不对。每次建模后要检查模型中部件坐标系和实际工程的对应关系,不要想当然。
4.4 流固耦合:空气-炸药-岩石的相互作用
流固耦合设置是整个爆破模拟最关键也最容易出错的环节。基本原理是:炸药和空气作为流体域,用ALE网格描述,岩石作为固体域,用拉格朗日网格描述,两者通过耦合算法交换动量。常用的耦合方式包括CONSTRAINED_LAGRANGE_IN_SOLID中的罚函数法和ALE_MULTI-MATERIAL_GROUP定义多物质组。
实际操作中,需要在不同的PART之间建立耦合关系。一个典型设置是:把炸药和空气放在同一个ALE多物质组里,允许它们在同一个网格中混合流动;岩石单独定义为一个拉格朗日部件;然后在*CONSTRAINED_LAGRANGE_IN_SOLID中指定流体物质组编号和拉格朗日部件编号,并设置罚函数刚度、耦合类型、泄漏控制等参数。
有个经验值得分享:流固耦合的罚函数刚度参数不能一味调大。刚度大了确实能减少穿透和泄漏,但会让时间步长急剧缩小,计算速度迅速恶化。实际项目中,我会先采用默认参数跑一个小模型,观察耦合界面的穿透量,如果穿透量大于一个单元尺寸,再逐步提高刚度;如果出现震荡不回稳,则减小刚度。
4.5 求解控制:时间步长和终止时间
爆破问题的时间尺度非常小,爆轰波通过炸药装药长度的时间通常在几十到几百微秒,应力波在岩体中传播几百厘米的时间也在数百微秒量级。因此,计算终止时间一般设置为1000到5000微秒,视模型尺寸和关注的问题而定。
LS-DYNA采用显式时间积分,时间步长由最小单元尺寸和材料波速决定。在爆破模拟中,空气的声速较大,加上最小单元尺寸很小,时间步长往往会被限制在纳秒量级,这就是为什么爆破模拟计算成本巨大的根本原因。为了提升效率,可以使用质量缩放(mass scaling)技术,人为增加密度以增大时间步长,但质量的增加会带来惯性效应,如果增加太多,应力波传播特性就失真了。
我的做法是:质量缩放比例控制在5%以内,也就是添加的质量不超过原模型总质量的5%,在这个范围内对结果的影响可以接受。超过这个值,比如加了20%到30%的质量,得到的振动峰值和损伤范围就会明显偏离试验数据。
4.6 求解运行与监控
启动求解器后,不能真的放手不管。LS-DYNA求解过程中会定期输出message和status文件,里面记录了时间步长、当前计算时间、能量平衡、单元状态等关键信息。我的习惯是每隔几分钟就瞄一眼这些输出,看看有没有异常警告,比如负体积、单元畸形、能量非物理增长等等,一旦发现苗头,立刻停止计算,回去检查模型,而不是傻等几天后发现结果彻底无法使用。
另外,通过LS-PrePost可以实时查看d3plot输出文件,观察应力和损伤场的演变过程。这种可视化诊断非常有价值,比如撒点看压力波是否规则扩张,如果发现压力波出现奇怪的局部集中或空洞,十有八九是网格或者材料参数出了问题。
5. 跑完求解器之后:后处理与结果验证
求解计算只是工程分析的一半,后处理和结果解读才是决定你工作质量的关键。LS-DYNA的后处理工具LS-PrePost功能强大,可以直接读取d3plot结果文件,绘制应力云图、损伤云图、速度矢量图,还能在任意位置布置测点,输出位移、速度、加速度时程曲线。
5.1 损伤范围怎么定量分析
岩石爆破模拟中最关心的结果之一,是爆破损伤范围。RHT或HJC模型都会输出损伤变量,数值从0到1,0表示无损伤,1表示完全破坏。在LS-PrePost里面,可以画出损伤变量的等值面,再统计不同损伤阈值对应的岩石体积,从而定量评估爆破影响范围。
一个实用做法是设定损伤阈值D=0.1到0.2作为损伤边界,然后在后处理中提取炸药边界到该损伤边界的最远距离,作为“爆破损伤深度”。这个指标可以和现场声波测试或钻孔电视的实测结果做对比,用于标定模型参数。
值得注意的是,不同损伤阈值对应的结果差异很大,D=0.1和D=0.5画出来的损伤区域可能相差一倍的体积。所以在论文或工程报告里,一定要明确说明损伤阈值的选取标准,否则结果对比毫无意义。
5.2 振动速度的监测与分析
爆破振动的评价指标通常是质点峰值振动速度(PPV,Peak Particle Velocity)。在模型中,可以在目标位置(比如边坡坡脚、临近建筑物基础)布置历史变量监测点,提取速度时程曲线,然后取最大峰值作为PPV,对比规范允许阈值,评估爆破方案的安全性。
模型监测点提取的PPV和现场实测数据有天然差异,原因在于数值模型通常没有考虑岩体中的节理裂隙对波能量的衰减作用,所以数值预测值往往比实测值偏高,这在工程上偏于安全。如果数值结果超标不多,可以用一个衰减系数折减后做最终评价。
5.3 模型验证:怎么知道算得对不对
爆破模拟最常见的一个病是:结果看起来漂亮,但细看毫无物理意义。比如应力波速度明显快于理论波速,说明材料的弹性模量或者密度填错了;比如损伤区形态完全对称但实际情况不对称,说明模型少考虑了地质结构面;再比如总能量曲线随时间剧烈增长,说明数值耗散可能出了问题。
我的经验是,每次仿真完成后,第一件事情不是翻云图,而是做三个基础验证:一看能量平衡,保证模型的总能量曲线基本平稳;二看波速,提取监测点的首个波峰到达时间,反推应力波速度是否在合理范围内;三做参数敏感性分析,小幅调整几个关键参数重新计算,看结果趋势是否符合物理规律。只有这三关都过关,模型才值得进一步分析。
5.4 结果的可视化展示与工程表达
岩石爆破模拟的成果最终要呈现给导师、评审专家或者工程决策者,可视化质量直接影响说服力。我建议至少输出三类图件:一是不同时刻的损伤云图序列,展示损伤演化过程;二是关键测点的速度、加速度时程曲线,标注峰值;三是不同方案之间的对比图,比如不同装药量下的损伤范围对比。这些图在LS-PrePost中都可以直接截图,或者用d3plot数据导出到Tecplot和Paraview中精细化处理。
动画输出也很重要,可以展示应力波在岩体中的传播与反射、损伤从炮孔壁向外扩展的全过程。这段动画无论是写论文、做汇报还是给甲方讲方案,都是极有力的展示材料。
6. 避坑指南:爆破模拟中常见的十个问题
这部分内容我不敢说百分之百涵盖所有问题,但下面这十条每一条都是我在实际项目中遇到过并且处理过的,按典型程度从高到低排列,供你排查时按图索骥。
6.1 负体积问题
这是显式动力学模拟中最常见的致命错误之一,爆破模型尤其多。负体积通常出现在ALE空气域和岩石拉格朗日网格的高压区域,原因是单元在大变形下翻转,体积计算变成了负值。解决办法有四个方向:细化网格降低单元畸变程度;改用多物质ALE算法提高流动适应性;调整时间步长控制参数;把高度变形区域改用SPH粒子建模。如果负体积集中出现在某一小区域,也可以在建模阶段就将该区域网格做特殊加密处理。
6.2 沙漏模式失控
沙漏是单点积分单元特有的零能变形模式,表现为单元交替膨胀压缩但不产生应变能。爆破模拟中如果总沙漏能超过内能的10%,结果就不可信。控制沙漏的方法包括:增加沙漏控制刚度系数(HQ stiffness)、改用全积分单元、细化网格、避免局部大变形区域使用过于细长的单元。我通常先在*CONTROL_HOURGLASS中设置IHQ=4或6,再观察沙漏能占比,必要时再提高系数,但系数过高会引入人为刚度,得不偿失。
6.3 质量缩放过度
前面提过质量缩放是一把双刃剑,不加算得慢,加多了算得假。实际项目中,我建议先不启用质量缩放跑一版,记录最小时间步长和总计算时间,然后评估是否值得引入质量缩放。如果计算时间在可接受范围内,就尽量不加;如果实在需要加速,必须控制质量增加比例并做结果对比验证。
6.4 材料参数不匹配导致压力波速度异常
有一次项目计算完后,发现应力波从炮孔到监测点的时间只有理论值的一半,排查半天才发现岩石材料的弹性模量是混凝土的标准值,并不适用于现场砂岩。这种问题只有做波速验证才能发现,所以前文反复强调的“结果验证”步骤不是走过场,是保命用的。
6.5 忽略边界反射污染
无反射边界条件设置不当,会导致应力波在边界反射并叠加到目标区域,使结果出现多余的损伤区。检查的方法是:在后处理中观察压力云图,如果看到标准的球形波阵面在靠近边界时出现异常“回弹”,说明边界条件失效。修正的办法是检查*BOUNDARY_NON_REFLECTING是否覆盖了所有外表面,以及膨胀波和剪切波的吸收参数是否设置正确。
6.6 网格尺寸敏感性问题
爆破模拟结果对网格尺寸的敏感程度远超你的想象。同一炮孔、同一参数,用5厘米网格和10厘米网格算出来的损伤范围可能相差30%以上。为避免这个问题,至少在同一研究中保持网格策略一致,最好做一次网格收敛性分析,对比两到三套不同尺寸网格的结果,确定计算结果已趋于稳定,再进入批量参数研究。
6.7 忽略重力与初始应力场
很多爆破模拟直接忽略重力和地应力,这在浅表爆破问题中问题不大,但在深部岩体爆破中,初始应力场对应力波的传播和裂纹扩展路径影响极大,忽略它会得到完全错误的结果。如果需要考虑,建议在LS-DYNA中先做动力松弛(dynamic relaxation)或静力分析,获得初始应力场后再进行爆破加载。
6.8 炸药填充密度与装药结构错误
乳化炸药、铵油炸药的密度差异会导致爆速和爆压的显著变化,进而影响爆破效果。建模时填写的炸药参数必须与现场实际使用的炸药一致,不要用TNT的参数替代乳化炸药参数。另外,径向不耦合装药(药卷直径小于炮孔直径)时,炸药和岩石之间有一段空气间隙,这个间隙在模型中一定要体现,因为它会显著削峰,降低炮孔壁上的初始压力。
6.9 收敛性判断只看位移不看能量
爆破模拟的目的是评估破坏效应,但很多新手只看位移云图,不看全局能量演化。其实总能量曲线的平稳性比位移云图更重要,如果总能量随时间明显上升,说明系统正在不断获得虚假能量,模型可能在非物理地放大动力响应。标准的做法是监控总能量、动能、内能、沙漏能、滑移能的时程曲线,保证总能量基本守恒。
6.10 忽视单位制混乱造成的系数错误
这个问题看起来低级,但实际发生率极高,尤其是合作项目中不同伙伴提供的参数单位不一致时。一条经验:每次获得新参数后,先做一次单位换算并在文件里批注标明单位,再填入模型;如果发现结果误差一个数量级,优先检查单位制换算。
7. 实际项目经验:一个单孔爆破模型的完整案例
讲了这么多理论和方法,我用一个实际做过的案例把整个流程串一遍。这是某个采石场边坡开挖项目的前期数值试验,用LS-DYNA做单孔爆破对岩体的损伤评估,甲方要求给出不同装药高度下的爆破裂隙圈半径建议值。
7.1 工程背景与模型参数选取
模型采用对称结构,建立1/2对称模型,岩石区域为5米×5米×5米正方体。岩石为中风化花岗岩,根据室内试验,密度2650千克/立方米,弹性模量35吉帕,泊松比0.22,单轴抗压强度85兆帕,抗拉强度5.5兆帕。炸药采用现场使用的二号岩石乳化炸药,密度1100千克/立方米,爆速4200米每秒,爆压按公式P_CJ≈ρD²/4计算得到约4.85吉帕。
在前处理过程中,我将炸药、空气和岩石三种材料分别建立PART,单位制选用cm-g-μs。换算之后,岩石密度2.65克/立方厘米,弹性模量0.35兆牛/平方厘米(即35吉帕对应0.35×10⁶兆帕,注意换算成相应单位制数值)。炸药密度1.1克/立方厘米,爆速0.42厘米/微秒,爆压4.85×10⁻²兆牛/平方厘米。空气密度1.29×10⁻³克/立方厘米,初压0.1兆帕。
7.2 建模步骤和计算过程
建模分步如下:几何建模阶段,用LS-PrePost建立1/2圆柱形炮孔并切割出炸药区、堵塞区和空气区;网格划分阶段,近区网格尺寸0.02米(2厘米),远区逐步扩展到0.2米(20厘米),最终模型单元数约120万;关键字设置阶段,依次填写材料、状态方程、流固耦合、边界条件和求解控制卡片。
计算过程中,我启用了质量缩放,最终添加质量占总质量的3.8%,计算时间大约18个小时(使用的是一台16核的工作站)。中间遇到过两次负体积警告,主要集中在炸药近区的空气网格,通过把近区空气网格重新加密并调整单元形状来解决。跑完以后,用LS-PrePost输出损伤变量云图,可以看到炮孔周围形成一个环状的破碎区和一个外围的裂隙区,形态与现场爆破试验的高转速相机拍摄结果基本一致。
7.3 结果分析与方案优化建议
提取损伤云图后统计,药径7厘米、装药长度1米的条件下,岩石完全损伤区半径约0.25米,裂隙区半径约0.9米。进一步设计了三组不同装药长度的对比方案,分别计算损伤范围后发现,装药长度从1米增加到1.5米,裂隙区半径扩大了约15%,并不呈现线性关系。这个非线性增长规律对于优化装药结构设计很有价值,按照线性外推来估计损伤范围的传统做法存在较大偏差。
将数值获得的裂隙区半径与现场爆破后的地震波CT探测结果做了初步对比,误差大约在20%以内,对于爆炸冲击这种高离散性问题的数值预测来说,这个精度已经满足工程参考需求。后续如果要做更精细的标定,需要结合爆破漏斗试验的数据来反演修正RHT模型中的关键参数。
8. 一些实用经验和建议
写完主体内容,我再补充几点在长期使用LS-DYNA做爆破模拟过程中积累的个人体会。这些内容不是教程里能学到的,更多是实战中反复摔打出来的直觉和习惯。
第一,建模一开始就要规划好后处理需要什么数据。比如需要在哪些位置提取振动时程曲线,就应该在建模阶段布置好历史变量监测点,否则计算完了再想补数据,只能重跑一遍,白白浪费几十个小时的机时。
第二,做批量方案对比研究时,尽量保持材料参数和网格策略完全一致,只改变单一变量(比如装药量、孔距、起爆方式),这样才能得到具有可比性的结论。很多新手做参数研究时,每个模型都顺手调整了网格,导致结果差异完全无法归因。
第三,不要迷信通用参数。网上有很多别人整理好的材料参数库,下载下来直接用虽然省事,但材料的力学响应高度依赖于初始条件和环境,通用参数往往只能得到“看起来合理”的结果。如果做工程决策,必须要在现场取样做基础力学试验,即使不能做全套SHPB动态试验,至少要做静态力学测试,用静态参数结合经验公式推导动态参数。
第四,学会“先小后大”的策略。正式计算之前,先用一个粗网格版本快速跑通整个流程,确认边界条件、流固耦合、输出设置都没问题,再导入密网格做正式计算。否则直接在密网格上反复试错,光是找建模错误就要浪费大量时间。
第五,重视同行交流。LS-DYNA爆破模拟的参数调优和问题排查,很多时候靠个人摸索非常费劲,但找有经验的人聊半小时,可能就解决了好几天都没头绪的问题。
9. 这个项目往后还能怎么扩展
如果计算机模拟爆破过程你已经能顺畅地建模和计算,下一步可以往更深的方向走。一个是结合多孔爆破的延时起爆模拟,研究不同毫秒延时间隔对破碎效果和振动叠加的影响,这类问题在工程实践中很常见,比如数码电子雷管的逐孔起爆设计;另一个是考虑岩体中的节理裂隙对爆破效果的影响,这时需要引入离散裂隙网络模型或者用离散元方法(如3DEC、UDEC)与有限元做耦合分析;还有一种是做爆破与结构响应的联合分析,把LS-DYNA算出来的振动时程作为另一个结构模型的输入,评估爆破振动对建筑物的影响,这类联合分析在工程安全评价中需求量很大。
坦白说,岩石爆破模拟虽然看起来只是一个有限元软件的应用场景,但它牵扯到的东西相当庞杂:爆轰物理、冲击波理论、岩石动力学、计算力学、数值方法、高性能计算,哪一个环节不懂,都可能在某个步骤上绕不过去。而正是这种复杂性,让这个方向保持了很高的技术门槛和长久的研究热度。如果你打算深入做下去,我建议在掌握软件操作的基础上,把更多精力放在理解物理过程和数值原理上,这样无论软件版本怎么升级、方法怎么进步,你都能站得住脚跟。