[Q-e-developers] problem with PAW + stess + Hubbard U

Davide Ceresoli davide.ceresoli at istm.cnr.it
Mon Jan 20 14:38:02 CET 2014


Dear all,
     I've got a problem with PAW + stress + Hubbard U. The problem
is in routine gen_at_dj:

  iatw =          40 natw =          20

  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      Error in routine gen_at_dj (1):
      unexpected error
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

I'm using Natalie Holzwarth PAW for Co, which has two l=2 projectors:

# grep "<PP_CHI" Co.GGA-PBE-paw.UPF

  <PP_CHI.1 type="real" size="  1041" l="0" occupation=" 2.0000" columns="3">
  <PP_CHI.2 type="real" size="  1041" l="0" occupation=" 2.0000" columns="3">
  <PP_CHI.3 type="real" size="  1041" l="1" occupation=" 6.0000" columns="3">
  <PP_CHI.4 type="real" size="  1041" l="1" occupation=" 0.0000" columns="3">
  <PP_CHI.5 type="real" size="  1041" l="2" occupation=" 7.0000" columns="3">
  <PP_CHI.6 type="real" size="  1041" l="2" occupation=" 0.0000" columns="3">

(I have 4 Co in the unit cell).

The problem is the following comparison in gen_at_dj:
          if ( upf(nt)%oc(nb) >= 0.d0 .and. l == hubbard_l(nt) ) then

Is there a reason for using ">=" rather than ">"? This comparison can be
found in many other place. As far as I understand, if the occupation
of an atomic orbital is < 0.0, that orbital is ignored in: 1) atomic wfc
initialization 2) Lowdin projection 3) Hubbard U.
How about if the occupation is = 0.0? what should be the behavior of the
code?

In any case I can modify the UPF file and enter a negative occupation for
PP_CHI.6.

Best regards,
     Davide



More information about the developers mailing list