找回密码
 注册
Simdroid-非首页
查看: 96|回复: 11

[单元使用] 如何判断当前单元是处于边界上

[复制链接]
发表于 2007-7-17 21:57:32 | 显示全部楼层 |阅读模式 来自 广东深圳
弱弱的问一下

建立一个模型,比如一个球体,划分网格之后,然后随意选择单元,如何判断所选择的单元处于球面上

我该用哪个指令,或者说我该怎么做


非常感谢
 楼主| 发表于 2007-7-18 13:21:52 | 显示全部楼层 来自 广东深圳

谁帮我看看啊

Simdroid开发平台
谢谢各位了
回复 不支持

使用道具 举报

发表于 2007-7-18 16:21:53 | 显示全部楼层 来自 北京
asel,s,....!select the area
esla,s,1!select the elements associated with the selected areas.
回复 不支持

使用道具 举报

 楼主| 发表于 2007-7-18 16:33:39 | 显示全部楼层 来自 广东深圳
谢谢,我先研究一下
回复 不支持

使用道具 举报

 楼主| 发表于 2007-7-18 16:37:38 | 显示全部楼层 来自 广东深圳
asel,s,....!select the area
esla,s,1!select the elements associated with the selected areas.

这样的语句在表面没有破坏之前是可以的,可是如果表面被破坏了,我的意思是边界面或者边界线变化了,该怎么做呢

我设想的是,通过判断每个单元自己的情况,即有多少个单元与需要判断的单元连接,比如,四面体单元,要是少与4个单元和当前单元连接,则就是边界上的单元了,不知道您看明白我的意思没

谢谢
回复 不支持

使用道具 举报

 楼主| 发表于 2007-7-18 19:31:34 | 显示全部楼层 来自 广东深圳
谁能帮我解答一下啊
回复 不支持

使用道具 举报

发表于 2007-7-18 19:33:23 | 显示全部楼层 来自 广东深圳
也想知道。。关注中。。。。。
回复 不支持

使用道具 举报

发表于 2007-7-18 23:46:30 | 显示全部楼层 来自 西安交通大学
不知道单元是如何划分的

比如假定表面的单元的都是六面体单元 如果有一个面在表面 这个单元就仍为是表面单元


*get,enum,elem,0,num,max
*do,j,1,8
i%j%=nelem(enum,j)
*enddo

alls
nsel,s,ext
*dim,n_mask,array,ndinqr(0,14)
*vget,n_mask,node,1,nsel

natsurf=0
*do,j,1,8
natsurf=n_mask(i%j%)+natsurf
*enddo

*do,j,1,8
i%j%=
*enddo

*del,n_mask,,nopr

可以看natsurf值 如果大于等于4 那么这个单元就在表面

如果其他的一些情况 比如考虑有一个节点在外头就仍为单元在外头也类似 稍微改一下就ok
回复 不支持

使用道具 举报

 楼主| 发表于 2007-7-19 20:19:17 | 显示全部楼层 来自 广东深圳
楼上的,非常感谢,我为这个问题郁闷好几天了
回复 不支持

使用道具 举报

 楼主| 发表于 2007-7-19 22:44:00 | 显示全部楼层 来自 广东深圳

to luckiier

我试了你贴出来的程序,好使,但是有个问题,当原始边界改变,出现新的边界的时候好象就不行了.

比如一个4 x 4 的正方形网格,  如果我使用ekill去掉右上角的3个单元,则下面第二行右上角就会形成新的边界,这个时候下面第二行的新的边界就判断不出来了

各位,谁帮我看看,

我把上面的程序修改了一下

alls
nsel,s,ext
*dim,n_mask,array,ndinqr(0,14)
*vget,n_mask,node,1,nsel

改成了
esel,s,live
nsel,s,ext
*dim,n_mask,array,ndinqr(0,14)
*vget,n_mask,node,1,nsel
还是不行,各位都帮小弟研究一下吧

非常感谢
回复 不支持

使用道具 举报

发表于 2007-7-20 11:03:32 | 显示全部楼层 来自 北京
哦 不好意思 中间有一点错了 当时只是觉得这个思路 没有测试 改正后 应该是
*get,enum,elem,0,num,max
*do,j,1,8
i%j%=nelem(enum,j)
*enddo

alls
nsel,s,ext
*dim,n_mask,array,ndinqr(0,14)
*vget,n_mask,node,1,nsel

natsurf=0
*do,j,1,8
*if,n_mask(i%j%),gt,0,then
natsurf=n_mask(i%j%)+natsurf
*endif
*enddo

*do,j,1,8
i%j%=
*enddo




测试如下

/prep7
et,1,45
block,0,1,0,1,0,1
vmesh,all
ngen,2,100,all,
egen,2,100,all
vclear,all
vdel,all             !! 3x3x3矩阵

esel,s,,,50   !! 边界上
.....上面程序
结果 :natsurf=4  得到4 单元在边界上 (>=4在边界上)

alls
esel,s,,,41 !!中间的那个
.....上面程序
结果: natsurf=0  单元在里面

alls
edel,50     !! 删除边界上一个  
esel,s,,,41 !! 中间的单元露出来
.....上面程序
结果:natsurf=4  单元在边界上

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2007-7-20 19:36:28 | 显示全部楼层 来自 广东深圳

好人啦!!!!!!

非常感谢,我是学控制的,最近在研究机械结构和控制性能的关系,第一次接触ANSYS,头疼的要死.
非常感谢您的帮助.
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-1 16:24 , Processed in 0.064852 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表