粒子と粒子の接触

Pythonで有限差分法、有限要素法などの数値解析を勉強中。



粒子同士の接触判定

円形同士の接触の場合は判定がとっても簡単で、粒子間距離がそれぞれの粒子の半径を 足した値より小さければ、接触していると判定できます。

接触していない: L > r1 + r2

接触している: L ≦ r1 + r2

  1. class DEM:
  2.  
  3. def _particles_collision(self):
  4. for i in range(self.par_count):
  5. for j in range(i+1,self.par_count):
  6. p1 = self.particles[i]
  7. p2 = self.particles[j]
  8. lx = p1.x - p2.x
  9. ly = p1.y - p2.y
  10. ld = (lx**2+ly**2)**0.5
  11. if (p1.r+p2.r)>ld: #接触
  12. cos_a = lx/ld
  13. sin_a = ly/ld
  14. self._force_par2par(p1,p2,cos_a,sin_a)
  15. else:
  16. p1.en[p2.n] = 0.0
  17. p1.es[p2.n] = 0.0
ページトップへ