CrySPY

結晶構造探索を行うためのオープンソースソフトウェア。結晶の組成を与えるだけで、構造の探索を実行し、構造最適化をする。与えられた構造のエネルギー評価には第一原理計算や分子動力学の外部ソフトウェアを使用する。探索アルゴリズムにはランダム探索、進化的アルゴリズム、ベイズ最適化、Look Ahead based on Quadratic Approximation (LAQA)などが利用可能となっている。

CrySpyの使い方

1. はじめに

CrySPYは結晶の組成を与えると構造を探索し構造最適化をすることができるソフトウェアです。構造のエネルギー評価には第一原理計算や分子動力学のソフトウェアを使用します。ここではDocker版のMateriApps LIVE!を用いてRandom SearchでH原子12個とC原子12個の組成から最適な構造を得る計算(ベンゼンの構造が得られることが期待される)を紹介します。構造のエネルギー評価にはMateriApps LIVE!にプレインストールされているQUANTUM ESPRESSOを使います。本記事を書くにあたって、下記のチュートリアルを参考にしました。

https://tomoki-yamashita.github.io/CrySPY_doc/index.html

2. インストール方法

以下のコマンドを実行しインストールします。

pip3 install csp-cryspy

このとき多くのスクリプトが自動的にインストールされます。特にcryspyというスクリプトを使うので以下のコマンドで確認します。

which cryspy

見つからない場合はインストール時のログを参考にして、スクリプトのあるパスをPATHに追加します。

echo 'export PATH=$PATH:/home/user/.local/bin' >> ~/.bashrc
source ~/.bashrc

3. 入力ファイルの用意

CrySPY公式マニュアルにあるベンゼンの入力例をダウンロードし、適当なディレクトリに置きます。ディレクトリの中身は以下のようになっています。

cd qe_benzene_2_RS_mol
tree
.
|-- README
|-- calc_in
|   |-- job_cryspy
|   |-- pwscf.in_1
|   `-- pwscf.in_2
`-- cryspy.in

1 directory, 5 files

cryspy.inの中のジョブコマンドを自分の環境に合わせて書き換えます。ここでは、jobcmd = bashとします。

job_cryspyの中の/path/to/pw.xの部分を自分の環境に合わせて書き換えます。パスが通っていれば単にpw.xとすることができます。

pwscf.in_1, pwscf.in_2の中のpseudo_dirで擬ポテンシャルが置いてあるディレクトリを指定します。ここでは、ホームディレクトリにpseudoというディレクトリを作り、そこに置くことにします。pseudo_dir = '/home/user/pseudo/'とします。

また、擬ポテンシャルを用意します。pwscf.in_1, pwscf.in_2の中ではH.pbe-kjpaw_psl.1.0.0.UPFC.pbe-n-kjpaw_psl.1.0.0.UPFが指定されているので、QUANTUM ESPRESSOの公式ページから同じものをコピーしてきてpseudo内に置きます。

4. 実行

まず、並列計算のプロセス数を指定します。

export NSLOTS=1

ディレクトリqe_benzene_2_RS_molにいる状態で

cryspy

を実行します。すると、6個の構造が生成されます。再度cryspyを実行すると2個ずつ構造のエネルギー評価が行われます。Done all structures!が出るまでcryspyを繰り返し実行します。

もしくは、cryspyを繰り返し実行するスクリプトを使うと便利です。すべて計算が終了するまで6時間20分かかりました。

5. 結果

dataディレクトリの中のcryspy_rslt_energy_ascを見て結果を確認します。

   Spg_num   Spg_sym  Spg_num_opt Spg_sym_opt   E_eV_atom  Magmom   Opt
0       58      Pnnm           58        Pnnm -133.439385     NaN  done
2       71      Immm           71        Immm -133.436956     NaN  done
3      136  P4_2/mnm          136    P4_2/mnm -133.436394     NaN  done
5       53      Pmna           53        Pmna -133.433717     NaN  done
4      136  P4_2/mnm           65        Cmmm -133.429064     NaN  done
1      132  P4_2/mcm          132    P4_2/mcm -133.427469     NaN  done

構造のデータがエネルギーの低い順に並んでいます。opt_CIFS.cifをVESTAを使って図示してやると、最もエネルギーが低いIDが0のデータは以下の図のようになりました。予想通り、ベンゼンの構造ができていることがわかります。

6. おわりに

ここではランダム探索を行いましたが、進化的アルゴリズム、ベイズ最適化、Look Ahead based on Quadratic Approximation (LAQA)など他の探索法もCrySPYで実行でき、より効率的な探索を行うことができます。