座標の更新
これまでの計算で力を求めていますので、それに基づき粒子の位置を更新します。
位置を更新するには、
力/質量=加速度
加速度×微小時間=速度
速度×微小時間=移動距離
現在の位置+移動距離=更新位置
の流れです。
- def update_coord(self):
- pe = self.particles
- for i in range(self.par_count):
- #位置更新(オイラー差分)
- ax = pe[i].fx/pe[i].m
- ay = pe[i].fy/pe[i].m
- aa = pe[i].fm/pe[i].Ir
- pe[i].vx += ax*self.dt
- pe[i].vy += ay*self.dt
- pe[i].va += aa*self.dt
- pe[i].dx = pe[i].vx*self.dt
- pe[i].dy = pe[i].vy*self.dt
- pe[i].da = pe[i].va*self.dt
- pe[i].x += pe[i].dx
- pe[i].y += pe[i].dy
- pe[i].a += pe[i].da
以上で、DEMの主な処理は完了です。