subroutine cxread(icon,*) include 'DIMENSIONS' include 'sizesclu.dat' include 'COMMON.CONTROL' include 'COMMON.CHAIN' include 'COMMON.INTERACT' include 'COMMON.NAMES' include 'COMMON.IOUNITS' include 'COMMON.HEADER' include 'COMMON.SBRIDGE' include 'COMMON.VAR' include 'COMMON.GEO' include 'COMMON.CLUSTER' character*64 nazwa real*4 rtime,rpotE,ruconst,rt_bath,rprop(20) double precision time integer iret,itmp real xoord(3,maxres2+2),prec double precision cm(3) integer nstep integer ilen external ilen integer icon c print *,"is",is," ie",ie," isampl",isampl print *,nazwa nstep=0 icon=0 nprop=0 nprop_prev=0 do i=1,20 rprop(i)=0.0d0 enddo DO IFILE = 1, NFILES print *,"CXREAD: opening file ", & cxfiles(ifile)(:ilen(cxfiles(ifile))) write (iout,*) "CXREAD: opening file ", & cxfiles(ifile)(:ilen(cxfiles(ifile))) #if (defined(AIX) && !defined(JUBL)) call xdrfopen_(ixdrf,cxfiles(ifile), "r", iret) #else call xdrfopen(ixdrf,cxfiles(ifile), "r", iret) #endif if (iret.eq.0) cycle print *,"CXREAD: reading file ", & cxfiles(ifile)(:ilen(cxfiles(ifile))) write(iout,*) "CXREAD: reading file ", & cxfiles(ifile)(:ilen(cxfiles(ifile))) do while (iret.gt.0) #if (defined(AIX) && !defined(JUBL)) call xdrffloat_(ixdrf, rtime, iret) call xdrffloat_(ixdrf, rpotE, iret) #ifdef DEBUG write (iout,*) "rtime",rtime," rpotE",rpotE," iret",iret #endif call flush(iout) call xdrffloat_(ixdrf, ruconst, iret) #ifdef NEWUNRES call xdrffloat(ixdrf, ruconst_back, iret) c print *,"uconst_back",ruconst_back #endif call xdrffloat_(ixdrf, rt_bath, iret) call xdrfint_(ixdrf, nss, iret) #ifdef DEBUG write (iout,*) "ruconst",ruconst," rt_bath",rt_bath," nss",nss #endif do j=1,nss call xdrfint_(ixdrf, ihpb(j), iret) call xdrfint_(ixdrf, jhpb(j), iret) enddo call xdrfint_(ixdrf, nprop, iret) do i=1,nprop call xdrffloat_(ixdrf, rprop(i), iret) enddo #else call xdrffloat(ixdrf, rtime, iret) call xdrffloat(ixdrf, rpotE, iret) #ifdef DEBUG write (iout,*) "rtime",rtime," rpotE",rpotE," iret",iret #endif call flush(iout) call xdrffloat(ixdrf, ruconst, iret) #ifdef NEWUNRES call xdrffloat(ixdrf, ruconst_back, iret) c print *,"uconst_back",ruconst_back #endif call xdrffloat(ixdrf, rt_bath, iret) call xdrfint(ixdrf, nss, iret) #ifdef DEBUG write (iout,*) "ruconst",ruconst," rt_bath",rt_bath," nss",nss #endif do j=1,nss call xdrfint(ixdrf, ihpb(j), iret) call xdrfint(ixdrf, jhpb(j), iret) enddo call xdrfint(ixdrf, nprop, iret) c write (iout,*) "nprop",nprop if (it.gt.0 .and. nprop.ne.nprop_prev) then write (iout,*) "Warning previous nprop",nprop_prev, & " current",nprop nprop=nprop_prev else nprop_prev=nprop endif do i=1,nprop call xdrffloat(ixdrf, rprop(i), iret) enddo #endif if (iret.eq.0) exit #ifdef DEBUG write (iout,*) rtime,rpotE,rt_bath,nss, & (ihpb(j),jhpb(j),j=1,nss),(rprop(j),j=1,nprop) write (iout,*) "nprop",nprop call flush(iout) #endif prec=10000.0 itmp=0 #if (defined(AIX) && !defined(JUBL)) call xdrf3dfcoord_(ixdrf, xoord, itmp, prec, iret) #else call xdrf3dfcoord(ixdrf, xoord, itmp, prec, iret) #endif #ifdef DEBUG write (iout,'(10f8.3)') ((xoord(j,i),j=1,3),i=1,itmp) #endif if (iret.eq.0) exit if (itmp .ne. nres + nct - nnt + 1) then write (iout,*) "Error: inconsistent sizes",itmp,nres+nct-nnt+1 call flush(iout) exit endif time=rtime do i=1,3 cm(i)=0.0d0 enddo do i=1,nres do j=1,3 c(j,i)=xoord(j,i) cm(j)=cm(j)+c(j,i) enddo enddo do i=1,nct-nnt+1 do j=1,3 c(j,i+nres+nnt-1)=xoord(j,i+nres) enddo enddo do i=1,3 cm(i)=cm(i)/nres enddo do i=1,nres do j=1,3 c(j,i)=c(j,i)-cm(j) enddo enddo do i=1,nct-nnt+1 do j=1,3 c(j,i+nres+nnt-1)=c(j,i+nres+nnt-1)-cm(j) enddo enddo nstep=nstep+1 if (nstep.gt.ie .or. rtime.gt.te) return if((nstep.ge.is.or.rtime.ge.ts) .and. mod(nstep,isampl).eq.0)then icon=icon+1 #ifdef DEBUG write (iout,*) "conformation, record",nstep,icon write (iout,*) "pote",rpotE," time",rtime c write (iout,*) "nres",nres," nnt",nnt," nct",nct," nss",nss c write (iout,*) "length",nres*4+(nct-nnt+1)*4+4+2*nss*4 call flush(iout) #endif energy(icon)=rpotE totfree(icon)=rpotE rmstab(icon)=rmsdev nss_all(icon)=nss do k=1,nss ihpb_all(k,icon)=ihpb(k) jhpb_all(k,icon)=jhpb(k) enddo iscore(icon)=icon do k=1,2*nres do l=1,3 allcart(l,k,icon)=c(l,k) enddo enddo #ifdef DEBUG call int_from_cart(.true.,.false.) write (iout,*) "Storing conformation, record",icon write (iout,*) "Cartesian coordinates" write (iout,'(8f10.5)') ((c(j,i),j=1,3),i=1,nres) write (iout,'(8f10.5)') ((c(j,i+nres),j=1,3),i=nnt,nct) write (iout,*) "Internal coordinates" write (iout,'(8f10.4)') (dist(k-1,k),k=nnt+1,nct) write (iout,'(8f10.4)') (dist(k,k+nres),k=nnt,nct) write (iout,'(8f10.4)') (rad2deg*theta(k),k=3,nres) write (iout,'(8f10.4)') (rad2deg*phi(k),k=4,nres) write (iout,'(8f10.4)') (rad2deg*alph(k),k=2,nres-1) write (iout,'(8f10.4)') (rad2deg*omeg(k),k=2,nres-1) write (iout,'(16i5)') nss,(ihpb(k),jhpb(k),k=1,nss) c write (iout,'(8f10.5)') (rprop(j),j=1,nQ) write (iout,'(16i5)') iscor call flush(iout) #endif endif 112 continue enddo #if (defined(AIX) && !defined(JUBL)) call xdrfclose_(ixdrf, iret) #else call xdrfclose(ixdrf, iret) #endif write (iout,*) nstep," conformations read so far file", & cxfiles(ifile)(:ilen(cxfiles(ifile))) call flush(iout) ENDDO ! IFILE return end