Skip to Content.
Sympa Menu

forum - Re: [abinit-forum] a bug in GW code (cchi0q0.F90)?

forum@abinit.org

Subject: The ABINIT Users Mailing List ( CLOSED )

List archive

Re: [abinit-forum] a bug in GW code (cchi0q0.F90)?


Chronological Thread 
  • From: Matteo Giantomassi <gmatteo@pcpm.ucl.ac.be>
  • To: forum@abinit.org
  • Subject: Re: [abinit-forum] a bug in GW code (cchi0q0.F90)?
  • Date: Fri, 23 Mar 2007 18:01:01 +0100

On Fri, 2007-03-23 at 15:00 +0100, Fabien Bruneval wrote:
> Actually Matteo, the implementation of the correct commutator for
> self-consistent GW could be done in the following way:
>
> First, calculate the commutator on the KS basis set (as usual)
> and then, rotate them using the unitary matrix that transforms KS
> wavefunctions into GW wavefunctions.
>

Hi Fabien,

Maybe I dind't understand well, but if you use the unitary matrix to
rotate the matrix elements, you get the same operator but in a
different representation, schematically:

<KS_i | [ H_KS , x] | KS_j > ==> <QP_i | [H_KS ,x ] | QP_j >,

while one should evaluate

<QP_i | [\Sigma , x] | QP_j >

which requires the knowledge of \Sigma(r, r') or equivalently
\Sigma_{G,G'} (q).

It's not so clear to me that these two quantites are equal, but maybe
I'm missing something.

Bye
Matteo

> By now, we are doing the opposite: we rotate first the wavefunctions
> KS->GW and then we calculate the commutator, which is approximately
> right for these wavefunctions.
>
> But I did not feel the need to implement it for all the systems I
> studied so far.
>
>
> fabien
>
>
>
> Matteo Giantomassi wrote:
> > On Fri, 2007-03-23 at 10:19 +0100, Fabien Bruneval wrote:
> >
> >
> >>Hi Deyu!
> >>
> >>This is subtle a point, but abinit code is right (as always?!).
> >>Let me explain what the code does:
> >>
> >>You want to calculate terms such as < v | r | c >, where v stands for
> >>valence wavefunctions, c for conduction wfs and where r is the position
> >>operator.
> >>The r operator is not periodic, but the bra and ket are. So the easiest
> >>way out is to use the trick:
> >>
> >>< v | r | c > = < v | [ H , r ] | c > / (E_v - E_c).
> >>
> >>Therefore, the energies in the denominator are the one corresponding to
> >>the Hamiltonian that you have introduced. So far, this Hamiltonian can
> >>be anything, it just needs to have the periodicity of the crystal.
> >>
> >>In practice, we have chosen the Hamiltonian that corresponds to the
> >>wavefunctions in the bra and the ket and, as a consequence, the energies
> >>should be consistent with this choice.
> >>
> >>To summarize, when you use KS wavefunctions, like in G0W0, scissor+G0W0,
> >>self-consistent GW on the energies-only, the code is perfectly
> >>consistent and you should not change the energies in the denominator!
> >>
> >>I have to confess that there is a small inconsistency, when one performs
> >>self-consistent GW calculation on the wavefunctions, because we still
> >>use the commutator of the KS Hamiltonian and not the one of the GW
> >>Hamiltonian. This "approximation" is pretty harmless, since the effect
> >>of the commutator is really small in bulk systems. For nanostructures,
> >>this may require some fix...
> >
> >
> > Dear all,
> >
> > I agree with Fabien: it is true that in case of an update of the
> > wavefunctions in \Chi_0, the treatment is not perfectly consistent since
> > the code uses quasiparticle energies but without taking into account the
> > commutator of \Sigma with the position operator x (strictly speacking
> > one should consider also \Sigma^*, if I'm not wrong).
> > Anyway using the commutator of the KS hamiltonian should be a good
> > approximation if the quasiparticle amplitudes are almost equal to the KS
> > wavefunctions.
> > Maybe in more problematic systems where the self-energy operator is not
> > diagonal in the KS basis set, one should use the commutator of \Sigma
> > with x, but the implementation is not so straightforward. What do you
> > think?
> >
> > Best regards
> > Matteo
> >
> >
> >>If you want a reference on the commutator trick, you can find it in
> >>Baroni and Resta, Phys. Rev. B 33, 7017-7021 (1986).
> >>
> >>Bye.
> >>
> >>Fabien
> >>
> >>
> >>
> >>
> >>
> >>deyulu@yahoo.com wrote:
> >>
> >>>Hello, abinit users:
> >>> I think there is a bug in the source code cchi0q0.F90.
> >>>When computing polarizability chi0 at long wave length limit (q->0), the
> >>>code uses the quasi-particle energies instead of KS orbital energies.
> >>>The quasi-particle energies could be simply KS orbital energies plus a
> >>>scissor
> >>>operator or the output from a previous GW calculation.
> >>>In the calculation of the G=0 component using perturbation theory,
> >>>however, KS orbital energies are used. In order to fix this bug, one
> >>>should change:
> >>>
> >>> rhotwx(:)=-rhotwx(:)/ediff
> >>>
> >>>to
> >>>
> >>> rhotwx(:)=-rhotwx(:)/egwdiff
> >>>
> >>>
> >>> Best
> >>> Deyu
> >>>
> >>>***************************************************************************
> >>>Deyu Lu (Ph.D)
> >>>
> >>>190 Chemistry Building
> >>>University of California, Davis
> >>>One Shields Avenue
> >>>Davis, CA 95616
> >>>Office phone: (530) 754-9663
> >>>Group Webpage: http://angstrom.ucdavis.edu/
> >>>
> >>>***************************************************************************
> >>>
> >>
> >>
> >
> >
>
>




Archive powered by MHonArc 2.6.16.

Top of Page