What's actually going on when using both Tersoff & AIREBO potential

Dear all,

I’m simulating physical vapor deposition process of carbon atoms, onto silicon substrate.

I used Tersoff potential for describing interactions between C and Si,

but recently I changed to use both Tersoff and AIREBO, just by chance.

Hi
Airebo does not exactly describe C- C bonds as does Tersoff do.
Regards
Pascal

Dear all,

I’m simulating physical vapor deposition process of carbon atoms, onto silicon substrate.

I used Tersoff potential for describing interactions between C and Si,

but recently I changed to use both Tersoff and AIREBO, just by chance.


pair_style hybrid tersoff airebo 3.0

pair_coeff * * tersoff SiC.tersoff C Si

pair_coeff * * airebo CH.airebo C NULL


Actually it works (looks) fine, but I know for C-C interaction, both potential must be applied.

Also the result is different compared to the models with only Tersoff.

I wondering what is exactly going on for this case.

what you have here is undefined behavior. in the usual logic applied when processing pair_coeff statements, the airebo line should wipe out the C part of the tersoff, i.e. it should be equivalent to:

pair_style hybrid tersoff airebo 3.0
pair_coeff * * tersoff SiC.tersoff NULL Si

pair_coeff * * airebo CH.airebo C NULL

but it is not. in this variant LAMMPS will (correctly) complain about missing interactions for “pair_coeff 1 2”, which doesn’t happen in the example above.

however, this logic works the other way around:

pair_style hybrid tersoff airebo 3.0

pair_coeff * * airebo CH.airebo C NULL
pair_coeff * * tersoff SiC.tersoff C Si

here the tersoff line wipes out the airebo line and LAMMPS will complain about one of the hybrid styles not being used (airebo).

rather it turns out, that your “chance” input is equivalent to:

pair_style hybrid/overlay tersoff airebo 3.0

pair_coeff * * tersoff SiC.tersoff C Si

pair_coeff * * airebo CH.airebo C NULL

which is definitely not what you want, as it counts the C-C, and C-C-C interactions twice

this behavior should be considered a bug in LAMMPS, but i don’t know how to address this consistently without breaking accepted correct behavior.

axel.

Dear Dr. Axel Kohlmeyer,

Thank you for your kind description of my case.

The problem is that both Tersoff and AIREBO potential include three-body terms in their equations,

But LAMMPS does not allow three-body manners in pair_coeff command.

i.e.,

not * * *, but * * in the command.

I think that’s the reason why LAMMPS only accept * * for tersoff and airebo instead of specific atom types.

But is there any way to describe C and Si with both Tersoff and AIREBO?

Si Si Si -> Tersoff

Si Si C -> Tersoff

Si C C -> Tersoff

C C C -> AIREBO

Sincerely.

Dear Dr. Axel Kohlmeyer,

Thank you for your kind description of my case.

The problem is that both Tersoff and AIREBO potential include three-body terms in their equations,

But LAMMPS does not allow three-body manners in pair_coeff command.

i.e.,

not * * *, but * * in the command.

I think that’s the reason why LAMMPS only accept * * for tersoff and airebo instead of specific atom types.

But is there any way to describe C and Si with both Tersoff and AIREBO?

Si Si Si -> Tersoff

Si Si C -> Tersoff

Si C C -> Tersoff

C C C -> AIREBO

no.

Dear Dr. Axel Kohlmeyer,

Thank you for your kind description of my case.

The problem is that both Tersoff and AIREBO potential include three-body terms in their equations,

But LAMMPS does not allow three-body manners in pair_coeff command.

i.e.,

not * * *, but * * in the command.

I think that’s the reason why LAMMPS only accept * * for tersoff and airebo instead of specific atom types.

But is there any way to describe C and Si with both Tersoff and AIREBO?

Si Si Si -> Tersoff

Si Si C -> Tersoff

Si C C -> Tersoff

C C C -> AIREBO

Sincerely.

Hi
In this case, is the following correspond to your whish ?

pair_style hybrid tersoff airebo 3.0

pair_coeff * * tersoff SiC.tersoff C Si

pair_coeff 1 1 airebo CH.airebo C NULL

So only C C C are treated by airebo ?

manybody potentials must use the “pair_coeff * *” syntax. but even if "pair_coeff 1 1 " would be allowed, its effect would be the same as with pair_coeff * *.
the problem causing the double counting is the tersoff line.

besides, since all multiple interactions are derived from the pairwise interactions, the airebo line would alway include all C-C, C-C-C, and C-C-C-C interactions.
mixing these with tersoff Si-Si, Si-C, Si-Si-Si, Si-Si-C, Si-C-Si, Si-C-C, and C-Si-C would be inconsistent and produce bogus results. why not just tinker with the parmeters in the potential file right away?? it is about as reliable as hacking together an inconsistent force field via pair style hybrid.

in general, when using a hybrid pair style one has to be very careful how to combine force fields. the errors are the smallest, when each different pair substyle describes a separate object. assigning different substyles to different atoms in the same object is asking for trouble, especially with manybody potentials.
but also when using “regular” classical potentials with lj and charges, one cannot easily mix different force fields, that have a different way to determine the balance between charges and LJ interactions and/or use different mixing rules to determine parameters of mixed pairs. and don’t even get me started on how problematic using reaxff in a hybrid pair style would be.

in short, there are many ways to have syntactically correct hybrid pair style definition. the input may even run without crashing, but there are a lot of ways, to still get bogus results.

axel.

Hi Alex
Thanks a lot for this very highlighting clarification.
Yes it is better to have relevant force field parameters.
Such hybrid way could only works if incoming C atoms are slightly bonded to silicon (which is not the case using Tersoff potential) while C-C bonding are stronger. As for graphene growth on silicon. There is an experimental recent study on such a possible growth.

Regards

Hi
In this case, is the following correspond to your whish ?

pair_style hybrid tersoff airebo 3.0

pair_coeff * * tersoff SiC.tersoff C Si

pair_coeff 1 1 airebo CH.airebo C NULL

So only C C C are treated by airebo ?

manybody potentials must use the “pair_coeff * *” syntax. but even if "pair_coeff 1 1 " would be allowed, its effect would be the same as with pair_coeff * *.
the problem causing the double counting is the tersoff line.

besides, since all multiple interactions are derived from the pairwise interactions, the airebo line would alway include all C-C, C-C-C, and C-C-C-C interactions.
mixing these with tersoff Si-Si, Si-C, Si-Si-Si, Si-Si-C, Si-C-Si, Si-C-C, and C-Si-C would be inconsistent and produce bogus results. why not just tinker with the parmeters in the potential file right away?? it is about as reliable as hacking together an inconsistent force field via pair style hybrid.

in general, when using a hybrid pair style one has to be very careful how to combine force fields. the errors are the smallest, when each different pair substyle describes a separate object. assigning different substyles to different atoms in the same object is asking for trouble, especially with manybody potentials.
but also when using “regular” classical potentials with lj and charges, one cannot easily mix different force fields, that have a different way to determine the balance between charges and LJ interactions and/or use different mixing rules to determine parameters of mixed pairs. and don’t even get me started on how problematic using reaxff in a hybrid pair style would be.

in short, there are many ways to have syntactically correct hybrid pair style definition. the input may even run without crashing, but there are a lot of ways, to still get bogus results.

axel.