readpdb correction
[unres.git] / source / cluster / wham / src-HCD-5D / readpdb.F
index 0167c00..a7bb52b 100644 (file)
@@ -13,13 +13,13 @@ C geometry.
       include 'COMMON.NAMES'
       include 'COMMON.CONTROL'
       integer i,j,ibeg,ishift1,ires,iii,ires_old,ishift,ity
-      logical lprn /.false./,fail
+      logical lprn /.false./,fail,sccalc
       double precision e1(3),e2(3),e3(3)
       double precision dcj,efree_temp
       character*3 seq,res
       character*5 atom
       character*80 card
-      double precision sccor(3,20)
+      double precision sccor(3,50)
       integer rescode
       integer iterter(maxres)
       efree_temp=0.0d0
@@ -30,6 +30,7 @@ c      write (2,*) "UNRES_PDB",unres_pdb
       ires=0
       ires_old=0
       iii=0
+      sccalc=.false.
       lsecondary=.false.
       nhfrag=0
       nbfrag=0
@@ -61,6 +62,7 @@ c      write (2,*) "UNRES_PDB",unres_pdb
           itype(ires_old-1)=ntyp1
           iterter(ires_old-1)=1
           itype(ires_old)=ntyp1
+          iterter(ires_old)=1
           ishift1=ishift1+1
           ibeg=2
 !          write (iout,*) "Chain ended",ires,ishift,ires_old
@@ -71,12 +73,14 @@ c      write (2,*) "UNRES_PDB",unres_pdb
           else
             call sccenter(ires,iii,sccor)
           endif
-c          iii=0
+          iii=0
+          sccalc=.true.
         endif
 ! Read free energy
         if (index(card,"FREE ENERGY").gt.0) read(card(35:),*) efree_temp
 ! Fish out the ATOM cards.
         if (index(card(1:4),'ATOM').gt.0) then  
+          sccalc=.false.
           read (card(12:16),*) atom
 c          write (2,'(a)') card
 !          write (iout,*) "! ",atom," !",ires
@@ -100,6 +104,7 @@ c          write (2,'(a)') card
                 call sccenter(ires_old,iii,sccor)
               endif
               iii=0
+              sccalc=.true.
             endif
 ! Start new residue.
             if (res.eq.'Cl-' .or. res.eq.'Na+') then
@@ -220,7 +225,7 @@ C          endif !unres_pdb
         endif  !itype.eq.ntyp1
       enddo
 C Calculate the CM of the last side chain.
-      call sccenter(ires,iii,sccor)
+      if (.not.sccalc) call sccenter(ires,iii,sccor)
       nsup=nres
       nstart_sup=1
       if (itype(nres).ne.10) then
@@ -327,7 +332,7 @@ c---------------------------------------------------------------------------
       character*3 seq,res
 c      character*5 atom
       character*80 card
-      dimension sccor(3,20)
+      dimension sccor(3,50)
       integer rescode
       logical lside,lprn
        if (lprn) then 
@@ -493,7 +498,7 @@ c---------------------------------------------------------------------------
       implicit real*8 (a-h,o-z)
       include 'DIMENSIONS'
       include 'COMMON.CHAIN'
-      dimension sccor(3,20)
+      dimension sccor(3,50)
       do j=1,3
         sccmj=0.0D0
         do i=1,nscat
@@ -555,7 +560,7 @@ C and convert the peptide geometry into virtual-chain geometry.
       character*3 seq,res
       character*5 atom
       character*80 card
-      double precision sccor(3,20)
+      double precision sccor(3,50)
       integer rescode,iterter(maxres)
       do i=1,maxres
          iterter(i)=0
@@ -854,5 +859,3 @@ c     &   vbld_inv(i+nres)
 
       return
       end
-      
-