Quantum ESPRESSOをpythonで出来るだけ半自動化
リンク
概要
物理学科出身の大学(院)生です。
大学生時代に大量の物質について構造最適化を行う機会があり、
これは人間のやることじゃないと思ったためpythonで半自動化できるようにしました。
同じような境遇の人がいるかもしれないため、ちょっと手直しして、公開します。
所詮(当時)大学生が作ったもののため、信用の置けない面があると思いますが、
そういった方は以下なら信頼できると思います。
説明
Quantum Espressoで計算するためにはinputファイルが必要で、
これをある程度cifから自動的に作成するpythonスクリプト群です。
以下のような機能があります
- cifからinputファイルを作成
- relax, vc-relaxのoutputファイルから構造を読み取り、次のinputファイルを作成
- relax, vc-relaxのoutputファイルから構造を読み取り、cifに変換
- band, pdos などのplot
想定しているユースケースとしては、「一つの物質について計算が収束していて、
類似物質がたくさんあり、同条件で計算を回したい場合」です。
最初の一つの物質でも使えなくはないですが、
どちらかというと上手くいった条件を使い回すように作成されたスクリプトです。
そのため、templateとして収束したinputファイルを入れて、
物質固有の部分を変更するといった実装です。
使用方法
Make_QE_file/how_to_use/how_to_use_jp.md
にドキュメントもどきがあります。
想定している使用の流れは
- relax -> vc-relax
- 1 -> scf -> nscf -> projwfc -> dos
- 1 -> scf -> bands -> band_x
- plot
です(自分は数字ごとにディレクトリを分けてました)。
how_to_use/auto.pyでは上記の流れでの各関数の使用方法を書いています。
crystal_sgについて
原子位置の指定でATOMIC_POSITIONS {crystal_sg}
を使用しています。
公式の説明は
crystal_sg :
原子位置は結晶座標、すなわち原始格子の相対座標で指定する。
この場合、対称性のない原子のみが与えられるので、このオプションは前のものと異なる。変数space_groupは、対称等価原子を見つけるために使われる空間群番号を示さなければならない。このオプションを制御する他の変数は uniqueb, origin_choice, rhombohedral である。
とのこと。
このためcifで_space_group_IT_number(or _symmetry_Int_Tables_number)が必要です。
crystal_sgがうまく展開してくれない
space_group = 129の物質を計算しているときに、outputをみるとやたら大きなセルに展開していました。
VESTAでみると明らかに間違っている。
色々調べると、origin_choice
を初期値の1から2に変更するとうまくいきました。
templateにはorigin_choice = 2
を入れています。