1 subroutine proc_data(nvarr,x,mepython,*)
4 include "DIMENSIONS.ZSCOPT"
7 integer Ierror,Errcode,status(MPI_STATUS_SIZE),tag
10 include "COMMON.CONTROL"
11 include "COMMON.ENERGIES"
12 include "COMMON.VMCPAR"
13 include "COMMON.OPTIM"
14 include "COMMON.WEIGHTS"
15 include "COMMON.PROTNAME"
16 include "COMMON.IOUNITS"
17 include "COMMON.FFIELD"
18 include "COMMON.PROTFILES"
19 include "COMMON.COMPAR"
20 include "COMMON.CHAIN"
21 include "COMMON.CLASSES"
22 include "COMMON.THERMAL"
23 include "COMMON.WEIGHTDER"
25 include "COMMON.SBRIDGE"
26 include "COMMON.INTERACT"
28 double precision fac0,t0
29 double precision fT(5),ftprim(5),ftbis(5),quot,quotl,quotl1,
30 & denom,kfac,kfacl,logfac,eplus,eminus,tanhT,entfacmax,
32 real csingle(3,maxres2)
33 double precision creff(3,maxres2),cc(3,maxres2)
34 double precision przes(3),obrot(3,3),etoti
37 integer iprot,i,ind,ii,j,k,kk,l,ncl,is,ie,nsum,nng,nvarr,ng,
38 & inn,in,iref,ib,ibatch,num,itmp,imin
39 integer l1,l2,ncon_all
40 double precision rcyfr
41 integer jj,istart_conf,iend_conf,ipass_conf,iii
44 double precision ej,emaxj,sumP,sumP_t
46 double precision x(max_paropt)
47 double precision wconf(maxstr_proc)
49 double precision e_total_T_(maxstr_proc)
53 double precision rms,rmsave,rmsmin,rmsnat,qwolynes,qwolyness
54 write (iout,*) "PROC: My Python rank is",mepython
58 if (me.eq.Master) then
59 write (iout,*) "fac0",fac0
60 write(iout,*) "torsional and valence angle mode",tor_mode
63 c Determine the number of variables and the initial vector of optimizable
67 if (restart_flag) then
68 call w2x(nvarr,x_orig,*11)
72 open (88,file=prefix(:ilen(prefix))//'.restin',status='unknown')
73 read(88,*,end=99,err=99) (x(i),i=1,nvarr)
75 if (me.eq.Master) then
78 & "Variables replaced with values from the restart file."
80 write (iout,'(i5,f15.5)') i,x(i)
86 99 if (me.eq.Master) write (iout,*)
87 & "Error - restart file nonexistent, incompatible or damaged."
89 call MPI_Finalize(Ierror)
92 & "Error - restart file nonexistent, incompatible or damaged."
95 if (me.eq.Master) write (iout,*) "PROC: after W2X nvarr",nvarr
105 c Setup weights for UNRES
132 if (mepython.eq.0) return
137 call restore_molinfo(iprot)
139 DO IBATCH=1,natlike(iprot)+2
141 c Calculate temperature-dependent weight scaling factors
142 do ib=1,nbeta(ibatch,iprot)
143 fac=betaT(ib,ibatch,iprot)
145 if (rescale_mode.eq.0) then
151 else if (rescale_mode.eq.1) then
158 denom=kfacl-1.0d0+quotl
160 ftprim(l)=-l*ft(l)*quotl1/(T0*denom)
161 ftbis(l)=l*kfacl*quotl1*
162 & (2*l*quotl-(l-1)*denom)/(quot*t0*t0*denom**3)
164 & write (iout,*) "ib",ib," beta",betaT(ib,ibatch,iprot),
165 & " quot",quot," l",l,fT(l),fTprim(l),fTbis(l)
167 else if (rescale_mode.eq.2) then
174 logfac=1.0d0/dlog(eplus+eminus)
175 tanhT=(eplus-eminus)/(eplus+eminus)
176 fT(l)=1.12692801104297249644d0*logfac
177 ftprim(l)=-l*quotl1*ft(l)*tanhT*logfac/T0
178 ftbis(l)=(l-1)*ftprim(l)/(quot*T0)-
179 & 2*l*quotl1/T0*logfac*
180 & (2*l*quotl1*ft(l)/(T0*(eplus+eminus)**2)
184 if (me.eq.Master) then
185 write (iout,*) "Unknown RESCALE_MODE",rescale_mode
191 escal(k,ib,ibatch,iprot)=1.0d0
192 escalprim(k,ib,ibatch,iprot)=0.0d0
193 escalbis(k,ib,ibatch,iprot)=0.0d0
195 escal(3,ib,ibatch,iprot)=ft(1)
196 escal(4,ib,ibatch,iprot)=ft(3)
197 escal(5,ib,ibatch,iprot)=ft(4)
198 escal(6,ib,ibatch,iprot)=ft(5)
199 escal(7,ib,ibatch,iprot)=ft(2)
200 escal(8,ib,ibatch,iprot)=ft(2)
201 escal(9,ib,ibatch,iprot)=ft(3)
202 escal(10,ib,ibatch,iprot)=ft(5)
203 escal(13,ib,ibatch,iprot)=ft(1)
204 escal(14,ib,ibatch,iprot)=ft(2)
205 escal(19,ib,ibatch,iprot)=ft(1)
206 escalprim(3,ib,ibatch,iprot)=ftprim(1)
207 escalprim(4,ib,ibatch,iprot)=ftprim(3)
208 escalprim(5,ib,ibatch,iprot)=ftprim(4)
209 escalprim(6,ib,ibatch,iprot)=ftprim(5)
210 escalprim(7,ib,ibatch,iprot)=ftprim(2)
211 escalprim(8,ib,ibatch,iprot)=ftprim(2)
212 escalprim(9,ib,ibatch,iprot)=ftprim(3)
213 escalprim(10,ib,ibatch,iprot)=ftprim(5)
214 escalprim(13,ib,ibatch,iprot)=ftprim(1)
215 escalprim(14,ib,ibatch,iprot)=ftprim(2)
216 escalprim(19,ib,ibatch,iprot)=ftprim(1)
217 escalbis(3,ib,ibatch,iprot)=ftbis(1)
218 escalbis(4,ib,ibatch,iprot)=ftbis(3)
219 escalbis(5,ib,ibatch,iprot)=ftbis(4)
220 escalbis(6,ib,ibatch,iprot)=ftbis(5)
221 escalbis(7,ib,ibatch,iprot)=ftbis(2)
222 escalbis(8,ib,ibatch,iprot)=ftbis(2)
223 escalbis(9,ib,ibatch,iprot)=ftbis(3)
224 escalbis(10,ib,ibatch,iprot)=ftbis(5)
225 escalbis(13,ib,ibatch,iprot)=ftbis(1)
226 escalbis(14,ib,ibatch,iprot)=ftbis(2)
227 escalbis(19,ib,ibatch,iprot)=ftbis(1)
230 betmin(ibatch,iprot)=betaT(1,ibatch,iprot)
231 betmax(ibatch,iprot)=betaT(1,ibatch,iprot)
232 do ib=2,nbeta(ibatch,iprot)
233 if (betaT(ib,ibatch,iprot).lt.betmin(ibatch,iprot))
234 & betmin(ibatch,iprot)=betaT(ib,ibatch,iprot)
235 if (betaT(ib,ibatch,iprot).gt.betmax(ibatch,iprot))
236 & betmax(ibatch,iprot)=betaT(ib,ibatch,iprot)
238 if (me.eq.Master) write (iout,'(2(a,i5,2x),2(a,f7.2,2x))')
239 & "Protein",iprot," batch",ibatch,
240 & " betmin",betmin(ibatch,iprot)," betmax",betmax(ibatch,iprot)
246 c Compute energy and entropy histograms to filter out conformations
247 c with potntially too low or too high weights.
249 call determine_histograms
250 if (me.eq.Master) write (iout,*) "Exit determine_histograms"
253 c Make the working list of conformations
255 if (me.eq.Master) then
256 write (iout,*) "Calling make_list"
258 call make_list(.true.,.true.,nvarr,x)
260 call make_list(.false.,.true.,nvarr,x)
262 if (me.eq.Master) then
263 write (iout,*) "Exit make_list"
266 c 3/8/2013 Calculate RMSDs/Qs and the Ptab array
269 call restore_molinfo(iprot)
271 open (icbase,file=bprotfiles(iprot),status="old",
272 & form="unformatted",access="direct",recl=lenrec(iprot))
273 entfacmax=entfac(1,iprot)
274 sument=entfac(1,iprot)
275 sumentsq=entfac(1,iprot)**2
276 do i=2,ntot_work(iprot)
277 if (entfac(i,iprot).gt.entfacmax) entfacmax=entfac(i,iprot)
278 sument=sument+entfac(i,iprot)
279 sumentsq=sumentsq+entfac(i,iprot)**2
281 sument=sument/ntot_work(iprot)
282 sumentsq=dsqrt(sumentsq/ntot_work(iprot)-sument**2)
284 & write (2,*) "entfacmax",entfacmax," entave",sument,
288 nchunk_conf(iprot) = iroof(scount(me1,iprot),maxstr_proc)
292 do i=indstart(me1,iprot),indend(me1,iprot),maxstr_proc
293 ipass_conf=ipass_conf+1
294 if (me.eq.Master) write (iout,*) "Pass",ipass_conf
296 iend_conf=min0(i+maxstr_proc-1,indend(me1,iprot))
298 nchunk_conf(iprot) = iroof(ntot(iprot),maxstr_proc)
301 do i=1,ntot(iprot),maxstr_proc
302 ipass_conf=ipass_conf+1
303 if (me.eq.Master) write (iout,*) "Pass",ipass_conf
305 iend_conf=min0(i+maxstr_proc-1,ntot(iprot))
308 c Read the chunk of conformations off a DA scratchfile.
310 call daread_ccoords(iprot,istart_conf,iend_conf)
312 IF (GEOM_AND_WHAM_WEIGHTS) THEN
315 do ib=1,nbeta(1,iprot)
317 & write (iout,*) "IB",ib," IPROT",iprot," NREF",nref(ib,iprot)
319 do iii=istart_conf,iend_conf
325 etoti=etoti+ww(k)*escal(k,ib,1,iprot)
328 e_total_T(iii,ib)=entfac(kk,iprot)
329 & +betaT(ib,1,iprot)*(etoti-elowest(ib,1,iprot))
333 write (iout,*) "Energies before Gather"
334 do iii=1,ntot_work(iprot)
335 write (iout,'(i5,100E12.5)') iii,
336 & (e_total_T(iii,ib),ib=1,nbeta(1,iprot))
340 do ib=1,nbeta(1,iprot)
341 do k=1,scount(me1,iprot)
342 e_total_T_(k)=e_total_T(indstart(me1,iprot)+k-1,ib)
344 c call MPI_AllGatherv(e_total_T(indstart(me1,iprot),ib),
345 c & scount(me1,iprot),MPI_DOUBLE_PRECISION,e_total_T(1,ib),
346 c & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,
348 call MPI_AllGatherv(e_total_T_(1),
349 & scount(me1,iprot),MPI_DOUBLE_PRECISION,e_total_T(1,ib),
350 & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,
354 write (iout,*) "Energies after Gather"
355 do iii=1,ntot_work(iprot)
356 write (iout,'(i5,100E12.5)') iii,
357 & (e_total_T(iii,ib),ib=1,nbeta(1,iprot))
362 ENDIF ! GEOM_AND_WHAM_WEIGHTS
365 c write (iout,*) "Start calculating weirms",istart_conf,iend_conf
366 do iii=istart_conf,iend_conf
369 c write (iout,*) "Calculating weirms iii",iii," ii",ii," k",k
371 call restore_ccoords(iprot,ii)
372 c Calculate the rmsds of the current conformations and convert them into weights
373 c to approximate equal weighting of all points of the conformational space
379 do ib=1,nbeta(1,iprot)
382 do iref=1,ntot_work(iprot)
383 if (iref.ne.iii) then
384 read(icbase,rec=iref) ((csingle(l,k),l=1,3),k=1,nres),
385 & ((csingle(l,k),l=1,3),k=nnt+nres,nct+nres),
386 & nss,(ihpb(k),jhpb(k),k=1,nss),eini(iref,iprot),
387 & entfac(iref,iprot),
388 & ((nu(k,l,ii,iprot),k=1,maxdimnat),l=1,natlike(iprot))
396 write (iout,'(i5,3f10.5,5x,3f10.5)') k,(c(l,k),l=1,3),
400 if (rmscomp(iprot)) then
401 call fitsq(rms,c(1,nstart_sup(iprot)),
402 & creff(1,nstart_sup(iprot)),
403 & nsup(iprot),przes,obrot,non_conv)
405 print *,'Error: FITSQ non-convergent, iref',iref
407 else if (rms.lt.-1.0d-6) then
408 print *,'Error: rms^2 = ',rms,iref
410 else if (rms.lt.0) then
416 write (2,*) "iii",iii," iref=",iref," ib",ib," etotal",
417 & e_total_T(iref,ib),
418 & e_total_T(iii,ib),-e_total_T(iref,ib)+e_total_T(iii,ib),
419 & " rms",rms," fac",dexp(-0.5d0*(rms/sigma2(iprot))**2),
420 & dexp(-e_total_T(iref,ib)+e_total_T(iii,ib)),
421 & dexp(-0.5d0*(rms/sigma2(iprot))**2)*
422 & dexp(-e_total_T(iref,ib)+e_total_T(iii,ib))
424 aux=dexp(-0.5d0*(rms/sigma2(iprot))**2)
426 rms=qwolyness(creff,iprot)
428 write (2,*) "iii",iii," iref=",iref," ib",ib," etotal",
429 & e_total_T(iref,ib),
430 & e_total_T(iii,ib),-e_total_T(iref,ib)+e_total_T(iii,ib),
431 & " rms",-dlog(rms)," fac",rms,
432 & dexp(-e_total_T(iref,ib)+e_total_T(iii,ib)),
433 & rms*dexp(-e_total_T(iref,ib)+e_total_T(iii,ib))
440 do ib=1,nbeta(1,iprot)
441 if (GEOM_AND_WHAM_WEIGHTS) then
442 weirms(iii,ib) = weirms(iii,ib)
443 & +aux*dexp(-e_total_T(iref,ib)+e_total_T(iii,ib))
445 weirms(iii,ib) = weirms(iii,ib)+aux
451 write (iout,*) "weirms"
452 do iii=istart_conf,iend_conf
453 write (iout,"(i5,20e12.5)") iii,(weirms(iii,ib),ib=1,
461 nchunk_conf(iprot) = iroof(scount(me1,iprot),maxstr_proc)
462 DO IB=1,NBETA(1,IPROT)
464 write(csa_bank,'(a,f4.0,4hPtab,i3.3)')
465 & protname(iprot)(:ilen(protname(iprot))),
466 & 1.0d0/(0.001987*betaT(ib,1,iprot)),me
467 open (icsa_bank,file=csa_bank,status="unknown")
472 do i=indstart(me1,iprot),indend(me1,iprot),maxstr_proc
473 ipass_conf=ipass_conf+1
474 if (me.eq.Master) write (iout,*) "Pass",ipass_conf
476 iend_conf=min0(i+maxstr_proc-1,indend(me1,iprot))
478 nchunk_conf(iprot) = iroof(ntot(iprot),maxstr_proc)
481 do i=1,ntot(iprot),maxstr_proc
482 ipass_conf=ipass_conf+1
483 if (me.eq.Master) write (iout,*) "Pass",ipass_conf
485 iend_conf=min0(i+maxstr_proc-1,ntot(iprot))
489 c Read the chunk of conformations off a DA scratchfile.
491 call daread_ccoords(iprot,istart_conf,iend_conf)
493 & write (iout,*) "IB",ib," IPROT",iprot," NREF",nref(ib,iprot)
494 do iii=istart_conf,iend_conf
502 call restore_ccoords(iprot,ii)
503 c write (iout,*) "zeroing Ptab",iii,ii,jj
504 Ptab(jj,ib,iprot)=0.0d0
505 if (rmscomp(iprot)) then
506 do iref=1,nref(ib,iprot)
510 call pdbout(0.0d0,"conf")
511 c write (2,*) "nstart_sup",nstart_sup(iprot),
512 c & " nend_sup",nend_sup(iprot)
513 c do k=nstart_sup(iprot),nend_sup(iprot)
514 c write(2,'(i5,3f10.5,5x,3f10.5)') k,(c(l,k),l=1,3),
515 c & (cref(l,k,iref,ib,iprot),l=1,3)
517 c do k=nstart_sup(iprot),nend_sup(iprot)
518 c write(2,'(i5,3f10.5,5x,3f10.5)') k,(c(l,k+nres),l=1,3),
519 c & (cref(l,k+nres,iref,ib,iprot),l=1,3)
524 c(l,k)=cref(l,k,iref,ib,iprot)
527 call pdbout(0.0d0,"ref")
535 rms=rmsnat(ib,jj,iref,iprot)
537 write (iout,*) "ii",ii," jj",jj," iref",iref,
539 & "efree",efreeref(iref,ib,iprot)
543 if (rms.lt.rmsmin) then
548 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)
549 & +dexp(-efreeref(iref,ib,iprot)
550 & -0.5d0*(rms/sigma2(iprot))**2)
553 rmsave=rmsave/nref(ib,iprot)
556 c AL 1/24/2014 Correct the weight of a conformation to represent energy-free
557 c search of conformational space.
558 aux=dmin1(entfacmax-entfac(k,iprot),60.0d0)
559 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)*dexp(aux)
561 write (iout,*) "iprot",iprot," ib",ib," iii",iii," k",k,
562 c & " entfac",entfac(k,iprot),"aux",aux," Ptab",Ptab(jj,ib,iprot)
563 & "entfac",entfac(k,iprot)," weirms",weirms(iii,ib),
564 & " Ptab",Ptab(jj,ib,iprot)
566 #elif defined(WEIDIST)
567 c write (iout,*) "iii",iii," Ptab",Ptab(jj,ib,iprot),
568 c & " weirms",weirms(iii,ib)," Ptab/weirms",
569 c & Ptab(jj,ib,iprot)/weirms(iii,ib)
571 write (icsa_bank,'(2i6,3f10.5,2f8.4)')
572 & iii,imin,-dlog(Ptab(jj,ib,iprot)),
573 & -dlog(weirms(iii,ib)),
574 & -dlog(Ptab(jj,ib,iprot)/weirms(iii,ib)),
577 if (ib.eq.1) rmstb(iii,iprot)=rmsmin
578 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)/weirms(iii,ib)
579 #elif defined(WEICLUST)
580 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)/weirms(iii,iprot)
582 sumP=sumP+Ptab(jj,ib,iprot)
584 do iref=1,nref(ib,iprot)
585 rms = qwolynes(ib,iref,iprot)
587 write (iout,*) "iii",iii," ii",ii," jj",jj,
588 & "iref",iref," rms",rms,-dlog(rms),
589 & "efree",efreeref(iref,ib,iprot)
591 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)+rms*
592 & *dexp(-efreeref(iref,ib,iprot))
595 c AL 1/24/2014 Correct the weight of a conformation to represent energy-free
596 c search of conformational space.
597 aux=dmin1(entfacmax-entfac(k,iprot),60.0d0)
598 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)*dexp(aux)
600 write (iout,*) "iprot",iprot," ib",ib," iii",iii," k",k,
601 & " entfac",entfac(k,iprot)," aux",aux," Ptab",Ptab(jj,ib,iprot)
603 #elif defined(WEICLUST)
604 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)/weirms(k,iprot)
605 #elif defined(WEIDIST)
607 & write (iout,*) "iii",iii," Ptab",Ptab(jj,ib,iprot),
608 & " weirms",weirms(iii,ib)," Ptab/weirms",
609 & Ptab(jj,ib,iprot)/weirms(iii,ib)
610 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)/weirms(iii,ib)
612 sumP=sumP+Ptab(jj,ib,iprot)
615 write (iout,*) "ii",ii," jj",jj," ib",ib," iprot",iprot,
616 & " Ptab",Ptab(jj,ib,iprot)," sumP",sumP
621 write (iout,*) "iprot",iprot," ib",ib," sumP before REDUCE",sumP
624 call MPI_Allreduce(sumP,sumP_t,1,MPI_DOUBLE_PRECISION,
625 & MPI_SUM,Comm1,IERROR)
629 write (iout,*) "iprot",iprot," ib",ib," sumP after REDUCE",sumP
632 do iii=indstart(me1,iprot),indend(me1,iprot)
635 write (iout,*) "iii",iii," jj",jj," Ptab",Ptab(jj,ib,iprot)
637 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)/sumP
639 write (iout,*) "iii",iii," jj",jj," Ptab",Ptab(jj,ib,iprot)
649 write (iout,*) "ELOWEST at the end of PROC_DATA"
651 do ibatch=1,natlike(iprot)+2
652 do ib=1,nbeta(ibatch,iprot)
654 & write (iout,*) "iprot",iprot," ibatch",ibatch," ib",ib,
655 & " elowest",elowest(ib,ibatch,iprot)
659 if (me.eq.Master) write (iout,*) "Ptab at the end of PROC"
661 do ib=1,nbeta(1,iprot)
662 if (me.eq.Master) write (iout,*) "Protein",iprot," beta",ib
664 do i=indstart(me1,iprot),indend(me1,iprot)
666 write (iout,*) iprot,ib,ii,jj,Ptab(jj,ib,iprot)
671 if (me.eq.Master) write (iout,*)
675 c-------------------------------------------------------------------------------
676 subroutine determine_histograms
679 include "DIMENSIONS.ZSCOPT"
681 parameter (maxind=1000)
684 integer Ierror,Errcode,status(MPI_STATUS_SIZE),tag
687 include "COMMON.COMPAR"
688 include "COMMON.ENERGIES"
689 include "COMMON.VMCPAR"
690 include "COMMON.WEIGHTS"
691 include "COMMON.XBOUND"
692 include "COMMON.PROTNAME"
693 include "COMMON.IOUNITS"
694 include "COMMON.FFIELD"
695 include "COMMON.PROTFILES"
696 include "COMMON.CHAIN"
697 include "COMMON.CONTROL"
698 include "COMMON.CLASSES"
699 integer iprot,i,ii,iii,j,k,l,ibatch,inde,indt,idelte,ideltt
700 double precision eminh,emaxh,tminh,tmaxh
701 integer he(0:maxind),
702 & ht(0:maxind),hemax,htmax
704 c Construct energy and entropy histograms
706 if (me.eq.Master)write (iout,*) "Calling DETERMINE HISTOGRAMS"
719 if (eini(iii,iprot).lt.eminh)
720 & eminh=eini(iii,iprot)
721 if (eini(iii,iprot).gt.emaxh)
722 & emaxh=eini(iii,iprot)
723 if (entfac(iii,iprot).lt.tminh)
724 & tminh=entfac(iii,iprot)
725 if (entfac(iii,iprot).gt.tmaxh)
726 & tmaxh=entfac(iii,iprot)
728 c write (2,*) "DETERMINE HISTOGRAMS 1"
732 inde=eini(iii,iprot)-eminh
733 indt=entfac(iii,iprot)-tminh
734 if (inde.le.maxind) he(inde)=he(inde)+1
735 if (indt.le.maxind) ht(indt)=ht(indt)+1
737 c write (2,*) "DETERMINE HISTOGRAMS 2"
741 c write (iout,*) "idelte",idelte," ideltt",ideltt
744 c write (iout,*) "i",i," he",he(i)," hemax",hemax
746 if (he(i).gt.hemax) hemax=he(i)
750 c write (iout,*) "i",i," ht",ht(i)," htmax",htmax
752 if (ht(i).gt.htmax) htmax=ht(i)
754 c write (2,*) "DETERMINE HISTOGRAMS 3"
756 hemax=hemax/hefac(iprot)
757 if (hemax.lt.hemax_low(iprot))
758 & hemax=hemax_low(iprot)
759 htmax=htmax/htfac(iprot)
760 if (htmax.lt.htmax_low(iprot))
761 & htmax=htmax_low(iprot)
763 do while (i.lt.idelte .and. he(i).lt.hemax)
766 c write (2,*) "DETERMINE HISTOGRAMS 4"
768 e_lowb(iprot)=eminh+i
770 do while (i.lt.ideltt .and. ht(i).lt.htmax)
773 t_lowb(iprot)=tminh+i
775 write (iout,*) "protein",iprot
776 write (iout,*) "energy histogram"
778 write (iout,'(f15.5,i10)') eminh+i,he(i)
780 write (iout,*) "entropy histogram"
782 write (iout,'(f15.5,i10)') tminh+i,ht(i)
784 write (iout,*) "emin",eminh," tmin",tminh,
785 & " hemax",hemax," htmax",htmax,
786 & " e_lowb",e_lowb(iprot),
787 & " t_lowb",t_lowb(iprot)
793 c------------------------------------------------------------------------------
794 subroutine imysort(n, x, ipermut)
804 if (x(j).lt.xtemp) then
812 ipermut(imax)=ipermut(i)
817 c--------------------------------------------------------------------------
818 subroutine write_conf_count
821 include "DIMENSIONS.ZSCOPT"
822 include "COMMON.CLASSES"
823 include "COMMON.COMPAR"
824 include "COMMON.VMCPAR"
825 include "COMMON.PROTNAME"
826 include "COMMON.IOUNITS"
827 include "COMMON.PROTFILES"
828 integer iprot,ibatch,i,ii,j,kk
833 write (iout,*)"Numbers of conformations after applying the cutoff"
836 write (iout,'(a,2x,a,i10)') "Protein",
837 & protname(iprot)(:ilen(protname(iprot))),
842 c-------------------------------------------------------------------------
843 double precision function fdum()