[gmx-users] write velocity and coordinates with template.c
prithvi raj pandey
pandeyprithviraj at gmail.com
Fri Jul 27 11:14:30 CEST 2012
> Message: 2
> Date: Thu, 26 Jul 2012 20:56:00 +1000
> From: Mark Abraham <Mark.Abraham at anu.edu.au>
> Subject: Re: [gmx-users] Writing velocity of particles using
> template.c
> To: Discussion list for GROMACS users <gmx-users at gromacs.org>
> Message-ID: <50112240.5000109 at anu.edu.au>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> On 26/07/2012 8:22 PM, prithvi raj pandey wrote:
>> Dear gmx users,
>>
>> I am using template.c of gromacs 4.0.7 for writing my own analysis
>> tool. When I am using the fr.x[i][XX], it writes the coordinates of
>> the particles (i crosschecked it with the coordinates written by the
>> trjconv command). But the problem arises when I use fr.v[i][XX] for
>> writing the velocities of the particles or fr.f[i][XX] for writing the
>> force. The program compiles fine by using make command. But finally
>> the template stops showing segmentation fault. The main loop is as
>> follows -
>>
>> do {
>>
>> fprintf(fp,"BOX %f %f %f %f
>> \n",fr.time,fr.box[XX][XX],fr.box[YY][YY],fr.box[ZZ][ZZ]);
>>
>> for (i=0; i<top.atoms.nr; i++)
>> {
>> fprintf(fp,"Velocity at t=%8.3f : %f %f
>> %f\n",fr.time,fr.v[i][XX],fr.v[i][YY],fr.v[i][ZZ]);
>> }
>> } while(read_next_frame(status,&fr));
>>
>> Am I using the variable used for writing velocity/force wrongly?
>
> Did you verify that the trajectory has velocities, and that you read
> them, and that they're found in fr.v? Look at the code for a tool that
> reads velocities (g_velacc, I guess).
>
> Mark
>
>
Dear Mark,
I ran the g_velacc command, it works fine and writes the output .xvg
file. Also i generated a .gro containing both positions and velocity
using the trjconv command.
By this time I could wirte the velocity using template.c by changing
TRX_READ_X toTRX_READ_V and by adding *vtop in rvec in the following
section of template.c
t_topology top;
int ePBC;
char title[STRLEN];
t_trxframe fr;
rvec *xtop,*vtop;
matrix box;
int status;
int flags = TRX_READ_V;
But the problem now is it only writes velocity using the variable
fr.v[i][XX], but the coordinates are not being written by the variable
fr.x[i][XX]. I intend to use both coordinates and velocity for my
program.
It seems to that the "flags =" can only take one value. This is
because I tried to write both TRX_READ_X and TRX_READ_V under the same
flags variable, but it did not compile.
Am I doing something seriously wrong?
Prithvi Raj
More information about the gromacs.org_gmx-users
mailing list