复杂形态钢结构设计培训班

首页 结构乌托邦-公众号 【OpenSees】浅析矩阵求解器(一):谁最高效?

【OpenSees】浅析矩阵求解器(一):谁最高效?

“建议采用UmfPack-Plain,内存不足时采用BandSPD-Plain

OpenSees分析模块有约束处理方法ConstraintHandler、自由度编排方式DOF_Numberer、迭代算法SolutionAlgorithm、线性方程求解器Solver、收敛准则ConvergenceTest五部分组成。

约束处理方法ConstraintHandler的相关推送可见:

【OpenSees】浅析约束处理方法(一):Plain、Penalty

【OpenSees】浅析约束处理方法(二):Lagrange、Transformation

迭代算法SolutionAlgorithm的相关推送可见:
【OpenSEES】浅析Newton迭代(一):减少刚度重构工作量与减少迭代次数谁更有意义?
【OpenSEES】浅析Newton迭代(二):基于LineSearch优化迭代算法

【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

图1 框架单元求解耗时对比

选择较优的求解器组合“UmfPack-Plain”、”BandSPD-Plain”、”SparseSYM-Plain”,对比完成含10W、20W、30W、40W框架单元的弹性模型单次线性求解的耗时,如图2所示。可见,“UmfPack-Plain”恒为最优的求解器组合“BandSPD-Plain”次之,随着构件数目的增多,两者的求解优势更显著。

图2 框架单元数与求解耗时关系

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

图4 壳单元求解耗时对比

选择较优的求解器组合“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求解器。

结论:建议采用“UmfPack-Plain进行求解,当内存不足时采用“BandSPD-Plain
点击“阅读原文”可查看与本推送相关的测试算例。

精彩回顾:

【会议总结】OpenSEES Days Eurasia 2019 in PolyU

【PBSD】【OpenSEES】2020年精选推送集锦

【PBSD】【OpenSees】在2019日本E-Defense盲测比赛的表现

  • PBSD

【PBSD】超限工程好助手:结构抗震性能设计软件PBSD功能简介

【PBSD】功能介绍及应用教学回顾[含视频]

【PBSD】构件变形指标VS材料应变指标:从评估敏感性出发

【PBSD】【PERFORM-3D】YTP导模工具使用手册

【PBSD】【OpenSEES】【YTO】智能化的结构弹塑性分析全套解决方案

【PBSD】V1.0.5.0版正式发布:免费地震动工具箱之教学视频

【PBSD】地震动工具箱:多频段选波方法详解

【PBSD】一键弹塑性报告功能演示

【PBSD】【PERFORM-3D】性能前馈集中塑性铰单元的定义、优势与测试

【PBSD】性能前馈集中塑性单元PFLPH与纤维单元力学性能对比

【PBSD】【PERFORM-3D】弹塑性模型刚度调整

【PBSD】人工波生成功能测试 [开源]

【PBSD】弹性时程分析的实现与功能测试

【广东省性能设计规程】与国家高规对比浅谈反应谱的修正与完善

【广东省性能设计规程】性能设计基本方法与PBSD的实现
  • OpenSees

【OpenSEES】OpenSEES历史版本下载:v1.7.2-v3.1.0

【OpenSees】浅析两类纤维单元:位移元与应力元

【OpenSEES】24类纤维截面剖分TCL函数

【OpenSees】浅析纤维单元的数值积分方法

【OpenSees】浅析分布塑性铰单元的数值积分方法

【OpenSees】应力元纤维单元的Localization Issues

【OpenSees】宏观梁柱单元的强度软化模拟

【OpenSEES】浅析纤维单元(一)

【OpenSEES】浅析纤维单元(二)

【OpenSEES】浅析纤维单元(三)

【OpenSees】新版Ibarra-Medina-Krawinkler(IMK)模型的前世今生

【OpenSees】浅析剪力墙宏观单元:MVLEM

【OpenSees】浅析剪力墙宏观单元:SFI-MVLEM

【OpenSees】浅析剪力墙宏观单元:分层壳单元

【OpenSees】浅析约束处理方法(一)

【OpenSees】浅析约束处理方法(二)

【OpenSEES】浅析迭代(一)

【OpenSEES】浅析迭代(二):基于LineSearch优化迭代算法

【OpenSEES】浅析迭代(三):基于Krylov优化迭代算法

【OpenSees】SecAggregator为DispBC赋予剪切刚度乃无用功

【OpenSEES】PM截面分析实例

【OpenSees】如何利用应变控制截面分析的进程

【OpenSEES】低周往复加载实例:荷载位移双控

【OpenSees】SDOF非线性动力时程分析的实现与算例

  • WSAP

【WSAP】结构力学求解器(一):二阶效应分析[开源]
【WSAP】结构力学求解器(二):模态分析[开源]
【WSAP】结构力学求解器(三):杆端释放[开源]
【WSAP】结构力学求解器(四):单元荷载定义[开源]
  • 编程与工具

【编程】分段解析法及多软件反应谱求解结果对比探究[开源]

【工具】OpenSEES_XML分析结果提取工具[开源]

【工具】OSRun [OpenSees运行辅助工具][开源]

【工具】FSV [OpenSees纤维截面可视化工具][开源]



本文来自网络,不代表钢构人的立场,转载请注明出处。搜索工程类文章,就用钢构人网站。 https://www.ganggouren.com/2021/03/3598ca05aa/

钢结构地图

上一篇
下一篇

作者: ganggouren

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

17717621528

在线咨询: QQ交谈

邮箱: 1356745727@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部