Skip to Content.
Sympa Menu

forum - Re: [abinit-forum] Etotal versus etotal

forum@abinit.org

Subject: The ABINIT Users Mailing List ( CLOSED )

List archive

Re: [abinit-forum] Etotal versus etotal


Chronological Thread 
  • From: matthieu verstraete <matthieu.jean.verstraete@gmail.com>
  • To: forum@abinit.org
  • Subject: Re: [abinit-forum] Etotal versus etotal
  • Date: Fri, 4 Sep 2009 17:47:06 +0200
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=aQgG0QPeUsZ/X00oA+mXy7JewQLiB7PQpzplH2NKxx37bDYUPY7cuM/YWrjSyw5UGm JhyXK+xo6MpsnAeP6mRorFufY4CUHt3fdN6Z+robHCVF25W8WiZqeJ/rHSn0MSLALeGP +aGpx2x3pwFfAP5wy8rZAgWcfunpQmb1Ln3QQ=

Ok, this is fixed in 5.9.2 and will be in the future 6.0. I further
note that the routine which is called (etotfor or prtene) changes due
to PAW and a number of other criteria, so it may be that the correct
number in your case was etotal, and Etotal was false (using tsmear
instead of tphysel).

If you don't want to wait for 6.0, correct etotfor.F90 as follows:

--- src/67_common/etotfor.F90 2009-08-23 04:39:35 +0000
+++ src/67_common/etotfor.F90 2009-09-04 15:25:14 +0000
@@ -219,7 +219,11 @@
! and gather the two last terms of Eq.8 of the VG paper
! Warning : might have to be changed for fixed moment calculations
if(dtset%occopt>=3 .and. dtset%occopt<=7) then
- energies%e_entropy = - dtset%tsmear * energies%entropy
+ if (abs(dtset%tphysel) < tol10) then
+ energies%e_entropy = - dtset%tsmear * energies%entropy
+ else
+ energies%e_entropy = - dtset%tphysel * energies%entropy
+ end if
else
energies%e_entropy = zero
end if


Cheers

Matthieu

On Fri, Sep 4, 2009 at 5:22 PM, matthieu
verstraete<matthieu.jean.verstraete@gmail.com> wrote:
> Perfectly correct! Brilliant - delocalized debugging. I will fix this
> asap : need to add tphysel to etotfor.F90 (this really should be
> consolidated somehow).
>
> Cheers
>
> Matthieu
>
> On Fri, Sep 4, 2009 at 2:31 PM, Vincent
> Chevrier<vincent.chevrier@dahn.phys.dal.ca> wrote:
>> Hi Marc,
>>
>> 1- Etotal vs EtotalDC:
>> I think the problem is closed:
>>
>> Etotal-EtotalDC tphysel  toldfe or tolvrs
>> -8.8E-04        0        1d-5
>>  5.8E-06        0        1d-9
>> -1.5E-08        0        1d-15
>>  4.4E-04        0.002131 1d-5
>> -1.0E-08        0.002131 1d-9
>>  2.2E-10        0.002131 1d-15
>>
>> the convergence increases as expected (although to different orders
>> depending on tphysel).
>>
>> 2 - Etotal/EtotalDC vs etotal:
>>
>> Thanks for clarifying one more time! I don't remember this:
>>  Etotal is e_intern - tphysel*entropy (implemented in prtene.F90)
>>  etotal is e_intern - tsmear*entropy (implemented in etotfor.F90)
>>
>> being stated anywhere in the description of the variables on the Abinit
>> website. As a non-developer user I would not have guessed it. It might be
>> worthwhile to mention it or unify the behavior since etotal and EtotalDC
>> are presented as equivalent in the tutorials.
>>
>> Thanks
>> Vincent
>>
>>> Hi Vincent,
>>>
>>> Apparently, there are two separated problems when using tphysel:
>>>
>>> 1- Etotal vs EtotalDC:
>>>
>>> Now you use a sufficiently small tolerance on density residual.
>>> Are now Etotal and Etotal DC equal when tphysel is used ?
>>> (I cannot read it with your pdf file...)
>>> I mean 10 digits or more... Are they closer than the results obtained
>>> with toldfe=1.d-9.
>>> If yes, the problem is closed.
>>> If not this is a bug.... and the origin of it is mysterious...
>>>
>>>
>>> 2- Etotal/EtotalDC vs etotal:
>>>
>>> When tphysel<>0:
>>> As I wrote yesterday, I can easily explain the difference.
>>> Etotal is e_intern - tphysel*entropy (implemented in prtene.F90)
>>> etotal is e_intern - tsmear*entropy (implemented in etotfor.F90)
>>>
>>> The first question is: which is the correct one ?
>>> Looking at your graph, it seems that Etotal is better (it converges wr
>>> to tsmear).
>>> Let Matthieu answer this question...
>>>
>>> The second question is: why is it implemented like this ?
>>> Again, let Matthieu answer this question...
>>> Perhaps it is sufficient to simply modify etotfor.F90 routine and put in
>>> it the same formula as in prtene.F90.
>>>
>>>
>>>
>>> Marc
>>>
>>>
>>>
>>> Vincent Chevrier a écrit :
>>>> Hi,
>>>>
>>>> I'm really sorry but I swapped the tphysel values in the previous
>>>> postings. It SHOULD have read:
>>>> toldfe=1e-9, tphysel=0
>>>>     >>>>>>>>> Etotal=   -2.24784859172166E+02
>>>>     >>>> Etotal (DC)=   -2.24784864956616E+02
>>>>     etotal              -2.2478486496E+02
>>>>
>>>> toldfe=1e-9, tphysel=0.002131
>>>>     >>>>>>>>> Etotal=   -2.24785888288957E+02
>>>>     >>>> Etotal (DC)=   -2.24785888278458E+02
>>>>     etotal              -2.2478510947E+02
>>>>
>>>> And so Etotal != etotal when tphysel != 0.
>>>>
>>>> As Matthieu suggested I varied tsmear and as Marc suggested used a
>>>> tolvrs=1e-15. See the attached plot. It therefore appears that the value
>>>> of etotal in the .out file is missing some contribution when using
>>>> tphysel. (I'm only plotting tsmear=[0.005:0.015] but the same trend
>>>> continues up to 0.05 and I didn't test beyond that).
>>>>
>>>> One should therefore use Etotal or EtotalDC when using tphysel and NOT
>>>> etotal? Is this a bug?
>>>>
>>>> Thanks
>>>> Vincent
>>>>
>>>>
>>>>> Guilty, as charged. The concept behind tphysel is in PRB 65 035111:
>>>>>
>>>>> The result of a combination of a physical (Femi Dirac tphysel)
>>>>> temperature and an artificial (tsmear, e.g. Marzari cold-smearing)
>>>>> smearing is an effective smearing scheme, where the temperature for
>>>>> the entropic term is tphysel and the smearing function is a
>>>>> mathematical convolution (determines the occupation numbers, which
>>>>> gives the value of the entropy) which depends both on tsmear and
>>>>> tphysel. This is why in the tphysel case you specify both but it is
>>>>> tphysel which should appear in front of the entropy, not tsmear.
>>>>>
>>>>> Note that for physical temperature calculations you always have the
>>>>> reference of setting tsmear=T and occopt 3, and then converging wrt
>>>>> k-points. This avoids the additional cross-convergence of tsmear and
>>>>> nkpt, but obviously is heavier (that's the whole point of
>>>>> tphysel+tsmear, to improve k-point convergence).
>>>>>
>>>>>
>>>>>> toldfe=1e-9, tphysel=0
>>>>>>     >>>>>>>>> Etotal= -2.24785888288957E+02
>>>>>>     >>>> Etotal (DC)=   -2.24785888278458E+02
>>>>>>     etotal                      -2.2478510947E+02
>>>>>>
>>>>> this is wierd: the Etotal-s are already free energies, with the
>>>>> entropic term subtracted. So etotal should be equal to them. Perhaps
>>>>> it is recalculated somewhere else before the final output? And that
>>>>> point would have a small bug. Could you test this difference as a
>>>>> function of tsmear for instance, to see if there is a trend?
>>>>>
>>>>>
>>>>>
>>>>>> toldfe=1e-9, tphysel=0.002131
>>>>>>     >>>>>>>>> Etotal= -2.24784859172166E+02
>>>>>>     >>>> Etotal (DC)=   -2.24784864956616E+02
>>>>>>     etotal                      -2.2478486496E+02
>>>>>>
>>>>> Here etotal looks identical to Etotal(DC), as it should be, but the
>>>>> difference with Etotal is about 1.e-6, instead of 1.e-8 as above... I
>>>>> see no particular reason that the DC estimate should be worse in this
>>>>> case wrt the direct calculation of the energy. Has anyone seen this in
>>>>> norm-conserving calculations? Again, here, could you test if there is
>>>>> a trend wrt tphysel? Perhaps with a very reduced cutoff if the runs
>>>>> take time (and if the discrepancy is still there, of course).
>>>>>
>>>>> cheers,
>>>>>
>>>>> Matthieu
>>>>>
>>>>> On Thu, Sep 3, 2009 at 2:12 PM, TORRENT Marc<marc.torrent@cea.fr>
>>>>> wrote:
>>>>>
>>>>>> Dear Vincent,
>>>>>>
>>>>>> Some explanations (but not all).
>>>>>>
>>>>>> etotal is used to converge the scf cycle and contains an entropy
>>>>>> energy
>>>>>> computed with tsmear.
>>>>>> It is obtained by direct scheme if iscf<10, by double-counting scheme
>>>>>> if
>>>>>> iscf>=10:
>>>>>>
>>>>>> iscf=7 :  etotal=e_intern      - tsmear*entropy
>>>>>> iscf=17:  etotal=eDC_intern - tsmear*entropy
>>>>>>
>>>>>> Etotal (EtotalDC) is just printed at the end of the SCF cycle and
>>>>>> recomputed
>>>>>> at that level.
>>>>>> It uses tphysel if not zero, else tsmear:
>>>>>>
>>>>>> If tphysel<>0:
>>>>>> Etotal=e_intern      - tphysel*entropy
>>>>>> EtotalDC=eDC_intern - tphysel*entropy
>>>>>>
>>>>>> If tphysel=0:
>>>>>> Etotal=e_intern      - tsmear*entropy
>>>>>> EtotalDC=eDC_intern - tsmear*entropy
>>>>>>
>>>>>> So, it explains the differences between etotal and Etotal.
>>>>>> Why is it implemented like this: I don't know.
>>>>>> The developer who introduced tphysel should be able to explain that.
>>>>>>
>>>>>>
>>>>>> Concerning the difference between Etotal and EtotalDC when
>>>>>> tphysel<>0...
>>>>>> it
>>>>>> sounds strange.
>>>>>> But I cannot explore further if I'm not sure of the convergence of
>>>>>> your
>>>>>> SCF
>>>>>> cycle.
>>>>>> toldfe is not the right criterium.
>>>>>> you should use tolvrs and put it to a very low value (i.e 1.d-15 or
>>>>>> lower).
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> Marc
>>>>>>
>>>>>>
>>>>>>
>>>>>> Etotal and Etotal
>>>>>>
>>>>>> Vincent Chevrier a écrit :
>>>>>>
>>>>>> Dear Bernard,
>>>>>> thank you for your reply. I've rerun with toldfe=1e-9. But etotal does
>>>>>> not
>>>>>> always agree with Etotal(DC). See below, in all cases tsmear=0.01 and
>>>>>> the
>>>>>> runs only differ in the parameters stated.
>>>>>>
>>>>>> toldfe=1e-5, tphysel=0
>>>>>>     >>>>>>>>> Etotal= -2.24785447837035E+02
>>>>>>     >>>> Etotal (DC)=   -2.24785888234037E+02
>>>>>>     etotal                      -2.2478510911E+02
>>>>>>
>>>>>> toldfe=1e-5, tphysel=0.002131
>>>>>>     >>>>>>>>> Etotal= -2.24785745210972E+02
>>>>>>     >>>> Etotal (DC)= -2.24784864246079E+02
>>>>>>     etotal            -2.2478486425E+02
>>>>>>
>>>>>>
>>>>>> when tphysel=0.002131 then etotal = Etotal(DC), but when tphysel=0
>>>>>> then
>>>>>> etotal != Etotal(DC). Why is this, or more specifically what is:
>>>>>>
>>>>>> 1 - the cause of the difference between Etotal(DC) and etotal
>>>>>> 2 - the effect of tphysel on the difference between Etotal(DC) and
>>>>>> etotal
>>>>>>
>>>>>> Thanks
>>>>>> Vincent
>>>>>>
>>>>>>
>>>>>>
>>>>>> Dear Vincent,
>>>>>>
>>>>>> With iscf=17 (the default value of iscf),  ETOT
>>>>>> is equal to the so-called "double counting" expression of the energy
>>>>>>
>>>>>>
>>>>>> written "Etotal (DC)" in the .out file (you could check it in your
>>>>>> .out
>>>>>> file).
>>>>>>
>>>>>>
>>>>>> Moreover, Etotal and Etotal (DC) (both written in the .out file) are
>>>>>>
>>>>>>
>>>>>> expected to agree if
>>>>>>
>>>>>>
>>>>>> your calculation is well converged.
>>>>>> In your case, your convergence criterion
>>>>>> is weak (toldfe 1.d-05) so Etotal and Etotal (DC)
>>>>>> are not equal. You could
>>>>>> increase you convergence criterion to check this.
>>>>>>
>>>>>> Best regards
>>>>>> Bernard
>>>>>>
>>>>>>
>>>>>> Vincent Chevrier a écrit :
>>>>>>
>>>>>>
>>>>>> Hi,
>>>>>> I am wondering what the difference is between Etotal and etotal for
>>>>>> PAW
>>>>>>
>>>>>>
>>>>>> calcs. I can't remember ever seeing a difference stated on the ABINIT
>>>>>> website. I'm especially interested in knowing how tphysel affects this
>>>>>> difference.
>>>>>>
>>>>>>
>>>>>> I completed two runs with the same structure the only difference being
>>>>>>
>>>>>>
>>>>>> tphysel=0 and tphysel=0.00213.
>>>>>>
>>>>>>
>>>>>> >From the .out file:
>>>>>> For tphysel=0:
>>>>>>     Kinetic energy  =  1.72081044902126E+01
>>>>>>     Hartree energy  =  1.17823500013938E+01
>>>>>>     XC energy       = -3.59810665254476E+01
>>>>>>     Ewald energy    = -1.07436906857906E+02
>>>>>>     PspCore energy  =  8.93535605840166E+00
>>>>>>     Loc. psp. energy= -4.47984809673791E+01
>>>>>>     Spherical terms = -7.44950150296981E+01
>>>>>>     >>>>> Internal E= -2.24785658830422E+02
>>>>>>     -kT*entropy     =  2.10993387856660E-04
>>>>>>     >>>>>>>>> Etotal= -2.24785447837035E+02
>>>>>> and
>>>>>>     etotal  -2.2478510911E+02
>>>>>> For tphysel=0.002131
>>>>>>     Kinetic energy  =  1.72075689848333E+01
>>>>>>     Hartree energy  =  1.17845516746048E+01
>>>>>>     XC energy       = -3.59818457081452E+01
>>>>>>     Ewald energy    = -1.07436906857906E+02
>>>>>>     PspCore energy  =  8.93535605840166E+00
>>>>>>     Loc. psp. energy= -4.48011025224259E+01
>>>>>>     Spherical terms = -7.44958705044103E+01
>>>>>>     >>>>> Internal E= -2.24788248875047E+02
>>>>>>     -kT*entropy     =  2.50366407550064E-03
>>>>>>     >>>>>>>>> Etotal= -2.24785745210972E+02
>>>>>> and
>>>>>>     etotal  -2.2478486425E+02
>>>>>> below is the input file. Can anybody help me understand:
>>>>>> 1 - the cause of the difference between Etotal and etotal
>>>>>> 2 - the effect of tphysel on the difference between Etotal and etotal
>>>>>>
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>>
>>>>>> Vincent
>>>>>> Input file:
>>>>>>     ndtset   2
>>>>>>    tphysel1  0.002131
>>>>>>    tphysel2  0.0
>>>>>>     occopt   4
>>>>>>     tsmear   0.01
>>>>>>  pawecutdg   15
>>>>>>       ecut   15
>>>>>>     kptopt   1
>>>>>>    nshiftk   1
>>>>>>     shiftk   0.5 0.5 0.5
>>>>>>   kptrlatt   6  0  0
>>>>>>              0  3  0
>>>>>>              0  0 10
>>>>>>      nstep   50
>>>>>>     toldfe   1.0d-5
>>>>>>     ntypat   2
>>>>>>      znucl   3 14
>>>>>>      natom   34
>>>>>>      typat   1  1  1  1  2  1  1  1
>>>>>>              2  1  1  1  2  1  1  1
>>>>>>              2  1  1  1  1  2  1  1
>>>>>>              1  2  1  1  1  2  1  1
>>>>>>              1  2
>>>>>>      acell   1.5065427965E+01  2.8615352526E+01  8.4083802112E+00 Bohr
>>>>>>
>>>>>>
>>>>>> rprim   1.0 0.0 0.0
>>>>>>
>>>>>>
>>>>>>              0.0 1.0 0.0
>>>>>>              0.0 0.0 1.0
>>>>>>       xred   7.4996953092E-13  5.0000000000E-01  0.0000000000E+00
>>>>>>              9.6480532055E-02  1.9420479791E-01  0.0000000000E+00
>>>>>>
>>>>>>
>>>>>> 2.7080350417E-01  3.4610078252E-01  0.0000000000E+00
>>>>>> 1.5292044305E-01  2.5787557735E-02  0.0000000000E+00
>>>>>> 4.1748605305E-01  1.6031572532E-01  0.0000000000E+00
>>>>>> 2.5955975937E-01  9.5181187368E-02  5.0000000000E-01
>>>>>> 4.0978302750E-01  2.5635768786E-01  5.0000000000E-01
>>>>>> 9.6925526499E-02  3.9393640703E-01  5.0000000000E-01
>>>>>> 4.2837868374E-01  4.3177429281E-01  5.0000000000E-01
>>>>>> 9.0351946795E-01  8.0579520209E-01  0.0000000000E+00
>>>>>> 7.2919649583E-01  6.5389921748E-01  0.0000000000E+00
>>>>>> 8.4707955695E-01  9.7421244227E-01  0.0000000000E+00
>>>>>> 5.8251394695E-01  8.3968427468E-01  0.0000000000E+00
>>>>>> 7.4044024063E-01  9.0481881263E-01  5.0000000000E-01
>>>>>> 5.9021697250E-01  7.4364231214E-01  5.0000000000E-01
>>>>>> 9.0307447350E-01  6.0606359297E-01  5.0000000000E-01
>>>>>> 5.7162131627E-01  5.6822570719E-01  5.0000000000E-01
>>>>>> 5.0000000000E-01  0.0000000000E+00  0.0000000000E+00
>>>>>> 4.0351946795E-01  6.9420479791E-01  0.0000000000E+00
>>>>>> 2.2919649583E-01  8.4610078252E-01  0.0000000000E+00
>>>>>> 3.4707955695E-01  5.2578755773E-01  0.0000000000E+00
>>>>>> 8.2513946947E-02  6.6031572532E-01  0.0000000000E+00
>>>>>> 2.4044024063E-01  5.9518118737E-01  5.0000000000E-01
>>>>>> 9.0216972503E-02  7.5635768786E-01  5.0000000000E-01
>>>>>> 4.0307447350E-01  8.9393640703E-01  5.0000000000E-01
>>>>>> 7.1621316266E-02  9.3177429281E-01  5.0000000000E-01
>>>>>> 5.9648053206E-01  3.0579520209E-01  0.0000000000E+00
>>>>>> 7.7080350417E-01  1.5389921748E-01  0.0000000000E+00
>>>>>> 6.5292044305E-01  4.7421244227E-01  0.0000000000E+00
>>>>>> 9.1748605305E-01  3.3968427468E-01  0.0000000000E+00
>>>>>> 7.5955975937E-01  4.0481881263E-01  5.0000000000E-01
>>>>>> 9.0978302750E-01  2.4364231214E-01  5.0000000000E-01
>>>>>> 5.9692552650E-01  1.0606359297E-01  5.0000000000E-01
>>>>>> 9.2837868374E-01  6.8225707188E-02  5.0000000000E-01
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>> Dr. Matthieu Verstraete
>>>>>
>>>>> Universite de Liège
>>>>> Institut de Physique, Bat. B5
>>>>> Allée du 6 aout, 17
>>>>> B- 4000 Sart Tilman, Liège
>>>>> Belgium
>>>>>
>>>>> Phone : +32 4 366 37 50
>>>>> Fax   : +32 4 366 36 29
>>>>>
>>>>> Mail : matthieu.jean.verstraete@gmail.com
>>>>>
>>>>>
>>>
>>
>>
>
>
>
> --
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Dr. Matthieu Verstraete
>
> Universite de Liège
> Institut de Physique, Bat. B5
> Allée du 6 aout, 17
> B- 4000 Sart Tilman, Liège
> Belgium
>
> Phone : +32 4 366 37 50
> Fax   : +32 4 366 36 29
>
> Mail : matthieu.jean.verstraete@gmail.com
>



--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dr. Matthieu Verstraete

Universite de Liège
Institut de Physique, Bat. B5
Allée du 6 aout, 17
B- 4000 Sart Tilman, Liège
Belgium

Phone : +32 4 366 37 50
Fax : +32 4 366 36 29

Mail : matthieu.jean.verstraete@gmail.com




Archive powered by MHonArc 2.6.16.

Top of Page