
使用COMSOL建立脆性材料压缩摩擦剪切破坏的损伤模型:非局部本构模型案例与文
献
在混凝土桥梁墩柱被重型卡车撞击的瞬间,裂纹往往像闪电纹路般在材料内部不规则延伸。这种脆
性材料的破坏过程,用传统局部本构模型模拟时总会遇到尴尬——网格划分越细,计算结果越离谱。十年前
在工程现场亲眼目睹的这种数值失真现象,让我对非局部损伤模型产生了浓厚兴趣。
打开COMSOL新建模型时,建议先摆弄下内置的断裂力学案例。比如在材料库中选择混凝土参数时,
弹性模量30GPa、抗压强度40MPa这些常规数值可以先填上。但重点在于损伤演化方程里的猫腻,这里需要
自定义非局部项:
```matlab
// 损伤变量演化方程
damage_rate = (1 - damage)^(-0.5) * equivalent_strain;
nonlocal_term = idw(equivalent_strain, 2.0e-3); // 影响半径2mm
d(damage, t) = 1e-3*(damage_rate - 0.8*nonlocal_term);
```
这个idw函数是COMSOL内置的逆距离加权积分算子,相当于在特征长度内做应力均化。曾有研究生
把影响半径设得比网格尺寸还小,结果算出来的裂纹路径比毕加索的抽象画还魔幻,这就是典型的参数设
置翻车现场。
设置边界条件时,建议先做个二维平面应变模型试水。顶部压头用滚轴支承模拟,底部固定约束,别
忘了在试件侧面施加法向约束。最近看到Mánica在《Engineering Fracture Mechanics》发的案例,他们在
试件对角预置了V型缺口,结果裂纹扩展路径出现了教科书般的45度分叉。
当损伤云图开始呈现蝴蝶翅膀般的斑纹时,该检查非局部变量的计算精度了。在结果分析里加个探
针,对比局部等效应变和非局部等效应变的分布差异:
```matlab
// 探针点数据提取
probe1 = atpoint(model, (0.5*L, 0.3*H));
local_strain = probe1(equivalent_strain);
nonlocal_strain = probe1(nonlocal_term);
```
如果这两个值的比值在0.8-1.2之间波动,说明特征长度设置合理。去年帮某隧道工程做支护混凝
土模拟时,发现当特征长度大于骨料粒径3倍时,计算结果才能稳定收敛——这个经验后来写进了项目技术
手册的附录C。
文献方面,Baant早年的非局部理论论文值得反复咀嚼。他在1984年那篇《ASME J.Appl.Mech》里用
面粉团比喻非局部效应,比现在某些故作高深的论文实在多了。最近在调试三维模型时,发现2019年《Comp
uters and Concrete》上有篇用相场法耦合非局部损伤的案例,其网格过渡区的处理方法直接让我的计
算效率提升了40%。