14:00:36)現在(&lastmod;)作成中です。書いている内容も&color(#ff0000){大幅に変わる};可能性が高いので注意。[#x3196833]熱伝導とは注目する一点が、「近所」の温度と等しくなろうという傾向である。⇒周囲の温度の平均値になろうとする。熱源があれば、一定の割合で温度が上がろうとする。ヤコビ法アルゴリズム。heat1.f90を前回の演習で見た。[#zb7771b2]今回は、まずこのheat1.f90を少し丁寧に見る。[#sf947cfe]次に詳しいコメントをはずしてもう一度もとのheat1.f90を見てみる。(ただし、先週のコードから本質的でないところを少しだけ修正している。変えて実行し,計算時間の変化を調べよ。[#x1dffcc8]上のheat2.f90を解説するために詳しいコメントをつけたソースコードheat2_wi_comments.f90を以下に示す。[#i5bd3a90]前回の演習で説明されたMPI_SENDRECVの挙動を改めて確認しよう。そのためのソースコード(heat2_sendrecv_check.f90)を以下に用意した。これは上記のheat2.f90からヤコビ法による熱伝導問題の解法部分を除き、MPIの通信に関係する部分だけを抜き出したものである。heat2_sendrecv_checkこのコード(heat2_sendrecv_check.f90)をscalarに投入するためのジョブスクリプトを以下のようにすると、このコードのコメントにあるとおり、グリッドサイズmが17で、プロセス数が6のジョブを投入できる。heat2_sendrecv_check.jsとすればジョブが投入できる。上のheat2_sendrecv_check.f90をマシン「scalar」で計算せよ。[#re54a6a6]上の例では、MPIプロセスがもつ配列uの値をテキストデータとして書き出すことで、プロセス間のMPI_SENDRECVによる通信の様子が分かりやすく表示された。このように人間の視覚を使って情報を引き出す操作を一般に可視化という。科学技術計算においては、可視化が様々な局面で重要な役割を果たす。データ可視化の身近な例は天気図であろう。NKHラジオの「気象通報」という番組を知っているだろうか?各地の風向、風力、気圧などの数字をアナウンサーが次々に読み上げていくラジオ番組である。これをただ耳で聞いているだけでは何もわからない。低気圧や高気圧が図—天気図—としてあらわれる。明日の天気がだいたいわかる。この天気図に入っている情報は、もともとラジオのアナウンサーが読み上げる数値データに全て含まれているものである。明日の天気を知るのはほとんど不可能である。紙の上に天気図という図にしてみてはじめてデータに隠されていた情報を引き出すことができる。[#r232f3e1]データの可視化には可視化の目的や、対象データの種類の応じて様々な方法が開発されている。その中で、ここでは、スカラー場の可視化について簡単に説明する。[#s18621f8]xのある関数f(x)を直感的に理解するためには、グラフを書くのが一番である。xのx乗の関数、つまりf(x)=x^xはどんな形だろうか?下のグラフを見ればわかる。[#c1baa40b]xとyの関数、つまり2次元の関数f(x,y)の形を理解するには、等高線を描くのがよい。地表面での大気の圧力pの分布p(x,y)の等高線は天気図でおなじみである。#ref(graph_2d.png)上の図では等高線の高さを色で表示してさらに分かりやすくしている。ここで等高線の描画アルゴリズムを紹介しよう。計算格子点上に定義されたデータから一本の等高線を描くには、下の図のように短い線分をつなげていけばよい。#ref(contour_line01.png)一つの線分は4つの計算格子点で定義された長方形領域(セル)の中で直線を描く。f(x,y)=1.0の値の等高線を描く場合を考えよう。あるセルの4つの頂点におけるfの値が全て1.0よりも大きいか、あるいは1.0未満であれば、f=1.0の等高線はこのセルを通らないのは明らかである。セルを周囲の4つの辺、それぞれの両端の頂点でのfの値が1.0を「挟めば」その辺を等高線が通る。辺上のどの位置を等高線が横切るかは、線形補間をすればよい。下の図はちょうど中点を通る例である。squaresと呼ばれる。等高線による可視化とは2次平面上に分布するスカラー場f(x,y)を等高線という曲線を見ることで理解する方法である。[#ua43bab9]等値面の「3次元版」も考えられる。この場合は3次元空間中の曲面の形状を見ることで3次元空間に分布する関数f(x,y,z)の分布を理解する。下の図の白い矢印で示している物体は等値面の例である。これは核融合実験装置(LHD)内部のプラズマの圧力分布の等値面である。Cubesアルゴリズムは、1985年に米国で特許となったが、20年を経過したので、現在では自由に利用できる。簡単な可視化を実践的に演習してみよう。2次元可視化機能の追加(温度場全体が収束していく様子をアニメーションで示す)という可視化機能を追加することである。グラフや等高線などの可視化にはここではgnuplotというフリーウェアを利用する。次回以降の演習で、もう少し実際的な並列化問題を扱う。熱伝導問題の3次元化を行う予定である。したがって、今後扱うコードは少しづつ複雑化していくので、ここでまずはコードのリファクタリングをしておこう。