シミュレーションの全体像・概論 · 2020. 9. 3. ·...

40
シミュレーションの全体像・概論:松本充弘 1 分子シミュレーションスクール2020 第14回 分子シミュレーションスクール Sep.4, 9:05-10:25 シミュレーションの全体像・概論 松本充弘 京都大学 大学院工学研究科 機械理工学専攻 現在の専門分野 ミクロスケールの熱流体現象 微小気泡,微小液滴,液膜,・・・ 液体界面やイオン系の統計熱力学 固体中のエネルギー輸送 マルチスケールシミュレーション ・・・

Transcript of シミュレーションの全体像・概論 · 2020. 9. 3. ·...

Page 1: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

1分子シミュレーションスクール2020

第14回 分子シミュレーションスクールSep.4, 9:05-10:25

シミュレーションの全体像・概論

松本充弘京都大学 大学院工学研究科 機械理工学専攻

現在の専門分野

ミクロスケールの熱流体現象

• 微小気泡,微小液滴,液膜,・・・• 液体界面やイオン系の統計熱力学• 固体中のエネルギー輸送• マルチスケールシミュレーション• ・・・

Page 2: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

2分子シミュレーションスクール2020

1.本講の目的

2.分子シミュレーションとは

3.モンテカルロ法 vs. 分子動力学法3.1 統計力学のエッセンス3.2 まずはモンテカルロ法の原理を理解しよう3.3 つづいて分子動力学法の原理を学ぶ3.4 その他、さまざまな分子シミュレーション

4.例題:単原子分子系の分子シミュレーション4.1 分子間の相互作用4.2 境界条件4.3 分子動力学シミュレーション4.4 モンテカルロシミュレーション4.5 データ解析入門

5.計算効率を上げるには5.1 高速化:物理学的な視点から5.2 高速化:数値計算法の視点から5.3 高速化:計算機の視点から

6.分子シミュレーションのためのオープンソースソフトウェアの例6.1 分子シミュレーションソフトウェア6.2 データ可視化用ソフトウェア

Page 3: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

3分子シミュレーションスクール2020

1.本講の目的

分子シミュレーションの基本事項を説明し,本スクールを受講するにあたっての共通基盤 をつくる,あるいは自分の知識を再確認する.

2.分子シミュレーションとは

狭義には原子・分子集合体を対象とする数値シミュレーション

広義には粒子集合体を対象とする数値シミュレーション

対象系のスケール:例えば,1-10 nm, 0.1-10 ns

対象系のスケール:例えば,1 mm-1 m, 1 ms-1 s

Page 4: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

4分子シミュレーションスクール2020

本スクールのロードマップ今年度は COVID-19 のために,変則的で・・・

注:私が独断で作成した参考図です.

Page 5: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

5分子シミュレーションスクール2020

分子シミュレーションの教科書をいくつか・・・

例えば amazon のホームページで和書 “分子シミュレーション” や 洋書 “molecular simulation”

等でキーワード検索してみてください.

Page 6: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

6分子シミュレーションスクール2020

1.本講の目的

2.分子シミュレーションとは

3.モンテカルロ法 vs. 分子動力学法3.1 統計力学のエッセンス3.2 まずはモンテカルロ法の原理を理解しよう3.3 つづいて分子動力学法の原理を学ぶ3.4 その他、さまざまな分子シミュレーション

4.例題:単原子分子系の分子シミュレーション4.1 分子間の相互作用4.2 境界条件4.3 分子動力学シミュレーション4.4 モンテカルロシミュレーション4.5 データ解析入門

5.計算効率を上げるには5.1 高速化:物理学的な視点から5.2 高速化:数値計算法の視点から5.3 高速化:計算機の視点から

6.分子シミュレーションのためのオープンソースソフトウェアの例6.1 分子シミュレーションソフトウェア6.2 データ可視化用ソフトウェア

Page 7: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

7分子シミュレーションスクール2020

3.モンテカルロ法 vs. 分子動力学法3.1 統計力学のエッセンス

微視的状態を区別する指標 s

その出現確率 ∝ P(s)

物理量 A(s) の統計平均

=

s

s

sP

sPsA

A)(

)()(

☞詳細は,甲賀先生・奥村先生の講義を.

☞自由エネルギーに関しては,松林先生の講義を.

主な統計集団

我々の課題:適切な出現確率 P(s)

をもつような統計集団を,いかにして計算機の中に作り出すか

Page 8: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

8分子シミュレーションスクール2020

2状態モデルを例とすると

ベクトルで略記すると

平衡状態のベクトルが満たすべき条件

平衡状態がボルツマン分布になるための十分条件

すなわち

これがMetropolis MC 法 (1953)の原理である.

3.モンテカルロ法 vs. 分子動力学法3.2 モンテカルロ法

Monte Carlo法,MC法確率過程の考え方を利用して,ボルツマン分布 P(E) ∝ exp(-E/kT) に従う出現確率で微視的状態を作り出す方法.

遷移行列

Page 9: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

9分子シミュレーションスクール2020

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

double frand( ) /* Simple Random Number Generator of [0, 1] */

{

return rand( )/(RAND_MAX+1.0);

}

int main( ) //--------------------------------------------------

{

int num_step,step,state;

int hist1,hist2;

double eng1=0.0, eng2=1.0;

double temperature=1.0;

while(printf("Number of Steps?")!=0 && scanf("%d",&num_step)==1) {

hist1=hist2=0;

state=1; /* Initial State */

for (step=0;step<num_step;step++) {

if (state==1) {

if (frand( ) < exp(-(eng2-eng1)/temperature)) {

state=2;

hist2++;

}

else {

hist1++;

}

}

else {

state=1;

hist1++;

}

}

printf("%10d %8.4f %8.4f¥n", num_step,hist1/(double)num_step, hist2/(double)num_step);

}

return 0;

}

2状態モデルのメトロポリスMCプログラムの例

Number of Steps? 1010 0.8000 0.2000

Number of Steps? 100100 0.7300 0.2700

Number of Steps? 10001000 0.7340 0.2660

Number of Steps? 1000010000 0.7289 0.2711

Number of Steps? 100000100000 0.7305 0.2695

Number of Steps? 10000001000000 0.7313 0.2687

Number of Steps? 1000000010000000 0.7311 0.2689

厳密な比は1:exp(-1) ≅ 0.73106 : 0.26894

Page 10: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

10分子シミュレーションスクール2020

3.モンテカルロ法 vs. 分子動力学法3.2 モンテカルロ法

N状態の場合への拡張は容易で, Metropolisモンテカルロ法

これにより,十分なステップが経過した後は,適切な確率で各事象が出現することになるから,いろいろな物理量の平均

を求めることができる.

=

s

s

sP

sPsA

A)(

)()(

補足1) 出現頻度が少ない(=エネルギーが高い)状態をいかにうまくサンプリングするかが鍵となる.

2) 最適化アルゴリズムとしてよく用いられる Simulated Annealing(焼きなま

し)法,遺伝アルゴリズム法なども,モンテカルロ法の一種と考えることができる.

3) ボルツマン分布を人工的にずらすことにより,効率や精度を格段に向上させる種々の拡張アンサンブル法が考案されている.

☞奥村先生,松林先生の講義をどうぞ.

Page 11: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

11分子シミュレーションスクール2020

3.モンテカルロ法 vs. 分子動力学法3.3 分子動力学法

分子動力学法,Molecular Dynamics法,MD法原子・分子の運動方程式を数値積分することで位相空間中での軌跡を追跡する方法.やがては熱平衡状態(場合によっては定常状態)に至ると考えて,データ解析を行う.

簡単な例:外場中の1粒子系

⇒ ⇒ ⇒

int main( ) // 1次元調和振動子モデル{

double x=INIT_X;double p=INIT_P;double t=0.0;double dt, force,omega;double exact; // exact solution x=cos(omega*t)FILE *fout;

fout=fopen("naive.dat","w");printf("Input dt: ");scanf("%lf",&dt);

omega=sqrt(SPRING/MASS);

while (t<MAX_TIME) {t += dt;force = -SPRING * x;x += dt*p/MASS;p += dt*force;exact=cos(omega*t);fprintf(fout,"%8.5f %8.5f %8.5f¥n",t,x,exact);

}

fclose(fout);return 0;

}

素朴な前進差分法は使い物にならない!

Page 12: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

12分子シミュレーションスクール2020

3.モンテカルロ法 vs. 分子動力学法3.3 分子動力学法

Leapfrog法による調和振動子計算のサンプルコードint main( ){

double x=INIT_X;double p=INIT_P;double t=0.0;double dt, force,omega;double exact; // exact solution x=cos(omega*t)FILE *fout;

fout=fopen("leapfrog.dat","w");printf("Input dt: ");scanf("%lf",&dt);

omega=sqrt(SPRING/MASS);

while (t<MAX_TIME) {t += dt;x += dt*p/MASS;force = -SPRING * x;p += dt*force;exact=cos(omega*t);fprintf(fout,"%8.5f %8.5f %8.5f¥n",t,x,exact);

}

fclose(fout);return 0;

}

☞もっと系統的な数値積分法のお話は,吉井先生の講義をどうぞ。

もう少し実用的な数値積分法:前進差分ではなく中心差分をとってみよう ⇒Leapfrog法

Page 13: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

13分子シミュレーションスクール2020

3.モンテカルロ法 vs. 分子動力学法3.4 その他、さまざまな分子シミュレーション

◆ より精密にMC法・MD法はポテンシャル関数が与えられていることが前提である.粒子配置が更新されるたびに量子力学方程式を解いてエネルギーや力を精密に求めなおすというアイディアは,第一原理MD法として結実している.

◆ より複雑な系をタンパク質や界面活性剤系に代表される,膨大な内部自由度を有する分子の集合体をなるべく余分な近似なしに直接計算しようという機運が高まっている.

◆ より大規模な系を物理現象の階層性を利用した粗視化シミュレーション,ブラウニアンダイナミクスシミュレーション,散逸粒子動力学計算,マルチスケールシミュレーション,ハイブリッド計算などの手法の開拓がさかんである.

◆ 連続体力学からのアプローチメッシュフリー数値解析の1つとして分子シミュレーションの手法を発展させた粒子シミュレーション法(MPS法,SPH法など)の応用が広がっている.

原子・分子を「粒子」と考えて,その統計的性質を数値計算で調べるMC法・MD法は,1950年代以降,コンピュータの発達とともに急速に広まった.現在のフロンティアは・・・

Page 14: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

14分子シミュレーションスクール2020

1.本講の目的

2.分子シミュレーションとは

3.モンテカルロ法 vs. 分子動力学法3.1 統計力学のエッセンス3.2 まずはモンテカルロ法の原理を理解しよう3.3 つづいて分子動力学法の原理を学ぶ3.4 その他、さまざまな分子シミュレーション

4.例題:単原子分子系の分子シミュレーション4.1 分子間の相互作用4.2 境界条件4.3 分子動力学シミュレーション4.4 モンテカルロシミュレーション4.5 データ解析入門

5.計算効率を上げるには5.1 高速化:物理学的な視点から5.2 高速化:数値計算法の視点から5.3 高速化:計算機の視点から

6.分子シミュレーションのためのオープンソースソフトウェアの例6.1 分子シミュレーションソフトウェア6.2 データ可視化用ソフトウェア

Page 15: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

15分子シミュレーションスクール2020

4.例題:単原子系の分子シミュレーション

一般論はこれぐらいにして,簡単な系を例にとって,実際のプログラミングやデータ解析の感じをつかむことにしよう.他の講義を聴く際に,イメージがわくように・・・

ソフトウェアを自作しようとしている方々へ:ところで,プログラミング言語は何がいいか?

・コンピュータが正しく動くなら原理的には何でもOK浮動小数点演算ができる,構造化プログラミング,オブジェクト指向,…

・趣味的なプログラミングならBasic, Visual Basic, …

・過去の蓄積を重視するならFortran77, Fortran90, Fortran2003, …

・将来性や計算性能を考えるとC, C++, …

・解析ツールなら python とか・その他 Javaなどでウェブアプリ化を目指す人も・・・

最近こんな本が出版されました.おもしろそうですね.

Page 16: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

16分子シミュレーションスクール2020

4.例題:単原子系の分子シミュレーション4.1 分子間の相互作用

粒子間に適切な相互作用ポテンシャルを仮定することが,最も重要である.⇒ここの検討が不十分だと,想定している「もの」や「計算条件」に現実性がなくなる!

原理的な考え方N原子系のポテンシャルエネルギー関数を,“Taylor展開” して考える.

☞三上先生の講義

定数項:エネルギーの原点の選び方の話だから普通はゼロとしてよい

1次の項:電場や重力場などの外場をあらわす.多くの場合熱揺らぎに比べて無視できるぐらい小さい

高次の項:多体相互作用

2次の項:二体相互作用,pair-wise potential

Page 17: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

17分子シミュレーションスクール2020

4.例題:単原子系の分子シミュレーション4.1 分子間の相互作用

ここで扱う例題では,二体力相互作用のみとし,さらに,原子間距離だけの関数と仮定する.その代表例が,Lennard-Jones相互作用である.

(i, j)と(j, i)は同じペアを表すので,2重に数えないように×1/2

電子雲の重なりに由来する反発

誘起双極子による引力(分散力)

Page 18: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

18分子シミュレーションスクール2020

4.例題:単原子系の分子シミュレーション4.1 分子間の相互作用

ポテンシャルエネルギーが与えられれば,その勾配 gradient から,各粒子にはたらく力が計算できる!

粒子間の力を計算するコード例

for (i=0; i<NUM_ATOM; i++) { for (j=i+1; j<NUM_ATOM; j++) { //作用反作用の法則を考慮

dx=posx[i]-posx[j];dy=posy[i]-posy[j];dz=posz[i]-posz[j];r2=dx*dx+dy*dy+dz*dz;ri06=1.0/(r2*r2*r2);ri12=ri06*ri06;

eng=4*(ri12-ri06);frc=4*(12*ri12-6*ri06)/r2;

eng_pot += eng;frcx[i] += frc*dx;frcy[i] += frc*dy;frcz[i] += frc*dz;frcx[j] -= frc*dx;frcy[j] -= frc*dy;frcz[j] -= frc*dz;

} }

作用反作用の法則を使うと計算量が半分に

Page 19: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

19分子シミュレーションスクール2020

4.例題:単原子系の分子シミュレーション4.2 境界条件

現実の系に比べてごく少数の原子・分子を使って,対象系の物性を調べるためには,

粒子を箱に閉じ込めることはできない.壁の影響を強く受けてしまうから.

周期境界条件 Periodic Boundary Conditions・有限個の粒子が有限体積の計算セルに閉じ込められている.・計算セルは隙間なく3次元的に並べられていると仮定する.

・粒子は計算セルの端から何ら影響を受けずに運動するが,計算セルから出た粒子は反対側の境界から同じ運動量で戻ってくると考える.あるいは,隣のセルのゴースト粒子が実体化すると考えても同じ.

補足:「壁の影響」を見たい場合も,もちろんある.その時は,例えば2次元的な周期境界条件を考えればよい.

Page 20: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

20分子シミュレーションスクール2020

4.例題:単原子系の分子シミュレーション4.2 境界条件

周期境界条件を使う場合の,相互作用の計算に注意

粒子はセル境界に影響されずに自由に動く.ということは,隣の計算セル内の粒子と相互作用することになる.したがって,実質的に同じペアの相互作用を繰り返し足し合わせることがないよう,相互作用の計算はセルサイズの半分以下で打ち切らなければならない (minimal image convention).

周期境界を考慮して粒子間の力を計算するコード例

for (i=0; i<NUM_ATOM; i++) { for (j=i+1; j<NUM_ATOM; j++) { //作用反作用の法則

dx=posx[i]-posx[j];if (dx<-cxh) dx+=CELL_X;else if (dx>cxh) dx-=CELL_X;

dy=posy[i]-posy[j];if (dy<-cyh) dy+=CELL_Y;else if (dy>cyh) dy-=CELL_Y;

dz=posz[i]-posz[j];if (dz<-czh) dz+=CELL_Z;else if (dz>czh) dz-=CELL_Z;

r2=dx*dx+dy*dy+dz*dz;ri06=1.0/(r2*r2*r2);ri12=ri06*ri06;

eng=4*(ri12-ri06);frc=4*(12*ri12-6*ri06)/r2;

eng_pot += eng;frcx[i] += frc*dx;frcy[i] += frc*dy;frcz[i] += frc*dz;frcx[j] -= frc*dx;frcy[j] -= frc*dy;frcz[j] -= frc*dz;

} }

Page 21: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

21分子シミュレーションスクール2020

4.例題:単原子系の分子シミュレーション4.3 分子動力学シミュレーションのコード例

典型的なMDシミュレーションプログラムは次のような構造をしている:int main( ){

int step;

printf("Input Density :");scanf("%lf",&density);printf("Input Target Temperature :");scanf("%lf",&t_target);

CELL_X=CELL_Y=CELL_Z=pow(NUM_ATOM/density, 1/3.0);printf("NUM_ATOM=%d¥n",NUM_ATOM);printf("CELL_X=CELL_Y=CELL_Z=%f¥n",CELL_X);

initial( );initplot( );

for (step=0; step<=TOTAL_STEP; step++) {force( );move( );if (step%SAVE_STEP==0) {

statistics(step);}

}finalplot( );

return 0;}

Page 22: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

22分子シミュレーションスクール2020

ちょっとした実習

Page 23: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

23分子シミュレーションスクール2020

4.例題:単原子系の分子シミュレーション4.4 モンテカルロシミュレーションのコード例

同じく,典型的なMCシミュレーションプログラムは次のような構造をしている:

int main( ){

int step;

printf("Input Target Temperature :");scanf("%lf",&t_target);initial( );initplot( );

for (step=0; step<=TOTAL_STEP; step++) {update( );if (step%SAVE_STEP==0) statistics(step);

}finalplot( );

return 0;}

Page 24: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

24分子シミュレーションスクール2020

4.例題:単原子系の分子シミュレーション4.5 データ解析入門

手間のかかるプログラム開発と,コストのかかるシミュレーション実行が終わり,いよいよ,結果の解析にとりかかれる時が来た! 研究目的に応じて,データ解析の手法はさまざ

まであるが,きっと至福の時のはず・・・と,その前に.

あなたがやりたいシミュレーション は次のどれにあてはまるだろうか?

平衡状態 equilibrium:集団平均,時間平均ともに可能定常状態 steady state:時間平均が可能

非平衡状態 non-equilibrium非定常状態 non-steady state:統計平均をとるのは厄介

9.5 nm

平衡計算の例微小気泡の物性

非定常計算の例沸騰現象の初期過程定常計算の例

温度勾配中の気泡移動

Page 25: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

25分子シミュレーションスクール2020

4.例題:単原子系の分子シミュレーション4.5 データ解析入門

温度の話 ☞奥村先生の講義

・MCシミュレーションなら,温度は我々が与えるべき独立パラメタ

・MDシミュレーションなら・・・熱平衡が仮定できるなら,温度は運動エネルギーの平均値

もちろん,他の自由度(回転など)にも 1

2𝑘𝐵𝑇ずつ配分されているはず.

しかし,これは我々が望んでいた温度とは異なるだろう.

方法 1) 速度スケーリングで、希望する温度に近づけていく

方法 2) “熱浴 thermostat” によって温度を制御する:能勢-Hoover熱浴,Langevin熱浴,…

Page 26: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

26分子シミュレーションスクール2020

4.例題:単原子系の分子シミュレーション4.5 データ解析入門

圧力の話 ☞奥村先生の講義

ビリアルによる圧力の表式

なお,圧力一定の統計集団を作るためには,「体積の揺らぎ」 が必要である.

補足

1) 系に異方性があれば,ビリアルは一般にテンソル量となる.その各成分を局所的に,かつ精度良く求めれば,界面張力などの情報が得られる.

2) 粒子間が引力的であれば,ビリアル項は負になり,条件によっては大きな負圧 negative pressure を生じる.例:LJ流体の圧力の数密度依存性

Page 27: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

27分子シミュレーションスクール2020

4.例題:単原子系の分子シミュレーション4.5 データ解析入門

●分子シミュレーションを行えば,原子・分子の座標や速度など詳細なデータを求

めることができるが,データ量が膨大になるため,そのすべてをハードディスクなどに保存することは難しくなることがある.

●どんなデータ解析を行うか,計画を立ててからシミュレーションを行わないと,解析に必要なデータが足りなくて,シミュレーションをやり直すような事態に陥る!

(ポイント)データの種類,データストアの頻度,ディスク容量

構造解析の例:動径分布関数,構造因子,分子の配向性,・・・

ダイナミクス解析の例:自己速度相関関数,平均2乗変位,・・・

Page 28: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

28分子シミュレーションスクール2020

1.本講の目的

2.分子シミュレーションとは

3.モンテカルロ法 vs. 分子動力学法3.1 統計力学のエッセンス3.2 まずはモンテカルロ法の原理を理解しよう3.3 つづいて分子動力学法の原理を学ぶ3.4 その他、さまざまな分子シミュレーション

4.例題:単原子分子系の分子シミュレーション4.1 分子間の相互作用4.2 境界条件4.3 分子動力学シミュレーション4.4 モンテカルロシミュレーション4.5 データ解析入門

5.計算効率を上げるには5.1 高速化:物理学的な視点から5.2 高速化:数値計算法の視点から5.3 高速化:計算機の視点から

6.分子シミュレーションのためのオープンソースソフトウェアの例6.1 分子シミュレーションソフトウェア6.2 データ可視化用ソフトウェア

Page 29: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

29分子シミュレーションスクール2020

5.計算効率を上げるには5.0 計算速度を支配するもの

“計算屋” の常識1) 無駄な計算はしない例:作用反作用の法則を使って計算量を半分に*しかし,並列計算の場合,あえて (i, j) と (j, i) を別々に計算することもある.

2) 計算量の多い部分をつきとめ,集中的に対処する

プロファイラなどのツールを使って,関数やサブルーチンごとの時間を計測し,重要な部分から効率向上を図ろう.

分子シミュレーションでは,通常,相互作用の計算が最も時間がかかる.なぜなら,粒子数の2乗に比例するから.(2体相互作用の場合)

Page 30: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

30分子シミュレーションスクール2020

5.計算効率を上げるには5.1 物理学的な視点から

(1)相互作用のカットオフ (cutoff, truncation)通常,相互作用は粒子間距離が大きくなるとともに減衰する.そこで,予め,ある距離 rcを決めておき,それより遠くの相互作用は計算しないことにする.

留意点1) カットオフ距離の選び方2) カットオフ時の補正

3) クーロン力など減衰が遅い相互作用はカットできない!

が無視できないから

☞ Ewald法,particle-mesh法(三上先生の講義)

4) でも,カットオフだけではあまり時間の短縮にはならない

Page 31: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

31分子シミュレーションスクール2020

5.計算効率を上げるには5.1 物理学的な視点から

(2)大規模系での相互作用計算のサボり方・帳簿法 Book keeping method

それぞれの粒子について,相互作用する可能性のある相手粒子をあらかじめリストアップしておく.リストは粒子の移動状況に応じて「時々」更新する.

・セル分割法 Cell division method計算系を rc程度のサブセルに分割しておく.相互作用

は,1つのサブセル内,および隣り合うサブセルの粒子間のみを考えればよい.

さらに大規模な系や長距離相互作用がある系に対しては・粒子-セル法 Particle-particle & particle-cell method・多重極子展開法Multipole expansion method・・・ ☞三上先生の講義

Page 32: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

32分子シミュレーションスクール2020

5.計算効率を上げるには5.1 物理学的な視点から

こうした工夫により,計算時間が粒子数にほぼ比例するようになれば大成功!

LJ流体系の計算時間の例(数密度 0.8, カットオフ距離 3.5σ)

Page 33: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

33分子シミュレーションスクール2020

5.計算効率を上げるには5.2 数値計算法の視点から

MD法において,なるべく時間刻み Dt を大きくしよう

・シンプレクティック積分法エネルギー保存則を満足しつつ,系統的に数値積分の精度を上げることができる.

☞吉井先生の講義

・マルチタイムステップ法

特徴的な時間が大きく異なる複数の運動がある場合,普通なら,最も速い運動に合わせて Dt を与えなければならない.速い運動には短いDt を,遅い運動には長いDt を使うと,それほど精度を落とさずに計算できるはず…

⇒とくにマルチスケールシミュレーション, 粗視化シミュレーション,ハイブリッドシミュレーションなどに有効

(例) 圧力波による気泡崩壊のシミュレーション気泡から離れたバルク液体領域は,20Dtで流体計算をおこなっている

Page 34: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

34分子シミュレーションスクール2020

(1)高速なハードウェアを使おう 2020年6月の TOP500 リストから

5.計算効率を上げるには5.3 計算機の視点から

1) 理研の富岳が 1位に!

2) USAと中国が上位を占める

• 上位はすべて十万コア以上の並列分散型

• GPU や XeonPhiなどのmany core accelaratorが大活躍

Page 35: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

35分子シミュレーションスクール2020

5.計算効率を上げるには5.3 計算機の視点から

(2)並列計算機をうまく使おう

並列計算機の基礎知識

○分散メモリ型ハードウェアのコストパフォーマンスが良い大規模並列計算システムの主流(PCクラスターからスパコンまで)

データ管理は原則としてユーザーの責任GPUやCELLもこの仲間

記述言語:PVM,MPI,CUDA,OpenCL,・・・

○共有メモリ型メモリを共有する特別な仕掛けが必要大規模な並列計算には不向きマルチコアプロセッサでは使える技術Quad Core,Xeon Phi などが身近にある

記述言語:OpenMPが便利

Page 36: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

36分子シミュレーションスクール2020

OpenMP を使ったMDプログラムの並列化:素朴な例

for (i=0; i<NUM_ATOM; i++) {fix=fiy=fiz=0.0;

#pragma omp parallel for private (dx,dy,dz,r2,ri06,ri12,eng,frc) reduction(+:eng_pot,fix,fiy,fiz)for (j=i+1; j<NUM_ATOM; j++) {

dx=posx[i]-posx[j];if (dx<-cxh) dx+=CELL_X; else if (dx>cxh) dx-=CELL_X;

dy=posy[i]-posy[j];if (dy<-cyh) dy+=CELL_Y; else if (dy>cyh) dy-=CELL_Y;

dz=posz[i]-posz[j];if (dz<-czh) dz+=CELL_Z; else if (dz>czh) dz-=CELL_Z;

r2=dx*dx+dy*dy+dz*dz;

if (r2<RCUT*RCUT) {ri06=1.0/(r2*r2*r2);ri12=ri06*ri06;eng=4*(ri12-ri06);frc=4*(12*ri12-6*ri06)/r2;

eng_pot += eng;fix += frc*dx;fiy += frc*dy;fiz += frc*dz;frcx[j] -= frc*dx;frcy[j] -= frc*dy;frcz[j] -= frc*dz;

}}

frcx[i]+=fix;frcy[i]+=fiy;frcz[i]+=fiz;

}}

並列化前のforce計算部分for (i=0; i<NUM_ATOM; i++) { for (j=i+1; j<NUM_ATOM; j++) {

dx=posx[i]-posx[j];if (dx<-cxh) dx+=CELL_X; else if (dx>cxh) dx-=CELL_X;

dy=posy[i]-posy[j];if (dy<-cyh) dy+=CELL_Y; else if (dy>cyh) dy-=CELL_Y;

dz=posz[i]-posz[j];if (dz<-czh) dz+=CELL_Z; else if (dz>czh) dz-=CELL_Z;

r2=dx*dx+dy*dy+dz*dz;ri06=1.0/(r2*r2*r2);ri12=ri06*ri06;

eng=4*(ri12-ri06);frc=4*(12*ri12-6*ri06)/r2;

eng_pot += eng;frcx[i] += frc*dx;frcy[i] += frc*dy;frcz[i] += frc*dz;frcx[j] -= frc*dx;frcy[j] -= frc*dy;frcz[j] -= frc*dz;

} }

(時間があれば)簡単な実習

Page 37: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

37分子シミュレーションスクール2020

Xeon Phi + Intel Parallel Studio XE を用いたMDプログラムの並列化の例(粟生,2015,卒業論文,京都大学)

Lennard-Jones流体系(液体密度)

• セル分割法• 計算時間∝粒子数

Xeon single threadに比べて• Xeon 8 threads で5倍程度の高速化• Xeon Phi (228 threads)で7倍程度

Page 38: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

38分子シミュレーションスクール2020

1.本講の目的

2.分子シミュレーションとは

3.モンテカルロ法 vs. 分子動力学法3.1 統計力学のエッセンス3.2 まずはモンテカルロ法の原理を理解しよう3.3 つづいて分子動力学法の原理を学ぶ3.4 その他、さまざまな分子シミュレーション

4.例題:単原子分子系の分子シミュレーション4.1 分子間の相互作用4.2 境界条件4.3 分子動力学シミュレーション4.4 モンテカルロシミュレーション4.5 データ解析入門

5.計算効率を上げるには5.1 高速化:物理学的な視点から5.2 高速化:数値計算法の視点から5.3 高速化:計算機の視点から

6.分子シミュレーションのためのオープンソースソフトウェアの例6.1 分子シミュレーションソフトウェア6.2 データ可視化用ソフトウェア

Page 39: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

39分子シミュレーションスクール2020

6.オープンソースソフトウェア

分子シミュレーション1. GROMACS2. CHARMM3. AMBER4. LAMMPS5. …

相互作用モデル(力場)1. CHARMM2. AMBER3. OPLS4. …

可視化ソフト1. VMD2. Jmol3. …

(時間があれば) LAMMPS と VMD のちょっとした実演

VMDでの可視化例

Page 40: シミュレーションの全体像・概論 · 2020. 9. 3. · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2020 1 第14回分子シミュレーションスクール

シミュレーションの全体像・概論:松本充弘

40分子シミュレーションスクール2020

1.本講の目的

2.分子シミュレーションとは

3.モンテカルロ法 vs. 分子動力学法3.1 統計力学のエッセンス3.2 まずはモンテカルロ法の原理を理解しよう3.3 つづいて分子動力学法の原理を学ぶ3.4 その他、さまざまな分子シミュレーション

4.例題:単原子分子系の分子シミュレーション4.1 分子間の相互作用4.2 境界条件4.3 分子動力学シミュレーション4.4 モンテカルロシミュレーション4.5 データ解析入門

5.計算効率を上げるには5.1 高速化:物理学的な視点から5.2 高速化:数値計算法の視点から5.3 高速化:計算機の視点から

6.分子シミュレーションのためのオープンソースソフトウェアの例6.1 分子シミュレーションソフトウェア6.2 データ可視化用ソフトウェア

ここまでで,分子シミュレーションに関する基礎事項の説明/復習はすべて終わりました.以降の講義への興味をかきたてることができたなら幸いです…

それでは質問をどうぞ

4章,5章の主なサンプルプログラムはhttp://www.mitsuhiromatsumoto.mech.kyoto-u.ac.jp/

からダウンロードできます.