0. はじめに
分子動力学法(Molecular Dynamics, MD)への止まない興味の記録を残します。
ぶっちゃけると、PythonでMDシミュレーションプログラムを作るのは非合理的です。計算量が膨大になるため、いかに計算を効率化するか、並列化するかが重要です。そのような分野で実行速度の遅いPythonなどの言語を勧めることはできません。
当方完全に素人ですので、間違い、アドバイスがあればご教示いただけると大変助かります。
1. MDとは
簡単に言うと、原子(分子)間の力を計算し、ニュートンの運動方程式に基づいて速度・位置を計算することでミクロな挙動をシミュレートする、というイメージです。
MDシミュレーションにおいて理解する必要があるのは
- 原子間の力を決定するポテンシャル
- 速度・位置の計算をするための数値積分
の二つだと考えています。
2. 主なポテンシャル
MDの有名なポテンシャルとしてはレナードジョーンズポテンシャル(Lennerd-Jones Potential, LJ Potential)が挙げられます。二つの原子間の距離$r$のみの関数としてポテンシャルエネルギー・力を計算するモデルです。
三体間ポテンシャルで有名なTersoffポテンシャルや、量子力学からポテンシャルを算出するab initio分子動力学(AIMD)というものもあります。
3. 主な数値積分法
オイラー法、ルンゲクッタ法、Leap-frog法、速度Verlet法などがあります。
-1. 次回予告
次回はLJポテンシャルの実装と可視化をやっていきます。
リンクはこちらhttps://qiita.com/PlusF/items/e356ce5ebcbad530c0d5