OpenSeesPy - 从此Python工程计算不再难

OpenSees目前已经是地震工程研究的基本工具,因其开放、高效、计算精准广受地震工程研究人员欢迎。但其由于没有可视化界面、建模需要编写Tcl命令等原因,学习门槛也较高,这可能是为什么更多人(尤其在当前的博士大军中)愿意使用ABAQUS来解决自己研究问题的原因吧。Tcl很古老了,本人很早就尝试使用过OpenSees,但一直没有深入,一是工作中用到的机会少,另一方面更重要的原因是Tcl这门语言学起来总觉得不那么友好。最近好了,OpenSees官方也提供了目前最火的语言Python支持了,它就是:OpenSeesPy

今天先分享一下其安装过程和OpenSeesPy作者大神近期的公开讲座,供爱Python的小伙伴把玩。

安装

  • 安装Python

    这里推荐直接安装Anaconda,这个东东有点大,不过是Python的使用超级工具,几乎包括了科学计算常用的所有库,关键是其可以对本机上不同的Python环境进行高效管理。大家根据官网上的地址和自己系统下载一个安装包一路Next即可。安装后,打开命令行按下列命令创建一个新的Python虚拟环境:

    conda create -n py38 python=3.8

    以上命令创建的python版本为3.8(OpenSeesPy最新版当前需要python3.8),名字为py38的虚拟环境,用户可根据自己习惯自行修改。

  • 安装OpenSeesPy

    切换到py38环境,在命令行执行以下命令:

    activate py38

    使用Pip安装OpenSeesPy:

    pip install openseespy

    如果命令行没有报错,你的Python就应该已经具有OpenSees的功能了。(着实较以前简单!!!!)

  • 测试一下

    打开顺手的Python编辑器,输入以下代码:

    # import OpenSeesPy
    import openseespy.opensees as ops
    
    # import OpenSeesPy plotting commands
    import openseespy.postprocessing.Get_Rendering as opsplt
    
    # wipe model
    ops.wipe()
    # create model
    ops.model('basic', '-ndm', 2, '-ndf', 3)
    
    ops.node(1,0,100,100)
    ops.node(2,100,100,100)
    
    # Geometry of column elements
    #                tag
    ops.geomTransf('Linear', 2)
    
    # Create the beam element 
    #                          tag, ndI, ndJ, A,     E,    Iz, transfTag
    ops.element('elasticBeamColumn', 1, 1, 2, 360.0, 4030.0, 8640.0, 2)
    
    # plot model
    opsplt.plot_model()

    运行以上代码,将建立一个具有2个节点的梁单元,并用matplotlib显示出来,看到下图就说明你成功啦:))

    OpenSeesPy测试

大神介绍视频

关于OpenSeesPy更多的背景,可参考学习原作大神Minjie Zhu的最新讲座视频(点击以下链接移步至新浪微薄,本人还贴心地添加了油管的自动字幕奥):

Minjie Zhu & OpenSeesPy Development

官方文档