首页/文章/ 详情

FLAC3D与Python的集成 (3)---网格划分Building Blocks

1年前浏览5149

1. 引言

对于真实的岩土工程数值模拟来说,如果单纯使用基元命令生成模型,FLAC3D的建模及网格划分工作是非常复杂的,因此许多年来开发人员和研究人员一直在寻求相对高效的建模和划分网格方法,包括从外部程序导入和FLAC3D自身内置。本文首先简要回顾了这些发展历史,在此基础上,介绍了使用Building Blocks产生网格划分的方法,最后把产生的模型集成在Python环境中。

2. 从外部计算程序导入

以前为了把外部程序建立的网格导入到FLAC3D,用户必须自己编写接口程序,现在FLAC3D已经内置了ABAQUS和ANSYS的导入接口,如下图所示。

除了可以导入自身的FLAC3D *f3grid文件外,也可以导入ABAQUS的*.inp文件和ANSYS的*lis文件, 对于那些熟悉ABAQUS和ANSYS的朋友, 这下是不是方便多了。

3. 和其它计算程序的集成

FLAC3D 曾经与CivilFEM合作推出过一个模型交换接口。后来FLAC3D放弃了这种合作,不过现在CivilFEM仍然保留着这个接口。

3. 独立的网格生成程序Griddle

作为Rhinoceros的一个插件,Griddle是目前FLAC3D力推的独立网格生成程序。网上有许多关于这个插件的讨论,在此就不赘述了。

4. 内置的网格生成方法Building Blocks

FLAC3D内置了一些网格生成方法,统称为Building Blocks。尽管这些方法没有Griddle的处理能力强大,但可以应付一些几何形状相对规则的模型。FLAC3D建立模型是通过基元命令组合形成的,如下图所示。Building Blocks的作用就是封装这些基元命令,简化用户建立模型的复杂性。下面的部分详细介绍如何使用Building Blocks。  

5. 使用Building Blocks工具生成网格

下面通过一个简单的例子演示如何使用Building Blocks来生成网格。

(1) 第一步

建立一个新的项目3dslope.f3prj,基本操作可参看笔记《 FLAC3D与Python的集成 (2)---数据交换至Numpy》,然后把下图所示的第5项(Building Blocks)和第6项(Model)选上。

顶部主菜单的右侧会出现这两个工具相应的工具条。 

Model面板工具条

Building Blocks面板工具条

(2) 第二步

在Building Blocks面板的任意空白区域点击鼠标左键,弹出如下对话框,输入Set名, 去掉"Include an initial block"的选项,然后点击"OK"按钮,如下图所示。 

(3) 第三步

从顶部的Import Blocks图标中选择其中一个,在本例中我们选择如上图所示的第4项,弹出下面的对话框,按“Import"按钮。

产生如下图形。

按住鼠标右键拖动,可以改变模型的视角。

也可以使用工作环境右侧的视角调节器,作用是一样的。

(4) 第四步

如下图所示,选择工具栏中最后一项,这个按钮的作用是从Block中产生单元。

(5) 第五步

给模型的面赋值组名, 按如下图所示的工具按钮。

弹出下面的对话框,按 “Assign Groups"按钮,完成网格划分。

(6) 第六步

保存模型。按照如图所示的操作,把模型保存到original-geometry.f3sav中。

Building Blocks产生的模型可以通过命令或FISH函数进行回溯和修改。FLAC3D的帮助文件中右非常详细的介绍。大致的命令格式如下所示:

    flac3d>building-blocks set deleteflac3d>building-blocks set create "Demo"flac3d>building-blocks block create hexahedronflac3d>building-blocks block delete range id-list  1


    6. 使用Building Blocks

    通过File->Add New Data Files...建立一个文件3dtunnel.f3dat. 

    在这个数据文件中,首先使用下面的命令调入上面产生的网格模型,接着就可以输入其余的FLAC3D命令了。

      model restore "original-geometry"

      7. 在py中运行FLAC3D

      一个可变化的方法是在Python中运行FLAC3D,在项目中新建一个文件3dtunnel.py,然后把FLAC3D命令封装在it.command内,如下图所示的代码。在这个代码中,首先使用restore命令导入先前产生的网格模型,然后设置模型需要的参数,接着设置边界条件和初始条件,最后运行模型,让模型达到初始应力下的平衡状态。

      当模型运行完毕,我们使用Python查看一些变量值,涉及到的函数包括:

        it.zone.list()it.zone.count()it.zone.mech_convergence()it.zone.mech_ratio()it.zone.mech_ratio_avg()it.zone.mech_ratio_local()it.zone.mech_ratio_max()it.zone.unbal()it.zone.maxid()it.zone.find()z.vol()z.props()

        代码如下:    

        这段代码的运行结果如下:

        8. 结束语

        本文描述了Building Blocks的网格生成方法以及如何把产生的模型集成在Python文件内。同时,也演示了it.zone模块一些函数的用法。下一节将接着本例继续深入探讨其它的知识点。

        Thanks a lot and have a good day!

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

        课程
        培训
        服务
        行家

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