Hello,
I am trying to understand the source code of the UFF force field in OpenBabel (version 2.3.2) and I think I may have found a bug. Precisely, I am looking at the file forcefielduff.cpp and the function SetupCalculations() and torsion calculations inside it. When you set torsion parameters for two sp3 atoms in the middle bond, you have an exception for a pair of group 6 sp3 atoms (comment "// exception for a pair of group 6 sp3 atoms"). And I think there may be a bug: in the original paper (Rappe et al, 1992, p.10028, second column, almost the end) they say "for a single bond involving a pair of group 6 sp3 atoms eq 16 is used with Vj=2 kcal/mol for oxygen and Vj=6.8 kcal/mol for the remaining group 6 elements". And in your implementation, to set the specific parameters 2 and 6.8 for Vj, you check these atoms on belonging to the group 6 SEPARATELY and not the fact that BOTH of them are group 6. This gives different results (bond angles, bond lengths) for some molecules (for example tetrahydroselenophene).
Do you agree with that (and in this case is it possible to fix it in OpenBabel?) or do I misunderstand the UFF paper? or maybe there is another explanation for you to do so (in this case, could you please address me to corresponding literature)?
Best regards,
Svetlana