arに対する古典分子動力学シミュレーション
TRANSCRIPT
自己紹介
Twitter: @dc1394
C++, C#, F#そしてRubyが好きです。
量子力学の数値計算とかやってます。
最も興味のある分野
・第一原理計算
・密度汎関数理論(Density Functional Theory, DFT)
第一原理計算やDFTについては、よろしければ拙作の
スライドをご覧ください( http://www.slideshare.net/dc1394/ss-26378208 )。
使用するプログラム言語、ライブラリ等
プログラム言語はC++11を使用する。
Boost C++ Librariesを使用する。
三次元可視化のために、Microsoft DirectX 10を使用する。
コンパイラには、Microsoft Visual C++ 2013
(VC12)を使用する。
さらに、並列計算のために、Intel Threading
Building Blocks (Intel TBB)を使用する。
分子動力学シミュレーションとは
分子や原子の運動をNewtonの運動方程式で記述し、その時間発展を数値的にシミュレーションする方法。
原子や分子の相互作用の記述
(1)第一原理的手法
量子力学的に電子・原子の系のエネルギーを計算し、原子に働く力を求める方法。
(2)モデルポテンシャル法
実験や第一原理計算の結果を再現するように、経験的なポテンシャル関数をあらかじめ作成しておく方法。
第一原理分子動力学法
上式のように、系のHamiltonianは明示的に書くことができる。
このHamiltonianに対応するSchrödinger (Dirac)
方程式を数値的に解けば、原理的には系の全エネルギーが計算できる。
さらに、これを原子座標に対して微分すれば、各原子に働く力が計算できる。
第一原理分子動力学法
しかし、現実的な系に対しては、Schrödinger (Dirac)方程式を数値的に直接解くことは、現在でも容易なことではない。
また、原子核を厳密に量子力学的に扱うことは、極めて複雑で、また計算コストを要求するので、原子核の運動については、Newtonの運動方程式を用いるのが普通である(cf. 第一原理経路積分分子動力学法)。
現在、最も汎用的に用いられる方法は、密度汎関数理論(DFT)に基づく第一原理分子動力学法である。
モデルポテンシャル法
実験や第一原理計算の結果を再現するように、経験的なモデルポテンシャル関数を予め作成しておき、これを用いてNewtonの運動方程式を数値的に解く方法。
よく使用されるモデルポテンシャル
希ガス系
Lennard-Jones (LJ)ポテンシャル
生体系
AMBER, CHARMmポテンシャル
Lennard-Jones (LJ)ポテンシャル
Van der Waals (vdW)相互作用をモデル化するモデルポテンシャルの一つ。
力の計算
平衡点r0を求める
r0を用いてUを書き直せば、
従って、εは平衡点r0におけるポテンシャルの深さを表す。
r0
ε
温度の無次元化
温度の定義は、以下となる。
ここで、換算温度を次式で定義する。
このとき、温度と換算温度は以下の関係を持つ。
ここでArの場合において、実験的に決定された値を用いると、換算温度の一単位は、絶対温度では、
T = 119.8 (K)
となる。
時間の無次元化
時間の単位を次式で定義する。
ここで、Arの場合において、実験的に決定された値を用いると、換算時間の一単位は、
τ = 2.156×10-12 (sec) = 2.156 (psec)
となる。
シミュレーションの設計
1. 基本方程式は何か?
Newtonの運動方程式(ma = F)
打ち切りLJポテンシャル
N(粒子数)、V(体積)、T(温度)を一定とするNVTアンサンブル→温度を制御する必要がある
2. 方程式をいかに解くか?
Verlet法を用いてNewton方程式を数値的に解く。
Woodcockの速度スケーリング法を用いて温度を制御する。
周期境界条件の導入
周期境界条件
CMSI配信講義B 第10回大規模MD並列化の技術1 ( http://www.cms-initiative.jp/ja/events/school-
event/B/0619-andoh ) の図を引用・改変
ソースコードとバイナリへのリンク
このプログラムのソースコードは、GitHub上で公開しています。
https://github.com/dc1394/LJ_Argon_MD
また、バイナリも以下で公開しています。
https://github.com/dc1394/LJ_Argon_MD/release
s/tag/v0.12
ライセンスは2条項BSDライセンスとします。