別の教材ページ 「空間分布をもつ時間発展問題の例としての拡散(熱伝導)問題」で述べた、 1次元空間の拡散(熱伝導)問題結果を表示してみます。 横軸に時間、縦軸に空間をとって、等値線をひきます。 言語はFortranです。 (ただし、次の図の数量は、リンク先の教材ページのものと違っています。)
プログラムは、
contk.f
[link] です。
データを読むサブルーチン
rdk.f
[link] と、
そのほか、このGKSの教材ですでに紹介したサブルーチンを使います。
例文では、 上記リンク先の教材ページで説明した kakusan.f (または kakusan.c (C), kakusan.p (Pascal)) の実行結果のテキストファイルを読むように作ってあります。 (実行が始まったところで、ファイル名をキーボードから入力する必要があります。) この実行例は両端が温度固定の熱伝導問題なので、 しだいに温度分布が勾配一定に向かうのがわかると思います。
contk の横軸 x は時間(kakusanのt)、縦軸 y は空間(kakusanのx) に対応しています。また、kakusanでは配列の下限を 0にしましたが、contk ではcontと同様に1にしてあります。 contk の nxmax = 51 は、kakusan の nt = 50 に対応しています。 また、contk の nymax = 11 は、kakusan で空間の格子点が(kx = 0 から 10まで) 11個あることに対応しています。 シミュレーションの時間ステップの数や空間格子の数を変えたときは、 それに合わせて作図プログラムのほうの配列の寸法も変える必要があります。
実用的には、配列を大きめにとっておいて、その一部を使ってデータを 読み込んで作図するのがむしろふつうですが、今回の例文はそのような 配慮をせず、配列をいっぱいに使う方式をとりました。 (配列の一部を使う方法は、Fortranと他の言語で書き方がかなり違うので、 この授業で扱うのは避けましたが、Fortranでの具体的な方法については、 質問があれば説明します。)