図1のポテンシャル分布を求めるプログラムを作成せよ.ただし,詳
細な寸法は,図8の通りとする.
途中まで作成したソースプログラムを私の講義ノートのWEBページに置いておく.プログラム
作成の手がかりがつかめない者は,これを完成させよ.
このヒントのプログラムの変数は,次のように使われている.
- -4pt
- u[i][j]
- i,j番目の格子点のポテンシャルを入れる配列
- x[i][j],y[i][j]
- i,j番目の格子点の座標を入れる配列
- flag[i][j]
- i,j番目の格子点について,固定のポテンシャルか
否かをきめるフラグ(目印).固定の場合には1,計算により求める場合には0とす
る.具体的には,格子点が内部電極内あるいは境界上ならば1,それ以外は
0とする.
- iteration
- ガウス・ザイデル法での最大計算回数
- nlat
- x方向とy方向の分割数.問題が正方形領域なので,同一としている.
また,使われている関数の動作は以下の通りである.
- -4pt
- initialize
- ポテンシャルとフラグの値をゼロに初期化する.
- set_cordinate
- 格子点の座標を設定する.
- set_boundary_wall_pot
- 外部境界の格子点のポテンシャルを
0,フラグを1に設定する.
- set_circle
- 電極内部の格子点のポテンシャルを設定する.さらにその
フラグを1に設定する.
計算結果は,次のようなフォーマットでファイルに書き出す.1列目:座標,2列目:
座標,3列目:ポテンシャルの値である.
0.000000 0.000000 0.000000
0.010000 0.000000 0.000000
0.020000 0.000000 0.000000
0.030000 0.000000 0.000000
この辺は長いので省略
0.860000 0.400000 -0.787480
0.870000 0.400000 -0.765718
0.880000 0.400000 -0.735162
0.890000 0.400000 -0.696932
0.900000 0.400000 -0.652039
この辺は長いので省略
0.960000 1.000000 0.000000
0.970000 1.000000 0.000000
0.980000 1.000000 0.000000
0.990000 1.000000 0.000000
1.000000 1.000000 0.000000
この計算結果を三次元グラフで表示するためには,gnuplotを使うのがよいだろう.まず
は,以下のコマンドでgnuplotを起動させる.
$ gnuplot
そして,次のコマンドにより,図3のようなプロットを作成する.
gnuplot> set view 75,30
gnuplot> set contour base
gnuplot> set cntrparam levels 20
gnuplot> set hidden3d
gnuplot> unset key
gnuplot> splot "result.txt" with lines
ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成20年1月16日