1 subroutine proc_data(nvarr,x,*)
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"
27 double precision fac0,t0
28 double precision fT(5),ftprim(5),ftbis(5),quot,quotl,quotl1,
29 & denom,kfac,kfacl,logfac,eplus,eminus,tanhT,entfacmax,
31 real csingle(3,maxres2)
32 double precision creff(3,maxres2),cc(3,maxres2)
33 double precision przes(3),obrot(3,3),etoti
36 integer iprot,i,ind,ii,j,k,kk,l,ncl,is,ie,nsum,nng,nvarr,ng,
37 & inn,in,iref,ib,ibatch,num,itmp,imin
38 integer l1,l2,ncon_all
39 double precision rcyfr
40 integer jj,istart_conf,iend_conf,ipass_conf,iii
43 double precision ej,emaxj,sumP,sumP_t
45 double precision x(max_paropt)
46 double precision wconf(maxstr_proc)
48 double precision e_total_T_(maxstr_proc)
52 double precision rms,rmsave,rmsmin,rmsnat,qwolynes,qwolyness
56 if (me.eq.Master) then
57 write (iout,*) "fac0",fac0
58 write(iout,*) "torsional and valence angle mode",tor_mode
61 c Determine the number of variables and the initial vector of optimizable
65 if (restart_flag) then
66 call w2x(nvarr,x_orig,*11)
70 open (88,file=prefix(:ilen(prefix))//'.restin',status='unknown')
71 read(88,*,end=99,err=99) (x(i),i=1,nvarr)
73 if (me.eq.Master) then
76 & "Variables replaced with values from the restart file."
78 write (iout,'(i5,f15.5)') i,x(i)
84 99 if (me.eq.Master) write (iout,*)
85 & "Error - restart file nonexistent, incompatible or damaged."
87 call MPI_Finalize(Ierror)
90 & "Error - restart file nonexistent, incompatible or damaged."
93 if (me.eq.Master) write (iout,*) "PROC: after W2X nvarr",nvarr
103 c Setup weights for UNRES
132 call restore_molinfo(iprot)
134 DO IBATCH=1,natlike(iprot)+2
136 c Calculate temperature-dependent weight scaling factors
137 do ib=1,nbeta(ibatch,iprot)
138 fac=betaT(ib,ibatch,iprot)
140 if (rescale_mode.eq.0) then
146 else if (rescale_mode.eq.1) then
153 denom=kfacl-1.0d0+quotl
155 ftprim(l)=-l*ft(l)*quotl1/(T0*denom)
156 ftbis(l)=l*kfacl*quotl1*
157 & (2*l*quotl-(l-1)*denom)/(quot*t0*t0*denom**3)
159 & write (iout,*) "ib",ib," beta",betaT(ib,ibatch,iprot),
160 & " quot",quot," l",l,fT(l),fTprim(l),fTbis(l)
162 else if (rescale_mode.eq.2) then
169 logfac=1.0d0/dlog(eplus+eminus)
170 tanhT=(eplus-eminus)/(eplus+eminus)
171 fT(l)=1.12692801104297249644d0*logfac
172 ftprim(l)=-l*quotl1*ft(l)*tanhT*logfac/T0
173 ftbis(l)=(l-1)*ftprim(l)/(quot*T0)-
174 & 2*l*quotl1/T0*logfac*
175 & (2*l*quotl1*ft(l)/(T0*(eplus+eminus)**2)
179 if (me.eq.Master) then
180 write (iout,*) "Unknown RESCALE_MODE",rescale_mode
186 escal(k,ib,ibatch,iprot)=1.0d0
187 escalprim(k,ib,ibatch,iprot)=0.0d0
188 escalbis(k,ib,ibatch,iprot)=0.0d0
190 escal(3,ib,ibatch,iprot)=ft(1)
191 escal(4,ib,ibatch,iprot)=ft(3)
192 escal(5,ib,ibatch,iprot)=ft(4)
193 escal(6,ib,ibatch,iprot)=ft(5)
194 escal(7,ib,ibatch,iprot)=ft(2)
195 escal(8,ib,ibatch,iprot)=ft(2)
196 escal(9,ib,ibatch,iprot)=ft(3)
197 escal(10,ib,ibatch,iprot)=ft(5)
198 escal(13,ib,ibatch,iprot)=ft(1)
199 escal(14,ib,ibatch,iprot)=ft(2)
200 escal(19,ib,ibatch,iprot)=ft(1)
201 escalprim(3,ib,ibatch,iprot)=ftprim(1)
202 escalprim(4,ib,ibatch,iprot)=ftprim(3)
203 escalprim(5,ib,ibatch,iprot)=ftprim(4)
204 escalprim(6,ib,ibatch,iprot)=ftprim(5)
205 escalprim(7,ib,ibatch,iprot)=ftprim(2)
206 escalprim(8,ib,ibatch,iprot)=ftprim(2)
207 escalprim(9,ib,ibatch,iprot)=ftprim(3)
208 escalprim(10,ib,ibatch,iprot)=ftprim(5)
209 escalprim(13,ib,ibatch,iprot)=ftprim(1)
210 escalprim(14,ib,ibatch,iprot)=ftprim(2)
211 escalprim(19,ib,ibatch,iprot)=ftprim(1)
212 escalbis(3,ib,ibatch,iprot)=ftbis(1)
213 escalbis(4,ib,ibatch,iprot)=ftbis(3)
214 escalbis(5,ib,ibatch,iprot)=ftbis(4)
215 escalbis(6,ib,ibatch,iprot)=ftbis(5)
216 escalbis(7,ib,ibatch,iprot)=ftbis(2)
217 escalbis(8,ib,ibatch,iprot)=ftbis(2)
218 escalbis(9,ib,ibatch,iprot)=ftbis(3)
219 escalbis(10,ib,ibatch,iprot)=ftbis(5)
220 escalbis(13,ib,ibatch,iprot)=ftbis(1)
221 escalbis(14,ib,ibatch,iprot)=ftbis(2)
222 escalbis(19,ib,ibatch,iprot)=ftbis(1)
225 betmin(ibatch,iprot)=betaT(1,ibatch,iprot)
226 betmax(ibatch,iprot)=betaT(1,ibatch,iprot)
227 do ib=2,nbeta(ibatch,iprot)
228 if (betaT(ib,ibatch,iprot).lt.betmin(ibatch,iprot))
229 & betmin(ibatch,iprot)=betaT(ib,ibatch,iprot)
230 if (betaT(ib,ibatch,iprot).gt.betmax(ibatch,iprot))
231 & betmax(ibatch,iprot)=betaT(ib,ibatch,iprot)
233 if (me.eq.Master) write (iout,'(2(a,i5,2x),2(a,f7.2,2x))')
234 & "Protein",iprot," batch",ibatch,
235 & " betmin",betmin(ibatch,iprot)," betmax",betmax(ibatch,iprot)
241 c Compute energy and entropy histograms to filter out conformations
242 c with potntially too low or too high weights.
244 call determine_histograms
245 if (me.eq.Master) write (iout,*) "Exit determine_histograms"
248 c Make the working list of conformations
250 if (me.eq.Master) then
251 write (iout,*) "Calling make_list"
253 call make_list(.true.,.true.,nvarr,x)
255 call make_list(.false.,.true.,nvarr,x)
257 if (me.eq.Master) then
258 write (iout,*) "Exit make_list"
261 c 3/8/2013 Calculate RMSDs/Qs and the Ptab array
264 call restore_molinfo(iprot)
266 open (icbase,file=bprotfiles(iprot),status="old",
267 & form="unformatted",access="direct",recl=lenrec(iprot))
268 entfacmax=entfac(1,iprot)
269 sument=entfac(1,iprot)
270 sumentsq=entfac(1,iprot)**2
271 do i=2,ntot_work(iprot)
272 if (entfac(i,iprot).gt.entfacmax) entfacmax=entfac(i,iprot)
273 sument=sument+entfac(i,iprot)
274 sumentsq=sumentsq+entfac(i,iprot)**2
276 sument=sument/ntot_work(iprot)
277 sumentsq=dsqrt(sumentsq/ntot_work(iprot)-sument**2)
279 & write (2,*) "entfacmax",entfacmax," entave",sument,
283 nchunk_conf(iprot) = iroof(scount(me1,iprot),maxstr_proc)
287 do i=indstart(me1,iprot),indend(me1,iprot),maxstr_proc
288 ipass_conf=ipass_conf+1
289 if (me.eq.Master) write (iout,*) "Pass",ipass_conf
291 iend_conf=min0(i+maxstr_proc-1,indend(me1,iprot))
293 nchunk_conf(iprot) = iroof(ntot(iprot),maxstr_proc)
296 do i=1,ntot(iprot),maxstr_proc
297 ipass_conf=ipass_conf+1
298 if (me.eq.Master) write (iout,*) "Pass",ipass_conf
300 iend_conf=min0(i+maxstr_proc-1,ntot(iprot))
303 c Read the chunk of conformations off a DA scratchfile.
305 call daread_ccoords(iprot,istart_conf,iend_conf)
307 IF (GEOM_AND_WHAM_WEIGHTS) THEN
310 do ib=1,nbeta(1,iprot)
312 & write (iout,*) "IB",ib," IPROT",iprot," NREF",nref(ib,iprot)
314 do iii=istart_conf,iend_conf
320 etoti=etoti+ww(k)*escal(k,ib,1,iprot)
323 e_total_T(iii,ib)=entfac(kk,iprot)
324 & +betaT(ib,1,iprot)*(etoti-elowest(ib,1,iprot))
328 write (iout,*) "Energies before Gather"
329 do iii=1,ntot_work(iprot)
330 write (iout,'(i5,100E12.5)') iii,
331 & (e_total_T(iii,ib),ib=1,nbeta(1,iprot))
335 do ib=1,nbeta(1,iprot)
336 do k=1,scount(me1,iprot)
337 e_total_T_(k)=e_total_T(indstart(me1,iprot)+k-1,ib)
339 c call MPI_AllGatherv(e_total_T(indstart(me1,iprot),ib),
340 c & scount(me1,iprot),MPI_DOUBLE_PRECISION,e_total_T(1,ib),
341 c & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,
343 call MPI_AllGatherv(e_total_T_(1),
344 & scount(me1,iprot),MPI_DOUBLE_PRECISION,e_total_T(1,ib),
345 & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,
349 write (iout,*) "Energies after Gather"
350 do iii=1,ntot_work(iprot)
351 write (iout,'(i5,100E12.5)') iii,
352 & (e_total_T(iii,ib),ib=1,nbeta(1,iprot))
357 ENDIF ! GEOM_AND_WHAM_WEIGHTS
360 c write (iout,*) "Start calculating weirms",istart_conf,iend_conf
361 do iii=istart_conf,iend_conf
364 c write (iout,*) "Calculating weirms iii",iii," ii",ii," k",k
366 call restore_ccoords(iprot,ii)
367 c Calculate the rmsds of the current conformations and convert them into weights
368 c to approximate equal weighting of all points of the conformational space
374 do ib=1,nbeta(1,iprot)
377 do iref=1,ntot_work(iprot)
378 if (iref.ne.iii) then
379 read(icbase,rec=iref) ((csingle(l,k),l=1,3),k=1,nres),
380 & ((csingle(l,k),l=1,3),k=nnt+nres,nct+nres),
381 & nss,(ihpb(k),jhpb(k),k=1,nss),eini(iref,iprot),
382 & entfac(iref,iprot),
383 & ((nu(k,l,ii,iprot),k=1,maxdimnat),l=1,natlike(iprot))
391 write (iout,'(i5,3f10.5,5x,3f10.5)') k,(c(l,k),l=1,3),
395 if (rmscomp(iprot)) then
396 call fitsq(rms,c(1,nstart_sup(iprot)),
397 & creff(1,nstart_sup(iprot)),
398 & nsup(iprot),przes,obrot,non_conv)
400 print *,'Error: FITSQ non-convergent, iref',iref
402 else if (rms.lt.-1.0d-6) then
403 print *,'Error: rms^2 = ',rms,iref
405 else if (rms.lt.0) then
411 write (2,*) "iii",iii," iref=",iref," ib",ib," etotal",
412 & e_total_T(iref,ib),
413 & e_total_T(iii,ib),-e_total_T(iref,ib)+e_total_T(iii,ib),
414 & " rms",rms," fac",dexp(-0.5d0*(rms/sigma2(iprot))**2),
415 & dexp(-e_total_T(iref,ib)+e_total_T(iii,ib)),
416 & dexp(-0.5d0*(rms/sigma2(iprot))**2)*
417 & dexp(-e_total_T(iref,ib)+e_total_T(iii,ib))
419 aux=dexp(-0.5d0*(rms/sigma2(iprot))**2)
421 rms=qwolyness(creff,iprot)
423 write (2,*) "iii",iii," iref=",iref," ib",ib," etotal",
424 & e_total_T(iref,ib),
425 & e_total_T(iii,ib),-e_total_T(iref,ib)+e_total_T(iii,ib),
426 & " rms",-dlog(rms)," fac",rms,
427 & dexp(-e_total_T(iref,ib)+e_total_T(iii,ib)),
428 & rms*dexp(-e_total_T(iref,ib)+e_total_T(iii,ib))
435 do ib=1,nbeta(1,iprot)
436 if (GEOM_AND_WHAM_WEIGHTS) then
437 weirms(iii,ib) = weirms(iii,ib)
438 & +aux*dexp(-e_total_T(iref,ib)+e_total_T(iii,ib))
440 weirms(iii,ib) = weirms(iii,ib)+aux
446 write (iout,*) "weirms"
447 do iii=istart_conf,iend_conf
448 write (iout,"(i5,20e12.5)") iii,(weirms(iii,ib),ib=1,
456 nchunk_conf(iprot) = iroof(scount(me1,iprot),maxstr_proc)
457 DO IB=1,NBETA(1,IPROT)
459 write(csa_bank,'(a,f4.0,4hPtab,i3.3)')
460 & protname(iprot)(:ilen(protname(iprot))),
461 & 1.0d0/(0.001987*betaT(ib,1,iprot)),me
462 open (icsa_bank,file=csa_bank,status="unknown")
467 do i=indstart(me1,iprot),indend(me1,iprot),maxstr_proc
468 ipass_conf=ipass_conf+1
469 if (me.eq.Master) write (iout,*) "Pass",ipass_conf
471 iend_conf=min0(i+maxstr_proc-1,indend(me1,iprot))
473 nchunk_conf(iprot) = iroof(ntot(iprot),maxstr_proc)
476 do i=1,ntot(iprot),maxstr_proc
477 ipass_conf=ipass_conf+1
478 if (me.eq.Master) write (iout,*) "Pass",ipass_conf
480 iend_conf=min0(i+maxstr_proc-1,ntot(iprot))
484 c Read the chunk of conformations off a DA scratchfile.
486 call daread_ccoords(iprot,istart_conf,iend_conf)
488 & write (iout,*) "IB",ib," IPROT",iprot," NREF",nref(ib,iprot)
489 do iii=istart_conf,iend_conf
497 call restore_ccoords(iprot,ii)
498 c write (iout,*) "zeroing Ptab",iii,ii,jj
499 Ptab(jj,ib,iprot)=0.0d0
500 if (rmscomp(iprot)) then
501 do iref=1,nref(ib,iprot)
505 call pdbout(0.0d0,"conf")
506 c write (2,*) "nstart_sup",nstart_sup(iprot),
507 c & " nend_sup",nend_sup(iprot)
508 c do k=nstart_sup(iprot),nend_sup(iprot)
509 c write(2,'(i5,3f10.5,5x,3f10.5)') k,(c(l,k),l=1,3),
510 c & (cref(l,k,iref,ib,iprot),l=1,3)
512 c do k=nstart_sup(iprot),nend_sup(iprot)
513 c write(2,'(i5,3f10.5,5x,3f10.5)') k,(c(l,k+nres),l=1,3),
514 c & (cref(l,k+nres,iref,ib,iprot),l=1,3)
519 c(l,k)=cref(l,k,iref,ib,iprot)
522 call pdbout(0.0d0,"ref")
530 rms=rmsnat(ib,jj,iref,iprot)
532 write (iout,*) "ii",ii," jj",jj," iref",iref,
534 & "efree",efreeref(iref,ib,iprot)
538 if (rms.lt.rmsmin) then
543 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)
544 & +dexp(-efreeref(iref,ib,iprot)
545 & -0.5d0*(rms/sigma2(iprot))**2)
548 rmsave=rmsave/nref(ib,iprot)
551 c AL 1/24/2014 Correct the weight of a conformation to represent energy-free
552 c search of conformational space.
553 aux=dmin1(entfacmax-entfac(k,iprot),60.0d0)
554 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)*dexp(aux)
556 write (iout,*) "iprot",iprot," ib",ib," iii",iii," k",k,
557 c & " entfac",entfac(k,iprot),"aux",aux," Ptab",Ptab(jj,ib,iprot)
558 & "entfac",entfac(k,iprot)," weirms",weirms(iii,ib),
559 & " Ptab",Ptab(jj,ib,iprot)
561 #elif defined(WEIDIST)
562 c write (iout,*) "iii",iii," Ptab",Ptab(jj,ib,iprot),
563 c & " weirms",weirms(iii,ib)," Ptab/weirms",
564 c & Ptab(jj,ib,iprot)/weirms(iii,ib)
566 write (icsa_bank,'(2i6,3f10.5,2f8.4)')
567 & iii,imin,-dlog(Ptab(jj,ib,iprot)),
568 & -dlog(weirms(iii,ib)),
569 & -dlog(Ptab(jj,ib,iprot)/weirms(iii,ib)),
572 if (ib.eq.1) rmstb(iii,iprot)=rmsmin
573 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)/weirms(iii,ib)
574 #elif defined(WEICLUST)
575 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)/weirms(iii,iprot)
577 sumP=sumP+Ptab(jj,ib,iprot)
579 do iref=1,nref(ib,iprot)
580 rms = qwolynes(ib,iref,iprot)
582 write (iout,*) "iii",iii," ii",ii," jj",jj,
583 & "iref",iref," rms",rms,-dlog(rms),
584 & "efree",efreeref(iref,ib,iprot)
586 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)+rms*
587 & *dexp(-efreeref(iref,ib,iprot))
590 c AL 1/24/2014 Correct the weight of a conformation to represent energy-free
591 c search of conformational space.
592 aux=dmin1(entfacmax-entfac(k,iprot),60.0d0)
593 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)*dexp(aux)
595 write (iout,*) "iprot",iprot," ib",ib," iii",iii," k",k,
596 & " entfac",entfac(k,iprot)," aux",aux," Ptab",Ptab(jj,ib,iprot)
598 #elif defined(WEICLUST)
599 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)/weirms(k,iprot)
600 #elif defined(WEIDIST)
602 & write (iout,*) "iii",iii," Ptab",Ptab(jj,ib,iprot),
603 & " weirms",weirms(iii,ib)," Ptab/weirms",
604 & Ptab(jj,ib,iprot)/weirms(iii,ib)
605 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)/weirms(iii,ib)
607 sumP=sumP+Ptab(jj,ib,iprot)
610 write (iout,*) "ii",ii," jj",jj," ib",ib," iprot",iprot,
611 & " Ptab",Ptab(jj,ib,iprot)," sumP",sumP
616 write (iout,*) "iprot",iprot," ib",ib," sumP before REDUCE",sumP
619 call MPI_Allreduce(sumP,sumP_t,1,MPI_DOUBLE_PRECISION,
620 & MPI_SUM,Comm1,IERROR)
624 write (iout,*) "iprot",iprot," ib",ib," sumP after REDUCE",sumP
627 do iii=indstart(me1,iprot),indend(me1,iprot)
630 write (iout,*) "iii",iii," jj",jj," Ptab",Ptab(jj,ib,iprot)
632 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)/sumP
634 write (iout,*) "iii",iii," jj",jj," Ptab",Ptab(jj,ib,iprot)
644 write (iout,*) "ELOWEST at the end of PROC_DATA"
646 do ibatch=1,natlike(iprot)+2
647 do ib=1,nbeta(ibatch,iprot)
649 & write (iout,*) "iprot",iprot," ibatch",ibatch," ib",ib,
650 & " elowest",elowest(ib,ibatch,iprot)
654 if (me.eq.Master) write (iout,*) "Ptab at the end of PROC"
656 do ib=1,nbeta(1,iprot)
657 if (me.eq.Master) write (iout,*) "Protein",iprot," beta",ib
659 do i=indstart(me1,iprot),indend(me1,iprot)
661 write (iout,*) iprot,ib,ii,jj,Ptab(jj,ib,iprot)
666 if (me.eq.Master) write (iout,*)
670 c-------------------------------------------------------------------------------
671 subroutine determine_histograms
674 include "DIMENSIONS.ZSCOPT"
676 parameter (maxind=1000)
679 integer Ierror,Errcode,status(MPI_STATUS_SIZE),tag
682 include "COMMON.COMPAR"
683 include "COMMON.ENERGIES"
684 include "COMMON.VMCPAR"
685 include "COMMON.WEIGHTS"
686 include "COMMON.XBOUND"
687 include "COMMON.PROTNAME"
688 include "COMMON.IOUNITS"
689 include "COMMON.FFIELD"
690 include "COMMON.PROTFILES"
691 include "COMMON.CHAIN"
692 include "COMMON.CONTROL"
693 include "COMMON.CLASSES"
694 integer iprot,i,ii,iii,j,k,l,ibatch,inde,indt,idelte,ideltt
695 double precision eminh,emaxh,tminh,tmaxh
696 integer he(0:maxind),
697 & ht(0:maxind),hemax,htmax
699 c Construct energy and entropy histograms
701 if (me.eq.Master)write (iout,*) "Calling DETERMINE HISTOGRAMS"
714 if (eini(iii,iprot).lt.eminh)
715 & eminh=eini(iii,iprot)
716 if (eini(iii,iprot).gt.emaxh)
717 & emaxh=eini(iii,iprot)
718 if (entfac(iii,iprot).lt.tminh)
719 & tminh=entfac(iii,iprot)
720 if (entfac(iii,iprot).gt.tmaxh)
721 & tmaxh=entfac(iii,iprot)
723 c write (2,*) "DETERMINE HISTOGRAMS 1"
727 inde=eini(iii,iprot)-eminh
728 indt=entfac(iii,iprot)-tminh
729 if (inde.le.maxind) he(inde)=he(inde)+1
730 if (indt.le.maxind) ht(indt)=ht(indt)+1
732 c write (2,*) "DETERMINE HISTOGRAMS 2"
736 c write (iout,*) "idelte",idelte," ideltt",ideltt
739 c write (iout,*) "i",i," he",he(i)," hemax",hemax
741 if (he(i).gt.hemax) hemax=he(i)
745 c write (iout,*) "i",i," ht",ht(i)," htmax",htmax
747 if (ht(i).gt.htmax) htmax=ht(i)
749 c write (2,*) "DETERMINE HISTOGRAMS 3"
751 hemax=hemax/hefac(iprot)
752 if (hemax.lt.hemax_low(iprot))
753 & hemax=hemax_low(iprot)
754 htmax=htmax/htfac(iprot)
755 if (htmax.lt.htmax_low(iprot))
756 & htmax=htmax_low(iprot)
758 do while (i.lt.idelte .and. he(i).lt.hemax)
761 c write (2,*) "DETERMINE HISTOGRAMS 4"
763 e_lowb(iprot)=eminh+i
765 do while (i.lt.ideltt .and. ht(i).lt.htmax)
768 t_lowb(iprot)=tminh+i
770 write (iout,*) "protein",iprot
771 write (iout,*) "energy histogram"
773 write (iout,'(f15.5,i10)') eminh+i,he(i)
775 write (iout,*) "entropy histogram"
777 write (iout,'(f15.5,i10)') tminh+i,ht(i)
779 write (iout,*) "emin",eminh," tmin",tminh,
780 & " hemax",hemax," htmax",htmax,
781 & " e_lowb",e_lowb(iprot),
782 & " t_lowb",t_lowb(iprot)
788 c------------------------------------------------------------------------------
789 subroutine imysort(n, x, ipermut)
799 if (x(j).lt.xtemp) then
807 ipermut(imax)=ipermut(i)
812 c--------------------------------------------------------------------------
813 subroutine write_conf_count
816 include "DIMENSIONS.ZSCOPT"
817 include "COMMON.CLASSES"
818 include "COMMON.COMPAR"
819 include "COMMON.VMCPAR"
820 include "COMMON.PROTNAME"
821 include "COMMON.IOUNITS"
822 include "COMMON.PROTFILES"
823 integer iprot,ibatch,i,ii,j,kk
828 write (iout,*)"Numbers of conformations after applying the cutoff"
831 write (iout,'(a,2x,a,i10)') "Protein",
832 & protname(iprot)(:ilen(protname(iprot))),
837 c-------------------------------------------------------------------------
838 double precision function fdum()