ITPASS実習レポート2
馬殿彩奈
joho11

問題1
 問題1.A 風上差分への書き換え


■実習で用いたRubyスクリプトから、書き換えた点は以下のとおりです。

116~117行目
  # du / dx (2 次の中心差分)
  dudx = (u.sft(1) - u.sft(-1)) / (2*dx)

 ↓ ↓ ↓

116~122行目
  # du / dx (2 次の風上差分)
   # c>=0の場合
   if ( c >= 0 )
   then dudx = (u.sft(0) - u.sft(-1)) / (dx)
   # c<0の場合
   else dudx = (u.sft(1) - u.sft(0)) / (dx)
   end

■スクリプトのURL
qa.txt

■スクリプトの使い方の解説
ruby qa.rbを実行する。

■実行結果へのリンク
cの値が正の場合

cの値が負の場合

■参考資料
7/27の実習資料を参考に致しました。

■共同作業した人の名前
特になし。

■工夫したこと、感想
初めcの値がマイナスの時の結果が上手くいきませんでした。
()が[]になっていることにもっと早く気づくべきでした。


問題1.B 安定なパラメータ条件の確認
・dtの値がdx/cよりわずかに大きい場合
   m = 32 * 11           # 格子点数
   l = 2 * Math::PI      # 系の大きさ
   c = 1                 # 移流速度
   dx = l / m            # 格子の間隔
   dt = dx / c + 0.001   # 時間ステップ

   nt = 100
   nt_out = 5

実行結果

・dtの値がdx/cよりわずかに小さい場合
   m = 32 * 11           # 格子点数
   l = 2 * Math::PI      # 系の大きさ
   c = 1                 # 移流速度
   dx = l / m            # 格子の間隔
   dt = dx / c - 0.001   # 時間ステップ

   nt = 9000
   nt_out = 300

実行結果

■参考資料
パラメータを決定する際に、他の実習生のレポートを参考に致しました。

■共同作業した人の名前
特になし。

■工夫したこと、感想
dtの値が、dx/cよりもわずかに小さいということが安定なパラメータの条件であるという予想が視覚的にできました。