[QE-users] Questions related to vibrational analysis (for both molecule and adsorbate)--update

Stefano de Gironcoli degironc at sissa.it
Tue Mar 17 16:08:17 CET 2020


On 17/03/20 15:46, Paolo Giannozzi wrote:
> On Mon, Mar 16, 2020 at 1:53 AM Shen, Ziheng <zshen83 at gatech.edu 
> <mailto:zshen83 at gatech.edu>> wrote:
>
>
>     1) May I ask is there any literature that can prove it’s feasible
>     to neglect the small frequencies?
>
>
> no idea, but you can easily verify whether the neglect of almost-zero 
> frequencies has any effect: if you impose the ASR on dynamical 
> matrices, only frequencies of translational modes (and of rotational 
> ones for a molecule) should change, while all other frequencies should 
> stay almost the same.
>
>     2) I saw you also replied to others that “nat_todo” does not make
>     any sense, but there were still people claimed that they got some
>     useful results. I read from some books (like the one written by
>     D.Sholl) saying that it’s possible to calculate only frequencies
>     of adsorbates which could save computational resources. Some other
>     ab initial calculation software (like VASP) also have similar
>     functions to calculate adsorbates only. Why is “nat_todo” not
>     working here?
>
>
> Presumably it doesn't work because it is not sufficient to just ignore 
> all surface atoms and compute the dynamical matrix restricted to 
> adsorbate atoms only. I guess there are tricks to approximated phonons 
> for an adsorbate on a surface by computing a  "reduced" dynamical 
> matrix for the adsorbate only, in which the information on the 
> adsorbate-surface interactions is "refolded",  but I don't know any. 
> This same question has been asked over and over again in the list and 
> nobody (that I remember) ever gave an answer.
>
> Paolo
>
I think that if you have light atoms adsorbed on some heavier material 
and are looking for the adsorbate related frequencies then you can 
diagonalize the reduced matrix and the frequencies that you obtain 
should be variational upper bounds to the real ones....

just pretend you computed the whole matrix but restrict the atomic 
motion to a subset of atoms... so to the extent the modes are localized 
on the adsorbate with little involvement of the substrate you should be 
ok...

but the low lying frequencies (the ones resonant with the substrate 
modes) will be completely wrong.


one could start with nat_todo equal to just the adsorbate and then the 
first shell, then the second one ... and see  how things converge ...

another option (better, but would need some ad hoc coding) would be to 
build the dynmat of the nat_todo atoms with interatomic force constants 
for the rest of the cell borrowed from some model (the bulk, or the 
clean surface) ... and again monitor the convergence as you include more 
and more shells  of atoms in the nat_todo.


stefano



> Best regards
> Ziheng Shen
> PhD student @ Georgia Institute of Technology
>
>> On Mar 15, 2020, at 7:00 AM, users-request at lists.quantum-espresso.org 
>> <mailto:users-request at lists.quantum-espresso.org> wrote:
>>
>> On Fri, Mar 13, 2020 at 4:22 AM Shen, Ziheng <zshen83 at gatech.edu 
>> <mailto:zshen83 at gatech.edu>> wrote:
>>
>> 1) When doing frequency analysis for molecules, I expected to get zero or
>>> extremely small value for the first six frequencies (i.e. 
>>> translational &
>>> rotational modes). According to suggestions from those previously posted
>>> problems, I tried to apply more restrict convergence thresholds and 
>>> ASR. It
>>> seems that ASR help a lot to reduce the number. But I still got 
>>> frequencies
>>> at ~50 level. Is it possible to completely remove those small values? Or
>>> are those values small enough to be neglected?
>>>
>>
>> They are small enough to be neglected. They can be removed by 
>> applying the
>> ASR to the computed dynamical matrix. See the various kinds of ASR in 
>> codes
>> "dynmat" and "matdyn", in particular the "zero-dim" one. Note that  more
>> sophisticated ASR than "simple" can be surprising slow.
>>
>> 2) My ultimate goal is to perform frequency analysis for adsorbate so 
>> that
>>> I can both determine transition state structures and apply ZPE 
>>> corrections.
>>> I tried to use ?nat_todo? to fix the surface atoms and only did 
>>> calculation
>>> for adsorbate (CH in my case). I got crazy result (~10000 cm-1) when 
>>> using
>>> large tr2_ph, and got improved results when I decrease the 
>>> threshold. But I
>>> still got fairly large translational & rotational frequencies like below
>>>
>>
>> I don't think you will obtain anything sensible by fixing the surface 
>> atoms
>> and making the calculation for the adsorbate atoms  only
>>
>> Paolo
>>
>>
>>>
>>>  freq (    1) =     -25.618746 [THz] =    -854.549399 [cm-1]
>>>     freq (    2) =      -7.333895 [THz] =    -244.632409 [cm-1]
>>>     freq (    3) =      -6.696884 [THz] =    -223.383991 [cm-1]
>>>     freq (    4) =      -6.248674 [THz] =    -208.433322 [cm-1]
>>>     freq (    5) =      -4.947831 [THz] =    -165.041892 [cm-1]
>>>     freq (    6) =      -2.014699 [THz] =     -67.203109 [cm-1]
>>>     freq (   37) =       0.571458 [THz] =      19.061786 [cm-1]
>>>     freq (   38) =       5.754719 [THz] =     191.956759 [cm-1]
>>>     freq (   39) =      16.488930 [THz] =     550.011494 [cm-1]
>>>     freq (   40) =      16.563150 [THz] =     552.487199 [cm-1]
>>>     freq (   41) =      18.255969 [THz] =     608.953585 [cm-1]
>>>     freq (   42) =      56.121326 [THz] =    1872.005923 [cm-1]
>>>
>>> What does negative translational frequencies indicate, is it possible to
>>> eliminate these imaginary numbers (like using more restrict threshold)?
>>> And does my result indicate that my structure is most probably not a
>>> transition state since all the other frequencies are positive?
>>>
>>> I?m attaching the input file of pw.x &ph.x below:
>>> =========================scf input, structure obtained from
>>> neb.x========================
>>> &CONTROL
>>>  Calculation='scf',
>>>  restart_mode='from_scratch',
>>>  prefix         = "Ni_ch_ts"
>>>  outdir         = "./ts/tmp",
>>>  pseudo_dir     = "./pseudo",
>>>  tstress        = .true.
>>>  verbosity      = 'high'
>>>  tefield      = .true.
>>>  dipfield     = .true.
>>> /
>>> &SYSTEM
>>>  ibrav                  = 0,
>>>  nat                    = 14,
>>>  ntyp                   = 3,
>>>  ecutwfc                = 65,
>>>  ecutrho                = 650,
>>>  Occupations='smearing',
>>>  smearing='mp',
>>>  degauss=0.01,
>>>  nspin=2,
>>>  starting_magnetization(1)=0.2,
>>>  eamp        = 0.0
>>>  edir        = 3
>>>  emaxpos     = 0.95
>>>  eopreg      = 0.05
>>> /
>>> &ELECTRONS
>>>  electron_maxstep=250,
>>>  conv_thr    = 1.D-10,
>>>  mixing_beta = 0.1,
>>> /
>>>
>>> ATOMIC_SPECIES
>>> Ni 58.69 ni_pbe_v1.4.uspp.F.UPF
>>> C  12    C.pbe-n-kjpaw_psl.1.0.0.UPF
>>> H  1     H.pbe-kjpaw_psl.1.0.0.UPF
>>> CELL_PARAMETERS { angstrom }
>>>
>>>        4.9667177200         0.0000000000         0.0000000000
>>>        2.4833588600         4.3013037190         0.0000000000
>>>        0.0000000000         0.0000000000         20.000000000
>>>
>>> ATOMIC_POSITIONS { angstrom }
>>> Ni    0.0000000000    0.0000000000    7.9723500000
>>> Ni    1.2416800000    2.1506500000    7.9723500000
>>> Ni    2.4833600000    0.0000000000    7.9723500000
>>> Ni    3.7250400000    2.1506500000    7.9723500000
>>> Ni    2.4833600000    1.4337700000   10.0000000000
>>> Ni    3.7250400000    3.5844200000   10.0000000000
>>> Ni    4.9667200000    1.4337700000   10.0000000000
>>> Ni    6.2084000000    3.5844200000   10.0000000000
>>> Ni    1.2281125212    0.7413038538   12.1124602290
>>> Ni    2.4833613443    2.9495126082   12.0722664849
>>> Ni    3.7386101535    0.7413040204   12.1124604793
>>> Ni    4.9667205066    2.8946406480   11.9560276983
>>> C    2.4833610952    1.4972020489   13.1166864267
>>> H    2.4833559794    3.1940064219   13.5465576823
>>>
>>> K_POINTS { automatic }
>>> 6 6 1 0 0 0
>>>
>>> =======================================ph.x
>>> input=======================================
>>> phonons of CH on metal Ni at Gamma
>>> &inputph
>>> tr2_ph=1.0d-16,
>>> prefix='Ni_ch_ts',
>>> epsil=.false.,
>>> amass(1)=58.69,
>>> amass(2)=12.011,
>>> amass(3)=1.0,
>>> alpha_mix(1)=0.1,
>>> outdir='./tmp/',
>>> fildyn='CH.dynG',
>>> nat_todo= 2,
>>> /
>>> 0.0 0.0 0.0
>>> 13 14
>>>
>>>
>>> Thanks in advance for anyone that could give suggestions to me!
>>>
>>> Best regards
>>> Ziheng Shen
>>> PhD student @ Georgia Institute of Technology
>
>     _______________________________________________
>     Quantum ESPRESSO is supported by MaX
>     (www.max-centre.eu/quantum-espresso
>     <http://www.max-centre.eu/quantum-espresso>)
>     users mailing list users at lists.quantum-espresso.org
>     <mailto:users at lists.quantum-espresso.org>
>     https://lists.quantum-espresso.org/mailman/listinfo/users
>
>
>
> -- 
> Paolo Giannozzi, Dip. Scienze Matematiche Informatiche e Fisiche,
> Univ. Udine, via delle Scienze 208, 33100 Udine, Italy
> Phone +39-0432-558216, fax +39-0432-558222
>
>
> _______________________________________________
> Quantum ESPRESSO is supported by MaX (www.max-centre.eu/quantum-espresso)
> users mailing list users at lists.quantum-espresso.org
> https://lists.quantum-espresso.org/mailman/listinfo/users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quantum-espresso.org/pipermail/users/attachments/20200317/d5c381f4/attachment.html>


More information about the users mailing list