[gmx-users] changing the code just a little bit (g_density)

Marcelo A. Carignano cari at purdue.edu
Fri Nov 18 19:27:06 CET 2005

Dear Gromacs users,

I need to modify g_density so I can calculate the density profile in
my system, but shifting the z coordenate so that one particular atom
stays fix. Let's call "A" to this atom, then I need to do (z-zA) 
before calculating to which slice the current atom belongs to.

I am working with version 3.2.1

I will appreciate if anyone of you could help me to do this right.

1) First, I copied gmx_density.c to gmx_density2.c, and this will be 
the file to modify.

2) emacs gmx_density2.c

3) In line 170, the code goes like this:

	  /* determine which slice atom is in */
	  slice = (z / (*slWidth)); 
	  sought.nr_el = 0;
	  sought.atomname = strdup(*(top->atoms.atomname[index[n][i]]));

So it must be here. I need to change the line: 	  

	slice = (z / (*slWidth)); 

by something like

	slice = ( (z-zA) / (*slWidth)); 

where zA is my reference atom. 

4) Let's say that the reference atom is the oxygen atom of an SPC water
molecule. Let's assume that this water molecule is residue number 33,
then the Oxigen is atom number 97 (=32*3+1, because Oxygen is first in
the spc.itp).

5) How should I write this line  

	slice = ( (z-zA) / (*slWidth));

so that the program will do what I want?

Many thanks, grazie mille, muito obrigado, muchas gracias, ....

	Marcelo Carignano

More information about the gromacs.org_gmx-users mailing list