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

[二次开发] 请朋友,前辈帮忙看看我自己编写的一段程序,感激万分!

[复制链接]
发表于 2012-10-24 21:21:02 | 显示全部楼层 |阅读模式 来自 山东
/PREP7  
CYL4,0,0,20
antype,static   
et,1,plane42
r,,0.001
mp,ex,1,2.1E11  
mp,nuxy,1,0.3   
mp,dens,1,999   
esize,2
type,1  
amesh,all
lopp=0
*dim,a,array,443,1
/solu
nropt,full,,on  
ekill,384     
ekill,321  
ekill,380   
ekill,320  
   
*do,j,1,443,1
/solu
*get,judge,elem,j,attr,live          获取生死单元的value,活着的单元其值应为1,死的单元显示的是-1
*set,a(j,1),judge                     将单元死活的信息存入数组a(443,1)中
*if,judge,eq,1,then                   判断judge是否等于1,如果等于1,则进行下一步
esel,s,elem,,j                          选择j单元
nsle,s                                    选择j单元的四个节点
esln,s                                     选择与节点相连接的单元
esel,r,live                                在以上单元的基础上再剔选出活单元
num_1=elmiqr(0,13)                 确定所选择活单元的个数
*if,num_1,eq,2,then                  如果说num_1等于2,则
ekill,j                                       杀死j单元
esel,s,live                                 选择或者的单元
eplot                                        显示单元
lopp=lopp+1           
*endif
*endif
*enddo                                    结束循环

       这段程序意在删除采用生死单元后在网格边界出现的畸变边界,如下图所示的边界,


       在缺口处,382单元周围除322单元外无其他单元与其相邻,在加载惯性力作用的时候会导致其上的节点位移过大,
而无法继续进行计算。故我编制了*do,i,1,443,1......*enddo这段程序来删除这样的单元。
      经分析发现像382这样的单元存在这样的一个特征,其周围只有1个活单元与其相连接,包括其本身也就只有2个单元。
以此为特征作为剔选的标准。
       现在问题来了,在运行过程中,并未达到我想要得效果,应该删除的382单元未能删除,经过再三分析,我未能找出程序中的问题。
并且数组a中出现了大量的0值,在之前我就只杀死了4个单元,为什么会有那么多0值的出现,请大家帮忙看下解答解答,感激万分。
发表于 2012-10-24 23:31:53 | 显示全部楼层 来自 江苏徐州
Simdroid开发平台
图看不见
回复 不支持

使用道具 举报

 楼主| 发表于 2012-10-25 09:11:21 | 显示全部楼层 来自 云南昆明
怎么没人回复啊,自己顶一个
回复 不支持

使用道具 举报

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

本版积分规则

Simapps系列直播

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

GMT+8, 2024-9-23 05:15 , Processed in 0.025484 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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