首页/文章/ 详情

新功能 | 有限元分析ADONIS(V3.75.0)与Python的集成

1年前浏览2361

1 引言

免费的二维有限元分析软件ADONIS在V3.50.1(7/16/2022)的基础之上,发布了V3.75.0 (08/15/2022),新的版本增加了与Python的集成,同时修正了javascript setter/getter函数的一些错误。ADONIS在软件设计上,模仿了RS2和FLAC的部分功能,在与Python的集成上模仿了Itasca软件的交互方式。ADONIS的部分应用参看如下链接,本文仅强调了与Python相关的内容。

              相关文章,在仿真秀官网搜索:

  • 边坡剪切强度折减分析(Shear Strength Reduction Analysis)

  • 二维有限元分析软件ADONIS新功能评述

  • ParaView在ADONIS, Plaxis, FLAC3D和3DEC中的应用

  • 二维FEM分析软件ADONIS(V3.50.1)命令流

  • 板桩墙(Sheet Pile Wall)模拟---FEM中的界面元

  • Ubiquitous节理岩体模拟(Ubiquitous Joint Rock Mass Modelling)

2 模块

Python的安装版本是3.9.13,三个附加安装的模块是numpy, scipy和XlsxWriter。首先需要输入模块:

    import adonis as ad

    接着可以使用下面3个子模块:

      ad.command() #命令ad.set_path() #修改当前工作路径adonis.fos() #获得安全系数  

      3 节点

      函数:ad.node.list() 获得节点对象列表

      类:itasca.node.ElemNode

      对象:

      (1) id() 获得节点的ID

      (2) pos() 获得节点的位置

      (3) disp() 获得节点的位移

      (4) unbal() 获得节点的不平衡力

      4 单元

      函数:adonis.element.list() 获得单元对象列表

      类: itasca.element.Element

      对象:

      (1) id() 获得单元的ID

      (2) num_node() 获得与单元相关的节点数

      (3) num_gauss() 获得与单元相关的高斯点数

      (4) gauss_pos() 获得一个ID单元的高斯点位置,3节点的三角形有1个高斯点,6节点的三角形有3个高斯点

      (5) strain() 获得一个ID单元的高斯点应变增量,3节点的三角形有1个高斯点,6节点的三角形有3个高斯点

      (6) pp() 获得给定高斯点的单元孔隙压力,3节点的三角形有1个高斯点,6节点的三角形有3个高斯点

      (7) prop() 获得给定高斯点的单元属性值,3节点的三角形有1个高斯点,6节点的三角形有3个高斯点

      此外还有vect2 Class和vect3 Class两个类。

      5 试验

      演示的例子用来自动化计算软弱夹层变化的不排干剪切强度对安全系数的影响(T10.py):

      代码如下:

        import adonis as adimport xlsxwritercu1 = 50000fos_array = [-1,-1,-1,-1,-1]coh_ratio_array = [0.2,0.4,0.6,0.8,1.0]cmd = "material('create','Mohr-Coulomb','matid',2,'matname','Material 2','density',2038,'shear',3.84615e07,'bulk',8.33333e+07,'coh',{coh},'fric',0,'dil',0,'tens',0)"for i in range(0, 5):    ad.command("""    newmodel()    set('unit','stress-pa')    line('startPoint',0,0,'endPoint',0,20)    line('startPoint',0,20,'endPoint',20,20)    line('startPoint',20,20,'endPoint',40,10)    line('startPoint',40,10,'endPoint',60,10)    line('startPoint',60,10,'endPoint',60,0)    line('startPoint',60,0,'endPoint',0,0)    line('startPoint',6,20,'endPoint',38,4)    line('startPoint',38,4,'endPoint',48,4)    line('startPoint',48,4,'endPoint',54,10)    line('startPoint',8,20,'endPoint',36,6)    line('startPoint',36,6,'endPoint',48,6)    line('startPoint',48,6,'endPoint',52,10)    triangle('elemtype','T3')    discretize('maxedge',1)    segment('id',14,11,'numedge',60)    segment('id',15,12,'numedge',20)    segment('id',16,13,'numedge',15)    triangle('maxedge',1)    set('useNMD','on')    material('create','Mohr-Coulomb','matid',1,'matname','Material 1','density',2038,'shear',3.84615e+07,'bulk',8.33333e+07,'coh',50000,'fric',0,'dil',0,'tens',0)    """)    new_coh = coh_ratio_array[i] * cu1    ad.command(cmd.format(coh=new_coh))    ad.command("""    material('assign','matid',1,'region',42,8)    material('assign','matid',2,'region',42,5)    material('assign','matid',1,'region',42,2)    applybc('xfix','xlim',59.743,61.035,'ylim',-1.499,10.698)    applybc('xfix','xlim',-1.654,0.103,'ylim',-1.499,20.621)    applybc('xyfix','xlim',-1.602,61.035,'ylim',-1.240,0.103)    set('gravity',0,9.8)    solve('fos','fosLBLimit',0.25,'fosUBLimit',2.0,'dispinfodlg','off')    """)        fos_array[i] = ad.fos()

        来源:计算岩土力学
        FLAC3D3DEC试验ParaView
        著作权归作者所有,欢迎分享,未经许可,不得转载
        首次发布时间:2022-12-03
        最近编辑:1年前
        计算岩土力学
        传播岩土工程教育理念、工程分析...
        获赞 119粉丝 871文章 1721课程 0
        点赞
        收藏
        未登录
        还没有评论

        课程
        培训
        服务
        行家

        VIP会员 学习 福利任务 兑换礼品
        下载APP
        联系我们
        帮助与反馈