-splitting rotate_wfc_* and adding rotate_Hpsi_* into a DENSE diagonalization dir
-removing cg_param, david_param, ... in favour of util_param
-implementation of ParO
-update of PW, UtilXlib, FFTXlib and install needed for compatibility
The general Davidson routine cegterg used internally wavefunction-like arrays
that have three indices: plane waves, polarization, bands. This has no real
motivation (historical maybe?) and differs from the rest of QE where
wavefunctions with two indices (plane waves+polarization, bands) are used.
In my opinion, the "gap" between the two sets of plane waves/polarizations
should also be removed (that is: the 2*npw plane waves/polarizations should
be consecutive, not with a "gap" in the middle as it is now) but this is a
much more serious change, affecting many different parts of the code.
=============================
Harmonization of three copies of desc_init (two more are in KS_Solvers/PPCG,
plus two slightly different ones in Davidson diagonalization), with some
changes for clarity (in my opinion); harmonization of various copies of
compute_distmat and of calbec_[dz]distmat.
In my opinion all these routines, plus several simolar ones that are either
present in multiple copies or that can be easily harmonized, used in parallel
diagonalization, should be moved somewhere else, preferably LAXlib/.
The problem now is that they are CONTAINed so they use and set variables from
the calling subroutine and may use arrays passed as arrays (with :); moving
them to a separate routine requires an interface, moving them into a module may
lead to undesired dependencies. Ideally one should be able to set up and
diagonalize a distributed matrix without filling the code of calls to
low-level LAXlib routines and without too much voodoo.
now QE do not "use" modules of LAXlib any longer, but it just include interface blocks.
In principle they can now be compiled independently.
All this beside possible errors.
Further clean-ups are now possible, within LAXlib and in QE source codes