一般情况下,多线程运行Abaqus/Explicit时,线程数并不会影响计算结果。
然而,有时运行同一个inp文件,当域级并行的拓扑域数目设置的不一样时,我们发现,会存在计算结果不一致的问题,这是如何发生的呢?
先来看一下拓扑域的设置,显式计算时,并行设置有Domain和Loop两种方式,Domain即拓扑域,适用于大多数显式计算,创建任务时,可以把它设置为线程数的整数倍,后处理时,也可以通过Color Code显示这些拓扑区域。
域级并行设置和后处理显示
Abaqus将划分好的拓扑域均匀地分配给每个线程,所有域内单独进行计算,每一个时间增量内,有共同边界的域之间会进行通信,合并数据。
设置了8个拓扑域的金属点阵冲击模型
Domain如何影响计算结果?
在分析过程中,不同的分解形式会造成数值浮点运算次序的改变,由此产生不同的截断误差,也就会导致不同的计算结果。
通过一个示例可以展示这个过程,如下图所示,现在我们要计算单元力引起的节点加速度。
1个拓扑域运行(左)- 2个拓扑域运行(右)
作为参考值的节点加速度:
a=F1+F2+F3+F4= -0.06
节点加速度:
a=((F1 + F2) + F3) + F4
数值标准化后:
a=((.016E2 + .101E2) -.015E2) - .102E2= 0
节点加速度:
a=(F1 + F3) + (F2 + F4)
数值标准化后:
a=(.157E1 - .153E1) + (.101E2 - .102E2)=.004E1 - .001E2
再一次标准化数值运算:
a=.004E1 - .010E1 = -0.006E1= -0.06
使用2个拓扑域运行时的结果与参考值相等,因为在两个较小的数值并入较大的数值之前,恰好把它们相加了。
在很多分析中,这种截断误差引起的微小差异不足以影响整体响应,但是在一些高度非线性的模型如完美结构(未受扰动的几何,Unperturbed Geometry)的后屈曲显式分析中,可能导致显著的计算差别。
比如方管压溃变形的后屈曲显式计算问题。
方管压溃变形
直接进行完美结构的后屈曲分析会发现,使用不同的拓扑域计算,将导致结果出现显著的差异,根据Abaqus帮助文档,不改变模型的情况下,执行双精度运行,可以一定程度上减少这种误差,但是随着时间积分的向后推进,误差仍会比较显著;而引入几何缺陷,可以最大限度的避免这类问题中由于拓扑域不同而导致的截断误差。
方管完美结构压溃反力
在屈曲分析之前,先进行特征值屈曲分析,提取前10阶屈曲模态。
前10阶屈曲模态
再通过屈曲模态引入几何缺陷,执行显式后屈曲分析,不同拓扑域下,计算结果基本一致,没有显著误差。
*IMPERFECTION, FILE=tube_buckle, STEP=1 1, 2.0E-5 2, 0.8E-5 3, 0.4E-5 4, 0.18E-5 5, 0.16E-5 6, 0.10E-5 7, 0.10E-5 8, 0.08E-5 9, 0.02E-5 10, 0.02E-5
方管几何缺陷结构压溃反力
以上表明,处理完美结构后屈曲显式分析或一些其它的高度非线性显式分析模型时,要特别注意Domian造成的截断误差,而“光滑的”非线性问题,比如金属辊压成型,则对这种截断误差不敏感,无需担心。
金属辊压成型
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删