Lorentzian restraints on distances in wham
[unres.git] / source / wham / src / make_ensemble1.F
index 5d7b750..fd548fc 100644 (file)
       double precision fT(6),fTprim(6),fTbis(6),quot,quotl1,quotl,kfacl,
      &  eprim,ebis,temper,kfac/2.4d0/,T0/300.0d0/
       double precision etot,evdw,evdw_t,evdw2,ees,evdw1,ebe,etors,
-     &      escloc,
+     &      escloc,ehomology_constr,
      &      ehpb,ecorr,ecorr5,ecorr6,eello_turn4,eello_turn3,
-     &      eturn6,eel_loc,edihcnstr,etors_d,estr,evdw2_14,esccor,tt
+     &      eturn6,eel_loc,edihcnstr,etors_d,estr,evdw2_14,esccor,tt,
+     &      edfadis,edfator,edfanei,edfabet
       integer i,ii,ik,iproc,iscor,j,k,l,ib,iparm,iprot,nlist
       double precision qfree,sumprob,eini,efree,rmsdev
       character*80 bxname
@@ -34,7 +35,7 @@
       character*5 ctemper
       integer ilen
       external ilen
-      real*4 Fdimless(MaxStr)
+      real*4 Fdimless(MaxStr),Fdimless_(MaxStr)
       double precision enepot(MaxStr)
       integer iperm(MaxStr)
       integer islice
@@ -162,33 +163,44 @@ c              write (iout,*) 1.0d0/(beta_h(ib,iparm)*1.987D-3),ft
             estr=enetb(18,i,iparm)
             esccor=enetb(19,i,iparm)
             edihcnstr=enetb(20,i,iparm)
+            ehomology_constr=enetb(22,i,iparm)
+            edfadis=enetb(23,i,iparm)
+            edfator=enetb(24,i,iparm)
+            edfanei=enetb(25,i,iparm)
+            edfabet=enetb(26,i,iparm)
+            if (homol_nset.gt.1)
+     &       ehomology_constr=waga_homology(homol_nset)*ehomology_constr
 #ifdef SPLITELE
             etot=wsc*(evdw+ft(6)*evdw_t)+wscp*evdw2+ft(1)*welec*ees
      &      +wvdwpp*evdw1
      &      +wang*ebe+ft(1)*wtor*etors+wscloc*escloc
-     &      +wstrain*ehpb+nss*ebr+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+     &      +wstrain*ehpb+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
      &      +ft(5)*wcorr6*ecorr6+ft(3)*wturn4*eello_turn4
      &      +ft(2)*wturn3*eello_turn3
      &      +ft(5)*wturn6*eturn6+ft(2)*wel_loc*eel_loc
      &      +edihcnstr+ft(2)*wtor_d*etors_d+ft(1)*wsccor*esccor
-     &      +wbond*estr
+     &      +wbond*estr+ehomology_constr
+     &      +wdfa_dist*edfadis
+     &      +wdfa_tor*edfator+wdfa_nei*edfanei+wdfa_beta*edfabet
 #else
             etot=wsc*(evdw+ft(6)*evdw_t)+wscp*evdw2
      &      +ft(1)*welec*(ees+evdw1)
      &      +wang*ebe+ft(1)*wtor*etors+wscloc*escloc
-     &      +wstrain*ehpb+nss*ebr+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+     &      +wstrain*ehpb+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
      &      +ft(5)*wcorr6*ecorr6+ft(3)*wturn4*eello_turn4
      &      +ft(2)*wturn3*eello_turn3
      &      +ft(5)*wturn6*eturn6+ft(2)*wel_loc*eel_loc+edihcnstr
      &      +ft(2)*wtor_d*etors_d+ft(1)*wsccor*esccor
-     &      +wbond*estr
+     &      +wbond*estr+ehomology_constr
+     &      +wdfa_dist*edfadis
+     &      +wdfa_tor*edfator+wdfa_nei*edfanei+wdfa_beta*edfabet
 #endif
 #ifdef MPI
-            Fdimless(i)=
+            Fdimless_(i)=
      &        beta_h(ib,iparm)*etot-entfac(i)
             potE(i,iparm)=etot
 #ifdef DEBUG
-            write (iout,*) i,indstart(me)+i-1,ib,
+            write (iout,*) 'EEE',i,indstart(me)+i-1,ib,
      &       1.0d0/(1.987d-3*beta_h(ib,iparm)),potE(i,iparm),
      &       -entfac(i),Fdimless(i)
 #endif
@@ -198,7 +210,7 @@ c              write (iout,*) 1.0d0/(beta_h(ib,iparm)*1.987D-3),ft
 #endif
           enddo   ! i
 #ifdef MPI
-          call MPI_Gatherv(Fdimless(1),scount(me),
+          call MPI_Gatherv(Fdimless_(1),scount(me),
      &     MPI_REAL,Fdimless(1),
      &     scount(0),idispl(0),MPI_REAL,Master,
      &     WHAM_COMM, IERROR)
@@ -336,7 +348,15 @@ c          write (iout,*) "qfree",qfree
             enddo
             eini=fdimless(i)
             call pdbout(iperm(i),temper,eini,enepot(i),efree,rmsdev)
+cc          if (temper.eq.300.0d0) then
+cc          write(iout,*) 'Gral i=',iperm(i) ,eini,enepot(i),efree
+cc          flush(iout)
+cc          endif
           enddo
+cc          if (temper.eq.300.0d0) then
+cc          write(iout,*) 'Gral i=',i ,eini,enepot(i),efree
+cc          flush(iout)
+cc          endif
 #ifdef MPI
           endif
 #endif