[lammps-users] Tersoff i-k cutoff parameters for alloys?

Hi all, bear with me… this may get confusing.

In the Tersoff potential for alloys, the bond order term requires the calculation of the cutoff function using the i-k parameters and separation (of question here is interactions like this: i-j-k = Si-Si-C). However, the way the potential input file is written, the values for the cutoffs (R and D) provided should be the i-j ones, and there is no separate value for the i-k set (and the code doesn’t seem to hunt these down in the parameter file.

The provided files seem to just use the same cutoff for the Si-Si-C type interaction as would be used for Si-C-Si - but this doesn’t seem to hold based on the way that Tersoff wrote the formulation. The Si-Si cutoff values are 2.85 +/- .15 and the Si-C cutoff is 2.36 +/- .15 - so I would figure this could lead to some differences when the structure begins to deform a fair bit. In my past simulations I had been using the 2.85 value in the Si-Si-C interactions. Curious if anyone knows if this makes a big difference in behavior - or if it may be worth adding in the extra cutoff parameters to the parameter file line?



David E. Farrell

Graduate Student

Mechanical Engineering

Northwestern University

email: d-farrell2@…435…

The way code is written, for a cluster, the two body parameters come from i-j-j set and 3 body parameters come from i-j-k set.

For eg. Si-Si-C interaction, 2-body parameters come from Si-Si-Si set and 3-body parameters come from Si-Si-C. So, for Si-Si-C cluster, R (2.36) for i-k comes form Si-Si-C set, but for R i-j (2.85) it comes from Si-Si-Si set.

For Si-C-Si interaction, 2-body parameters will come from Si-C-C set and 3-body parameters will come from Si-C-Si. So, for this cluster, R i-k will come from Si-C-Si which is 2.85. But 2-body interaction Ri-j will come from Si-C-C set which is 2.36.


I'll CC this to Aidan to see if he has any additional comments
beyond those of Rutuparna.


Ah, OK - I guess I had been misunderstanding the docs and didn’t look as carefully as I should have at the code.




I think your confusion may be due to the fact that R and D are both two-body
and three-body parameters, but they can have different values in both cases.
The statements that Rutupurna made are all correct. The key lines of code
confirming this are:

    zeta_ij += zeta(&params[iparam_ijk],rsq1,rsq2,delr1,delr2);

and later:

double PairTersoff::zeta(Param *param, double rsqij, double rsqik,
             double *delrij, double *delrik)
  return ters_fc(rik,param) * ters_gijk(costheta,param) * ex_delr;

This behavior matches the equation for zeta_ij given in the pair_tersoff
documentation, which in turn are consistent with the Tersoff alloy paper,
Tersoff_2 in the documentation.

I will add that it is possible to think up modified expressions for zeta_ij
that can not be handled by the current code, e.g. combining the ij and ijk
cut-offs in a non-linear way. Something like this happened for
Stillinger-Weber. The solution is quite simple; just add any extra
parameters to the argument list for zeta() as needed:

double PairTersoff::zeta(
Param *param_ij, Param *param_ik, Param *param_ijk,