私は移流方程式を解こうとしていますが、境界から波が反射すると、解に奇妙な振動が現れます。私が原因とその回避方法を知りたいと思う前に誰かがこの人工物を見たなら!
これはアニメーションGIFで、別のウィンドウで開いてアニメーションを表示します(キャッシュされているのは一度だけ再生されるか、一度に再生されないかです!)
波が最初の境界から反射し始めるまで、伝播は非常に安定しているように見えることに注意してください。ここで何が起こると思いますか?数日かけてコードを再確認しましたが、エラーが見つかりません。奇妙なのは、2つの伝播ソリューションがあるように見えることです。1つはポジティブなソリューションで、もう1つはネガティブなソリューションです。最初の境界からの反射後。ソリューションは、隣接するメッシュポイントに沿って移動しているようです。
実装の詳細は次のとおりです。
移流方程式
ここで、は伝播速度です。
Crank-Nicolsonは、が空間でゆっくりと変化する(フーリエ変換時に低周波数成分のみを含む場合、移流方程式の無条件(pdfリンク)の 安定した離散化です。
私が適用した離散化は、
未知数を右側に配置すると、これを線形形式で記述することができます。
ここで(均等現在および将来の点との間に加重時間平均を取ること)及び。、R = V Δ T
これらの方程式のセットの行列形式は、。ここで、
ベクトルおよびは、解決したい量の既知および未知です。u n + 1
次に、左右の境界に閉じたノイマン境界条件を適用します。閉じた境界とは、両方のインターフェースでを意味します。閉じた境界の場合、ここでの作業は示しませんが、上記の行列方程式を解くだけでよいことがわかります。@DavidKetchesonが指摘したように、上記の行列方程式は実際にディリクレ境界条件を記述しています。ノイマン境界条件の場合、
更新
動作は、使用する定数の選択とはかなり独立しているように見えますが、上記のプロットの値は次のとおりです。
- = 2
- dx = 0.2
- dt = 0.005
- = 2(ガウスhwhm)
- = 0.5
アップデートII
ゼロ以外の拡散係数のシミュレーション(下記のコメントを参照)、振動は消えますが、波は反射しなくなりました!?理由がわかりませんか?