.. _nio_csc: DFT and projections ================================================== We will perform charge self-consitent DFT+DMFT calcluations for the charge-transfer insulator NiO. We start from scratch and provide all necessary input files to do the calculations: First for doing a single-shot calculation and then for charge-selfconsistency. VASP setup ------------------------------- We start by running a simple VASP calculation to converge the charge density initially. Use the :ref:`INCAR`, :ref:`POSCAR`, and :ref:`KPOINTS` provided and use your own :file:`POTCAR` file. Let us take a look in the :file:`INCAR`, where we have to specify local orbitals as basis for our many-body calculation. .. literalinclude:: images_scripts/INCAR `LORBIT = 14` takes care of optimizing the projectors in the energy window defined by `EMIN` and `EMAX`. We switch off all symmetries with `ISYM=-1` since symmetries are not implemented in the later DMFT scripts. Finally, we select the relevant orbitals for atom 1 (Ni, d-orbitals) and 2 (O, p-orbitals) by the two `LOCPROJ` lines. For details refer to the VASP wiki on the `LOCPROJ `_ flag. The projectors are stored in the file `LOCPROJ`. plovasp ------------------------------ Next, we postprocess the projectors, which VASP stored in the file `LOCPROJ`. We do this by invoking :program:`plovasp plo.cfg` which is configured by an input file, e.g., named :ref:`plo.cfg`. .. literalinclude:: images_scripts/plo.cfg Here, in `[General]` we set the basename and the grid for calculating the density of states. In `[Group 1]` we define a group of two shells which are orthonormalized with respect to states in an energy window from `-9` to `2` for all ions simultanously (`NORMION = False`). We define the two shells, which correspond to the Ni d states and the O p states. Only the Ni shell is treated as correlated (`CORR = True`), i.e., is supplemented with a Coulomb interaction later in the DMFT calculation. Converting to hdf5 file ------------------------------- We gather the output generated by :program:`plovasp` into a hdf5 archive which :program:`dft_tools` is able to read. We do this by running :program:`python converter.py` on the script :ref:`converter.py`: .. literalinclude:: images_scripts/converter.py Now we are all set to perform a dmft calculation. DMFT ================================================== dmft script ------------------------------ Since the python script for performing the dmft loop pretty much resembles that presented in the tutorial on :ref:`srvo3`, we will not go into detail here but simply provide the script :ref:`nio.py`. Following Kunes et al. in `PRB 75 165115 (2007) `_ we use :math:`U=8` and :math:`J=1`. We se;ect :math:`\beta=5` instead of :math:`\beta=10` to ease the problem slightly. For simplicity we fix the double-counting potential to :math:`\mu_{DC}=59` eV by:: DC_value = 59.0 SK.calc_dc(dm, U_interact=U, J_hund=J, orb=0, use_dc_value=DC_value) For sensible results run this script in parallel on at least 20 cores. As a quick check of the results, we can compare the orbital occupation from the paper cited above (:math:`n_{eg} = 0.54` and :math:`n_{t2g}=1.0`) and those from the cthyb output (check lines `Orbital up_0 density:` for a t2g and `Orbital up_2 density:` for an eg orbital). They should coincide well. Local lattice Green's function for all projected orbitals ---------------------- We calculate the local lattice Green's function - now also for the uncorrelated orbitals, i.e., the O p states, for what we use the script :ref:`NiO_local_lattice_GF.py`. The result is saved in the h5 file as `G_latt_orb_it`, where `n_it>` is the number of the last DMFT iteration. Spectral function on real axis: MaxEnt ---------------------- To compare to results from literature we make use of the `maxent triqs application `_ and calculate the spectral function on real axis. Use this script to perform a crude but quick calculation: :ref:`maxent.py` using a linear real axis and a line-fit analyzer to determine the optimal :math:`\alpha`. The output is saved in the h5 file in `DMFT_results/Iterations/G_latt_orb_w_o_it`, where `` is the number of the orbital and `n_it` is again the number of the last iteration. The real axis information is stored in `DMFT_results/Iterations/w_it`. .. image:: images_scripts/nio_Aw.png :width: 400 :align: center