File: lesson_udet.html

package info (click to toggle)
abinit 7.8.2-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 278,292 kB
  • ctags: 19,095
  • sloc: f90: 463,759; python: 50,419; xml: 32,095; perl: 6,968; sh: 6,209; ansic: 4,705; fortran: 951; objc: 323; makefile: 43; csh: 42; pascal: 31
file content (199 lines) | stat: -rw-r--r-- 14,677 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html
 lang="fr-fr"><head><meta http-equiv="Content-Type"
 content="text/html; charset=iso-8859-1"><title>Tutorial : U determination </title></head>
<body style="background-color: rgb(255, 255, 255);"><hr><h1>ABINIT, lesson U determination</h1>
<h2>How to determine U for DFT+U in ABINIT ?</h2>
<hr><p>This lesson aims to show how you can determine U for further DFT+U calculations consistently 
and in a fast an easy way. You will learn to prepare the input files for the determination and to use
the main parameters implemented for this aim. <br> 
It is supposed that you already know how to run ABINIT in the PAW mode (lesson <a href="lesson_paw1.html">PAW1</a>). 
Obviously, you should also read the lesson <a href="lesson_ldau.html">DFT+U</a>, 
and likely the lesson <a href="lesson_paw2.html">PAW2</a>, to generate PAW atomic data.<br> 
<p>This lesson should take about 1/2 hour. </p>
<h5>Copyright (C) 2010-2014 ABINIT group (DJA) <br>
This file is distributed under the terms of the GNU General Public
License, see ~ABINIT/COPYING or <a
 href="http://www.gnu.org/copyleft/gpl.txt">
http://www.gnu.org/copyleft/gpl.txt </a>. <br>
For the initials of contributors, see ~ABINIT/Infos/contributors . </h5>

<script type="text/javascript" src="list_internal_links.js"> </script>

<h3><b><b>Contents of udet :</b></b></h3>
<ul>
<li><a href="lesson_udet.html#0">0.</a> Summary of linear response method to determine U</li>
<li><a href="lesson_udet.html#1">1.</a> Determine U in ABINIT</li>
<li><a href="lesson_udet.html#2">2.</a> The ujdet utility  (<a  href="../input_variables/varbas.html#ecut" target="kwimg" >ecut</a>)</li>
</ul>
<hr>

<h3><a name="0"></a><b><br>0. Summary of linear response to determine U</b></h3>
<p>The linear response method has been introduced by several authors [1-6]. It is based on the fact that U corresponds to the energy to localize 
an additional electron on the same site: U=E[n+1]+E[n-1]-2E[n] [4]. This can be reformulated as the response to an infinitesimal change of
of occupation of the orbital by the electrons dn. Then U is the second derivative 
of the energy with respect to the occupation U=d^2E/ d^2n. The first method fixed the occupation by cutting 
the hopping terms of localized orbitals. 
Later propositions constrained the occupation through Lagrange multipliers [3,5]. 
The lagrange multiplier \alpha corresponds to a local potential that has to be applied to augment or decrease the
occupation by +/-1 electron. Note that the occupation need not to vary by 1 electron, but the occupation shift can be infinitesimal.  

</p>
<p>It is recommanded to read the following papers to understand the basic concepts of the linear response calculations to calculate U :</p>
[1] "<span style="font-style: italic;">A LDA+U study of selected iron compounds </span>", M. Cococcioni, Ph.D. thesis, International School for Advanced Studies (SISSA), Trieste (2002)<br>
[2] "<span style="font-style: italic;">Linear response approach to the calculation of the effective interaction parameters in the LDA + U method</span>", M. Cococcioni and S. de Gironcoli, Physical Review B <span style="font-weight: bold;">71</span>, 035105 (2005)<br> 
<p>Some further reading: </p>
[3] "<span style="font-style: italic;">Ground States of Constrained Systems: Application to Cerium Impurities</span>",   P. H. Dederichs, S. Blugel, R. Zeller, and H. Akai, Phys. Rev. Lett. <span style="font-weight: bold;">53</span>, 2512 (1984)<br>
[4] "<span style="font-style: italic;">Calculation of Coulomb-interaction parameters for La<sub>2</sub>CuO<sub>4</sub> using a constrained-density-functional approach</span>",  M. S. Hybertsen, M. Schluter, and N. E. Christensen, Phys. Rev. B <span style="font-weight: bold;">39</span>, 9028 (1989)<br>
[5] "<span style="font-style: italic;">Density-functional calculation of effective Coulomb interactions in metals</span>",  V. I. Anisimov and O. Gunnarsson, Phys. Rev. B<span style="font-weight: bold;">42</span>, 7570 (1991)<br>
[6] "<span style="font-style: italic;">Reformulation of the LDA+U method for a local-orbital basis</span>",  W. E. Pickett, S. C. Erwin, and E. C. Ethridge, Phys. Rev. B<span style="font-weight: bold;">58</span>, 1201 (1998)<br>

<p>The implementation of the determination of U in <span  style="font-weight: bold;">ABINIT</span> is described in the following paper, soon to appear: 
</p>
[7] "<span style="font-style: italic;">Consistent determination of U in the PAW approximation</span>", D. Adams, B. Amadon, S. Biermann<span
 style="font-weight: bold;"></span>, unpublished (2010)&#160;&#160;</p>



<h3><hr> <a name="1"></a>&#160;<b><b><br>
1.&#160; Determine U in ABINIT</b></b></h3>
<p><i>Before continuing, you might consider to work in a different subdirectory as for the other lessons. Why not "Work_udet" ?
</i><i>In what follows, the name of files are mentioned as if you were in this subdirectory.<br>
All the input files can be found in the </i><i><span  style="color: rgb(0, 102, 0);">~abinit/tests/tutorial/Input</span>
directory.</i></p><p><i>You can compare your results with reference output files located in </i><i><span style="color: rgb(0, 102, 0);">~abinit/tests/tutorial/Refs</span>

</span></i><i>directories (for the present tutorial they are named tudet*.out).</i></p>
<p>The input file&#160;<span style="color: rgb(0, 102, 0);">tudet_1.in</span> is an example of a file to prepare a wave function for further processing. 
You might use the file&#160;<span style="color: rgb(0, 102, 0);">tudet_1.files</span> as a "files" file, and get the corresponding output file <span style="color: rgb(0, 102, 0);">../Refs/tudet_1.out</span>).
<br> Copy the files&#160;<span  style="color: rgb(0, 102, 0); font-weight: bold;">tudet_1.in</span> and
<span style="color: rgb(0, 102, 0); font-weight: bold;">tudet_1.files</span> in your work directory, and run ABINIT: 
</p><pre style="margin-left: 40px;"><span style="color: rgb(153, 0, 0);">abinit &#60; tudet_1.files &#62; tudet_1.log </span> </pre>
In the meantime, you can read the input file and see that this is a usual DFT+U calculation, with U=0. 
This setting allows us to read the occupations of the Fe 3d orbitals (<a href="../input_variables/varpaw.html">lpawu</a> 2). 
The cell contains 2 atoms. This is the minimum to get reasonable response matrices. 
We converge the electronic structure to a high accuracy (<a href="../input_variables/varbas.html">tolvrs</a> 10d-12), which usually allows to 
determine occupations with a precision of 10d-10. The ecut is chosen very low, in order to accelerate calculations. <br>
We do not suppress the writing of the _WFK file, because this is the input for the calculations of U. 
<p> Once this calculation has finished, run the second one: 
<br> Copy the files&#160;<span  style="color: rgb(0, 102, 0); font-weight: bold;">tudet_2.in</span> and
<span style="color: rgb(0, 102, 0); font-weight: bold;">tudet_2.files</span> in your work directory, and run ABINIT: 
</p><pre style="margin-left: 40px;"><span style="color: rgb(153, 0, 0);">abinit &#60; tudet_2.files &#62; tudet_1.log </span> </pre>
As you can see from the tudet_2.files file, this run uses the tudet_1o_WFK as an imput. In the tudet_2.in all the symmetry relations are specified explicitely. In the tudet_2.log you can verify
that none of the symmetries connects atoms 1 with atom 2: <br>
</p><pre style="margin-left: 40px;">
symatm: atom number    1 is reached starting at atom <br>
   1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 <br>
   1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1 <br>
 symatm: atom number    2 is reached starting at atom <br>
   2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2 <br>
   2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2  2 <br>
</pre>
<p>This is important. Otherwise the occupation numbers have no freedom to evolve separately on the atoms surrounding the atom on which you apply the perturbation.</p>

<p> You can generate these symmetries, in a separate run, where you specify the atom where the perturbation is done as a different species. From the output
you read the number of symmetries (<a href="../input_variables/varbas.html">nsym</a>), 
the symmetry relations (<a href="../input_variables/varbas.html">symrel</a>) 
and the non-symmorphic vectors (<a href="../input_variables/vardev.html">tnons</a>tnons). 
This is already done here and
inserted in the tudet_2.in file. Note that you can alternatively just break all the symmetries (<a href="../input_variables/varbas.html">nsym</a>=1), 
or break specific symmetries by displacing
the inpurity atom in the preliminary run. However, for the determination of U, the positions should be the ideal positions and only the symmetry should be
reduced. </p>

<p> For the rest, usually it is enough to set "<a href="../input_variables/vardev.html">macrouj</a> 1" to run the calculation of U. 
Note also, that the "<a href="../input_variables/varfil.html">irdwfk</a> 1" and the "<a href="../input_variables/varbas.html">tolvrs</a> 1d-8" need not be
set explicitly, because they are the defaults with <a href="../input_variables/vardev.html">macrouj</a> 1.  
</p>

<p>  Once the calculation tudet_2 is converged, you can have look at the output. 
You can see, that the atomic shift (<a href="../input_variables/vardev.html">atvshift</a>) is automatically set: </p>
<pre style="margin-left: 40px;">
         atvshift      0.00367    0.00367    0.00367    0.00367    0.00367
                       0.00367    0.00367    0.00367    0.00367    0.00367
                       0.00000    0.00000    0.00000    0.00000    0.00000
                       0.00000    0.00000    0.00000    0.00000    0.00000
</pre>
This means, that all the 10 3<span style="font-style: italic;">d</span> spin-spin orbitals on the first Fe atom where shifted by 0.1 eV (=0.00367 Ha). 
On the second atom no shift was applied. 
Self-consistency was reached twice: Once for a positive shift, once for the negative shift: 

<pre style="margin-left: 40px;"><span style="color: rgb(153, 0, 0);">grep SCF  tudet_2.out  </span> </pre>

The lines starting with URES

<pre style="margin-left: 40px;">
 URES      ii    nat       r_max    U(J)[eV]   U_ASA[eV]   U_inf[eV]
 URES       1      2     4.69390     4.74555     3.67983     3.20150
 URES       2     16     9.38770     8.77694     6.80588     5.92122
 URES       3     54    14.08160     9.17082     7.11130     6.18694
 URES       4    128    18.77540     9.25647     7.17772     6.24472
 URES       5    250    23.46930     9.28509     7.19991     6.26403
</pre>

 contain U for different supercells. The column "nat" indicates how many atoms were involved in the supercell, 
r_max indicates the maximal distance of the impurity atoms in that supercell. 
The column U indicates the actual U you calculated and should use in your further calculations. 
U_ASA is an estimate of U for more extended projectors and U_\inf is the estimate for a projector extended even further. </p>

<p> Although it is enough to set "<a href="../input_variables/vardev.html">macrouj</a> 1", 
you can further tune your runs.  As a standard, the potential shift to the 1st atom treated in DFT+U, 
with a potential shift of 0.1 eV. If you wish to determine U on the second atom you put "<a href="../input_variables/vardev.html">pawujat</a> 2". 
To change the size of the potential shift use 
e.g. "<a href="../input_variables/vardev.html">pawujv</a> 0.05 eV". 
Our tests show that 0.1 eV is the optimal value, but the linear response is linear in a wide range (1-0.001 eV).</p>  


<h3><hr> <a name="2"></a>&#160;<b><b><br>
2.&#160; The ujdet utility </b></b></h3>

In general the calculation of U with abinit as described above is sufficient. 
For some post-treatment that goes beyond the standard applications, a separate executable ujdet 
was created. The output of abinit is formatted so that you can easily "cut" the part with the ujdet input variables : 
you can generate the standard input file for the ujdet utility by typing: 

<pre style="margin-left: 40px;"><span style="color: rgb(153, 0, 0);">sed -n "/MARK/,/MARK/p" tudet_2.out  > ujdet.in  </span> </pre>

<p>Note that the input for the ujdet utility is always called ujdet.in </p>
<p> It contains the potential shifts
applied vsh (there are 4 shifts: vsh1, vsh3 for non-selfconsistent calculations that allows to extract the contribution to U originating from a 
non-interacting electron gas, and vsh2, vsh4 for positive and negative potential shift). The same applies for the occupations occ[1-4]. </p>

<p> We now calculate U for an even larger supercell: Uncomment the line scdim in ujdet.in and add
<pre style="margin-left: 40px;"> scdim 6 6 6 </pre> to specify a 6 6 6 supercell or <pre style="margin-left: 40px;"> scdim 700 0 0 </pre> to specify the maximum 
total number of atoms in the supercell. 

Then, run ujdet: 
<pre style="margin-left: 40px;"><span style="color: rgb(153, 0, 0);">rm ujdet.[ol]* ; ujdet > ujdet.log   </span> </pre>

<pre style="margin-left: 40px;"><span style="color: rgb(153, 0, 0);">grep URES ujdet.out  </span> </pre>

<pre style="margin-left: 40px;">
 URES      ii    nat       r_max    U(J)[eV]   U_ASA[eV]   U_inf[eV]
 URES       1      2     4.69390     4.74555     3.67983     3.20150
 URES       2     16     9.38770     8.77694     6.80588     5.92122
 URES       3     54    14.08160     9.17082     7.11130     6.18694
 URES       4    128    18.77540     9.25647     7.17772     6.24472
 URES       5    250    23.46930     9.28509     7.19991     6.26403
 URES       6    432    28.16310     9.29738     7.20944     6.27232
</pre>

As you can see, U has now been extrapolated to a supercell containing 432 atoms.</p>

The value of U depends strongly on the extension of the projectors used in the calculation. If you want to use U in LMTO-ASA calculations you can use the 
keyword <a href="../input_variables/vardev.html">pawujrad</a> in the ujdet.in file to get grips of the U you want to use there. 
Just uncomment the line and add the ASA-radius of the specific atom e.g.

<pre style="margin-left: 40px;">  pawujrad 2.5 </pre>

Running 

<pre style="margin-left: 40px;"><span style="color: rgb(153, 0, 0);">rm ujdet.[ol]* ; ujdet > ujdet.log   </span> </pre> 

gives now higher values in the column U_ASA than in the runs before (8.07 eV compared to 7.21 eV): For more localized projectors the U value has to be bigger. 

<script type="text/javascript" src="list_internal_links.js"> </script>

</body>
</html>