自動ステップサイズ選択を使用したコードで、時間ステップサイズが十分に小さいことを示す


8

私は最近、非常に固い一時的な問題を解決する多数のレガシーコードを継承しました。計算されたソリューションの質的性質が減少しても変化しないように、空間的および時間的ステップサイズが十分に小さいことを示したいと思います。つまり、定性的には「収束」していることを示したいと思います。空間メッシュサイズを明示的に設定できるため、その部分は簡単です。ただし、コードでは自動タイムステップサイズ制御を使用しているため、タイムステップサイズを直接設定することはできません。

アルゴリズムは、最後のタイムステップ中に許容誤差に到達するために必要なヤコビの反復回数に基づいて、2つの境界間のタイムステップを変更します。ヤコビアン反復法を使用しているという事実は、それが何らかの暗黙のスキームであることをかなり確信させますが、私は絶対的に確信することはできません。現在のタイムステップで発生しているエラーが考慮されていないため、場合によっては反復制限に達します(数千のタイムステップの間に数​​十回、ほとんどの場合、最も動的な部分で発生します)。シミュレーション)。現在実行中の実行タイムステップの境界を2桁半の間隔(から)で設定しています。 n101351011

実行では、時間ステップの境界、現在の時間ステップを選択するために監視する過去の時間ステップの数、時間ステップの最大変化(比率)、ヤコビアン反復の目標数、最大反復回数、およびエラー限界。誰かが私をタイムステップの独立性を分析するための正しい道に導いてくれるか、少なくとも使用されているアルゴリズムを理解することができればいいのですが。


コードを読み取るだけよりも、時間ステップアルゴリズムをリバースエンジニアリングする方が簡単だと思いますか?
David Ketcheson、2012

コードは過去20年間に書かれた約5万行のFortranなので、メインループの詳細を探すのは簡単ではありません。これは暗黙の方法であり、私の目的にとって十分な情報であると思います。時間ステップが十分に小さいことを確認するために、個別の実行で何を変更する必要があるかについて、より関心があります。
Godric Seer 2012

私は何が求められているのかを明確にしようとしました。誤解した場合は修正してください。ローカルエラーは常にタイムステップに依存するため、ソリューションは文字通り「タイムステップに依存しない」ことはできません。エラーがあなたの目的のために十分に小さいことを期待することができるだけです。
David Ketcheson、2012

回答:


5

自動エラー推定とステップサイズ制御の目的は、十分に小さいステップサイズを手動で決定する問題からユーザーを解放することです。したがって、あなたの質問は、「誰かがこのオートマチックトランスミッション車をくれました。自分が使用しているギアを確認するにはどうすればよいですか?」ポイントはあなたが知る必要はないということです。もちろん、送信に問題がある場合は、分解して修正する必要があるかもしれませんが、それははるかに大きな問題です。

あなたの場合、通常、適切なアプローチは、許容可能なエラーの種類を決定し、自動ステップサイズ制御を介してそれを課すことです。この意味でのエラー制御は通常ローカルエラー制御のみであるため、不完全です。グローバルエラーを直接制御することはありません。

確信が持てない場合に簡単にできることの1つは、ますます厳しくなる(つまり、小さい)エラー許容値のシーケンスでシミュレーションを実行することです。ソリューションが許容範囲の減少に対して(メトリックが何であれ)鈍感になったら、停止できます。

補遺:最大反復制限に達している問題(これにより、指定された許容誤差を超えるローカルエラーが発生します)に関して、次のことをお勧めします。

どうやらコードは、それが最大反復回数を超えた場合、正しいことはステップを受け入れることであると考えています。それは間違っていることだと思います。より良いアプローチは、ステップを拒否し、ステップサイズを小さくしてそのステップを再度開始することです。もちろん、ステップが最小ステップサイズよりも小さくなる危険があります。その場合、正しいのはシミュレーションを中止することです。しかし、間違ったソリューションがソリューションがないよりも優れていると確信している場合は、ステップを受け入れ、両方の条件が満たされている場合に続行できます。最小ステップサイズに達し反復の最大数を超えています。

適切に設計されたコードでは、これらのタイプの変更を行うことは簡単ですが、任意のコードでは、それが恣意的に難しい場合があります。


最後の段落は、実用的な観点から重要なものです。指定された許容誤差に対する関連するソリューションの特性のプロットが十分に規則的に見えると、漸近レジームに到達します。
アーノルドノイマイヤー2012

それは朗報ですが、最大反復回数に達した場合に、これらのいくつかの状況を処理する方法はまだわかりません。私はそれが最大のタイムステップを喜んで受け取り、6回の反復でローカルエラーに達した後、次のタイムステップは100回の反復を取り、ローカルエラーのみに達したことを確認しました。この後のタイムステップでは、ステップサイズが小さくなり、エラー範囲に細かく到達しますが、ソリューション全体に1つの大きなエラーが伝播しています。107102
Godric Seer 2012

補遺に気づきました。コードが実際に行うことの説明は、ログファイルから見るものと一致します。提案した変更があまり頭痛の種なしで可能であることを願っています。
Godric Seer 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.