仮想世界と現実世界を対応させる

現実世界と対応させる

前のページで算出した分子の速さは、コンピュータ内の単位系での速さになっています。具体的には、1 frame あたりの pixel 単位の速さです。

1 frame とは、draw ループが1回実行されるのにかかる時間です。

frame は時間の単位、pixel は距離の単位なので、分子の速さの単位は
pixel frame-1 だといえます。

これを現実世界での単位、s (秒) と m (メートル)に関係づけます。

プログラムの冒頭に次のような変数を定義します。

// Scale
float s_scale = 5; //pm pixel-1
float t_scale = 0.01; //ps flame-1

s_scale は距離の対応 1 pixel が何 pm(ピコメートル) を表しているか、
t_scale は時間の対応 1 frame が何 ps(ピコ秒) を表しているか
を示す係数です。

これにより、先ほどの分子の速さを m/s で表すことができるようになります。

(単位換算の方法についてはこちら(マッカーリ・サイモン物理化学章末問題16-1の解説)をぜひ参照してください。)

  \displaystyle (v /{\rm\ m\ s^{-1}}) = \frac {(s_{\rm scale} / {\rm\ pm\ pixel^{-1}})}{(t_{\rm scale} / {\rm\ ps\ frame^{-1}})} \cdot (v /{\rm\ pixel\ frame^{-1}})  

ここまでできたら、分子量 M (単位: g mol-1) を定義して、各分子の運動エネルギー (mv2/2) を算出してみましょう。

運動エネルギーの平均値をボルツマン定数 (kB = 1.381 × 10-23 J K-1) で割れば、それが系の温度です。画面上に表示してみてください。

初期速度を1 pixel frame-1とし、窒素を想定 (M = 28.01 g mol-1) して、上の例のように sscale = 5, tscale = 0.01とした場合、温度は 421 K になるはずです。

ついでに、分子の大きさも sscale 係数で合わせてやりましょう。窒素のLJパラメータは

  \sigma = 370 {\rm\ pm} \\  \\  \varepsilon_{\rm K} = 95.1 {\rm\ K} \\  \\  M = 28.0 {\rm\ g \ mol^{-1}}  

となっています。σ が分子直径に相当するので、画面上に表示される円の直径を窒素の大きさに合わせましょう。

次のページでは、分子間に働く相互作用を仮想世界に導入します。