introduction of genconstr to wham
authorAdam Sieradzan <adasko@piasek4.chem.univ.gda.pl>
Thu, 1 Jun 2017 15:08:29 +0000 (17:08 +0200)
committerAdam Sieradzan <adasko@piasek4.chem.univ.gda.pl>
Thu, 1 Jun 2017 15:08:29 +0000 (17:08 +0200)
source/wham/src-M/readrtns.F
source/wham/src-M/wham_multparm.F

index ff5b18e..6c69644 100644 (file)
@@ -847,3 +847,87 @@ c-------------------------------------------------------------------------------
       iroof = ii
       return
       end
+C--------------------------------------------------------------------------
+      subroutine gen_dist_constr
+C Generate CA distance constraints.
+      implicit real*8 (a-h,o-z)
+      include "DIMENSIONS"
+      include "DIMENSIONS.ZSCOPT"
+      include "DIMENSIONS.FREE"
+      include "COMMON.TORSION"
+      include "COMMON.INTERACT"
+      include "COMMON.IOUNITS"
+      include "COMMON.TIME1"
+      include "COMMON.PROT"
+      include "COMMON.PROTFILES"
+      include "COMMON.CHAIN"
+      include "COMMON.NAMES"
+      include "COMMON.FFIELD"
+      include "COMMON.ENEPS"
+      include "COMMON.WEIGHTS"
+      include "COMMON.FREE"
+      include "COMMON.CONTROL"
+      include "COMMON.ENERGIES"
+      include "COMMON.SPLITELE"
+      include "COMMON.SBRIDGE"
+      include "COMMON.SHIELD"
+      dimension itype_pdb(maxres)
+      common /pizda/ itype_pdb
+      character*2 iden
+cd      print *,'gen_dist_constr: nnt=',nnt,' nct=',nct
+cd      write (2,*) 'gen_dist_constr: nnt=',nnt,' nct=',nct,
+cd     & ' nstart_sup',nstart_sup,' nstart_seq',nstart_seq,
+cd     & ' nsup',nsup
+      if (constr_dist.eq.11) then
+             do i=nstart_sup,nstart_sup+nsup-1
+              do j=i+2,nstart_sup+nsup-1
+                 distance=dist(i,j)
+                 if (distance.le.15.0) then
+                 nhpb=nhpb+1
+                 ihpb(nhpb)=i+nstart_seq-nstart_sup
+                 jhpb(nhpb)=j+nstart_seq-nstart_sup
+                 forcon(nhpb)=sqrt(0.04*distance)
+                 fordepth(nhpb)=sqrt(40.0/distance)
+                 dhpb(nhpb)=distance-0.1d0
+                 dhpb1(nhpb)=distance+0.1d0
+
+C#ifdef MPI
+C          if (.not.out1file .or. me.eq.king)
+C     &    write (iout,'(a,3i5,f8.2,f10.2)') "+dist.constr ",
+C     &     nhpb,ihpb(nhpb),jhpb(nhpb),dhpb(nhpb),forcon(nhpb)
+C#else
+          write (iout,'(a,3i5,f8.2,f10.2)') "+dist.constr ",
+     &     nhpb,ihpb(nhpb),jhpb(nhpb),dhpb(nhpb),forcon(nhpb)
+C#endif
+            endif
+             enddo
+           enddo
+      else
+      do i=nstart_sup,nstart_sup+nsup-1
+cd      write (2,*) 'i',i,' seq ',restyp(itype(i+nstart_seq-nstart_sup)),
+cd     &    ' seq_pdb', restyp(itype_pdb(i))
+        do j=i+2,nstart_sup+nsup-1
+          nhpb=nhpb+1
+          ihpb(nhpb)=i+nstart_seq-nstart_sup
+          jhpb(nhpb)=j+nstart_seq-nstart_sup
+          forcon(nhpb)=weidis
+          dhpb(nhpb)=dist(i,j)
+        enddo
+      enddo
+      endif
+cd      write (iout,'(a)') 'Distance constraints:' 
+cd      do i=nss+1,nhpb
+cd        ii=ihpb(i)
+cd        jj=jhpb(i)
+cd        iden='CA'
+cd        if (ii.gt.nres) then
+cd          iden='SC'
+cd          ii=ii-nres
+cd          jj=jj-nres
+cd        endif
+cd        write (iout,'(a,1x,a,i4,3x,a,1x,a,i4,2f10.3)') 
+cd     &  restyp(itype(ii)),iden,ii,restyp(itype(jj)),iden,jj,
+cd     &  dhpb(i),forcon(i)
+cd      enddo
+      return
+      end
index de73250..7cade99 100644 (file)
@@ -58,7 +58,7 @@ c NaNQ initialization
       call flush(iout)
       call molread(*10)
       call flush(iout)
-      if (constr_dist.gt.0) call read_dist_constr
+      if ((constr_dist.gt.0).and.(genconstr.eq.0)) call read_dist_constr
 #ifdef MPI 
       write (iout,*) "Calling proc_groups"
       call proc_groups
@@ -87,9 +87,11 @@ c NaNQ initialization
         call promienie
         call read_compar
         call read_ref_structure(*10)
+      if ((constr_dist.gt.0).and.(genconstr.gt.0)) call gen_dist_constr 
         call proc_cont
         call fragment_list
       endif
+
 C      if (constr_dist.gt.0) call read_dist_constr
       write (iout,*) "Begin read_database"
       call flush(iout)