Move calling of special force functions
commit451b1a61910b63d04e137772bf6ec4a865da4241
authorBerk Hess <hess@kth.se>
Thu, 28 Sep 2017 21:01:14 +0000 (28 23:01 +0200)
committerSzilárd Páll <pall.szilard@gmail.com>
Tue, 3 Oct 2017 12:50:06 +0000 (3 14:50 +0200)
tree5d845fd7a4c8fdebbc5d179877a678450a16d450
parent4554b18591c2df9fdcd06e795eb1a24fe6fa3fea
Move calling of special force functions

All special force provider algorithm functions are now collected
in computeSpecialForces(). This function is now called before
the wait for non-bondeds on the GPU. This allows for more overlap.
The only cost is potentially one extra force buffer reduction at
steps where the virial is needed, but with PME we already do that.
To achieve this, f->f_novirsum is now always set, as the
documentation already (incorrectly) stated.

This change also simplifies both do_force routines and clarifies
where special algorithms can be called, which could now actually
be anywhere in do_force().

Change-Id: I0711a379ed3c31838ede9e55c4cd5d0a95e967fd
src/gromacs/mdlib/forcerec.cpp
src/gromacs/mdlib/sim_util.cpp