update
[unres.git] / source / wham / src / enecalc1.F
index 4b9414d..c71b9c0 100644 (file)
@@ -44,8 +44,9 @@
       double precision fT(6),quot,quotl,kfacl,kfac /2.4d0/,T0 /3.0d2/
       double precision tt
       integer snk_p(MaxR,MaxT_h,Max_parm)
+      integer scount_(0:MaxProcs)
       logical lerr
-      character*64 bprotfile_temp
+      character*128 bprotfile_temp
       call opentmp(islice,ientout,bprotfile_temp)
       iii=0
       ii=0
@@ -75,6 +76,7 @@
      &    ((csingle(l,k+nres),l=1,3),k=nnt,nct),
      &    nss,(ihpb(k),jhpb(k),k=1,nss),
      &    eini,efree,rmsdev,(q(j,iii+1),j=1,nQ),iR,ib,ipar
+cc       write(iout,*), 'NAWEJ',i,eini
          if (indpdb.gt.0) then
            do k=1,nres
              do l=1,3
@@ -153,7 +155,6 @@ c     &   " kfac",kfac,"quot",quot," fT",fT
      &      wtor_d,wsccor,wbond
 #endif
         call etotal(energia(0),fT)
-#define DEBUG
 #ifdef DEBUG
         write (iout,*) "Conformation",i
         call enerprint(energia(0),fT)
@@ -161,7 +162,6 @@ c        write (iout,'(2i5,21f8.2)') i,iparm,(energia(k),k=1,21)
 c        write (iout,*) "ftors",ftors
 c        call intout
 #endif
-#undef DEBUG
         if (energia(0).ge.1.0d20) then
           write (iout,*) "NaNs detected in some of the energy",
      &     " components for conformation",ii+1
@@ -196,6 +196,11 @@ 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))
+             call enerprint(energia(0),fT)
+             call pdbout(iii+1,beta_h(ib,ipar),
+     &                   eini,energia(0),0.0d0,rmsdev)
+             write (iout,*)
+
               errmsg_count=errmsg_count+1
               if (errmsg_count.gt.maxerrmsg_count) 
      &          write (iout,*) "Too many warning messages"
@@ -214,6 +219,8 @@ c        call pdbout(ii+1,beta_h(ib,ipar),efree,energia(0),0.0d0,rmsdev)
           do k=1,21
             enetb(k,iii+1,iparm)=energia(k)
           enddo
+c          write(iout,*) "iCHUJ TU STRZELI",i,iii,entfac(i)
+c          call enerprint(energia(0),fT)
 #ifdef DEBUG
           write (iout,'(2i5,f10.1,3e15.5)') i,iii,
      &     1.0d0/(beta_h(ib,ipar)*1.987D-3),energia(0),eini,efree
@@ -263,11 +270,12 @@ c     &   " snk",snk_p(iR,ib,ipar)
   121   continue
       enddo   
 #ifdef MPI
-      scount(me)=iii 
+c      scount(me)=iii 
+      scount_(me)=iii 
       write (iout,*) "Me",me," scount",scount(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, 
+      call MPI_AllGather( scount_(me), 1, MPI_INTEGER, scount(0), 1, 
      &  MPI_INTEGER, WHAM_COMM, IERROR)
       indstart(0)=1
       indend(0)=scount(0)
@@ -342,7 +350,7 @@ c------------------------------------------------------------------------------
       include "COMMON.PROT"
       character*64 nazwa
       character*80 bxname,cxname
-      character*64 bprotfile_temp
+      character*128 bprotfile_temp
       character*3 liczba,licz
       character*2 licz2
       integer i,itj,ii,iii,j,k,l
@@ -437,12 +445,22 @@ c------------------------------------------------------------------------------
 #else
       do i=1,ntot(islice)
 #endif
+cc        if (dyn_ss) then
+cc        read(ientout,rec=i,err=101)
+cc     &    ((csingle(l,k),l=1,3),k=1,nres),
+cc     &    ((csingle(l,k+nres),l=1,3),k=nnt,nct),
+cc     &    nss,(idssb(k),jdssb(k),k=1,nss),
+cc     &    eini,efree,rmsdev,(q(k,i),k=1,nQ),iR,ib,iparm
+cc        idssb(k)=idssb(k)-nres
+cc        jdssb(k)=jdssb(k)-nres
+cc        else
         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),
      &    nss,(ihpb(k),jhpb(k),k=1,nss),
      &    eini,efree,rmsdev,(q(k,i),k=1,nQ),iR,ib,iparm
-c        write (iout,*) iR,ib,iparm,eini,efree
+cc         endif
+cc        write (iout,*) 'CC', iR,ib,iparm,eini,efree
         do j=1,2*nres
           do k=1,3
             c(k,j)=csingle(k,j)
@@ -452,14 +470,24 @@ c        write (iout,*) iR,ib,iparm,eini,efree
         iscore=0
         if (indpdb.gt.0) then
           call conf_compar(i,.false.,.true.)
-        endif
+        endif 
+c        if (dyn_ss) then
         if (bxfile .or.cxfile .or. ensembles.gt.0) write (ientin,rec=i)  
      &    ((csingle(l,k),l=1,3),k=1,nres),
      &    ((csingle(l,k+nres),l=1,3),k=nnt,nct),
      &    nss,(ihpb(k),jhpb(k),k=1,nss),
 c     &    potE(i,iparm),-entfac(i),rms_nat,iscore 
      &    potE(i,nparmset),-entfac(i),rms_nat,iscore 
-c        write (iout,'(2i5,3e15.5)') i,me,potE(i,iparm),-entfac(i)
+c        else
+          if (bxfile .or.cxfile .or. ensembles.gt.0) write
+     &     (ientin,rec=i)
+     &    ((csingle(l,k),l=1,3),k=1,nres),
+     &    ((csingle(l,k+nres),l=1,3),k=nnt,nct),
+     &    nss,(ihpb(k),jhpb(k),k=1,nss),
+c     &    potE(i,iparm),-entfac(i),rms_nat,iscore
+     &    potE(i,nparmset),-entfac(i),rms_nat,iscore
+c        endif
+        write (iout,'(2i5,3e15.5)') i,me,potE(i,iparm),-entfac(i)
 #ifndef MPI
         if (cxfile) call cxwrite(ixdrf,csingle,potE(i,nparmset),
      &    -entfac(i),rms_nat,iscore)
@@ -538,17 +566,37 @@ c        write (iout,*) "j",j," indstart",indstart(j)," indend",indend(j)
 c        call flush(iout)
         do i=indstart(j),indend(j)
           iii = iii+1
+cc          if (dyn_ss) then
+cc          read(ientin,rec=iii,err=101)
+cc     &      ((csingle(l,k),l=1,3),k=1,nres),
+cc     &      ((csingle(l,k+nres),l=1,3),k=nnt,nct),
+cc     &      nss,(idssb(k),jdssb(k),k=1,nss),
+cc    &      eini,efree,rmsdev,iscor
+cc          idssb(k)=idssb(k)-nres
+cc          jdssb(k)=jdssb(k)-nres
+cc          else
           read(ientin,rec=iii,err=101)
      &      ((csingle(l,k),l=1,3),k=1,nres),
      &      ((csingle(l,k+nres),l=1,3),k=nnt,nct),
      &      nss,(ihpb(k),jhpb(k),k=1,nss),
      &      eini,efree,rmsdev,iscor
+cc          endif
           if (bxfile .or. ensembles.gt.0) then
-            write (ientout,rec=i)
+cc          if (dyn_ss) then
+cc            write (ientout,rec=i)
+cc     &        ((csingle(l,k),l=1,3),k=1,nres),
+cc     &        ((csingle(l,k+nres),l=1,3),k=nnt,nct),
+cc     &        nss,(idssb(k)+nres,jdssb(k)+nres,k=1,nss),
+cc    &        eini,efree,rmsdev,iscor
+cc           else
+                        write (ientout,rec=i)
      &        ((csingle(l,k),l=1,3),k=1,nres),
      &        ((csingle(l,k+nres),l=1,3),k=nnt,nct),
      &        nss,(ihpb(k),jhpb(k),k=1,nss),
      &        eini,efree,rmsdev,iscor
+cc           write(iout,*) "W poszukiwaniu zlotych galotow"
+cc           write(iout,*) "efree=",efree,iii
+cc           endif
           endif
           if(cxfile)call cxwrite(ixdrf,csingle,eini,efree,rmsdev,iscor)
 #ifdef DEBUG
@@ -642,6 +690,7 @@ c      call flush(iout)
 
 c      write (iout,*) "itmp",itmp
 c      call flush(iout)
+c       write (iout,*) "CNZ",eini,dyn_ss
 #if (defined(AIX) && !defined(JUBL))
       call xdrf3dfcoord_(ixdrf, xoord, itmp, prec, iret)
 
@@ -649,8 +698,13 @@ c      write (iout,*) "xdrf3dfcoord"
 c      call flush(iout)
       call xdrfint_(ixdrf, nss, iret)
       do j=1,nss
+cc       if (dyn_ss) then
+cc       call xdrfint_(ixdrf, idssb(j)+nres, iret)
+cc        call xdrfint_(ixdrf, jdssb(j)+nres, iret)
+cc       else
         call xdrfint_(ixdrf, ihpb(j), iret)
         call xdrfint_(ixdrf, jhpb(j), iret)
+cc       endif
       enddo
       call xdrffloat_(ixdrf,real(eini),iret) 
       call xdrffloat_(ixdrf,real(efree),iret) 
@@ -661,11 +715,18 @@ c      call flush(iout)
 
       call xdrfint(ixdrf, nss, iret)
       do j=1,nss
+cc       if (dyn_ss) then
+cc        call xdrfint(ixdrf, idssb(j), iret)
+cc        call xdrfint(ixdrf, jdssb(j), iret)
+cc        idssb(j)=idssb(j)-nres
+cc       jdssb(j)=jdssb(j)-nres
+cc       else
         call xdrfint(ixdrf, ihpb(j), iret)
         call xdrfint(ixdrf, jhpb(j), iret)
+cc       endif
       enddo
       call xdrffloat(ixdrf,real(eini),iret) 
-      call xdrffloat(ixdrf,real(efree),iret) 
+      call xdrffloat(ixdrf,real(efree),iret)
       call xdrffloat(ixdrf,real(rmsdev),iret) 
       call xdrfint(ixdrf,iscor,iret) 
 #endif