[memory] pdos calculations and eigenvalue array
There is an unnecessary memory usage in PDOS calculations when using very high PDOS kpoints.
The PDOS calculations only ever require 1 array of eigenvalues corresponding to the number of states. This is because we don't store the values subsequently.
-
A simple fix would be to have a local array in each of the routines pdos*.F
with this and omit all use ofeo
inpdos.F
. -
Additionally it might be nice to have an additional file siesta.PDOS.EIG
which contains the full eigenvalue spectrum? Currently.EIG
is a bit bad to use for DOS since it contains the SCF eigenvalues which are typically not having the same precision as what is required for accurate DOS calculations. In master we havekpoint_dos.F90
which is the default for LDOS+PDOS. So perhaps we should have additional files:siesta.[PL]DOS.EIG
for the explicit calculations.
Note, the same won't apply to LDOS since that requires the full set of eigenvalues, on the other hand eo
does not contain SCF eigenvalues.