首页/文章/ 详情

新手向——FLAC3D6.0如何输出节点位移

8月前浏览1228
在利用FLAC3D计算完成后,有时需要提取单个或多个节点的位移,笔者在此提供常用的2种方法:①使用list功能提取;②编写fish函数提取。

======案例演示======

案例模型为6*6*6*的立方体,分组情况见图1。进行初始平衡后挖去分组‘2’,提取并输出模型各节点的位移。

图1 模型分组

命令流如下:
















;建立模型并完成开挖计算model newzone create brick size 6 6 6 group '1'zone cmodel assign m-czone prop bulk 5e8 shear 3e8 coh 1e6 fric 20zone ini dens 2800zone face skinzone face apply v-n 0 range group 'West' or 'East'zone face apply v-n 0 range group 'North' or 'South'zone face apply v-n 0 range group 'Bottom'model gravity 9.81model solve elasticzone group '2' range p-x 1 5 p-z 1 5zone cmodel assign null range group '2'model solve

图2 Z向位移云图
①使用list命令提取位移,相应位移值会输出到软件console界面,见图3.
命令如下:








;提取全部节点位移zone gridpoint list displacement ;提取某个分组(包括面分组)的节点位移,则命令变为:zone gridpoint list displacement range group 'xxx';提取某一个节点(x,y,z)的位移,则命令变为:zone gridpoint list displacement range position (x,y,z);提取某个范围内的节点位移,则命令变为:zone gridpoint list displacement range position-x x1 x2 position-y y1 y2 position-x z1 z2

图3 list位移输出示意

Tips1:输出的位移看Displacement列,不看Small Displacement列,此项可以通过fish函数提取结果对比。
②使用fish函数并提取,本文以提取x向位移并输出到txt文件为例,命令如下:
























;提取单个节点(x,y,z)结果并输出到consolefish def disp_out  gpnt = gp.near(x,y,z)  xdisp = gp.disp.x(gpnt)  ydisp = gp.disp.y(gpnt)  zdisp = gp.disp.z(gpnt)  io.out('The x-displacement of gridpoint is: \n' + string(xdisp))  io.out('The y-displacement of gridpoint is: \n' + string(ydisp))  io.out('The z-displacement of gridpoint is: \n' + string(zdisp)) end @disp_out ;提取模型所有节点的编号与x/y/z位移并输出到txt文件,以输出x位移为例:fish def disp_out    n = 0    loop foreach gpnt gp.list        n = n+1        table.x(1,n) = gp.id(gpnt)        table.y(1,n) = gp.disp.x(gpnt)    endloop    command        table '1' export 'xdisp.txt'     endcommandend@disp_out

图4 fish提取整个模型节点x位移输出结果
Tips2:利用fish提取某个分组的节点位移时,使用gp.isgroup()函数进行分组判别,详情见《gp.group函数与gp.isgroup函数辨析》一文。
Tips3:若想一次输出节点的所有位移,则将table替换为一个m行4列的数组即可,其中第一列存放序号或者节点编号,第二至四列存放x/y/z的位移值,二维数组的写出见《二维数组的写出:以10×10数组为例》一文。

======总结======

提取单个节点的位移情况,建议用list功能,如果节点坐标正确,但输出为空时,采用fish语言输出。这是因为flac内部存在一定容差,可能导致找不到该节点。

提取多个节点位移时,建议采用fish提取。

来源:FLAC3D小技巧
FLAC3D
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-12-26
最近编辑:8月前
FLAC3D小技巧
硕士 专注FLAC3D中的小技巧分享...
获赞 31粉丝 177文章 40课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈