rotheの方法と線の方法によるPDEの離散化(モジュラー実装)


8

熱方程式は、FV(またはFEM)を使用して空間で離散化され、半離散方程式が得られます(ODEのシステム)。方法と呼ばれるこのアプローチでは、コードを重複させることなく、一時的な離散化から別の離散化に簡単に切り替えることができます。特に、ODEのタイムインテグレーターを簡単に再利用できます。これは、空間離散化をFVからFEに変更することを決定した場合でも、半離散方程式を取得し、時間積分器が機能するため、非常に便利です。

現在、私は同じ問題に対してrothe方法を実装しようとしています。ただし、時間内での離散化では、まず、使用したいすべての時間的離散化スキームの空間的離散化を書き換える必要があります。これにより、以前使用していたタイムインテグレーターを再利用する必要がなくなり、線の方法またはRotheの方法の両方を使用してPDEを離散化できるモジュラーソフトウェアの作成が非常に複雑になります。

コードを複製せずに両方のアプローチを実装する方法はありますか?

編集:

対流が支配する問題では、FEの離散化には時間と空間の両方で安定化が必要であり、Rotheの方法が「最良の」選択になります。ただし、これはFV / DGメソッドには当てはまりません。

線の方法では、PDEはまず空間で、次に時間で離散化されます。Rotheの方法では、PDEは最初に時間で離散化され、次に空間で離散化されます。3番目の可能性は、空間と時間の両方を同時に離散化することです(時空間離散化とも呼ばれます)。線の方法とRotheの方法についての議論はここにあります。詳細については、DoneaとHuertaによる「フロー問題の有限要素法」という本が参考になります。


@gnzlbg:おそらく、議論しているメソッドへの参照を1つまたは2つ含めることができますか?これは、私たちのコミュニティが得意とする傾向のある種類の質問であるため、回答がないことは、あなたが何を求めているのか正確にはわからないことを示しています。
Aron Ahmadia 2012

@AronAhmadia完了。
gnzlbg

2
追加情報をありがとう。答えはありませんが、リンク先のページの行の方法に対する反対意見は誤解されていると思います。それらは実際には、動的に適応する空間グリッドと組み合わせてマルチステップ時間離散化を使用することへの反対です。これらの選択は、線の方法とRotheの方法のどちらを使用するかに依存しません。ラインの方法では、ルンゲクッタ時間離散化を使用して、高次のワンステップスキームを取得できます。
David Ketcheson、2012

@DavidKetchesonはい、私は議論で与えられた議論にも完全に同意しません。それでも、Rotheの方法は、対流が支配する問題のFEM離散化には本当に優れています。安定化パラメーターは、使用するタイムステップ、空間、および時間の離散化の両方に依存します。線の方法を使用すると、安定化パラメーターは控えめに言ってもトリッキーになります。ただし、各方法の長所と短所はそれ自体が全体のトピックであり、時空の定式化も考慮する必要があります。
gnzlbg

@Wolfgangが、deal.IIのドキュメントの一部としてリンクしたMethod of Rotheの説明を書いたので、私は彼にあなたの答えに挑戦して取り組むように頼みました。
Aron Ahmadia 2012

回答:


8

リンク先のページで行った以上に言うことはあまりありませんが、私にとっての主な議論は次のようになります。

  • 多くの問題では、タイムステップ間でメッシュを適応させる必要があります。これを行うための概念的なフレームワークはRothe法であり、各タイムステップで個別に空間離散化を選択できますが、アプリオリの線の方法は、PDEがODEのシステムに変換されることを前提としています-これはメッシュ適応と互換性がありません。

  • 一方、メッシュを適応させたくない場合は問題ではありません。ほとんどの場合、空間離散化がタイムステップ間で同じになる場合は、必要かどうかは関係ありません。最初に空間で離散化し、次に時間内でお気に入りの時間積分器を使用するか、またはその逆です。すべてのタイムステップで解決する同じ離散問題が出てきます。そのような場合、Rotheメソッドと線のメソッドは同じになります。

  • これは、たまにメッシュを適応させるだけの場合にも当てはまります。これは、いくつかのタイムステップに適用されるラインの方法と見なすことができます。次にメッシュを適応させてから、もう1セットのタイムステップを適用します。線の方法を適用します。または、これをたまたまメッシュをたまにしか適応させないRotheメソッドと考えることもできます。それは本質的に同じ数値スキームに出てきますが、ただ異なる哲学的見方です。

もう1つポイントを追加する価値があるかもしれません。ODEの世界では、いくつかの段階または複数のステップを含む高次スキームをよく使用します。したがって、ODEシステムを何らかの方法で渡すだけでよいパッケージにこれらのアルゴリズムを詰め込むことには大きな利点があります。一方、時間依存のPDEの場合、ほとんどの場合、比較的単純な時間ステップ法を使用します(一部の双曲線ソルバーを除いて)。 。これらの単純な時間積分の場合、時間積分は空間的離散化よりもはるかに単純であるため、時間積分を手動でコーディングすることは特に難しくありません。これが意味することは、Rotheメソッドの観点から考えるために支払う代償(ODEソルバーパッケージを使用できないこと)は小さいことです。一方、ラインの方法を使用するために支払う代償-タイムステップ間でメッシュを適応させることができない-は、大きなものです。これが、適応有限要素の世界のほとんどの人がRotheメソッドに沿って考えることを好む理由を説明しているのかもしれません。

最後のポイントへの帰結として、そして元の質問に戻ります:Rotheメソッドでは、オブジェクト指向の方法ですべてをうまくパッケージ化することが難しいのは確かです。ただし、(i)ODEインテグレーターの単一のクラスを使用している限り、クラス内のインテグレーターのさまざまなステージの係数を表にして、それらを計算するコードを完全にカプセル化することもできます。(ii)時間依存のPDEに比較的単純な時間積分器を一般に使用するという事実は、時間積分を実装するために必要なコードの量が、通常、空間離散化を処理するコードの量よりも大幅に少ないことを意味します。言い換えれば、Rotheメソッドを使用して空間を時間の離散化からうまく分離する方法がわかりませんが、


1
この「答え」はコメントのようなものです-それが質問にどのように答えるかはわかりません。また、線の方法で、1ステップの方法を使用する場合、ステップごとにODEのセットが異なることに問題はありません。
デビッドケチソン

1
@WolfgangBangerthマルチステップメソッドではなく「ワンステップ」メソッド。Rosenbrocks、DG-in-time、IMEXバリアントなどのRunge-Kuttaメソッドは、適応性があり使いやすいです。時間積分スキームの設計は、強力な安定性プロパティ、埋め込みスキームに望ましい安定性プロパティがある場合の埋め込みエラー制御、望ましいプロパティの随伴、スペクトルの特定の部分をターゲットにする、望ましいステージ次数を取得する、幾何学を維持することを考慮して、空間離散化と同様に微妙な場合がありますプロパティ、陰解法ソルバーに対して可能な限り安価であることなど
Jed Brown

1
もちろん、これを行うことができます。このアプローチの問題は、以前のメッシュのソリューションを新しいメッシュに補間(または何らかの形で投影)する必要があることです。これは、単なるガラーキン投影ではないため、分析が容易ではないエラーを引き起こします。結果は単なるガラーキンスキームではありません。
Wolfgang Bangerth、2012

1
一方、Rotheアプローチを介してメソッドを導出する場合、前のタイムステップの解が右側に表示されるタイムステップごとにPDEを取得します。離散化することにより、現在のメッシュのテスト関数でこの以前のソリューションをテストします。これはある種の投影法として解釈できます-しかし、これはL2投影法ではなく、タイムステップに応じた重みを持つL2およびH1投影法の重み付けされた組み合わせです。これは純粋なガラーキン方式なので、分析は簡単で、この方法でエラーが小さくなると思います。
Wolfgang Bangerth 2012

1
さて、最後のポイントとして、メッシュをたまにしか変更しない場合、実際には大きな違いはないと考えています。別のメッシュのテスト機能を使用して1つのメッシュでソリューションをテストするのは
ちょっと面倒
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.