Tutorial 6: the band structure of ferromagnetic bulk CrI3
In this tutorial we will calculate the band structure of the bulk ferromagnetic semiconductor CrI3 using the supercell approach. The input file for this tutorial can be downloaded here.
The input file
First, let us inspect the input file:
1{
2 "workflow": {
3 "task": "singlepoint",
4 "functional": "ki",
5 "base_functional": "lda",
6 "method": "dscf",
7 "init_orbitals": "mlwfs",
8 "calculate_alpha": false,
9 "alpha_guess": 0.122,
10 "spin_polarized": true,
Here we tell the code to calculate the KI bandstructure using the ΔSCF supercell cell approach. We will not actually calculate the screening parameters in this tutorial (because this calculation takes a bit of time) so we have set calculate_alpha to False and we have provided a reasonable value for the screening parameters in the alpha_guess field. (This value corresponds to the inverse of the (average of the) macroscopic dielectric function, computed using DFT.) In its low-temperature phase, bulk CrI3 is a ferromagnetic semiconductor with 3 unpaired d electrons on each of the two Cr atoms in the primitive cell. We provide this information in the input file by setting spin_polarized to true and by specifying the expected total magnetization in the calculator parameters block.
Note
When running magnetic systems, the keyword starting_magnetization (documented here) can help Quantum ESPRESSO find the ground state faster. As an optional exercise, try providing this keyword in your input file, choosing appropriate values based on the above description of the expected magnetic state of CrI3.
For a magnetic systems two sets of Wannier projections need to be provided, one for each spin channel. This is specified by splitting the w90 block into an up and down sub-blocks:
55 "w90": {
56 "up": {
57 "projections": [
58 [{ "site": "Cr", "ang_mtm": "l=0" }],
59 [{ "site": "Cr", "ang_mtm": "l=1" }],
60 [{ "site": "I", "ang_mtm": "l=0" }],
61 [
62 { "site": "I", "ang_mtm": "l=1" },
63 "Cr:l=2,mr=1",
64 "Cr:l=2,mr=4",
65 "Cr:l=2,mr=5"
66 ],
67 ["Cr:l=2,mr=2", "Cr:l=2,mr=3"]
68 ]
69 },
70 "down": {
71 "projections": [
72 [{ "site": "Cr", "ang_mtm": "l=0" }],
73 [{ "site": "Cr", "ang_mtm": "l=1" }],
74 [{ "site": "I", "ang_mtm": "l=0" }],
75 [{ "site": "I", "ang_mtm": "l=1" }],
76 ["Cr:l=2,mr=1", "Cr:l=2,mr=4", "Cr:l=2,mr=5"],
77 ["Cr:l=2,mr=2", "Cr:l=2,mr=3"]
78 ]
79 }
As already seen for ZnO in Tutorial 3, we will use of the block-Wannierization functionality to wannierize each block of bands separately. The projections provided above have been determined looking at the pDOS of the material as explained in Tutorial 3. The first four projections span the occupied manifold. Note that the fourth one differs between the two spin channels reflecting the different number of electrons in the up and down channels. The fifth projection in the up channel, and the fifth and sixth projections in the down channel span the low-lying part of the empty manifold.
The rest of the input file contains the atomic coordinates and \(k\)-point configuration, as per usual.
Running the calculation
Running koopmans run cri3.json should produce an output with several sections printing information on the different steps: after the header, the Wannierization is performed for the two spin channels, one at the time:
Wannierize
✅
01-scfcompleted✅
02-nscfcompletedWannierize spin up Block 1
✅
01-wannier90_preproccompleted✅
02-pw2wannier90completed✅
03-wannier90completed
Wannierize spin up Block 2
✅
01-wannier90_preproccompleted✅
02-pw2wannier90completed✅
03-wannier90completed
Wannierize spin up Block 3
✅
01-wannier90_preproccompleted✅
02-pw2wannier90completed✅
03-wannier90completed
…
Wannierize spin down Block 1
✅
01-wannier90_preproccompleted✅
02-pw2wannier90completed✅
03-wannier90completed
Wannierize spin down Block 2
✅
01-wannier90_preproccompleted✅
02-pw2wannier90completed✅
03-wannier90completed
Wannierize spin down Block 3
✅
01-wannier90_preproccompleted✅
02-pw2wannier90completed✅
03-wannier90completed
Having completed the Wannierization, the results are converted to a supercell for subsequent kcp.x calculations, and the DFT initialization in the supercell is run. If we had instructed the code to calculate the screening parameters, this would then be followed by an extra step where these are calculated. But since we have told the code not to compute the screening parameters, the workflow progresses immediately to the final step
✅
02-ki_finalcompleted
where the KI Hamiltonian is constructed and diagonalized in the supercell. To get the final band structure plot on the path specified in the input file, a postprocessing step is needed to unfold the bands from the Γ-point of the supercell into the Brillouin zone of the primitive cell:
Unfold And Interpolate
✅
01-unfold_and_interpolate_occ_upcompleted✅
02-unfold_and_interpolate_emp_upcompleted✅
03-unfold_and_interpolate_occ_downcompleted✅
04-unfold_and_interpolate_emp_downcompleted
Plotting the results
To plot the final KI band structure, we will load all of the information from the cri3.pkl file, as we already did for ZnO in Tutorial 3. This is done in the plot_bands.py script, which generates the following figure:
The KI@LDA band structure of ferromagnetic CrI3
Warning
Although qualitatively correct, this calculation and the final band structure is far from converged. In particular, the energy cut-off and the supercell size needs to be increased to obtain reliable results.