没有合适的资源?快使用搜索试试~ 我知道了~
OpenSeesPy:开源有限元框架的Python库—软件X 7(2018)6.
*SoftwareX 7(2018)6原始软件出版物OpenSeesPy:用于OpenSees有限元框架的Python库朱敏杰a,Frank McKennab,Michael H. Scotta,*美国俄勒冈州立大学土木与建筑工程学院,地址:101 Kearney Hall,Corvallis,OR 97331,USAB 美国加州大学伯克利分校土木与环境工程系,地址:760 Davis Hall,Berkeley,CA 94720,USAar t i cl e i nf o文章历史记录:2017年10月4日收到2017年10月30日接受关键词:解释器脚本语言结构分析有限元分析a b st ra ctOpenSees是一个开源的有限元软件框架,在地震工程界被广泛用于模拟结构和岩土系统的地震反应该框架允许用户使用脚本语言执行有限元分析,并允许开发人员创建串行和并行有限元计算机应用程序作为解释器。在过去的15年里,Tcl一直是OpenSees的模型构建和分析模块所链接的主要脚本语言为了向用户提供不同的脚本语言选项,特别是Python,OpenSees解释器接口被重构以提供多解释器功能。这种重构,导致OpenSeesPy作为Python模块的创建,是通过解释器调用的抽象接口与不同脚本语言的具体实现来完成的。通过这种方法,用户能够开发利用几种脚本语言的独特功能的应用程序,同时利用先进的有限元分析模型和算法。©2017作者。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本2.5.0用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX-D-17-00072法律代码许可证https://github.com/fmckenna/OpenSeesInterpreter/blob/master/LICENSE使用git,svn的代码版本控制系统使用C++、FORTRAN、Tcl、Python的编译要求,操作环境依赖性Linux,Windows,Mac OS如果可用,链接到开发人员文档/手册http://opensees.berkeley.edu/OpenSees/developer/index.php问题支持电子邮件opensees-support@berkeley.edu1. 动机和意义模拟在民用基础设施的设计和评估中发挥着至关重要的作用,以抵御地震和海啸等自然灾害虽然简化方法可用于初步分析,但结果往往是保守的,设计和改造成本可能很因此,设计规范允许工程师开发更经济的解决方案,满足性能要求通讯作者。电子邮件地址:zhum@oregonstate.edu(M. Zhu),fmckenna@berkeley.edu(F.McKenna),michael. oregonstate.edu(M.H.Scott)。https://doi.org/10.1016/j.softx.2017.10.009目标从即时入住到生命安全。仿真有助于在工程实践中实现这些解决方案,并且还量化超过极限状态的概率,例如,使用考虑系统特性和外部载荷的可变性的随机方法。开发新的仿真模型需要一个灵活的软件框架,开发人员可以在此基础上构建现有的可互换模块。一个功能齐全的有限元分析软件,OpenSees,地震工程模拟的开放系统,创建于20世纪90年代末,作为太平洋地震工程研究中心(PEER)的模拟平台。OpenSees框架结合了最先进的有限2352-7110/©2017作者。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softxM. Zhu等人/SoftwareX 7(2018)67图1.一、 现有OpenSees框架的类图。元素模型和非线性求解算法,是开源的,主要用C++编写,并与一些FORTRAN库链接,用于求解线性方程组。虽然OpenSees也有对图形用户界面(GUI)的扩展,例如BuildingTcl和OpenSees Navigator,但它们通常会将用户限制在特定类型的结构和/或分析中[1]。为了允许用户利用编程构造(如条件、迭代和过程),OpenSees扩展了Tcl的解释器,其中包含用于模型构建和分析的命令。尽管Tcl非常灵活,在字符串处理中,它不太适合科学计算应用。Tcl为了消除单一脚本语言的局限性,并允许更广泛的未来脚本语 言 , 本 文 提 出 了 一 个 新 的 接 口 OpenSees 框 架 ,DL_Interpreter类,包括多个解释器,使OpenSees可访问更广泛的用户。此外,OpenSees的用户将能够利用来自不同脚本语言 的 功 能 , 这些功 能 在Tcl中不 可 用 。 本 文 的 重 点 是OpenSeesPy,它是用于OpenSees的Python解释器的实现工作是通用的,可以很容易地适应其他脚本语言,如Ruby、Julia和R。描述了OpenSees核心中与解释器无关的函数及其与新DL_Interpreter类的交互的示例应用 非线性桁架结构的蒙特卡罗模拟突出了多解释器接口。本文最后对使用OpenSees的影响进行了评估。2. 软件描述OpenSees的核心功能,包括用于结构和岩土系统非线性动力学分析的最先进有限元模型和求解算法,如[2]所述。除了地震工程模拟功能外,OpenSees还扩展了参数更新和灵敏度分析[3],火灾模拟[4]和凭借广泛的有限元模拟功能,OpenSees的扩展为新的解释器提供了接口,允许用户在开发专用应用程序时利用多个库2.1. 软件构架为了在OpenSees中分析结构或岩土系统,模型构建器对象使用构建系统有限元模型所需的节点、元素、载荷和约束对象以及记录器对象填充域,以记录分析结果[2,6],如图1所示。分析对象为特定类型的分析计算有限元模型的状态,例如,静态、动态、特征值等,使用Inter-可变解算法、线性方程求解器、约束处理器和时间积分方法。OpenSees的用户编写调用ModelBuilder类实例的脚本来创建有限元模型,例如,TclModelBuilder类使用node命令扩展了Tcl脚 本 语 言 , 该 命 令 通 过 调 用 Tcl API [7] 中 的 函 数 ( 如Tcl_GetInt)从用户输入创建Node对象,然后将Node对象添加到Domain。要将OpenSees与Python或任何其他脚本语言连接起来,输入、创建有限元域对象、执行分析和记录结果都需要复制。 为了避免这样的代码重复,ModelBuilder对象被替换为一个核心的、独立于解释器的OpenSees API,该API填充域并执行分析,如图所示。 二、2.2. 软件功能OpenSees 的 多 解 释 器 功 能 是 通 过 图 2 顶 部 所 示 的DL_Interpreter接口提供的,该接口定义了八个基本的输入/输出(IO)函数,用于获得整数、浮点和字符串输入。每种脚本语言都将定义自己的解释器类,DL_Interpreter 接 口 , 例 如 TclInterpreter 和 Python-Interpreter,用于八个IO函数。每个实现都处理与语言相关的操作,例如初始化语言,打印信息,设置环境变量,加载启动模块和文件,扩展函数或命令。由于语言相关的代码可能很麻烦,因此在解释器类中定义了一个包装器类,以分担包装OpenSees核心API的因此,核心API只包含用于填充模型域、运行分析和操作内部对象的纯OpenSees代码,因此这些操作在所有解释器语言中都是相同如果需要IO操作 , 则 核 心 API 将 调 用 OpenSees IO API , 例 如 ,OPS_GetIntInput , 它 也 是 独 立 于 解 释 器 的 , 并 将 通 过DL_Interpreter接口对八个基本IO函数进行多态调用。通过这种设计,核心OpenSees API与解释器完全分离,并且最大限度地减少了添加新解释器的工作8M. Zhu等人/SoftwareX 7(2018)6图二. 多解释器接口的类图。3. 说明性实例OpenSees的强大功能是通过脚本动态地创建模型、执行分析和记录结果创建并分析了图3所示的这里的目的不是展示完整的结构分析,而是强调通过多个解释器使用OpenSees的底层代码3.1. 模型构建图3.第三章。 蒙特卡罗模拟的桁架模型。在图3所示的桁架模型中,节点编号为1到4,元素编号为1到3。创建桁架模型的Tcl和Python代码片段如图4所示。虽然这两种语言在函数调用的语法和格式上有很大的不同,但函数的输入参数总是按顺序列出的,这对几乎所有的通用和科学语言都是如此如前所述,解释器类通过DL_Interpreter接口实现八个基本IO函数,这些函数在内部以相同的顺序读取和记录所有语言。例如,OPS_GetDoubleInput函数调用getDouble()虚拟方法来读取下一个输入参数作为浮点值,例如。 材料弹性模量,E,在图四、的M. Zhu等人/SoftwareX 7(2018)69=失败 :如果g0<图四、 用Python和Tcl构建桁架模型。图五、 Python解释器中getDouble的实现Python-解释器和TclInterpreter类的getDouble()方法的实现如图2和3所示。5和6所示。通过调用IO API,核心API可以读取输入参数或记录输出结果。例如,OPS_Node核心API读取节点标记和节点坐标,并在域中创建Node包装OPS_Node函数可使其在多种脚本语言中作为节点命令使用。它在PythonWrapper和TclWrapper中的实现如图2和3所示。7和83.2. 仿真结果由于调用的是相同的核心API函数,因此,在静态分析的多个步骤中应用于结构两个解释器都将节点4的水平位移报告为u4 1。510431 in在160 kip的峰值载荷下。为了证明可靠性分析,定义了三个结构参数:桁架截面面积A、材料屈服应力σy和水平荷载Px,并从正态分布中生成随机数,参数的平均值如图4所示。A、σy和Px的标准偏差分别为0.5 in2、2.0 ksi和10.0 kip。然后运行蒙特卡罗模拟,并计算桁架结构的失效概率,如图9所示。结构的失效用节点4的水平位移定义,使用以下极限状态函数preters应该创建给出相同模拟结果的有限元模型。对于桁架示例,外部载荷为g(u4)=2. 5 in−u4,{安全:如果g≥0(一)10M. Zhu等人/SoftwareX 7(2018)6图六、 在Tcl解释器中实现getDouble。见图7。在Python解释器中包装OPS_Node见图8。 在Tcl解释器中包装OPS_Node(a) Python.(b)Tcl.见图9。使用OpenSees的Python和Tcl解释器对示例桁架结构进行蒙特卡罗模拟。实线是具有随机变量的平均值的图中的虚线。图9基于节点4的水平位移描绘了失效域和安全域。每个点是一组随机变量实现的最终位移由于它们的随机数生成器的差异,Python和Tcl解释器在10,000次随机试验后的失败概率分别为Pf= 0.1577和0.1589。这意味着桁架的水平位移有近16%的机会超过规定的限制,M. Zhu等人/SoftwareX 7(2018)611每个参数的变量分布。实际的结构更加复杂;然而,这个例子传达了多解释器能力的基本4. 影响从早期被PEER的研究人员使用开始,OpenSees已经发展成为一 个 庞 大 的 国 际 用 户 群 。 2016 年 , 其 网 站http://opensees.berkeley.edu 的 页 面 浏 览 量 超 过 150 万 次 。OpenSees 已 被 美 国 和 世 界 各 大 大 学 用 作 大 量 研 究 生 论 文OpenSees的应用程序是跨平台的(Windows,Linux和OS X),从简单的串行应用程序到复杂的并行应用程序,并广泛用于各种计算资源,包括桌面,亚马逊集群和高性能计算平台。OpenSees的有限元模块还可以作为分析引擎,用于开发脆弱性函数,量化民用基础设施连接系统对各种自然灾害的恢复力。为了解决有关社区复原力的研究问题,IN-CORE多灾害决策框架[8]使用Python作为其粘合语言,将OpenSees生成的结构脆弱性与桥梁,建筑物和电力传输系统的投资决策联系起来。通过对Python 的扩展,OpenSees 的用户可以访问绘图库Matplotlib、数值库Numpy和Scipy、交互式服务器Applyter、3D可视化库Mayavi、统计库Pandas、Web开发库Flask等。此外,OpenSees现在可以使用可视化工具包(VTK),一个开源的,许可的,用于科学数据处理、可视化和数据分析的跨平台工具包[9],作为其后处理工具之一5. 结论OpenSees的多解释器能力反映了它的发展,以跟上新的脚本语言从软件计算社区。可以快速添加新的口译员来利用脚本语言中的库和模块。随着OpenSees核心API(与解释器分离)的开发,OpenSees的有限元模块可以重新构建,以在源代码级别利用工程力学和数值方法社区的新进展。作为一个开源框架,预计这种能力将使OpenSees在大型用户群中保持相关性,并在脚本语言和非线性有限元分析两个方面取得进展致谢美国国家标准与技术研究所(NIST)和科罗拉多州立大学通过俄勒冈州立大学的子奖项达成的合作协议70NANB 15H044为这项工作提供了部分支持。本文的内容是作者的观点,不一定代表NIST或美国商务部的意见或观点。引用[1] Al-HamaydehM,Najib M,Alawnah S.INSPECT:IDARC-2D图形用户界面软件包. SoftwareX2016;5:243-51.[2] McKenna F,Scott MH,Fenves GL.使用物件组合的非线性有限元素分析软体架构。 JComput Civil Eng 2010;24(1):95-107.[3] Scott MH,Haukaas T.参数修正与有限元响应灵敏度分析软件框架。 《土木工程计算杂志》2008;22(5):281-91.[4] 作 者 : Jiang J , Usmani A. 使 用 OpenSees 进 行 火 灾 下 钢 框 架 结 构 建 模ComputStruct2013;118:90-9.http://dx.doi.org/10.1016/j.compstruc.2012.07。013.[5] Zhu M,Scott MH.在OpenSees中通过粒子有限元法模拟流固耦合。ComputStruct2014;132:12-21.[6] ScottMH,Fenves GL,McKenna FT,Filippou FC.非线性梁柱模型的软件模式。J Struct Eng2008;134(4):562-71.[7] 韦尔奇湾Tcl和Tk中的实用编程。Perntice Hall,Upper SaddleRiver,NJ;2000年。[8] 基 于 风 险 的 社 区 复 原 力 规 划 中 心 。 2017 年 IN-CORE ( InterdependentNetworked Community Resilience Modeling Environment)NIST,http://resilience.colostate.edu/in_core.shtml网站。[9] HanwellMD,Martin KM,Chaudhary A,Avila LS.可视化工具包(VTK):为现代图形卡重写渲染代码。SoftwareX2015;1 - 2:9-12.
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功