contents
非线性分析的收敛性
非线性结构分析的求解的收敛性是极具挑战性的,在密封仿真的过程中我深有体会,到底问题出在了哪里?网格?求解器设置?接触设置?乃至命令流的问题?要想明白问题出在哪里,能够分析求解器的输出信息是至关重要的。
这里要感谢安世亚太。
求解器输出信息
求解信息中最常用的是详细的求解输出(solve output)和力收敛曲线(force convergence)
求解器输出 Solver Output
在文本信息中依次是
- 使用许可和版本号
- 求解文件的储存位置,求解器单位
- 接下来每行的开头都是****…,这一部分记录了单元数据。这个列表中不仅列出了模型中有多少部件,也列出了接触区域编号。
- 在Mechanical中,接触区域的名称可以自定义,但是求解器会给每一个接触区域一个单独的编号。为了排除错误,确定每一个接触区域的编号是很有用的。如图所示,接触区域“Teeth 3”的接触编号是9和10。
- 在Mechanical中,接触区域的名称可以自定义,但是求解器会给每一个接触区域一个单独的编号。为了排除错误,确定每一个接触区域的编号是很有用的。如图所示,接触区域“Teeth 3”的接触编号是9和10。
- 接触单元的详细信息,包括接触选项,接触法向刚度,接触球半径等。
- 要注意在这部分内容中出现的警告和错误,如初始干涉和间隙等
- 要注意在这部分内容中出现的警告和错误,如初始干涉和间隙等
- 随着非线性求解的进行,在最下方显示平衡迭代信息。
- 在下例中,经过三次平衡迭代,残余力小于准则值,求解收敛。
- 在输出信息中,提示信息(例如收敛或者二分)用“>>>”和“<<<”表示
- 在输出中显示警告和错误信息warning and error
- 当接触状态发生突然变化,会有警告信息,提示大量接触单元进入或者退出“接触球区域”。当载荷太大时,这是由于部件的滑移或分离引起的。如果需要,Mechanical会自动进行二分。
- 一般情况下,单元畸变信息更加严重,多数由于载荷太大或者过约束引起。自动进行二分,但是多数情况下需要使用矫正措施,调整模型。
- 求解统计信息
- 查看前处理或方程求解过程在求解时间中的占比。
- 分析耗时
- 对于单核处理器,如果耗时比CPU时间大很多(例如大两倍以上),意味着由于磁盘的速度较慢,所以计算耗时较长。
- 如果使用双核处理器,CPU时间准确性不高,它代表两个处理器使用的总时间。
求解监测
在求解过程中,可采用观察力收敛曲线来监测收敛状况,如果不平衡力(残余力)小于阈值,则子步收敛,否则将发生二分,意味着需要施加更小的载荷增量。
- 力平衡曲线开始趋于“稳定”,代表需要更小的载荷增量或法向接触刚度太大
使用‘求解信息’进行结果追踪
用户可以使用结果追踪Results Tracker监测某一点的变形或接触区域的信息。
- 使用“结果追踪>变形”,选择节点和要监测的变形方向。
- 使用“结果追踪>接触”,在下拉菜单中选择接区域。会显示被追踪的量(例如接触单元的数量)。
牛顿残差
当遇到不收敛的问题,牛顿残差有助于我们确定产生问题的位置。
- 如果不平衡力大于阈值,导致结果不收敛,通过牛顿残差可以显示那些区域的残余力比较大,帮助我们进一步分析原因。一般是由于网格、接触设置等原因。
- 在“求解信息”的属性栏中,输入平衡迭代的次数 n,查看之前n次平衡迭代的牛顿残差。例如,如果输入“4”,查看最后四次不平衡迭代的牛顿残差。
- 本例中,残余力比较大的环形区域位于一个接触区域,用户可以直接检查该接触的设置。
常见的不收敛问题
刚体运动
- 约束不足,由于约束或者接触区域设置有问题,导致部件“飞出”。
- 求解器输出中给出了刚体位移的方向。
- 发生刚体位移的部件?
- 可通过自由振动分析,查看频率为零的模态。(耗时较长)
- 查看接触对,检查初始状态为开放
法向接触刚度太大
求解螺纹连接,第一个子步的载荷为总载荷的20%,但是在第一个子步之后发散。
查看牛顿残差,降低法向接触刚度,细化接触区域网格。
强迫的非线性,求解无法收敛
The error message “solver engine was unable to converge on a solution for the nonlinear problem as constrained”
- 查看结果追踪和求解器输出,可以确定不收敛原因
- 是否有其他接触区域应该在分析开始就建立接触关系?载荷是否正确施加?是否忽略了约束?
求解技巧
- 查看力收敛曲线,监测求解过程。
- 查看求解器输出中的接触信息(分析开始时,接触是否建立?是否存在初始间隙或过盈,及其大小?),并且查看求解过程中的警告和错误信息。
- 使用结果追踪监测接触信息或者节点变形,确保模型的响应与预测一致。
- 如果发生不收敛,查看牛顿残差,确定残差较高的问题区域。检查问题区域是否施加了载荷或者边界条件,问题区域是否存在接触?反复检查模型设置。
tip1:如果存在塑性并且发生单元畸变,首先尝试去掉塑性,进行计算,确定是否是材料属性引起的问题。
tip2:如果是接触引起的问题,并且残余力很大,将接触设置为纯罚函数法,并减小法向接触刚度(0.01到0.1)。然后尝试求解,有可能发生过度的渗透,但是只要得到结果,用户可以判断部件在接触区域的相互作用。
- 如果接触中设置了法向拉格朗日法,检查颤振状态。(追踪—接触颤振)
- 如果颤振很大,用户可以使用增广拉格朗日法或者添加命令(FTOLN)调整法向拉格朗日法的颤振控制。
总结
- 通常情况下,最好的办法是从简单的模型开始,随着仿真的进行,不断增加复杂性,这样比较容易判断哪里出了问题。第一次分析就添加太多的复杂性会导致时间的浪费。
- 不要随意的修改设置,首先使用推荐的设置,然后在有确切原因的情况下修改接触或者求解器设置,可以根据求解器输出、结果追踪或者牛顿残差寻找修改原因。
- 尽管接触区域自动创建,也要检查接触面、目标面以及接触设置是否正确。在求解器输出中查看关于接触的详细内容,验证接触区域的初始接触状态、间隙量和过盈量。
再次感谢安世亚太