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