Menu

Sn EOS in Elk & Wien2k

Elk Users
Roman N.
2014-01-03
2020-05-06
  • Roman N.

    Roman N. - 2014-01-03

    Dear Elk developers,
    thank you for very nice code and well maintained forum!
    I am performing a benchmarking of Sn EOS with Elk and Wien2k. For this I performed several well converged calculations with default Sn species file, as well as with Sn species file with the energy values equal to the Wien2k ones. Elk results in both cases are very similar but disagree with Wien2k: for example the lattice parameter is smaller in Elk by 1.3%. Could you please tell why well converged EOS of Elk and Wien2k using the same set of parameters could disagree so significantly and what can be done to improve their agreement?
    Thank you in advance!
    Roman

     
  • J. K. Dewhurst

    J. K. Dewhurst - 2014-01-03

    Hi Roman,

    Elk often uses more semi-core local-orbitals than Wien2k. In the case of Sn, there is one present at -3.2 Ha, which is beyond the cut-off of -3 Ha which I think they use in Wien2k.

    You can either regenerate the species files with

    ecvcut
     -3.0
    

    in the 'elk/species/elk.in' file (put the ecvcut block at the top of the file), or you can modify the Sn.in file itself.

    Regards,
    Kay.

     
  • Lars Nordström

    Lars Nordström - 2014-01-04

    Dear Roman,
    I in principle agree with Kay, but I would like to add a clarifying question.
    Was spin-orbit coupling (SOC) included for the valence states in the bench-mark?
    If not there will be a large difference for relatively heavy materials as Sn – SOC is included for the core states and when some semi-core like states are moved to the valence the SOC will be ignored.
    Best,
    Lars

     
  • Roman N.

    Roman N. - 2014-01-06

    Dear Kay, Lars and all others,

    thank you very much for very prompt replies – this is exactly that one can call “very well maintained forum”!

    You are completely right that there are more semi-core local-orbitals in the default Elk species file compared to Wien2k (4p is brought to valence). Therefore, I have already calculated Elk eos with 4p in the core (equivalent to setting “ecvcut -3.0”) – there is small difference (~0.1% in lattice constant) compared to 4p in valence, but the disagreement of lattice constant with Wien2k is still more than 1%. In both Elk and Wien2k calculations core states were computed fully relativistically (i.e. with spin-orbit coupling) while valence states were computed scalar relativistically.
    To compare apple-to-apple we also run Elk & Wien2k calculations with matching parameters: PBE, kp-mesh – 16x16x16 (gamma-centered), rgkmax=9.0, gmaxvr=14.0, lmaxapw=10, Gauss smearing with swidth=0.001 Ha. Furthermore, all energy values in species file were fixed and matching (see them below). But even this set of calculations with matching input parameters gave difference in lattice constant of 0.5%.

    Could you please look on the input files given below and tell me that is done wrong in such calculations.

    Thank you very much in advance!

    Roman

    Wien2k output file at alat=11.6au (results at final iteration) (all energy values are in Ry):

    ATOMIC SPHERE DEPENDENT PARAMETERS FOR ATOM Sn1
    :e__0001: OVERALL ENERGY PARAMETER IS 0.1015
    OVERALL BASIS SET ON ATOM IS LAPW
    :E0_0001: E( 0)= -0.2220
    APW+lo
    :E1_0001: E( 1)= 0.1170
    APW+lo
    :E1_0001: E( 1)= -5.8320 E(BOTTOM)= -5.843 E(TOP)= -5.821
    LOCAL ORBITAL
    :E2_0001: E( 2)= 0.0440
    APW+lo
    :E2_0001: E( 2)= -1.2700
    LOCAL ORBITAL

    :FER : F E R M I - ENERGY(GAUSS-.M.)= 0.47495

    Elk Fermi energy output file (all energy values are in Ha) – EFERMI.OUT:
    0.2546340335

    Elk species file (energy values do not deviate more than by 0.0002 Ha from Wien2k ones, see them above; I fixed all energy values in Elk, so that the linearization energies do not move from Wien2k final ones) – Sn.in:
    'Sn' : spsymb
    'tin' : spname
    -50.0000 : spzn
    216395.0920 : spmass
    0.282843E-06 2.5000 45.4746 600 : sprmin, rmt, sprmax, nrmt
    17 : spnst
    1 0 1 2.00000 T : spn, spl, spk, spocc, spcore
    2 0 1 2.00000 T
    2 1 1 2.00000 T
    2 1 2 4.00000 T
    3 0 1 2.00000 T
    3 1 1 2.00000 T
    3 1 2 4.00000 T
    3 2 2 4.00000 T
    3 2 3 6.00000 T
    4 0 1 2.00000 T
    4 1 1 2.00000 F
    4 1 2 4.00000 F
    4 2 2 4.00000 F
    4 2 3 6.00000 F
    5 0 1 2.00000 F
    5 1 1 1.00000 F
    5 1 2 1.00000 F
    1 : apword
    0.0680 0 F : apwe0, apwdm, apwve
    0 : nlx
    5 : nlorb
    0 2 : lorbl, lorbord
    -0.0937 0 F : lorbe0, lorbdm, lorbve
    -0.0937 1 F
    1 2 : lorbl, lorbord
    0.0758 0 F : lorbe0, lorbdm, lorbve
    0.0758 1 F
    2 2 : lorbl, lorbord
    0.0393 0 F : lorbe0, lorbdm, lorbve
    0.0393 1 F
    1 3 : lorbl, lorbord
    0.0758 0 F : lorbe0, lorbdm, lorbve
    0.0758 1 F
    -2.8987 0 F
    2 3 : lorbl, lorbord
    0.0393 0 F : lorbe0, lorbdm, lorbve
    0.0393 1 F
    -0.6177 0 F

    Elk input file (most of parameters match Wien2k ones) – elk.in:
    tasks
    0

    avec
    1.0 1.0 0.0
    1.0 0.0 1.0
    0.0 1.0 1.0

    scale
    5.8

    sppath
    './'

    atoms
    1 : n species
    'Sn.in' : spfname
    2 : natoms
    0.0 0.0 0.0 0.0 0.0 0.0 : atposl, bfcmt
    0.25 0.25 0.25 0.0 0.0 0.0 : atposl, bfcmt

    ngridk
    16 16 16

    beta0
    0.05

    rgkmax
    9.0

    gmaxvr
    14.0

    lmaxapw
    10

    lmaxvr
    7

    lradstp
    4

    nempty
    4.0

    stype
    0

    swidth
    0.001

    xctype
    20

     
  • J. K. Dewhurst

    J. K. Dewhurst - 2014-01-07

    Hi Roman,

    Could you run the same calculation with LDA? I'd like to remove the complication of calculating the density gradients required for GGA.

    Regards,
    Kay.

     
  • Lars Nordström

    Lars Nordström - 2014-01-07

    Hi Roman,

    I assume you have used the same linearization energies. However I am not sure if the energy zero is exact the same, so I suggest you try to let the semi-core energies to automatically adjust (as is done in W2k), by

    1 3 : lorbl, lorbord
    0.0758 0 F : lorbe0, lorbdm, lorbve
    0.0758 1 F
    -2.8987 0 T
    2 3 : lorbl, lorbord
    0.0393 0 F : lorbe0, lorbdm, lorbve
    0.0393 1 F
    -0.6177 0 T

    In case these energies is off the resonance energy by only small energies it may result in large differences in equilibrium volume. In contrast the valence linearization energies are not so sensitive.

    Best,
    Lars

     
  • Roman N.

    Roman N. - 2014-01-07

    Dear all,

    thank you very much for interesting suggestions to improve the agreement between two codes!

    @Lars: I used Fermi energy as the energy zero, therefore the matching (between two codes) of energy values is done with respect to Ef (it is quoted in my previous post). I performed eos calculations in Elk allowing to optimize semi-core energies as you mentioned. Maximal difference between the optimized and the initial semi-core energies was about 0.06 Ha, however this resulted only in small change of total energy – by less than 0.0001 Ha. Therefore, there was no effect on the final eos.

    @Kay: LDA calculations are on the way.

    With best regards,

    Roman

     
  • Lars Nordström

    Lars Nordström - 2014-01-08

    Hi Roman,

    OK, it seems that you match Elk linearization energies to W2k, right? This is in a sense a bias, but should not matter except for semi-core states, which you claim matters little.

    The energy zeroes are usually set as the average potential in the interstitial and that is the case in Elk but I am not sure if that is true for W2k. I do not fully understand what you do with Fermi energy, but it might be OK.

    As I see it there are two points that is not yet touched upon:
    1) Are the muffin tin radii fixed to the same value in both cases? That would matter for the linearization energies as well as other parameters.
    2) The basis sets are different as I can read. In W2k it seems that you use LAPW for all l except l=0 for which you use APW+lo, and in addition 2 semi-core states for p and d. (I must admit I have little experience reading outputs from W2k, but as I see that is the logical why to interpret it)
    In elk you use APW for all l with lo for l≤2 + the same 2 semi-core states.
    It would be strange if this difference would be giving rise to a large difference in volume, but might be worth checking. It is simple to change the Elk basis to match the W2k one.

    Best regards,
    Lars

     
  • Roman N.

    Roman N. - 2014-01-10

    Dear all,
    ok, here I summarize all results below. All calculations (in Wien2k and in Elk) are done with Rmt=2.50au, 16x16x16kp, rgkmax=9.0, gmaxvr=14.0, lmaxapw=10, Gauss smearing with swidth=0.001Ha.

    Optimal lattice parameters based on Murnaghan EOS and calculated E(alat) for alat=5.8,5.9…6.5au.
    Wien2k
    4p in core, all linearization energies are allowed to optimize – 6.13au (LDA), 6.30au (PBE)
    4p in valence, all linearization energies are allowed to optimize – 6.30au (PBE)
    4p in valence, all linearization energies are fixed (except one of LO of p state) – 6.13au (LDA), 6.30au (PBE)
    Elk
    Default species file (4p in valence, LAPW) – 6.07au (LDA)
    Default species file (ecvcut=-3.0, 4p in core, APW) – 6.06au (LDA), 6.25au (PBE)
    All linearization energies are fixed to Wien2k final ones (LAPW, 4p in valence, semi-core energies are allowed to adjust (Lars’s suggestion)) – 6.07au (LDA), 6.26au (PBE)

    It looks like modifications of energies affect very little or does not affect at all EOS (which is great!), but there is still a disagreement between Wien2k and Elk lattice parameters by about 0.6-1.0%.

    Thank you, Lars, for noticing the difference in basis set (I really overlooked LAPW). I modified Sn species file accordingly (please see it below), please tell me if there are errors.
    Energy zero is set as the average potential in the interstitial in Wien2k too. Furthermore, as the Fermi energy has the same reference (energy zero), matching energy values in species file with respect to Ef would be equivalent to matching them with respect to energy zero.
    With best regards,
    Roman

    Sn.in file:
    'Sn' : spsymb
    'tin' : spname
    -50.0000 : spzn
    216395.0920 : spmass
    0.282843E-06 2.5000 45.4746 600 : sprmin, rmt, sprmax, nrmt
    17 : spnst
    1 0 1 2.00000 T : spn, spl, spk, spocc, spcore
    2 0 1 2.00000 T
    2 1 1 2.00000 T
    2 1 2 4.00000 T
    3 0 1 2.00000 T
    3 1 1 2.00000 T
    3 1 2 4.00000 T
    3 2 2 4.00000 T
    3 2 3 6.00000 T
    4 0 1 2.00000 T
    4 1 1 2.00000 F
    4 1 2 4.00000 F
    4 2 2 4.00000 F
    4 2 3 6.00000 F
    5 0 1 2.00000 F
    5 1 1 1.00000 F
    5 1 2 1.00000 F
    2 : apword
    0.0680 0 F : apwe0, apwdm, apwve
    0.0680 1 F : apwe0, apwdm, apwve
    0 : nlx
    5 : nlorb
    0 2 : lorbl, lorbord
    -0.0937 0 F : lorbe0, lorbdm, lorbve
    -0.0937 1 F
    1 2 : lorbl, lorbord
    0.0758 0 F : lorbe0, lorbdm, lorbve
    0.0758 1 F
    2 2 : lorbl, lorbord
    0.0393 0 F : lorbe0, lorbdm, lorbve
    0.0393 1 F
    1 3 : lorbl, lorbord
    0.0758 0 F : lorbe0, lorbdm, lorbve
    0.0758 1 F
    -2.8987 0 T
    2 3 : lorbl, lorbord
    0.0393 0 F : lorbe0, lorbdm, lorbve
    0.0393 1 F
    -0.6177 0 T

     
  • Lars Nordström

    Lars Nordström - 2014-01-10

    Dear Roman,

    Actually to get the W2k and Elk basis sets as close as possible I think (but as I mentioned already I am not 100% sure about the w2k output) the Elk species file should end as

    2 : LAPW for all l
    0.0680 0 F
    0.0680 1 F :
    1 : nlx except for
    0 1 : s which we use APW
    -0.0937 0 F
    3 : nlorb
    0 2 : +lo for s
    -0.0937 0 F
    -0.0937 1 F
    1 3 : Semi-core state for 4p
    0.0758 0 F
    0.0758 1 F
    -2.8987 0 T
    2 3 : Semi-core state for 4d
    0.0393 0 F
    0.0393 1 F
    -0.6177 0 T

    Best,
    Lars

     
  • J. K. Dewhurst

    J. K. Dewhurst - 2014-01-11

    Hi Roman,

    The problem is solved by increasing the matrix elements maximum angular momentum:

    lmaxmat
      7
    

    The default is lmaxmat=5, which is chosen for efficiency. I may increase this to 6 for the next release, based on your experience.

    You can also use the option

    highq
     .true.
    

    which increases all the usual suspects (including lmaxmat), and should give reliable results in most cases.

    Regards,
    Kay.

     
  • Roman N.

    Roman N. - 2014-01-15

    Dear Elk developers,
    thank you very much! lmaxmat=7 really improves the disagreement with Wien2k. Here are the results:
    parameter | alat, au | calculation time (for alat=5.8au, but it is similar for others alat)
    LDA
    lmaxmat=5 | 6.07 | 28.83
    lmaxmat=6 | 6.11 | 30.90
    lmaxmat=7 | 6.12 | 30.25
    lmaxmat=8 | 6.13 | 33.10
    highq=.true. | 6.11 | 12.72
    PBE
    lmaxmat=5 | 6.27 | 30.09
    highq=.true. | 6.28 | 17.24

    Please also note, that the setting highq=.true. decreases significantly the calculation time (for unknown reasons, maybe only for Sn, and on 16 CPUs).
    Thank you again,
    Roman

     
    • Lars Nordström

      Lars Nordström - 2014-01-15

      Good that it got settled, Roman!
      And great idea with lmaxmat, Kay.

      By the way, the times you give is that per iteration? If not what is the time per iteration, or equivalently how many iterations are needed?

      Best,
      Lars

       
  • Roman N.

    Roman N. - 2014-01-17

    Dear Kay and Lars,
    this is exactly that is strange - around 20 iterations in all cases, but such big difference in calculation time.
    Do you think that lmaxmat can be also added to the list of the most important parameters for convergence in the question 7.1 of Elk Code FAQ?
    With best regards,
    Roman

     
  • Markus

    Markus - 2014-01-17

    Roman,

    could you check the number of k-points in your calculations? highq overrides the ngridk setting by setting autokpt to true and determines a k-point mesh with radkpt=60. Probably, that's why you get shorter calculation times.

    Regards
    Markus

     
  • Roman N.

    Roman N. - 2014-01-18

    Hi Markus,
    yes, you are right - number of k-points is smaller. Ok, I have no more questions.
    Thank you!
    Roman

     
  • Lizard

    Lizard - 2017-11-08

    Hi,
    How did Roman get the value -0.0937 for s states using: E0_0001: E( 0)= -0.2220, OVERALL ENERGY PARAMETER IS 0.1015, and FER : F E R M I - ENERGY(GAUSS-.M.)= 0.47495?

    best regards
    Lizard

     
  • Andrew Shyichuk

    Andrew Shyichuk - 2020-05-06

    Dear Developers,

    In Elk 6.3.2, lmaxmat is not used any more. What have changed since then?
    What can be used instead to achieve the same effect?

    Thanks.
    Andrew

     

Log in to post a comment.