1 subroutine cutoff_violation
4 include "DIMENSIONS.ZSCOPT"
10 include "COMMON.WEIGHTS"
11 include "COMMON.WEIGHTDER"
12 include "COMMON.ENERGIES"
13 include "COMMON.CLASSES"
14 include "COMMON.VMCPAR"
15 include "COMMON.IOUNITS"
16 include "COMMON.COMPAR"
17 C Define local variables
18 include "COMMON.TIME1"
19 integer i,j,k,iprot,ibatch,ib
20 double precision Evar_aux(maxT,maxbatch,maxprot),
21 & Esum_aux(maxT,maxbatch,maxprot),Elowp(maxT,maxbatch,maxprot),
22 & Esum(maxT,maxbatch,maxprot),aux,etot_rel,etot_rel_orig
26 write (iout,*) "Processor",me,me1," calling CUTOFF_VIOLATION"
30 do ibatch=1,natlike(iprot)+2
31 do ib=1,nbeta(ibatch,iprot)
32 Evar_aux(ib,ibatch,iprot)=0.0d0
33 Esum_aux(ib,ibatch,iprot)=0.0d0
39 write (iout,*) "Protein",iprot," E_TOTAL ETOT_ORIG EMIN_ORIG"
41 call restore_molinfo(iprot)
43 do j=indstart(me1,iprot),indend(me1,iprot)
45 do j=1,ntot_work(iprot)
47 do ibatch=1,natlike(iprot)+2
48 do ib=1,nbeta(ibatch,iprot)
49 aux = betaT(ib,ibatch,iprot)
50 & *(etot_orig(j,iprot)-emin_orig(ib,ibatch,iprot))+
52 if (aux .gt. 50.0d0) then
57 etot_rel = e_total(j,iprot)+entfac(j,iprot)/
58 & betaT(ib,ibatch,iprot)-elowp(ib,ibatch,iprot)
59 etot_rel_orig = etot_orig(j,iprot)+entfac(j,iprot)/
60 & betaT(ib,ibatch,iprot)-emin_orig(ib,ibatch,iprot)
61 Evar_aux(ib,ibatch,iprot)=Evar_aux(ib,ibatch,iprot)+
62 & aux*(etot_rel-etot_rel_orig)**2
63 Esum_aux(ib,ibatch,iprot) = Esum_aux(ib,ibatch,iprot) + aux
65 write (iout,'(i7,i3,4e15.5)') j,ibatch,e_total(j,iprot),
66 & etot_orig(j,iprot),emin_orig(ib,ibatch,iprot),aux
74 write (iout,*) "Processor",me,me1," before MPI_REDUCE"
75 write (iout,*) "Evar_aux",
76 & ((Evar_aux(ib,k,iprot),ib=1,nbeta(ibatch,iprot)),
80 call MPI_Reduce(Evar_aux(1,1,iprot), Evar(1,1,iprot),
81 & (natlike(iprot)+2)*MaxT, MPI_DOUBLE_PRECISION,
82 & MPI_SUM, Master, Comm1, IERROR)
83 call MPI_Reduce(Esum_aux(1,1,iprot), Esum(1,1,iprot),
84 & (natlike(iprot)+2)*MaxT, MPI_DOUBLE_PRECISION,
85 & MPI_SUM, Master, Comm1, IERROR)
87 write (iout,*) "Processor",me,me1," after MPI_REDUCE"
88 write (iout,*) "Evar_aux",
89 & ((Evar_aux(ib,k,iprot),ib=1,nbeta(ibatch,iprot)),
96 do ibatch=1,natlike(iprot)+2
97 do ib=1,nbeta(ibatch,iprot)
99 write (iout,*) "ib",ib," ibatch",ibatch," iprot",iprot,
100 & " Evar",Evar(ib,ibatch,iprot)," Esum",Esum(ib,ibatch,iprot)
103 if (Esum(ib,ibatch,iprot) .gt. 0.0d0) then
104 Evar(ib,ibatch,iprot)=dsqrt(Evar(ib,ibatch,iprot)/
105 & Esum(ib,ibatch,iprot))
107 Evar(ib,ibatch,iprot)=0.0d0
109 if (Evar(ib,ibatch,iprot)*betaT(ib,ibatch,iprot)
110 & .gt.enecut(iprot)-0.5d0*enecut_min(iprot)+1.0D-3)
113 write (iout,*) "iprot",iprot," ibatch",ibatch," beta",
114 & betaT(ib,ibatch,iprot),
115 & " Evar",Evar(ib,ibatch,iprot)," enecut",enecut(iprot),
116 & " cutoffviol",cutoffviol