基于Python实现的结构有限元开源库:NUSA
责任编辑:沐小月     时间:2021-03-25     来源:米条 CAE仿真空间
责任编辑:沐小月
时间:2021-03-25  来源:米条 CAE仿真空间
分类: 技术分享
浏览量: 344

        开源的有限元仿真求解器有很多,在之前的文章中小编也提到过一些,从前处理的网格操作到结果后处理的可视化等有非常多的好项目。小编今天再跟大家介绍一款很不错的开源学习库,叫做NUSA,专门用于结构分析的Python开源库。上次提到过,这个项目小编在运行的时候出现bug,经过查找之后在知乎遇到一个朋友的提示发现了问题,后文会说明。

        其实前面的一些文章有强调,好些推荐的算法、开源项目主要还是用于学术研究和相关理论学习上,真正离商用好用还是有一些路要走。所以我推荐的内容以理论学习、底层技术探索为主,或者对目前很多正在主导自主工业软件开发的从业人员拓展一些开发思路。当然,也可以作为程序开发学习的一个过渡,或许借此就从机械攻城狮转为码农了。

        NUSA是一位墨西哥的学者写的的代码,因为是学习为主,整个开发的内容和深度相对简单,仅对杆单元、梁单元和一些二维问题等内容作了介绍和开发,下面我们看看这个Python包的内容和使用。这个项目开发经历了三个版本,目前第三阶段仍在开展更新维护:

  • 0.1.0 (16/11/2016)
  • 0.2.0 (14/07/2019)
  • 0.3.dev0 Development version

        如果使用这个包的话,因为调用关系需要提前准备以下几个Python基础包和库文件,分别是:

  • NumPy
  • Matplotlib
  • Tabulate
  • GMSH

        其中GMSH的使用比较特殊,这里专门说一下GMSH的配置,但是其实我在执行demo的时候发现有没有这个库好像都没问题的,这个大家可以交流交流。配置的话步骤如下:

  1. 下载某版本的gmsh,比如gmsh-4.7.1.tar.gz。
  2. 下载电脑对应的gmsh-sdk版本(Windows 64位)。
  3. 将sdk文件放到gmsh-4.7.1.tar.gz解压之后的文件下,与setup.py同一个目录。
  4. 编辑修改setup.py中的代码:
  • 删除第49行的 self._download()
  • 删除第54行~59行的_download(self)函数(整个函数)

     5.完成1)~4)操作之后,结合python setup.py install完成安装。

图-1 gmsh运行结果

        NUSA的安装直接pip即可,其中核心的代码在model.py中,定义了对应的类和方法函数,即对弹簧单元、杆单元、梁单元以及三角形单元施加边界、载荷以及求解、可视化相关的实现过程。

        下面是两个demo文件,贴出来一起看看,直接调用有关的命令实现即可。其中出现前文说到的bug的问题,主要是在运行三角形单元求解的demo代码(见后文代码)的时候,应该将_mesh.pygeneral_mesh函数下的代码:

        改为:

        这样处理之后就能够完成demo执行,主要对meshio不熟悉,不然当下应该好解决。另外如果需要输出图片,在代码的最后需要加上一句这个,否则没有图片输出。大家希望输出什么图片结果,可以参考model.py中各类单元提供了哪些方法函数,直接调用即可。

        以上两点是原项目出现的小问题,大家按照我的说明处理就没问题了。

图-2 原项目bug提示

 

三角形单元

Linear Triangle Element

图-3 网格及结果后处理示意图

 

梁单元

For the beam and loading shown, determine the deflection at point C. Use E = 29 x 106 psi.

图-4 工况示意图

        可以额外调用model.py中的方法实现建模示意图、变形位移示意图以及弯矩数值示意图等众多可视化的输出,分别如图-5~图-7所示。

图-5 建模示意图

图-6 位移变形图

图-7 弯矩示意图


来源:米条 CAE仿真空间

点赞人: 王王木木 

yzh  回复 2021-04-03 21:36:46
学到了
回复:

Copyright © 2021 .长沙麦涛网络科技有限公司 All rights reserved. 湘ICP备20015126号-2
联系我们