Calculating the effective U in APW methods. NiO
Re: Calculating the effective U in APW methods. NiO
Calculating the effective U in APW methods. NiO
Georg K. H. Madsen and Pavel Nov ́ak
(Dated: June 19, 2007)
The following is an example of how to calculate the effective U following the prescription of ref.[1]. The following steps are described
• generating a supercell
• modifying the input files
• Perform the two SCF calculations
• calculating the U from the values in the scf file.
Last edited by Algerien1970 on Wed 8 Jul - 14:36; edited 1 time in total
Re: Calculating the effective U in APW methods. NiO
I.GENERATING A SUPERCELL
This can be done in several ways. For the present case we chose a 2 × 2 × 2 F-centered cell. The steps are:
1. set-up the standard F-centered, a=7.927 a.u. NiO.struct file.
2. For this example choose R MT to 2.3 a.u. and 1.65 a.u. for Ni and O respectively. The result shouldn’t be too
sensitive to these choices.
3. Run supercell and choose a 2 × 2 × 2 F-centered cell.
4. Change the name of the first Ni to Ni1 (to break symmetry). This is your impurity.
5. Run x sgroup and copy NiO.struct sgroup to NiO.struct. Your struct file should now have the header:
NiO
F LATTICE,NONEQUIV.ATOMS: 5 225 Fm-3m
MODE OF CALC=RELA unit= 15.854002 15.854002 15.854002 90.000000 90.000000 90.000000
ATOM1: X=0.00000000 Y=0.00000000 Z=0.00000000
MULT= 1 ISPLIT= 2
Ni1 NPT= 781 R0=0.00050000 RMT=2.3000 Z: 28.0
This can be done in several ways. For the present case we chose a 2 × 2 × 2 F-centered cell. The steps are:
1. set-up the standard F-centered, a=7.927 a.u. NiO.struct file.
2. For this example choose R MT to 2.3 a.u. and 1.65 a.u. for Ni and O respectively. The result shouldn’t be too
sensitive to these choices.
3. Run supercell and choose a 2 × 2 × 2 F-centered cell.
4. Change the name of the first Ni to Ni1 (to break symmetry). This is your impurity.
5. Run x sgroup and copy NiO.struct sgroup to NiO.struct. Your struct file should now have the header:
NiO
F LATTICE,NONEQUIV.ATOMS: 5 225 Fm-3m
MODE OF CALC=RELA unit= 15.854002 15.854002 15.854002 90.000000 90.000000 90.000000
ATOM1: X=0.00000000 Y=0.00000000 Z=0.00000000
MULT= 1 ISPLIT= 2
Ni1 NPT= 781 R0=0.00050000 RMT=2.3000 Z: 28.0
Re: Calculating the effective U in APW methods. NiO
II. RUN NORMAL SCF
Run the init as usual. Use just one k-point. For the present choose an Rkmax of 5. The original Anisimov and Gunnarsson[2] force everything but the impurity d states to be non-spinpolarized. This is not really necessary and would make our calculations more complicated. We therefore run the calculation spinpolarized, but start with only the impurity in a spinpolarized states. This also improves convergence. Modify inst so that it looks like:
Ni
Ar 3 5
3, 2,2.0 P
3, 2,2.0 P
3,-3,3.0 P
3,-3,1.0 P
4,-1,1.0 N
4,-1,1.0 N
Ni
Ar 3 5
3, 2,2.0 N
3, 2,2.0 N
3,-3,2.0 N
3,-3,2.0 N
4,-1,1.0 N
4,-1,1.0 N
Ni
Ar 3 5
3, 2,2.0 N
3, 2,2.0 N
3,-3,2.0 N
3,-3,2.0 N
4,-1,1.0 N
4,-1,1.0 N
O
He 3 5
2,-1,1.0 N
2,-1,1.0 N
2, 1,1.0 N
2, 1,1.0 N
2,-2,1.0 N
2,-2,1.0 N
O
He 3 5
2,-1,1.0 N
2,-1,1.0 N
2, 1,1.0 N
2, 1,1.0 N
2,-2,1.0 N
2,-2,1.0 N
****
****
now run
x lstart
x dstart
x dstart -up
x dstart -dn
runsp
save NiO_orig
This is actually only to get a good starting density. The results are not needed directly.
Run the init as usual. Use just one k-point. For the present choose an Rkmax of 5. The original Anisimov and Gunnarsson[2] force everything but the impurity d states to be non-spinpolarized. This is not really necessary and would make our calculations more complicated. We therefore run the calculation spinpolarized, but start with only the impurity in a spinpolarized states. This also improves convergence. Modify inst so that it looks like:
Ni
Ar 3 5
3, 2,2.0 P
3, 2,2.0 P
3,-3,3.0 P
3,-3,1.0 P
4,-1,1.0 N
4,-1,1.0 N
Ni
Ar 3 5
3, 2,2.0 N
3, 2,2.0 N
3,-3,2.0 N
3,-3,2.0 N
4,-1,1.0 N
4,-1,1.0 N
Ni
Ar 3 5
3, 2,2.0 N
3, 2,2.0 N
3,-3,2.0 N
3,-3,2.0 N
4,-1,1.0 N
4,-1,1.0 N
O
He 3 5
2,-1,1.0 N
2,-1,1.0 N
2, 1,1.0 N
2, 1,1.0 N
2,-2,1.0 N
2,-2,1.0 N
O
He 3 5
2,-1,1.0 N
2,-1,1.0 N
2, 1,1.0 N
2, 1,1.0 N
2,-2,1.0 N
2,-2,1.0 N
****
****
now run
x lstart
x dstart
x dstart -up
x dstart -dn
runsp
save NiO_orig
This is actually only to get a good starting density. The results are not needed directly.
Re: Calculating the effective U in APW methods. NiO
III. MODIFYING THE INPUT FILES
You now need to change in1, in2 and inc to put a constrained number of d-electrons in the core.
A. Adding d to the core.
Usually Ni 2+ has 8 d electrons. You now want to perform two calculations. One with 4.5 ↑, 4 ↓ and one with 4.5↑, 3 ↓ constrained d-electrons.[1] You thus make 4 .inc files and here the headers are given
The 4.5 ↑, 4 ↓ calculation. First atom
NiO.incup_+.50:
7 1.00
1,-1,2
2,-1,2
2, 1,2
2,-2,4
3,-1,2
3, 2,4
3,-3,5
NiO.incdn_+.50
7 1.00
1,-1,2
2,-1,2
2, 1,2
2,-2,4
3,-1,2
3, 2,4
3,-3,4
notice that a shift has been added to improve convergence.
The 4.5 ↑, 3 ↓ calculation. First atom
NiO.incup_+.5-1:
7 1.00
1,-1,2
2,-1,2
2, 1,2
2,-2,4
3,-1,2
3, 2,4
3,-3,5
NiO.incdn_+.5-1
7 1.00
1,-1,2
2,-1,2
2, 1,2
2,-2,4
3,-1,2
3, 2,4
3,-3,2
B. Removing impurity d states from valence states
First you want to remove d from impurity basis this is usually done by setting the linearization energy far above the Fermi level. You only need to change one number.[3] The first lines of in1 should now look like
WFFIL (WFPRI, SUPWF)
5.00 10 4 (R-MT*K-MAX; MAX L IN WF, V-NMT)
0.30 4 0 (GLOBAL E-PARAMETER WITH n OTHER CHOICES, global APW/LAPW)
1 0.30 0.000 CONT 1
1 -4.95 0.000 STOP 1
2 20.30 0.000 CONT 1
0 0.30 0.000 CONT 1
Secondly you need to remove the d impurity electrons from the valence. You thus need two in2 files. The original NiO supercell had 176 valence electrons. You have put 8.5 and 7.5 electrons into the core. The header of your in2 files should thus look like
NiO.in2_+.50:
TOT (TOT,FOR,QTL,EF )
-9.0 167.5 0.50 0.05
GAUSS 0.006
NiO.in2_+.5-1:
TOT (TOT,FOR,QTL,EF)
-9.0 168.5 0.50 0.05
GAUSS 0.006
The unit-cell neutrality is thus kept. Notice that a GAUSS smearing has been added to improve convergence.
You now need to change in1, in2 and inc to put a constrained number of d-electrons in the core.
A. Adding d to the core.
Usually Ni 2+ has 8 d electrons. You now want to perform two calculations. One with 4.5 ↑, 4 ↓ and one with 4.5↑, 3 ↓ constrained d-electrons.[1] You thus make 4 .inc files and here the headers are given
The 4.5 ↑, 4 ↓ calculation. First atom
NiO.incup_+.50:
7 1.00
1,-1,2
2,-1,2
2, 1,2
2,-2,4
3,-1,2
3, 2,4
3,-3,5
NiO.incdn_+.50
7 1.00
1,-1,2
2,-1,2
2, 1,2
2,-2,4
3,-1,2
3, 2,4
3,-3,4
notice that a shift has been added to improve convergence.
The 4.5 ↑, 3 ↓ calculation. First atom
NiO.incup_+.5-1:
7 1.00
1,-1,2
2,-1,2
2, 1,2
2,-2,4
3,-1,2
3, 2,4
3,-3,5
NiO.incdn_+.5-1
7 1.00
1,-1,2
2,-1,2
2, 1,2
2,-2,4
3,-1,2
3, 2,4
3,-3,2
B. Removing impurity d states from valence states
First you want to remove d from impurity basis this is usually done by setting the linearization energy far above the Fermi level. You only need to change one number.[3] The first lines of in1 should now look like
WFFIL (WFPRI, SUPWF)
5.00 10 4 (R-MT*K-MAX; MAX L IN WF, V-NMT)
0.30 4 0 (GLOBAL E-PARAMETER WITH n OTHER CHOICES, global APW/LAPW)
1 0.30 0.000 CONT 1
1 -4.95 0.000 STOP 1
2 20.30 0.000 CONT 1
0 0.30 0.000 CONT 1
Secondly you need to remove the d impurity electrons from the valence. You thus need two in2 files. The original NiO supercell had 176 valence electrons. You have put 8.5 and 7.5 electrons into the core. The header of your in2 files should thus look like
NiO.in2_+.50:
TOT (TOT,FOR,QTL,EF )
-9.0 167.5 0.50 0.05
GAUSS 0.006
NiO.in2_+.5-1:
TOT (TOT,FOR,QTL,EF)
-9.0 168.5 0.50 0.05
GAUSS 0.006
The unit-cell neutrality is thus kept. Notice that a GAUSS smearing has been added to improve convergence.
Re: Calculating the effective U in APW methods. NiO
IV. RUNNING THE SCF
Now you are ready to run the constrained calculations. Run:
cp NiO.in2_+.50 NiO.in2
cp NiO.incup_+.50 NiO.incup
cp NiO.incdn_+.50 NiO.incdn
runsp
save NiO_+.50
afterwards do the same thing for +.5-1. Usually you can just start from the converged density.
Now you are ready to run the constrained calculations. Run:
cp NiO.in2_+.50 NiO.in2
cp NiO.incup_+.50 NiO.incup
cp NiO.incdn_+.50 NiO.incdn
runsp
save NiO_+.50
afterwards do the same thing for +.5-1. Usually you can just start from the converged density.
Re: Calculating the effective U in APW methods. NiO
V. CALCULATING THE U FROM THE VALUES IN THE SCF FILE
To apply Eq. (4)[1] you need four values that can be found in the SCF files.
grepline :fer ’NiO_+.50.scf’ 1
gives ε F ((n + 1)/2, n/2)
grepline :3dd001 ’NiO_+.50.scf’ 2 | head -2 | tail -1
grepline ’:3d 001’ ’NiO_+.50.scf’ 2 | head -2 | tail -1
Do a weighted sum of these two values (4 ∗ 3dd001 + 5 ∗ 3d001)/9 = ε 3d↑ ((n + 1)/2, n/2). And similarly for +.5-1.
By plying Eq. (4) you should then get F eff = 0.438 Ry= 5.96 eV. In Ref. [1] we argue that you should use this value for U and set J to zero
Have fun
To apply Eq. (4)[1] you need four values that can be found in the SCF files.
grepline :fer ’NiO_+.50.scf’ 1
gives ε F ((n + 1)/2, n/2)
grepline :3dd001 ’NiO_+.50.scf’ 2 | head -2 | tail -1
grepline ’:3d 001’ ’NiO_+.50.scf’ 2 | head -2 | tail -1
Do a weighted sum of these two values (4 ∗ 3dd001 + 5 ∗ 3d001)/9 = ε 3d↑ ((n + 1)/2, n/2). And similarly for +.5-1.
By plying Eq. (4) you should then get F eff = 0.438 Ry= 5.96 eV. In Ref. [1] we argue that you should use this value for U and set J to zero
Have fun
Similar topics
» P Blaha - Basic concepts of bandstructure methods and the APW based methods
» F Aryasetiwan - First principles method for calculating the Hubbard U I
» Wien2k: Methods and Features
» WIEN2k: methods and features (P Blaha )
» Elastic: A tool for calculating second-order elastic constants from first principles and for any crystal structure.
» F Aryasetiwan - First principles method for calculating the Hubbard U I
» Wien2k: Methods and Features
» WIEN2k: methods and features (P Blaha )
» Elastic: A tool for calculating second-order elastic constants from first principles and for any crystal structure.
Permissions in this forum:
You cannot reply to topics in this forum