Menu

Energy between each ionic step is not converging

satish
2014-12-14
2014-12-15
  • satish

    satish - 2014-12-14

    Hello JDFTx users

    I am trying to optimize the following system (H atom adsorption on Pt slab). Following is my input file.

    dump-name h-ads-551kpoints.$var

    lattice \
    5.5437171645025325 2.7718585822512662 0.00 \
    0.00 4.8009998958550284 0.00 \
    0 0 24.5264261104466676

    latt-scale 1.889725989 1.889725989 1.889725989

    Pseudopotential and atom positions:

    ion-species /home/satish/build/pseudopotentials/GBRV/pt_pbe_v1.uspp
    ion-species /home/satish/build/pseudopotentials/GBRV/h_pbe_v1.uspp
    coords-type lattice
    ion Pt 0.166668149286450 0.166668149286450 0.404721824023872 0
    ion Pt 0.666663701427094 0.166668149286450 0.404721824023854 0
    ion Pt 0.166668149286450 0.666663701427094 0.404721824023854 0
    ion Pt 0.666666666666664 0.666666666666664 0.404728023752342 0
    ion Pt 0.791416979753731 0.355011538140164 0.523900907638908 1
    ion Pt 0.325668028774064 0.337165985612972 0.488679988044663 1
    ion Pt 0.791416979753789 0.853571482106084 0.523900907638908 1
    ion Pt 0.328216232910303 0.835891883544851 0.570258910494264 1
    ion Pt 0.178736332814382 -0.089368166407191 0.678358126225441 1
    ion Pt 0.728002317953115 -0.108842855628629 0.633208763433907 1
    ion Pt 0.172969286450047 0.413515356774976 0.591825080426663 1
    ion Pt 0.728002317953185 0.380840537675478 0.633208763433889 1
    ion H 1.110180943205115 -0.055090471602561 0.741432177588171 1

    Brillouin zone sampling

    kpoint-folding 5 5 1
    kpoint 0 0 0 1

    ionic-minimize \
    dirUpdateScheme L-BFGS \
    linminMethod DirUpdateRecommended \
    nIterations 100

    electronic-scf

    elec-ex-corr gga-pbe
    dump End State Ecomponents

    elec-n-bands 130
    elec-fermi-fillings 0 0.01

    When I grep "IonicM" following is printed. So my question is regarding the convergence. The change in energy (grad_K ?) for subsequent ionic step is not reducing. Do you think it is going fine?

    IonicMinimize: Iter: 0 F: -1067.480398063887606 |grad|_K: 8.152e-03
    IonicMinimize: Iter: 1 F: -1067.482091266268981 |grad|_K: 7.292e-03 alpha: 1.000e+00 linmin: -8.070e-01
    IonicMinimize: Iter: 2 F: -1067.496432905347547 |grad|_K: 6.654e-03 alpha: 1.000e+00 linmin: -3.693e-01
    IonicMinimize: Iter: 3 F: -1067.512389043466555 |grad|_K: 9.445e-03 alpha: 1.000e+00 linmin: -2.144e-01
    IonicMinimize: Iter: 4 F: -1067.521244522035886 |grad|_K: 1.967e-02 alpha: 1.000e+00 linmin: 9.677e-02
    IonicMinimize: Iter: 5 F: -1067.545923164130045 |grad|_K: 9.360e-03 alpha: 1.000e+00 linmin: -2.011e-01
    IonicMinimize: Iter: 6 F: -1067.557856462729433 |grad|_K: 7.450e-03 alpha: 1.000e+00 linmin: -5.338e-01
    IonicMinimize: Iter: 7 F: -1067.574370021649202 |grad|_K: 8.208e-03 alpha: 1.000e+00 linmin: 8.976e-02
    IonicMinimize: Wolfe criterion not satisfied: alpha: 1 (E-E0)/|gdotd0|: 0.494898 gdotd/gdotd0: -2.03784 (taking cubic step)
    IonicMinimize: Iter: 8 F: -1067.579574988117884 |grad|_K: 7.115e-03 alpha: 3.398e-01 linmin: -1.096e-02
    IonicMinimize: Iter: 9 F: -1067.585946618954495 |grad|_K: 8.432e-03 alpha: 1.000e+00 linmin: -3.722e-02
    IonicMinimize: Iter: 10 F: -1067.593360314359870 |grad|_K: 6.634e-03 alpha: 1.000e+00 linmin: -3.104e-01
    IonicMinimize: Iter: 11 F: -1067.602324667437870 |grad|_K: 1.030e-02 alpha: 1.000e+00 linmin: 7.668e-03
    IonicMinimize: Iter: 12 F: -1067.609160116464182 |grad|_K: 8.651e-03 alpha: 1.000e+00 linmin: -2.552e-01
    IonicMinimize: Iter: 13 F: -1067.615741723216161 |grad|_K: 6.852e-03 alpha: 1.000e+00 linmin: 7.153e-02
    IonicMinimize: Iter: 14 F: -1067.618447450570102 |grad|_K: 4.536e-03 alpha: 1.000e+00 linmin: 2.897e-01
    IonicMinimize: Iter: 15 F: -1067.620875765413530 |grad|_K: 2.550e-03 alpha: 1.000e+00 linmin: -3.135e-01

    Also here I am using electronic-scf. Is there a way to know if electronic-scf will be more stable than the default one or is it just a trial and error?
    Thank you for any help.

     
  • Ravishankar Sundararaman

    Hi Satish,

    I visualized your initial geometry and it does not seem to be correct: there are large voids inside the Pt slab. Perhaps that is why you are encountering difficulty relaxing the geometry.

    As for the electronic algo, the default one is the stable but slower method. It will always converge given enough iterations. The electronic-SCF is the method that requires more care. It is usually faster, but can be tricky to converge for metallic slab systems due to charge sloshing instabilities. You can reduce the mixFraction to aid convergence: the default value of 0.5 is aggressive and converges most systems rapidly, but can become unstable for large metal slabs. You can try reducing that to 0.1 if you notice your SCF energy oscillating or diverging.

    But in your present case, I think your issue is the invalid geometry. If you converted the geometry from other codes, did you account for the fact that the lattice vectors are along columns and not rows in the JDFTx input?

    Cheers,
    Shankar

     
  • satish

    satish - 2014-12-15

    Hi Shankar

    Yes I do remember that column vectors are lattice vectors. But sorry about that, something else went wrong with the geometry. Thanks for pointing that out and for the additional information on electronic algorithms.