# [Octopus-devel] stupid bug?

Micael Oliveira micael at teor.fis.uc.pt
Mon Mar 10 18:52:04 WET 2008

```Hi,

I just wanted to add a couple of things.

When I introduced the sum of the eigenvalues as a convergence criteria
the purpose was to identify those cases where the eigenvalues are almost
converged, but not the density (like non-collinear spin systems where
most of the SCF cycle is spent relaxing the magnetic moments while the
eigenvalues change very little).

Now I realize in practice I never used the eigenvalues sum as
convergence criteria, although it is a very useful information to have.

On the other hand, since we use the total energy to study the mesh
convergence and other things, maybe it would be a good idea to replace
the eigenvalues sum by the total energy as a convergence criteria.

Cheers,

Micael

alberto.castro at tddft.org wrote:
> Hi,
>
> I guess you mean abs_dens = int( |rho_i - rho_o| ).
>
> And yes, it seems that we do not convert the units. I would be in favour
> of making use of dimensionless definitions whenever possible, so moving to
> what you suggest.
>
> And what about simplifying a bit, getting rid of the "absolute"
> convergenge criteria?
>
> But there is one point little about the eigenvalues criterion:
>
> abs_ev = sum( |ev_i - ev_o| )
> rel_ev = abs_ev / |sum(ev_o)|
>
> Shouldn't we have rel_ev = abs_ev / sum(|ev_o|) ?
>
> (The sum of the absolute values of the eigenvalues, and not the absolute
> value of the sum)
>
> Cheers, Al.
>
> On Fri, 7 Mar 2008, Miguel Marques wrote:
>
>>   Hi everyone,
>>
>>   I think I discovered a (serious and stupid) bug. It has to do with the
>> units in the stopping parameters of the SCF. It is very easy to solve,
>> but we have to decide what is the right way of doing it. Let me explain:
>>
>> abs_den = int( (rho_i - rho_o)^2 )
>> therefore, it has units of length^-3
>>
>> rel_den = 1/N abs_den
>> again, units of length^-3
>>
>> abs_ev = sum( |ev_i - ev_o| )
>> units of energy
>>
>> rel_ev = abs_ev / sum(ev_o)
>> dimensionless
>>
>> abs_forces
>> units of force
>>
>> rel_forces
>> dimensionless
>>
>> To my surprise I found that in octopus we do not convert the inputs of
>> these variables, i.e., we are effectively using atomic units for all of
>> them (someone can check it independently?)!!!! To change that is
>> trivial, of course, but I also believe that the definition of abs_den is
>> a bit weird. Wouldn't it be better:
>>
>> abs_den = int( |rho_i - rho_o|^2 )
>>
>> This definition is dimensionless, and I don't see why it should be worse
>> than the previous one.
>>
>> In any case, I guess that a lot of tests will change due to the
>> different stopping criterion... Let me know what you think is best to do...
>>
>>   cheers,
>>   Miguel
>>
>> --
>> Dr. Miguel A. L. Marques
>> marques at tddft.org
>>
>> Laboratoire de Physique de la Matière Condensée et Nanostructures
>> (LPMCN) - Université Lyon I
>> Bâtiment Brillouin, Domaine scientifique de la DOUA
>> 69622 Villeurbanne Cedex
>> Tel +33 (0)4 72448187
>> Fax +33 (0)4 72432648
>> _______________________________________________
>> Octopus-devel mailing list
>> Octopus-devel at tddft.org
>> http://www.tddft.org/mailman/listinfo/octopus-devel
>>
>
> ======================================================================
> Dr. Alberto Castro
>
> Institut fur Theoretisch Physik, Freie Universitat Berlin.
> Arnimallee, 14, Berlin 14195 (Deutschland)
>
> Tel:   +49 30 83853028
> Fax:   +49 30 83855258
> skype: alberto_c_barrigon
> email: alberto at physik.fu-berlin.de
> ======================================================================
>
> _______________________________________________
> Octopus-devel mailing list
> Octopus-devel at tddft.org
> http://www.tddft.org/mailman/listinfo/octopus-devel
>

```