[Pw_forum] How to figure out machine accuracy

Lorenzo Paulatto paulatto at sissa.it
Fri Sep 4 16:15:13 CEST 2009


In data 04 settembre 2009 alle ore 15:54:38, Manoj Srivastava  
<manoj at phys.ufl.edu> ha scritto:
>  The input is CMACH, I can specify various input variables for 'CMACH' to
> get output, but what variable is returned as output, as there is only one
> in this subroutine?  Would you mind having a look at this- its in
> espresso4.0.4/flib/dlamch.f


Dear Manoj,
QE does not use simple LAPACK routines for most of its algebra.  
Hamiltonian diagonalization is computed using a custom implementation of  
the iterative Davidson (or conjugate-gradient) algorithm that only uses  
LAPACK to diagonalize a reduced hamiltonian during each iteration.

Said that, you can control the accuracy to which eigenvalues are computed  
cannot be controlled directly by the user (without modifying the code) and  
is decreased automatically as the self-consistency approaches convergence.

The formula used is the following:
  ethr = MIN( ethr, 0.1D0*dr2 / MAX( 1.D0, nelec ) )
where dr2 is the estimated scf accuracy.
As you can see you can increase the accuracy (at convergence) of  
eigenvalues and eigenvectors by increasing the convergence threshold.


In a more general frame, I think you could disclose some more information  
on your "symmetry problem"; personally I doubt it is caused by  
insufficient diagonalization accuracy.

best regards

-- 
Lorenzo Paulatto
SISSA  &  DEMOCRITOS (Trieste)
phone: +39 040 3787 511
skype: paulatz
www:   http://people.sissa.it/~paulatto/

     *** save italian brains ***
  http://saveitalianbrains.wordpress.com/



More information about the users mailing list