matlabの境界条件について

10 ビュー (過去 30 日間)
Soto Honda
Soto Honda 2018 年 1 月 24 日
コメント済み: Soto Honda 2018 年 1 月 25 日
上記サイトのソースコードの
>> % オプションで値を指定すると固定値境界に, replicateを指定すると値のコピー, circularを指定すると周期境界になる.
U = 2.*U1 - U2 + c^2.*imfilter(U1, F, 'replicate').*dt*dt;
値を以下のように指定して u(hnx,0,t)=u(0,hny,t)=u(hnx,1,t)=u(1,hny,t)=0 固定値境界にしたいです。 このときどう書けばいいのでしょうか?
よろしくお願いします

採用された回答

michio
michio 2018 年 1 月 25 日
有限差分に imfilter を使うのは面白い活用例ですね。
>> % オプションで値を指定すると固定値境界に
とあるように、
U = 2.*U1 - U2 + c^2.*imfilter(U1, F, 100).*dt*dt;
などと数値を入れると配列の境界の外に位置する値(上の例だと 100) とし、計算を行います。何も指定しないと 0 であると想定します。
  5 件のコメント
michio
michio 2018 年 1 月 25 日
Qiitaのページでは
U = zeros(ny, nx)+0.5; % とりあえず水面は0.5の高さ
と設定しており、Uの初期値は 0.5 の模様です。ここで固定値境界を 0 に設定して計算すると、境界側から何らかの波が発生していしまうのではと想像しています。
”波形が境界に達する”ということは何を意味するのか、物理的な側面からも妥当だと思われる条件を考えてみてください。正解があるわけではない、面白い課題だと思います。
Soto Honda
Soto Honda 2018 年 1 月 25 日
たくさんの助言ありがとうございます。 いただいたアドバイスをもとのに自分でシミュレーションしていきます。 ありがとうございました。

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!