subroutine make_distrib(icl,iprot) implicit none include 'DIMENSIONS' include 'DIMENSIONS.ZSCOPT' include 'COMMON.ENERGIES' include 'COMMON.ALLPROT' include 'COMMON.CLASSES' include 'COMMON.WEIGHTDER' include 'COMMON.VMCPAR' include 'COMMON.PROTNAME' character*6 liczba character*2 lbatch character*256 nazwa double precision emin,emax,erange,binsize,aux,sumpart,fac, & distr(0:1000,maxT,maxbatch) integer i,ind,j,k,nbin,ib,iprot,icl,ibatch integer ilen external ilen logical not_done print *,"Make_Distrib: iprot",iprot," icl",icl emin=1.0e20 emax=-1.0e20 do i=1,ntot(iprot) if (iscore(i,0,iprot).eq.icl) then if (emin.gt.e_total(i,iprot)) then emin=e_total(i,iprot) endif if (emax.lt.e_total(i,iprot)) then emax=e_total(i,iprot) endif endif enddo do ibatch=1,nbatch(iprot) do ib=1,nbeta(ibatch,iprot) fac=betaT(2*ib,ibatch,iprot) erange=emax-emin binsize=1.0d0 nbin=erange/binsize print *,"emin",emin," emax",emax," binsize",binsize," nbin",nbin do i=0,nbin distr(i,ib,ibatch)=0.0D0 enddo sumpart=0.0d0 do i=1,ntot(iprot) if (iscore(i,0,iprot).eq.icl) then ind=dint((e_total(i,iprot)-emin)/binsize) aux=fac*(e_total(i,iprot)-emin) if (aux.lt.50.0d0) then aux=dexp(-aux) distr(ind,ib,ibatch)=distr(ind,ib,ibatch)+aux sumpart=sumpart+aux endif endif enddo do i=0,nbin distr(i,ib,ibatch)=distr(i,ib,ibatch)/sumpart enddo enddo enddo c not_done=.true. do while (not_done) not_done=.false. do ibatch=1,nbatch(iprot) do ib=1,nbeta(ibatch,iprot) if (distr(nbin,ib,ibatch).ge.1.0d-5) goto 10 enddo enddo nbin=nbin-1 not_done=.true. 10 continue enddo write (liczba,'(bz,i6.6)') icl do ibatch=1,nbatch(iprot) write(lbatch,'(bz,i2.2)') ibatch nazwa=protname(iprot)(:ilen(protname(iprot))) & //'.'//lbatch//'.'//liczba// & '.distr' open(88,file=nazwa,status="unknown") write (88,'(a10,20f10.1)') '# Energy',(betaT(ib,ibatch,iprot), & ib=1,nbeta(ibatch,iprot)) do i=0,nbin write (88,'(21f10.3)') binsize*floor(emin/binsize) & +i*binsize,(distr(i,ib,ibatch),ib=1,nbeta(ibatch,iprot)) enddo close(88) enddo ! ibatch return end