首页/文章/ 详情

有限元基础知识:通用接触 General Contact

4月前浏览500

Abaqus 2017版本之后推出了general contact功能(如果我没记错的话),这个功能对于用户非常好用,对于FEM程序的开发者,就非常的痛苦,因为有超级多的细节需要在这个功能里进行考虑,今天简单说说

General contact 基础功能

  • 核心机制:通用接触通过自动全包接触面(所有外部单元面、解析刚性表面等)实现复杂装配体的接触检测,支持节点-面、边-边、自接触等多种接触类型,无需手动定义主从面。

这个听起来多么美好的故事,但是上面每一点其实都不太好做,当然用户最后肯定会开心。如下图所示,是General contact对于两个简单的实体可能出现的情况


从左到右依次是:

  1. 一个面和一个面
  2. 一条边和一个面
  3. 一条边和一条边
  4. 一个点和一条面

更为复杂的是,如果构件比较”软“,单一构件内部还可能会发生自接触(self-contact),如下图所示:

而且这个发生自接触的构件同时还可能与别的其他构件发生接触。

然后还有一个麻烦那就是壳,壳本身有正面和反面,复杂一点的话要考虑Edge,还要考虑壳的厚度,而且壳的刚度和实体单元的刚度会很不一样。

最近这几个版本,Abaqus还更新了梁与梁、基于Edge-to-Surface,Edge-to-Edge的算法,对于用户来说易用性进一步增强,对于FEM开发者来说算法复杂度进一步提升

关键的一些默认配置

一般来说Abaqus中General Contact默认采用Surface-to-Surface算法,并辅以Edge-to-Surface算法处理单元边与单元面的接触问题,并默认采用penalty算法施加接触约束, 且会自动补偿初始穿透,也就是说你的网格有点初始穿透也没问题。(这些算法未来会在接触系列详述)

笔者废了好大的劲写出来的程序也并不能像Abaqus那样稳定的除了很多复杂的场景,做出来的General Contact只有在一些没那么复杂的情况下,效率和收敛性才会比较好,还需努力啊!!


来源:大狗子说数值模拟
ACTAbaqus通用装配
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-06-20
最近编辑:4月前
大狗子说数值模拟
博士 传播国际一流的数值模拟算法
获赞 11粉丝 25文章 81课程 0
点赞
收藏
作者推荐

有限元基础知识:关于接触的事

接触分析在众多有限元分析中是一个比较特殊的领域,大部分有限元算法(教科书上那些)研究连续体内部的应力应变、整体变形等。而接触分析则是研究两个或多个物体(自接触另说)之间的作用关系。另外呢大部分有限元的书,商业软件的理论文档都对接触这里描述的不多。我呢有幸在计算接触力学领域耕耘多年,打算今天先做一个引子,引出未来一步步给大家说的接触分析相关内容。接触搜索接触首先的第一步是要分析两个物体哪里发生接触,这个在显式分析和隐式分析中会有些不同,集中体现在:显式中,已经穿透的就是发生接触的区域隐式中,可能在这步中发生穿透的要检测出来,用于之后的计算但是两者都离不开一个核心诉求,那就是接触搜索(找到发生接触或者潜在发生接触的区域),这个过程呢与其说是个有限元的过程,其实更接近于图形学也就是CG的那些知识。最简单但却不可用的方法,就是穷举,将主面m个单元和从面n个单元所有单元都建立一个接触单元用于后续分析,那么算下来程序内部就会有个接触单元对,耗时耗力,根本不可行。所以为了解决这样的问题,我们就要引出一些技术以快速的进行接触搜索,常见的有:bucketsortingBVH(boundaryvolumehierarchy):通常就是指大家常说的八叉树、k-dtree、binarytree等Postioncode:给每个单元附上一个code,然后通过code去查询单元附近的单元,只在这个范围内搜索总之呢要么就是对空间进行划分,要么就是对单元去进行排序,然后一个原则就是,两个接触面中个接触单元对中大部分真实情况下是绝对不可能接触的,接触检测的时候也没必要去搜索他们,提高效率与降低存储空间。接触有限元计算当搜索完了可能的接触对之后,我们进行局部的一些投影、分割等,进行真正的接触有限元计算部分,也就是说形成一些刚度矩阵、载荷向量,这个过程中,我们主要会有两类方法的区别:点对面面对面这里的两种方法指的是接触的离散方法,并不是说点对面只能用于点和面的接触,其实在用户层面都可以选择两个面进行接触。之前写过这个的文章,可以看:结构仿真小知识:点对面及面对面当选定了这两种方法中的任何一种后,我们都会面临一个问题,那就是如何施加如下的接触约束:由于接触问题之于有限元麻烦的就在于,传统有限元本质上是一个优化问题(求能量最小),而接触分析则是一个约束优化问题(在接触约束的情况下,求能量最小),那么我们就要引入一些方法来实现上述的接触约束,总体上有:罚函数法(penalty)拉格朗日乘子法(LM)增广拉格朗日乘子法(AugmentedLM)内点法以及其他约束优化的方法其实都可以用事情还没结束OK,至此如果你正确、且高效的完成了接触搜索、使用某种离散方式构建了接触的关系,通过某种约束方法写出了其刚度矩阵和载荷向量的贡献,那么理论上你是可以求解一个接触问题的。然而事实往往事与愿违(大部分论文绝对不会说这部分,只有鲜花),我们往往会遇到算法稍微算个复杂点的问题就不收敛、算出来的应力、接触力、支座反力上蹿下跳一点不平稳、过盈配合根本算不了等等问题。当然这些问题都有答案,但涉及很多细节的打磨,比如:针对点对面算法,应力、接触力上窜下跳就可以换面对面算法,还是一股脑的选择点对面呢,就可以用光顺化(Smoothing)技术以去除由于有限元离散造成一些影响,甚至可以采用基于IGA,NURBS的边界描述进行接触分析针对有些高阶单元,并不适合用在接触分析中,提出适合接触分析的高阶单元算法面对面Mortar法实现起来比较麻烦,很多人又提出了各种变形,而对mortar法中各种离散格式也有各种变形为了提高收敛性对penalty系数的自动选择、对分析步步长进行更为细节的自动控制引入多种摩擦本构模型,来更容易更准确的模拟真实情况对于自接触分析增加诸多判断、更快更正确的进行几何搜索对过盈配合施加渐进式过盈配合与自定义曲线等......总的来说接触分析是一个资料特别少、算法基础要求挺高、且条条大路可能都通罗马,但是要在路上自己对付各条路上的盗贼的领域,没有哪条道路一路顺风,我希望在未来给大家详细展开说一说这方面的内容,不求最学术最理论、但求在计算接触力学这个领域最直接、最真实可用。来源:大狗子说数值模拟

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈