
    Processing tools for PLOs generated by VASP.
 
    The main purpose of this set of tools is to process raw data
generated by VASP and to convert data to the TRIQS format. The raw data
is read from files:
      POSCAR (atomic positions)
      EIGVAL (eignevalues)
      PLOCAR (non-orthogonalized PLOs and Fermi-weights)
      IBZKPT (k-points and tetrahedra)

    An appropriate set of orthogonalized projectors is defined by
parameters defined in the config file (config-like syntax).
The config-file allows to define several groups of projectors.


   Structure of PLOtools:

   vaspio.py: reading of VASP-generated files

   

   vaspio.py:
   All VASP data are represented by objects which contain data read
from corresponding files. These objects will subsequently be used to
handle the data and convert it into a more functional internal representation.


     Functions

       read_lines(filename): generator yielding lines from a file <filename>
       
     Classes:
       Plocar: raw PLO data from PLOCAR file;
               the data itself is read using an auxiliary C-routine 'read_plocar'

       Poscar: structure data from POSCAR file

       Kpoints: k-point data from IBZKPT file
                note that k-point data is also contained in EIGENVAL file;
                the two k-point sets will be checked for consistency. 

       Eigenval: Kohn-Sham eigenvalues as well as k-points with weights
             
       Symmcar: symmetry operations stored by VASP into SYMMCAR file
     

   ploortho.py (or projectors.py)
   Set of routines for processing projectors. The functionality includes:
     -- selecting a proper subset of non-orthogonalized projectors from the raw VASP input
     -- transforming and orthogonalizing projectors
     -- calculating DFT density matrix and local Hamiltonian

   General design:
     Input data: conf_pars (output of 'parse_input()'), VASP file descriptors (Eigenval, Plocar, etc.)
     
     * A projector for a given k-point is described by class 'Projector'
       PLOs project on a set or orbitals and a set of ions.

     * Projector set is a container of 'Projector' objects. 
       Out of optimization purposes the projectors are stored in a multi-dimensional
       array. A view in terms of Projector objects is, however, possible.


