关键词:断裂仿真;变分损伤模型;UMAT子程序;LS-DYNA;裂纹扩展
这篇文章来自魏玛包豪斯大学和同济大学,2025年发表在Advances in Engineering Software上,DOI:10.1016/j.advengsoft.2025.103924。作者把Ren等人提出的变分损伤模型(VDM)和带阈值的改进版(NVDM)写成LS-DYNA用户材料子程序(UMAT),代码开源放在GitHub上,FORTRAN90写成。
断裂模拟的主流做法各有短板:相场方法要解耦合的多物理场方程,还得在裂纹可能经过的地方加密网格,成本高;XFEM、近场动力学这类方法处理复杂三维裂纹模式又费劲。变分损伤模型的好处是纯力学框架、不含梯度项,损伤变量能由应变能密度显式算出来,嵌入显式有限元后每步只解一个线性方程组,又快又省。
图1 变分损伤模型在LS-DYNA中的子程序实现方案
图1是子程序的整体实现方案:材料本构沿显式中心差分流程走,先由应变增量更新应变,做能量分解,再算有效应力、更新应变能,按历史最大正应变能算损伤变量和退化函数,最后输出给主程序。损伤场的求解用LAPACK/BLAS线性代数库,结果放在公共块里。
先说理论。变分损伤模型把尖锐裂纹看成一条有一定厚度的损伤带,用一个取值0到1的标量场表示:0是完好、1是彻底断裂。裂纹面密度函数只依赖损伤值本身,不含空间梯度,这是它比相场省计算的根本原因。总势能等于退化后的弹性能加上裂纹表面能,退化函数取(1减s)的p加1次方,损伤演化由能量极小化条件直接解出。
VDM无阈值版本里,材料一有正应变能就开始损伤;NVDM加了阈值,应变能密度低于门槛时材料保持线弹性,超过后才起裂,能避免低能级下的过早开裂。应力按谱分解成拉压两部分,只有拉伸部分被退化,压应力不受损伤影响,这样裂纹面不会互相嵌入。
图2 裂纹拓扑的损伤场表示:(a)尖锐裂纹 (b)局部化损伤
图2画的就是这个拓扑表示:左边是理想尖锐裂纹,右边是带长度的损伤带。长度尺度参数控制损伤带的宽度,也决定材料的表观强度。
然后看子程序的代码组织。应变增量存在eps(1)到eps(6),未退化应力在sig(1)到sig(6);历史变量hsv里,前六项存应变,七到十二项存有效应力,第十三项存弹性应变能,第十四项是损伤场,第十五项是退化函数。每次调用更新一遍这些量,损伤显式解出,不需要迭代。
图3 UMAT子程序代码段:(a)应变计算 (b)应力分解
图3是代码里最要紧的两段:左边算应变,右边做应力分解并求正应变能,Lamé常数和G直接参与计算。整段代码用自由格式FORTRAN90写,读起来清楚,也方便改。
作者用一串算例验证子程序。先做单元素循环加载:E取210吉帕、泊松比0.3、断裂能5000牛每米。VDM一加载就软化,曲线曲率随微裂纹不断生成而变化;NVDM低能段是直线,能量过阈值后才弯。卸载再加载时微裂纹先闭合再张开,表现为重复的弹性段。
图4 循环荷载I作用下VDM与NVDM的应力应变曲线
图4是循环荷载I下的应力应变曲线,左VDM右NVDM,能清楚看到两种模型的起裂差异。
单边缺口拉伸算例研究长度尺度和网格的影响:长度尺度取单元尺寸的0.5到3倍,越小材料越强,峰值荷载和根号下单元尺寸除以长度尺度成线性关系;网格从25乘25加密到100乘100,裂纹细节更丰富,荷载曲线几乎不动,说明子程序对网格不太敏感。
图5 长度尺度参数对VDM/NVDM荷载曲线的影响
图5是不同长度尺度下的荷载曲线对比,左右分别是VDM和NVDM。
动态算例更能说明问题。裂纹分叉试验用86万节点的六面体网格,5兆帕和10兆帕两种荷载:NVDM起裂比VDM晚,裂纹更细,荷载越大分叉越多,裂纹尖端速度都压在瑞利波速的一半以下。
图6 5兆帕荷载下VDM与NVDM的裂纹分叉模式演化
图6是5兆帕荷载下裂纹分叉的演化过程,VDM从50微秒裂到121微秒,NVDM到131微秒才完全裂开。
Kalthoff-Winkler低速冲击试验里,16.5米每秒冲击下裂纹角66.7度,25米每秒是67.2度,都贴近实验测的70度;3D模型两百万节点,桌面机跑一小时就能出结果,裂纹面和2D结果对应良好。
图7 Kalthoff-Winkler低速冲击模型:(a)装置 (b)网格1
图7是Kalthoff-Winkler模型设置:左边是试件和冲击边界条件,右边是裂纹路径附近的加密网格。
总结一句:这套UMAT把变分损伤模型搬进了商用软件,准静态和动态断裂都能算,代码开源可以拿来就用。模型不含梯度项、纯力学框架,往后还能移植到近场动力学、SPH这些方法里,再用MPI并行把大规模裂纹问题的求解提速。