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

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

Upload: dc1394

Post on 12-Jan-2017

1.814 views

Category:

Education


0 download

TRANSCRIPT

@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)を用いて並列化を行い、計算の高速化を図った。