4 練習問題

4.1 ポテンシャルの計算

1のポテンシャル分布を求めるプログラムを作成せよ.ただし,詳 細な寸法は,図8の通りとする.
図 8: 練習問題の境界条件とポテンシャル
\includegraphics[keepaspectratio, scale=1.0]{figure/question.eps}

4.2 ヒント

4.2.1 サブルーチン

途中まで作成したソースプログラムを私の講義ノートのWEBページに置いておく.プログラム 作成の手がかりがつかめない者は,これを完成させよ.

4.2.1.1 変数

このヒントのプログラムの変数は,次のように使われている.
-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方向の分割数.問題が正方形領域なので,同一としている.

4.2.1.2 ユーザー定義関数

また,使われている関数の動作は以下の通りである.
-4pt
initialize
    ポテンシャルとフラグの値をゼロに初期化する.
set_cordinate
    格子点の座標を設定する.
set_boundary_wall_pot
    外部境界の格子点のポテンシャルを 0,フラグを1に設定する.
set_circle
    電極内部の格子点のポテンシャルを設定する.さらにその フラグを1に設定する.

4.2.2 グラフ作成

計算結果は,次のようなフォーマットでファイルに書き出す.1列目:$ x$座標,2列目:$ y$ 座標,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日


no counter