[gmx-developers] innerc to forcebuf: Energy is still zero

Erik Lindahl lindahl at stanford.edu
Fri Apr 5 19:33:38 CEST 2002


Hi,

>
>
>Problem is, I don't get the pair-potential energies (they are zero all
>the time) in output files for bham and new interaction. Strange thing is
>I didn't even touch bham loops. Moreover,
>print statements at inner loop for vnbtot gives no-zero values at all. 
>

vnbtot and vctot are only the temporary variables used in the innermost 
loop; at the
end of the outer loop the are assigned to Vc(ggid) and Vnb(ggid), where 
ggid is the group
index. If you only have one energy group ggid=0.

Check that these two variables are non-zero, and if that's the case you 
can also check
in fnbf.c (after calling the inner loop) that the corresponding arrays 
egnb(ggid)
and egcoul(ggid) have the energy.

>
>I have checked in may places that energy arrays are zero.(a 14,15th
>members where defined as bham and new pot's energies)
>- before and after or inside: do_fnbf(), do_force(), sum_epot() 
>  grps->estat.ee[egBHAM] and   ener[i]
>- identical input files with original GROMACS code gives energies
>properly as expected :-)
>
>Apparently, either energies do not passed properly from inner loops or I
>made
>some error in modification that affects this mechanism.
>
>How could I put a print statements in outer-loops? Cos, what I did for
>innerloops is
>defining new function(simple print statement) and use this function with
>assign() in
>mkinl routines.In outher loops this strategy didn't work cos compiler
>complains about conflicting data types.
>

What I usually do when I debug is that I first create the inner loop in 
C or Fortran
by going to gmxlib and issuing e.g 'make innerc.c'. Then I can edit the 
loops I
want like a normal routine, and when you issue 'make' again the modified 
loop will
be newer than the source files used to create it, so it will not be 
overwritten.

Cheers,

Erik







More information about the gromacs.org_gmx-developers mailing list