CAD TO ANSYS TO FLAC3D边坡稳定性分析全程揭密
最近看到不少朋友在问这个方面的问题,我现在把我过去几个月做的工程实例贡献出来,与大家共享。(1)从CAD图获取等高线点的数据
这个过程我是采用捕捉点获取数据的方式,不过是用软件实现的,否则手工操作十分费事。这样的软件在论坛上的ANSYS版块已经有了。有时候,CAD图也并非全有三维信息,不过只要知道二维信息,辅之以高程,就可以了,这个工作量不大。将得到的点的坐标导入到EXCEL中进行处理,转换为下面的格式
k, 1, 600 ,0, 0
k, 2, 600 ,0, 700
k, 3, 0 ,0, 700
k, 4, 0 ,0, 0
k, 5, 600 ,24, 0
k, 6, 600 ,24, 700
k, 7, 0 ,24, 700
k, 8, 0 ,24, 0
即关键点坐标,然后就可以由点生成线了。至于为什么要导入到EXCEL,因为得出的数据点格式未必是符合ANSYS的数据格式,采用她可以进行批量处理,减少工作量。处理完毕后,这些数据点格式可以直接拷贝到记事本中,就成为符合ANSYS输入要求的数据点格式了。
(2)有了数据点,就进入到下一步,即由点在ANSYS中建立几何模型。
通过数据点生成几何模型的方法多种多样,因人而异,没有统一的方法。不过对于我来说,个人觉得岩土工程模型比较复杂,最好是采用点生成线、线生面,面生成体的办法。至于地质界面,我是采用先生成面,然后切割体的方式生成。附件是我的ANSYS命令流,里面配有说明,大家可以参考一下。附图是按上述步骤得到的结果图和网格模型图,说明一下,这些图和我现在贴出的命令流得到的结果有些差异,原因是我后来更改了模型,不过步骤完全一样;后面我提到的在ANSYS生成水面的方式也是采用面切割体的方式得到的。 (4)FLAC3D计算
对导入后的FLAC3D加上相关约束条件并赋上参数值就可以进行计算了。
下面是命令流和相关解释,做得比较简单,没有考虑其它,仅考虑了静水压力而已,呵呵。
n
;导入网格数据以生成水面
impgrid ww.flac3d
attach face
;为建立水面设置“辅助界面”而分组为水上部分和水下部分
group water_below range group 1 any group 2 any
group water_above range group water_below not
gen separate water_below
interface 1 wrap water_belowwater_above
set grav 0 -9.81 0
water den 1000
;遍历界面单元节点生成水面
def water_table
p_i=i_head
p_ie=i_elem_head(p_i) ;界面1单元指针赋予p_ie
loop while p_ie # null
;返回界面单元的三个顶点的地址
p_gp1=ie_vert(p_ie,1)
p_gp2=ie_vert(p_ie,2)
p_gp3=ie_vert(p_ie,3)
;以这三个界面单元顶点为水面的三个顶点,生成水面
;interface的节点和网格节点的地址是分别存放的
x1=in_pos(p_gp1,1)
y1=in_pos(p_gp1,2)
z1=in_pos(p_gp1,3)
x2=in_pos(p_gp2,1)
y2=in_pos(p_gp2,2)
z2=in_pos(p_gp2,3)
x3=in_pos(p_gp3,1)
y3=in_pos(p_gp3,2)
z3=in_pos(p_gp3,3)
command
water table face x1,y1,z1x2,y2,z2x3,y3,z3
endcommand
p_ie=ie_next(p_ie)
endloop
end
;删除单元组water_below和组water_above,为导入实际的材料分组做准备
model null range group water_below
model null range group water_above
;建立实际材料分组部分
;导入网格数据,重新分组
impgrid ww.flac3d
group soil range group 2 any group 4 any
group rock range group 1 any group 3 any
;执行生成水面的函数water_table
water_table
;删除辅助界面单元
int 1 dele
;彻底删除原先的分组,释放空间
dele range group water_below
dele range group water_above
;施加边界约束条件
fix x y z rang y -0.1 0.1
fix z range x 0 600 z -0.1 0.1
fix x range x -0.1 0.1 z 0 700
fix z range x 0 600 z 699.9 700.1
fix x range x 599.9 600.1 z 0 700
;初始化材料密度: 饱和的和非饱和的
def ini_dens
p_z = zone_head ;将网格单元指针赋为p_z
;循环,并进行判断,如果隶属于组名为“土”的网格单元孔隙水压力不等于0,那么该单元密度为2120,其它单元密度为2020
loop while p_z # null
if z_group( p_z)='soil' then
if z_pp( p_z) # 0.0 then
z_density( p_z) = 2120
else
z_density( p_z) = 2020
endif
endif
if z_group( p_z)='rock' then
if z_pp( p_z) # 0.0 then
z_density( p_z) = 3460
else
z_density( p_z) = 3360
endif
endif
p_z = z_next( p_z)
endloop
end
;执行ini_dens函数
ini_dens
;通过弹性求解生成初始应力场
model elas
pro bulk 1e10 she 1e10 range group soil
pro bulk 1e10 she 1e10 range group rock
solve fo 1e3
;位移和速度归零
ini xdisp 0
ini ydisp 0
ini zdisp 0
ini xvel 0
ini yvel 0
ini zvel 0
;定义材料特性
;冰碛土物理力学参数指标
model mohr
pro bulk 4.0e8 she 2.4e8 co 2.6e5 fric 28.5 ten 1e4 dil 10 range group soil
;强节理化辉长岩物理力学参数指标
pro bulk 8e8 she 6e8 co 4.60e5 fric 37 ten 4e3 dil 15 range group rock
set mech ratio 1.0e-6
solve (3)ansys模型导入FLAC3D
这个我采用haitang兄的五一纪念版转换软件实现。
具体步骤为:
导入ANSYS命令流得到网格模型后,点击file栏read input from,找到五一纪念版转换软件文件夹中的ANSYS_COMMAND文件,得到单元和节点信息文件,并被保存在D盘根目录下。复制这两个文件,放置到软件文件夹,双击转换软件,即可得到FLAC3D IMPGRID命令所需的数据格式文件(附件1),然后IMPGRID这个文件就可以得到FLAC3D网格模型(附图)了:D。吃饭去了,晚上接着写,呵呵:)。 (5)计算结果分析
下面就是对计算结果进行分析了,呵呵。
计算结果呢,我的习惯是先整体后局部,先三维后二维,即先看整体位移、应力云图,然后切剖面,绘等值线。说实话,我也是第一次做数值分析,也不知道上面的方式是否科学。剖面绘等值线程序来自论坛上前版主dynamax大牛的flac3d to tecplot,具体步骤如下,等命令流计算完毕后,call flac3d to tecplot文件即可,然后在tecplot 软件中切剖面绘等值线,就可以进行分析了。当然用下面的命令:
plot set plane nor() ori()
plo cont smin plane
or plo cont smax plane
等等也可以得到某些剖面的位移或主应力云图。
由于我的分析的图片较多,我就不一一列出,直接以word附件形式给出。
需要说明的是,我的分析也不一定对,毕竟我也没有多少经验,力学基础也不怎么样,分析得不妥之处,尤其是那些剖面水平位移同心圆现象我还不知道怎么解释,希望大家能够指出,跟帖说明;P。 等我手头上得文章写完,并且有回音后,我再主讲一个《巧妙利用FLAC3D与元胞自动机耦合进行岩土工程不确定性分析》,哈哈;P 好贴,顶!!!!!!!!
好好学习一下地下水位的生成
占个沙发。。。。。。。。。哈好 谢谢,期待版主下次精彩的讲解!!!!!!! 版主是大好人,期待下次的讲座,谢谢!!! 讲的精彩!关注你的《巧妙利用FLAC3D与元胞自动机耦合进行岩土工程不确定性分析》! 好,棒!!!!!
狂顶!!!!!!!!!!!!!!!!!!! 版主真是厉害,
狂顶!!!!!!!!!!!!!!!!!!! benjackxu兄讲的真精彩啊。厉害,羡慕,佩服,崇拜!就羡慕你们这些能建复杂模型的高手,鹅不会ANSYS,一碰到复杂模型就挠头,看来要学学ansys了。 太有帮助了!我也正在做边坡!
但是我想用surfer导入ansys,不知道这样能不能开挖! 楼主说得有道理,但是ansys地质建模,并进行布尔操作后,往往会出现小面和小线段,会对mesh产生巨大的影响,甚至生成畸变单元,不知楼主有没有好的建议 楼主的帖子让在下学习了地下水位的生成,感谢楼主
我也来听看看讲座 太精彩了
我也来听看看讲座 太精彩了 感谢楼主 原帖由 flywing140 于 2007-1-26 20:01 发表楼主说得有道理,但是ansys地质建模,并进行布尔操作后,往往会出现小面和小线段,会对mesh产生巨大的影响,甚至生成畸变单元,不知楼主有没有好的建议
对于这个问题,我通常是这样处理的,适当做些简化,调整一下点的坐标,尽量使模型变得光滑一些,或使面光滑一些。通常我们建模都会经历这样一个过程:刚开始极力遵从原始数据,想建得精确。事实上这样很容易导致mesh出现畸变单元。比如说,看到那个用于矿产储量计算得surpac(好像是这个名字)得有些模型MESH后导入是不可能计算得。因为FLAC本身也是属于有限域法,模型是要经过离散才能运算得,网格单元质量不好,不能进行计算,几何模型建得再精确也没有实际意义。因此,几何模型建立是为网格模型建立作准备得,必须为它服务,所以通常要做些简化,是锐角变得圆滑一些,避免将来分网时出现畸形单元,导致不能计算或计算不收敛。事实上,经过一些简化处理也未必会使计算结果误差有多大。我是这么理解的,一家之言,还望指正:)。 原帖由 mzmzmz 于 2007-1-26 17:51 发表
太有帮助了!我也正在做边坡!
但是我想用surfer导入ansys,不知道这样能不能开挖!
对于你的问题,我想可以这样解决。所谓sufer 图形导入ANSYS,与ANSYS模型导入FLAC3D是一个功能,即前者是后者的前处理软件,导入几何数据而已。要进行开挖,是可以的。比如你在ANSYS中建好整体几何模型后,采用布尔操作,比如用面切割体的方式,将开挖部分分离出来,随便赋上与其它部分不同的材料参数,然后导入FLAC3D,自然与其它部分分成了不同的组。然后在FLAC3D中赋上值,直接对组进行操作,不就可以实现开挖了吗。 非常不错的贴子,受益非浅!我也一直受这个问题困扰! 受的启发很大,对以后自己的建模有很大的帮助,最近放假拉一定要好好研究,争取全部搞懂,谢谢板主!