3
0
mirror of https://github.com/triqs/dft_tools synced 2024-11-18 12:03:50 +01:00
Commit Graph

584 Commits

Author SHA1 Message Date
Oleg E. Peil
46b3dd0667 Renamed module 'c/vasp' to 'c/plovasp' 2015-11-27 10:52:07 +01:00
Oleg E. Peil
0d65f38a61 Moved PLOVasp files to converters/plovasp 2015-11-27 10:48:15 +01:00
aichhorn
d9da33b6fe changed version to 1.4 2015-11-25 11:53:44 +01:00
Oleg E. Peil
7db721c8d1 Optimized slightly orthogonalization routine
At one step of the orthogonaliztion procedure two matrix multiplications
have been replaced with one matrix multiplication and a element-wise
multiplication of a vector and a matrix.
2015-11-21 14:23:30 +01:00
Oleg E. Peil
b2b25a9fd0 Fixed tests that because of the new default NORMION value 2015-11-20 18:59:46 +01:00
Oleg E. Peil
183c115870 Added docstrings to modules 2015-11-20 18:54:51 +01:00
Oleg E. Peil
0d53712761 Changed the default behavior of NORMION option
Now, NORMION is True by default, in accordance with the documentation.
2015-11-20 18:10:14 +01:00
Oleg E. Peil
9258054057 Added an example on LuNiO3
The example allows one to get an idea of how to define projectors
in case of a complex system with several atoms per unit cell.
2015-11-20 18:08:14 +01:00
Oleg E. Peil
770e9f5afc Added transformation of projectors
Now the matrices read from the input files are actually applied
to projectors.
Also, improved the debug output in 'plotools.py'.
2015-11-20 16:58:36 +01:00
Oleg E. Peil
ccc07537ce Updated documentation
Added a brief description of the purpose of PLOVasp to the User's
Guide.
Fixed autodocumenation by correcting module imports.
2015-11-20 12:24:32 +01:00
Oleg E. Peil
bdb94c2402 Modified documentation following the recent changes
Some options in the input file have been renamed. The description
of the input file in the documentation has been modified accordingly.
2015-11-19 17:45:31 +01:00
Oleg E. Peil
63de4f68a8 Added input of Fermi weights, cleaned-up the code 2015-11-19 16:32:50 +01:00
Oleg E. Peil
f544825684 Added output of Fermi weights to output files
Fermi weights are output next to eigenvalues. They will be needed
for the calculation of the KS density matrix in the charge
self-consistency implementation.
2015-11-19 16:06:25 +01:00
Oleg E. Peil
b85b62d693 Removed a redundant dependency of ProjectorGroup on 'ferw' 2015-11-19 16:01:05 +01:00
Oleg E. Peil
5585e81f7d Added two tests for 'get_block_matrix_map()'
Two tests have been added for testing the basic functionality with
NORMION being either False or True.
2015-11-19 15:56:30 +01:00
Oleg E. Peil
81825fcdf2 Fixed some errors introduced in the previous commit 2015-11-19 14:56:34 +01:00
Oleg E. Peil
72d030c5c5 Restructured 'orthogonalization()'
The part responsible for generating a mapping between the shell/ions
and block projector matrices has now been relocated to a separate
method 'get_block_matrix_map()'. This simplifies the source code
and makes testing easier.
2015-11-19 14:48:45 +01:00
Oleg E. Peil
c426946803 Added implementation for NORMION = True
The mapping for NORMION = True has been implemented.
Also, the orthogonalization loop has been fixed. First of all,
orthogonalization should be done separately for each block map 'bl_map'.
Second, one has to take into account that the orbital dimensions of the
block matrix can vary from block to block. To make that the overlap
matrix is non-singular one, thus, has to pass to
'orthogonalize_projector_matrix()' only a view of a submatrix of 'pmat'
corresponding to the current block.

Two tests to check the simplest cases have been added.
2015-11-19 12:11:55 +01:00
Oleg E. Peil
b3e1dd915a Refactored mapping onto block matrix in 'orthogonalize()'
The implementation of the mapping of a set of projectors (belonging
to different shells and ions) onto a block matrix in the
orthogonalization routine has been generalized. Now, an implementation
of the choice between the full orthogoanlization and per-site one
is straightforward: it is just a matter of defining a proper mapping.
The mapping scheme itself is described in the doc-string of method
'ProjectorGroup.orthogonalize()'
2015-11-19 11:47:59 +01:00
Oleg E. Peil
79f4c33458 Removed files accidentally added in the previous commit 2015-11-18 19:05:48 +01:00
Oleg E. Peil
61cb087561 Added a test to '_proj_group' test suite
Added a test comparing two-site density and overlap matrices.
2015-11-18 19:02:21 +01:00
Oleg E. Peil
4af8406b4c Fixed tests for ProjectorGroup
The tests have been modified to conform to the recent input and code
changes.
2015-11-18 15:46:58 +01:00
Oleg E. Peil
c1b3000c00 Fixed a bug in the orthogonalization routine
There was a very nasty bug in the preparation of the block matrix
'p_mat'. The point is that this matrix is created once for all k-points
with the band dimension being the maximum possible. However, only
a part of the matrix is used at every k-point but the orthogonalization
is done for the whole matrix. The problem was that if the number of
bands for a given k-point was smaller than that for the next k-point
them for the next k-point some part of 'p_mat' still contained data from
the previous step, which messed up the orthonormalization. Now, 'p_mat'
is set to zero at each step of the loop.
Also, property 'nion' was added to ProjectorShell since it is used
very often.
2015-11-18 15:17:51 +01:00
Oleg E. Peil
f994b82704 Rearranged and fixed some tests
First of all, suite '_plotools' is now split into three separate suites
'_plotools', '_proj_shell', '_proj_group', following the changes made
into the structure of the code.
Second, the two tests in 'test_projshells.py' have been fixed to conform
to the recent modifications in the code and input files.
2015-11-18 12:38:04 +01:00
Oleg E. Peil
401d416d4d Fixed 'plotools.py' and restructured 'proj_group.py'
Added missing import of ProjectorGroup and ProjectorShell to
'plotools.py'.
Moved separate routines 'orthogonalize_projector_matrix()'
and 'select_bands()' into class ProjectorGroup because these
routines are anyway not used elsewhere outside this class.
2015-11-13 19:09:25 +01:00
Oleg E. Peil
61395b12fa Restructured the source files
The classes ProjectorShell and ProjectorGroup are now defined in
different source files. This makes 'plotools.py' only contain
routines that control the data flows, including consistency checks
and output.
2015-11-13 18:15:21 +01:00
Oleg E. Peil
b285f37eca Added some new tests
New tests for the recently implemented parsers (for DOSMESH, EWINDOW,
and TRANSFILE) have been added.
2015-11-13 14:38:20 +01:00
Oleg E. Peil
8a718ea906 Fixed 'inpconf' tests after the recent changes
Some of the options of the config-file has been modified.
The tests have been adapted accordingly.
2015-11-13 13:54:26 +01:00
Oleg E. Peil
a61e0b2526 Fixed a problem with missing nc_flag property
The ProjectorShell class must inheret 'nc_flag' from somewhere.
This is now done by passing it to the class constructor in
'generate_plo()'.
2015-11-11 20:30:49 +01:00
Oleg E. Peil
453c8531c9 Replaced options EMIN, EMAX with EWINDOW
It did not make much sense to keep two independent options to
define an energy range. Now the energy window is directly defined
by two floats.
2015-11-11 18:58:38 +01:00
Oleg E. Peil
5ec3e881cd Added transformation matrices to ProjectorShell
Matrices parsed by the config-parser are interpreted as transformation
matrices for each ion in the shell. If only one matrix is defined
(by TRANSFORM) it is copied for every ion.
Whether a matrix is real or complex is derived from its dimensions
consistently with other parameters of the shell (such as 'nm = 2*l + 1').
Transformation matrices are stored as complex in any case.
2015-11-11 12:43:51 +01:00
Oleg E. Peil
cefaf9dda4 Added TRANSFILE option to the config-parser
TRANSFILE option provides a filename containing transformation
matrices for all ions of a projected shell.
The parser simply reads the numbers into a 2d-array which is left
for interpretation at a later stage.
2015-11-11 11:36:09 +01:00
Oleg E. Peil
a16bafefb6 Added documentation on option TRANSFILE
A description of the option 'TRANSFILE' is added to 'config.rst'.
Also, the description of options 'RTRANSFORM' and 'CTRANSFORM' is
modified. They are now combined into a single option 'TRANSFORM'.
2015-11-11 11:05:26 +01:00
Oleg E. Peil
7e13c1cb5b Fixed inequivalent shell determination
It was incorrect to ascribe VASP atomic sort to corr_shell['sort'],
the latter having a different meaning. According to the terminology of
Wien2k a sort determines an equivalence class of atoms.
Since the implementation at the moment does not support symmetries
the atom index is now used as a 'sort' index to make sure that all shells
remain inequivalent.
2015-11-10 19:16:41 +01:00
Oleg E. Peil
0eb574b5c8 Added DOSMESH option to section [General]
If option DOSMESH is specified a projected DOS for each shell
will be output. Energy mesh parameters are given in DOSMESH as

DOSMESH = [EMIN  EMAX]  N_POINTS

The parameters in the brackets [] are optional. If only the number
of points is specified the energy range is taken to be the same
as the projection energy window.
2015-11-10 16:40:46 +01:00
Oleg E. Peil
bf34d968cc Added orbital labels to 'proj_params'
When PROJCAR is read it assigns the orbitals by their corresponding
labels. These labels are now added to the dictionary 'proj_params'.
Although they are not used currently they can be handy when it comes
to identifying the character of the orbitals.
Also, the order of orbital labels for p- and d-orbitals was changed
to conform to the convention of the old PROCAR file.
2015-11-10 15:32:15 +01:00
Oleg E. Peil
63eb4c2089 Fixed a bug in 'density_of_states()'
Fixed the wrong index order in 'w_k' inside the loop evaluating
DOS.
2015-11-10 14:09:40 +01:00
Oleg E. Peil
d3dd546cee Fixed a bug in 'shell.density_matrix()' and added some output
The first two indices in 'proj_win[...]' were incorrect in
the density matrix routine.
Added output on the processed shells.
2015-11-10 12:24:14 +01:00
Oleg E. Peil
fa420924af Fixed a bug in 'debug_density_matrix()'
The on-site blocks of the large (for all orbitals) desnity matrix
were incorrectly copied for the output.
2015-11-10 12:07:13 +01:00
Manuel Zingl
8cd2a73ae2 [transp] Update doc. 2015-11-09 10:01:37 +01:00
Priyanka Seth
117fff4289 First commit of v1.4 2015-11-02 11:43:53 +01:00
Olivier Parcollet
3ada2b6e47 Version to 1.3 2015-11-02 11:43:53 +01:00
Priyanka Seth
f93fd828c0 Added a wrapper function set_Sigma for more standard API 2015-11-02 11:43:53 +01:00
Oleg E. Peil
cb745fff9f Commented out debug prints in 'vasp_converter.py' 2015-10-22 20:13:58 +02:00
Oleg E. Peil
2b71180e8e Added calculation of DOS to plotools.py
Added a function that allows one to get the non-interacting projected DOS for
newly generated projectors. The DOS is calculated with analytical tetrahedron
integration added previously.
At the moment, the DOS is generated and output for debugging purposes
after the projectors are generated. Eventually, there should be an
option in the input config file requesting the output of DOS for a given
energy mesh.
2015-10-22 16:15:49 +02:00
Oleg E. Peil
7957f4b036 Fixed C-modules to make them importable 2015-10-22 12:30:24 +02:00
Oleg E. Peil
236d2db3a6 Fixed 'dos_atm' to make it compatible with new Numpy API
The access to Numpy arrays has been modified to conform the new Numpy
API standard. Also, some unsued variable have been removed/commented
out.
2015-10-21 13:42:40 +02:00
Oleg E. Peil
30c1274c41 Added C-implementation of the analytical tetrahedron method 2015-10-21 12:07:48 +02:00
Oleg E. Peil
9c7e63ebae Reshuffled some files, added .gitignore 2015-10-21 11:54:22 +02:00
Oleg E. Peil
99713edbc4 Fixed band selection indices for projectors
There was an inconsistency in the convention on the position of the
subarray corresponding to projectors within the selected window.
In some cases the subarray was defined from 0 to ib_max, in other cases
it was from 'ib1 - ib_min' to 'ib2 - ib_min'.
Now the global convention is that the projectors for a given window
are stored in a slice '0:ib_max', where 'ib_max = ib2 - ib1 + 1'.
2015-10-20 17:37:17 +02:00