结构接触仿真指南
结构接触仿真是一个高度非线性的问题,随着结构表面的接触与分离,载荷路径和应力状态会发生突变。COMSOL Multiphysics®软件中的计算求解器旨在处理足够平滑的解,因此求解此类模型本身就具有挑战性。为了高效地获得收敛解,大多数接触模型都需要对默认的模型设置进行一些适当地更改。
这篇文章包括了求解包含结构接触模型的指南,并详细介绍了实现收敛解所应遵循的流程。要充分理解这篇文章,您需要熟悉结构建模仿真以及软件中的形成联合体和形成装配等几何操作。如果您不熟悉这一主题,我们建议您查看支架-结构力学教程中包含的模型,并阅读文章(包含视频):形成联合体和形成装配的用法。
引言
解决这类问题的难点在于,接触边界上的位移场不连续。首先,让我们考虑一个正常的接触力学案例,即忽略摩擦或黏附等附加效应,并假定处于静止状态。
| Strong Form | Weak Form |
|---|---|
两个新的变量或关注量被添加到了控制方程,即,间隙函数和接触压力
(压缩状态为正值)。如下图所示,间隙函数被定义为源
和目标
边界之间的几何距离,通常沿目标空间法线(这不一定是最小距离)方向进行搜索。由于从物理规律而言,物质不可能相互穿透,因此间隙函数必定是非负数。

源和目标边界之间的接触搜索和映射示意图。
接触压力可解释为在接触边界产生的反作用力,用于确保间隙函数保持非负数(严格来说,只有忽略黏附力时才是如此)。这两个量为控制方程增加了不等式约束,从而使接触问题变成了一个受Karush-Kuhn-Tucker (KKT) 条件约束的优化问题,这些条件可转换为下列约束:
我们已经描述了间隙函数和接触压力的前两个约束条件。在第三个约束条件中,如果两个表面发生了接触,, 那么接触压力要么为零(完全相邻的表面或接合边界),要么为正(两个表面相互挤压)。同样,如果接触压力为正,则间隙函数必须为零。第四个约束条件称为持续性条件,规定如果间隙函数处于变化中,则接触压力必须为零。
为了求解上述接触问题,我们需要在源边界和目标边界之间进行接触搜索。这种搜索旨在检测接触边界上正在接触或可能接触的点,并映射这些点之间的物理量关系。接触搜索可分为两个步骤:广泛搜索和精细搜索。广泛搜索有三种策略:分层搜索、距离跟踪搜索和穷举搜索。精细搜索算法则采用射线追踪策略。
在 COMSOL Multiphysics®中,接触节点的接触方法菜单包括三个选项:罚函数(默认)、增广拉格朗日和Nitsche。除非明确说明,本指南中的所有建议对这三种方法均有效。有关这些方法的详细讨论,请参阅教程文档中的“接触分析理论”部分。
结构接触仿真的通用指南
章节导航,可跳转至:创建接触对、物理场、网格、研究设置或求解器设置
创建接触对
通常,如果模型包含彼此相邻且有配对边界的零件,则应使用形成装配节点完成模型几何的最终确定。默认情况下,模型将在几何节点下包含一个形成联合体节点,可通过在形成联合体/装配 菜单中选择形成装配选项进行更改。在同一菜单中选择创建对,然后选择接触对选项。这一操作将在对象的配对边界之间自动创建接触对,而任何不需要的接触对都可以在以后删除。
更多信息,请参阅文章:形成联合体和形成装配的用法。
对于最初不接触但在模拟过程中会接触的边界,需要在边界之间手动创建接触对。下图说明了何时需要手动在定义节点下创建接触对。请注意,并非所有内置的多物理场耦合都支持在多物理场模型中使用最终装配体,应根据具体情况逐个验证是否支持。

此表说明了什么情况下可以将接触对添加到模型中,以及是自动创建还是需要手动添加。
注:如果预计模型中的尖角和表面会发生接触,则应修改几何形状,用圆角边界(圆角)代替尖角。圆角半径可以非常小,而且需要对该表面进行相当精细的网格划分。
所有手动和自动创建的接触对都在以下节点定义:组件 > 定义 > 接触对。
在接触对节点中,在源边界菜单下选择刚度较大的零件边界。如果零件刚度相似,则应将凹面零件设为源,凸面零件设为目标。可使用交换源和目标按钮实现此操作。为提高效率,每个接触对中仅包含那些有可能接触的边界。
需要注意的是,出于性能方面的考虑,接触对功能的标准公式可以被看作是一种偏置(或不对称)公式,即接触力加在目标边界的一侧。然而,正如我们将在下文“网格”部分看到的,这种计算方法对两边的网格大小都有要求。请注意,也可以通过在接触对中对源边界和目标边界使用相同的选择来建立无偏置(或对称)计算。在模拟自接触或不确定哪个边界应为源边界或目标边界时,通常需要使用无偏置公式。
分层是搜索方法设置的默认选项,因为这种策略可以高效地处理复杂模型。除非您在映射时遇到问题,否则无需更改此设置。在这种情况下,您可以尝试距离跟踪选项,可能会给出更准确的结果。穷举法是最可靠的方法,但也是最耗费内存和计算时间的方法,只有在万不得已的情况下才建议使用。
如果预计接触边界之间的滑动很小(如,收缩装配中或两个零件用螺栓连接时),可以转到接触对 > 高级设置,将映射方法更改为初始构型。源边界和目标边界之间的映射将根据域的初始位置只计算一次,使收敛更快、更稳定。
注意:通常,只有在具有不同设置或在物理场中需要不同设置的情况下,才需要使用多个接触对节点。
Two Settings windows for the Pair feature showing different boundary selections.
左图:接触对
节点的设置,其中源边界和目标边界的选择列表不同,因此使用了偏置公式。右图:接触对
节点的设置,其中源边界和目标边界的选择列表相同,因此使用无偏置公式。
物理场
默认情况下,接触节点会添加到结构物理场接口(如固体力学接口),其中将包括 定义 节点中的所有接触对。但是,如果需要,可以在模型中添加其他具有不同设置的接触节点。固体力学 和多体动力学、壳、多层壳和膜接口都支持接触建模仿真。薄结构中的接触模型要求相应接触节点的接触面菜单下的选项正确无误,这些正确的选项(顶部或底部)取决于物理界面法线,而不是几何法线。除非物理法线相互指向,否则接触不会起作用。此外,还可以模拟不同物理接口之间的接触,如实体力学接口和壳接口之间的接触。
在接触功能中,选择罚函数,增广拉格朗日或Nitsche选项作为接触方法。罚函数方法的精确度相对较低,但更稳健,需要的求解器调整也更少,因此更适用于多物理场问题和瞬态模型。在建立黏附模型时,必须使用罚函数方法。增广拉格朗日法是最精确的方法,但计算成本较高,往往需要更多的微调才能收敛。Nitsche方法(固体力学和多体动力学接口支持)可视为罚方法的增强版,用于在罚方法缺乏足够准确性的问题上替代增广拉格朗日法。还需注意的是,罚函数方法的优点是不需要特殊的求解器,这使得设置多物理场问题和瞬态研究变得更加容易。
一般来说,现有方法可按稳健性分为如下几类:罚函数、Nitsche、分离式增广拉格朗日和全耦合增广拉格朗日。遗憾的是,稳健性与方法精度、计算成本以及模型收敛所需的工作量成反比。如果您不太关注精确的接触压力场分布,而对全局系统的结构刚度比较关注,使用罚函数或Nitsche方法就足够了。不过,在使用超弹性材料模型对自接触或大变形问题进行建模仿真时,通常推荐使用Nitsche方法。增广拉格朗日法通常用于需要精确接触压力分布的情况,或模拟包含较大的塑性变形时,如模具成型应用。
当遇到收敛问题时,可能需要手动调整罚因子,但通常只在遵循本指南中的所有其他建议后才可进行。在微调该因子之前,理解其含义非常重要:罚因子表示接触面之间的弹簧刚度。数值越大,非物理穿透越小,但刚度矩阵的数值条件会变差,降低方法的稳健性。罚因子过小会导致不符合接触条件。
增广拉格朗日方法的收敛行为受罚因子的影响,但求解的精度不受影响,且分离法和耦合法所受的影响不同。使用分离法时,罚因子控制迭代过程中界面表面的“硬度”,但不直接影响收敛结果。接触压力罚因子菜单包括三个与预设罚因子控制选项相关的调整选项,分别是稳定性(默认)、速度和弯曲。如果接触部件在模拟开始时处于接触状态,则首选设置为速度。采用全耦合方法时,罚因子会影响方程结构,解对其值不太敏感。不过,调整罚因子可以增强收敛特性。
在采用 Nitsche 方法时,罚因子是一个稳定参数,在不严重影响精度的情况下影响稳健性。最佳值取决于计算公式,斜对称和不完整(默认)比对称更稳健。
The Model Builder with the Contact node highlighted and three Settings windows for the Contact feature with different settings in each.
接触节点的设置
窗口,显示接触方法设置为罚函数方法、
以分离式
为求解方法的增广拉格朗日方法
和Nitsche
方法。
如果一个零件的刚度明显高于其他零件,其挠度相对可以忽略不计,通常可以将其视为刚性部件。这是一个简化假设,会使问题更容易求解。要应用这一假设,请在刚性域中添加指定位移边界条件,选择指定选项并输入 0 作为假定刚性方向上的位移值。刚性域的所有平面边界都可以采用非常粗的网格,但是,所有弯面的接触边界仍需采用精细网格。刚性部分应该是接触对节点中的源。可变形域边界上的网格需要足够精细,以提供良好的接触压力和应力状态分辨率。或者,也可以为该域分配刚性材料特征,或将其从物理场选择中移除。需要注意的是,在后一种情况下,接触边界也需要网格,即使它不是任何物理场的一部分。
最好对模型中所有会发生接触的域都设置为指定位移约束,这将比那些包含外加载荷、力和接触条件但无约束的域更容易求解。如果有可能重新表述问题,以便对所有域都有初始约束,那就应该这样做。
如果必须对一个初始不受约束的域进行建模仿真,有两种选择:
- 为这些无约束的可变形域(或这些域的边界)添加弹簧基础特征。弹簧常数的大小最初可以设置为一个非常高的值,高到足以使最初施加的载荷导致的变形可以忽略不计。当弹簧常数降为零时,由于接触和外加载荷的作用,域将逐渐松弛到变形状态。
- 添加稳定性子节点可抑制与此类无约束零件相关的刚体运动。该功能可视为弹簧基础功能的自动化版本,有三种稳定技术可供选择:相邻域、接触边界和接触对。这些稳定技术的工作原理是将这些几何实体的弹簧连接到地面。如果从列表中选择接触对,则会在父级接触节点的接触对的源和目标之间添加弹簧。
如果求解的是稳态模型,则需要在求解过程中对所有弹簧基础的指定位移、载荷和刚度进行斜坡处理。引入一个新的全局参数(命名为斜坡系数等),并将所有载荷、位移和刚度乘以该系数,其斜率可以在研究设置中定义(见下文)。例如,用于无约束域弹簧基础的弹簧常数的斜率应从弹簧刚度的峰值开始,然后下降到零。在这种情况下,建议采用非线性降低弹簧刚度的方法。使用范围从 0 到 1 的线性参数斜坡系数,可以在 Z 方向引入弹簧常数 kz 的弹簧基础,其中kz = k0*(1-RampFactor)*2^(-RampFactor*10),在其他需要限制的方向也是如此。应选择弹簧刚度的峰值 k0,使全部外加载荷引起的位移大约等于接触边界的单元大小。
当弹簧基础和外加载荷处于同一模型中时,外加载荷应线性上升,同时弹簧基础的弹簧常数也应使用上述表达式非线性下降(如下图所示)。

弹簧基础刚度函数:稳定刚度以非线性方式下降,当斜坡系数等于 1 时,稳定刚度为零。
如果求解的是随时间变化的(瞬态)模型,请确保所有指定的位移、载荷和任何弹簧基础的刚度都随时间变化,并在物理上合理的时间跨度内逐渐增大。有关这方面的更多信息,请参阅学习中心的文章:模拟阶跃过渡.
如果您正在求解瞬态模型,但不想考虑惯性效应(如,不想建立结构振动模型),请转到固体力学接口,在结构瞬态特性设置中选择准静态,这样求解速度会更快。请注意,对于动态接触问题,可以使用罚函数方法和增广拉格朗日法专用的接触罚因子。这些计算公式在约束间隙率为零(即持续性条件)的控制方程中添加了黏性罚因子,并且必须提供接触的特性时间。根据经验,该时间应与接触事件持续时间相当,但最佳选择必须根据具体情况而定。
网格
对接触边界进行足够精细的网格划分非常重要,且往往需要使用手动网格划分。接触边界的网格划分应足够精细,以提供接触区域的良好分辨率。接触对的目标边界必须比源边界的网格划分得更精细,至少要细化两倍。曲面需要比平面进行更精细的网格划分。这是因为默认算法是不对称的:目标面上的点连接到源面,反之则没有。如果目标面的网格较粗,源面的大部分单元(甚至整个单元)可能与目标面没有连接。如果不遵守这些规则,可能会导致接触压力出现非物理振荡。
如果源边界是刚性的,则对目标边界的网格大小没有要求。但是,源边界的网格应足够精细,以解析几何的曲率。如果是对称计算(源边界和目标边界的选择相同),建议沿接触边界采用统一的网格单元大小。
研究设置
在求解稳态研究时,您需要在无约束域上增加指定位移、载荷或弹簧基础。首先引入一个全局参数,用于乘以所有位移、载荷和刚度,如斜坡系数。通过稳态研究步骤设置中的辅助扫描选项对该参数进行斜率调整。
外加载荷和位移的斜坡应从一个非常接近零的值开始,在该值时的接触可以忽略不计,甚至没有接触,然后线性上升到最大值。例如,下图显示斜坡系数从 0.001 开始,然后以 0.1 为增量从 0.1 增加到 1。默认情况下,将使用连续方法,使用前一步求解的解作为下一步的初始条件,从而有助于收敛。更多信息请参阅学习中心文章:改善非线性稳态模型的收敛性。增量的数量可能需要相当大,你需要监测求解器的收敛性。当收敛缓慢时,可以使用更多的增量。
The Model Builder with the Stationary study step highlighted and the corresponding Settings window with the Auxiliary sweep checkbox selected.
在研究扩展
栏对辅助扫描
选项进行设置。
求解器设置
尽可能使用默认建议的直接求解器,而不是迭代求解器。后者需要的内存较少,但收敛速度通常要慢得多。
对于对斜坡参数进行辅助扫描的稳态模型,默认情况下使用连续法。在参数节点的设置窗口中,为预测器设置选择常数选项将使收敛更稳健,但速度更慢。该设置如下图所示。
当使用增广拉格朗日公式并选择分离式作为求解方法时,默认求解器配置使用分离方法,其中接触压力(以及摩擦力,如果包括摩擦力)在单独的集合或分离步骤中求解。不推荐修改这一项。如果必须修改求解器顺序,则应在位移求解之后保留并求解单独的分离组。
使用增广拉格朗日公式时,有必要手动缩放接触问题中的变量。如果在求解之前无法估计接触压力,则可能需要分两次进行分析,首先使用罚公式计算接触压力的估计值。检查收敛性时会使用接触压力的缩放值,因此如果使用过高的值,结果有可能不正确。默认缩放值设置为典型的金属与金属接触。有关因变量缩放的更多信息,请参阅以下学习中心文章:手动设置变量缩放。
The Model Builder with the Field node for Contact Pressure highlighted and the corresponding Settings window.
使用增广拉格朗日法时,接触压力缩放的设置
窗口。
摩擦接触仿真
建立摩擦模型通常会大大增加计算时间,因此如果可以合理地忽略摩擦,请忽略之。摩擦通常只会造成轻微的局部影响,而且摩擦系数很难精确获得,因此这种简化实际上是合理的。但是,如果接触边界上有很大的剪应力,或者摩擦耗散很重要,则必须包含摩擦。
如果您的接触仿真涉及摩擦,请先在没有摩擦的情况下设置并求解问题。找到合适的求解器设置后,再添加摩擦并重新求解。由于摩擦力的发展与其历程相关,涉及摩擦力的接触问题应始终使用参数求解器或瞬态求解器进行增量求解。
注:摩擦力有时可添加到初始无约束的装配中,因为切向力有助于保持稳定,避免刚体运动。
多物理场接触仿真
在一些接触问题中,存在某种物理量从一个固体域通过接触传递到另一个固体域的通量(或传递),典型的例子有热通量、电流或湿度传递。要研究这类多物理场问题,需要知道在发生或不发生接触的边界会产生什么情况。默认情况下,除非在热量传递或电磁物理场接口中包含了接触节点(如对,电接触或热接触接口),否则只要发生接触,就会假定场和通量是连续的,这些接触节点会捕获到由于接触区的尖角和间隙流体造成的这些量的传递“阻力”。但需要注意的是,并非所有物理场接口都有这些接触节点,应根据具体情况进行检查。对于非接触表面,回退边界条件将应用于当前包含在接触节点边界选择列表中的边界的所有部分。在显示更多选项对话框中启用高级物理场选项后,可以覆盖默认的适用对区域选项。下图是启用该选项后的一个示例,使用的是热通量特征。
当某个场存在于结构物理场接口控制的域之间的间隙中时,需要采取额外的措施才能成功运行仿真,常见应用包括流-固耦合(FSI)、机电力耦合或磁力学多物理场耦合。如果建立了接触,源边界和目标边界之间原始间隙中的网格就会塌陷。必须避免这种情况,因为用于非固体场域变形的任意拉格朗日-欧拉(ALE)公式要求网格的连通性在网格变形过程中保持不变,也就是说不允许几何形状发生拓扑变化。解决这一问题的一种方法是调整接触设置,为源边界、目标边界或二者都添加偏移量(请参阅下图的设置窗口),这样可以在不完全封闭间隙的情况下传递接触力,但会有极少量的通量通过间隙。
The Model Builder with the Contact node highlighted and the corresponding Settings window.接触面偏移和调整
栏的设置示例。
接触仿真检查清单与扩展资源
在建立接触模型时,应考虑以下问题:
- 尖角之间有接触吗?如果有,请添加圆角。
- 源边界和目标边界选择列表是否遵循了基于接触零件刚度和曲率的建议?
- 使用辅助步骤还是使用瞬态函数来调整位移/载荷边界条件?
- 在模拟具有载荷驱动边界条件的准静态或稳态问题时,是否添加了稳定性措施?
- 与源端相比,目标端的网格是否至少精细两倍?
- 对两个接触边界之间的间隙存在场的多物理场问题仿真时,是否加入了偏移量?
要了解有关接触建模的更多信息,请查阅文档中的Structural Mechanics Module User's Guide并导航至 “Structural Mechanics Modeling > Contact Modeling”。
请提交与此页面相关的反馈,或点击此处联系技术支持。



