どぼるざーくとゆく、高分子シミュレーション

lammpsやOCTAなどの高分子シミュレーターについて四苦八苦しながら学んでいくブログです。Twitterアカウント@lammps_octa

【lammps】ファイルを実行してみよう!

はじめに

皆さんこんにちは!

今回はlammpsでシミュレーションをしてみたいと思います!

扱うのはバネモデルです!さっそくやってみましょう。

 用意するファイル

今回のシミュレーションでは『IN』『CONFIG』『Param』のファイルをまず用意します。以下にそれらのファイルに書くべきコード簡単な役割を説明します。

・IN

コードは以下のようになっています。

このファイルはlammpsでシミュレーションをする際の条件を指定しています。

 

##/bin/sh

units       real
atom_style  molecular

boundary p p p
read_data   CONFIG

include Param


neighbor  10.0 bin
neigh_modify  delay 0  every 1  check yes
neigh_modify  page 2000000  one 50000 


variable  dt    equal   10
variable  Nstep equal   40000
variable  dNcfg equal   ${Nstep}/100
variable  dNout equal   ${Nstep}/100
variable  Tini  equal   323
variable  Tend  equal   323
variable  Tmass equal   ${dt}*100
variable  Pini  equal   1.0
variable  Pend  equal   1.0
variable  Pmass equal   ${dt}*1000

thermo_style  multi
thermo  ${dNout}

timestep  ${dt}

velocity all create ${Tini} 1 rot yes dist gaussian

fix 1 all nvt  temp ${Tini} ${Tend} ${Tmass}


fix engout all print ${dNout} "$(step) $(ke) $(pe)"                   screen no file energy.d
fix strout all print ${dNout} "$(step) $(pxx) $(pyy) $(pzz)"          screen no file stress.d
fix cllout all print ${dNout} "$(step) $(vol) $(lx) $(ly) $(lz)"   screen no file cell.d
dump 3 all cfg    ${dNcfg}   *.cfge mass type xs ys zs mol fx fy fz
#dump 4 all custom ${dNcfg}   *.atom id mol type id xu yu zu fx fy fz
dump_modify 3 element C

run    ${Nstep}

write_data CONFIG.OUT nocoeff

 

・CONFIG

コードは以下のようになっています。

このCONFIGファイルは粒子の位置や粒子の重さ、セルサイズをしています。

#各種結合の設定
100 atoms
1 atom types
99 bonds
1 bond types
98 angles
1 angle types
97 dihedrals
1 dihedral types

#cell initial size
0 150 xlo xhi
0 150 ylo yhi
0 150 zlo zhi
 

Masses

1 44.0
 

Atoms

1 1 1 50.0 0.0 50 0 0 0
2 1 1 50.0 1.0 50 0 0 0
3 1 1 50.0 2.0 50 0 0 0
4 1 1 50.0 3.0 50 0 0 0
5 1 1 50.0 4.0 50 0 0 0
6 1 1 50.0 5.0 50 0 0 0
7 1 1 50.0 6.0 50 0 0 0
8 1 1 50.0 7.0 50 0 0 0
9 1 1 50.0 8.0 50 0 0 0
10 1 1 50.0 9.0 50 0 0 0
11 1 1 50.0 10.0 50 0 0 0
12 1 1 50.0 11.0 50 0 0 0
13 1 1 50.0 12.0 50 0 0 0
14 1 1 50.0 13.0 50 0 0 0
15 1 1 50.0 14.0 50 0 0 0
16 1 1 50.0 15.0 50 0 0 0
17 1 1 50.0 16.0 50 0 0 0
18 1 1 50.0 17.0 50 0 0 0
19 1 1 50.0 18.0 50 0 0 0
20 1 1 50.0 19.0 50 0 0 0
21 1 1 50.0 20.0 50 0 0 0
22 1 1 50.0 21.0 50 0 0 0
23 1 1 50.0 22.0 50 0 0 0
24 1 1 50.0 23.0 50 0 0 0
25 1 1 50.0 24.0 50 0 0 0
26 1 1 50.0 25.0 50 0 0 0
27 1 1 50.0 26.0 50 0 0 0
28 1 1 50.0 27.0 50 0 0 0
29 1 1 50.0 28.0 50 0 0 0
30 1 1 50.0 29.0 50 0 0 0
31 1 1 50.0 30.0 50 0 0 0
32 1 1 50.0 31.0 50 0 0 0
33 1 1 50.0 32.0 50 0 0 0
34 1 1 50.0 33.0 50 0 0 0
35 1 1 50.0 34.0 50 0 0 0
36 1 1 50.0 35.0 50 0 0 0
37 1 1 50.0 36.0 50 0 0 0
38 1 1 50.0 37.0 50 0 0 0
39 1 1 50.0 38.0 50 0 0 0
40 1 1 50.0 39.0 50 0 0 0
41 1 1 50.0 40.0 50 0 0 0
42 1 1 50.0 41.0 50 0 0 0
43 1 1 50.0 42.0 50 0 0 0
44 1 1 50.0 43.0 50 0 0 0
45 1 1 50.0 44.0 50 0 0 0
46 1 1 50.0 45.0 50 0 0 0
47 1 1 50.0 46.0 50 0 0 0
48 1 1 50.0 47.0 50 0 0 0
49 1 1 50.0 48.0 50 0 0 0
50 1 1 50.0 49.0 50 0 0 0
51 1 1 50.0 50.0 50 0 0 0
52 1 1 50.0 51.0 50 0 0 0
53 1 1 50.0 52.0 50 0 0 0
54 1 1 50.0 53.0 50 0 0 0
55 1 1 50.0 54.0 50 0 0 0
56 1 1 50.0 55.0 50 0 0 0
57 1 1 50.0 56.0 50 0 0 0
58 1 1 50.0 57.0 50 0 0 0
59 1 1 50.0 58.0 50 0 0 0
60 1 1 50.0 59.0 50 0 0 0
61 1 1 50.0 60.0 50 0 0 0
62 1 1 50.0 61.0 50 0 0 0
63 1 1 50.0 62.0 50 0 0 0
64 1 1 50.0 63.0 50 0 0 0
65 1 1 50.0 64.0 50 0 0 0
66 1 1 50.0 65.0 50 0 0 0
67 1 1 50.0 66.0 50 0 0 0
68 1 1 50.0 67.0 50 0 0 0
69 1 1 50.0 68.0 50 0 0 0
70 1 1 50.0 69.0 50 0 0 0
71 1 1 50.0 70.0 50 0 0 0
72 1 1 50.0 71.0 50 0 0 0
73 1 1 50.0 72.0 50 0 0 0
74 1 1 50.0 73.0 50 0 0 0
75 1 1 50.0 74.0 50 0 0 0
76 1 1 50.0 75.0 50 0 0 0
77 1 1 50.0 76.0 50 0 0 0
78 1 1 50.0 77.0 50 0 0 0
79 1 1 50.0 78.0 50 0 0 0
80 1 1 50.0 79.0 50 0 0 0
81 1 1 50.0 80.0 50 0 0 0
82 1 1 50.0 81.0 50 0 0 0
83 1 1 50.0 82.0 50 0 0 0
84 1 1 50.0 83.0 50 0 0 0
85 1 1 50.0 84.0 50 0 0 0
86 1 1 50.0 85.0 50 0 0 0
87 1 1 50.0 86.0 50 0 0 0
88 1 1 50.0 87.0 50 0 0 0
89 1 1 50.0 88.0 50 0 0 0
90 1 1 50.0 89.0 50 0 0 0
91 1 1 50.0 90.0 50 0 0 0
92 1 1 50.0 91.0 50 0 0 0
93 1 1 50.0 92.0 50 0 0 0
94 1 1 50.0 93.0 50 0 0 0
95 1 1 50.0 94.0 50 0 0 0
96 1 1 50.0 95.0 50 0 0 0
97 1 1 50.0 96.0 50 0 0 0
98 1 1 50.0 97.0 50 0 0 0
99 1 1 50.0 98.0 50 0 0 0
100 1 1 50.0 99.0 50 0 0 0
 

Bonds

1 1 1 2
2 1 2 3
3 1 3 4
4 1 4 5
5 1 5 6
6 1 6 7
7 1 7 8
8 1 8 9
9 1 9 10
10 1 10 11
11 1 11 12
12 1 12 13
13 1 13 14
14 1 14 15
15 1 15 16
16 1 16 17
17 1 17 18
18 1 18 19
19 1 19 20
20 1 20 21
21 1 21 22
22 1 22 23
23 1 23 24
24 1 24 25
25 1 25 26
26 1 26 27
27 1 27 28
28 1 28 29
29 1 29 30
30 1 30 31
31 1 31 32
32 1 32 33
33 1 33 34
34 1 34 35
35 1 35 36
36 1 36 37
37 1 37 38
38 1 38 39
39 1 39 40
40 1 40 41
41 1 41 42
42 1 42 43
43 1 43 44
44 1 44 45
45 1 45 46
46 1 46 47
47 1 47 48
48 1 48 49
49 1 49 50
50 1 50 51
51 1 51 52
52 1 52 53
53 1 53 54
54 1 54 55
55 1 55 56
56 1 56 57
57 1 57 58
58 1 58 59
59 1 59 60
60 1 60 61
61 1 61 62
62 1 62 63
63 1 63 64
64 1 64 65
65 1 65 66
66 1 66 67
67 1 67 68
68 1 68 69
69 1 69 70
70 1 70 71
71 1 71 72
72 1 72 73
73 1 73 74
74 1 74 75
75 1 75 76
76 1 76 77
77 1 77 78
78 1 78 79
79 1 79 80
80 1 80 81
81 1 81 82
82 1 82 83
83 1 83 84
84 1 84 85
85 1 85 86
86 1 86 87
87 1 87 88
88 1 88 89
89 1 89 90
90 1 90 91
91 1 91 92
92 1 92 93
93 1 93 94
94 1 94 95
95 1 95 96
96 1 96 97
97 1 97 98
98 1 98 99
99 1 99 100
 

Angles

1 1 1 2 3
2 1 2 3 4
3 1 3 4 5
4 1 4 5 6
5 1 5 6 7
6 1 6 7 8
7 1 7 8 9
8 1 8 9 10
9 1 9 10 11
10 1 10 11 12
11 1 11 12 13
12 1 12 13 14
13 1 13 14 15
14 1 14 15 16
15 1 15 16 17
16 1 16 17 18
17 1 17 18 19
18 1 18 19 20
19 1 19 20 21
20 1 20 21 22
21 1 21 22 23
22 1 22 23 24
23 1 23 24 25
24 1 24 25 26
25 1 25 26 27
26 1 26 27 28
27 1 27 28 29
28 1 28 29 30
29 1 29 30 31
30 1 30 31 32
31 1 31 32 33
32 1 32 33 34
33 1 33 34 35
34 1 34 35 36
35 1 35 36 37
36 1 36 37 38
37 1 37 38 39
38 1 38 39 40
39 1 39 40 41
40 1 40 41 42
41 1 41 42 43
42 1 42 43 44
43 1 43 44 45
44 1 44 45 46
45 1 45 46 47
46 1 46 47 48
47 1 47 48 49
48 1 48 49 50
49 1 49 50 51
50 1 50 51 52
51 1 51 52 53
52 1 52 53 54
53 1 53 54 55
54 1 54 55 56
55 1 55 56 57
56 1 56 57 58
57 1 57 58 59
58 1 58 59 60
59 1 59 60 61
60 1 60 61 62
61 1 61 62 63
62 1 62 63 64
63 1 63 64 65
64 1 64 65 66
65 1 65 66 67
66 1 66 67 68
67 1 67 68 69
68 1 68 69 70
69 1 69 70 71
70 1 70 71 72
71 1 71 72 73
72 1 72 73 74
73 1 73 74 75
74 1 74 75 76
75 1 75 76 77
76 1 76 77 78
77 1 77 78 79
78 1 78 79 80
79 1 79 80 81
80 1 80 81 82
81 1 81 82 83
82 1 82 83 84
83 1 83 84 85
84 1 84 85 86
85 1 85 86 87
86 1 86 87 88
87 1 87 88 89
88 1 88 89 90
89 1 89 90 91
90 1 90 91 92
91 1 91 92 93
92 1 92 93 94
93 1 93 94 95
94 1 94 95 96
95 1 95 96 97
96 1 96 97 98
97 1 97 98 99
98 1 98 99 100
 

Dihedrals

1 1 1 2 3 4
2 1 2 3 4 5
3 1 3 4 5 6
4 1 4 5 6 7
5 1 5 6 7 8
6 1 6 7 8 9
7 1 7 8 9 10
8 1 8 9 10 11
9 1 9 10 11 12
10 1 10 11 12 13
11 1 11 12 13 14
12 1 12 13 14 15
13 1 13 14 15 16
14 1 14 15 16 17
15 1 15 16 17 18
16 1 16 17 18 19
17 1 17 18 19 20
18 1 18 19 20 21
19 1 19 20 21 22
20 1 20 21 22 23
21 1 21 22 23 24
22 1 22 23 24 25
23 1 23 24 25 26
24 1 24 25 26 27
25 1 25 26 27 28
26 1 26 27 28 29
27 1 27 28 29 30
28 1 28 29 30 31
29 1 29 30 31 32
30 1 30 31 32 33
31 1 31 32 33 34
32 1 32 33 34 35
33 1 33 34 35 36
34 1 34 35 36 37
35 1 35 36 37 38
36 1 36 37 38 39
37 1 37 38 39 40
38 1 38 39 40 41
39 1 39 40 41 42
40 1 40 41 42 43
41 1 41 42 43 44
42 1 42 43 44 45
43 1 43 44 45 46
44 1 44 45 46 47
45 1 45 46 47 48
46 1 46 47 48 49
47 1 47 48 49 50
48 1 48 49 50 51
49 1 49 50 51 52
50 1 50 51 52 53
51 1 51 52 53 54
52 1 52 53 54 55
53 1 53 54 55 56
54 1 54 55 56 57
55 1 55 56 57 58
56 1 56 57 58 59
57 1 57 58 59 60
58 1 58 59 60 61
59 1 59 60 61 62
60 1 60 61 62 63
61 1 61 62 63 64
62 1 62 63 64 65
63 1 63 64 65 66
64 1 64 65 66 67
65 1 65 66 67 68
66 1 66 67 68 69
67 1 67 68 69 70
68 1 68 69 70 71
69 1 69 70 71 72
70 1 70 71 72 73
71 1 71 72 73 74
72 1 72 73 74 75
73 1 73 74 75 76
74 1 74 75 76 77
75 1 75 76 77 78
76 1 76 77 78 79
77 1 77 78 79 80
78 1 78 79 80 81
79 1 79 80 81 82
80 1 80 81 82 83
81 1 81 82 83 84
82 1 82 83 84 85
83 1 83 84 85 86
84 1 84 85 86 87
85 1 85 86 87 88
86 1 86 87 88 89
87 1 87 88 89 90
88 1 88 89 90 91
89 1 89 90 91 92
90 1 90 91 92 93
91 1 91 92 93 94
92 1 92 93 94 95
93 1 93 94 95 96
94 1 94 95 96 97
95 1 95 96 97 98
96 1 96 97 98 99
97 1 97 98 99 100

 

・Param

以下がコードです。

このParamファイルはシミュレーションをする際のポテンシャル関数を指定しています。

 

#### References ################################################


pair_style lj/gromacs 9.0 12.0
bond_style harmonic
angle_style cosine/squared
dihedral_style fourier


#### PAIR ######################################################
pair_coeff   1 1 0.8066 4.3


#### BOND ######################################################
bond_coeff 1 20.32 3.30

#### ANGLE ######################################################
angle_coeff 1 10.16 130

#### DIHEDRAL ######################################################
dihedral_coeff 1 4 0.4685 1 180 0.04302 2 0 0.07887 3 0 0.02868 4 0

 シミュレーションの実行

①ファイルを準備する

先ほどのコードが書かれたファイルを3つ準備する。

Windowsの場合は新規テキストにベタ張りした後にファイル名を変更すればよい。

(※拡張子はナシです。Windowsなどの場合は省略される場合があるので設定を変更しておきましょう。)

 

②lammpsを実行

それらのファイルがある場所でターミナルを開き、lammpsを実行する。

(1)単コアの場合

lmp_serial < IN

を入力する。

 

(2)MPIの場合

mpirun -np (使用するコア数) lmp_mpi < IN

を入力する。

 

(3)OPTパッケージでMPIを実行する

mpirun -np (使用するコア数) lmp_mpi -sf opt < IN

を入力する。

 

どれを実行しても5秒くらいで計算が終わると思います。

 

さいごに

今回のシミュレーションが上手くいくと以下のような結果が得られます!


【lammps】ファイルを実行してみよう!

 

次の記事でこのような動画の作成の仕方を紹介したいと思います!!

それでは!

【lammps】lammpsをMPI環境(並列して)で使う!!

はじめに

皆さんこんばんは!

前回の記事でlammpsの導入をしましたが、単コアの環境しか出来ていなかったので並列化計算ができるようにしました!!

(lammpsのメリットは並列化ですもんね(^^♪)

それではやりましょう。

 

方法

①必要なパッケージを選択する

まずは前回記事と同様にlammpsをダウンロードして、必要なパッケージを選択します。(OPTパッケージが並列化にはおススメだそうです。)

⇓過去の記事

 

polymer-simulation-beginners.hatenablog.com

 

②MPI環境を整える

sudo apt install build-essential libopenmpi-dev

のコマンドを使うとOpenMPIがインストールされます。他にもMake,C++コンパイラが必要になるそうなので、適宜導入しましょう。

qiita.com

③makeする

make mpi

をsrcファイルで実行する。これでlmp_mpiファイルが作成される。

 

※ここでもしpermitted errorが表示された場合

そのファイルが実行できていないのでLinuxパーミッションを変更します。

chmod 777 (フォルダのディレクトリ)   (例 chmod 777 lammps/src/tuyo.file)

詳しくは以下のページを参考にしました。

eng-entrance.com

 

さいごに

いかがでしたか?

makeが実行できないエラーは主にパーミッションによる部分なので、そこに注意をしてMPI環境を構築しましょう!!

 

【OCTA】OCTAを使えるようにしよう!!

はじめに

皆さんこんにちは!

今回はOCTAを実行できるように環境を構築しましょう。

(lammpsに比べたらかなり楽)

 

手順

①OCTAのダウンロード

OCTAを配布しているサイトでダウンロードします。

このダウンロードが鬼門で、かなりの確率でダウンロードがストップします。ダウンロード中は目を離さないようにしましょう。

 

 ②ソフトを解凍する

ダウンロードしたソフトをクリックして解凍・実行する。

おわり。

 

さいごに

lammpsと比べるとかなりアッサリと環境が整います!

lammpsで挫折した人でもOCTAは簡単に使えるようになるので試してみてはいかがでしょうか??

【lammps】lammpsを実行できるようにするぞ!!!!(WindowsでLinuxを実行)

はじめに

みなさん、こんにちは!
今回はlammpsを使えるようにするために環境設定を行いたいと思います!

(並列計算がどうしてもできなかったので、今回は単コアの場合ですごめんなさい('_'))

以下の記事で導入できるようにしました!!

 

polymer-simulation-beginners.hatenablog.com

 

 

 

ダウンロード以前に・・・

lammpsはLinux上でしか動かないので、Windowsを使っている人は仮想環境を整えるなどしてLinuxを動かせるようにしましょう。私はWSLのUbuntuを利用しました。

(https://www.microsoft.com/ja-jp/p/ubuntu/9nblggh4msv6?activetab=pivot:overviewtab)

 

ダウンロードから起動まで

①webからダウンロードする


まずは以下のlammpsのホームページに移動して、自分の環境にあったパッケージをインストールしましょう。私は一番上のやつをダウンロードしました。

(https://lammps.sandia.gov/download.html)

 

f:id:toal_peg_simu:20191231213250p:plain

②パッケージの解凍

ダウンロードしたファイルがあるディレクトリで以下のコマンドを実行しましょう。

sudo tar xvfmp lammps-stable.tar.gz

(なんか公式のコマンドで実行したら色々エラーを吐いてきたので、このコマンドで解凍しました。)

 

③必要なパッケージを選択する

解凍が完了したらsrcフォルダに移動して自分が今後利用したいパッケージを選択します。lammpsにあるパッケージはsrcフォルダにいる時に

make ps

と入力すると確認できます。私の場合は『CLASS2』『KSPACE』『MOLECULE』『USER-MISC』『OPT』を選択しました。

f:id:toal_peg_simu:20191231215942p:plain

パッケージを選択する際には

make yes-パッケージ名 (例.make yes-CLASS2)

で指定できます。間違えた場合はyesをnoに変えるだけでアンインストールできます。

 

④実行プログラムを作成する

パッケージの選択が終わった後はsrcフォルダで

make serial

を実行します。そうすると数分くらいで止まるのでsrcフォルダの中に『lmp_serial』が作成されたと思います。

 

⑤PATHを通す(※ターミナルを消すと設定が消えちゃうので書き直しました)

『lmp_serial』ファイルを間違って消さないように任意のフォルダに移動させます。

その後どこでもlammpsを実行できるようにPATHを通します。

まず任意の場所で、

vi .profile

を実行する。これをするとviファイルが開ける。そこで

export PATH=$PATH:/(lmp_serialがあるディレクトリ)/

と書き込みます。書き込んだらESCボタンを押して『:wq』を入力。そして

source ~/.bashrc

を入力すれば設定が適用される。

 

さいごに

いかがだったでしょうか。大晦日の半日を費やすことで何とか書き上げることができました。おそらくどこかの段階でエラーが出るかもしれませんが、Linuxか各パソコンの環境に起因する問題だと思うので諦めずにトライしてみてください!!

以下に今回の記事を書くために利用したページを紹介しておきます。

 

参照

①lammpsのダウンロード(本家ホームページ)

https://lammps.sandia.gov/download.html

WindowsLinuxを導入するソフト

https://www.microsoft.com/ja-jp/p/ubuntu/9nblggh4msv6?activetab=pivot:overviewtab

Macでの導入についても書いてある

http://www.hpci-office.jp/materials/ws_160219_yoshizawa.pdf

④lammpsのファイルが解凍できない時に見た(Cannot change mode to rwxrwxr-x: Operation not permitted)

https://siguniang.wordpress.com/2013/07/14/untar-gives-cannot-utime-operation-not-permitted/

⑤MPI並列計算の時に必要なパッケージを記したページ

http://www.hpci-office.jp/materials/ws_161004_yoshizawa.pdf

Linux環境でlammpsを導入するときに使えそうなページ

https://winmostar.com/jp/manual_jp/installation/LAMMPS_install_manual_jp_linux.pdf

⑦PATHをLinuxで通す方法で参考にした

http://rnakato.hatenablog.jp/entry/2017/10/14/172350

 

【OCTA】OCTAはイイぞ

はじめに

今回の記事では高分子をシミュレーションするために作られたソフトウェア『OCTA』について紹介していきたいと思います。OCTAは使い方や活用事例が記された書籍があるので、今回の記事はそれを参考にして書いています。

 

増補版 高分子材料シミュレーション: OCTA活用事例集

増補版 高分子材料シミュレーション: OCTA活用事例集

  • 作者: 
  • 出版社/メーカー: 化学工業日報社
  • 発売日: 2017/07/11
  • メディア: 単行本
 

 

 

 OCTAとは何ぞや??

OCTAとは『Open Computational Tool for Advanced material technology』の略称で、『世界中の人々によってソフトウェアが開発され、計算機材料設計という技術が育ってほしい』という意味が込められているそうです。

(一番最初の『監修の言葉』の部分でより詳しく書かれているので気になる人は、そこを読んでみてください)

OCTAは原子レベルのシミュレーションから有限要素法を用いた連続体モデルまでを扱うことができ、『COGNAC』『SUSHI』『PASTA・NAPLES』『MUFFIN』『KAPSEL』というシミュレーションエンジンを動かすことができます。

以下に各エンジンの説明をしていきたいと思います。

 

各エンジンの説明

複数エンジンを搭載する重要性

そもそもなぜ複数のシミュレーションエンジンが必要なのでしょうか??その疑問を解消するためには計算機の限界を知る必要があります。

例えば私がlammpsを使って『9380個の粒子』を『4つのポテンシャル』で計算するときは、8コアの並列で計算しても1μs計算するのに1週間弱かかります。

ここで重要なのは、使うエンジンを間違えると解析に時間がかかりすぎるということです。分子振動が知りたければ『フェムト秒スケール』で解析すれば十分ですが、粘弾性測定をするためには『秒スケール』で解析を行う必要があります。つまりlammpsで粘弾性を計算するなら、1000週間ほどかかりますね・・・(19年も一つの解析に費やせるかっ!)

 

そんなわけで解析をする際には、自分が得たい物性が得られる適切なシミュレーションエンジンを選ばなければなりません。ただ使用するエンジンを変えるたびに毎回ファイルを変換するのは大変です。その問題を解決しているのがOCTAなんです!

OCTAが扱うファイル形式は『udf』というもので、各エンジン間で共通して使うことができるんです。例えば密度汎関数で得られた3D相分離構造を全原子モデルに変換することもできます。(これをズーミングと言います。)

 

COGNAC

このエンジンでは分子動力学法でシミュレーションをすることができます。分子動力学法では、複数のポテンシャル関数を定義してニュートンの運動方程などに従うように粒子を動かします。

得られる物性値には動径分布関数末端間距離などがあります。これらの値は高分子鎖と溶媒の相互作用を確認する時にも使われたりします。

またCOGNACはlammps形式にデータ変換ができるので、大規模構造の計算の際にはlammpsで高速な解析をすることができます。

 

SUSHI

このエンジンでは平均場近似(SCF法)を利用したシミュレーションを行うことができます。SCF法では周囲の高分子鎖の作る平均場に高分子が影響を受けると仮定しています。

高分子の位置をエントロピー、セグメント間相互作用をエンタルピーと仮定するため、安定な相分離構造を解析することができます!また得られた系の自由エネルギー汎関数から高分子溶融体の相分離現象を動的に表現することができます。

(ここら辺は自分で書いてて分からなくなったので、また別の記事で解説します)

 

PASTA・NAPLES

このエンジンでは絡み合い状態にある高分子系の長時間ダイナミクスレオロジーをシミュレーションすることができます。分子動力学法よりも数万倍速く解析することができますが、条件が厳しいことや、理論が半経験的であるのが注意点です。

得られる物性値は線形粘弾性非線形粘弾性で、粘度の時間成長も含めて出力することができます。

 

MUFFIN

このエンジンでは連続体モデルをベースとしたシミュレーションをすることができます。例えば液滴の変形やゲルの膨潤と収縮、相分離構造上の熱伝導などを扱う事ができます。

 

KAPSEL

このエンジンでは粒子分散系の動的現象をシミュレーションすることができます。例えば荷電コロイドの電気泳動や電気二重層などを扱う事ができます。

 

まとめ

いかがだったでしょうか。もっと簡潔に書くつもりだったのですが、思ったよりも書きたいことが多くあったため広くおおざっぱな説明になってしまいました・・・雑な部分もあるので、また時間があるときに再編集します。

【lammps】lammpsはイイぞ

はじめに

 今回の記事では、私が扱っている高分子シミュレーターの一つ『lammps』について紹介していきたいと思います。

(自分が扱っている範囲内で大まかに紹介するので、詳細については公式マニュアルを読んでください。)

 

lammpsとは何ぞや??

 lammpsは『Large-scale Atomic/Molecular Massively Parallel Simulator』の略称で、大まかな意味を説明するなら『巨大な系で並列計算もできる原子・分子シミュレーター』という感じです。

アメリカのサンディア国立研究所で開発されており、金属から高分子まで取り扱うことが出来る万能シミュレーターとなっています。

 

lammpsのメリット・デメリット

ここからはlammpsを実際に使ってみた個人的な感想などを書き連ねていきます。

 

メリット

 ・大抵の材料をシミュレーションすることができる(自由度高め)

先行研究でポテンシャルなどのパラメータが決定されていれば、金属材料からカーボンナノチューブにいたるまで何でも解析することができます!

(※垣〇帝督みたいに未元物質を解析することもできます。中二心をくすぐられません??)

これはlammpsは解析に必要なポテンシャル関数を多く保有しているためです。例えば高分子のシミュレーターにはGNOMACSなどもあるのですが、そのソフトにあるポテンシャル関数もlammpsは保有しています。

 

・並列化性能が良い

これは結構重要です。計算機科学を学んだことがある人には常識かもしれませんが、

1コア計算をする時とn列並列計算する時のプログラムは一般的に異なります。

なぜなら並列処理をするときには、計算を各コアにどのように割り振るか、仮想空間をどのように分割するのかなどを指定する必要があるからです。lammpsで解析をする際には、コマンドを変更するだけで1コア・n列並列を指定できます。

 

・海外でも有名

そもそもアメリカで開発されたソフトなので海外でもかなり使われています。そのため毎年パッケージの更新が行われていたり、LAMMPS Workshop and Symposiumというイベントが開催されていたりします。

また使っている人が多いので、エラー内容についてググると同じような事例が出てきて心強いです。ホンマか??(※後述)

 

 

 デメリット

・デバックがしにくい

これがかなりつらい。。。メリットで「自由度が高い」と記したが、それは「デバックの種類が多様化する」の裏返しである。

エラー内容についてググれば先例が出るには出る。が、しかし、そもそも解析する材料が違う、解析の規模が違う、PCの環境が違う、などなどクソほど役に立たないのである。(私の英語力が無いだけかもしれないが)

さすがにエラーメッセージは出るのだが、詳細なエラーの場所がC++の位置でしか記載されていないのでC++を完全に理解しないと理解ができないのである。

(C++がやりたくてlammpsをやっているんじゃない、シミュレーションが先、プログラミングが後)

 

・英語

説明書が英語である。日本語で書かれていても理解できない部分があるはずなのに英語だと読むモチベすらなくなってしまうのである。。。(デバック中ならなおさら)

 

 

まとめ

いかがだったでしょうか?

メリットとデメリットを同じくらいに扱おうと思ったのですが、デメリットの方が力強いですね。。。(いままでの怨念が蓄積してるからだろうか)

ただ最初の方に記したように、lammpsは並列化計算や自由度が高いことが大きなメリットなので、今後はlammpsについての技術的な記事について書いてきたいと思います!

 

 

はじめに

 

 

皆さん、こんにちは

とある材料学科で様々な材料について勉強しているどぼるざーくと申します。

 

このブログは「高分子シミュレーション始めたいけど、やり方がいまいち分からない・・・・」「高分子シミュレーションをやってるけど、同じ話題を話せる人が周りにいない(さみしい)・・・」人向けに書きたいと考えています。

記事を読んでデバックの対処に役立ったり、シミュレーション特有の苦労を共有してストレスが少しでも和らいでくれたらうれしいです。

 

自己紹介

さて、ここでちょっとした自己紹介を。

私は現在大学生で、授業の一環で「lammps」を用いた高分子のシミュレーションをやってから『シミュレーション沼』にはまってしまいました。4年の研究室配属後も高分子シミュレーションを扱うことになりそうです。

 

ただlammpsを使ったシミュレーションは『扱える時間・空間的な領域が狭い(ナノ秒、ナノスケール)』『UIが非プログラマーにかなり分かりにくい』『説明書が英語(重要)』などなど、就職後に使うにはちょっと厳しいと最近思うようになりました。

(lammpsについては次回以降の記事で紹介します。)

 

そこで最近は経済産業省のプロジェクトで作られた「OCTA」を独自で勉強することにしました。また後の記事で書きますが、このソフトウェアはナノスケールからマクロスケールまで幅広いスケールのシミュレーションを行うことができる便利なツールです。

 

自己紹介についてはこんな感じです!

(書いてて思いましたが、これ自己紹介というよりはシミュレーターの紹介ですね(=゚ω゚)ノ)

 

今後は「lammps」や「OCTA」の紹介・使い方・デバック沼についてや、余裕があれば大学生活などについて紹介していきたいと思います。

 

文章を書くのがあまり得意ではないですが、スターやコメントはモチベーションに繋がるので、アドバイスやミスの指摘、内容のリクエストなどなどお待ちしております。