HOME > natural science Laboratory > コンピュータ・シミュレーション講座 > 仮想物理実験室

【物理シミュレーションに挑戦!】古典力学
斜面を転がる剛体球運動の計算アルゴリズム17:力学的エネルギー保存則を満たした複数剛体球の同士衝突(回転あり)

文責:遠藤 理平 (2016年10月26日) カテゴリ:仮想物理実験室(277)計算物理学(132)

本項は古典力学の様々な系の物理現象を解析的に扱うのではなく、数値計算による物理シミュレーションを実行するために必要な計算アルゴリズムを示すことを目的とします。 様々な初期条件に対する物理シミュレーションを実現するために、最も汎用的な直交座標系を用います。
斜面を転がる剛体球運動の計算アルゴリズム1:摩擦力無しの場合
斜面を転がる剛体球運動の計算アルゴリズム2:摩擦力無しの場合の例(曲面上の運動)
斜面を転がる剛体球運動の計算アルゴリズム3:静止摩擦力のみの場合
斜面を転がる剛体球運動の計算アルゴリズム4:静止摩擦力のみの場合の例(曲面上の運動)
斜面を転がる剛体球運動の計算アルゴリズム5:滑りながら転がる剛体球
斜面を転がる剛体球運動の計算アルゴリズム6:滑りながら転がる剛体球(曲面上の運動)
斜面を転がる剛体球運動の計算アルゴリズム7:空気抵抗力と転がり摩擦抵抗力
斜面を転がる剛体球運動の計算アルゴリズム8:斜面との衝突する剛体球(回転なし)
斜面を転がる剛体球運動の計算アルゴリズム9:斜面との衝突する剛体球(回転あり)
斜面を転がる剛体球運動の計算アルゴリズム10:剛体球同士の衝突(回転なし)
斜面を転がる剛体球運動の計算アルゴリズム11:複数剛体球の同時衝突(回転なし)
斜面を転がる剛体球運動の計算アルゴリズム12:接触中の剛体球に衝突した場合(回転なし)
斜面を転がる剛体球運動の計算アルゴリズム13:剛体球同士の衝突(回転あり)
斜面を転がる剛体球運動の計算アルゴリズム14:固定された剛体球に衝突した場合(回転あり)
斜面を転がる剛体球運動の計算アルゴリズム15:力学的エネルギー保存則を満たした斜面との衝突(回転あり)
斜面を転がる剛体球運動の計算アルゴリズム16:力学的エネルギー保存則を満たした剛体球同士の衝突(回転あり)
斜面を転がる剛体球運動の計算アルゴリズム17:力学的エネルギー保存則を満たした複数剛体球の同士衝突(回転あり)

3つ以上の剛体球が同時に衝突の場合、各衝突球同士の衝突力は独立ではなく衝突の仕方によって異なります。そのため、衝突力に関する連立方程式を解く必要がありました。「回転なし」に対する同時衝突時に各剛体球に加わる衝突力は「斜面を転がる剛体球運動の計算アルゴリズム16:力学的エネルギー保存則を満たした剛体球同士の衝突(回転あり)」で示したとおりです。また、回転する剛体球同士の衝突は、剛体球の重心間に働く衝突力に加え、回転に伴う衝突面に水平な力(=回転力)が働くわけですが、3つ以上の剛体球が同時衝突する場合には、この衝突力と回転力に関する連立方程式を解く必要があります。本項では衝突力と回転力がみたすべき連立方程式の導出を行います。

複数の剛体球がn番目の剛体球に同時に衝突した場合を考えます。n番目の剛体球の衝突前後の速度ベクトルと角速度ベクトルはニュートンの運動方程式から次のとおり与えられます。

\mathbf{v'}_n = \mathbf{v}_n+\frac{\Delta t}{M_n}\sum\limits_{k} (\mathbf{f}^{(c)}_{nk} + \mathbf{f}^{(d)}_{nk})
\mathbf{\omega'}_n=\mathbf{\omega}_n+\frac{a_n\Delta t}{I_n} \sum\limits_{k}(\mathbf{f}^{(d)}_{nk} \times\hat{\mathbf{n}}_{nk})

\mathbf{f}^{(c)}_{nk} はk番目の剛体球との衝突面の法線方向に働く衝突力、 \mathbf{f}^{(d)}_{nk} はk番目の剛体球との衝突面の接線方向に働く回転力です。ただし、作用・反作用の法則から \mathbf{f}^{(c)}_{kn} = -\mathbf{f}^{(c)}_{nk}\mathbf{f}^{(d)}_{kn} = -\mathbf{f}^{(d)}_{nk} です。N個が同時に衝突した場合、 \mathbf{f}^{(c)}_{nk}\mathbf{f}^{(d)}_{nk} がそれぞれ _NC_2個、合計 2\times _NC_2の未知数が存在することになります。 衝突前後の速度ベクトルは反発係数 e_r を用いて

(\mathbf v'_n-\mathbf v'_m)\cdot \hat{\mathbf{n}}_{nm} = -e_r(\mathbf v_n-\mathbf v_m)\cdot \hat{\mathbf{n}}_{nm}

の関係で表すことができるため、次の連立方程式が得られます。

-(1+e)(\mathbf{v}_n- \mathbf{v}_m)\cdot\hat{\mathbf{n}}_{nm} =  \sum\limits_{k=1}^N \left[  \frac{\hat{\mathbf{n}}_{nk} \cdot \hat{\mathbf{n}}_{nm}\Delta t}{ M_n }f^{(c)}_{nk}  -   \frac{\hat{\mathbf{n}}_{mk}\cdot \hat{\mathbf{n}}_{nm}\Delta t}{ M_m }f_{mk}^{(c)} \right]
+ \sum\limits_{k=1}^N\left[  \frac{\hat{\mathbf{t}}_{nk} \cdot \hat{\mathbf{n}}_{nm}\Delta t}{ M_n }f^{(d)}_{nk} \right.  - \left.  \frac{\hat{\mathbf{t}}_{mk}\cdot \hat{\mathbf{n}}_{nm}\Delta t}{ M_m }f_{mk}^{(d)} \right]

これで_NC_2本の関係式が得られました。

 一方の衝突前後の角速度ベクトルの関係式は、速度ベクトルのように単純ではありません。回転力が加わる方向は衝突面の接線方向ですが、衝突時の回転と重心運動の状況によって無限とおりの可能性があります。例えば、回転している2つの剛体球の衝突でも、回転運動を考慮した2つの剛体球の衝突点の相対速度が0の場合には回転力が生まれません。つまり、回転を踏まえた2つの剛体球の衝突点の相対速度が回転力と関係があることがわかります。そこで、回転を踏まえた衝突点の相対速度を次式で定義します。

\mathbf D_{nm}\equiv \left[ (\mathbf v_{n} -\mathbf v_{m} ) - \left\{(\mathbf v_{n} -\mathbf v_{m} )\cdot\hat{\mathbf{n}}_{nm} \right\} \hat{\mathbf{n}}_{nm} \right]  -\left[ (a_n\mathbf{\omega }_n+a_m\mathbf{\omega }_m) \times \hat {\mathbf n}_{nm} \right]

この表式から運動量の反発係数と同様の係数「回転反発係数e_t」を定義することにします。

\mathbf D_{nm}' \cdot \hat{\mathbf{t}}_{nm} =-e_t \mathbf D_{nm}\cdot \hat{\mathbf{t}}_{nm}

\hat{\mathbf{t}}_{nm} は回転力が働く方向単ベクトル(衝突面の接線ベクトル)

\hat{\mathbf{t}}_{nm} \equiv\mathbf D_{nm}/|\mathbf D_{nm}|

です。 e_t=1 のときに回転を踏まえた衝突点の相対速度が反転し、力学的エネルギー保存則を満たします。この関係式から次の連立方程式が得られます。

-(1+e_t )\mathbf D_{nm}\cdot \hat{\mathbf{t}}_{nm} = \sum\limits_{k} \left[  \frac{\hat{\mathbf{n}}_{nk}\cdot \hat{\mathbf{t}}_{nm}\Delta t}{ M_n }f^{(c)}_{nk} -  \frac{\hat{\mathbf{n}}_{mk}\cdot \hat{\mathbf{t}}_{nm}\Delta t}{ M_m }f^{(c)}_{mk} \right]
+\sum\limits_{k} \left[\left(\frac{\hat{\mathbf{t}}_{nk} \cdot\hat{\mathbf{t}}_{nm}}{M_n}+\frac{a_n^2}{I_n} \right. \left. \left\{(\hat{\mathbf{n}}_{nk}\times\hat{\mathbf{t}}_{nk})\times\hat{\mathbf{n}}_{nm}\right\}   \right)\Delta t f^{(d)}_{nk}    +\left(\frac{\hat{\mathbf{t}}_{mk} \cdot\hat{\mathbf{t}}_{nm}}{M_m}+\frac{a_m^2}{I_m} \right. \left.\left. \left\{(\hat{\mathbf{n}}_{mk}\times\hat{\mathbf{t}}_{mk})\times\hat{\mathbf{n}}_{nm}\right\}  \right)\Delta t f^{(d)}_{mk} \right]

これでもう_NC_2本の関係式が得られました。以上で衝突力と回転力についての連立方程式が得られました。なお、同時衝突時の連立方程式の解法などは「HTML5による物理シミュレーション 【剛体編】」を参照下さい。

複数剛体球の同時衝突シミュレーション

次のグラフィックスは回転を考慮した複数剛体球の同時衝突シミュレーションです。今回から、本来保存すべきエネルギー保存則からのズレから計算誤差を見積もって表示します。 今回のシミュレーション計算誤差はデフォルトで「0.000000000000032%」です。



▲このページのトップNPO法人 natural science トップ

関連記事

仮想物理実験室







計算物理学







▲このページのトップNPO法人 natural science トップ