wham Adam's changes
[unres.git] / source / wham / src-HCD-5D / enecalc1.F
index f037ae8..2edf349 100644 (file)
@@ -46,13 +46,31 @@ c      double precision tole /1.0d-1/
       double precision tt
       integer snk_p(MaxR,MaxT_h,Max_parm)
       logical lerr
-      character*64 bprotfile_temp
+      integer ncont,icont(2,maxcont),isecstr(maxres)
+      character*256 bprotfile_temp
+      double precision totlength
       call opentmp(islice,ientout,bprotfile_temp)
       iii=0
       ii=0
       errmsg_count=0
 c      write (iout,*) "enecalc: nparmset ",nparmset
 c      write (iout,*) "enecalc: tormode ",tor_mode
+      write (iout,*) "ns",ns," dyn_ss",dyn_ss,(iss(i),i=1,ns)
+      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
+      write (iout,*) "dyn_ss_mask",(dyn_ss_mask(i),i=1,nres)
 #ifdef MPI
       do iparm=1,nParmSet
         do ib=1,nT_h(iparm)
@@ -94,7 +112,7 @@ c      write (iout,*) "enecalc: tormode ",tor_mode
            anatemp= 1.0d0/(beta_h(ib,ipar)*1.987D-3)
            q(nQ+1,iii+1)=rmsnat(iii+1,ipermin)
          endif
-         q(nQ+2,iii+1)=gyrate(iii+1)
+c         write (iout,*) iii+1,q(nQ+3,iii+1),q(nQ+4,iii+1),q(nQ+5,iii+1)
 c        fT=T0*beta_h(ib,ipar)*1.987D-3
 c        ft=2.0d0/(1.0d0+1.0d0/(T0*beta_h(ib,ipar)*1.987D-3))
         if (rescale_mode.eq.1) then
@@ -158,13 +176,13 @@ c     &   " kfac",kfac,"quot",quot," fT",fT
      &      wcorr,wcorr5,wcorr6,wturn4,wturn3,wturn6,wel_loc,
      &      wtor_d,wsccor,wbond
 #endif
-C        write (iout,*) "tuz przed energia"
+c        write (iout,*) "tuz przed energia"
         call etotal(energia(0),fT)
-C        write (iout,*) "tuz za energia"
+c        write (iout,*) "tuz za energia"
 #ifdef DEBUG
         write (iout,*) "Conformation",i
-c          write (iout,'(8f10.5)') ((c(l,k),l=1,3),k=1,nres),
-c     &                            ((c(l,k+nres),l=1,3),k=nnt,nct)
+        write (iout,'(8f10.5)') ((c(l,k),l=1,3),k=1,nres),
+     &                            ((c(l,k+nres),l=1,3),k=nnt,nct)
         call enerprint(energia(0),fT)
 c        write (iout,'(2i5,21f8.2)') i,iparm,(energia(k),k=1,21)
 c        write (iout,*) "ftors(1)",ftors(1)
@@ -200,6 +218,8 @@ c        call pdbout(ii+1,beta_h(ib,ipar),efree,energia(0),0.0d0,rmsdev)
           if (ipar.eq.iparm) write (iout,*) i,iparm,
      &      1.0d0/(beta_h(ib,ipar)*1.987D-3),eini,energia(0)
 #endif
+c          write (iout,*) "eini",eini,"energia(0)",energia(0)," diff",
+c     &       eini-energia(0)
           if (ipar.eq.iparm .and. einicheck.gt.0 .and. 
 !     &      dabs(eini-energia(0)-energia(27)).gt.tole) then
      &      dabs(eini-energia(0)).gt.tole) then
@@ -213,8 +233,8 @@ c        call pdbout(ii+1,beta_h(ib,ipar),efree,energia(0),0.0d0,rmsdev)
           write (iout,'(8f10.5)') ((c(l,k),l=1,3),k=1,nres),
      &                            ((c(l,k+nres),l=1,3),k=nnt,nct)
 c              call intout
-              call pdbout(indstart(me1)+iii,
-     & 1.0d0/(1.987D-3*beta_h(ib,ipar)),energia(0),eini,0.0d0,0.0d0)
+c              call pdbout(indstart(me1)+iii,
+c     & 1.0d0/(1.987D-3*beta_h(ib,ipar)),energia(0),eini,0.0d0,0.0d0)
               call enerprint(energia(0),fT)
               errmsg_count=errmsg_count+1
               if (errmsg_count.gt.maxerrmsg_count) 
@@ -258,10 +278,35 @@ c          call enerprint(energia(0),fT)
         endif
 
         enddo ! iparm
+        q(nQ+2,iii+1)=gyrate(iii+1)
+c 8/28/2020 Adam - determine the fraction of secondary structures.
+        call elecont(.false.,ncont,icont,nnt,nct-1,1)
+        call secondary2(.false.,.false.,ncont,icont,isecstr)
+#ifdef DEBUG
+        write (iout,*) "secondary structure"
+        write (iout,'(80i1)') (isecstr(k),k=1,nres)
+#endif
+        q(nQ+3,iii+1)=0.0d0
+        q(nQ+4,iii+1)=0.0d0
+        q(nQ+5,iii+1)=0.0d0
+        totlength=0.0d0
+        do k=nnt,nct
+          if (itype(k).eq.ntyp1) cycle
+          totlength=totlength+1.0d0
+          l=isecstr(k)
+          q(nQ+3+l,iii+1)=q(nQ+3+l,iii+1)+1.0d0
+        enddo
+        q(nQ+3,iii+1)=q(nQ+3,iii+1)/totlength
+        q(nQ+4,iii+1)=q(nQ+4,iii+1)/totlength
+        q(nQ+5,iii+1)=q(nQ+5,iii+1)/totlength
+c        write (iout,*) "iii",iii," nssbond",nssbond,nss
+c        q(nQ+6,iii+1)=nssbond
+        q(nQ+6,iii+1)=nss
 
         iii=iii+1
         if (q(1,iii).le.0.0d0 .and. indpdb.gt.0)
      &    q(1,iii)=qwolynes(0,0,ipermin)
+c        write (iout,*) "iii",iii," q",q(1,iii)
         write (ientout,rec=iii) 
      &   ((csingle(l,k),l=1,3),k=1,nres),
      &   ((csingle(l,k+nres),l=1,3),k=nnt,nct),
@@ -365,7 +410,7 @@ c------------------------------------------------------------------------------
       include "COMMON.CONTACTS1"
       character*64 nazwa
       character*80 bxname,cxname
-      character*64 bprotfile_temp
+      character*256 bprotfile_temp
       character*3 liczba,licz
       character*2 licz2
       integer i,itj,ii,iii,j,k,l