首页/文章/ 详情

gp.group函数与gp.isgroup函数辨析

11月前浏览836
在FLAC3D中遍历模型节点时,有时仅需要对特定组的节点进行操作,因此需要根据分组判断并筛选节点。gp.group( )函数与gp.isgroup( )函数均可用于判定节点是否位于某个分组,但两者的判定范围存在差异,因此需要辨析两者用法上的异同。

======用法辨析======

使用gp.group进行判定时,需要对节点进行单独的分组,否则函数将遍历失败;而使用gp.isgroup进行判定时一般不需要对节点进行单独分组,只需指定某个face或者某个zone的分组,函数即可遍历所给分组中的节点。具体用法见案例。

======gp.group测试案例======

建立一个6*6*6的立方体,共计216个单元,343个节点。Z方向0~3米分组为a,3~6m分组为b。拟遍历b分组中的所有节点(Z方向3~6m范围内的所有节点)并计数,命令流如下:















model newzone create brick size 6 6 6 group 'a'zone group 'b' range position-z 3 6zone gridpoint group 'test' range position-z 3 6;对节点单独分组fish def test1    count = 0    loop foreach gpnt gp.list        if gp.group(gpnt) = 'test' then             count = count + 1        endif    endloop    io.out('The value of count is: ' + string(count) + '.')end@test1

运行@test1函数时,首先遍历整个模型节点,然后判定当前节点是否位于节点分组test中,若是,则count的值在原来的基础上加一,以达到计数的效果。运行后的输出为:The value of count is: 196. 显然,上述函数成功地遍历了b组中的所有节点。将第四行命令去掉,则输出为:The value of count is: 0. 可以看出,上述函数遍历失败,这是因为此时模型中并没有一个叫做test的节点分组。

图(1-a)@test1函数运行输出(有节点分组)

图(1-b)@test1函数运行输出(无节点分组)

======gp.isgroup测试案例======

模型以及遍历的目的同上,命令流如下:














model newzone create brick size 6 6 6 group 'a'zone group 'b' range position-z 3 6fish def test2    count = 0    loop foreach gpnt gp.list        if gp.isgroup(gpnt,'b') = 1 then             count = count + 1        endif    endloop    io.out('The value of count is: ' + string(count) + '.')end@test2
命令输出为:The value of count is: 196. 可以看出,使用gp.isgroup函数时,无需对节点单独分组也可以进行判定。

图(2)@test2函数运行输出

值得指出的是,若需要遍历的节点范围分布于多个zone分组或者face分组时,仍需要对节点进行单独分组,例如对上述模型Z方向2~4m范围内节点计数,则需要对该范围节点单独分组。若需要同时遍历多个分组内的所有节点,只需要在if语句中添加并列条件即可,如下所示:













model newzone create brick size 6 6 6 group 'a'zone group 'b' range position-z 3 6fish def test3    count = 0    loop foreach gpnt gp.list        if gp.isgroup(gpnt,'a') | gp.isgroup(gpnt,'b') then            count = count + 1        endif    endloopio.out('The value of count is: ' + string(count) + '.')end@test3
运行后输出为:The value of count is: 343.

图(3)@test3函数运行输出

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

使用gp.group函数时,函数是判断当前遍历节点是否位于用户提供的节点分组中;gp.isgroup函数则是判断当前遍历节点是否位于用户提供的分组中,此时分组可为zone/face/gridpoint分组。
gp.isgroup函数判定范围优于gp.group函数,在使用时一般不需要对节点进行单独分组,应优先选用。

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