大きなインデックス配列のテストと視覚化


8

節点不連続ガラーキン法をすぐに実装し、メッシュと多項式データを前提として、計算する必要がある基本的なインデックス配列を知る前にこれを実行します。

前のコードで遭遇した問題は、内部/外部トレースのインデックス付けなどの計算で行った微妙な間違いでした。単純なテストケースでは発生しなかった問題が大きなメッシュで発生し、境界条件が適切に課されていないため、通常はこれにより不安定なスキームが生成されます(10ステップごとにシミュレーションを監視するだけで、局所的な問題が発生する可能性はありません)。 。

私は、経験豊富な人々が、インデックス配列に対して実行して、それらが正しいことを確信するための優れたテストを知っていることを望んでいます。求積法、導関数などは非常に簡単にテストできますが、他のことはわかりません。

私が過去に行ったいくつかのテストでは、内部法線を外部法線に追加しています。これにより、0または+ -2が得られます。コード変更の結果をすばやく確認できると便利ですが、インデックス作成でこれを行う意味のある方法は考えられません。

また、これらは四角形や六角形にも適用され、曲線要素の可能性があります。動作中のライブラリと比較する既存のコードはあまりありません。

比較するために既存の正解に依存しない、私が書ける優れた単体テストがある場合のボーナスポイント。私は多くの優れたヒューリスティックスで解決します。

回答:


7

もちろん、明白な答えは、それをすべて自分で実装するのではなく、他の人が以前に行ったことを使用することです。たとえば、deal.II(http://www.dealii.org-免責事項:私はこのライブラリの作成者の1人です)には、四角形、六角形、および曲線要素にDG要素があり、使用方法を示すチュートリアルプログラムがあります。これらすべてはすでに10年間テストされており、リポジトリに変更を加えるたびに2,700の回帰テストでテストされています。あなたのために救われるべき多くの仕事があります。

Kf(x)xiuh(x)=iUiφi(x)Ui=f(xi)uhf2=K|uh(x)f(x)|2dxfuh

これらすべての要点は、テストで2つの独立した方法を使用してインデックス付けを処理し(DoFに手動で値を割り当てるときの知識と、コードが評価するときに正しいと考えること)、それらは同意する必要があるということです。そうでない場合、少なくとも1つは正しくありません。uh

もちろん、これを実行したら、テストケースを保存して定期的に実行し、この種の機能を誤って再度壊さないようにする必要があります。


そうでない場合、少なくとも1つは正しいです。->そのうちの1つが間違っていますか?
オンドレジ・セティク

はい、もちろん。修正しました。
Wolfgang Bangerth 2013年

良い返事をありがとう。私がほとんど自分でやっている理由は、実装が研究の目新しさの一部であるためです。シミュレーション自体には、さまざまな実装戦略でどのように改善できるかほど興味がありません。
Reid.Atcheson、2013年

それは有効な目標です。しかし、10年間最適化されたソフトウェアと競合しています。既存のパッケージの1つで改善できる点を見てみませんか?
Wolfgang Bangerth 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.