corrections to numerical and sccor analytical gradient
[unres.git] / source / unres / src_MD / geomout.F
index 712a3e3..94fd7d7 100644 (file)
@@ -9,7 +9,7 @@
       include 'COMMON.SBRIDGE'
       include 'COMMON.DISTFIT'
       include 'COMMON.MD'
-      character*50 tytul
+      character*(*) tytul
       dimension ica(maxres)
       write (iunit,'(3a,1pe15.5)') 'REMARK ',tytul,' ENERGY ',etot
 cmodel      write (iunit,'(a5,i6)') 'MODEL',1
@@ -79,9 +79,15 @@ cmodel      write (iunit,'(a5,i6)') 'MODEL',1
 
       if (nss.gt.0) then
         do i=1,nss
+         if (dyn_ss) then
           write(iunit,'(a6,i4,1x,a3,i7,4x,a3,i7)') 
-     &         'SSBOND',i,'CYS',ihpb(i)-1-nres,
-     &                    'CYS',jhpb(i)-1-nres
+     &         'SSBOND',i,'CYS',idssb(i)-nnt+1,
+     &                    'CYS',jdssb(i)-nnt+1
+         else
+          write(iunit,'(a6,i4,1x,a3,i7,4x,a3,i7)') 
+     &         'SSBOND',i,'CYS',ihpb(i)-nnt+1-nres,
+     &                    'CYS',jhpb(i)-nnt+1-nres
+         endif
         enddo
       endif
       
@@ -110,7 +116,11 @@ cmodel      write (iunit,'(a5,i6)') 'MODEL',1
         write (iunit,30) ica(nct),ica(nct)+1
       endif
       do i=1,nss
+       if (dyn_ss) then
+        write (iunit,30) ica(idssb(i))+1,ica(jdssb(i))+1
+       else
         write (iunit,30) ica(ihpb(i)-nres)+1,ica(jhpb(i)-nres)+1
+       endif
       enddo
       write (iunit,'(a6)') 'ENDMDL'     
   10  FORMAT ('ATOM',I7,'  CA  ',A3,I6,4X,3F8.3,f15.3)
@@ -258,14 +268,20 @@ c----------------------------------------------------------------
       include 'COMMON.DISTFIT'
       include 'COMMON.MD'
       double precision time
+      write (iout,*) "cartout: cartname ",cartname
 #if defined(AIX) || defined(PGI)
       open(icart,file=cartname,position="append")
 #else
       open(icart,file=cartname,access="append")
 #endif
       write (icart,'(e15.8,2e15.5,f12.5,$)') time,potE,uconst,t_bath
-      write (icart,'(i4,$)')
+      if (dyn_ss) then
+       write (icart,'(i4,$)')
+     &   nss,(idssb(j)+nres,jdssb(j)+nres,j=1,nss)       
+      else
+       write (icart,'(i4,$)')
      &   nss,(ihpb(j),jhpb(j),j=1,nss)
+       endif
        write (icart,'(i4,20f7.4)') nfrag+npair+3*nfrag_back,
      & (qfrag(i),i=1,nfrag),(qpair(i),i=1,npair),
      & (utheta(i),ugamma(i),uscdiff(i),i=1,nfrag_back)
@@ -307,8 +323,13 @@ c-----------------------------------------------------------------
       call xdrffloat_(ixdrf, real(t_bath), iret)
       call xdrfint_(ixdrf, nss, iret) 
       do j=1,nss
+       if (dyn_ss) then
+        call xdrfint_(ixdrf, idssb(j)+nres, iret)
+        call xdrfint_(ixdrf, jdssb(j)+nres, iret)
+       else
         call xdrfint_(ixdrf, ihpb(j), iret)
         call xdrfint_(ixdrf, jhpb(j), iret)
+       endif
       enddo
       call xdrfint_(ixdrf, nfrag+npair+3*nfrag_back, iret)
       do i=1,nfrag
@@ -331,8 +352,13 @@ c-----------------------------------------------------------------
       call xdrffloat(ixdrf, real(t_bath), iret)
       call xdrfint(ixdrf, nss, iret) 
       do j=1,nss
+       if (dyn_ss) then
+        call xdrfint(ixdrf, idssb(j)+nres, iret)
+        call xdrfint(ixdrf, jdssb(j)+nres, iret)
+       else
         call xdrfint(ixdrf, ihpb(j), iret)
         call xdrfint(ixdrf, jhpb(j), iret)
+       endif
       enddo
       call xdrfint(ixdrf, nfrag+npair+3*nfrag_back, iret)
       do i=1,nfrag
@@ -436,7 +462,7 @@ c-----------------------------------------------------------------
      &      (utheta(i),ugamma(i),uscdiff(i),i=1,nfrag_back)
            write(format2,'(a1,i3.3)') "a",23+7*nfrag+7*npair
      &             +21*nfrag_back
-        elseif(hremd.gt.0) then
+        elseif(hremd.gt.0.or.homol_nset.gt.1) then
            write(line2,'(i5)') iset
            format2="a005"
         else
@@ -446,12 +472,12 @@ c-----------------------------------------------------------------
         if (print_compon) then
           if(itime.eq.0) then
            write(format,'(a1,a4,a1,a4,a10)') "(",format1,",",format2,
-     &                                                     ",20a12)"
+     &                                                     ",100a12)"
            write (istat,format) "#","",
      &      (ename(print_order(i)),i=1,nprint_ene)
           endif
           write(format,'(a1,a4,a1,a4,a10)') "(",format1,",",format2,
-     &                                                     ",20f12.3)"
+     &                                                     ",100f12.3)"
           write (istat,format) line1,line2,
      &      (potEcomp(print_order(i)),i=1,nprint_ene)
         else