correction in readpdb (bugfix)
[unres.git] / source / unres / src_MD-M / readpdb.F
index edd478e..da934d5 100644 (file)
@@ -16,7 +16,9 @@ C geometry.
       character*3 seq,atom,res
       character*80 card
       dimension sccor(3,20)
+      double precision e1(3),e2(3),e3(3)
       integer rescode
+      logical fail
       ibeg=1
       lsecondary=.false.
       nhfrag=0
@@ -72,7 +74,7 @@ C Calculate the CM of the preceding residue.
             endif
 C Start new residue.
 c            write (iout,'(a80)') card
-            read (card(24:26),*) ires
+            read (card(23:26),*) ires
             read (card(18:20),'(a3)') res
             if (ibeg.eq.1) then
               ishift=ires-1
@@ -140,9 +142,16 @@ C Calculate the CM of the last side chain.
         nres=nres+1
         itype(nres)=21
         if (unres_pdb) then
-          c(1,nres)=c(1,nres-1)+3.8d0
-          c(2,nres)=c(2,nres-1)
-          c(3,nres)=c(3,nres-1)
+C 2/15/2013 by Adam: corrected insertion of the last dummy residue
+          call refsys(nres-3,nres-2,nres-1,e1,e2,e3,fail)
+          if (fail) then
+            e2(1)=0.0d0
+            e2(2)=1.0d0
+            e2(3)=0.0d0
+          endif
+          do j=1,3
+            c(j,nres)=c(j,nres-1)-3.8d0*e2(j)
+          enddo
         else
         do j=1,3
           dcj=c(j,nres-2)-c(j,nres-3)
@@ -160,13 +169,20 @@ C Calculate the CM of the last side chain.
         c(j,nres+1)=c(j,1)
         c(j,2*nres)=c(j,nres)
       enddo
-      if (itype(1).eq.21) then
+      if (itype(1).eq.21) then 
         nsup=nsup-1
         nstart_sup=2
         if (unres_pdb) then
-          c(1,1)=c(1,2)-3.8d0
-          c(2,1)=c(2,2)
-          c(3,1)=c(3,2)
+C 2/15/2013 by Adam: corrected insertion of the first dummy residue
+          call refsys(2,3,4,e1,e2,e3,fail)
+          if (fail) then
+            e2(1)=0.0d0
+            e2(2)=1.0d0
+            e2(3)=0.0d0
+          endif
+          do j=1,3
+            c(j,1)=c(j,2)-3.8d0*e2(j)
+          enddo
         else
         do j=1,3
           dcj=c(j,4)-c(j,3)