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

Yang Ye leafyoung81-group at yahoo.com
Sun Aug 13 09:34:46 CEST 2006


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.
>
>   








More information about the gromacs.org_gmx-developers mailing list