最近看到不少朋友在问这个方面的问题,我现在把我过去几个月做的工程实例贡献出来,与大家共享。
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生成水面的方式也是采用面切割体的方式得到的。
3)ansys模型导入FLAC3D1
这个我采用haitang兄的五一纪念版转换软件实现。
具体步骤为:
导入ANSYS命令流得到网格模型后,点击file栏read input from,找到五一纪念版转换软件文件夹中的ANSYS_COMMAND文件,得到单元和节点信息文件,并被保存在D盘根目录下。复制这两个文件,放置到软件文件夹,双击转换软件,即可得到FLAC3D IMPGRID命令所需的数据格式文件(附件1),然后IMPGRID这个文件就可以得到FLAC3D网格模型(附图)
4)FLAC3D计算
对导入后的FLAC3D加上相关约束条件并赋上参数值就可以进行计算了。
下面是命令流和相关解释,做得比较简单,没有考虑其它,仅考虑了静水压力而已,呵呵。
导入网格数据以生成水面
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_below water_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_ie4
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,z1 x2,y2,z2 x3,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,其它单元密度为20206
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 elas9 t7 g, l& W M3 s4 i
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
5)计算结果分析
下面就是对计算结果进行分析了,呵呵。
计算结果呢,我的习惯是先整体后局部,先三维后二维,即先看整体位移、应力云图,然后切剖面,绘等值线。说实话,我也是第一次做数值分析,也不知道上面的方式是否科学。剖面绘等值线程序来自论坛上前版主dynamax大牛的flac3d to tecplot,具体步骤如下,等命令流计算完毕后,call flac3d to tecplot文件即可,然后在tecplot 软件中切剖面绘等值线,就可以进行分析了。当然用下面的命令:
plot set plane nor() ori()
plo cont smin plane
or plo cont smax plane
等等也可以得到某些剖面的位移或主应力云图。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删