From 210be63a3296e4e89c91c98264e668ce770a0a26 Mon Sep 17 00:00:00 2001 From: aichhorn Date: Thu, 13 Aug 2015 11:03:25 +0200 Subject: [PATCH] wrote the structure part --- doc/basicnotions/structure.rst | 107 ++++++++++++++++++++++++++++++++- doc/index.rst | 2 +- 2 files changed, 105 insertions(+), 4 deletions(-) diff --git a/doc/basicnotions/structure.rst b/doc/basicnotions/structure.rst index ece8ca17..a27340c2 100644 --- a/doc/basicnotions/structure.rst +++ b/doc/basicnotions/structure.rst @@ -1,11 +1,112 @@ Structure of DFT Tools ====================== -.. warning:: - TO BE WRITTEN! - .. image:: images/structure.png :width: 700 :align: center +The central part of :program:`dft_tools`, which is performing the +steps for the DMFT self-consistency cycle, is written following the +same philosophy as the :ref:`TRIQS ` toolbox. At +the user level, easy-to-use python modules are provided that allow to +write simple and short scripts performing the actual +calculation. Here, we will describe the general structure of the +package, for the details of how to use the modules, please consult the +user guide of this :ref:`documentation`. + +The interface layer +------------------- + +Since the input for this DMFT part has to be provided by DMFT +calculations, there needs to be another layer that connects the +python-based modules with the DFT output. Naturally, this layer +depends on the DFT package at hand. At the moment, there is an +interface to the Wien2k band structure package, and a very light +interface that can be used in a more general setup. Note that this +light interface layer **dows not** allow full charge self-consistent +calculations. + +Wien2k interface +"""""""""""""""" + +This interface layer consists of two parts. First, the output from Wien2k +is taken, and localised Wannier orbitals are constructed. This is done +by the fortran program :program:`dmftproj`. The second part consist in +the conversion of the :program:`dmftproj` into the hdf5 file +format to be used for the DMFT calculation. This step is done by a +python routine called :class:`Wien2kConverter`, that reads the text output and +creates the hdf5 input file with the necessary ingredients. Quite +naturally, :program:`dft_tools` will adopt this converter concept also for future +developments for other DFT packages. + +General interface +""""""""""""""""" + +In addition to the specialised Wien2k interface, :program:`dft_tools` +provides also a very light-weight general interface. It basically +consists of a very simple :class:`HkConverter`. As input it requires a +hamiltonian matrix :math:`H_{mn}(\mathbf{k})` written already in +localised-orbital indices :math:`m,n`, on a :math:`\mathbf{k}`-point +grid covering the Brillouin zone, and just a few other informations +like total numer of electrons, how many correlated atoms in the unit +cell, and so on. It converts this hamiltonian into a hdf5 format and +sets some variables to standard values, such that it can be used with +the python modules performing the DMFT calculation. How the +hamiltonian matrix :math:`H_{mn}(\mathbf{k})` is actually calculated, +is **not** part of this interace. + +The DMFT calculation +-------------------- + +As mentioned above, there are a few python routines that allow to +perform the multi-band DMFT calculation in the context of real +materials. The major part is contained inte module +:class:`SumkDFT`. It contains routines to + +* calculate local Greens functions +* do the upfolding and downfolding from Bloch bands to Wannier + orbitals +* calculate the double-counting correction +* calculate the chemical potential in order to get the electron count right +* other things like determining the structure of the local + hamiltonian, rotating from local to global coordinate systems, etc. + +At the user level, all these routines can be used to construct +situation- and problem-dependent DMFT calculations in a very efficient +way. + +Full charge self consistency +---------------------------- + +Using the Wien2k interface, one can perform full charge +self-consistent calculations. :class:`SumkDFT` provides routines to +calculate the correlated density matrix and stores it in a format that +can be read in by the :program:`lapw2` part of the Wien2k +package. Changing a one-shot calculation in a full charge +self-consistent one is only a couple of additional lines in the code! + +Post-processing +--------------- + +The main result of DMFT calculation is the interacting Greens function +and the Self energy. However, one is normally interested in +quantitites like band structure, density of states, or transport +properties. In order to calculate these things, :program:`dft_tools` +provides the post-processing modules :class:`SumkDFTTools`. It +contains routines to calculate + +* (projected) density of states +* partial charges +* correlated band structures (*spaghettis*) +* transport properties such as optical conductivity, resistivity, + or thermopower. + +.. warning:: + At the moment neither :ref:`TRIQS` nor :program:`dft_tools` + provides Maximum Entropy routines! You can use the Pade + approximants implemented in the TRIQS library, or you use your own + home-made Maximum Entropy code to do the analytic continuation from + Matsubara to the real-frequency axis. + + diff --git a/doc/index.rst b/doc/index.rst index ae61f696..4849ba5f 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -13,7 +13,7 @@ correlated materials, combining realistic DFT band-structure calculations with the dynamical mean-field theory. Together with the necessary tools to perform the DMFT self-consistency loop for realistic multi-band problems, the package provides a full-fledged -charge self-consistent interface to the `WIEN2K package +charge self-consistent interface to the `Wien2K package `_. In addition, if Wien2k is not available, it provides a generic interface for one-shot DFT+DMFT calculations, where only the single-particle Hamiltonian in orbital space has to be