first and last GLY in seq gives correct energy in unres and wham
[unres.git] / source / unres / src_MD / readrtns.F
index c5dc889..fd00153 100644 (file)
@@ -940,8 +940,8 @@ C 10/03/12 Adam: Recalculate coordinates with new side chain positions
          call chainbuild
         endif  
 C Following 2 lines for diagnostics; comment out if not needed
-        write (iout,*) "After sideadd"
-        call intout
+c        write (iout,*) "After sideadd"
+c        call intout
       endif
       if (indpdb.eq.0) then
 C Read sequence if not taken from the pdb file.
@@ -956,6 +956,20 @@ C Convert sequence to numeric code
         do i=1,nres
           itype(i)=rescode(i,sequence(i),iscode)
         enddo
+        if (itype(2).eq.10.and.itype(1).eq.ntyp1) then
+          write (iout,*) 
+     &     "Glycine is the first full residue, initial dummy deleted"
+          do i=1,nres
+            itype(i)=itype(i+1)
+          enddo
+          nres=nres-1
+        endif
+        if (itype(nres-1).eq.10.and.itype(nres).eq.ntyp1) then
+          write (iout,*) 
+     &     "Glycine is the last full residue, terminal dummy deleted"
+          nres=nres-1
+        endif
+
 C Assign initial virtual bond lengths
         do i=2,nres
           vbld(i)=vbl
@@ -1127,8 +1141,8 @@ czscore          call geom_to_var(nvar,coord_exp_zs(1,1))
 c        write (iout,*) "constr_dist",constr_dist,nstart_sup,nsup
       if (constr_dist.gt.0) then
         call read_dist_constr
-        call hpb_partition
       endif
+      if (nhpb.gt.0) call hpb_partition
 c      write (iout,*) "After read_dist_constr nhpb",nhpb
 c      call flush(iout)
       if (indpdb.eq.0 .and. modecalc.ne.2 .and. modecalc.ne.4
@@ -1251,18 +1265,6 @@ C Generate distance constraints, if the PDB structure is to be regularized.
         write (iout,'(20i4)') (iss(i),i=1,ns)
        if (dyn_ss) then
           write(iout,*)"Running with dynamic disulfide-bond formation"
-          do i=nss+1,nhpb
-            ihpb(i-nss)=ihpb(i)
-            jhpb(i-nss)=jhpb(i)
-            forcon(i-nss)=forcon(i)
-            dhpb(i-nss)=dhpb(i)
-          enddo
-          nhpb=nhpb-nss
-          nss=0
-          call hpb_partition
-          do i=1,ns
-            dyn_ss_mask(iss(i))=.true.
-          enddo
        else
         write (iout,'(/a/)') 'Pre-formed links are:' 
        do i=1,nss
@@ -1270,14 +1272,27 @@ C Generate distance constraints, if the PDB structure is to be regularized.
          i2=jhpb(i)-nres
          it1=itype(i1)
          it2=itype(i2)
-         if (me.eq.king.or..not.out1file)
-     &    write (iout,'(2a,i3,3a,i3,a,3f10.3)')
+          write (iout,'(2a,i3,3a,i3,a,3f10.3)')
      &    restyp(it1),'(',i1,') -- ',restyp(it2),'(',i2,')',dhpb(i),
      &    ebr,forcon(i)
        enddo
        write (iout,'(a)')
        endif
       endif
+      if (ns.gt.0.and.dyn_ss) then
+          do i=nss+1,nhpb
+            ihpb(i-nss)=ihpb(i)
+            jhpb(i-nss)=jhpb(i)
+            forcon(i-nss)=forcon(i)
+            dhpb(i-nss)=dhpb(i)
+          enddo
+          nhpb=nhpb-nss
+          nss=0
+          call hpb_partition
+          do i=1,ns
+            dyn_ss_mask(iss(i))=.true.
+          enddo
+      endif
       if (i2ndstr.gt.0) call secstrp2dihc
 c      call geom_to_var(nvar,x)
 c      call etotal(energia(0))
@@ -1356,7 +1371,8 @@ C Check whether the specified bridging residues are cystines.
 C Read preformed bridges.
       if (ns.gt.0) then
       read (inp,*) nss,(ihpb(i),jhpb(i),i=1,nss)
-      write (iout,*) 'nss=',nss,' ihpb,jhpb: ',(ihpb(i),jhpb(i),i=1,nss)
+      if(fg_rank.eq.0)
+     & write(iout,*)'nss=',nss,' ihpb,jhpb: ',(ihpb(i),jhpb(i),i=1,nss)
       if (nss.gt.0) then
         nhpb=nss
 C Check if the residues involved in bridges are in the specified list of
@@ -2484,7 +2500,7 @@ c        write (iout,*) i,ifrag_(1,i),ifrag_(2,i),wfrag_(i)
         if (wfrag_(i).gt.0.0d0) then
         do j=ifrag_(1,i),ifrag_(2,i)-1
           do k=j+1,ifrag_(2,i)
-            write (iout,*) "j",j," k",k
+c            write (iout,*) "j",j," k",k
             ddjk=dist(j,k)
             if (constr_dist.eq.1) then
             nhpb=nhpb+1