From aa39c37d8b0b552836481b6a9e72eeb9a272b920 Mon Sep 17 00:00:00 2001 From: "Oleg E. Peil" Date: Tue, 13 Oct 2015 14:08:10 +0200 Subject: [PATCH] Added preliminary parser description to the docs This is a description of the preliminary design for the parser of PROJCAR/LOCPROJ files output by VASP. --- doc/vasp/source/vaspio.rst | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/doc/vasp/source/vaspio.rst b/doc/vasp/source/vaspio.rst index e2425524..b3a690e1 100644 --- a/doc/vasp/source/vaspio.rst +++ b/doc/vasp/source/vaspio.rst @@ -3,7 +3,27 @@ VASP input-output ################# -The following VASP are used by PLOtools: - * PLOCAR: raw projectors generated by VASP-PLO interface - * EIGENVAL: Kohn-Sham eigenvalues as well as `k`-points with weights +The following VASP files are used by PLOtools: + * PROJCAR, LOCPROJ: raw projectors generated by VASP-PLO interface (VASP version >= 5.4.1) + * EIGENVAL: Kohn-Sham eigenvalues as well as `k`-points with weights and Fermi weights * IBZKPT: `k`-point data (:math:`\Gamma`) + * POSCAR: crystal structure data + +Starting from version 5.4.1 VASP now supports an official output of various types of +projectors that are requested in INCAR by specifying a set of sites, orbitals and types +of projectors. The calculated projectors are output into files **PROJCAR** and **LOCPROJ**. +The difference between these two files is that **LOCPROJ** contains raw matrices without +any reference to sites/orbitals, while **PROJCAR** is more detailed on that. +In particular, the information that can be obtained for each projector from **PROJCAR** is the following: + + * site (and species) index + * for each `k`-point and band: a set of complex numbers for labeled orbitals + +At the same time, **LOCPROJ** contains the total number of projectors (as well as the +number of `k`-points, bands, and spin channels) in the first line, +which can be used to allocate the arrays before parsing. + +To enhance the performance of the parser, it is implemented in plain C. The idea is +that the python part of the parser first reads the first line of **LOCPROJ** and +then calls the C-routine with necessary parameters to parse **PROJCAR**. +