“建议采用UmfPack-Plain,内存不足时采用BandSPD-Plain”
约束处理方法ConstraintHandler的相关推送可见:
【OpenSees】浅析约束处理方法(二):Lagrange、Transformation
【OpenSEES】浅析Newton迭代(三):基于Krylov优化迭代算法
当方程组维度相同时,迭代算法SolutionAlgorithm与收敛准则ConvergenceTest决定解线性方程组Ax=b的次数。在静力问题中,A为结构刚度矩阵(因此可以通过printA命令获得结构刚度矩阵),b为结构不平衡力。
直接求解线性方程组(FullGeneral)的计算量与A矩阵的半带宽呈线性正比关系,与A矩阵的维度N呈二次正比关系。自由度编排方式DOF_Numberer决定矩阵半带宽,线性方程求解器Solver决定求解线性方程组的优化方法,因此每次解线性方程组的耗时由自由度编排方式DOF_Numberer及线性方程求解器Solver共同决定。
当采用带优化算法的Solver时,减小半带宽不一定会对求解速率带来有利影响。因此,本推送以大尺度的纯框架单元及纯壳单元模型为例,利用不同的Solver(UmfPack、BandSPD、SparseSYM、BandGneral、ProfileSPD)和Numberer(Plain、RCM)完成单次线性求解,将各组合的耗时进行对比,探究最优的Solver。点击“阅读原文”可查看与本推送相关的测试算例。
框架单元
通过“elasticBeamColumn”分别建立含10W个框架单元及40W个框架单元的弹性模型,利用不同的Solver(UmfPack、BandSPD、SparseSYM、BandGneral、ProfileSPD)和Numberer(Plain、RCM)完成线性求解,求解耗时如图1所示。可见,RCM自由度编排方式对求解耗时基本没有影响,Solver求解速率排序为:UmfPack > BandSPD > SparseSYM > BandGeneral > ProfileSPD。
选择较优的求解器组合“UmfPack-Plain”、”BandSPD-Plain”、”SparseSYM-Plain”,对比完成含10W、20W、30W、40W框架单元的弹性模型单次线性求解的耗时,如图2所示。可见,“UmfPack-Plain”恒为最优的求解器组合,“BandSPD-Plain”次之,随着构件数目的增多,两者的求解优势更显著。
但UmfPacK并不恒为最优的求解器,当构件数目较多时(框架单元数目超过50W),则会出现如图3所示的错误信息。通过查询源码可知,“numerical analysis returns -1″为内存不足。通过UmfPACK用户手册可知UmfPACK.lib分为32位及64位两个版本,可惜的是不管是32位还是64位的OpenSees,均加载32位的UmfPACK.lib,因此内存上限为2G。因此,当出现如图3所示错误时,建议使用BandSPD求解器。
图3 UmfPack内存上限
壳单元
由于壳单元与框架单元的矩阵特性不同,因此补充壳单元算例。通过“NLDKGQ”分别建立含1W及4W个壳单元的弹性模型,利用不同的Solver完成线性求解,求解耗时见图4。可知,RCM仅可优化SparseSYM的求解速率,Solver求解速率排序为:UmfPack > BandSPD = SparseSYM > BandGeneral > ProfileSPD。
选择较优的求解器组合“UmfPack-Plain”、”BandSPD-Plain”、”SparseSYM-RCM”,对比完成含0.5W、1W、2W、4W壳单元的弹性模型单次线性求解的耗时,如图5所示。可见,“UmfPack-Plain”恒为最优的求解器组合,“BandSPD-Plain”次之,随着构件数目的增多,“UmfPack-Plain”的求解优势更显著。
图5 壳单元数与求解耗时关系
当然“UmfPack-Plain”也不是万能的。如前所述,不管是32位还是64位的OpenSees均加载32位的UmfPACK.lib,因此内存上限为2G。当壳单元数量较多时,由于内存不足会引发“numerical analysis returns -1”的错误,此时建议使用BandSPD求解器。
精彩回顾:
【会议总结】OpenSEES Days Eurasia 2019 in PolyU
【PBSD】【OpenSees】在2019日本E-Defense盲测比赛的表现
-
PBSD
【PBSD】超限工程好助手:结构抗震性能设计软件PBSD功能简介
【PBSD】【OpenSEES】【YTO】智能化的结构弹塑性分析全套解决方案
【PBSD】V1.0.5.0版正式发布:免费地震动工具箱之教学视频
【PBSD】【PERFORM-3D】性能前馈集中塑性铰单元的定义、优势与测试
【PBSD】性能前馈集中塑性单元PFLPH与纤维单元力学性能对比
-
OpenSees
【OpenSEES】OpenSEES历史版本下载:v1.7.2-v3.1.0
【OpenSees】应力元纤维单元的Localization Issues
【OpenSees】新版Ibarra-Medina-Krawinkler(IMK)模型的前世今生
【OpenSEES】浅析迭代(二):基于LineSearch优化迭代算法
【OpenSEES】浅析迭代(三):基于Krylov优化迭代算法
【OpenSees】SecAggregator为DispBC赋予剪切刚度乃无用功
-
WSAP
-
编程与工具