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"
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 thetareff(maxres2),phireff(maxres2),
35 & xxreff(maxres2),yyreff(maxres2),zzreff(maxres2)
36 double precision przes(3),obrot(3,3),etoti
39 integer iprot,i,ind,ii,j,k,kk,l,ncl,is,ie,nsum,nng,nvarr,ng,
40 & inn,in,iref,ib,ibatch,num,itmp,imin,iperm
41 integer l1,l2,ncon_all
42 double precision rcyfr
43 integer jj,istart_conf,iend_conf,ipass_conf,iii,nnnn
46 double precision ej,emaxj,sumP,sumP_t
48 double precision x(max_paropt)
49 double precision wconf(maxstr_proc)
50 double precision dx,dy,dz,dxref,dyref,dzref,
51 & dtheta,dphi,rmsthet,rmsphi,rmsside
52 double precision pinorm
55 double precision e_total_T_(maxstr_proc)
59 double precision rms,rmsave,rmsmin,rmsnat,rmscalc,rmscalc_thet,
60 & rmscalc_phi,rmscalc_side,qwolynes,qwolyness
64 write (iout,*) "fac0",fac0
65 write(iout,*) "torsional and valence angle mode",tor_mode
67 c Determine the number of variables and the initial vector of optimizable
71 if (restart_flag) then
72 call w2x(nvarr,x_orig,*11)
76 open (88,file=prefix(:ilen(prefix))//'.restin',status='unknown')
77 read(88,*,end=99,err=99) (x(i),i=1,nvarr)
81 & "Variables replaced with values from the restart file."
83 write (iout,'(i5,f15.5)') i,x(i)
89 & "Error - restart file nonexistent, incompatible or damaged."
91 call MPI_Finalize(Ierror)
94 & "Error - restart file nonexistent, incompatible or damaged."
97 write (iout,*) "PROC: after W2X nvarr",nvarr
107 c Setup weights for UNRES
136 call restore_molinfo(iprot)
138 DO IBATCH=1,natlike(iprot)+2
140 c Calculate temperature-dependent weight scaling factors
141 do ib=1,nbeta(ibatch,iprot)
142 fac=betaT(ib,ibatch,iprot)
144 if (rescale_mode.eq.0) then
150 else if (rescale_mode.eq.1) then
157 denom=kfacl-1.0d0+quotl
159 ftprim(l)=-l*ft(l)*quotl1/(T0*denom)
160 ftbis(l)=l*kfacl*quotl1*
161 & (2*l*quotl-(l-1)*denom)/(quot*t0*t0*denom**3)
162 write (iout,*) "ib",ib," beta",betaT(ib,ibatch,iprot),
163 & " quot",quot," l",l,fT(l),fTprim(l),fTbis(l)
165 else if (rescale_mode.eq.2) then
172 logfac=1.0d0/dlog(eplus+eminus)
173 tanhT=(eplus-eminus)/(eplus+eminus)
174 fT(l)=1.12692801104297249644d0*logfac
175 ftprim(l)=-l*quotl1*ft(l)*tanhT*logfac/T0
176 ftbis(l)=(l-1)*ftprim(l)/(quot*T0)-
177 & 2*l*quotl1/T0*logfac*
178 & (2*l*quotl1*ft(l)/(T0*(eplus+eminus)**2)
182 write (iout,*) "Unknown RESCALE_MODE",rescale_mode
187 escal(k,ib,ibatch,iprot)=1.0d0
188 escalprim(k,ib,ibatch,iprot)=0.0d0
189 escalbis(k,ib,ibatch,iprot)=0.0d0
191 if (shield_mode.gt.0) then
192 escal(1,ib,ibatch,iprot)=ft(1)
193 escal(2,ib,ibatch,iprot)=ft(1)
194 escal(16,ib,ibatch,iprot)=ft(1)
195 escalprim(1,ib,ibatch,iprot)=ft(1)
196 escalprim(2,ib,ibatch,iprot)=ft(1)
197 escalprim(16,ib,ibatch,iprot)=ft(1)
198 escalbis(1,ib,ibatch,iprot)=ft(1)
199 escalbis(2,ib,ibatch,iprot)=ft(1)
200 escalbis(16,ib,ibatch,iprot)=ft(1)
202 escal(3,ib,ibatch,iprot)=ft(1)
203 escal(4,ib,ibatch,iprot)=ft(3)
204 escal(5,ib,ibatch,iprot)=ft(4)
205 escal(6,ib,ibatch,iprot)=ft(5)
206 escal(7,ib,ibatch,iprot)=ft(2)
207 escal(8,ib,ibatch,iprot)=ft(2)
208 escal(9,ib,ibatch,iprot)=ft(3)
209 escal(10,ib,ibatch,iprot)=ft(5)
210 escal(13,ib,ibatch,iprot)=ft(1)
211 escal(14,ib,ibatch,iprot)=ft(2)
212 escal(19,ib,ibatch,iprot)=ft(1)
213 escalprim(3,ib,ibatch,iprot)=ftprim(1)
214 escalprim(4,ib,ibatch,iprot)=ftprim(3)
215 escalprim(5,ib,ibatch,iprot)=ftprim(4)
216 escalprim(6,ib,ibatch,iprot)=ftprim(5)
217 escalprim(7,ib,ibatch,iprot)=ftprim(2)
218 escalprim(8,ib,ibatch,iprot)=ftprim(2)
219 escalprim(9,ib,ibatch,iprot)=ftprim(3)
220 escalprim(10,ib,ibatch,iprot)=ftprim(5)
221 escalprim(13,ib,ibatch,iprot)=ftprim(1)
222 escalprim(14,ib,ibatch,iprot)=ftprim(2)
223 escalprim(19,ib,ibatch,iprot)=ftprim(1)
224 escalbis(3,ib,ibatch,iprot)=ftbis(1)
225 escalbis(4,ib,ibatch,iprot)=ftbis(3)
226 escalbis(5,ib,ibatch,iprot)=ftbis(4)
227 escalbis(6,ib,ibatch,iprot)=ftbis(5)
228 escalbis(7,ib,ibatch,iprot)=ftbis(2)
229 escalbis(8,ib,ibatch,iprot)=ftbis(2)
230 escalbis(9,ib,ibatch,iprot)=ftbis(3)
231 escalbis(10,ib,ibatch,iprot)=ftbis(5)
232 escalbis(13,ib,ibatch,iprot)=ftbis(1)
233 escalbis(14,ib,ibatch,iprot)=ftbis(2)
234 escalbis(19,ib,ibatch,iprot)=ftbis(1)
237 betmin(ibatch,iprot)=betaT(1,ibatch,iprot)
238 betmax(ibatch,iprot)=betaT(1,ibatch,iprot)
239 do ib=2,nbeta(ibatch,iprot)
240 if (betaT(ib,ibatch,iprot).lt.betmin(ibatch,iprot))
241 & betmin(ibatch,iprot)=betaT(ib,ibatch,iprot)
242 if (betaT(ib,ibatch,iprot).gt.betmax(ibatch,iprot))
243 & betmax(ibatch,iprot)=betaT(ib,ibatch,iprot)
245 write (iout,'(2(a,i5,2x),2(a,f7.2,2x))')
246 & "Protein",iprot," batch",ibatch,
247 & " betmin",betmin(ibatch,iprot)," betmax",betmax(ibatch,iprot)
253 c Compute energy and entropy histograms to filter out conformations
254 c with potntially too low or too high weights.
256 call determine_histograms
258 c Make the working list of conformations
260 call make_list(.true.,.true.,nvarr,x)
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)
278 write (2,*) "entfacmax",entfacmax," entave",sument,
282 nchunk_conf(iprot) = iroof(scount(me1,iprot),maxstr_proc)
286 do i=indstart(me1,iprot),indend(me1,iprot),maxstr_proc
287 ipass_conf=ipass_conf+1
288 write (iout,*) "Pass",ipass_conf
290 iend_conf=min0(i+maxstr_proc-1,indend(me1,iprot))
292 nchunk_conf(iprot) = iroof(ntot(iprot),maxstr_proc)
295 do i=1,ntot(iprot),maxstr_proc
296 ipass_conf=ipass_conf+1
297 write (iout,*) "Pass",ipass_conf
299 iend_conf=min0(i+maxstr_proc-1,ntot(iprot))
302 c Read the chunk of conformations off a DA scratchfile.
304 call daread_ccoords(iprot,istart_conf,iend_conf)
306 IF (GEOM_AND_WHAM_WEIGHTS) THEN
309 do ib=1,nbeta(1,iprot)
310 write (iout,*) "IB",ib," IPROT",iprot," NREF",nref(ib,iprot)
312 do iii=istart_conf,iend_conf
318 etoti=etoti+ww(k)*escal(k,ib,1,iprot)
321 e_total_T(iii,ib)=entfac(kk,iprot)
322 & +betaT(ib,1,iprot)*(etoti-elowest(ib,1,iprot))
326 write (iout,*) "Energies before Gather"
327 do iii=1,ntot_work(iprot)
328 write (iout,'(i5,100E12.5)') iii,
329 & (e_total_T(iii,ib),ib=1,nbeta(1,iprot))
333 do ib=1,nbeta(1,iprot)
334 do k=1,scount(me1,iprot)
335 e_total_T_(k)=e_total_T(indstart(me1,iprot)+k-1,ib)
337 c call MPI_AllGatherv(e_total_T(indstart(me1,iprot),ib),
338 c & scount(me1,iprot),MPI_DOUBLE_PRECISION,e_total_T(1,ib),
339 c & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,
341 call MPI_AllGatherv(e_total_T_(1),
342 & scount(me1,iprot),MPI_DOUBLE_PRECISION,e_total_T(1,ib),
343 & scount(0,iprot),idispl(0,iprot),MPI_DOUBLE_PRECISION,
347 write (iout,*) "Energies after Gather"
348 do iii=1,ntot_work(iprot)
349 write (iout,'(i5,100E12.5)') iii,
350 & (e_total_T(iii,ib),ib=1,nbeta(1,iprot))
355 ENDIF ! GEOM_AND_WHAM_WEIGHTS
358 c write (iout,*) "Start calculating weirms",istart_conf,iend_conf
359 do iii=istart_conf,iend_conf
362 c write (iout,*) "Calculating weirms iii",iii," ii",ii," k",k
364 call restore_ccoords(iprot,ii)
365 c Calculate the rmsds of the current conformations and convert them into weights
366 c to approximate equal weighting of all points of the conformational space
372 c 7/6/16 AL Add angle comparison
373 if (anglecomp(iprot) .or. sidecomp(iprot)) then
374 call int_from_cart(.true.,.false.)
375 call sc_loc_geom(.false.)
378 thetareff(k)=theta(k)
384 do ib=1,nbeta(1,iprot)
388 c caonly(iprot)=.true.
390 do iref=1,ntot_work(iprot)
391 if (iref.ne.iii) then
392 read(icbase,rec=iref) ((csingle(l,k),l=1,3),k=1,nres),
393 & ((csingle(l,k),l=1,3),k=nnt+nres,nct+nres),
394 & nss,(ihpb(k),jhpb(k),k=1,nss),eini(iref,iprot),
395 & entfac(iref,iprot),
396 & ((nu(k,l,ii,iprot),k=1,maxdimnat),l=1,natlike(iprot))
404 write (iout,'(i5,3f10.5,5x,3f10.5)') k,(c(l,k),l=1,3),
410 if (rmscomp(iprot)) then
411 rms=rmscalc(c(1,1),creff(1,1),iref,iii,iprot,iperm)
413 write (iout,*) "iref",iref," iii",iii," rms",rms
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 write (iout,*)"iref",iref," iii",iii," rms",rms," aux",aux
429 rms=qwolyness(creff,iprot)
431 write (2,*) "iii",iii," iref=",iref," ib",ib," etotal",
432 & e_total_T(iref,ib),
433 & e_total_T(iii,ib),-e_total_T(iref,ib)+e_total_T(iii,ib),
434 & " rms",-dlog(rms)," fac",rms,
435 & dexp(-e_total_T(iref,ib)+e_total_T(iii,ib)),
436 & rms*dexp(-e_total_T(iref,ib)+e_total_T(iii,ib))
440 c 7/6/16 AL Add angle comparison
441 if (anglecomp(iprot).or.sidecomp(iprot))
442 & call int_from_cart(.true.,.false.)
443 if (anglecomp(iprot)) then
444 c write (iout,*) "jj",jj," iref",iref
445 rmsthet=rmscalc_thet(theta(1),thetareff(1),iperm)
446 rmsphi=rmscalc_phi(phi(1),phireff(1),iperm)
448 write (iout,*) "rmsthet",rmsthet," rmsphi",rmsphi
450 aux=aux*dexp(-0.5d0*(rmsthet**2+rmsphi**2)/
451 & sigmaang2(iprot)**2)
453 write (iout,*) "rmsthet",rmsthet," rmsphi",rmsphi,
457 if (sidecomp(iprot)) then
458 call sc_loc_geom(.false.)
459 rmsside=rmscalc_side(xxtab(1),yytab(1),zztab(1),
460 & xxreff(1),yyreff(1),zzreff(1),iperm)
462 write (iout,*) "rmsside",rmsside
464 aux=aux*dexp(-0.5d0*(rmsside/sigmaside2(iprot))**2)
469 do ib=1,nbeta(1,iprot)
470 if (GEOM_AND_WHAM_WEIGHTS) then
471 weirms(iii,ib) = weirms(iii,ib)
472 & +aux*dexp(-e_total_T(iref,ib)+e_total_T(iii,ib))
474 weirms(iii,ib) = weirms(iii,ib)+aux
480 c caonly(iprot)=.false.
483 write (iout,*) "weirms"
484 do iii=istart_conf,iend_conf
485 write (iout,"(i5,20e12.5)") iii,(weirms(iii,ib),ib=1,
493 nchunk_conf(iprot) = iroof(scount(me1,iprot),maxstr_proc)
494 DO IB=1,NBETA(1,IPROT)
496 write(csa_bank,'(a,f4.0,4hPtab,i4.4)')
497 & protname(iprot)(:ilen(protname(iprot))),
498 & 1.0d0/(0.001987*betaT(ib,1,iprot)),me
499 open (icsa_bank,file=csa_bank,status="unknown")
504 do i=indstart(me1,iprot),indend(me1,iprot),maxstr_proc
505 ipass_conf=ipass_conf+1
506 write (iout,*) "Pass",ipass_conf
508 iend_conf=min0(i+maxstr_proc-1,indend(me1,iprot))
510 nchunk_conf(iprot) = iroof(ntot(iprot),maxstr_proc)
513 do i=1,ntot(iprot),maxstr_proc
514 ipass_conf=ipass_conf+1
515 write (iout,*) "Pass",ipass_conf
517 iend_conf=min0(i+maxstr_proc-1,ntot(iprot))
521 c Read the chunk of conformations off a DA scratchfile.
523 call daread_ccoords(iprot,istart_conf,iend_conf)
524 write (iout,*) "IB",ib," IPROT",iprot," NREF",nref(ib,iprot)
525 do iii=istart_conf,iend_conf
533 call restore_ccoords(iprot,ii)
534 c write (iout,*) "zeroing Ptab",iii,ii,jj
535 Ptab(jj,ib,iprot)=0.0d0
536 if (rmscomp(iprot)) then
537 do iref=1,nref(ib,iprot)
541 call pdbout(0.0d0,"conf")
542 c write (2,*) "nstart_sup",nstart_sup(iprot),
543 c & " nend_sup",nend_sup(iprot)
544 c do k=nstart_sup(iprot),nend_sup(iprot)
545 c write(2,'(i5,3f10.5,5x,3f10.5)') k,(c(l,k),l=1,3),
546 c & (cref(l,k,iref,ib,iprot),l=1,3)
548 c do k=nstart_sup(iprot),nend_sup(iprot)
549 c write(2,'(i5,3f10.5,5x,3f10.5)') k,(c(l,k+nres),l=1,3),
550 c & (cref(l,k+nres,iref,ib,iprot),l=1,3)
555 c(l,k)=cref(l,k,iref,ib,iprot)
558 call pdbout(0.0d0,"ref")
566 rms=rmsnat(ib,jj,iref,iprot,iperm)
568 write (iout,*) iii,iref," rmsnat",rms
570 c 7/6/16 AL Add angle comparison
571 c write(iout,*) "anglecomp",anglecomp
572 if (anglecomp(iprot).or.sidecomp(iprot))
573 & call int_from_cart(.true.,.false.)
574 if (anglecomp(iprot)) then
575 c write (iout,*) "jj",jj," iref",iref
576 rmsthet=rmscalc_thet(theta(1),
577 & theta_ref(1,iref,ib,iprot),iperm)
578 rmsphi=rmscalc_phi(phi(1),phi_ref(1,iref,ib,iprot),
581 write (iout,*) "rmsthet",rmsthet," rmsphi",rmsphi
584 if (sidecomp(iprot)) then
585 call sc_loc_geom(.false.)
586 rmsside=rmscalc_side(xxtab(1),yytab(1),zztab(1),
587 & xxref(1,iref,ib,iprot),yyref(1,iref,ib,iprot),
588 & zzref(1,iref,ib,iprot),iperm)
590 write (iout,*) "rmsside",rmsside
594 write (iout,*) "ii",ii," jj",jj," iref",iref,
595 & " rms",rms," rmsthet",rmsthet," rmsphi",rmsphi,
596 & " efree",efreeref(iref,ib,iprot)
600 if (rms.lt.rmsmin) then
605 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)
606 & +dexp(-efreeref(iref,ib,iprot)
607 & -0.5d0*(rms/sigma2(iprot))**2)
608 if (anglecomp(iprot))
609 & Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)*
610 & dexp(-0.5d0*(rmsthet**2+rmsphi**2)/sigmaang2(iprot)**2)
612 & Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)*
613 & dexp(-0.5d0*(rmsside/sigmaside2(iprot))**2)
616 rmsave=rmsave/nref(ib,iprot)
619 c AL 1/24/2014 Correct the weight of a conformation to represent energy-free
620 c search of conformational space.
621 aux=dmin1(entfacmax-entfac(k,iprot),60.0d0)
622 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)*dexp(aux)
624 write (iout,*) "iprot",iprot," ib",ib," iii",iii," k",k,
625 c & " entfac",entfac(k,iprot),"aux",aux," Ptab",Ptab(jj,ib,iprot)
626 & "entfac",entfac(k,iprot)," weirms",weirms(iii,ib),
627 & " Ptab",Ptab(jj,ib,iprot)
629 #elif defined(WEIDIST)
630 c write (iout,*) "iii",iii," Ptab",Ptab(jj,ib,iprot),
631 c & " weirms",weirms(iii,ib)," Ptab/weirms",
632 c & Ptab(jj,ib,iprot)/weirms(iii,ib)
634 write (icsa_bank,'(2i6,3f10.5,2f8.4)')
635 & iii,imin,-dlog(Ptab(jj,ib,iprot)),
636 & -dlog(weirms(iii,ib)),
637 & -dlog(Ptab(jj,ib,iprot)/weirms(iii,ib)),
640 if (ib.eq.1) rmstb(iii,iprot)=rmsmin
641 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)/weirms(iii,ib)
642 #elif defined(WEICLUST)
643 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)/weirms(iii,iprot)
645 sumP=sumP+Ptab(jj,ib,iprot)
647 do iref=1,nref(ib,iprot)
648 rms = qwolynes(ib,iref,iprot)
650 write (iout,*) "iii",iii," ii",ii," jj",jj,
651 & "iref",iref," rms",rms,-dlog(rms),
652 & "efree",efreeref(iref,ib,iprot)
654 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)+rms*
655 & *dexp(-efreeref(iref,ib,iprot))
658 c AL 1/24/2014 Correct the weight of a conformation to represent energy-free
659 c search of conformational space.
660 aux=dmin1(entfacmax-entfac(k,iprot),60.0d0)
661 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)*dexp(aux)
663 write (iout,*) "iprot",iprot," ib",ib," iii",iii," k",k,
664 & " entfac",entfac(k,iprot)," aux",aux," Ptab",Ptab(jj,ib,iprot)
666 #elif defined(WEICLUST)
667 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)/weirms(k,iprot)
668 #elif defined(WEIDIST)
669 write (iout,*) "iii",iii," Ptab",Ptab(jj,ib,iprot),
670 & " weirms",weirms(iii,ib)," Ptab/weirms",
671 & Ptab(jj,ib,iprot)/weirms(iii,ib)
672 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)/weirms(iii,ib)
674 sumP=sumP+Ptab(jj,ib,iprot)
677 write (iout,*) "ii",ii," jj",jj," ib",ib," iprot",iprot,
678 & " Ptab",Ptab(jj,ib,iprot)," sumP",sumP
683 write (iout,*) "iprot",iprot," ib",ib," sumP before REDUCE",sumP
686 call MPI_Allreduce(sumP,sumP_t,1,MPI_DOUBLE_PRECISION,
687 & MPI_SUM,Comm1,IERROR)
691 write (iout,*) "iprot",iprot," ib",ib," sumP after REDUCE",sumP
694 do iii=indstart(me1,iprot),indend(me1,iprot)
697 write (iout,*) "iii",iii," jj",jj," Ptab",Ptab(jj,ib,iprot)
699 Ptab(jj,ib,iprot)=Ptab(jj,ib,iprot)/sumP
701 write (iout,*) "iii",iii," jj",jj," Ptab",Ptab(jj,ib,iprot)
711 write (iout,*) "ELOWEST at the end of PROC_DATA"
713 do ibatch=1,natlike(iprot)+2
714 do ib=1,nbeta(ibatch,iprot)
715 write (iout,*) "iprot",iprot," ibatch",ibatch," ib",ib,
716 & " elowest",elowest(ib,ibatch,iprot)
720 write (iout,*) "Ptab at the end of PROC"
722 do ib=1,nbeta(1,iprot)
723 write (iout,*) "Protein",iprot," beta",ib
725 do i=indstart(me1,iprot),indend(me1,iprot)
727 write (iout,*) iprot,ib,ii,jj,Ptab(jj,ib,iprot)
736 c-------------------------------------------------------------------------------
737 subroutine determine_histograms
740 include "DIMENSIONS.ZSCOPT"
742 parameter (maxind=1000)
745 integer Ierror,Errcode,status(MPI_STATUS_SIZE),tag
748 include "COMMON.COMPAR"
749 include "COMMON.ENERGIES"
750 include "COMMON.VMCPAR"
751 include "COMMON.WEIGHTS"
752 include "COMMON.PROTNAME"
753 include "COMMON.IOUNITS"
754 include "COMMON.FFIELD"
755 include "COMMON.PROTFILES"
756 include "COMMON.CHAIN"
757 include "COMMON.CONTROL"
758 include "COMMON.CLASSES"
759 integer iprot,i,ii,iii,j,k,l,ibatch,inde,indt,idelte,ideltt
760 double precision eminh,emaxh,tminh,tmaxh
761 integer he(0:maxind),
762 & ht(0:maxind),hemax,htmax
764 c Construct energy and entropy histograms
766 write (iout,*) "Calling DETERMINE HISTOGRAMS"
779 if (eini(iii,iprot).lt.eminh)
780 & eminh=eini(iii,iprot)
781 if (eini(iii,iprot).gt.emaxh)
782 & emaxh=eini(iii,iprot)
783 if (entfac(iii,iprot).lt.tminh)
784 & tminh=entfac(iii,iprot)
785 if (entfac(iii,iprot).gt.tmaxh)
786 & tmaxh=entfac(iii,iprot)
788 c write (2,*) "DETERMINE HISTOGRAMS 1"
792 inde=eini(iii,iprot)-eminh
793 indt=entfac(iii,iprot)-tminh
794 if (inde.le.maxind) he(inde)=he(inde)+1
795 if (indt.le.maxind) ht(indt)=ht(indt)+1
797 c write (2,*) "DETERMINE HISTOGRAMS 2"
801 c write (iout,*) "idelte",idelte," ideltt",ideltt
804 c write (iout,*) "i",i," he",he(i)," hemax",hemax
806 if (he(i).gt.hemax) hemax=he(i)
810 c write (iout,*) "i",i," ht",ht(i)," htmax",htmax
812 if (ht(i).gt.htmax) htmax=ht(i)
814 c write (2,*) "DETERMINE HISTOGRAMS 3"
816 hemax=hemax/hefac(iprot)
817 if (hemax.lt.hemax_low(iprot))
818 & hemax=hemax_low(iprot)
819 htmax=htmax/htfac(iprot)
820 if (htmax.lt.htmax_low(iprot))
821 & htmax=htmax_low(iprot)
823 do while (i.lt.idelte .and. he(i).lt.hemax)
826 c write (2,*) "DETERMINE HISTOGRAMS 4"
828 e_lowb(iprot)=eminh+i
830 do while (i.lt.ideltt .and. ht(i).lt.htmax)
833 t_lowb(iprot)=tminh+i
835 write (iout,*) "protein",iprot
836 write (iout,*) "energy histogram"
838 write (iout,'(f15.5,i10)') eminh+i,he(i)
840 write (iout,*) "entropy histogram"
842 write (iout,'(f15.5,i10)') tminh+i,ht(i)
844 write (iout,*) "emin",eminh," tmin",tminh,
845 & " hemax",hemax," htmax",htmax,
846 & " e_lowb",e_lowb(iprot),
847 & " t_lowb",t_lowb(iprot)
853 c------------------------------------------------------------------------------
854 subroutine imysort(n, x, ipermut)
864 if (x(j).lt.xtemp) then
872 ipermut(imax)=ipermut(i)
877 c--------------------------------------------------------------------------
878 subroutine write_conf_count
881 include "DIMENSIONS.ZSCOPT"
882 include "COMMON.CLASSES"
883 include "COMMON.COMPAR"
884 include "COMMON.VMCPAR"
885 include "COMMON.PROTNAME"
886 include "COMMON.IOUNITS"
887 include "COMMON.PROTFILES"
888 integer iprot,ibatch,i,ii,j,kk
893 write (iout,*)"Numbers of conformations after applying the cutoff"
896 write (iout,'(a,2x,a,i10)') "Protein",
897 & protname(iprot)(:ilen(protname(iprot))),
902 c-------------------------------------------------------------------------
903 double precision function fdum()