有限差分プログラミング

SLAE係数を手動で書き出してプログラムに入力することは、問題の定式化の新しいバリエーションごとに新しいプログラムを書く必要があるため、差分法をプログラムする最も効果的な方法ではありません。 幅広いクラスのタスク用の共通ソルバーを開発すると、プログラミングとテストが簡単になります。 正確な解は不明であるため、MKRアルゴリズムのテストは困難ですが、一般的なソルバーは特定の正確な解の問題についてテストできます。







著者は、有限差分法により楕円方程式の1次元および2次元共役問題を解くためのJoker FDMソルバーを開発しました。







問題の声明



長方形の領域が考慮されます。 長方形の横辺はに分割されます 画像 間隔、垂直-オン 画像 間隔。 したがって、長方形全体はに分割されます 画像 長方形のサブ領域。







それぞれに 画像 準地域 画像 、反応拡散の微分方程式系を設定します

画像

ディリクレ、ノイマン、またはロビンの境界条件と、不完全な接触または理想的な接触などの共役条件を使用します。







問題の詳細な説明については、 GitHub Wikiを参照し 、式を表示するには、Chrome拡張機能をインストールしてください。







著者は、ソルバーを使用して、複雑な熱伝達の拡散モデル(2つの方程式の非線形システム)の解を計算しました。







すべての有限要素ソルバーに、界面での解のジャンプ(不完全な接触)を伴う共役問題を解決する機能があるわけではありません。 そのような機能を持つFEniCSパッケージに注意してください。







アルゴリズムの説明



領域にグリッドが導入されます。各xギャップとyギャップは等しい部分に分割されます。







2次の差分スキームが使用されます。これは、Samarsky、Andreevの本「楕円方程式の差分法」で説明されています。







非線形方程式を線形化するには、ニュートン法が使用されます。 この方法は、複雑な熱伝達方程式を解くことが実証されています。







1次元差分スキームの表現と正当化については、 wikiを参照してください。







ソルバーの説明



1次元ソルバーはOctaveおよびC ++、2次元-C ++のみで実装されています。







差分方程式は、xおよびyに対する1次元差分演算子と非線形点演算子の合計として記述されます。 1次元演算子の合計による一般的なアルゴリズムの実装により、多数のタイプのノード(内部、長方形の側面、コーナーポイント、サブドメインのインターフェイス、長方形の側面、インターフェイスのコーナーポイント、インターフェイスのコーナーポイント)を考慮しないことができます。 方程式は、オーバーロード操作を伴う明確な構文を使用して記述されます。







SLAEを解決するには、 MTL4ライブラリの反復法が使用されます。







将来的には、同様の方法で3次元ソルバーを実装する予定です。







おわりに



有限差分法を簡単な方法でプログラムできます。特定の問題の差分方程式を書き、プログラムに係数を入力し、SLAEの解関数を呼び出します。







よく知られたソリューションを使用してタスクでテストできる共通ソルバーを開発する方が生産的です。








All Articles