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

【物理シミュレーションに挑戦!】古典力学
斜面を転がる剛体球運動の計算アルゴリズム18:拘束された剛体球に衝突する剛体球(回転あり)

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

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

万有引力やクーロン力など、ポテンシャルエネルギーから導出される力はそれぞれが独立しています。そのため、物体に加わるこれらの力の合力は単純に加算することで得られます。一方、剛体同士の衝突力や剛体棒による結合力などの力はそれぞれ独立ではなく、一般的に条件式に対する連立方程式を解く必要があります。これまで、複数同時衝突時や複数の結合力を計算する際の衝突力や結合力をそれぞれ別々に導出しました。しかしながら、結合された剛体球に別の剛体球が衝突する場合には対応することができていませんでした。本項では、「斜面を転がる剛体球運動の計算アルゴリズム17:力学的エネルギー保存則を満たした複数剛体球の同士衝突(回転あり)」で示した剛体棒で結合された剛体球に運動する剛体球が衝突する場合に働く衝突力を考えます。

剛体棒で結合された剛体球が存在する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{f}^{(S)}_{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}^{(S)}_{nk}) はk番目の剛体球の拘束状態にある場合のみ存在し、

\mathbf{f}^{(S)}_{nk} = f^{(S)}_{nk}\, \hat{\mathbf{l}}_{nk}

と定義します。ただし、方向ベクトルは

\hat{\mathbf{l}}_{nk} \equiv  (\mathbf{R}_n-\mathbf{R}_k)/| \mathbf{R}_n-\mathbf{R}_k|

です。なお、結合力だけでなく衝突力や回転力も衝突しない場合には0となります。この拘束力の登場により未知の力の数が_NC_2個増えることになるので、拘束力が満たすべき方程式を付け加えて、複数同時衝突の場合と同様、最終的に連立方程式を解くとい流れです。

拘束力は「様々な力による物理シミュレーション6:剛体棒で結合された結合力」で解説したとおり、拘束条件から導かれます。2つの剛体球間の距離が一定という条件は、時間に依らず

(\mathbf{R}_n-\mathbf{R}_m)\cdot (\mathbf{R}_n-\mathbf{R}_m)=L_{nm}^2

が満たされていることを意味します。時間に依存しないことからこの両辺を時刻tで微分した

(\mathbf{v}_n-\mathbf{v}_m)\cdot (\mathbf{R}_n-\mathbf{R}_m)=0

は速度に関する拘束条件です。この拘束条件を拘束力の方向ベクトルを用いて書き直した

(\mathbf{v}'_n-\mathbf{v}'_m)\cdot \hat{\mathbf{l}}_{nm} = (\mathbf{v}_n-\mathbf{v}_m)\cdot \hat{\mathbf{l}}_{nm}=0

_NC_2個分の新たな条件式として利用できそうです。後は、「斜面を転がる剛体球運動の計算アルゴリズム17:力学的エネルギー保存則を満たした複数剛体球の同士衝突(回転あり)」と全く同じ手続きで連立方程式を導出して数値的に計算することで各力を計算することができます。

拘束された剛体球に衝突する剛体球

次のグラフィックスは、剛体棒で結合された剛体球に外側から剛体球が衝突したシミュレーションです。剛体棒で結合された剛体球は、距離は拘束されますが回転に関しては自由です。 今回のシミュレーション計算誤差はデフォルトで「0.000000063%」です。拘束力が入ると計算誤差が飛躍的に大きくなります(6桁も悪化)。

拘束された剛体球同士の衝突(重力あり)

次のグラフィックスは、重力場中に置かれた剛体棒で結合された剛体球同士の衝突のシミュレーションです。 今回のシミュレーションの100秒後の計算誤差はデフォルトで「0.086%」です。 拘束力が重力によって絶えず入ると計算誤差が飛躍的に大きくなります(さらに6桁も悪化)。



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

関連記事

仮想物理実験室







計算物理学







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