Stefano,<div><br></div><div>Thank you for the explanation. Things are clear now. Is there a circumstance in which Delta n_ext(q=0) is nonzero?</div><div><br></div><div>David Strubbe</div><div>UC Berkeley<br><br><div class="gmail_quote">
On Wed, Apr 20, 2011 at 1:12 AM, Stefano de Gironcoli <span dir="ltr"><<a href="mailto:degironc@sissa.it">degironc@sissa.it</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">


  
    
    
  
  <div text="#000000" bgcolor="#ffffff">
    Dear David Strubbe,<br>
    <br>
    eq. 79 is a general formula; in the phonon code Delta n_ext(q=0) is
    always vanishing because the perturbation is neutral (atoms are
    displaced but their charge is not changed), still Delta Vscf is in
    general non zero so one has to do something<br>
    <br>
    Let's look at the scf variation of rho that is something like<br>
    <br>
    Delta rho(r) = sum_i  f_i (phi_i* Delta_phi_i +cc) + d f_i/de
    *(Delta e_i - Delta e_F) |phi|^2 <br>
    <br>
    As said, eq. 79 is the condition of charge neutrality of the
    perturbation which is due ONLY to the last term involving changes in
    occupation of states (remember that Delta phi is always orthogonal
    to the unperturbed phi so in no case Delta phi can contribute to the
    total charge variation) <br>
    <br>
    if you work out the expression ... <br>
    <br>
    total charge = Delta n_ext + Delta_n induced by Delta e_i (defined
    in terms of the potential change) + Delta_n induced by the Fermi
    energy shift..<br>
    <br>
    and the neutrality condition reads <br>
    <br>
    0 = Delta_n_ext + \int n(e_F,r) Delta Vscf - n(e_F) * Delta e_F<br>
    <br>
    which is eq. 79.<br>
    <br>
    HOWEVER, delta rho that enters ef_shift has been computed without
    the contribution coming from the (then unknown) Fermi energy shift
    Delta e_F that is (see above) <br>
    <br>
    - n(e_F,r) * Delta e_F<br>
    <br>
    this is how ef_shift routine icomputes Delta e_F:  it calculates the
    G=0 component of Delta rho before the shift ( which amount to be
    \int n(e_F,r) Delta Vscf ) and define Delta e_F in such a way that
    after the term  - n(e_F,r) * Delta e_F is added the final Delta rho
    is neutral.<br>
    <br>
    I hope the procedure is a bit clearer now.<br><font color="#888888">
    <br>
    stefano</font><div><div></div><div class="h5"><br>
    <br>
    <br>
    On 04/20/2011 12:08 AM, David Strubbe wrote:
    <blockquote type="cite">
      <pre>Paolo,

Thanks for the response. This gives me some more insight into what is going
on, but I still don't understand.

As far as I can tell, the drhoscf in ef_shift is still the change in the
density rather than the change in the potential, because the calls in
solve_linter to dv_of_drho are using a copy of the density response rather
than drhoscf itself:

        call zcopy
(nrxx*nspin_mag,drhoscfh(1,1,ipert),1,dvscfout(1,1,ipert),1)
        call dv_of_drho (imode0+ipert, dvscfout(1,1,ipert), .true.)

The heart of the matter is the lines in ef_shift:

delta_n = delta_n + omega*drhoscf(nl(1),is,ipert)
def (ipert) = - delta_n / dos_ef

delta_n does not seem to refer to \Delta n_{ext} or the integral of the LDOS
with \Delta V_{SCF}, as in the numerator of Eq. 79. Do those quantities
exist in the calculation here?

Thanks,
David Strubbe
UC Berkeley

On Tue, Apr 19, 2011 at 1:44 PM, Paolo Giannozzi <a href="mailto:giannozz@democritos.it" target="_blank"><giannozz@democritos.it></a>wrote:

</pre>
      <blockquote type="cite">
        <pre>On Apr 8, 2011, at 20:39 , David Strubbe wrote:

</pre>
        <blockquote type="cite">
          <pre>Eq. 79 refers to a quantity \Delta n_{ext} and an integral of the LDOS
with \Delta V_{SCF} to calculate the shift in Fermi level. However in
ef_shift it appears that the density response drhoscf is used instead
of these quantities in the numerator, which doesn't seem like the
same thing.
</pre>
        </blockquote>
        <pre>it doesn't, but it is. The (dirty) trick is well hidden in the call
to routine dv_of_drho:
it accepts in input the variation of the charge density, returns in
output the
variation of the potential, overwritten on the former. It was done a
looong time
ago in order to spare some memory, when machines had much less ram and
the code was much simpler and smaller (occasional dirty tricks were
under
control, sort of). A comment in the code would have spared you (and me)
some time. Unfortunately comments in code tend to belong to one of the
following categories: 1) useless, 2) misleading, 3) obsolete, 4)
nonexistent

P.
---
Paolo Giannozzi, Dept of Chemistry&Physics&Environment
Univ. Udine, via delle Scienze 208, 33100 Udine, Italy
Phone <a href="tel:%2B39-0432-558216" value="+390432558216" target="_blank">+39-0432-558216</a>, fax <a href="tel:%2B39-0432-558222" value="+390432558222" target="_blank">+39-0432-558222</a>



_______________________________________________
Pw_forum mailing list
<a href="mailto:Pw_forum@pwscf.org" target="_blank">Pw_forum@pwscf.org</a>
<a href="http://www.democritos.it/mailman/listinfo/pw_forum" target="_blank">http://www.democritos.it/mailman/listinfo/pw_forum</a>

</pre>
      </blockquote>
      <pre></pre>
      <pre><fieldset></fieldset>
_______________________________________________
Pw_forum mailing list
<a href="mailto:Pw_forum@pwscf.org" target="_blank">Pw_forum@pwscf.org</a>
<a href="http://www.democritos.it/mailman/listinfo/pw_forum" target="_blank">http://www.democritos.it/mailman/listinfo/pw_forum</a>
</pre>
    </blockquote>
    <br>
  </div></div></div>

<br>_______________________________________________<br>
Pw_forum mailing list<br>
<a href="mailto:Pw_forum@pwscf.org">Pw_forum@pwscf.org</a><br>
<a href="http://www.democritos.it/mailman/listinfo/pw_forum" target="_blank">http://www.democritos.it/mailman/listinfo/pw_forum</a><br>
<br></blockquote></div><br></div>