首页/文章/ 详情

FLAC3D与Python的集成 (1)---简述

2年前浏览4126

1. 引言

最初相识Python的时候大约是在6年前,那时我正使用Abaqus做土和结构相互作用的数值模拟。作为一个old school毕业的学生,以前使用的编程语言主要是Fortran和 Visual Basic, 但当时看到Abaqus 6.13版提供的Python语言后感到很亲切,部分原因是觉得Python语言的编程风格和Itasca软件中的FISH语言极为相似。于是开始自学Python语言,入门之后才知道Python语言是当下最火的人工智能编程语言,主要用在机器学习上来处理大数据。也就是在那时,盼望着一些岩土工程领域工业标准的软件也能有象Abaqus那样的Python接口。


2. PLAXIS与Python的集成 

不负所望,在随后几年里,PLAXIS首先推出了与Python的集成方法,它用一个简单的py文件可以封装整个计算过程包括模型建立和结果输出。以后将单独描述PLAXIS与Python的集成方法。一个完整的例子代码如下所示。


3. FLACD3D与Python的集成

随后Itasca的系列软件也开始推出与Python的集成方法。首先在PFC3D中试验,然后应用到FLAC3D中。经过测试,使用Python的速度比FISH的速度差不多能快一倍,当然最快的应该是使用NumPy了,对于FLAC3D的单元循环来说速度差不多是FISH的34倍。下面的部分描述FLAC3D与Python的集成方法。


FLAC3D集成了IPython的控制台,当进入FLACD3D的运行环境后,在面板(Panes)菜单下选择IPython Console, 编进入到Python的编程环境。

目前IPython的最新版本是7.12.0, 应该可以使用最新版本的IPython代替FLAC3D安装中的旧版本(IPython 3.1.0), 这是一个在PY2下运行的非常老的版本。不过目前没有测试是否能够成功。  

新的IPython版本

 

首先需要使用下面的命令建立二者的联系。



import itasca as itit command ("python-reset-state false")


it.command函数能够产生一系列FLAC3D的命令,python-reset-state false命令能够确保FLAC3D使用New或Restore命令后python变量不会删除。


接下来我们便可以封装FLAC3D的命令








it.command("""model newzone create brick size 10 10 10zone cmodel assign elasticzone property density 2950 young 12e9 poisson 0.25cycle 1""")

我们可以使用it.zone.count()函数来检查模型是不是有10*10*10=1000个单元, 当运行这个命令后,结果显示1000,说明运行正确。

我们可以使用it.zone.find命令来返回某个单元对象:

接着使用pos()方法便可获得该对象的坐标。

一旦获得了一个对象,本质上可以获得该对象的所有属性,例如

得到了z单元的ID, 材料模型以及坐标位置。下面的代码通过对整个模型中所有的单元体积相加来得到整个模型的体积。这个功能非常有用, 因为有时我们需要比较模型变形前后的体积变化量。


prop()方法能够输出单元所有的材料参数


4. 结束语

Pyhton作为强大的计算语言与数值模拟软件集成是自然而然的事情,本文简单介绍了FLAC3D与Python的集成方法。作为一个完整的专辑,下一节将继续探讨这个非常有趣的课题。

来源:计算岩土力学
Abaquspython岩土PFCFLAC3D材料控制试验人工智能PLAXIS
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-09-27
最近编辑:2年前
计算岩土力学
传播岩土工程教育理念、工程分析...
获赞 147粉丝 1060文章 1782课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈