continue: Error when single atom system, scf.EigenvalueSolver is Band ( No.1 ) |
- Date: 2012/01/21 04:15
- Name: A. M. Ito <ito.atsushi@nifs.ac.jp>
- I think the course of this error is function "Eigen_HH" in the file “EigenBand_lapack.c”. In this function, the some variables become infinity value or “nan”, for example “p[i1].r”. Because, when “s2 == 0.0”, then “u1.r == 0.0”. Here, from the code for line 124 to 155, if (i == n -1) then “s2 == 0.0” because the loop for lines 142 to 145 is skipped. Therefore, in this case, p[i1].r and so on become infinity every time.
Here, see another function "Eigen_HH" in the file “Eigen_lapack.c”. In this function, the “if” sentence in line 458 is as follows: if (ABSTOL<fabs(s2)){ By this sentence, if “s2 == 0.0” then calculation of “p[i1].r” is skipped. That is, this infinity problem does not happen when scf.EigenvalueSolver is Cluster. On the other hand, "Eigen_HH" in the file “EigenBand_lapack.c”. The corresponding “if” sentence is written in line 156 as follows: if ( ABSTOL<fabs(s2) || i==(n-1) ){ From this line, only when (i==n-1), the problem by “s2==0.0” is not skipped. This “if” sencense is correct?
As a test, when the “if” sentence of line 156 in file “EigenBand_lapack.c” is changed to if ( ABSTOL<fabs(s2) ){ then total energy does not become infinity, and become correct value, even if Atoms.UnitVectors are larger than cutoff length of PAO file and scf.EigenvalueSolver is Band.
Sticky point is, if some variavles in the function "Eigen_HH" becomes so large value (infinity), but if it is not “nan”, convergent total energy is returned. But, the calculation under the input parameter of “Si Si7.0-s2p2d1 Si_PBE11” returns “nan” as total energy.
Please check this point. I hope the problem is solved. Thank you very much for reading. Best regards,
Atsushi M. Ito (NIFS)
 |
|