Adam's wham update
[unres.git] / source / wham / src-HCD / enecalc1.F
index b64de48..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
+      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,9 +176,9 @@ 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
         write (iout,'(8f10.5)') ((c(l,k),l=1,3),k=1,nres),
@@ -215,8 +233,8 @@ c     &       eini-energia(0)
           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) 
@@ -260,6 +278,30 @@ 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)