2018-08-01 17:00:44 +02:00
|
|
|
.. _vaspio:
|
2015-02-13 21:58:42 +01:00
|
|
|
|
|
|
|
VASP input-output
|
|
|
|
#################
|
|
|
|
|
2015-10-13 14:08:10 +02:00
|
|
|
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
|
2015-02-13 21:58:42 +01:00
|
|
|
* IBZKPT: `k`-point data (:math:`\Gamma`)
|
2015-10-13 14:08:10 +02:00
|
|
|
* 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**.
|
|
|
|
|
2015-10-15 13:20:27 +02:00
|
|
|
The projectors are read in and stored in class `Plocar`. Two major data structures are stored:
|
|
|
|
|
|
|
|
* complex array `plo = nd.array((nproj, nspin, nk, nband))`
|
|
|
|
* list of projector descriptors `proj_params` containing the information on
|
|
|
|
the character of projectors
|
|
|
|
|
|
|
|
When a ProjectorShell is initialized it copies a subset of projectors corresponding
|
|
|
|
to selected sites/orbitals. This can be done by looping all shell sites/orbitals and
|
|
|
|
searching for the corresponding projector using the descriptor list `proj_params`.
|
|
|
|
|