任意精度のスケーラブルロープシミュレーション


12

ロープオブジェクトをシミュレートしようとしています。私が理解している定式化は、スプリングで接続された粒子の配列です。これらのスプリングのk値は非常に大きいため、線は変形しますが、伸びはほとんどありません。ロープは振り子の一般化であるため、これを時間の関数として解決することは閉じた形式では不可能であると結論付けました(閉じた形式ではありません)。

それから、近似解に落ち着きます。拡張性の高いアルゴリズムが必要です。例では、明示的または暗黙的なオイラー積分を使用して粒子を移動しています。これはスケーリングしません。

これを確認するには、n個のノードを持つロープを考えてください。一端に大きな力を加えます。ロープはあまり伸びてはならないので、もう一方の端の加速はすぐに行わなければなりません。

しかし、オイラーの統合で、取得する任意のもう一方の端は、n個のステップを必要とする力を。指数関数的な減衰に気付きます。最初のノードが特定の量を加速する場合、隣接ノードの加速は小さくなります(同じ速度で加速する場合、アルゴリズムは安定しません)。その結果、隣接するノードにそのノードがさらに遅く加速します!

したがって、nノード離れている場合、加速はほとんど無視できます。これは、大幅に伸びるロープにつながります。シミュレーションの解像度を2倍にしたいだけの場合、同様の動作を得るには、突然数十または数百倍の時間ステップを踏む必要があります。

この問題を解決する簡単な方法を探しています。つまり、高解像度のシミュレーションは、多項式時間の余分な計算のみで解に収束します。マトリックスと線形代数のテクニックの完全なライブラリが利用可能です。古典力学の私の知識は非常に優れており、数値解析を知っています。


RKのようなサブステップアルゴリズムは、サブステップの数にほぼ等しい係数で(ノード/ステップで測定された)通信を高速化するようですが、実際の計算時間に関してはあまり勝てないかもしれません。本当に一般的であるためには、タイムステップでどの程度効果が伝播するかを計算する必要があります()でし、その長さにわたる歪みの発見的適用から始めてリラックスする必要があります。vsdt
dmckee ---元モデレーター子猫

@dmckee、はい、お願いします!2番目のコメントに対する答えとして、理想的には、力はどのタイムステップでも無限に効果的に伝播するべきです。
-imallett

さて、音速はおそらくかなり速いでしょう...しかし、タイムステップが10ミリ秒未満の場合、その伝播長はまだ数メートルです。
dmckee ---元モデレーター子猫

ここで受け取った提案が役立っているかどうか知りたいです。受け入れられないということは、あなたがまだフォローアップ中であるか、答えがどれもあなたが望んでいたものとまったく同じではないことを意味すると思いますが、彼らはあなたに前進の道を示しましたか?
dmckee ---元モデレーター子猫

それらは役に立ちましたが、多くのものが同時に登場しました。いくつかの答えの意図を明確にしたので、一息ついたらそれらをフォローアップできるようになります。ありがとう、
-imallett

回答:


4

まず第一に、Jed Brownが述べたように、問題が非常に硬い、または少なくとも安定していて、Leapfrog統合Verlet統合などの同様に単純なスキームのように、暗黙の時間ステップスキームを使用する必要があります。

身体的な問題については、ストレッチングにどの程度興味がありますか?粒子を硬いバネで接続する代わりに、ホロノミック制約を使用できます。たとえば、粒子のペア間の距離が一定であることを確認できます。制約は各タイムステップで解決する必要があり、正確に設定するための効率的なアルゴリズム、つまり制約の長いリンクチェーンが存在します。たとえば、このペーパーを参照してください。

好奇心から、ロープの柔軟性をモデル化するためにロープの長さに沿った角度ポテンシャルも使用していますか?


暗黙の時間ステップを使用しても(これは役立ちます)、ストレッチが発生します。実際、私はそれを取り除こうとしている限り、ストレッチに興味があります。論文の数学は基本的に私の頭の上にありますが、私はFortranコードを勉強しています。いかなる角度の制約もまだ使用していません。
imallett

@IanMallett:わかりました、それでは制約が進むべき道です。つまり、制約でストレッチはまったくありません。
ペドロ

5

あなたは持っている硬い現在の製剤を使用してシステムを。弦の動的な伸縮と振動は(おそらく)面白くないですが、明示的な時間ステップを制御します。これは、暗黙的な時間積分法の使用を示しています。減衰を使用して、暗黙的なメソッドの適応型エラー制御を台無しにする傾向がある振動を防ぐことができます。

細かいスケールの振動をステップオーバーしたいにも関わらずモデル化することが重要な場合(疲労モデリングなど)、ヘテロジニアスマルチスケール法(Engquist、Tsaiなど)またはセミマルチ時間スペクトル法。そのような方法の使用は研究レベルのトピックであり、適切であるかどうかを判断するには、問題と方法の機能を十分に理解する必要があります。エネルギーを節約したい場合、たとえば特定の振動モードを消散させたくない場合は、Verletなどのシンプレクティックインテグレーターを検討する必要があります。

必要に応じて、ゼロストレッチの制限を解決することもできます。慣性項を使用すると、モデルを角度の観点から再定式化でき、非剛性ODEシステムになります。faleichikが指摘したように、これはROPEHairer、Nørsett、およびWannerの本で検討されているテスト問題です。ロープ自体の慣性を捨てるが、たるみを許容する場合(一般的なモデルではなく、離散荷重の軽量で伸縮性の低いロープ)、問題は微分変分不等式(DVI)になり、一般に1次精度よりも良くなることはありません時間。


2
HMMは、本質的に投影ベースのモデル削減方法です。アプリケーションで特に要求されない限り、このような方法を推奨することをためらいます。スピードのために精度を犠牲にすることをいとわない必要があります。(HMMの命名法を使用して)圧縮および再構築演算子の「適切な」選択を決定することは、一部のアプリケーションでは重要なことです(燃焼はそのような例の1つです)。
ジェフオックスベリー

@GeoffOxberry Agreeed、警告を追加しました。古典的な問題は、時計の機械的振動がどのようにドリフトを引き起こすかです。適切だと思う問題の例は、負荷側からの振動モードによって加速されるキャプスタンの周りのロープのクリープ/スリップのモデリングです。すべてが燃焼するわけではありません。;
ジェドブラウン

ゼロストレッチ制限は、基本的に私がこの時点で本当に試みている唯一のものです。細かい振動はいいでしょうが、今は滑らかすぎる非弾性布が望ましいです。(OpenClothの定式化を介して)暗黙の時間ステップを試みましたが、残念ながらまだ問題が発生します。最終段落の実行方法についてリンクを詳しく説明してください。ありがとう、
-imallett

2

高速で近似的なソリューションに関心がある場合は、離散微分ジオメトリなどのデジタル効果で使用される方法が興味があるかもしれません。私は、コロンビア大学のGrinspunのグループによる2008年の論文Discrete Elastic Rodsの準静的定式化を知っていますが、この領域にはおそらくもっと最近の文献があります。


2

吊りロープの動きは、「常微分方程式の解法」の第2巻(堅い)と第1巻の第2版(1993)に登場したヘアーとワナーの愛されているテスト問題です。247ページの最後のオプションをお勧めします。方程式は導き出すのが難しく、数値解法のアルゴリズムはそれほど単純ではありません。最後に、DOPRI、RK45、またはODEXのような従来の明示的なタイムステッパーが適用され、動作が非常に良好であるため、問題はそれほど厳しくありません。


1
ROPEからの問題は、慣性効果によって支配される動力学で、伸びないロープをモデル化します。質問は伸びるロープについて尋ねているようです。
ジェッドブラウン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.