[gmx-developers] fshift
Erik Lindahl
lindahl at stanford.edu
Fri Jun 6 20:51:14 CEST 2003
Hi,
On Friday, June 6, 2003, at 08:28 AM, David wrote:
> On Fri, 2003-06-06 at 20:30, Daniele Bemporad wrote:
>> Hi all, hi David
>> In the previous e-mail I forgot to also ask about "fshift[is3]" in
>> innerc.c and its arguments is3, is3+1, is3+2.
>> The problem is that if I change the calculation of the force and I
>> update
>> the variable "f [atom number] [x, y or z axis]" , I get NO effect on
>> the
>> atomic positions, unless I also update this (still mysterious to me)
>> variable "fshift". What is this about ? Can please anybody tell me
>> what
>> exactly the 2 elements of the array are in bonded and non-bonded
>> interactions: fr->fshift[1st_element][2nd_element] ?
>
> If your modification has no effect, then you may be using another
> routine than you think you are (there are > 70 different innerloop
> routines). Bonded forces are somewhat more straightforward.
>
>
I think this was for bondfree.c, so it's only bonded interactions.
One subtle detail is that we often reference the array as
one-dimensional in the core routines for performance reasons. Thus,
instead of doing
fr->fshift[is][YY] = ....
we often cast the array to a float pointer and do
is3=3*is
fr->fshift[is3+YY]= ...
This avoids a pointer dereference, and saves multiplications when
updating both X,Y,Z dimensions.
Cheers,
Erik
More information about the gromacs.org_gmx-developers
mailing list