1

SPH を実行する場合、Kelagar の論文では、圧力によって引き起こされる粒子間の力に特定のカーネルを使用することを推奨しています。半径がカーネル半径内にある場合、推奨されるカーネルは次のとおりです。

(15/(pi*h^9)) * (h - r)^3

ここで、h はカーネル半径、r は関数の値の計算に関心のある半径です。

この論文では、この関数の勾配は次のようになると述べています。

(-45/(pi*h^9))*((r_vec)/r)*(h-r)^2

ここで、r_vec は、カーネルの中心から関心のあるポイントまでのベクトルです。r_vec の長さが正の方向から 0 になると、この論文は、この勾配が近づくと述べています。

(-45/(pi*h^6))

ただし、これはベクトルではなくスカラーです。関心のある 2 点間に反発があるためには、反発する方向が必要です。

2 つの粒子が隣り合っている場合、どの方向を使用すればよいでしょうか?

4

1 に答える 1

0

最初の式は潜在的なものだと思います。負の勾配 (r に関する導関数) が力になります。このグラデーションはベクトルであり、常に中心に向かう方向または中心から離れる方向を指します。これは、2 番目の式では正しいように見えます。

r_vec は、あなたの言うとおり、原点から距離 r 離れた点を指すベクトルです。(r_vec/r) は方向を指定する単位ベクトルです。これは、原点自体を除くすべてのポイントで機能します。ここでは、未定義であると宣言されるか、ゼロであると宣言されます。ゼロは、すべての「近くの」ポイントの (r_vec/r) の平均値です。これはゼロフォースを意味します。

通常、ペアワイズ フォースを使用するパーティクル シミュレーションでは、1 つのパーティクル自体にかかるフォースと、正確に同じ位置にある 2 つのパーティクルにかかるフォースを無視します。2 つの粒子が非常に接近していて、1/r、1/(r^2)、または同様の法則がある場合はどうでしょうか? 誰もゼロによる除算の誤りを望んでいません。通常、その半径の境界で与えられたポテンシャル式に一致するポテンシャルが一定である小さな半径があります。パーティクル同士が近すぎると、シミュレーションがクラッシュしないように、フォースがゼロになります。力が境界のすぐ外側で猛烈に強いときに、その境界のすぐ内側で力が突然止まるというのは、非物理的に思えるかもしれません。しかし、私たちはそのような状況を避けるよう努めています。そのような発生回数を数えてください。多すぎる場合は、シミュレーションがうまくいきません。たぶん、より小さな時間ステップが必要です。

幸いなことに、1/r タイプの力はありませんが、それでも、方向が大きく揺れる厄介な r_vec/r があります。特定の小さな半径より下で力をゼロにする同じ手法が役立ちます。

しかし、その 3 番目の表現が気になります。r=0 の力だとすると、2 番目の式の力の法則から始めて、3 番目の式がどのように生じるのかわかりません。それが力であると想定されている場合、ベクトルを期待しながらスカラーに見えるという問題は、力ベクトルの半径方向成分であることを理解することで解決できます。おなじみの単位振幅ベクトルである (r_vec/r) を式に掛けるだけです。OTOH、方向性が決まっていないのでナンセンスです。

全体的な解決策の改善: exp(-r^2) や 1/(1+r^2) のように、滑らかに横ばいになり、r=0 で平らになる新しいポテンシャル関数から始めます。与えられたポテンシャルは急激にピークに達します。いくつかの小さなゾーン内で力ゼロを宣言する代わりに、力は自然にr = 0でゼロになります。いくつかの小さな半径の外側にある与えられたポテンシャルに近似する原点フラットポテンシャルを見つけます。

于 2013-04-24T08:19:31.883 に答える