[gmx-developers] how to write a xtc file in c

Dongsheng Zhang dong at pampas.chem.purdue.edu
Fri Aug 11 19:35:45 CEST 2006


Dear Yang Ye or other gmx developers,

I have finished writing the code to read and write a xtc file, but I
have trouble to compile it. from the web site:

 http://www.gromacs.org/documentation/reference/online/xtc.html

I find:

To use the library function include "xtcio.h" in your file and link with
-lgmx.$(CPU) 


Could you please tell me how to specify the link?


Thanks a lot!

Dongsheng


On Thu, 2006-08-10 at 17:39 +0800, Yang Ye wrote:
> Mark Abraham wrote:
> > Dongsheng Zhang wrote:
> >> Dear GMX developers,
> >>
> >> I want to write a xtc file to do rerun to get a special potential
> >> energy. Could you please tell me how to write a xtc file in c from a gro
> >> file (with multiple frames got from a xtc file, without velocity)? Thank
> >> you for your help!
> >
> > Read the source code - to find the right functions to call look how 
> > trjconv or something does it, then grep the src/*/*.c files for the 
> > function definition.
> >
> > Also http://www.gromacs.org/documentation/reference/online/xtc.html
> This document shall help you.
> 
> Here is basic workflow:
> 
> 1. Open XTC
> int xfile = -1;
> char *xfilename = "out.xtc";
> 
> xfile = open_xtc(xfilename, "w");
> 
> 2. Close
> if (xfile!=-1) {
>    close_xtc(xfile);
>    xfile = -1;
>    //OK
> } else {
>    //Error
> }
> 
> 3. Write XTC
> long step = -1;
> double sim_time = 0.0;
> 
> matrix mat;
> int i;
> rvec *x_data;
> double ppos[3];
> int img[3];
> int pnode;
> 
> int n_total_particles;
> 
> Particle p_data;
> 
> if (xfile==-1) {
>   //Error
> }
> 
> if (n_total_particles <1) {
>   //Error
> }
> 
> mat[0][0] = CONV_UNIT_L(box_l[0]);
> mat[0][1] = 0.0;
> mat[0][2] = 0.0;
> mat[1][0] = 0.0;
> mat[1][1] = CONV_UNIT_L(box_l[1]);
> mat[1][2] = 0.0;
> mat[2][0] = 0.0;
> mat[2][1] = 0.0;
> mat[2][2] = CONV_UNIT_L(box_l[2]);
> 
> x_data = (rvec *)malloc(sizeof(rvec)*(n_total_particles+1));
> 
> for (i = 0; i < n_total_particles; i++) {
>    x_data[i][0] = X;
>    x_data[i][1] = Y;
>    x_data[i][2] = Z;
> }
> 
> write_xtc(xfile, n_total_particles, step, sim_time, mat, x_data, 1000);
> step++;
> 
> free(x_data);
> 
> return OK;
> 
> > Mark
> > _______________________________________________
> > gmx-developers mailing list
> > gmx-developers at gromacs.org
> > http://www.gromacs.org/mailman/listinfo/gmx-developers
> > Please don't post (un)subscribe requests to the list. Use the www 
> > interface or send it to gmx-developers-request at gromacs.org.
> >
> 
> 
> 
> _______________________________________________
> gmx-developers mailing list
> gmx-developers at gromacs.org
> http://www.gromacs.org/mailman/listinfo/gmx-developers
> Please don't post (un)subscribe requests to the list. Use the 
> www interface or send it to gmx-developers-request at gromacs.org.



More information about the gromacs.org_gmx-developers mailing list