bcc Fe: Construction of MLWFs with SOC, calculation of the Berry curvature AHE, and calculation of the orbital magnetization
Construction of MLWFs with SOC
First we generate the input files using the input generator. We use the following inpgen.inp file for the input generator:
Wannier tutorial: Fe
&input film=f /
2.71175 2.71175 2.71175
-2.71175 2.71175 2.71175
-2.71175 -2.71175 2.71175
1.0
1.0 1.0 1.0
1
26 0.0 0.0 0.0
&soc 0.0 0.0 /
Run inpgen2 -f inpgen.inp Run fleur_MPI in order to converge the charge density. Check that the charge density is converged. After converging the charge density we start with the construction of MLWFs. For this purpose, generate a new subdirectory Wann in your working directory. Copy inp.xml, cdn.hdf and sym.xml into the Wann subdirectory. Change into the Wann subdirectory and obtain from the inp.xml file information on the local orbitals. In this example, the input generator has defined the following local orbitals:
<atomSpecies>
<species name="Fe-1" element="Fe" atomicNumber="26" flipSpinPhi=".00000000" flipSpinTheta=".00000000" flipSpinScale="F">
...
<lo type="SCLO" l="0" n="3" eDeriv="0"/>
<lo type="SCLO" l="1" n="3" eDeriv="0"/>
</species>
</atomSpecies>
Thus, the bands from 1 through 8 are semicore states described by local orbitals. We do not include the semicore states in the construction of MLWFs. The first band of interest for the generation of MLWFs is therefore band 9. In Fe the states from the 3d shell hybridize with the 4s and 4p states to form the bands at the Fermi energy. Therefore, we construct 18 MLWFs (3d contains 10 states, 4s contains 2 states and 4p contains 6 states. 10+2+6=18). The corresponding group of 18 bands is not separated by a gap from the bands higher in energy. Therefore, we use disentanglement to disentangle 18 MLWFs from 36 bands. Since the first 8 bands describe semicore states, we disentangle the 18 MLWFs from the bands 9 through 44 (because 8+36=44). Therefore, we add the section "wannier" to inp.xml, where we specify minSpinUp="9" and maxSpinUp="44" in the bandSelection:
<output dos="F" band="F" vacdos="F" slice="F" mcd="F" wannier="T">
<wannier>
<bandSelection minSpinUp="9" maxSpinUp="44"/>
<jobList> projgen prepwan90 stopopt </jobList>
</wannier>
</output>
Note that we added wannier="T" to the line output and we added a jobList with the keywords projgen, prepwan90, and stopopt. In order to make sure that fleur computes the first 44 bands we specify numbands="44" in the line cutoffs in inp.xml:
<calculationSetup>
<cutoffs Kmax="3.50000000" Gmax="10.50000000" GmaxXC="10.50000000" numbands="44"/>
Create the file projgen_inp with the following contents:
Fe 2 2 0
Fe 2 3 0
Fe 2 5 0
Fe -5 0 0
Create a file kpts.xml with an equidistant 8x8x8 mesh of k-points. Now, run fleur_MPI in order to generate the file proj with the initial projections. The tasks projgen and prepwan90 are not parallelized. It is therefore sufficient to run fleur_MPI on a single node in order to define the initial projections (projgen) and to set up the bkpts and WF1 files (prepwan90).
Edit the jobList in inp.xml:
<jobList> matrixmmn matrixamn </jobList>
</wannier>
</output>
Run fleur_MPI. The calculation of WF1.mmn (key: matrixmmn) and WF1.amn (key: matrixamn) is parallelized. Therefore, you may run fleur_MPI in parallel.
In WF1.win specify dis_froz_max=14.0 and run wannier90.x WF1. You may run wannier90.x WF1 in parallel. Converge the MLWFs. The converged MLWFs should look like this:
Final State
WF centre and spread 1 ( 0.000000, -0.000000, 0.000000 ) 1.54244834
WF centre and spread 2 ( -0.000000, 0.000000, -0.000000 ) 1.54244836
WF centre and spread 3 ( -0.000000, -0.000000, 0.000000 ) 1.54248679
WF centre and spread 4 ( 0.000145, 1.110220, 0.000000 ) 2.79098407
WF centre and spread 5 ( -0.000145, -1.110220, 0.000000 ) 2.79098407
WF centre and spread 6 ( -1.110220, 0.000145, -0.000000 ) 2.79098406
WF centre and spread 7 ( 1.110220, -0.000145, -0.000000 ) 2.79098406
WF centre and spread 8 ( -0.000000, -0.000000, -1.110204 ) 2.79093739
WF centre and spread 9 ( -0.000000, -0.000000, 1.110204 ) 2.79093739
WF centre and spread 10 ( -0.000000, 0.000000, -0.000000 ) 1.65935646
WF centre and spread 11 ( 0.000000, -0.000000, 0.000000 ) 1.65935648
WF centre and spread 12 ( 0.000000, 0.000000, -0.000000 ) 1.66047265
WF centre and spread 13 ( 0.000017, 1.160630, 0.000000 ) 2.84919310
WF centre and spread 14 ( -0.000017, -1.160630, 0.000000 ) 2.84919310
WF centre and spread 15 ( -1.160630, 0.000017, -0.000000 ) 2.84919312
WF centre and spread 16 ( 1.160630, -0.000017, -0.000000 ) 2.84919312
WF centre and spread 17 ( 0.000000, 0.000000, -1.159956 ) 2.84643170
WF centre and spread 18 ( 0.000000, 0.000000, 1.159956 ) 2.84643170
Sum of centres and spreads ( 0.000000, 0.000000, -0.000000 ) 43.44201597
Calculation of the Berry curvature AHE
Now, you may continue to compute the Berry curvature AHE using postw90.x according to the Wannier90 tutorial (Example 18 in the Wannier90 Tutorial).
Note that above we specified
&soc 0.0 0.0 /
in the input file for the input generator.
The spin quantization axis is therefore the positive z-axis.
When you grep for the converged spin moments in the out-file produced by fleur_MPI
during the selfconsistency cycle you find that the spin
projected on the spin quantization axis is
positive:
grep -A 5 magnetic out yields
--> magnetic moments in the spheres:
mm --> type moment spin-up spin-down
--> mm 1 2.26003 8.56200 6.30197
Consequently, the spin points in z-direction. (2.26003 is the projection of the spin on the spin quantization axis, which is the z-axis due to the choice of &soc 0.0 0.0 / in the input file for the input generator.) The gyromagnetic ratio of the electron spin is negative, i.e., the corresponding magnetization points in the negative z-direction. Since the anomalous Hall conductivity is an odd function of the magnetization, we will obtain in this example an anomalous Hall conductivity opposite in sign to the literature reference values, which usually list the AHE conductivity for the case of magnetization along the positive z-axis.
Calculation of the orbital magnetization
In order to obtain the orbital magnetization from Wannier interpolation we need to compute the WF1.uHu file. This is controlled by the key matrixuhu in the jobList of the wannier section in inp.xml.
You may now continue to calculate the orbital magnetization using postw90.x following the example 19 from the Wannier90 Tutorial.