1 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
5 C Version for use in parameter optimization on fixed set of decoys C
9 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
10 implicit real*8 (a-h,o-z)
12 include 'COMMON.TIME1'
13 include 'COMMON.INTERACT'
14 include 'COMMON.NAMES'
16 include 'COMMON.HEADER'
17 include 'COMMON.CONTROL'
18 include 'COMMON.CONTACTS'
19 include 'COMMON.CHAIN'
21 include 'COMMON.IOUNITS'
22 include 'COMMON.FFIELD'
25 include 'COMMON.SBRIDGE'
26 double precision hrtime,mintime,sectime
27 double precision energia(0:n_ene)
29 C Initializing variables, setting constants, translation of residue types
30 C to numeric types, etc. MUST be called.
32 C Read force field parameters and job setup data
37 With fine-graining energy, slaves compute only their energy chunks.
38 if (fg_rank.gt.0) then
39 C Fine-grain slaves just do energy and gradient components.
40 call ergastulum ! slave workhouse in Latin
46 call exec_eeval_or_minim(energia(0))
47 call statout(ifile,energia(0))
50 call exec_eeval_or_minim(energia(0))
51 call statout(1,energia(0))
56 if (fg_rank.eq.0) call finish_task
58 call print_detailed_timing
60 call MPI_Finalize(ierr)
63 call dajczas(tcpu(),hrtime,mintime,sectime)
64 stop '********** Program terminated normally.'
67 c--------------------------------------------------------------------------
68 subroutine exec_eeval_or_minim(energy)
69 implicit real*8 (a-h,o-z)
74 include 'COMMON.SETUP'
75 include 'COMMON.TIME1'
76 include 'COMMON.INTERACT'
77 include 'COMMON.NAMES'
79 include 'COMMON.HEADER'
80 include 'COMMON.CONTROL'
81 include 'COMMON.CONTACTS'
82 include 'COMMON.CHAIN'
84 include 'COMMON.IOUNITS'
85 include 'COMMON.FFIELD'
88 include 'COMMON.SBRIDGE'
89 include 'COMMON.ECOMPON'
91 double precision energy(0:n_ene)
92 double precision energy_long(0:n_ene),energy_short(0:n_ene)
93 double precision varia(maxvar)
94 if (indpdb.eq.0) call chainbuild
102 dc(j,i)=c(j,i+1)-c(j,i)
108 c(j,1)=c(j,2)-dc(j,1)
111 if (nct.lt.nres) then
113 dc(j,nres-1)=dc(j,nres-3)
114 c(j,nres)=c(j,nres)+dc(j,nres-1)
118 call int_from_cart(.true.,.false.)
119 write (iout,*) "Time for energy evaluation",time_ene
123 print *, 'Calling OVERLAP_SC'
124 call overlap_sc(fail)
128 call sc_move(2,nres-1,10,1d10,nft_sc,etot)
129 print *,'SC_move',nft_sc,etot
130 write(iout,*) 'SC_move',nft_sc,etot
133 call etotal(energy(0))
135 time_ene=MPI_Wtime()-time00
137 time_ene=tcpu()-time00
141 call regularize(nct-nnt+1,etot,rms,cref(1,nnt),iretcode)
142 call etotal(energy(0))
143 energy(0)=energy(0)-energy(14)
145 call enerprint(energy(0))
147 if (refstr) call rms_nac_nnc(rms,frac,frac_nn,co,.true.)
148 write (iout,'(a,i3)') 'SUMSL return code:',iretcode
150 print *, 'Calling MINIM_DC'
156 call minim_dc(etot,iretcode,nfun)
157 print *,'SUMSL return code is',iretcode,' eval ',nfun
159 evals=nfun/(MPI_WTIME()-time1)
161 evals=nfun/(tcpu()-time1)
163 print *,'# eval/s',evals
164 print *,'refstr=',refstr
165 call etotal(energy(0))
167 call enerprint(energy(0))
170 call briefout(0,etot)
171 if (refstr) call rms_nac_nnc(rms,frac,frac_nn,co,.true.)
172 write (iout,'(a,i3)') 'SUMSL return code:',iretcode
173 write (iout,'(a,i20)') '# of energy evaluations:',nfun+1
174 write (iout,'(a,f16.3)')'# of energy evaluations/sec:',evals
176 if (refstr) call rms_nac_nnc(rms,frac,frac_nn,co,.true.)
178 call enerprint(energy)
181 c Check the correctness of energy components
187 evdw=evdw+vdwcompon(i,j)
188 etor=etor+torcompon(i,j)
189 esccor=esccor+sccorcompon(i,j)
199 evdw2=evdw2+vdw2compon(i)
200 etord=etord+tordcompon(i)
202 write (iout,'(a8,1pe15.6)') "EVDW",evdw,"EVDW2",EVDW2,"EBEND",ebe,
203 & "ESCLOC",esc,"ETOR",etor,"ETORD",etord,"ESCCOR",esccor
206 if (outpdb) call pdbout(etot,titel(:32),ipdb)
207 if (outmol2) call mol2out(etot,titel(:32))
210 c---------------------------------------------------------------------------