X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=source%2Fcluster%2Fwham%2Fsrc%2Fprobabl.F;h=bdca32a5328e5fc234f327ed232065d5f5fa2c7b;hb=34d3ad3987785642be58fb2f26557d3314215577;hp=9c21be3dc84be1bcbd64bb9e4524c061dcf421cb;hpb=a09fdb5f3686a0c1242c8dd3b6dfadf0d3678aaf;p=unres.git diff --git a/source/cluster/wham/src/probabl.F b/source/cluster/wham/src/probabl.F index 9c21be3..bdca32a 100644 --- a/source/cluster/wham/src/probabl.F +++ b/source/cluster/wham/src/probabl.F @@ -28,19 +28,29 @@ character*5 ctemper integer ilen external ilen - real*4 Fdimless(maxconf) + real*4 Fdimless(maxconf),Fdimless_(maxconf) double precision energia(0:max_ene) + double precision totfree_(maxconf),entfac_(maxconf) do i=1,ncon list_conf(i)=i enddo c do i=1,ncon c write (iout,*) i,list_conf(i) c enddo +c do i=1,ncon +c write(iout,*) "entrop before", entfac(i),i +c enddo + #ifdef MPI write (iout,*) me," indstart",indstart(me)," indend",indend(me) call daread_ccoords(indstart(me),indend(me)) #endif +c do i=1,ncon +c write(iout,*) "entrop after", entfac(i),i +c enddo + c write (iout,*) "ncon",ncon + temper=1.0d0/(beta_h(ib)*1.987D-3) c write (iout,*) "ib",ib," beta_h",beta_h(ib)," temper",temper c quot=1.0d0/(T0*beta_h(ib)*1.987D-3) @@ -104,7 +114,7 @@ c write (iout,*) "i",i," ii",ii totfree(i)=energia(0) #define DEBUG #ifdef DEBUG -c write (iout,*) i," energia",(energia(j),j=0,n_ene) + write (iout,*) i," energia",(energia(j),j=0,20) call enerprint(energia(0),ft) call flush(iout) #endif @@ -131,6 +141,7 @@ c write (iout,*) i," energia",(energia(j),j=0,n_ene) ecorr=enetb(4,i) ecorr5=enetb(5,i) ecorr6=enetb(6,i) +cc if (wcorr6.eq.0) ecorr6=0.0d0 eel_loc=enetb(7,i) eello_turn3=enetb(8,i) eello_turn4=enetb(9,i) @@ -146,7 +157,7 @@ c write (iout,*) i," energia",(energia(j),j=0,n_ene) #ifdef SPLITELE etot=wsc*evdw+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 @@ -155,36 +166,50 @@ c write (iout,*) i," energia",(energia(j),j=0,n_ene) #else etot=wsc*evdw+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 #endif +#ifdef MPI + Fdimless_(i)=beta_h(ib)*etot+entfac(ii) + totfree_(i)=etot +#ifdef DEBUG + write (iout,*) "etrop", i,ii,ib, + & 1.0d0/(1.987d-3*beta_h(ib)),totfree(i), + & entfac(ii),Fdimless_(i) +#endif +#else Fdimless(i)=beta_h(ib)*etot+entfac(ii) totfree(i)=etot #ifdef DEBUG - write (iout,*) i,ii,ib, + write (iout,*) "etrop", i,ii,ib, & 1.0d0/(1.987d-3*beta_h(ib)),totfree(i), & entfac(ii),Fdimless(i) #endif +#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, & MPI_COMM_WORLD, IERROR) - call MPI_Gatherv(totfree(1),scount(me), + call MPI_Gatherv(totfree_(1),scount(me), & MPI_DOUBLE_PRECISION,totfree(1), & scount(0),idispl(0),MPI_DOUBLE_PRECISION,Master, & MPI_COMM_WORLD, IERROR) call MPI_Gatherv(entfac(indstart(me)+1),scount(me), - & MPI_DOUBLE_PRECISION,entfac(1), + & MPI_DOUBLE_PRECISION,entfac_(1), & scount(0),idispl(0),MPI_DOUBLE_PRECISION,Master, & MPI_COMM_WORLD, IERROR) if (me.eq.Master) then + do i=1,ncon + entfac(i)=entfac_(i) + enddo #endif +c#define DEBUG #ifdef DEBUG write (iout,*) "The FDIMLESS array before sorting" do i=1,ncon @@ -198,20 +223,21 @@ c write (iout,*) i," energia",(energia(j),j=0,n_ene) write (iout,*) i,list_conf(i),fdimless(i) enddo #endif +c#undef DEBUG do i=1,ncon totfree(i)=fdimless(i) enddo qfree=0.0d0 do i=1,ncon - qfree=qfree+exp(-fdimless(i)+fdimless(1)) + qfree=qfree+dexp(dble(-fdimless(i)+fdimless(1))) enddo c write (iout,*) "qfree",qfree nlist=1 sumprob=0.0 do i=1,min0(ncon,maxstr_proc)-1 - sumprob=sumprob+exp(-fdimless(i)+fdimless(1))/qfree + sumprob=sumprob+dexp(dble(-fdimless(i)+fdimless(1)))/qfree #ifdef DEBUG - write (iout,*) i,ib,beta_h(ib), + write (iout,*) 'i=',i,ib,beta_h(ib), & 1.0d0/(1.987d-3*beta_h(ib)),list_conf(i), & totfree(list_conf(i)), & -entfac(list_conf(i)),fdimless(i),sumprob