In all the calculations: cluster, band, and O() calculations, a lapack routine is used to solve eigenvalues and eigenvectors of the tridiagonalized matrix. However, we see a platform dependency of lapack routines to solve the tridiagonalized matrix with respect to computational robustness. So, three different lapack routines are available in OpenMX Ver. 3.5 by the following keyword 'scf.lapack.dste':
scf.lapack.dste dstevx # dstegr|dstedc|dstevx, default=dstevxThese lapack routines, dstegr, dstedc, and dstevx, are based on a multiple relatively robust representation (MR3) scheme [66], a divide and conquer (DC) algorithm [67], and QR and inverse iteration algorithm, respectively. For further details, see the lapack website [68]. Our experiences suggest that the computational speed is as follows:
dstevx < dstedc < dstegrIn contrast to the computational speed, the computational robustness seems to be opposite as follows:
dstegr < dstedc < dstevxSo, an appropriate one (robuster and faster) on your computational environment should be selected by this keyword 'scf.lapack.dste'. The default is 'dstevx'.
In the cluster and band calculations, only eigenvectors of occupied and lower exited states are evaluated for saving the computation time when 'dstevx' is used. Thus, it is highly recommended to use 'dstevx' instead of 'dstedc' and 'dstegr' in the cases.