论文部分内容阅读
非连续变形分析法(Discontinuous Deformation Analysis,简称DDA)是一种新发展起来的离散单元数值分析方法,它以严整的数学格式和较高的求解精度而成为离散单元法方面的研究热点。然而,DDA在涉及大量块体不断变化的接触问题时,其接触处理和计算过程都是相当耗时的。并且,传统的基于单处理器、单指令的数值分析算法在计算效率和规模上都遇到了瓶颈,因此,并行方法为提高数值计算效率提供了一个有效的途径。 球单元DDA(Spherical Element DDA,简称SDDA)是在传统多面体单元DDA的基础上将块体单元简化为球体单元。它采用简单的“点-点”接触模型(如“球-球”接触和“球-面”接触)来进行接触判断。但是球单元DDA在模拟规模较大的数值模型时仍然耗时,其中影响程序运行效率的重要因素,一是判断接触的开-合迭代过程,二是求解系统大规模方程组。 开-合迭代是DDA单元接触判断的核心环节,它要保证接触检验的两个条件:(1)张开接触中无嵌入;(2)有法向弹簧的接触中无拉力。在所有接触中必须满足这两个条件,如果在每五次开-合迭代后仍不满足这两个条件,时间步长将缩短三分之二,然后再进行开-合迭代计算。而在开-合迭代过程中,需要反复求解方程组和更新求解数据来进行单元接触判断。因此,简化单元接触过程,并行化方程组求解方法对提高SDDA算法的运行效率显得尤为重要。 此外,由于SDDA求解器采用Cholesky分解法和超松弛(SOR)迭代法,此两种求解方法均不容易实现并行计算。因此,本文将方程组求解算法改为共轭梯度(CG)迭代法,并采用MPI(Message Passing Interface)和OpenMP(OpenMultiProcessing)并行编程模型,将矩阵以行分解的方式,实现共轭梯度迭代算法的并行化。论文的主要研究工作和成果概况如下: 1.提出了“球-棱”接触模型,使得SDDA可以处理更复杂的边界接触问题。SDDA采用“球-球”和“球-无限大面”接触模型。但是,在实际工程模拟中处理球与固定面边界问题时,还有“球-棱”接触类型。SDDA算法中的这一缺陷会导致模拟结果的不正确。为了弥补这一缺陷,本文提出“球-棱”接触模型,该模型能够处理更复杂的球与固定面边界接触问题,例如球与三维凸角的接触。 2.采用最大位移增量代替开-合迭代作为单元接触判断准则,修正了SDDA的接触计算格式。传统的开-合迭代接触判断准则需满足张开接触中无嵌入和法向弹簧的接触中无拉力,这就使得接触判断过程冗长复杂。用最大位移增量作为接触判断准则,控制球单元在每一个时间步中的位移增量,允许接触单元之间有一定的嵌入量。数值算例分析结果表明,采用最大位移增量控制单元接触的算法,其计算效率比采用开-合迭代的效率高,该方法可以简化接触判断过程,减少方程组的求解次数,且不失准确性。 3.建立了SDDA大规模方程组的共轭梯度迭代法求解格式。方程组求解采用Cholesky分解法和超松弛迭代法,此二法均不容易实现并行计算。共轭梯度法是解大型非线性或线性方程组最优化最有效的算法之一,其优点是所需存储量小,稳定性高,适合并行计算。数值计算结果表明采用共轭梯度法的球单元DDA算法的计算效率也有所提高。 4.建立了并行化SDDA计算模型。基于MPI和OpenMP的并行编程模型,主要将共轭梯度迭代法求解方程组以及方程组数据组装过程并行化。分别实现了MPI、OpenMP和混合MPI+OpenMP的SDDA并行计算模型。并行程序在曙光TC4600 Linux系统平台下编译开发。通过一系列数值算例表明改进后的并行算法使得SDDA算法获得了良好的加速比。其中,混合MPI+OpenMP的并行方式可以更有效地提高算法的计算效率。