事前に NiO.struct を作成します。
(反強磁性相転移をしても単位胞が拡大しない場合はこの操作は不要です)
$ x_lapw supercell Program generates supercell from a WIEN struct file. Filename of struct file: NiO.struct Number of cells in x direction: 2 Number of cells in y direction: 2 Number of cells in z direction: 2 Optional shift all atoms by the same amount (fractional coordinates). Please enter x shift: 0 Please enter y shift: 0 Please enter z shift: 0 Current structure has lattice type F Enter your target lattice type: (P,B,F) P Target lattice type will be P Add vacuum in x-direction for surface-slab [bohr]: 0 Add vacuum in y-direction for surface-slab [bohr]: 0 Add vacuum in z-direction for surface slab [bohr]: 0 Supercell generated sucessfully. Stored in struct file: NiO_AFM_man_super.struct You may need to replace an atom by an impurity or distort the positions, ....
下の図ができあがった超格子です。灰色がNi(アップスピンサイト)、茶色がFe(ダウンスピンサイト)、赤がOです。
$ cif2struct NiO_super.cif $ mv NiO_super.struct NiO_AFM.struct
$ x_lapw sgroup -f NiO_AFM $ mv -f NiO_AFM.struct_sgroup NiO.struct
$ setrmt_lapw NiO $ mv -f NiO.struct_setrmt NiO.struct
$ instgen -ask 3 Atoms found: with labels Ni1 Ni2 O 1 y generate atomic configuration for atom 1 : Ni1 select spinpolarization up, dn or non-magnetic ( u, d, n ) u generate atomic configuration for atom 2 : Ni2 select spinpolarization up, dn or non-magnetic ( u, d, n ) d generate atomic configuration for atom 3 : O 1 select spinpolarization up, dn or non-magnetic ( u, d, n ) n
$ init_lapw -b -numk 1000 -rkmax 8.0 -sp
$ runsp_lapw -cc 0.0001 -ec 0.00001 -i 100 -p
$ grep ":MMTOT:" NiO.scf # 全磁気モーメント。今は反強磁性なのでゼロ。 $ grep ":MMI001:" NiO.scf # 1番目の原子(Niのアップスピンサイト)のモーメント $ grep ":MMI002:" NiO.scf # 2番目の原子(Niのダウンスピンサイト)のモーメント $ grep ":MMI003:" NiO.scf # 3番目の原子(O)のモーメント。単位はμB。NiOの場合はゼロ。 $ grep ":GAP:" NiO.scf # エネルギーギャップ。NiOは反強磁性秩序によってギャップが開きます。
スピン分極を許した計算なので、例えば次に状態密度を計算する場合などで x_lapw を実行する際には、アップ(ダウン)スピンのそれぞれで -up (-dn) を必ずつけてください。
$ x_lapw lapw1 -up
結果はアップスピンのモーメントが1.38μB、ギャップが0.95eVくらいになると思います。 これは実験で得られているもの(手法にもよりますが4eV前後)よりもだいぶ小さいです。
実は第一原理計算は電子相関を無視した計算になっているため、電子相関の強いNiOではこのように実験に合わない結果となります。 これを補正するため、原子にオンサイトのクーロン相互作用Uの補正を入れるLDA+Uという方法を使います。
以下ではNiのd軌道に+Uの補正を入れてみましょう。
事前にスピン分極のSCF計算を済ませてください。
$ init_orb_lapw -orb You have the following atoms: 1 : Ni1 2 : Ni2 3 : O 3 : O Enter the name, l, U(Ry) and J of the Atoms (eg. Fe 2 0.3 0.0; exit with RETURN):Ni 2 0.441 0 Enter the name, l, U(Ry) and J of the Atoms (eg. Fe 2 0.3 0.0; exit with RETURN):
-12.0 Emin cutoff 2 number of atoms 1 1 2 index of atom, number of l, l 2 1 2 index of atom, number of l, l 0 0 r-index,(l,s) index
1 2 0 nmod, natorb, ipt PRATT 1.0 1 1 2 index of atom, number of l, l 2 1 2 index of atom, number of l, l 1 nsic 0..AMF, 1..SIC, 2..HFM 0.441 0 U J (Ry) 0.441 0 U J (Ry)
$ rm *.broyd* $ runsp_lapw -cc 0.0001 -ec 0.00001 -i 100 -orb -p -NI
今回の計算結果はバンドギャップが約3.29eV、モーメントが約1.72μBになりました。
+UでSCF計算が終わったあと、状態密度の計算などで x_lapw lapw1 を実行するときは、オプション-orbをつけてください。
$ x_lapw lapw1 -up -orb