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

[建模专区] 如何统计2D中颗粒的接触数目(连通性计算)

[复制链接]
发表于 2011-12-11 23:04:15 | 显示全部楼层 |阅读模式 来自 浙江杭州
在二维中随机生产的密排两种不等径球之后,想统计一下相同颗粒之间相互接触的情况来表示它的连通情况。该如何实现?
发表于 2011-12-12 09:55:27 | 显示全部楼层 来自 江苏南京
Simdroid开发平台
反映颗粒的接触情况可以通过配位数确定。如果想确切的某一或者某些特定的球的接触情况,编个小程序便是。
回复 不支持

使用道具 举报

 楼主| 发表于 2011-12-26 22:05:32 | 显示全部楼层 来自 浙江杭州
ccb137731 发表于 2011-12-12 09:55
反映颗粒的接触情况可以通过配位数确定。如果想确切的某一或者某些特定的球的接触情况,编个小程序便是。 ...

能不能给个例子?小程序段。谢谢
回复 不支持

使用道具 举报

发表于 2011-12-27 22:19:43 | 显示全部楼层 来自 江苏南京
soupset 发表于 2011-12-26 22:05
能不能给个例子?小程序段。谢谢

def md_cbond     ;通过追踪接触的个数来反映模型的密实度
;
; ----- Return (1) iff [cp] has an intact contact-bond present.
;       Be careful to eliminate ball-wall contacts.
;
; INPUT: cp
;
  
  sum=0
  bp  = ball_head
loop while bp # null
   
   cp = b_clist(bp)
loop while cp # null
   
  
    if pointer_type(c_ball2(cp)) = 100 then  ; it is a ball-ball contact,
                                             ; walls are always c_ball2(cp)
      sum=sum+1
    end_if
  
  if c_ball1(cp) = bp then  ; get next contact of [bp]
     cp = c_b1clist(cp)
  else
        cp = c_b2clist(cp)
  end_if
end_loop
   
bp = b_next(bp)
end_loop
sum=sum
;ii=out(string(sum))

end
回复 不支持

使用道具 举报

发表于 2012-1-4 10:26:23 | 显示全部楼层 来自 陕西西安
ccb137731 发表于 2011-12-27 22:19
def md_cbond     ;通过追踪接触的个数来反映模型的密实度
;
; ----- Return (1) iff [cp] has an intact ...

您知道连通性怎么算吗?就是我想知道含有两种球的体系里面,将其中一种较大球删除,留下较小球后,想计算其中相连接的球的数目,拜托你了,我想了很久都做不出来
回复 不支持

使用道具 举报

发表于 2012-1-4 10:49:01 | 显示全部楼层 来自 陕西西安
您好。不知道您的连通性问题是否已经解决了,我们也要求求连通性,还请帮忙啊
回复 不支持

使用道具 举报

发表于 2012-1-4 12:19:45 | 显示全部楼层 来自 江苏南京
oliviahan 发表于 2012-1-4 10:26
您知道连通性怎么算吗?就是我想知道含有两种球的体系里面,将其中一种较大球删除,留下较小球后,想计算 ...

不太明白楼主的意思。但是大球删除后,就是只剩小球,判断小球的连接数目,用上面的程序不就行了。
回复 不支持

使用道具 举报

发表于 2012-1-5 09:15:07 | 显示全部楼层 来自 陕西西安
ccb137731 发表于 2012-1-4 12:19
不太明白楼主的意思。但是大球删除后,就是只剩小球,判断小球的连接数目,用上面的程序不就行了。 ...

您好,我试了一下您的这段小程序,不知道为什么不行?还有相互连接小球的数目怎么让它在在文档中显现出来,麻烦您了
回复 不支持

使用道具 举报

发表于 2012-1-5 09:16:54 | 显示全部楼层 来自 陕西西安
ccb137731 发表于 2012-1-4 12:19
不太明白楼主的意思。但是大球删除后,就是只剩小球,判断小球的连接数目,用上面的程序不就行了。 ...

还有您的这段程序意思我部是特别明白,您能给我解释一下吗?拜托了
回复 不支持

使用道具 举报

发表于 2012-1-6 11:05:14 | 显示全部楼层 来自 陕西西安
ccb137731 发表于 2011-12-27 22:19
def md_cbond     ;通过追踪接触的个数来反映模型的密实度
;
; ----- Return (1) iff [cp] has an intact ...

您的程序我现在大部分懂了,但就是不知道该怎样显现出相互接触的球,还有如何以文档的形式得出sum,拜托了,帅哥
回复 不支持

使用道具 举报

发表于 2012-1-6 22:30:16 | 显示全部楼层 来自 江苏南京
oliviahan 发表于 2012-1-6 11:05
您的程序我现在大部分懂了,但就是不知道该怎样显现出相互接触的球,还有如何以文档的形式得出sum,拜托 ...

在判断语句中,如果相互接触的球,你把它的id记录下来,这样以后你想做任何处理就方便多了。另外可以将计算的结果保存到txt中,manual中有。例如:hist id id0 write a.txt之类的。
回复 不支持

使用道具 举报

发表于 2012-1-7 09:18:20 | 显示全部楼层 来自 陕西西安
ccb137731 发表于 2012-1-6 22:30
在判断语句中,如果相互接触的球,你把它的id记录下来,这样以后你想做任何处理就方便多了。另外可以将计 ...

谢谢您的答复,我按照你的方法去做却得不到结果,我用的是print sum,但最后出来的结果总是sum=0,问了很多高手都说是  if pointer_type(c_ball2(cp)) = 100 then  ; it is a ball-ball contact这句没有执行,他们也不知道这个条件语句是什么意思?帅锅能帮忙解释一下吗?,拜托了
回复 不支持

使用道具 举报

发表于 2012-1-8 08:09:41 | 显示全部楼层 来自 江苏南京
oliviahan 发表于 2012-1-7 09:18
谢谢您的答复,我按照你的方法去做却得不到结果,我用的是print sum,但最后出来的结果总是sum=0,问了很 ...

建议你看看manual中fish帮助文件2-53和2-38,上面有详细的介绍。
回复 不支持

使用道具 举报

 楼主| 发表于 2012-2-25 15:15:38 | 显示全部楼层 来自 浙江杭州
ccb137731 发表于 2011-12-27 22:19
def md_cbond     ;通过追踪接触的个数来反映模型的密实度
;
; ----- Return (1) iff [cp] has an intact ...

你好,我尝试过了,好像不对符合实际情况。我总共生成了515个球,204个大球,311个小球,想计算多少个大球是相互接触的,或者说大球有多少个聚集的片区,两个以上接触的或者没有小球隔开的都都算一个片区的。结果输出的却是2724,明显不符合,我自己数了一下大概是六十多个片区。求指教,谢谢。
回复 不支持

使用道具 举报

发表于 2012-2-26 16:47:11 | 显示全部楼层 来自 江苏南京
soupset 发表于 2012-2-25 15:15
你好,我尝试过了,好像不对符合实际情况。我总共生成了515个球,204个大球,311个小球,想计算多少个大 ...

不太明白你的意思,不过这个程序很好懂呀,先给定一个球的首地址,如果它和别的球接触则接触数加1,然后遍历整个球,求得的sum应该是球于球接触总数的2倍。
回复 不支持

使用道具 举报

 楼主| 发表于 2012-2-27 08:56:05 | 显示全部楼层 来自 浙江杭州
谢谢,明白你的意思。我可能没表达清楚,我想要的是连通支,就是若干个同样性质在一起接触的球的集团算一个,比如:一共有五个球都是相互接触的,这时候算一个而不是五个或者十个。
如图,所有接触的黄色球算是一个。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2012-2-27 08:57:40 | 显示全部楼层 来自 浙江杭州
soupset 发表于 2012-2-27 08:56
谢谢,明白你的意思。我可能没表达清楚,我想要的是连通支,就是若干个同样性质在一起接触的球的集团算一个 ...

而蓝色的球连通集团是七个
回复 不支持

使用道具 举报

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

本版积分规则

Simapps系列直播

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

GMT+8, 2024-9-29 13:23 , Processed in 0.045429 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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