Pt: Construction of MLWFs with SOC and calculation of the Pauli spin matrices for Wannier interpolation
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 example: Pt
&input film =f /
&lattice latsys='cF' a= 7.418/
1
78 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="Pt-1" element="Pt" atomicNumber="78" flipSpinPhi=".00000000" flipSpinTheta=".00000000" flipSpinScale="F">
...
<lo type="SCLO" l="1" n="5" eDeriv="0"/>
</species>
</atomSpecies>
Thus, the bands from 1 through 6 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 7. In Pt the states from the 5d shell hybridize with the 6s and 6p states to form the bands close to the Fermi energy. Therefore, we construct 18 MLWFs (5d contains 10 states, 6s contains 2 states and 6p 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 6 bands describe semicore states, we disentangle the 18 MLWFs from the bands 7 through 42 (because 6+36=42). Therefore, we add the section "wannier" to inp.xml, where we specify minSpinUp="7" and maxSpinUp="42" in the bandSelection:
<output dos="F" band="F" vacdos="F" slice="F" mcd="F" wannier="T">
<wannier>
<bandSelection minSpinUp="7" maxSpinUp="42"/>
<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 42 bands we specify numbands="42" in the line cutoffs in inp.xml:
<calculationSetup>
<cutoffs Kmax="3.50000000" Gmax="10.50000000" GmaxXC="10.50000000" numbands="42"/>
Create the file projgen_inp with the following contents:
Pt 2 2 0
Pt 2 3 0
Pt 2 5 0
Pt -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 mmn0 </jobList>
</wannier>
</output>
Run fleur_MPI -eig hdf. The calculation of WF1.mmn (key: matrixmmn) and WF1.amn (key: matrixamn) is parallelized. Therefore, you may run fleur_MPI -eig hdf in parallel. In this example we run fleur_MPI with the "-eig hdf" option because we would like to reuse the eigenvectors in a later step, namely for the calculation of the Pauli spin matrices.
In WF1.win specify dis_froz_max=18.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.000007 ) 2.86506000
WF centre and spread 2 ( -0.000000, 0.000000, -0.000007 ) 2.86505986
WF centre and spread 3 ( -0.000000, -0.000000, 0.000000 ) 2.86506927
WF centre and spread 4 ( -1.314590, 0.000000, -0.000005 ) 3.82792905
WF centre and spread 5 ( 1.314590, -0.000000, -0.000005 ) 3.82792905
WF centre and spread 6 ( -0.000000, -1.314590, 0.000005 ) 3.82792880
WF centre and spread 7 ( 0.000000, 1.314590, 0.000005 ) 3.82792880
WF centre and spread 8 ( 0.000000, 0.000000, 1.314592 ) 3.82793481
WF centre and spread 9 ( -0.000000, -0.000000, -1.314592 ) 3.82793471
WF centre and spread 10 ( 0.000000, 0.000000, -0.000007 ) 2.86506000
WF centre and spread 11 ( -0.000000, -0.000000, 0.000007 ) 2.86505986
WF centre and spread 12 ( -0.000000, 0.000000, -0.000000 ) 2.86506927
WF centre and spread 13 ( -1.314590, 0.000000, 0.000005 ) 3.82792905
WF centre and spread 14 ( 1.314590, -0.000000, 0.000005 ) 3.82792905
WF centre and spread 15 ( -0.000000, -1.314590, -0.000005 ) 3.82792880
WF centre and spread 16 ( 0.000000, 1.314590, -0.000005 ) 3.82792880
WF centre and spread 17 ( -0.000000, 0.000000, 1.314592 ) 3.82793471
WF centre and spread 18 ( -0.000000, 0.000000, -1.314592 ) 3.82793481
Sum of centres and spreads ( -0.000000, 0.000000, -0.000000 ) 63.12554871
Calculation of the Pauli spin matrices for Wannier interpolation
In the line output in inp.xml we add eig66="T" in order to reuse the eigenvectors:
<output dos="F" band="F" vacdos="F" slice="F" mcd="F" wannier="T" eig66="T">
In the jobList in inp.xml specify updown and mmn0:
<wannier>
<bandSelection minSpinUp="7" maxSpinUp="42"/>
<jobList> updown mmn0 </jobList>
</wannier>
Run fleur_MPI -eig hdf.
In the next step we prepare the Pauli spin matrices in a file suitable for Wannier interpolation. Two rather different file formats are supported and you will most likely need only one of the two. These two file formats are rspauli.1 and WF1.spn. WF1.spn is the file format that is understood by postw90.x and can be used for Wannier interpolation of the spin Hall conductivity by the postw90 code.
If you would like to prepare the Pauli spin matrices in the WF1.spn format edit your inp.xml as follows:
<wannier>
<bandSelection minSpinUp="7" maxSpinUp="42"/>
<jobList> mmn0_to_spn </jobList>
</wannier>
More details on the mmn0_to_spn key can be found here: mmn0_to_spn Now, run fleur_MPI -eig hdf.
If you would like to prepare the Pauli spin matrices in the rspauli.1 format edit your inp.xml as follows:
<wannier>
<bandSelection minSpinUp="7" maxSpinUp="42"/>
<jobList> pauli </jobList>
</wannier>