[gmx-developers] Small hack regarding dihedrals

Bogdan Costescu bcostescu at gmail.com
Wed Sep 25 23:10:19 CEST 2013

On Wed, Sep 25, 2013 at 5:29 PM, MURAT OZTURK <murozturk at ku.edu.tr> wrote:
> Is it OK to intorduce the conditional into pdihs(), and bypass even calling
> dopdihs() if r_kj  ( as reported by calling dih_angle() ) is less then
> threshold?

Yes. It makes sense to abort calculating as soon as you have enough
information to make the decision. You can place your test immediately
after calling dih_angle(), as it gives you r_jk. The code could look
like (based on your own proposal):

/* outside of the loop */
threshold2 = threshold * threshold;

for (i = 0; (i < nbonds); )
  phi = dih_angle(...)
  midDist2 = iprod(r_jk, r_jk);
  if (midDist2 > threshold2)

Please note the comparison done on the squares of distances instead of
distances, saving some CPU cycles.

Good luck!

More information about the gromacs.org_gmx-developers mailing list