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

命令流如下:
;建立模型并完成开挖计算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

;提取全部节点位移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位移输出示意
;提取单个节点(x,y,z)结果并输出到consolefish def disp_outgpnt = 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_outn = 0loop foreach gpnt gp.listn = n+1table.x(1,n) = gp.id(gpnt)table.y(1,n) = gp.disp.x(gpnt)endloopcommandtable '1' export 'xdisp.txt'endcommandend@disp_out

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