首页/文章/ 详情

FLAC3D与Python的集成 (4)---zone.Zone类和方法

2年前浏览3065

1. 引言

在《FLAC3D与Python的集成 (3)---网格划分Building Blocks》一文中,介绍了Building Blocks划分网格的方法。在那个例子中使用了CylinderTSectionWithWall 模板划分网格,并且运行这个模型使之在自重应力下达到了平衡状态,同时也引入了部分it.zone模块函数的使用方法。在此基础上,本文首先模拟了开挖并且着重讨论了巷道开挖命令zone relax excavate背后的机理,然后给出了部分典型图形的输出,最后讨论zone.Zone类的使用方法。


CylinderTSectionWithWall 模板


2. Zone relax excavate命令 

上一个例子中,模型在自重应力下达到平衡状态,我们使用命令model save "initial"保存了模型的初始状态,接着进行开挖模拟,使用下面的命令:



zone relax excavate range group "Space"model solve

这里"Space"是Building Blocks模块定义的组名,不能修改。zone relax excavate是模拟开挖的命令。我们过去一直使用“zone cmodel null”命令或者使用"zone cmodel delete"命令进行开挖模拟,这是一种瞬时开挖单元的做法,假定开挖区域一次全部完成。为了模拟真实的施工过程,FLAC3D引入了隧道工程中“应力松弛法”的概念,模拟巷道开挖逐步完成。

由于FLAC3D的模拟过程是使用动力学的原理来达到静态收敛,因此对模型的突然更改可能会产生准惯性(quasi-inertial)效应,可能会人为地夸大该单元的破坏。缓解这种情况的一种方法是逐渐挖掘区域,以使单元移除的影响不那么突然。为此创建了“zone relax excavate”命令。FLAC3D使用了自动的单元开挖松弛方法,使得开挖周围单元影响的影响随着时间的推移逐渐减少,松弛系数设为1到0。虽然用户可以用许多方法控制松弛曲线的形状,但FLAC3D的默认值是使用当前的mechanical force ratio(it.zone.mech_ratio)来伺服控制的。此命令是基于单元的应用条件,可逐渐减小该范围内区域的应力,刚度和密度,直到它们对模型产生影响,当松弛系数达到0时,单元设置为空本构模型NULL, 然后去掉开挖单元。


3. 图形显示 

当计算完成后,图形输出可以直接在FLAC3D的环境下进行,如果不是批处理执行文件命令的话,不需要在数据文件中加入绘图命令。FLAC3D所有的图形输出都可在这个图形面板内完成。


下面是这个例子部分图形的输出,这也是计算后经常需要观察的一些图。

(1)单元分组图,不同的组别显示不同的颜色


(2)塑性状态图,不同的破坏状态显示不同的颜色


(3)单元位移等值线图,不同的颜色显示不同的位移量


(4)最小主应力图,不同颜色显示单元的最小主应力值


4. it.zone.Zone类的方法 

在《FLAC3D与Python的集成 (3)---网格划分Building Blocks》中,我们演示了it.zone函数的用法,it.zone是针对整个模型而言的。相对而言,it.zone.Zone是针对一个特定单元而言的。在昨天的例子中,我们演示了下面这些函数的用法。











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 ()

如果运行下面的代码: 



zone_maxid = it.zone.find(it.zone.maxid())print(type(zone_maxid))

可以发现, zone_maxid的类型是'itasca.zone.Zone',这是一个类,不是一个字典或列表,因此我们必须使用方法来返回或赋予该单元的值。下面是试验的一些例子:








print(zone_maxid.density())print(zone_maxid.geom_test()) print(zone_maxid.id()) print(zone_maxid.vol_deformed()) print(zone_maxid.vol()) print(zone_maxid.type())print(zone_maxid.props())

itasca.zone.Zone 类下的方法非常多, 下面仅列出固体材料的方法, 流体和热的方法以后单独描述。
























































































adjacent_zones() aspect()condition() copy_to(destination: itasca.zone.Zone) create_interface_element(face_index: int, interface_name: str)density() extra(slot: int) face_areas() face_extra(face_index: int, extra_index: int)face_find(gp0, gp1, gp2)face_find_normal(normal: vec3)face_group(face_index: int, slot='Default')face_group_remove(face_index: int, group_name: str)face_in_group(face_index: int, group_name: str, slot='Default')face_normals()faces()geom_test() gridpoints() group([slot: str]) group_remove(group_name: str)groups() has_prop(property_name: str) hysteretic_props() id() in_group(group_name: str[, slot: str]) live() model() model_init() num_gp() ortho() overlays() planarity() plane_traction(vdir: vec3)pos() pos_x() pos_y() pos_z() prop(property_name: str) props() rotation() rotation_rate() set_density(value: float)set_extra(slot: int, value: any)set_face_extra(face_index: int, extra_index: int, value: any) set_face_group(face_index: int, group_name: str, slot='Default')set_group(group_name: str[, slot: str]) set_model(value: string)set_pp(value: float)set_prop(property_name: str, value: any) set_state(state: int) set_stress(stress: stens3)set_work_elastic_shear(value: float)set_work_elastic_vol(value: float)set_work_plastic_shear(value: float)set_work_plastic_vol(value: float) state(average: bool) strain() strain_rate() strain_shear_inc() strain_shear_rate() strain_vol_inc() strain_vol_rate() stress() stress_int() stress_max() stress_min() stress_prin() stress_prin_dir() stress_prin_x() stress_prin_y() stress_prin_z() test_quality() tet_strain_rates() tet_strains() tet_stresses() tet_volumes() tets() type() valid() vol() vol_deformed() work_elastic_shear() work_elastic_total() work_elastic_vol() work_plastic_shear() work_plastic_total() work_plastic_vol()

 

5. 结束语

本文主要描述了开挖命令zone relax excavate的工作机理以及zone.Zone类具有的方法。it.zone模块是针对整个模型而言的,it.zone.Zone类是针对特定单元而言的。



来源:计算岩土力学
FLAC3D材料控制试验
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-09-27
最近编辑:2年前
计算岩土力学
传播岩土工程教育理念、工程分析...
获赞 150粉丝 1102文章 1782课程 0
点赞
收藏
未登录
1条评论
煜阳
签名征集中
2年前
请问有这个模型的代码吗?
回复
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈