mirror of
https://github.com/triqs/dft_tools
synced 2024-12-23 12:55:17 +01:00
168 lines
7.4 KiB
ReStructuredText
168 lines
7.4 KiB
ReStructuredText
.. _plovasp:
|
|
|
|
PLOVasp
|
|
=======
|
|
|
|
The general purpose of the PLOVasp tool is to transform raw, non-normalized
|
|
projectors generated by VASP into normalized projectors corresponding to
|
|
user-defined projected localized orbitals (PLO). The PLOs can then be used for
|
|
DFT+DMFT calculations with or without charge self-consistency. PLOVasp also
|
|
provides some utilities for basic analysis of the generated projectors, such as
|
|
outputting density matrices, local Hamiltonians, and projected density of
|
|
states.
|
|
|
|
PLOs are determined by the energy window in which the raw projectors are
|
|
normalized. This allows to define either atomic-like strongly localized Wannier
|
|
functions (large energy window) or extended Wannier functions focusing on
|
|
selected low-energy states (small energy window).
|
|
|
|
In PLOVasp, all projectors sharing the same energy window are combined into a
|
|
`projector group`. Technically, this allows one to define several groups with
|
|
different energy windows for the same set of raw projectors. Note, however,
|
|
that DFTtools does not support projector groups at the moment but this feature
|
|
might appear in future releases.
|
|
|
|
A set of projectors defined on sites related to each other either by symmetry
|
|
or by an atomic sort, along with a set of :math:`l`, :math:`m` quantum numbers,
|
|
forms a `projector shell`. There could be several projectors shells in a
|
|
projector group, implying that they will be normalized within the same energy
|
|
window.
|
|
|
|
Projector shells and groups are specified by a user-defined input file whose
|
|
format is described below.
|
|
|
|
Input file format
|
|
-----------------
|
|
|
|
The input file is written in the standard config-file format.
|
|
Parameters (or 'options') are grouped into sections specified as
|
|
`[Section name]`. All parameters must be defined inside some section.
|
|
|
|
A PLOVasp input file can contain three types of sections:
|
|
|
|
#. **[General]**: includes parameters that are independent
|
|
of a particular projector set, such as the Fermi level, additional
|
|
output (e.g. the density of states), etc.
|
|
#. **[Group <Ng>]**: describes projector groups, i.e. a set of
|
|
projectors sharing the same energy window and normalization type.
|
|
At the moment, DFTtools support only one projector group, therefore
|
|
there should be no more than one projector group.
|
|
#. **[Shell <Ns>]**: contains parameters of a projector shell labelled
|
|
with `<Ns>`. If there is only one group section and one shell section,
|
|
the group section can be omitted but in this case, the group required
|
|
parameters must be provided inside the shell section.
|
|
|
|
Section [General]
|
|
"""""""""""""""""
|
|
|
|
The entire section is optional and it contains three parameters:
|
|
|
|
* **BASENAME** (string): provides a base name for output files.
|
|
Default filenames are :file:`vasp.*`.
|
|
* **DOSMESH** ([float float] integer): if this parameter is given,
|
|
the projected density of states for each projected orbital will be
|
|
evaluated and stored to files :file:`pdos_<n>.dat`, where `n` is the
|
|
orbital index. The energy
|
|
mesh is defined by three numbers: `EMIN` `EMAX` `NPOINTS`. The first two
|
|
can be omitted in which case they are taken to be equal to the projector
|
|
energy window. **Important note**: at the moment this option works
|
|
only if the tetrahedron integration method (`ISMEAR = -4` or `-5`)
|
|
is used in VASP to produce `LOCPROJ`.
|
|
* **EFERMI** (float): provides the Fermi level. This value overrides
|
|
the one extracted from VASP output files.
|
|
|
|
There are no required parameters in this section.
|
|
|
|
Section [Shell]
|
|
"""""""""""""""
|
|
|
|
This section specifies a projector shell. Each `[Shell]` section must be
|
|
labeled by an index, e.g. `[Shell 1]`. These indices can then be referenced
|
|
in a `[Group]` section.
|
|
|
|
In each `[Shell]` section two parameters are required:
|
|
|
|
* **IONS** (list of integer): indices of sites included in the shell.
|
|
The sites can be given either by a list of integers `IONS = 5 6 7 8`
|
|
or by a range `IONS = 5..8`. The site indices must be compatible with
|
|
the POSCAR file.
|
|
* **LSHELL** (integer): :math:`l` quantum number of the desired local states.
|
|
|
|
It is important that a given combination of site indices and local states
|
|
given by `LSHELL` must be present in the LOCPROJ file.
|
|
|
|
There are additional optional parameters that allow one to transform
|
|
the local states:
|
|
|
|
* **TRANSFORM** (matrix): local transformation matrix applied to all states
|
|
in the projector shell. The matrix is defined by a (multiline) block
|
|
of floats, with each line corresponding to a row. The number of columns
|
|
must be equal to :math:`2 l + 1`, with :math:`l` given by `LSHELL`. Only real matrices
|
|
are allowed. This parameter can be useful to select certain subset of
|
|
orbitals or perform a simple global rotation.
|
|
* **TRANSFILE** (string): name of the file containing transformation
|
|
matrices for each site. This option allows for a full-fledged functionality
|
|
when it comes to local state transformations. The format of this file
|
|
is described :ref:`below <transformation_file>`.
|
|
|
|
Section [Group]
|
|
"""""""""""""""
|
|
|
|
Each defined projector shell must be part of a projector group. In the current
|
|
implementation of DFTtools only a single group (labelled by any integer, e.g. `[Group 1]`)
|
|
is supported. This implies that all projector shells
|
|
must be included in this group.
|
|
|
|
Required parameters for any group are the following:
|
|
|
|
* **SHELLS** (list of integers): indices of projector shells included in the group.
|
|
All defined shells must be grouped.
|
|
* **EWINDOW** (float float): the energy window specified by two floats: bottom
|
|
and top. All projectors in the current group are going to be normalized within
|
|
this window. *Note*: This option must be specified inside the `[Shell]` section
|
|
if only one shell is defined and the `[Group]` section is omitted.
|
|
|
|
Optional group parameters:
|
|
|
|
* **NORMALIZE** (True/False): specifies whether projectors in the group are
|
|
to be normalized. The default value is **True**.
|
|
* **NORMION** (True/False): specifies whether projectors are normalized on
|
|
a per-site (per-ion) basis. That is, if `NORMION = True`, the orthogonality
|
|
condition will be enforced on each site separately but the Wannier functions
|
|
on different sites will not be orthogonal. If `NORMION = False`, the Wannier functions
|
|
on different sites included in the group will be orthogonal to each other.
|
|
|
|
|
|
.. _transformation_file:
|
|
|
|
File of transformation matrices
|
|
"""""""""""""""""""""""""""""""
|
|
|
|
.. warning::
|
|
The description below applies only to collinear cases (i.e., without spin-orbit
|
|
coupling). In this case, the matrices are spin-independent.
|
|
|
|
The file specified by option `TRANSFILE` contains transformation matrices
|
|
for each ion. Each line must contain a series of floats whose number is either equal to
|
|
the number of orbitals :math:`N_{orb}` (in this case the transformation matrices
|
|
are assumed to be real) or to :math:`2 N_{orb}` (for the complex transformation matrices).
|
|
The total number of lines :math:`N` must be a multiple of the number of ions :math:`N_{ion}`
|
|
and the ratio :math:`N / N_{ion}`, then, gives the dimension of the transformed
|
|
orbital space. The lines with floats can be separated by any number of empty or
|
|
comment lines (starting from `#`), which are ignored.
|
|
|
|
A very simple example is a transformation matrix that selects the :math:`t_{2g}` manifold.
|
|
For two correlated sites, one can define the file as follows:
|
|
::
|
|
|
|
# Site 1
|
|
1.0 0.0 0.0 0.0 0.0
|
|
0.0 1.0 0.0 0.0 0.0
|
|
0.0 0.0 0.0 1.0 0.0
|
|
|
|
# Site 2
|
|
1.0 0.0 0.0 0.0 0.0
|
|
0.0 1.0 0.0 0.0 0.0
|
|
0.0 0.0 0.0 1.0 0.0
|
|
|