09:12:18)追加された行はこの色です。削除された行はこの色です。現在(&lastmod;)作成中です。書いている内容も&color(#ff0000){大幅に変わる};可能性が高いので注意。先週は私の海外出張のため、政田先生に代わっていただいた。今週と来週のあと2回。/tmp/110714に置いた。別のブラウザを試してみること。(ソースコード中のコメントは一部、等角フォントを仮定している。[#a715968d]前回の宿題は、「thermal_diffusion.f90を理解しておくこと」であった。ここではポイントだけ説明する。parallel__finalizeルーチン名を見れば意味は明白であろう。temperature__output_2d_profileに見られるように、関数名(サブルーチン名)は、「モジュール名」+「アンダースコア二つ」+「その関数の中身を示す言葉」で統一されている。その関数がどのモジュールで定義されているかがすぐに分かるようにするために工夫である。今考えている正方形領域は一様かつ一定に加熱されている。定常状態における温度T(x,y)は以下のポアッソン方程式を満たす。知らない[13])上の式を丁寧に書くと、#ref(poisson_eq_02.png)である。何か」のガタガタをならす効果があります。ここでdxとdyはそれぞれx方向とy方向の格子間隔である。(T(i+1,j)+T(i-1,j)+T(i,j+1)+T(i,j-1))/4+heat_source*h^2/4.が得られる。ヤコビ法ではこの式が成り立つまで温度場Tを繰り返し計算する。4*h^2/4となる。この項は一定なので、ヤコビ法の繰り返し計算で毎回計算するのは馬鹿らしい。doのようにheatという定数を足すだけで済むようにしている。上のコードをよく見ると、コメントアウトされた部分では4.0で割っているところを、コメントアウトされていない行では0.25を掛けている。これは割り算よりも掛け算の方が計算が速いからである。ジョブスクリプトthermal_diffusion.jsで並列計算せよ。[#k39ed7ce]今回は2次元データの可視化を行う。前回と同様gnuplotを利用する。[#a2717789]thermal_diffusion.f90による2次元データ出力ルーチンtemperature__output_2d_profileは、正方形上(x,y平面上)に分布する温度をすべて書き出すものである。[#m11f0188]dataディレクトリ中の連番つきファイルtemp.2d.????の中身は以下のようになっているはず。data/temp.2d.0100のファイルに記された温度の分布をgnuplotの等高線で可視化してみよう。ファイル名やパラメータ等を自由に変更してその効果を試せ。時間発展(アニメーション)で等高線を見てみよう。例によってスクリプト生成プログラムを使う。利用方法は以下のコメント(Usage)に書かれている。温度を色で表現することも可能である。gnuplotのサンプルスクリプトは以下のとおり。時間発展のアニメーションを作ってみよう。2次元温度分布T(x,y)を高さ(z)で表すことも可能である。この時の描画は3次元的に行う必要がある。view)とも呼ばれる。gnuplotで描いてみよう。アニメーションを作ってみよう。gnuplotではviewというパラメータで視線の方向(「鳥」がどの方向から見下ろしているか)を指定することが出来る。このviewパラメータを変更したアニメーションを作ってみよう。0<=y<=1)が全体に一様に+4の強さで加熱されている場合を想定して計算していた。次に、下の図のように正方形を4つの部分にわけて市松模様状に加熱と冷却の分布を与えることを考える。冷却は負の加熱と考え、+4の加熱と-4の加熱の分布を図のように与える。答えの分布をsample_birdseyeview.gpで可視化すると次のような図が得られる。[#od9affb6]上に述べた市松模様状に+4と-4の加熱と冷却の分布を与えたときの熱平衡温度分布を求めるプログラムをthermal_diffusion.f90を変更して作り、それをthermal_diffusion_checker.f90とせよ。thermal_diffusion_checker.f90を作るにあたり、thermal_diffusion.f90にどのような変更を加えたか説明せよ。thermal_diffusion_checker.f90で求めた平衡解(最終状態解)温度の最大値と最小値を記せ。MESH_SIZEにどう依存性するか調べ、考察せよ。[#qa65e3f2]今回の演習内容はどうでしたか?(どれか一つ、一度だけ押してください。[#i2f001b9]「お名前」欄は空欄で可。