@dc1394
Arに対する古典分子動力学シミュレー
ション
自己紹介
 Twitter: @dc1394
 C++, C#, F#そしてRubyが好きです。
 量子力学の数値計算とかやってます。
 最も興味のある分野
 ・第一原理計算
 ・密度汎関数理論(Density Functional Theory, DFT)
 第一原理計算やDFTについては、よろしければ拙作の
スライドをご覧ください
( http://www.slideshare.net/dc1394/ss-26378208 )。
概要
 分子動力学シミュレーションとは
 第一原理分子動力学計算
 モデルポテンシャル法
 Lennard-Jones (LJ)ポテンシャルと無次元化
 ArのNVT分子動力学シミュレーション
使用するプログラム言語、ライブラリ
等
 プログラム言語は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
ε
LJポテンシャルの無次元化
 LJポテンシャルを無次元化し、単純化する。
 上式を次のように変形する。
 ここで、以下の読み替えを行う。
 次式の無次元化したLJポテンシャルが得られる。
温度の無次元化
 温度の定義は、以下となる。
 ここで、換算温度を次式で定義する。
 このとき、温度と換算温度は以下の関係を持つ。
 ここで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 ) の図を引用・改変
1K, 10KにおけるMDの比較
1K 10K
100K, 1000KにおけるMDの比較
100K 1000K
ソースコードとバイナリへのリンク
 このプログラムのソースコードは、GitHub上で公
開しています。
 https://github.com/dc1394/LJ_Argon_MD
 また、バイナリも以下で公開しています。
 https://github.com/dc1394/LJ_Argon_MD/release
s/tag/v0.12
 ライセンスは2条項BSDライセンスとします。
まとめ
 経験的なLJポテンシャルを用いて、Arについて
Newtonの運動方程式を導いた。
 上記の方程式をVerlet法を用いて数値的に解くこ
とにより、リアルタイム分子動力学シミュレーショ
ンを行った。
 Woodcockの速度スケーリング法を用いて温度を
制御した(NVTアンサンブル)。
 計算負荷が非常に大きいため、Intel Threading
Building Blocks (Intel TBB)を用いて並列化を行い、
計算の高速化を図った。

Arに対する古典分子動力学シミュレーション