Quantum-Espressoで結晶構造を空間群を使って入力する方法のメモ (2018/03/18 created)

更新情報

  • (2018/04/06) Trigonal cell (R)の場合は、hexagonal cellではなく、trigonal cellをVestaで選択してから、セーブすること。そちらの方が、原子数が少なくなる。また、その場合にorigin_choice = 2となる不具合を直した。それから、Wyckoffの記号を使う場合は以下の最初の行のようにwをつけて実行、使わない時(x,y,zを出力)場合は2行目のようにwなしで実行するように変更した。ダウンロードはこちら-->vesta2pw.py これはVestaの*.vestaファイルを使う。
    > ./vesta2pw.py test.vesta vc-relax w
    > ./vesta2pw.py test.vesta vc-relax
  • なお、vestaファイルをセーブする前に、空間群を標準のセッティング(1番)にしておくこと。python Ver.2.7用だが、コメントアウトしたところを外せば、Ver.3.6でも動くはず。まだ、コードのチェックは不十分だが、いくつかテストしたところではcubic, tetragonal, orthorhombicでは特に計算に問題でなかったが、monoclinicでは何かおかしい。そこでmonoclinicの場合はWyckoff positionなしで、座標値xyzを入れると、正常に計算できるようだ。そのために、座標値も出力できるように、vesta2pw.pyを直しているところ。
  • (2018/03/19) 空間群を使って得たpw.xの結果が、ph.xとgipaw.xの入力として問題なく動作することを確認。

Quantum-Espressoで結晶構造を空間群を使って入力

  • Quantum-Espresso(QE)は、擬ポテンシャルと平面波を使う第一原理電子状態計算プログラムである。計算する場合に、入力ファイルで結晶構造を記述する必要があるが、以前は結晶構造の入力に空間群を利用していなかったため、原子位置の入力が面倒であった。極端な場合には単位格子中の全ての原子の座標を記述する必要がある(面倒なので、Vestaのxtlファイルから、入力ファイルを作るPythonのプログラムを私は作って使っている)。最近のバージョンでは空間群を直接指定することが可能となった。しかし、そのやり方ががわかりづらい。最近、試行錯誤して、正しく入力できるようになった(と思う)ので、スピネル(MgAlO4)の例を示しながら、解説する。
  • スピネルは空間群Fd-3m (No. 227)で、origin settingが2で解析されている場合が多く、以下の例でもorigin setting 2とした。そのため、&systemのところは以下のように書く。普通使うibravは削除して、space_groupで空間群の番号を指定する。また、origin_choiceで2を指定する。origin_choiceは1の場合は省略可能。また、原子の数natはこの場合3となる(ATOMIC_POSITIONSのところの個数と同じにする)。cubicなので、aに相当するcelldm(1)のみを指定している(bohr単位)。a(angstrom unit)を使ってもよい。
    &system
       space_group = 227 ,
       origin_choice = 2 ,
       celldm(1) = 15.26445175
       nat =  3 ,
       ntyp = 3 ,
       ecutwfc = 60.0 ,
       ecutrho = 360.0 ,
    /
  • つぎに変える必要があるのは、ATOMIC_POSITIONSの後ろのところであるが、crystal_sgを指定する。最近のQuantum-Espressoの論文(J.Phys.:Condens.Matter 29, 465901, 2017)の中でsgと書かれているが、これではエラーがでた。スピネルのMg位置は1/8 1/8 1/8で、Wyckoff positionが8aに対応するので、8aと指定。ここは特殊位置なので、座標値を書く必要はない。同様にAlは1/2 1/2 1/2で、16dとなる。酸素はx y=x z=xとなるので、32eで、x(=0.2633)のみ指定するだけでよい。一般座標なら、x y zの値を全て書く必要がある。Wyckoff positionについてはInternational Table vol. Aを見ればよいが、Vestaでも表示されるので、それを使ってもよい。
    ATOMIC_POSITIONS crystal_sg
    Mg     8a
    Al     16d
    O      32e    0.2633
  • しかし、いちいちWyckoff positionで指定するのは面倒ではある。以下のように座標値を入れてもいいようだ。その場合はWyckoff positionは削除する。
    ATOMIC_POSITIONS crystal_sg
    Mg     0.125000   0.125000   0.125000
    Al     0.500000   0.500000   0.500000
    O      0.263300   0.263300   0.263300

実例

  • 上記の入力ファイル全体を示すと以下のようになる。この例はpw.xで原子位置およびセルを最適化する計算(vc-relax)用である。なお、プログラムが認識した点群は出力の最初の方に出てくるが、詳しい情報を見るためには、verbosityをhighにしておく。space_groupを使った場合は点群が正しくOhと認識された。space_groupを使わない場合は、ibrav = 2 (face centered cubic cell)を使うか、primitive cellに変換するか、もしくはibarv = 1で計算を行うことになるが、計算時間はspace_group指定がもっとも速い。また、スピネルの場合、正しく点群が認識されたのはspace_group指定の時だけだった(これは構造により、ibravでも正しく点群が認識されることもある)。構造のoptimizationの時には点群が正しく認識されなくても実害はほぼないが、軌道や振動を考える場合は正しい点群が必要である。
    &control
        calculation='vc-relax' ,
        restart_mode='from_scratch' ,
        prefix='spinel' ,
        outdir = './spinel/' ,
        wfcdir = './spinel/' ,
        pseudo_dir = '../pseudo' ,
        disk_io='default' ,
        forc_conv_thr= 0.001 ,
        verbosity = 'high' ,
        nstep = 200 ,
     /
     &system
        space_group = 227 ,
        origin_choice = 2 ,
        celldm(1) = 15.26445175 
        nat =  3 ,
        ntyp = 3 ,
        ecutwfc = 60.0 ,
        ecutrho = 360.0 ,
     /
     &electrons
        electron_maxstep = 200 ,
        mixing_beta = 0.7 ,
        conv_thr = 1.0d-14 ,
     /
     &ions
        ion_dynamics='bfgs' ,
     /
     &CELL
        cell_dynamics = 'bfgs' ,
        press = 0.001,
        press_conv_thr = 0.01 ,
     /
    ATOMIC_SPECIES
      Mg   24.305   Mg.pbesol-n-kjpaw_psl.0.3.0.UPF
      Al   26.982   Al.pbesol-n-kjpaw_psl.0.1.UPF
       O   15.999   O.pbesol-n-kjpaw_psl.0.1.UPF
    ATOMIC_POSITIONS crystal_sg
    Mg     8a
    Al     16d
    O      32e    0.2633
    K_POINTS automatic
     2 2 2 1 1 1
  • 出力を見ると、optimizeされた構造は以下のようにrhombohedralに変換されて出力されていた。面心格子だからだろう。単純格子の場合は変換されない。元に戻す必要があるが、Vestaでできるだろう。
    CELL_PARAMETERS (alat= 15.26445175)
      -0.501397727  -0.000000000   0.501397727
       0.000000000   0.501397727   0.501397727
      -0.501397727   0.501397727  -0.000000000
    
    ATOMIC_POSITIONS (crystal)
    Mg       0.125000000   0.625000000   0.125000000
    Mg       0.875000000   0.375000000   0.875000000
    Al      -0.000000000  -0.000000000   0.500000000
    Al       0.500000000   0.000000000   0.000000000
    Al       0.500000000  -0.000000000   0.500000000
    Al       0.500000000   0.500000000   0.500000000
    O        0.263614507   0.209156478   0.263614507
    O        0.263614507   0.763614507   0.709156478
    O        0.263614507   0.763614507   0.263614507
    O        0.709156478   0.763614507   0.263614507
    O        0.290843522   0.236385493   0.736385493
    O        0.736385493   0.236385493   0.290843522
    O        0.736385493   0.236385493   0.736385493
    O        0.736385493   0.790843522   0.736385493
    End final coordinates
  • もう1つ例を追加。これはstishovite(ルチル構造)のvc-relax計算。空間群はP42/m n mで、Siは1/2 1/2 1/2で2a、 Oは0.3058 0.3058 0で4f位置にある。この後、phonon計算を行っても問題なし。
    &control
        calculation='vc-relax' ,
        restart_mode='from_scratch' ,
        prefix='stishovite' ,
        outdir = './stishovite/' ,
        wfcdir = './stishovite/' ,
        pseudo_dir = '../pseudo' ,
        disk_io='default' ,
        forc_conv_thr= 0.001 ,
        verbosity = 'high' ,
        nstep = 100 ,
     /
     &system
        space_group = 136 ,
        celldm(1) = 7.90113390 ,
        celldm(3) = 0.63775083 ,
        nat =  2 ,
        ntyp = 2 ,
        ecutwfc = 60.0 ,
        ecutrho = 360.0 ,
     /
     &electrons
        electron_maxstep = 100 ,
        mixing_beta = 0.7 ,
        conv_thr = 1.0d-14 ,
     /
     &ions
        ion_dynamics='bfgs' ,
     /
     &CELL
        cell_dynamics = 'bfgs' ,
        press = 0.001,
        press_conv_thr = 0.01 ,
     /
    ATOMIC_SPECIES
      Si   28.086   Si.pbesol-n-kjpaw_psl.0.1.UPF
       O   15.999   O.pbesol-n-kjpaw_psl.0.1.UPF
    ATOMIC_POSITIONS crystal_sg
    Si     2a
    O      4f    0.3058
    K_POINTS automatic
     6 6 8 0 0 0

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-03-20 (火) 15:33:06 (119d)