リアルタイム表示MDシミュレーションプログラム
claret ver.0.53

特徴

  • 分子動力学(MD)シミュレーションにより、NaClのイオンの動きを再現できる
  • MDシミュレーション実行中の粒子の動きをリアルタイムで表示できる
  • マウス操作により好きな角度から系を見ることができる
  • 実行中に温度を自由に変えられる
  • イオンを新たに生成し衝突させることができる
  • プログラムはOpenGLとglutを使って書いてあるのでWindows, Mac, Linux等 で実行可能
  • 計算速度を表示できるので、ハードウェアのベンチマークも可能
  • ハードウェアが対応していればステレオ立体視も可能
  • MDGRAPE-2に対応

操作

マウスによる操作

マウス左クリック+左右z軸回転
マウス左クリック+上下y軸回転
マウス右クリック+左右x軸回転
マウス右クリック+上下前後移動
マウス右左両方クリック+左右左右移動
マウス右左両方クリック+上下上下移動
マウス左中両方クリック+左右(3ボタンマウス向け)x軸回転
マウス左中両方クリック+上下(3ボタンマウス向け)前後移動
マウス中クリック+左右(3ボタンマウス向け)左右移動
マウス中クリック+上下(3ボタンマウス向け)上下移動

画面に向かってこちら側がx軸の正方向、右がy軸の正方向、上がz軸の正方向としたとき

キーボードによる操作

q プログラムの終了
! 状態の初期化
v 文字表示の有無の切り替え
t 温度100K上げる
g 温度100K下げる
y 温度 10K上げる
h 温度 10K下げる
u 温度 1K上げる
j 温度 1K下げる
z シミュレーションの停止・再開
c バックの色の変更(黒・白)
k 壁の表示の有無の切り替え
n Naプラスイオン1個を出現させる
m Clマイナスイオン1個を出現させる
N イオンを4個出現させる
M イオンを27個出現させる
1-9 粒子数を変更する、粒子数は数字の3乗×8
space MDGRAPE-2による計算とホストによる 計算の切替
(MDGRAPE-2使用時のみ)

粒子を出現させた後は[0]-[9]キーで発射速度を決め、[space]キーで発射します。 方向は粒子を出現させたときの視線の向きです。

シミュレーションについて

  • イオンの動きをシミュレートするために、 全てのイオン間の相互作用を計算して各イオンに働く力を求めニュートン方程式を解いています。
  • シミュレーションを行っている系はNaClで、 相互作用にはTosi-Fumiポテンシャルを使用しています。
  • 表示は赤がNaプラスイオンで緑はClマイナスイオンです。
  • [n],[m],[N],[M]を押すとワイヤーフレーム状の小ささなイオンが出現し、 徐々に大きくなっていきます。 成長が止まったら[0]-[9]で初速を設定します。 画面上には各キーに対応した秒速と時速とそれを温度に換算した量が表示されます。 その後、スペースキーを押すとイオンを出現させたときの視線に沿って設定された速度で動き始め、 速度の設定時に表示された温度分だけ温度が上昇します。
  • NaClの融点は1081K、沸点は1738Kなので温度が融点を超えた場合系は液体になり、 沸点を超えた場合は気体になります。
  • イオンを衝突させ系を気体にした後に温度を下げ液体の温度にすると、 系は凝集をはじめ液体のクラスターが生じます。
  • 壁の表示の有無に関わらず、 壁は存在しますので表示を消している場合は何も無いところで粒子は反射します。

ダウンロードとインストール

ダウンロード

claret.zip

ファイルの中身

  • crtf53.c(ソースファイル)
  • crtf53.exe(Windows用実行ファイル)
  • SP_00.PPM(テクスチャファイル)
  • SP_01.PPM(テクスチャファイル)
  • SP_10.PPM(テクスチャファイル)
  • SP_11.PPM(テクスチャファイル)

インストール

プログラムはOpenGLのglutを使って書かれているので、 コンパイルや実行にはOpenGLとglutの環境が必要となります。

glutは http://www.xmission.com/~nate/glut.html にありますので、ご自身の環境に合わせてインストールを行ってください。

詳しくはglut32.dllのダウンロード を参照して下さい。

コンパイル時の注意

ファイル冒頭の#defineで定義されている変数によってプログラムの 動作が変わります。

変数動作
MDM 0ホストによる計算
2MDGRAPE-2による計算(要MDGRAPE-2)
STEREO 0通常の表示
1ステレオ立体表示(要ハードウェア)
TEXTURE 0ポリゴン表示のみ
1テクスチャ表示も可能

注:time関数関係でコンパイルできないときは、LAP_TIMEという変数をdefineしている部分をコメントアウトしてください。