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

シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 1: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

1 分子シミュレーションスクール2017 (岡崎)

Sep.4, 14:00-15:30

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

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

現在の専門分野

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

Page 2: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

2 分子シミュレーションスクール2017 (岡崎)

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.分子シミュレーションのためのオープンソースソフトウェアの例

Page 3: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

3 分子シミュレーションスクール2017 (岡崎)

1.本講の目的

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

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

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

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

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

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

Page 4: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

4 分子シミュレーションスクール2017 (岡崎)

本スクールのロードマップ: 2017年度は・・・

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

Page 5: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

5 分子シミュレーションスクール2017 (岡崎)

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

例えば amazon のホームページで 和書 “分子シミュレーション” や 洋書 “molecular simulation” 等でキーワード検索してみてください.

Page 6: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

6 分子シミュレーションスクール2017 (岡崎)

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.分子シミュレーションのためのオープンソースソフトウェアの例

Page 7: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

7 分子シミュレーションスクール2017 (岡崎)

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

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

その出現確率 ∝ P(s)

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

s

s

sP

sPsA

A)(

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

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

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

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

主な統計集団

Page 8: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

8 分子シミュレーションスクール2017 (岡崎)

2状態モデルを例とすると ベクトルで略記すると 平衡状態のベクトルが満たすべき条件 平衡状態がボルツマン分布になるための十分条件 すなわち これが Metropolis MC 法 (1953)の原理である.

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

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

遷移行列

Page 9: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

9 分子シミュレーションスクール2017 (岡崎)

#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? 10 10 0.8000 0.2000 Number of Steps? 100 100 0.7300 0.2700 Number of Steps? 1000 1000 0.7340 0.2660 Number of Steps? 10000 10000 0.7289 0.2711 Number of Steps? 100000 100000 0.7305 0.2695 Number of Steps? 1000000 1000000 0.7313 0.2687 Number of Steps? 10000000 10000000 0.7311 0.2689 厳密な比は 1:exp(-1) ≅ 0.73106 : 0.26894

Page 10: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

10 分子シミュレーションスクール2017 (岡崎)

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

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

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

s

s

sP

sPsA

A)(

)()(

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

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

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

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

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

Page 11: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

11 分子シミュレーションスクール2017 (岡崎)

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: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

12 分子シミュレーションスクール2017 (岡崎)

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

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; }

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

Page 13: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

13 分子シミュレーションスクール2017 (岡崎)

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

より精密に MC法・MD法はポテンシャル関数が与えられていることが前提である.粒子配置が更新されるた

びに量子力学方程式を解いてエネルギーや力を精密に求めなおすというアイディアは,第一原理MD法として結実している. より複雑な系を

タンパク質や界面活性剤系に代表される,膨大な内部自由度を有する分子の集合体をなるべく余分な近似なしに直接計算しようという機運が高まっている. ☞ 高田先生,長岡先生,藤崎先生の講義 より大規模な系を 物理現象の階層性を利用した粗視化シミュレーション,ブラウニアンダイナミクスシミュレーション, 散逸粒子動力学計算,マルチスケールシミュレーション,ハイブリッド計算などの手法の開拓が さかんである. ☞ 篠田先生,高田先生の講義 連続体力学からのアプローチ メッシュフリー数値解析の1つとして分子シミュレーションの手法を 発展させた粒子シミュレーション法(MPS法,SPH法など)の応用が 広がっている.

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

Page 14: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

14 分子シミュレーションスクール2017 (岡崎)

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.分子シミュレーションのためのオープンソースソフトウェアの例

Page 15: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

15 分子シミュレーションスクール2017 (岡崎)

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

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

ソフトウェアを自作しようとしている方々へ: ところで,プログラミング言語は何がいいか? ・コンピュータが正しく動くなら原理的には何でもOK 浮動小数点演算ができる,構造化プログラミング,オブジェクト指向,… ・趣味的なプログラミングなら Basic, Visual Basic, … ・過去の蓄積を重視するなら Fortran77, Fortran90, … ・将来性や計算性能を考えると C, C++, … ・その他 Javaなどでウェブアプリ化を目指す人も・・・

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

Page 16: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

16 分子シミュレーションスクール2017 (岡崎)

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

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

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

☞ 三上先生の講義

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

1次の項:電場や重力場などの外場をあらわす.普通はゼロ

高次の項:多体相互作用

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

Page 17: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

17 分子シミュレーションスクール2017 (岡崎)

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

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

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

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

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

Page 18: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

18 分子シミュレーションスクール2017 (岡崎)

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: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

19 分子シミュレーションスクール2017 (岡崎)

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

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

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

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

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

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

Page 20: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

20 分子シミュレーションスクール2017 (岡崎)

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: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

21 分子シミュレーションスクール2017 (岡崎)

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: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

22 分子シミュレーションスクール2017 (岡崎)

ちょっとした実習

Page 23: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

23 分子シミュレーションスクール2017 (岡崎)

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: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

24 分子シミュレーションスクール2017 (岡崎)

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

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

法はさまざまであるが,きっと至福の時のはず・・・

と,その前に.

あなたが目指すシミュレーションは次のどれにあてはまるだろうか? 平衡状態 equilibrium:集団平均,時間平均ともに可能 定常状態 steady state:時間平均が可能 非平衡状態 non-equilibrium 非定常状態 non-steady state:統計平均をとるのは厄介

9.5 nm

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

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

温度勾配中の気泡移動

Page 25: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

25 分子シミュレーションスクール2017 (岡崎)

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

温度の話 ☞ 奥村先生の講義 ・MCシミュレーションなら,温度 は我々が与えるべき外部パラメタ ・MDシミュレーションなら・・・ 熱平衡が仮定できるなら,温度は運動エネルギーの平均値 もちろん,他の自由度(回転など)にも 1

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

しかし,これは我々が望んでいた温度とは異なるだろう. 方法 1) 速度スケーリングで、希望する温度に近づけていく 方法 2) “熱浴 thermostat” によって温度を制御する: 能勢-Hoover熱浴,Langevin熱浴,…

Page 26: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

26 分子シミュレーションスクール2017 (岡崎)

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

圧力の話 ☞ 奥村先生の講義 ビリアルによる圧力の表式 圧力一定の統計集団を作るためには,「体積の揺らぎ」 が必要である.

補足

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

2) 粒子間が引力的であれば,ビリアル項は負になり,条件によっては大きな負圧 negative pressure を生じる.

例:LJ流体の圧力の数密度依存性

Page 27: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

27 分子シミュレーションスクール2017 (岡崎)

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

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

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

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

(ポイント)データの種類,データストアの頻度,ディスク容量 構造解析の例: 動径分布関数,構造因子,分子の配向性,・・・ ダイナミクス解析の例: 自己速度相関関数,平均2乗変位,・・・

Page 28: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

28 分子シミュレーションスクール2017 (岡崎)

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.分子シミュレーションのためのオープンソースソフトウェアの例

Page 29: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

29 分子シミュレーションスクール2017 (岡崎)

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

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

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

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

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

Page 30: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

30 分子シミュレーションスクール2017 (岡崎)

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

(1)相互作用のカットオフ (cutoff, truncation)

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

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

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

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

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

Page 31: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

31 分子シミュレーションスクール2017 (岡崎)

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

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

それぞれの粒子について,相互作用する可能性のある相手粒子をあらかじめリストアップしておく.リストは粒子の移動状況に応じて「時々」更新する. ・セル分割法 Cell division method 計算系を rc 程度のサブセルに分割しておく.相互

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

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

Page 32: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

32 分子シミュレーションスクール2017 (岡崎)

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

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

Page 33: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

33 分子シミュレーションスクール2017 (岡崎)

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

MD法において,なるべく時間刻み Dt を大きくしよう ・シンプレクティック積分法 エネルギー保存則を満足しつつ,系統的に数値積分の精度を上げることができる.

☞ 吉井先生の講義

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

特徴的な時間が大きく異なる複数の運動がある場合,普通なら,最も速い運動に合わせて Dt を与えなければならない.速い運動には短いDt を,遅い運動には長いDt を使うと,それほど精度を落とさずに計算できるはず… ⇒とくにマルチスケールシミュレーション, 粗視化シミュレーション, ハイブリッドシミュレーションなどに有効 ☞ 篠田先生の講義

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

Page 34: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

34 分子シミュレーションスクール2017 (岡崎)

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

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

1) 中国が1位,2位… 2) JCAHPC@柏が日本トップで,第7位 3) 京コンピュータは現在,第8位. 4) TOP500のうち,中国,米国が 1/3 ずつ (日本は 8.3 %) • 上位はすべて数万コア以上の並列分散型 • GPU や XeonPhi などのaccelarator が大活躍

Page 35: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

35 分子シミュレーションスクール2017 (岡崎)

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

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

並列計算機の基礎知識

○分散メモリ型 ハードウェアのコストパフォーマンスが良い 並列計算システムの主流 (PCクラスターからスパコンまで) データ管理は原則としてユーザーの責任 GPUやCELLもこの仲間

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

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

記述言語:OpenMP が便利

Page 36: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

36 分子シミュレーションスクール2017 (岡崎)

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: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

37 分子シミュレーションスクール2017 (岡崎)

最近の話題 Xeon Phi コプロセッサー http://ascii.jp/elem/000/000/818/818030/ より

既存のデータ解析とビッグデータの大きな差である処理速度や解像度。このギャップを埋めるには、既存のサーバーアーキテクチャでは難しい。ハイパースケールな拡張性を実現すべくインテルが開発したのが、「Xeon Phiコプロセッサー製品ファミリー」である。 ・・・ Xeon Phiは、超並列処理を実現するHPC(High Performance Computing) 向けのコプロセッサーユニットだ。最大61のプロセッサーコアとローカルメモリをPCIボードに搭載し、メインCPUからの処理をオフロードするコプロセッサーとして動作する。 NECの試算では、一般的な 2ソケットサーバー120台を 用いていた処理を、1/10の台数で行なえるという。また、 設置面積は約1/3、消費電力は約1/6に削減できる。 さらにXeon Phi の採用によって、独自の開発環境やス キルが不要となるため、アプリケーションの移行コスト も大幅に削減することが可能だ。

*2016年6月,計算速度が3倍に増強された第2世代チップ,Knights Landing が発売された.

Page 38: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

38 分子シミュレーションスクール2017 (岡崎)

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

Lennard-Jones流体系(液体密度) • セル分割法 • 計算時間∝粒子数

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

Page 39: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

39 分子シミュレーションスクール2017 (岡崎)

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.分子シミュレーションのためのオープンソースソフトウェアの例

Page 40: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

40 分子シミュレーションスクール2017 (岡崎)

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

分子シミュレーション 1. GROMACS 2. CHARMM 3. LAMMPS 4. …

相互作用モデル(力場) 1. CHARMM 2. AMBER 3. OPLS 4. …

可視化ソフト 1. VMD 2. …

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

Page 41: シミュレーションの全体像・概論 · シミュレーションの全体像・概論:松本充弘 分子シミュレーションスクール2017 (岡崎) 3 1.本講の目的

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

41 分子シミュレーションスクール2017 (岡崎)

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.分子シミュレーションのためのオープンソースソフトウェアの例

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

それでは質問をどうぞ

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

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