Now 'pytriqs' is invoked with an absolute path to the current
TRIQS installation. This ensures that the scripts will call
a compatible version of 'pytriqs'.
This test suite is based on V d-projectors in SrVO3.
The data have been recalculated to obtain the correct format
of LOCPROJ.
Also, some small but important changes are introduced to
the LOCPROJ parser and class ElectronicStructure.
Specifically, eigenvalues, Fermi-weights, and Fermi level are
now read from LOCPROJ instead of EIGENVAL and DOSCAR.
Besides, LOCPROJ now provides the value of NCDIJ instead of
NSPIN.
Basically, with these changes EIGENVAL and DOSCAR are no longer
needed. Although corresponding parseres will remain in 'vaspio.py'
they will not be used for standard operations.
To make it work one has to create a symlink in 'dft/converters/plovasp'
pointing to the built library 'atm.so'.
Also, one has to use 'from <modulename> import <function>' inside
the test itself to avoid problems with module name substitutions.
First of all, 'c++/plovasp/atm' was erroneously removed after
the last merge with the upstream branch.
Now, the whole subdirectory 'c++' is added.
Also, C++ flags are properly imported from the TRIQS configuration.
Function 'calc_density_correction()' has now two options.
VASP-type calculations include not only a density-matrix correction
(which is defined differently compared to Wien2K) but also a correction
to the band energy.
The main change is that `test_all.py` is now renamed to `run_suite.py`,
with the latter being able to run a selected test suite if a corresponding
command line argument (test suite directory name) is provided.
CMakeLists are improved to copy each test suite separately to avoid
copying unnecessary files. Also each test suite corresponds now to
a separate CMake test.
All imports inside the test cases refer now to paths relative
to TRIQS python library path. For example,
`import vaspio`
is replaced with
`import applications.dft.converters.plovasp.vasio`
In this way all tests can be executed wtih `build_pytriqs` provided
that the package is installed (the same practice as with other
'dft_tools' tests).
Also, the underscore can now be removed from subdirectory names
because there is no more conflict with module names.
In order to wrap the ATM routines by Python using TRIQS wrapping
tools it is necessary to modify the interface to 'dos_tetra3d'.
The major changes involved replacing direct NumPy arrays with
TRIQS arrays which can be converted to Python arrays using library
tools.
Also, some small changes were necessary to port the functions
from C99 complex numbers to C++ style.
CMakeList is added to automatize building of the ATM library.
In order to use c++2py tools the C-code must be rewritten to C++.
In particular, instead of direct creation of Numpy arrays STL
containers must be used.
The local Hamiltonian is now output after the density matrix.
This is mainly needed for debug purposes. At a later stage the
output should be better formatted and controlled.
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.
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.
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.
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.