3
0
mirror of https://github.com/triqs/dft_tools synced 2024-12-28 23:25:56 +01:00
Commit Graph

194 Commits

Author SHA1 Message Date
Oleg E. Peil
3176780d37 Added evaluation of local Hamiltonian
Added a method for evaluating the local Hamiltonian corresponding
to a given projected shell.
2016-02-09 13:40:45 +01:00
Oleg E. Peil
bda2e5e2a3 Added copyright disclaimers to PLOVasp sources 2016-02-01 14:06:41 +01:00
Oleg E. Peil
eece11b297 Added self-consistency scripts
At the main SC script 'sc_dmft.py' requires importing a user DMFT
script as a module. Ideally, this should be implemented in a different
way so that the user script imports a function from the self-consistent
script.
2016-02-01 13:44:08 +01:00
Oleg E. Peil
a0645b8275 Fixed the wrong name of the config file 2016-01-22 15:59:12 +01:00
Oleg E. Peil
2e1633c037 Added an example of Ce HF calculation 2015-12-18 17:51:26 +01:00
Oleg E. Peil
e8dff08fcf Added a possibility to read EFERMI from LOCPROJ
Noramlly, the Fermi energy is read from DOSCAR. However, this does
not work in case of a self-consistent calculation in which DOSCAR
is not written between iterations. One of the options is
to modify slightly the output to LOCPROJ and add EFERMI to the
first line.
2015-12-18 17:45:12 +01:00
Oleg E. Peil
3478db8a90 Modified main routine to make it importable
It is now possible to import a function
'generate_and_output_as_text()' from another Python script
to process VASP data.
2015-12-16 16:02:12 +01:00
Oleg E. Peil
fe88b37515 Fixed a bug in determining dimensions in converter
Since 'n_orbitals' can be a 2D array in case of spin-polarized
calculations, one should use 'numpy.max' instead of 'max' to
extract the maximum number of bands.
2015-12-11 10:57:48 +01:00
Oleg E. Peil
41b3b63744 Modified input of eigenvalues and Fermi weights
In the new version of VASP LOCPROJ contains the eigenvalues and
Fermi weights. Also, during a charge self-consistency calculation
the file EIGENVAL is not written at intermediate iterations. It is,
thus, preferential to use LOCPROJ to get the named data.
At the moment, EIGENVAL will still be used if it is complete but
in the future this dependence should be removed completely.
2015-12-11 10:54:51 +01:00
Oleg E. Peil
3e63c0f0f5 Improved output of the density matrix 2015-12-09 11:55:29 +01:00
Oleg E. Peil
b02d13ebd8 Fixed the output of band indices to vasp.pgX
The band indices should be converted to Fortran convention,
i.e. starting from 1, in the output files because the are
used in the density matrix file which is read by a Fortran code.
2015-12-04 19:55:37 +01:00
Oleg E. Peil
85a83db1cb Added writing of 'band_window' to 'dft_misc_input'
In VASP implementation of charge self-consistency we need
band indices to construct the density matrix correction.
2015-12-04 15:29:19 +01:00
Oleg E. Peil
34bc2b6225 Modified LOCPROJ parser to conform to new format
The format of LOCPROJ has been modified again (in VASP 5.4.2
build from Dec 02, 2015).
Now, there is an additional line before each projector block
providing the spin, k-, and band indices, as well as
eigenvalues and Fermi weights.
2015-12-04 12:08:33 +01:00
Oleg E. Peil
1bfacd3883 Fixed the input of f-state projectors from LOCPROJ 2015-12-03 14:19:08 +01:00
Oleg E. Peil
3e19c3d7bb Added storing of Fermi weights to 'dft_misc_input' 2015-12-02 12:23:23 +01:00
Oleg E. Peil
e35c6fd5c0 Fixed some files in examples
Scripts 'run_plovasp.sh' have been replaced by a template in which
the path must be set by the user.
Also, .gitignore has been added to example 'lunio3'.
2015-12-01 13:24:58 +01:00
Oleg E. Peil
22da0dae4a Added example on SrVO3 2015-12-01 13:19:24 +01:00
Oleg E. Peil
921bba0c1a Added a spin factor to density matrix in 'elstruct.py' 2015-12-01 11:18:44 +01:00
Oleg E. Peil
3620784798 Replaced R- and C-TRANSFORM with TRANSFORM option
Also, some tests were modified accordingly.
2015-11-30 20:24:34 +01:00
Oleg E. Peil
f0fae2b10a Fixed tests to pass with new LOCPROJ 2015-11-30 20:18:17 +01:00
Oleg E. Peil
3ccb047329 Fixed example 'simple' and corresponding tests
The calculation of the example was redone to generate LOCPROJ
in a new format (valid starting from VASP 5.4.2).
2015-11-30 19:52:38 +01:00
Oleg E. Peil
1fd2a1af6a Added a parser for the new LOCPROJ (VASP >= 5.4.2) 2015-11-27 15:38:51 +01:00
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
Oleg E. Peil
63de4f68a8 Added input of Fermi weights, cleaned-up the code 2015-11-19 16:32:50 +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
cb745fff9f Commented out debug prints in 'vasp_converter.py' 2015-10-22 20:13:58 +02:00
Oleg E. Peil
9c7e63ebae Reshuffled some files, added .gitignore 2015-10-21 11:54:22 +02:00
Oleg E. Peil
8064c9604d Moved 'vasp_converter.py' to 'converters' 2015-10-13 11:36:43 +02:00
Oleg E. Peil
819fc987f0 Reshuffled files after repository merge
The files from the original vasp-interface repository are reshuffled in
accord with the directory structure of dft_tools. Some of the directories,
such as 'test' (unit tests for the interface), 'examples' (simple examples for
the development purposes) are temporarily placed into 'python/vasp' directory
to avoid confusion with integral tests and examples of dft_tools.
2015-10-13 11:27:55 +02:00
Oleg E. Peil
77a169d242 Fixed small bugs and typos in vasp_converter
VaspConverter is fixed to run and successfully produce some *.h5-file.
Consistency of this file is to be determined later.
2015-10-11 14:03:14 +02:00
Oleg E. Peil
fada2af703 Fixed imports in vasp_converter
Import of 'json' is fixed to conform python distributions without
'simplejson'.
Also, the full path is used for 'converter_tools' for the moment while
'vasp_converter' is not part of 'dft_tools'.
2015-10-11 14:03:14 +02:00
Oleg.Peil
2346b43950 Fixed import of 'json'
It seems that not all distributions of python come with a 'simplejson' module.
Now, if this module is not found the import falls back to module 'json'.
2015-10-11 14:03:14 +02:00
Oleg E. Peil
53de9b3962 Added preliminary implementation of misc and symmetry input
At the moment, symmetries are not supported by the interface.
Instead, some dummy parameters are generated and the symmetry is turned off.
'misc_input' is only partially implemented because it contains
some data which is not required for the correct functioning of DftTools.
2015-10-11 14:03:14 +02:00
Oleg E. Peil
57b0d5735a Replaced 'python' with 'pytriqs' in 'run_build.sh' 2015-10-11 14:03:13 +02:00
Oleg E. Peil
84061edc4b Added a preliminary version of VaspConverter
This preliminary version is untested and might not even run.
Here, almost all relevant input (apart from symmetries and miscellaneous)
is implemented and conventions adpoted in DftTools are accomodated.
2015-10-11 14:03:13 +02:00
Oleg E. Peil
d70dca3dd7 Fixed 'nelect_window()' in ProjectorGroup
Method 'nelect_window()' now correctly takes into account a subset
of bands selected by the energy window.
Also, the number of electrons is now output to a '*.grX' file.
2015-10-11 14:03:13 +02:00
Oleg E. Peil
f89ea4c639 Added output of ion sort corresponding to a shell
The data for a projected shell (output to a '*.pgX' file) contains
now the ion sort corresponding to this shell.

Also, 'check_data_consistency()' was fixed by correcting the
reference to list 'type_of_ion' (which is now copied to ElectronicStructure).
2015-10-11 14:03:13 +02:00
Oleg E. Peil
f2e4c2f866 Added 'type_of_ion' list to ElectronicStructure 2015-10-11 14:03:13 +02:00
Oleg E. Peil
68fbc15891 Fixed test setup for 'test_projgroups.py'
The parameter set of 'ProjectorGroup' constructor was modified.
Now the call in the test case has been fixed accordingly.
2015-10-11 14:03:13 +02:00
Oleg E. Peil
1f57cd1935 Added consistency check for projected shells
Added a check to 'check_data_consistency()' that verifies
that each shell contains only one sort of ions.

Also added a non-functioning test (implementation is commented)
for the function.
It requires a full set of VASP files for an example with multiple atom sorts.
2015-10-11 14:03:13 +02:00
Oleg E. Peil
36c928a4b5 Fixed the previous commit
The implementation of option 'read_all' was missing in the previous commit.
2015-10-11 14:03:13 +02:00
Oleg E. Peil
33ab7ff2a0 Added an option 'read_all' to VaspData.__init__() 2015-10-11 14:03:13 +02:00
Oleg E. Peil
0cec37f3fc Added 'type_of_ion' list to class Poscar
A list 'type_of_ion' mapping ion index to their types is added
to class Poscar. A corresponding test is also added.
2015-10-11 14:03:13 +02:00
Oleg E. Peil
529c7bc9d5 Fixed the determination of parameter 'shell.ndim'
Parameter 'ndim' of class 'ProjectedShell' was calculated
incorrectly, giving the value of 6 for a d-shell.
2015-10-11 14:03:13 +02:00
Oleg E. Peil
7256907c72 Added input of a ctrl-file to the converter
Implemented a basic input of a ctrl-file. First, the JSON-header is
read and parsed, then k-points and their weights are read in.
2015-10-11 14:03:13 +02:00
Oleg Peil
1e01003653 Added 'conv_example.py' to test the converter.
The script is supposed to be part of the test example for
the converter.
2015-10-11 14:03:13 +02:00
Oleg Peil
327f100a64 Fixed the name of function 'generate_plo()'
The function 'generate_ortho_plos()' is renamed to
'generate_plo()', which fixes the partially faulty merge.
2015-10-11 14:03:13 +02:00
Oleg Peil
7b2e2a3b6e Implemented 'read_header_and_data()' and 'read_data()'
'read_data()' is a generator interpreting a file as a sequence of
floats. Lines starting with '#' are ignored.
'read_header_and_data()' reads the header string until a line
"# END ...", initializes a generator 'read_data()', and returns
them.
2015-10-11 14:03:13 +02:00
Oleg Peil
8179b74178 Added the main converter script 'vasp_converter.py'
'vasp_converter.py' is based on the existing 'wien2k_converter.py'.
Methods 'read_header_and_data()' and 'read_data()' for reading input files
are added. The first method returns a JSON-header and a generator 'read_data()'
returning floats from the plain-data part of the file.
2015-10-11 14:03:13 +02:00
Michel Ferrero
dd33621e7c Merge ../bare_plovasp into dev
Conflicts:
	python/converters/vasp/python/main.py
	python/converters/vasp/python/plotools.py
Merged old version of output with the new one
2015-10-11 14:00:35 +02:00
Oleg E. Peil
586b11c93f Added output of projector groups
The output of projected-group files is implemented. The data is stored
into files <basename>.pg<Ng>, where 'Ng' starts from 1.
2015-10-11 13:57:46 +02:00
Oleg E. Peil
2472341cd0 Added output of the header of a PLO-group file
The basic header for PLO-group file (now called '<basename>.pg<Ng>')
is implemented.
Also, fixed the wrong imported function name in 'main.py'.
2015-10-11 13:57:46 +02:00
Oleg E. Peil
207c637be2 Restructured text-output routines
'main()' now calls a function 'output_as_text()' responsible for storing
both a ctrl- and plo-files ('ctrl_output()' and 'plo_output()', respectively).
2015-10-11 13:57:46 +02:00
Oleg E. Peil
99f87cc70f Added output of k-points
The header of the ctrl-file is terminated by a line "#END OF HEADER"
followed by a dump of k-points with weights.
2015-10-11 13:57:46 +02:00
Oleg E. Peil
d794bfa0f5 Added output of a basic header into a ctrl-file
Added function 'ctrl_ouput()' which stores data common for all correlated
shells into a file '<basename>.ctrl'.
At the moment, only a very basic header is output.
The signature of 'plo_output()' is also modified to include an instance
of class 'ElectronicStructre' containing important information on
the lattice structure, Efermi, and k-points.
2015-10-11 13:57:46 +02:00
Oleg E. Peil
4c18c6e09c Added the parser of section [General]
Parsing of two optional parameters (BASENAME and EFERMI) from section [General] from the config-file
is implemented. If this section is not found the parameters are set to their
default values, which is 'vasp' for BASENAME and nothing for EFERMI.
Appropriate test is added to the 'inpconf' test suite.
2015-10-11 13:57:46 +02:00
Oleg E. Peil
4bbafa239e Added documentation on the output file formats
A description of the output file formats is added to the documentation.
In particular, the outline of JSON headers for projector-group (*.plog<Ng>)
and control (*.ctrl) files are given.
2015-10-11 13:57:46 +02:00
Oleg E. Peil
db16a8438d Restructed test directory
The names of the test suites have been prefixed with an underscore
to avoid name conflicts with corresponding modules.
Also an attempt to make a scan of all tests has been made by
creating a 'test_all.py' script that is supposed to discover all
test cases and run them. Unfortunately, this does not work as expected
because many tests use input files assumed to be found in the current
directory, which is not true if the tests are run from a different
(parent) directory.

This can be fixed by either forcing the change of directory (but it
seems that 'unittest' does not have this functionality) or
prepending input file names with the current module directory.
2015-10-11 13:57:46 +02:00
Oleg Peil
bb010d200b Added output of k-points
Subroutine 'kpoints_output()' is added to 'plotools.py' and is invoked
from 'main.py'.
K-points are output in a separate file <basename>.kpoints that is
common to all PLO groups. If present, tetrahedron data is also stored.
2015-10-11 13:55:49 +02:00
Oleg Peil
33f9e75857 Changed 'generate_ortho_plos()' to 'generate_plo()'
Generation and orthogonalization of PLOs should be separated
because some quantities (such as the LDA density matrix) are calculated
using the original raw projectors.
The orthogonalization routine is now called from 'main.py'.
2015-10-11 13:55:48 +02:00
Oleg Peil
b325028efd Fixed the calculation of 'nelect'
In the previous commit the calculation of 'nelect' was implemented
incorrectly. The sum over k-points must also contain k-weights
and a spin factor (2.0 for ns = 1).

The calculation of 'nelect' is now implemented as a separate method
of ProjectorGroup.
2015-10-11 13:55:48 +02:00
Oleg Peil
b78a06d36f Added output of PLO groups
Output of PLO groups into a text file is added to 'plo_output()'.
The file format is provisional and can change in future versions.

Also, an attribute 'nelect' providing the number of electrons in
the selected energy window is added to ProjectorGroup.
2015-10-11 13:55:48 +02:00
Oleg Peil
6ab916d2d0 Added (empty) function 'plo_output()' 2015-10-11 13:55:05 +02:00
Oleg Peil
b6250477f2 Fixed 'generate_ortho_plos()' to produce orthogonalized PLOs 2015-10-11 13:55:05 +02:00
Oleg Peil
d0a75edec3 Added a simplest workflow to 'main.py'
Simplest workflow: read config-file, vasp data, generate PLOs,
and output them to text files.
2015-10-11 13:55:05 +02:00
Oleg Peil
bec28dbefd Added examples directory with one example 'simple'
Apart from their direct purpose as a help to users, examples may serve
as integrity tests. Eventually, one can convert them into a test suite.
2015-10-11 13:55:05 +02:00
Oleg E. Peil
5d8423a30e Added preliminary 'main.py' 2015-10-11 13:55:05 +02:00
Oleg E. Peil
89ab594253 Added test output files forgotten in the previous commit 2015-10-11 13:55:05 +02:00
Oleg E. Peil
4c920b8312 Added some documentation on PLOtools
The documentation has been slightly rewritten and extended to follow
the recent changes. The modifications include:

- ProjectorSet class is now replaced by ProjectorShell
- the workflow has been refined
- the electronic structure part is represented by class ElectronicStructure
2015-10-11 13:55:05 +02:00
Oleg E. Peil
3317371762 Added calculation of density matrices for a shell
A method 'density_matrix()' for evaluating a density matrix of a given shell
has been added to class ProjectorShell. It requires an ElectronicStructure
object as an input an by default produces a site- and spin-diagonal
part of the density matrix using the Fermi-weights obtained directly from VASP.
Ideally, this density matrix should coincide with the one calculated
within VASP itself (inside the LDA+U module).

Corresponding sanity test has been added, which shows only that the
calculation does not crash. Real numerical tests are needed.
2015-10-11 13:55:05 +02:00
Oleg E. Peil
ad6b3ab708 Added class ElectronicStructure
Class ElectronicStructure is intended for the internal representation
of the band structure and raw projector data from VASP.
In addition, its purpose is to perform a simple consistency check
of the input VASP data (as they are read from different files).
2015-10-11 13:55:05 +02:00
Oleg E. Peil
0c4e3ad006 Changed order of indices of 'proj_arr' array
When a ProjectorShell is created it creates a view of the full
projector array with orbital 'ilm' and band 'ib' indices interchanged.
The reason for this is that this corresponds more naturally to the
definition of the projector P_{m\nu} and also allows for multiplications
of projector matrices without additional transposition.

The tests have been modified accordingly.
2015-10-11 13:55:04 +02:00
Oleg E. Peil
a0e9d1a18e Added a test suite for ProjectorGroup class
A preliminary test suite for class 'ProjectorGroup' was added.
Currently, only a simplest test is performed testing that
after the input is processed the resulting projectors selected
within a given energy window are corret.
2015-10-11 13:55:04 +02:00
Oleg E. Peil
9bbd71afb9 Fixed a bug in 'inpconf.py'
The problem was that when one shell was specified without an explicit
group the created automatic group was lacking the default values for
parameters 'normalize' and 'normion'. The current design, however,
assumes that they must always be set.
2015-10-11 13:55:04 +02:00
Oleg E. Peil
5c3b3d0b8d Added several tests
Tests for 'select_bands()' and class 'ProjectorShell' have been added.
The function and class methods have been fixed accordingly to pass
the tests.
2015-10-11 13:55:04 +02:00
Oleg E. Peil
90c93c4693 Fixed a bug in 'inpconf.py', added a corresponding test 2015-10-11 13:55:04 +02:00
Oleg E. Peil
b05d176f39 Fixed 'vaspio.py' to pass the tests' 2015-10-11 13:55:04 +02:00
Oleg E. Peil
82cc06d41e Added a test suite for module 'vaspio' 2015-10-11 13:55:04 +02:00
Oleg E. Peil
36aadf6ff4 Removed redundant index reassignments in 'c_plocar_io.c' 2015-10-11 13:55:04 +02:00
Oleg E. Peil
46474c0b3e Modified 'c_plocar_io.c' to conform Numpy 1.7 API 2015-10-11 13:55:04 +02:00
Oleg E. Peil
7e894d98f6 Added a small test suite for 'c_plocar_io' module 2015-10-11 13:55:04 +02:00
Oleg E. Peil
19a30034f5 * Replaced direct compilation in Makefile by 'setup.py' from 'distutils'
* NO_DEPRECATED_API flag was added and now 'c_plocar_io.c' does not compile
2015-10-11 13:55:04 +02:00
Oleg E. Peil
f0ae1c9927 Added untested 'ProjectorGroup' class (including orthogonalization routine) 2015-10-11 13:55:04 +02:00
Oleg E. Peil
ba015d4b62 Added untested version of 'ProjectorShell' class 2015-10-11 13:55:04 +02:00
Oleg E. Peil
74ef3ca93e Added defulats to optional group parameters 2015-10-11 13:55:04 +02:00
Oleg E. Peil
9d4fb22572 Rearranged test cases for 'inpconf.py'.
A single-file test suite for 'inpconf.py' is split into several files,
each containing a separate TestCase class. In addition, all test cases
are derived from class ArrayTestCase (in turn derived from TestCase)
which contains a numpy-array equality method.
2015-10-11 13:55:04 +02:00
Oleg E. Peil
a58ec59c9c Added Scenario 5 to 'test_parse_input()' and fixed 'inpconf.py' to pass it 2015-10-11 13:55:04 +02:00
Oleg E. Peil
74a1ad280d Added Scenario 4 to 'test_parse_input()' (test10.cfg) 2015-10-11 13:55:04 +02:00
Oleg E. Peil
bcc20a0399 * Added Scenario 3 to 'test_parse_input()' (test9.cfg)
* Fixed 'parse_input()' to pass the test
2015-10-11 13:55:04 +02:00
Oleg E. Peil
8928fa3118 * Added Scenario 2 to 'test_input()' (test8.cfg)
* Removed group parameter 'shells' from a dict of required parameters
   for a single [Shell] section
2015-10-11 13:55:04 +02:00
Oleg E. Peil
8b60a91e49 Completed 'test_parse_groups()' 2015-10-11 13:55:04 +02:00
Oleg E. Peil
3516ebd285 * Replaced 'test_groups_shells_consistency()' with 'test_parse_input()'
* Fixed Scenario 1 of 'test_parse_input()'
  * Fixed Scenario 1 of 'test_parse_groups()'
2015-10-11 13:55:04 +02:00
Oleg E. Peil
d2fe6d50e8 * Fixed tests for the modified version of 'parse_shells()'
* Removed redundant prints in 'parse_shells()'
2015-10-11 13:55:04 +02:00
Oleg Peil
76d0b4a6bb Small syntax fix in inpconf.py 2015-10-11 13:55:04 +02:00
Oleg Peil
0816d45d59 * Added (empty) function 'parse_general()' * Completed 'parse_input()' 2015-10-11 13:55:03 +02:00
Oleg Peil
9ab6116b28 * Completed group parser
* Added a consistency check for groups and shells
 * Added scenario descriptions to the test suite
2015-10-11 13:55:03 +02:00
Oleg Peil
0d1ef0ac97 Small fixes in config.rst 2015-10-11 13:55:03 +02:00
Oleg Peil
f393168d16 * Added a test 'parse_groups()'
* Added to docs for config-file a description of all features that
    are implemented or under active development
2015-10-11 13:55:03 +02:00
Oleg Peil
bd6198d264 * Restructured the directory structure * Added some half-day long development including tests 2015-10-11 13:55:03 +02:00