Hybrid pair_style question

Hey all,

I have two scripts that differ only by the pair_style pair_coeff:

pair_style hybrid eam/fs tersoff
pair_coeff * * tersoff ${potentials}/TSCBOP2.tersoff Ti C Si Ti
pair_coeff * * eam/fs ${potentials}/Ti2.eam.fs NULL NULL NULL Ti
pair_style hybrid eam/fs tersoff tersoff
pair_coeff * * tersoff 1 ${potentials}/TSCBOP2.tersoff Ti C Si Ti
pair_coeff * * tersoff 2 ${potentials}/TSCBOP2.tersoff Ti C Si NULL
pair_coeff * * eam/fs ${potentials}/Ti2.eam.fs NULL NULL NULL Ti

The ultimate goal is to define the (123x123) and (123x4) interactions through separate tersoff potentials, but in this case I expect the interactions to be identical as I test my hybrid configuration. However the predicted energy differs substaintially, especially the (123x4) interactions.

Is there an error in my understanding of the hybrid style? Is there a better way to debug this other than sprinking printfs through pair_hybird.cpp? That methods seems to indicate the styles are assigned as I intended, but still the calculations differ.

When you have manybody potentials, you must not have overlap between which atom types are mapped to what potential. So both blocks are incorrect. More importantly, when combining multiple manybody potentials, the potential that acts between the atom types for the different potentials must be a pairwise additive potential.
Finally, when using EAM potentials in a hybrid configuration, they will act as if there are no atoms outside their subgroup because the embedding energy term depends on the density of neighboring atoms, however only atom types mapped to the EAM pair style will be considered.
Subsequent assignments will wipe out previous ones.

Thanks for your response.

If I am understanding you (and the docs) correctly, the only way to go about this would be to define manybody interactions for the two constituient phases and then define e.g. a LJ interaction between them? That is, in general what I am trying to accomplish, a manybody interaction defined only between the two phases but not within them, is not possible.

Yes, and the atoms in each phase have to have different atom types. In the pair_coeff commands each atom type may be mapped to only one substyle. your inputs have been violating that specific condition. then unexpected results may happen.