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

Yang Ye leafyoung81-group at yahoo.com
Sun Aug 13 15:48:20 CEST 2006


Okay. please send me off-list.

You may go without the Makefile, just type
$ gcc accessXtc.c -o a.out -I... -L... -lgmx -lm

Yang Ye

Dongsheng Zhang wrote:
> Dear Yang ye,
>
> Bothe libgmx.la and libgmx.a are under /hield/lib . and all .h files are
> under /hield/include/gromacs
>
>
> Do you have any idea why compiler gave those error message?( such as
> undefined reference to `close_xtc )
>
>
> If you want, I can give you my code ( it is short), you can try to
> compile it in your machine.
>
>
>
> Thank you for your help!
>
> Dongsheng
>
>
>  On Sun, 2006-08-13 at 15:34 +0800, Yang Ye wrote:
>   
>> my mistake, shall be libgmx.la and libgmx.a
>>
>> Yang Ye
>>
>> Dongsheng Zhang wrote:
>>     
>>> Dear Yang Ye,
>>>
>>>
>>> The problem is I can't find libgmx.o anywhere. I have tried to use find
>>> command to search it. Could you please tell me where it supposes to be
>>> after gromacs installed?
>>>
>>>
>>>
>>> All the best!
>>>
>>> Dongsheng
>>>
>>>
>>> On Sat, 2006-08-12 at 22:19 +0800, Yang Ye wrote:
>>>   
>>>       
>>>> Hi, Dong sheng
>>>>
>>>> It wasn't the problem of "Append -lgmx to LIBS". The parameters required by GCC are to be spread into different variable to make it clearer.
>>>>
>>>> Your current Makefile doesn't make LDFLAGS work.
>>>>
>>>> Try this
>>>>
>>>> CC=gcc
>>>> CFLAGS=-c -Wall -I/hielo/include/gromacs
>>>> LDFLAGS=-L/hielo/lib
>>>> LIBS=-lgmx -lm
>>>>
>>>> all: xtc
>>>>
>>>> xtc:
>>>> 	$(CC) $(CFLAGS) ${LDFLAGS} ${LIBS} accessXtc.c -o accessXTC
>>>>
>>>> 	
>>>>
>>>> Make sure that under /hield/lib, there is libgmx.o and under 
>>>> /hielo/include/gromacs, there are all the .h files.
>>>>
>>>> Yang Ye
>>>>
>>>> Dongsheng Zhang wrote:
>>>>     
>>>>         
>>>>> Dear Yang Ye,
>>>>>
>>>>> Thank you very much for your great help to give me the basic work flow.
>>>>> I still have trouble to compile my file accessXtc.c. the following is my
>>>>> simple Makefile:
>>>>>
>>>>>
>>>>> CC=gcc
>>>>> CFLAGS=-c -Wall -I/hielo/include/gromacs
>>>>> LDFLAGS=-L/hielo/lib
>>>>> LIBS=-lgmx 
>>>>>
>>>>> all: xtc
>>>>>
>>>>> xtc: xtc.o
>>>>> 	gcc xtc.o -o a.out
>>>>> xtc.o: accessXtc.c
>>>>> 	$(CC) $(CFLAGS) $(LIBS)  accessXtc.c -o xtc.o
>>>>>
>>>>>
>>>>> I believe I miss your fourth point "Append -lgmx to LIBS". I don't know
>>>>> what -lgmx really means. Where is gmx library?  The make command gives
>>>>> me the following error message:
>>>>>
>>>>> xtc.o(.text+0x1f): In function `main':
>>>>> : undefined reference to `open_xtc'
>>>>> xtc.o(.text+0x6d): In function `main':
>>>>> : undefined reference to `close_xtc'
>>>>> xtc.o(.text+0x103): In function `writeXtc':
>>>>> : undefined reference to `cos'
>>>>> xtc.o(.text+0x117): In function `writeXtc':
>>>>> : undefined reference to `sin'
>>>>> xtc.o(.text+0x130): In function `writeXtc':
>>>>> : undefined reference to `open_xtc'
>>>>> xtc.o(.text+0x176): In function `writeXtc':
>>>>> : undefined reference to `read_first_xtc'
>>>>> xtc.o(.text+0x1db): In function `writeXtc':
>>>>> : undefined reference to `read_next_xtc'
>>>>> xtc.o(.text+0x20e): In function `writeXtc':
>>>>> : undefined reference to `close_xtc'
>>>>> xtc.o(.text+0x2e5): In function `writeXtc':
>>>>> : undefined reference to `open_xtc'
>>>>> xtc.o(.text+0x32b): In function `writeXtc':
>>>>> : undefined reference to `read_first_xtc'
>>>>> xtc.o(.text+0x390): In function `writeXtc':
>>>>> : undefined reference to `read_next_xtc'
>>>>> xtc.o(.text+0x3c3): In function `writeXtc':
>>>>> : undefined reference to `close_xtc'
>>>>> xtc.o(.text+0x4f1): In function `writeXtc':
>>>>> : undefined reference to `write_xtc'
>>>>> collect2: ld returned 1 exit status
>>>>> make: *** [xtc] Error 1
>>>>>
>>>>>
>>>>> Please give me more help.
>>>>>
>>>>>
>>>>> Have a nice weekend!
>>>>>
>>>>> Dongsheng
>>>>>
>>>>> On Sat, 2006-08-12 at 09:09 +0800, Yang Ye wrote:
>>>>>   
>>>>>       
>>>>>           
>>>>>> 1. Use #include in the C file
>>>>>> In Makefile
>>>>>> 2. Append -I/gromacs/include to CFLAGS
>>>>>> 3. Append -L/gromacs/lib to LDFLAGS
>>>>>> 4. Append -lgmx to LIBS
>>>>>>
>>>>>> Yang Ye
>>>>>>
>>>>>> Dongsheng Zhang wrote:
>>>>>>     
>>>>>>         
>>>>>>             
>>>>>>> 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.
>>>>>>>>     
>>>>>>>>         
>>>>>>>>             
>>>>>>>>                 
>>>>>>> _______________________________________________
>>>>>>> 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.
>>>>>>     
>>>>>>         
>>>>>>             
>>>>> _______________________________________________
>>>>> 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.
>>>>     
>>>>         
>>> _______________________________________________
>>> 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.
>>     
> _______________________________________________
> 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