Next: ガウス分布の乱数を利用した速度の初期化
Previous: 初期状態の作成
それでは、早速、プログラミングに入りましょう。第一段階は初期状態の原子配列を作成することです。
今回は、下図に示すような2次元の面心格子を与えるプログラムを作成します。
後々、プログラムを拡張することを視野に入れて、以下の条件でプログムを作成します。
- 粒子数n(単位:個)と密度density(個/単位面積)のみを変数として与える(上の図の場合n = 200, density = 1.1)
では、この条件から上図の様な粒子の座標を計算するにはどのように考えたら良いのでしょうか?一つの方法は、以下のような手順です。
- 粒子数と密度から全体の面積Sを算出する
- 全体の面積Sから一辺の長さlを計算する
- 2次元の面心格子の場合単位格子中には2個の粒子があることを考慮に入れて、一辺に並べられる単位格子(繰り返しの基本となるユニット)の数mを計算する(上の場合はm = 10)
- 単位格子の一辺の長さaを計算する
- 2重のfor文を利用して単位格子を展開していく。このとき、通常の面心格子では粒子は単位格子の一辺の長さを1とすると(0,0)と(,)に位置するが、今回は、だけ平行移動した(,)と(,)を座標として用いる
このとき、用いる変数n, density, S, l, m, aの変数の型(int or double型)に注意すること。また、粒子の座標を格納する配列position[200][2](position[0〜199の粒子番号][0]にx座標、position[0〜199の粒子番号][1]にy座標をしまう)もあらかじめ準備する。さらに、配列positionを全て出力し、gunplotを用いて上のような意図した格子が得られているかを確認すること。
Next: ガウス分布の乱数を利用した速度の初期化
Previous: 初期状態の作成
Hitoshi Takamura
平成16年12月26日