update
[unres.git] / source / wham / src-M / enecalc1.F
index 5ce2fff..77cecc2 100644 (file)
@@ -35,7 +35,7 @@
       double precision tole /1.0d-1/
       integer i,itj,ii,iii,j,k,l,licz
       integer ir,ib,ipar,iparm
-      integer iscor,islice
+      integer iscor,islice,scount_buff(0:99)
       real*4 csingle(3,maxres2)
       double precision energ
       double precision temp
@@ -51,7 +51,8 @@
       iii=0
       ii=0
       errmsg_count=0
-      write (iout,*) "enecalc: nparmset ",nparmset
+c      write (iout,*) "enecalc: nparmset ",nparmset
+c      write (iout,*) "enecalc: tormode ",tor_mode
 #ifdef MPI
       do iparm=1,nParmSet
         do ib=1,nT_h(iparm)
@@ -60,6 +61,8 @@
           enddo
         enddo
       enddo
+      write (iout,*) "indstart(me1),indend(me1)"
+     &,indstart(me1),indend(me1)
       do i=indstart(me1),indend(me1)
 #else
       do iparm=1,nParmSet
@@ -71,6 +74,7 @@
       enddo
       do i=1,ntot
 #endif
+
         read(ientout,rec=i,err=101) 
      &    ((csingle(l,k),l=1,3),k=1,nres),
      &    ((csingle(l,k+nres),l=1,3),k=nnt,nct),
@@ -154,19 +158,23 @@ 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"
         call etotal(energia(0),fT)
+C        write (iout,*) "tuz za energia"
+#define DEBUG
 #ifdef DEBUG
-        write (iout,*) "Conformation",i
-          write (iout,'(8f10.5)') ((c(l,k),l=1,3),k=1,nres)
-          write (iout,'(8f10.5)') ((c(l,k+nres),l=1,3),k=nnt,nct)
+c        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)
         call enerprint(energia(0),fT)
-        write (iout,'(2i5,21f8.2)') i,iparm,(energia(k),k=1,21)
-        write (iout,*) "ftors",ftors
-        call briefout(i,energia(0))
-        temp=1.0d0/(beta_h(ib,ipar)*1.987D-3)
-        write (iout,*) "temp", temp
-        call pdbout(i,temp,energia(0),energia(0),0.0d0,0.0d0)
+c        write (iout,'(2i5,21f8.2)') i,iparm,(energia(k),k=1,21)
+c        write (iout,*) "ftors(1)",ftors(1)
+c        call briefout(i,energia(0))
+c        temp=1.0d0/(beta_h(ib,ipar)*1.987D-3)
+c        write (iout,*) "temp", temp
+c        call pdbout(i,temp,energia(0),energia(0),0.0d0,0.0d0)
 #endif
+#undef DEBUG
         if (energia(0).ge.1.0d20) then
           write (iout,*) "NaNs detected in some of the energy",
      &     " components for conformation",ii+1
@@ -201,6 +209,13 @@ c        call pdbout(ii+1,beta_h(ib,ipar),efree,energia(0),0.0d0,rmsdev)
      &         " the value read in: ",energia(0),eini," point",
      &         iii+1,indstart(me1)+iii," T",
      &         1.0d0/(1.987D-3*beta_h(ib,ipar))
+          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)
+              call enerprint(energia(0),fT)
               errmsg_count=errmsg_count+1
               if (errmsg_count.gt.maxerrmsg_count) 
      &          write (iout,*) "Too many warning messages"
@@ -215,8 +230,9 @@ c        call pdbout(ii+1,beta_h(ib,ipar),efree,energia(0),0.0d0,rmsdev)
               endif
             endif
           endif
+C          write (iout,*) "Czy tu dochodze"
           potE(iii+1,iparm)=energia(0)
-          do k=1,21
+          do k=1,22
             enetb(k,iii+1,iparm)=energia(k)
           enddo
 #ifdef DEBUG
@@ -250,6 +266,7 @@ c          call enerprint(energia(0),fT)
      &   ((csingle(l,k+nres),l=1,3),k=nnt,nct),
      &   nss,(ihpb(k),jhpb(k),k=1,nss),
      &   potE(iii,ipar),efree,rmsdev,(q(k,iii),k=1,nQ),iR,ib,ipar
+        write (iout,*) "q",(q(k,iii),k=1,nQ)," rms",q(nQ+1,iii)
 c        write (iout,'(2i5,2e15.5)') ii,iii,potE(iii,ipar),efree
 #ifdef MPI
         if (separate_parset) then
@@ -265,12 +282,15 @@ c     &   " snk",snk_p(iR,ib,ipar)
   121   continue
       enddo   
 #ifdef MPI
-      scount(me)=iii 
-      write (iout,*) "Me",me," scount",scount(me)
+      scount_buff(me)=iii 
+      write (iout,*) "Me",me," scount_buff",scount_buff(me)
       call flush(iout)
 c  Master gathers updated numbers of conformations written by all procs.
-      call MPI_AllGather( scount(me), 1, MPI_INTEGER, scount(0), 1, 
+c      call MPI_AllGather(MPI_IN_PLACE,1,MPI_DATATYPE_NULL,scount(0),1,
+c     &  MPI_INTEGER, WHAM_COMM, IERROR)
+      call MPI_AllGather( scount_buff(me), 1, MPI_INTEGER, scount(0), 1,
      &  MPI_INTEGER, WHAM_COMM, IERROR)
+
       indstart(0)=1
       indend(0)=scount(0)
       do i=1, Nprocs-1
@@ -342,6 +362,7 @@ c------------------------------------------------------------------------------
       include "COMMON.ENERGIES"
       include "COMMON.COMPAR"
       include "COMMON.PROT"
+      include "COMMON.CONTACTS1"
       character*64 nazwa
       character*80 bxname,cxname
       character*64 bprotfile_temp
@@ -355,7 +376,8 @@ c------------------------------------------------------------------------------
       double precision energ
       integer ilen,iroof
       external ilen,iroof
-      integer ir,ib,iparm
+      integer ir,ib,iparm, scount_buff(0:99)
+      integer isecstr(maxres)
       write (licz2,'(bz,i2.2)') islice
       call opentmp(islice,ientout,bprotfile_temp)
       write (iout,*) "bprotfile_temp ",bprotfile_temp
@@ -454,8 +476,12 @@ c        write (iout,*) iR,ib,iparm,eini,efree
         iscore=0
 c        write (iout,*) "Calling conf_compar",i
 c        call flush(iout)
+         anatemp= 1.0d0/(beta_h(ib,iparm)*1.987D-3)
         if (indpdb.gt.0) then
           call conf_compar(i,.false.,.true.)
+c        else
+c            call elecont(.false.,ncont,icont,nnt,nct)
+c            call secondary2(.false.,.false.,ncont,icont,isecstr)
         endif
 c        write (iout,*) "Exit conf_compar",i
 c        call flush(iout)
@@ -655,8 +681,13 @@ c      write (iout,*) "xdrf3dfcoord"
 c      call flush(iout)
       call xdrfint_(ixdrf, nss, iret)
       do j=1,nss
-        call xdrfint_(ixdrf, ihpb(j), iret)
-        call xdrfint_(ixdrf, jhpb(j), iret)
+           if (dyn_ss) then
+            call xdrfint(ixdrf, idssb(j)+nres, iret)
+            call xdrfint(ixdrf, jdssb(j)+nres, iret)
+           else
+            call xdrfint_(ixdrf, ihpb(j), iret)
+            call xdrfint_(ixdrf, jhpb(j), iret)
+           endif
       enddo
       call xdrffloat_(ixdrf,real(eini),iret) 
       call xdrffloat_(ixdrf,real(efree),iret) 
@@ -667,8 +698,13 @@ c      call flush(iout)
 
       call xdrfint(ixdrf, nss, iret)
       do j=1,nss
-        call xdrfint(ixdrf, ihpb(j), iret)
-        call xdrfint(ixdrf, jhpb(j), iret)
+           if (dyn_ss) then
+            call xdrfint(ixdrf, idssb(j)+nres, iret)
+            call xdrfint(ixdrf, jdssb(j)+nres, iret)
+           else
+            call xdrfint(ixdrf, ihpb(j), iret)
+            call xdrfint(ixdrf, jhpb(j), iret)
+           endif
       enddo
       call xdrffloat(ixdrf,real(eini),iret) 
       call xdrffloat(ixdrf,real(efree),iret) 
@@ -706,14 +742,14 @@ c------------------------------------------------------------------------------
       include "COMMON.CONTROL"
       include "COMMON.TORCNSTR"
       integer j,k,l,ii,itj,iprint
-      if (.not.check_conf) then
-        conf_check=.true.
-        return
-      endif
+c      if (.not.check_conf) then
+c        conf_check=.true.
+c        return
+c      endif
       call int_from_cart1(.false.)
       do j=nnt+1,nct
-        if (itype(j-1).ne.21 .and. itype(j).ne.21 .and. 
-     &    (vbld(j).lt.2.0d0 .or. vbld(j).gt.5.0d0)) then
+        if (itype(j-1).ne.ntyp1 .and. itype(j).ne.ntyp1 .and. 
+     &    (vbld(j).lt.2.0d0 .or. vbld(j).gt.6.5d0)) then
           if (iprint.gt.0) 
      &    write (iout,*) "Bad CA-CA bond length",j," ",vbld(j),
      &      " for conformation",ii
@@ -737,8 +773,8 @@ c------------------------------------------------------------------------------
       enddo
       do j=nnt,nct
         itj=itype(j)
-        if (itype(j).ne.10 .and.itype(j).ne.21 .and. 
-     &     (vbld(nres+j)-dsc(itj)).gt.2.0d0) then
+        if (itype(j).ne.10 .and.itype(j).ne.ntyp1 .and. 
+     &     (vbld(nres+j)-dsc(iabs(itj))).gt.2.0d0) then
           if (iprint.gt.0) 
      &    write (iout,*) "Bad CA-SC bond length",j," ",vbld(nres+j),
      &     " for conformation",ii