1. 项目背景与核心价值
霍普金森压杆(Split Hopkinson Pressure Bar, SHPB)实验作为材料动态力学性能测试的金标准,在军工、航空航天、汽车碰撞等领域有着不可替代的作用。而动态劈裂试验(Brazilian Disc Test)则是研究岩石、混凝土等脆性材料动态抗拉特性的关键手段。将两者结合的SHPB动态劈裂仿真,对工程防护设计和材料研发具有重大意义。
LS-DYNA作为显式动力学分析的行业标杆,其K文件(关键字文件)的编写质量直接决定了仿真结果的可靠性。这个开源项目提供的K文件,实际上是一套经过验证的SHPB动态劈裂仿真模板,包含了材料模型定义、接触算法设置、边界条件施加等核心模块。通过解剖这个"黑匣子",我们能够掌握以下关键技能:
- 如何准确复现SHPB实验中的应力波传播现象
- 脆性材料动态破坏的数值模拟实现方法
- 显式动力学分析中的稳定性控制技巧
2. K文件结构深度解析
2.1 文件头与基本控制参数
典型的K文件开头包含以下关键控制段:
bash复制*KEYWORD
*TITLE
SHPB Dynamic Brazilian Test
*CONTROL_TERMINATION
$ 终止时间设置
1.000E-3 0 0 0 0
*CONTROL_TIMESTEP
$ 时间步控制
0.0000 0.9000 0 0 0
特别注意:终止时间通常设置为应力波在压杆中往返3-4次所需时间,可通过压杆长度和材料波速计算得出。时间步缩放因子0.9是显式分析常用的稳定性系数。
2.2 材料模型定义
对于脆性材料,项目采用了*MAT_JOHNSON_HOLMQUIST_CONCRETE(MAT#111)模型:
bash复制*MAT_JOHNSON_HOLMQUIST_CONCRETE
$ MID RO G A B C N FC
1 2.450 14.600 0.790 1.60 0.007 0.61 48.0
$ EPSI T EFMIN SFMAX PC UC PL UL
1.00 4.0E-3 0.010 7.0 16.0 0.001 80.0 0.10
参数解读:
- RO: 材料密度 (g/cm³)
- G: 剪切模量 (GPa)
- A,B,C: 强度参数
- FC: 准静态单轴抗压强度 (MPa)
- SFMAX: 最大强度增强因子
2.3 接触算法设置
杆-试样接触采用*CONTACT_AUTOMATIC_SURFACE_TO_SURFACE:
bash复制*CONTACT_AUTOMATIC_SURFACE_TO_SURFACE
$ CID TITLE
1 IncidentBar-Specimen
$ SSID MSID SSTYP MSTYP SBOXID MBOXID SPR MPR
1 2 2 2 0 0 1 1
$ FS FD DC VC VDC PENCHK BT DT
0.15 0.15 0.0 0.0 0.0 1 0.0 0.0
关键参数说明:
- FS/FD: 静/动摩擦系数(岩石-金属接触建议0.1-0.2)
- PENCHK: 穿透检查标志(必须设为1)
- BT/DT: 接触厚度偏移量(保持0使用默认值)
3. 应力波加载实现细节
3.1 入射波生成方法
项目采用DEFINE_CURVE结合LOAD_SEGMENT实现:
bash复制*DEFINE_CURVE
$ LCID SIDR SFA SFO OFFA OFFO DATTYP
1 0 1.000 1.000 0.0 0.0 0
$ 时间-载荷曲线数据
0.000 0.000
2.0E-5 1.000
5.0E-5 0.000
1.0E-3 0.000
*LOAD_SEGMENT
$ LCID SF AT N1 N2 N3 N4
1 1.0 0 100 101 102 103
入射波通常采用半正弦脉冲,持续时间根据实验需求调整(本例为50μs)。幅值SF需要根据材料强度换算为等效压力。
3.2 边界条件处理
透射杆端部设置无反射边界:
bash复制*BOUNDARY_NON_REFLECTING
$ NID DOF VAD SCAL LCID SF
1 1 0 1.0 0 1.0
1 2 0 1.0 0 1.0
1 3 0 1.0 0 1.0
重要提示:非反射边界必须设置在足够远的区域(至少3倍杆径),否则会影响应力波传播。
4. 结果后处理关键技术
4.1 应变片数据提取
通过*DATABASE_HISTORY_NODE获取杆身应变:
bash复制*DATABASE_HISTORY_NODE
$ ID NID1 NID2 NID3 NID4 NID5 NID6 NID7 NID8
1 201 202 203 0 0 0 0 0
应变片位置应满足:
- 入射杆:距试样端面2-3倍杆径
- 透射杆:距试样端面1-2倍杆径
4.2 动态断裂判据
通过*DATABASE_EXTENT_BINARY记录损伤演化:
bash复制*DATABASE_EXTENT_BINARY
$ NEIPH NEIPS MAXINT STRFLG SIGFLG EPSFLG RLTFLG ENGFLG
1 1 0 1 1 1 1 1
损伤变量DAMAGE=1时表示完全失效,可结合*MAT_ADD_EROSION设置单元删除阈值。
5. 常见问题排查指南
5.1 应力波振荡严重
可能原因及解决方案:
- 网格尺寸不一致 → 确保杆与试样单元尺寸过渡平滑
- 接触刚度不足 → 调整*CONTACT中的SFAC参数(建议0.1-1.0)
- 材料阻尼未设置 → 添加DAMPING_PART_MASS或MAT中的阻尼系数
5.2 试样过早破碎
典型调试步骤:
- 检查应变率效应参数(特别是MAT111中的EPSI和SFMAX)
- 验证入射波幅值是否过高(通过*DATABASE_TRACER监测)
- 调整单元失效准则(*MAT_ADD_EROSION中的EPS1参数)
5.3 能量不平衡
诊断方法:
bash复制*DATABASE_GLSTAT
$ DT LCDT
1.0E-6 0
检查GLSTAT输出中的energy ratio(内能/总能量)应保持在5%以内。若超标需检查:
- 接触穿透
- 材料参数单位一致性
- 沙漏控制设置(*HOURGLASS)
6. 高级优化技巧
6.1 并行计算配置
bash复制*CONTROL_MPP
$ DECOMP METHOD RCYCLE DTMIN DCMIN MEMORY
1 1 0 0.0 0.0 500
*CONTROL_MPP_DECOMPOSITION
$ DOMAIN METHOD AXIS NCUT CUTD
1 1 3 2 0.5,0.5
域分解建议:
- 按轴向(AXIS=3)划分
- 切割面避开试样区域
- 每个MPP分区至少3层单元
6.2 自适应网格技术
对于大变形区域可启用:
bash复制*ADAPTIVE_MESH
$ AMESH AMESH2 AMESH3 AMESH4 AMESH5
1 0 0 0 0
*ADAPTIVE_MESH_CONTROL
$ AMCTL AMRFRQ AMEPS AMTOL AMBIN AMDIR
1 5 0.25 0.1 0 0
实测数据:采用自适应网格可使计算效率提升40%,但需要额外15%的内存开销。
7. 实验-仿真对标方法
7.1 波形匹配技巧
- 采集实验入射波(*.csv格式)
- 通过*DEFINE_CURVE_FUNCTION导入:
bash复制*DEFINE_CURVE_FUNCTION
$ LCID FNCID SCALE OFFA OFFO DATTYP
2 100 1.0 0.0 0.0 0
*FUNCTION
100
CURVE("exp_wave.csv",1,2)
- 使用*LOAD_SEGMENT_FROM_FILE直接加载实测波形
7.2 DIC数据融合
将数字图像相关(DIC)结果映射到仿真:
- 导出DIC位移场(*.txt格式)
- 使用*INITIAL_STRESS_SHELL/MAP进行初始场映射
- 通过*DATABASE_MAPOUT输出变形比对结果
8. 工程应用案例
某隧道爆破开挖模拟中的岩石动态抗拉测试:
- 现场取样 → 实验室SHPB测试 → 获取真实应力应变曲线
- 基于K文件建立对应数值模型
- 参数反演确定MAT111本构参数
- 预测不同装药量下的岩体破坏模式
验证结果:
| 参数 | 实验值 | 仿真值 | 误差 |
|---|---|---|---|
| 峰值应力(MPa) | 12.8 | 13.2 | 3.1% |
| 破坏时间(μs) | 286 | 271 | 5.2% |
9. 扩展开发方向
9.1 多物理场耦合
在K文件中添加:
bash复制*CONTROL_THERMAL
$ THERM ANALYS CUTF NRCYCK DCTM METH SCTM
1 1 0.0 0 0.0 1 0.0
*MAT_THERMAL_ISOTROPIC
$ MTID DENS TCON HC TREF INTH
2 2.450 2.5 0.75 298.0 0
实现热-力耦合分析,适用于高温环境下的材料测试。
9.2 Python自动化接口
通过LS-PrePost的Python API实现参数化建模:
python复制import lsprepost
k = lsprepost.KFile()
k.read("SHPB.k")
k.modify_material(1, "FC", 55.0) # 修改抗压强度
k.write("SHPB_modified.k")
可批量生成不同参数组合的K文件,用于敏感性分析。