09:12:18)追加された行はこの色です。削除された行はこの色です。現在(&lastmod;)作成中です。書いている内容も&color(#ff0000){大幅に変わる};可能性が高いので注意。聡--------------【目次】#contents-------前回の宿題は、「thermal_diffusion.f90を理解しておくこと」であったので、その中身がわかっているものと仮定して今回は話を進める。スクリプトでgnuplotを使う場合、グラフがグラフが一瞬描かれた直後に終了してしまうという問題があった。-1と書く必要があった。別のブラウザを試してみること。(ソースコード中のコメントは一部、等角フォントを仮定している。[#z35660c8]前回の宿題は、「thermal_diffusion.f90を理解しておくこと」であった。ここではポイントだけ説明する。parallel__finalizeルーチン名を見れば意味は明白であろう。temperature__output_2d_profileに見られるように、関数名(サブルーチン名)は、「モジュール名」+「アンダースコア二つ」+「その関数の中身を示す言葉」で統一されている。その関数がどのモジュールで定義されているかがすぐに分かるようにするために工夫である。今考えている正方形領域は一様かつ一定に加熱されている。定常状態における温度T(x,y)は以下のポアッソン方程式を満たす。#ref(poisson_eq_01.png)つまり#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.f90をコンパイルし、計算機「scalar」で実行せよ。[#k39ed7ce]今回は2次元データの可視化を行う。前回と同様gnuplotを利用する。[#a2717789]thermal_diffusion.f90による2次元データ出力ルーチンtemperature__output_2d_profileは、正方形上(x,y平面上)に分布する温度をすべて書き出すものである。ジョブスクリプトthermal_diffusion.jsで並列計算せよ。連番つきファイルtemp.2d.????が出力されるはずである。その中身は以下のようになっているはず。[#w71b98ed]ソースコードの変更。[#u26817b8]thermal_diffusion02.f90で求めたチェッカーボード型熱源分布の平衡解(最終状態解)を可視化せよ。温度の最大値と最小値も記せ。[#qa65e3f2]今回の演習内容はどうでしたか?(どれか一つ、一度だけ押してください。[#k16ca111]「お名前」欄は空欄で可。