Hi, try:
download http://www.mpibpc.gwdg.de/groups/de_groot/xtc.tar.gz (and optionally issue a 'make' in the xtc directory after unpacking) in the linking stage, use something like ifort -blabla -lxdrf -L/wherever/xtc -lg2c your smalll test code looks OK apart from the fact that I don't know what happens if you read&write from the same file. Bert On Sat, 29 Sep 2007, Jones de Andrade wrote: > Hi all. > > I'm writing this beucase I'm having terrible problems in trying to deal with > gromacs trajectory files with my own programs, originally written on > fortran90. > > The codes themselves are enoughly big to make it out of question to try to > "translate" them. What leads to some sort of mixed language compilation. > > My first guess was to try to use the guidelines from > http://xray.bmc.uu.se/~spoel/md/online/xtc.html, but it absolutelly didn't > worked. Could not find a compatible library. Tried to recompile gromacs in > order to do so, but instead of a libsdrf.a library file, it created just > common .lo and .o object files. > > Looked inside concoord program, as there are some mentions in the list to > look at the code. Was a really good aprentize, could understand better the > logics involved when dealing with .xtc files, BUT I could not use the > library files that came with that. Somehow, it wasn't recognized as a valid > file. > > My last try up to now was to try to link my test-read-program with the > libxdrf object file. It yelded the following error: > > CruNumMac src/own/B/9/xtc 238% ifort libxdrf.lo xtciof.f90 test_xtc.f90 > IPO: WARNING: no IR in object file libxdrf.lo; was the source file compiled > with -ipo? > IPO Error: unresolved : xdrfint_ > Referenced in /tmp/ipo_ifortZNvZHh.o > IPO Error: unresolved : xdrfclose_ > Referenced in /tmp/ipo_ifortZNvZHh.o > IPO Error: unresolved : xdrfopen_ > Referenced in /tmp/ipo_ifortZNvZHh.o > IPO Error: unresolved : xdrffloat_ > Referenced in /tmp/ipo_ifortZNvZHh.o > IPO Error: unresolved : xdrf3dfcoord_ > Referenced in /tmp/ipo_ifortZNvZHh.o > IPO: performing multi-file optimizations > IPO: generating object file /tmp/ipo_ifortZNvZHh.o > test_xtc.f90(17) : (col. 3) remark: LOOP WAS VECTORIZED. > test_xtc.f90(25) : (col. 8) remark: LOOP WAS VECTORIZED. > xtciof.f90(112) : (col. 3) remark: LOOP WAS VECTORIZED. > libxdrf.lo: file not recognized: File format not recognized > > If I try to link to the .o objetc: > > CruNumMac src/own/B/9/xtc 240% ifort libxdrf.o xtciof.f90 test_xtc.f90 > IPO: WARNING: no IR in object file libxdrf.o; was the source file compiled > with -ipo? > IPO Error: unresolved : xdrfint_ > Referenced in /tmp/ipo_ifort2f5KMw.o > IPO Error: unresolved : xdrfclose_ > Referenced in /tmp/ipo_ifort2f5KMw.o > IPO Error: unresolved : xdrfopen_ > Referenced in /tmp/ipo_ifort2f5KMw.o > IPO Error: unresolved : xdrffloat_ > Referenced in /tmp/ipo_ifort2f5KMw.o > IPO Error: unresolved : xdrf3dfcoord_ > Referenced in /tmp/ipo_ifort2f5KMw.o > IPO Error: unresolved : ffclose > Referenced in libxdrf.o > IPO: performing multi-file optimizations > IPO: generating object file /tmp/ipo_ifort2f5KMw.o > test_xtc.f90(17) : (col. 3) remark: LOOP WAS VECTORIZED. > test_xtc.f90(25) : (col. 8) remark: LOOP WAS VECTORIZED. > xtciof.f90(112) : (col. 3) remark: LOOP WAS VECTORIZED. > /tmp/ipo_ifort2f5KMw.o(.text+0x1e1): In function `MAIN__': > /tmp/ipo_ifort2f5KMw.f: undefined reference to `xdrfopen_' > /tmp/ipo_ifort2f5KMw.o(.text+0x4ea):/tmp/ipo_ifort2f5KMw.f: undefined > reference to `xdrfclose_' > /tmp/ipo_ifort2f5KMw.o(.text+0x517):/tmp/ipo_ifort2f5KMw.f: undefined > reference to `xdrfopen_' > /tmp/ipo_ifort2f5KMw.o(.text+0x92b): In function `xtciof_mp_xtcheader_': > /tmp/ipo_ifort2f5KMw.f: undefined reference to `xdrfint_' > /tmp/ipo_ifort2f5KMw.o(.text+0x941):/tmp/ipo_ifort2f5KMw.f: undefined > reference to `xdrfint_' > /tmp/ipo_ifort2f5KMw.o(.text+0x95e):/tmp/ipo_ifort2f5KMw.f: undefined > reference to `xdrfint_' > /tmp/ipo_ifort2f5KMw.o(.text+0x97b):/tmp/ipo_ifort2f5KMw.f: undefined > reference to `xdrffloat_' > /tmp/ipo_ifort2f5KMw.o(.text+0xb8e): In function `xtciof_mp_xtcio_': > /tmp/ipo_ifort2f5KMw.f: undefined reference to `xdrffloat_' > /tmp/ipo_ifort2f5KMw.o(.text+0xbde):/tmp/ipo_ifort2f5KMw.f: undefined > reference to `xdrffloat_' > /tmp/ipo_ifort2f5KMw.o(.text+0xc2e):/tmp/ipo_ifort2f5KMw.f: undefined > reference to `xdrffloat_' > /tmp/ipo_ifort2f5KMw.o(.text+0xc7e):/tmp/ipo_ifort2f5KMw.f: undefined > reference to `xdrffloat_' > /tmp/ipo_ifort2f5KMw.o(.text+0xcce):/tmp/ipo_ifort2f5KMw.f: more undefined > references to `xdrffloat_' follow > /tmp/ipo_ifort2f5KMw.o(.text+0xe6b): In function `xtciof_mp_xtcio_': > /tmp/ipo_ifort2f5KMw.f: undefined reference to `xdrf3dfcoord_' > /tmp/ipo_ifort2f5KMw.o(.text+0xfc6): In function `xtciof_mp_xtcopen_': > /tmp/ipo_ifort2f5KMw.f: undefined reference to `xdrfopen_' > /tmp/ipo_ifort2f5KMw.o(.text+0x1292):/tmp/ipo_ifort2f5KMw.f: undefined > reference to `xdrfclose_' > /tmp/ipo_ifort2f5KMw.o(.text+0x12b3):/tmp/ipo_ifort2f5KMw.f: undefined > reference to `xdrfopen_' > /tmp/ipo_ifort2f5KMw.o(.text+0x134e): In function `xtciof_mp_xtccoord_': > /tmp/ipo_ifort2f5KMw.f: undefined reference to `xdrffloat_' > /tmp/ipo_ifort2f5KMw.o(.text+0x139f):/tmp/ipo_ifort2f5KMw.f: undefined > reference to `xdrffloat_' > /tmp/ipo_ifort2f5KMw.o(.text+0x13f0):/tmp/ipo_ifort2f5KMw.f: undefined > reference to `xdrffloat_' > /tmp/ipo_ifort2f5KMw.o(.text+0x1441):/tmp/ipo_ifort2f5KMw.f: undefined > reference to `xdrffloat_' > /tmp/ipo_ifort2f5KMw.o(.text+0x1492):/tmp/ipo_ifort2f5KMw.f: undefined > reference to `xdrffloat_' > /tmp/ipo_ifort2f5KMw.o(.text+0x14e3):/tmp/ipo_ifort2f5KMw.f: more undefined > references to `xdrffloat_' follow > /tmp/ipo_ifort2f5KMw.o(.text+0x162d): In function `xtciof_mp_xtccoord_': > /tmp/ipo_ifort2f5KMw.f: undefined reference to `xdrf3dfcoord_' > libxdrf.o(.text+0x3d86): In function `xdrclose': > libxdrf.c: undefined reference to `ffclose' > libxdrf.o(.text+0x3da8):libxdrf.c: undefined reference to `ffclose' > > I'm really not getting what can be the source of error. I placed the two > test wources from above trials below, in case it can be of any help. But I > really not getting what am I doing wrong, and also could not find any other > clue in gromacs mail lists, neither google. > > Sorry it this is a much simpler question than it seems to me, but I'm really > astonished not finding the source of error neither a workaround or an > altertive way which I could follow and reach some results. > > Thanks a lot in advance, > > Sincerally yours, > > Jones > > ********Attachments: > > *****test_xtc.f90: > program test_xtc > use xtciof > implicit none > ! Declaracao de Variaveis: > integer :: xd, natoms, step, ret > integer :: nat, maxat > ! real*4 :: time, box(9), x(*), prec > real :: time, box(9), prec > real, dimension(:), allocatable :: x > character*1 :: stat > character(len=1) :: file_name > > maxat = 10000 > stat = 'a' > file_name = 'teste.xtc' > allocate(x(30000)) > x(:) = 0. > > ! Aqui comeca o programa de teste: > > call xtcopen(xd, file_name, stat, maxat, nat) > > write(6,*) 'xtc file openned' > > call readxtc(xd, natoms, step, time, box, x, prec, ret) > > write(6,*) 'xtc file readed' > > call writextc(xd, natoms, step, time, box, x, prec, ret) > > write(6,*) 'xtc file written' > > deallocate(x) > > end program test_xtc > > ******xtciof.f90: > module xtciof > > contains > > subroutine xtccheck(ret,ivar) > implicit none > ! > ! Passed variables > ! > integer, intent(in) :: ret, ivar > > if ( ret .eq. 0 ) then > if (ivar == 1) write(6,*) '> XTC-Error reading/writing natoms' > if (ivar == 2) write(6,*) '> XTC-Error reading/writing step' > if (ivar == 3) write(6,*) '> XTC-Error reading/writing time' > if (ivar == 4) write(6,*) '> XTC-Error reading/writing box' > if (ivar == 5) write(6,*) '> XTC-Error reading/writing x' > ! stop > endif > end subroutine xtccheck > > subroutine xtcheader(xd,magic,natoms,step,time,ret) > implicit none > ! > ! Passed variables > ! > integer :: xd, natoms, step, ret, magic > ! real*4 :: time > real :: time > > call xdrfint(xd, magic, ret) > if (ret == 0) return > > call xdrfint(xd, natoms, ret) > call xtccheck(ret, 1) > > call xdrfint(xd, step, ret) > call xtccheck(ret, 2) > > call xdrffloat(xd, time, ret) > call xtccheck(ret, 3) > > end subroutine xtcheader > > subroutine xtccoord(xd,natoms,box,x,prec,ret) > implicit none > ! > ! Passed variables > ! > integer :: xd, natoms, ret > ! real*4 :: box(9), x(*), prec > real :: box(9), x(*), prec > ! > ! local > ! > integer :: i > > do i=1, 9 > call xdrffloat(xd, box(i), ret) > call xtccheck(ret, 4) > enddo !i > > call xdrf3dfcoord(xd, x, natoms, prec, ret) > call xtccheck(ret, 5) > > > end subroutine xtccoord > > subroutine xtcio(xd, natoms, step, time, box, x, prec, mode, ret) > implicit none > ! > ! Passed variables > ! > integer :: xd, natoms, step, mode, ret > ! real*4 :: box(9) > ! real*4 :: box(9) > ! real*4 :: x(*) > real :: time, prec > real :: x(*) > real :: box(9) > ! > ! local variables > ! > integer :: xtcmagic > integer :: magic > > xtcmagic=1995 > > if (mode .eq. 0) magic = xtcmagic > > call xtcheader(xd, magic, natoms, step, time, ret) > > if (ret == 0) return > > if (mode == 1) then > if (magic == xtcmagic) write(6,*) '> Fatal error, magic number read as > ',magic, ' should be ',xtcmagic > endif !(mode == 1) > > call xtccoord(xd, natoms, box, x, prec, ret) > > end subroutine xtcio > > subroutine readxtc(xd, natoms, step, time, box, x, prec, ret) > implicit none > > integer :: xd, natoms, step, ret > integer :: nat > ! real*4 :: time, box(9), x(*), prec > real :: time, box(9), prec > real, dimension(:), allocatable :: x > > allocate (x(natoms)) > x(:) = 0. > > call xtcio(xd,natoms,step,time,box,x,prec,1,ret) > > end subroutine readxtc > > subroutine writextc(xd, natoms, step, time, box, x, prec, ret) > implicit none > > integer :: xd, natoms, step, ret > real :: time, box(9), x(*), prec > > call xtcio(xd, natoms, step, time, box, x, prec, 0, ret) > > end subroutine writextc > > subroutine xtcopen (xd, file_name, stat, maxat, nat) > implicit none > > integer :: xd, ret, nat, maxat, magic, step > ! real*4 :: time > real :: time > character*1 :: stat > character*(*) :: file_name > integer, parameter :: xtcmagic = 1995 > > call xdrfopen(xd, file_name, stat, ret) > if (ret == 0) write(6,*) '> Fatal error, could not open ',file_name(1:20) > > call xtcheader(xd, magic, nat, step, time, ret) > > if (magic /= xtcmagic) then > write(6,*) '> Fatal error, magic number read as ',magic,' should be > ',xtcmagic > stop > endif > > if (nat < 0) then > write(6,*) '> Fatal error, negative number of atoms' > stop > endif > > if (nat > maxat) then > write(6,*) '> Fatal error, number of atoms (',nat,') ','larger than > allowed (',maxat,')' > stop > endif > > call xdrfclose(xd, ret) > > call xdrfopen(xd, file_name, stat, ret) > > end subroutine xtcopen > > !end contains > > end module xtciof > Bert ________________________________________________ Bert de Groot, PhD Max Planck Institute for Biophysical Chemistry Computational biomolecular dynamics group Am Fassberg 11 37077 Goettingen, Germany tel: +49-551-2012308, fax: +49-551-2012302 http://www.mpibpc.gwdg.de/groups/de_groot _______________________________________________ gmx-users mailing list gmx-users@gromacs.org http://www.gromacs.org/mailman/listinfo/gmx-users Please search the archive at http://www.gromacs.org/search before posting! Please don't post (un)subscribe requests to the list. Use the www interface or send it to [EMAIL PROTECTED] Can't post? Read http://www.gromacs.org/mailing_lists/users.php