2. 接触力学基础与Abaqus接触算法
接触问题的本质是:两个或多个物体在边界上发生相互作用,而这种相互作用只在“接触”这一条件成立时才存在。与普通边界条件不同,接触边界的位置、接触面积、接触压力分布都是未知的,必须通过求解过程迭代确定。因此接触是典型的边界非线性问题,它同时带来法向不可穿透、切向摩擦、以及接触状态突变三类难点。Abaqus 的接触算法正是围绕这三类难点设计的。
一、法向接触:不可穿透与压力传递
法向接触要满足两个条件:一是不可穿透,即从面节点不能侵入主面;二是压力非负,即接触面之间只能压不能拉。用数学语言描述,设从面节点到主面的法向间隙为 gn,接触压力为 p,则要求 gn ≥ 0、p ≥ 0,且 gn·p = 0。最后一条称为互补条件:要么有间隙无压力,要么有压力无间隙,二者不能同时为正。
在 Abaqus/Standard 中,法向约束有两种实现方式。罚函数法把不可穿透写成“允许微小穿透,但穿透量乘以罚刚度产生接触压力”,即 p = kn·max(0, −gn)。拉格朗日乘子法则引入额外的乘子自由度,强制 gn = 0,接触压力作为乘子直接求解。前者不增加自由度、收敛较稳健,但存在穿透;后者穿透为零,但增加自由度、可能引起收敛困难。Abaqus 默认的“硬接触”在法向采用增广拉格朗日法,兼顾两者。
二、切向摩擦:从黏着到滑移
切向行为由摩擦模型描述。最常用的是库仑摩擦:当切向剪应力 τ 小于临界值 τcrit = μ·p 时,接触面处于黏着状态,无相对滑移;当 τ 达到 τcrit 时进入滑移状态,剪应力被限制在 μ·p。μ 为摩擦系数,p 为接触压力。Abaqus 默认使用罚函数摩擦,允许弹性滑移量,滑移刚度由“弹性滑移”参数控制;也可选择拉格朗日摩擦实现零弹性滑移。
摩擦系数可以随压力、滑移速度、温度变化。例如在金属成形中,常用 μ = 0.1~0.3;在橡胶密封中,μ 可能取 0.5 以上。若摩擦系数过大或接触压力突变,容易引起收敛振荡,此时可适当引入弹性滑移或改用增广拉格朗日摩擦。
三、接触离散化:点对面与面对面
Abaqus 提供两种离散方式。点对面(node-to-surface)把从面节点投影到主面,检查每个从节点的穿透,计算量小、适合小滑移;但主面网格较粗时压力分布会出现振荡。面对面(surface-to-surface)在从面与主面的积分点上同时检查接触,压力分布更平滑,适合大滑移和复杂几何,但计算成本更高。选择原则是:接触压力精度要求高、滑移大时优先面对面;接触区域小、滑移小时可用点对面。
四、罚函数与拉格朗日乘子法在 Abaqus 中的实现
在 Abaqus/Standard 中,接触属性通过 *SURFACE INTERACTION 与 *SURFACE BEHAVIOR 定义。法向默认是硬接触,其底层为增广拉格朗日法;若改为罚函数,可写 *SURFACE BEHAVIOR, PRESSURE-OVERCLOSURE=LINEAR 并指定罚刚度。切向通过 *FRICTION 定义,默认罚函数摩擦,可加 ELASTIC SLIP 参数控制滑移刚度。
*SURFACE INTERACTION, NAME=INT-1
*SURFACE BEHAVIOR, PRESSURE-OVERCLOSURE=HARD
*FRICTION
0.2,
*FRICTION, ELASTIC SLIP=1e-4
上面示例中,法向采用硬接触(增广拉格朗日),切向摩擦系数 μ = 0.2,弹性滑移量设为 1e-4。若希望零弹性滑移,可改用 *FRICTION, LAGRANGE。在 Abaqus/Explicit 中,法向默认也是罚函数,但通过 *CONTACT CONTROLS 可调整罚刚度缩放因子,切向同样支持罚函数与拉格朗日摩擦。
五、选择策略与收敛判断
选择算法时,先看法向:若穿透必须严格为零(如密封、过盈配合),用拉格朗日或增广拉格朗日;若接触状态频繁切换、收敛困难,用罚函数并适当降低罚刚度。再看切向:若滑移量小、需要精确黏着,用拉格朗日摩擦;若滑移大、接触压力高,用罚函数摩擦并设置合理弹性滑移。最后看离散化:大滑移、压力精度要求高时选面对面;小滑移、计算资源有限时选点对面。
收敛判断上,Abaqus 会在 .msg 文件中输出接触迭代信息。若出现“接触状态反复切换”或“穿透量过大”,通常说明罚刚度不足或接触定义有误;若出现“过约束”或“乘子不收敛”,则可能是拉格朗日乘子与其它约束冲突。此时可检查接触对的主从面选择、网格密度、以及是否有多余的边界条件。
.msg 中的接触迭代次数与穿透量;若收敛良好但穿透偏大,再逐步提高罚刚度或改用增广拉格朗日;若收敛困难,先降低罚刚度、增大弹性滑移,待收敛后再逐步收紧。
理解法向、切向、离散化与算法实现这四层关系,是后续复杂装配接触建模的基础。实际工程中,接触设置往往需要多次试算与参数调整,建议每次只改一个参数并记录 .msg 中的迭代行为,逐步建立对接触算法的直觉判断。