develop
branchYYYY-MM-DD
Here we collect the list of added, changed, deprecated, removed and fixed features in preparation for the next release.
write_npy
(write files in npy format)gflle_to_npy
(write gflle file to npy instead of to gflle file)decouple_spin_cheby
(decouple spin matrices in Chebychev solver neglecting SOC and for collinear calculations only)force_BZ_symm
(force the use of BZ symmetries for k-integration even with SOC)calc_onsite_only
(calculate not the full Green function for the density but take the onsite part alone)set_gmat_to_zero
(set GMAT=0 in evaluation of density)use_gmat_unity
(set the structural GF to the unity matrix for test purposes)write_double_precision
(write out kkrflex files in double precision)use_cheby_quadprec
(use quadruple precision in Chebychev solver for irregular solution)soc_no_spinflip
(set spin-flip components of the SOC Hamiltonian to zero)use_rllsll
(switch to previous approach to compute wavefunctions in Chebyshev solver)angles_cutoff
parameter (threshold for the magnitude of the spin moment below which the angles stop being updated in linear mixing)npan_logfac
from config.cfg
input file of KKRimp (default was hard-coded value of 2, now changed to better default value)read_double_precision
test option for KKRimp (see corresponding writeout option of KKRhost)calc_onsite_only
test option for KKRimpdecouple_spins_cheby
-> decouple_spin_cheby
(could lead to mis-reading with INS
keyword)mod_etotb1
-> mod_etotb1_kkrimp
) to facilitate simultaneous compilation of KKRhost and KKRimpNPOI
input parameter (default is old value of 125)NVAC
vacuum positionsSome improvements and bugfixes to use with AiiDA-KKR plugin.
EFSET
option for voronoi: read in whished value of Fermi level from inputcard (core state energies of starting potential is shifted accordingly)<AFAC_RAD>
input for voronoi: read in a factor of radial mesh (r(i)=b(exp(a(i-1))-1)) where b is determined from a and rmt. Default value (a=0.025) is obtained with setting AFAC_RAD to a negative number. If a is increased (decreased) the start of the radial mesh is shifted to a lower (higher) radius.POT_NS_CUTOFF
option for KKRhost and KKRimp (see issue #124)TIMING_DETAIL
, ENABLE_DEBUG_SYMBOLS
, OPTFLAGS_xHOST
. OPTFLAGS_AMD
, OPTFLAGS_AVX512
, ENABLE_OMP_EVERYWHERE
and ENABLE_OPTRPT
)ENABLE_PATCH_INTEL
compile option (needs mpiifort
, MPI+OpenMP parallelization and OPTFLAGS_AMD
to be active)NSIMPLEMIXFIRST
input to do some simplemixing steps before Broyden startsset_kmesh_large
run option to force the largest k-mesh on all energy pointsPOT_NS_CUTOFF
)set_cheby_nosoc
to decouple_spins_cheby
(now set_cheby_nosoc
again gives the expected behavior of setting SOCSCALE
to 0, see issue #120)output.000.txt
mixbroydenspinangle
in KKRimp that was unused and a copy of mixbroydenspin
VCONST
and IVSHIFT
are in inputfiles
in the name to avoid clash with FILES
keyword in inputcardwrite_all_ranks
test flag)IMPURITY
option of voronoi code, not working properly and thus commented outRemoved a lot of code duplicates among different codes.
Improved memory consumption for XCPL calculation and small bugfixes.
Start of large KKR repository holding voronoi, KKRhost, KKRimp, KKRsusc, and PKKprime with major refactoring of code structure.
install.py
script now deals with KKRhost, KKRimp, PKKprime, voronoi, and rhoqgitlab-ci.yml
and tests/gitlab-ci/*.yml
files)source
, docs
, utils
, tests
, etc.runoption= T/F
; backwards compatibility is mostly ensured)<ZATOM>
as opposed to LMAX
) are now allowed to be case-insensitive (in both, inputcard
and source code).source/common/ioinput.f90
for more simplicity, readability and flexibilitySome bugfixed and som new funcitonalities.
LLYsimple
optioncheb2oldgrid
Major code refactoring getting rid of the inc.p
files which eliminates the need to recompile the code for different system sizes.
README
, CHANGELOG
, CONTRIBUTING
files and better documentationnoserial
to omit writing serial number to kkrflex_*
files (for backwards compatibility)NOSOC
test option such that now is explicitly does a spin-loop with decoupled (i.e. a factor 2 smaller) matrices. The old behavior can be triggered by setting the <SOCSCL>
values to 0.inc.p
dependecy for array dimensions*.f
and *.F
files) moved to old_src subdirectoryMajor update of Fermi surface and scattering code.
Include Godfrin slab inversion, rhoq-writeout and more digits in alat writeout.
rhoqtest
option)godfrin
branch for sparse-matrix inversion in 2D modemakefile
for hazelhen
cluster in Stuttgartalat
writeout of potential filedos.atom
filesDEN
in wrldos
routine correctedrhovalnew
for den_out
arrayMajor changes merging branches qdos_parallel
, and develop_auto_tests
with some code cleanup.
RLL-SLL
option which speeds up computation of wavefunctionsWRTGREEN
and GREENIMP
run options NCLS=1
bug in WRTGREEN
optionCPP_HYBRID
preprocessor flagFirst working (beta) version of the rhoq module (KKR-QPI) functionality.
Needs writeout of files from host code (use rhoqtest
test option).
Some corrections, in particular change of sign in DMI vector calculation (with SOC).
FERMIOUT
)md5
or md5sum
commands to generate MD% checksum for potential and shapefun filesewald2d
). Needed since 2D sum seems to be buggy.LMAX
is smaller than LMAX
of shapefun
fileSome bugfixes and full Jij-tensor calculation (using new solver).
XCPL
option for full Jij tensor (newsolver with SOC)potential
and shapefun
filesMPIatom
or MPIenerg
parallelization scheme should be usedoptc
and testc
, now in derived data typeNPOL=0
or Jijenerg
test optiongreen
file of XCPL
correctednonco_angles
fixedCorrected a bug in the convolution of the starting potentials (concerning the convolution of the 2Z/r term).
Added the possibility of CPA preparation (NATYP>NAEZ).
Then, the
Added input parameter
Moved all inputcard reads to readinput12 and readimpatoms12. Other small points improved in the standard output.
The starting potentials are now convoluted fully with shapes (also the l>0 components). Gives improved results in some cases. Does not apply to the case of interpolated potentials from previous KKR runs.
The starting potentials (l=0 component) are now convoluted with shapes. Changes on this were done mainly in Subr. JELLSTART. Does not apply to the case of interpolated potentials from previous KKR runs.
Major improvement to MPI parallelization.
bzirr3d
can now use up to 500x500x100 kpointsNew version tag, now everything is faster because wavefunctions are not always recalculated and hybrid parallelisation (explicit OpenMP parallelism in rllsll) is implemented.
Initialized rhoq module and started development of KKR-QPI feature.
Version which prints build information and has minor improvements
Improvement to MPI parallelization and new version of Lloyd.
output.myrank.txt
, unit 1337)codeLLY_10_08_2015
)First version of KKRimp that is tracked with git. Started from kkrimp_source_2014_10_01.
Added a print-out of the nearest-neighbor distance, dist(NN), per site and the ratio Rout/dist(NN). Written out in file radii.dat.
Attention, in case of shifted atoms, dist(NN) refers to the unshifted positions. In order to find it for the shifted positions, re-run with the parameter NBSHIFT=0 and also declaring "0" in the proper position under the IMPINFO inplying there are no shifted positions. This will make the program treat the shifted positions as if they were unshifted. The problem arises because the dist(NN) is calculated in the clsgen_voronoi and clsgenimp routines that use the unshifted positions to calculate the voronoi cells, and the shift is introduced only later for the shape calculation. The Rout on the other hand is defined from the shifted center.
First version with MPI parallelization and Long's implementation of Lloyd's formula
Change in subr. suggestpts.f fixing a problem that occured if all panels had NMIN points. Then (NPAN-1)NMIN points were suggested, which was creating a problem in subr. mesh0. Now at least (NPAN-1)NMIN+1 points are suggested fixing the problem. Added a write-out in subr. mesh0.
Added in subr. ritesone.f the option to write out in the potential file a number of radial points larger than 999 (was formatted to i3, now format i4 is used for NR>999).
Got rid of unformatted files for data transfer between 1a, 1b, 1c parts of the code.
fort.37
to tmat.qdos
for qdos optionFirst version with a single executable.
Started version control with git based on KKR code JMcode_2015_03_10
This version is the JM code containing Long's addition of David's routine for FP+SOC
and Philipp's addition of qdos with SOC. All changes mentioned below are included.
Fixed a bug in rhovalnew.f that was causing erroneous results when calculating qdos.
Again: Fixed a bug in rinput13.f90 that did not allow the runopt XCPL to work properly. (Was not working with NPOL=0)
Fixed a bug in rinput13.f90 that did not allow the runopt XCPL to work properly.
Fixed a bug with KAOEZ by setting NATYP --> NAEZ in readinput (for old-type input of surf. calculations).
Introduced running option (RUNOPT) called "findsize" or "FINDSIZE". When this
is used, the weights of the atoms are automatically calculated from their
touching muffin-tin radii rmt (weight=rmt**2), where rmt is defined as the
half-distance of the atom to the nearest neighbour. Tested fot graphene on Co.
Works also for impurity (not tested yet).
Option "findsize" overrides all other weight definitions, e.g.
Introduced keywords
Introduced keywords for reading in tolerance from inputcard:
Initial version of git tracking.
--
The output of the atom resolved torque for bulk systems is now implemented (but not tested though).
Fixed a bug that would not allow using the REFPOT information for the left/right region in 2D if ATOMINFO was used (the routine clsgen_tb was finding its own rmtref).
Changed the calculation of rmtrefat in clsgen_tb to round up to 2 digits after the decimal point.
Implemented the atom resolved torque (set LTORQATOM=1 in the input file). The output for bulk systems is not yet implemented though.
inc.cls not needed any more. Parameters NCLSD, NACLSD transfered to inc.p, with default NACLSD = NAEZD + NEMBD Cluster info found automatically.
readinput changed to comply with new inputcard keywords of JM code (concerning the left/right basis in 2D mode).
NROOTMAX
can be set in the inputcard. If NROOTMAX= 0
assumes the maximal possible value.IQAT(NAEZD,NATYPD)
is changed to IQAT(NATYPD)
because only the IQAT(1,*)
was
ever used.
Array NAT(NATYPD)
removed (was=1 always)
Changes in startb1.f to incorporate array fpradius.
ICC and IGREENFUN are automatically set to 1 if OPT('KKRFLEX ')
is used.
Fixed a bug that was giving FPRADIUS not scaled with latt.parameter.
Further corrections for running with lower lmax than given in the host GF. Changes mainly in dysonviratom.f90 (again) and in rhooutnew. Now the lmax-per-atom (lmaxatom) is given to rhooutnew (before it was only lmaxd) and some according changes were made in the routine. Works when all atoms have the same lmax (lower-or-equal than the host), but crashes in rhooutnew when lmax is different per atom. However, different-lmax-per-atom runs in case of no-spin-orbit (old radial solver).
Corrected a bug in dysonviratom.f90 that was causing problems when lmax of impurity was smaller than lmax of host and spin-orbit of host was on.
Small change in cheb2oldgridc.f90 for improved numerical accuracy.
Change in rllsll.f90 so that the subr. inverse defined within this file is commented out, because the subr. inverse of the module rllslltools.f90 is used when inverse is called from rllsll.
Change of record length definition (recl) in direct-access files. Defined parameter wlength=1 (or 4 depending on compiler) in nrtype.f90 and included this in all places where a direct-access file is opened. The changed files are: gdyson.f90, utrafo.f90, wavefunctodisc.f90, energyloop.F90, preconditioning.F90
Corrected a bug arising from DSORT when sorting the polyhedron faces at the end of VORONOI12 that resulted in giving slightly different shape function mesh for symmetry-equivalent cells. Introduced new routine DSORT_COMP (in file dsort.f) that sorts arrays according to increasing value of 1st component , then 2nd, then 3rd etc.
Philipp's OMP parallelization is included. Lloyd's formula is included for non-relativistic non-cpa calculations.
Info on clusters and RMT of embedded region is now calculated and written out. File atominfo.txt augmented with this information. With this, the reference-system atom type in the embedded region is automatically found.
Proposed full-potential radius is written out in atominfo.txt
(under keyword "
Corrected some bugs.
If the potential filename given in inputcard (under the FILES keyword, position I13) is not found, then the program switches automatically to database starting potentials (should be like this since 2 Oct 2013 but was not working). Fixed by Benedikt Schweflinghaus in routine maindriver12.
Keyword FILES not needed any more. Then database starting potential is assumed. Change was done in routine rinput12.
Added a header at the beginning of each shape-function in the shape file. E.g. 4 135 NPAN,MESHN; Shape number 1 instead of just 4 135
Added parameter
Also, a file "atominfo.dat" is created containing the ATOMINFO information for the KKR code.
Most parameters are now default. Only the following are needed: ALATBASIS,BRAVAIS,NAEZ,RBASIS,RCLUSTZ
If potential filename is given in inputcard but not found in run-directory then program does not stop but switches to jellium potentials automatically.
rinput99 is changed to rinput13. - everything useless was thrown out - for most variables, default values are used (given in rinput13 routine) - file inputcard_generated is created contains most read-in values
ioinput now can read in 5000 lines x 200 columns and symbols "<" and ">" in addition to capitals, numerals and "-".
Keyword LAMBDA_XC (default=1.) is introduced to mix the magnetic part of the xc potential. LAMBDA_XC=0 corresponds to non-magn. calculation, LAMBDA_XC=1 to magn. calculation, and 0<LAMBDA_XC<1 to suppression of moments. Result of xc-energy difference writter out as EXCDIFF.
Added option to choose the muffin-tin radii of the atoms.
Place a keyword "
For impurity atom weights: Here, in the place reserved for the weight place the desired MT-radius in the same units as in the normal atoms.
Routine clsgen2000 was polished, now in file clsgen_voronoi.f Calling of clsgen list changed (also in maindriver12). In maindriver12: Dimension of RMTCL fixed to NSHAPED
New routines clsgen_tb, clustcomp_tb introduced. These distinguish the clusters also based on the MT-radius of the reference potential. For Voronoi this is irrelevant, but it gives useful info for setting up the TB calculation. For this new (optional) variables are introduced in inputcard: RMTREF, LEFTMTREF, RIGHMTREF (the last two for 2D-systems). Result on clusters with clsgen_tb written in standard output.
Bug fixed in maindriver12.f where in case of 2D the TLEFT and TRIGHT basis were not rationalized creating a problem with clusters.
Added keyword "CARTESIMP= " (T or F) in scalevecimp (see inputcard_example)
Added keyword "TOLIMP= ..." in clsgenimp12 (see inputcard_example)
Two bugs fixed in writing out file "radii.dat". No new version issued since the bugs did not affect shape-function or potential calculation.
A subroutine "dividepanels" was added that divides large panels into smaller ones keeping the exact same radial points. The purpose is to reduce the panel size for tests with the new integral solver. The size of the new panels is determined by "NSMALL" which one can place as a keyword in the inputcard: e.g., NSMALL=10 makes panels of 10-points each. If the original panels have left-over points after division, these are placed in the last of the new panels.
Also: Parameters NMIN and NRAD (minimum number of points per panel and muffintinization points) can now be read in from the inputcard. If they are not, then default values are used.
Furhter simplifications:
Now the code recognises the necessary number of radial points in the shape-region before calculating the shapes and pre-sets the value NMESH accordingly. This is done by finding the critical points once before entering the subroutine "shape". A parameter is used for this, "DENPT" (set as a DATA statement in maindriver12) which declares the wished density of radial points in the shape-function region. The panels are then assumed to have this density of points, unless they are too small, when they have NMIN points.
Also the code suggests a full-potential radius per atom, controlled by the DATA-statement parameter STARTFP (again in maindriver12). This is the ratio of the starting radius for full-potential to the muffin-tin radius. From this, the parameter IRNS is calculated.
The number of radial points in the muffin-tin region is also set as a DATA-statement (NMT).
Other changes: INS=1 and KSHAPE=0 means calculation of geometrical information, shifting the centers, finding the panels etc, but avoiding the actual calculation of shape functions ("spherical" shape functions are calculated instead, same as option "SIMULASA").
A few bugs were removed.
The inc.geometry file was rationalized, unnecessary parameters removed.
Additional option "SIMULASA" was added. Fake shape functions are generated in order to simulate an ASA calculation if full-potential mode. Only the (0,0) component of the shape function is written out in a panel that extends from Rmt until Rws (ASA radius).
The new version has a couple of new features:
When in impurity mode, the code does not write out the host shape functions, only the impurity ones.
In the directory there is a file "inputcard_example" where the new features are explained (look for comments preceded by the symbols #####). From the inputcard_example I have omitted all input that would be redundant in a voronoi calculation. In an actual calculation you can use directly the inputcard that you prepared for the KKR code, just as before.
The impurity atoms are read in from the inputcard, just as the host atoms. Older inputcards should be compatible with this.
A short description of further changes in the code follows:
*** Changes concerning the end-user ***
The read-in of the inputcard was rationalised, omitting all redundant parameters. In some cases default values are used if a keyword is not found (e.g., cartesian=.f. or kshape=2 are default).
If you want to perform only a cell construction but not a calculation of the shape functions, set KSHAPE=2. (kshape=1 is equivalent to =2 for the voronoi prog. but not for the host kkr code). For full calculations put INS=1 and KSHAPE=1 or 2.
You can now write out the shapes for all atoms, as required by David's code, or the shapes of only the representative atoms, as required by the KKR host-code. Just use running option "WRITEALL" (with obvious meaning).
-The shape header is now included automatically by the program in the shape-file.
Two new test-options were introduced, "verb0" and "verb1" (to be placed in the TESTOPT part of the inputcard). If you use none, then only little information is written out in the standard output, compared to what was happening so-far. "verb0" gives more, and "verb0" together with "verb1" even more.
New files are written out to help some checks, plots, or post-processing: verices.dat for plotting the cells e.g. with gnuplot, radii.dat for comparing the ratio of inner to outer radius, shows if the cell is too asymmetric, cellinfo.dat is the full set of face-equations and vertices, to be read in e.g. by a future version of the KKR program so that the shapes are constructed on-the-fly.
*** Changes concerning the developer ***
A routine creating the impurity clusters was added (clsgenimp12). It accounts for host positions, impurity positions, and "killed" sites, i.e. host sites that are to be completely removed in the impurity calculation (e.g. when substituting more than one host atoms by only one impurity).
The basis vectors are rationalised by a new routine. If a basis atom is too far away from the (0,0,0) lattice position, and close to another lattice position, it is translated by a lattice vector back close to (0,0,0). This was important for considering the impurity clusters.
The write-out of the shape functions was moved from subr. "mtmesh" into routine "writeshape" which is called from the main program.
All shapes are kept into the main memory, so that the code is easier to handle internally. As a result there is a ceiling of approx. 2000 different shape functions, then the required memory exceeds 2GB. This can be improved and perhaps doubled by a reduction of array-size parameters, in particular IBDMAXD (beginning of maindriver12) and NFACED,NVERTD.
The subroutine shape.f (now called shape12.f) has only minor modifications: the NFACED and NVERTD parameters have been moved to the inc.geometry file so that they are uniquely defined in the code, and some write-out statements are only given with "verb0" or "verb1" into the standard output (but I saw to it that error messages are not restrained by "verb0" or "verb1").