1 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
5 C Program to carry out conformational search of proteins in an united-residue C
8 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
9 implicit real*8 (a-h,o-z)
15 include 'COMMON.SETUP'
17 include 'COMMON.TIME1'
18 include 'COMMON.INTERACT'
19 include 'COMMON.NAMES'
21 include 'COMMON.HEADER'
22 include 'COMMON.CONTROL'
23 include 'COMMON.CONTACTS'
24 include 'COMMON.CHAIN'
26 include 'COMMON.IOUNITS'
27 include 'COMMON.FFIELD'
28 c include 'COMMON.REMD'
30 include 'COMMON.SBRIDGE'
31 double precision hrtime,mintime,sectime
32 character*64 text_mode_calc(-2:14) /'test',
33 & 'SC rotamer distribution',
34 & 'Energy evaluation or minimization',
35 & 'Regularization of PDB structure',
36 & 'Threading of a sequence on PDB structures',
37 & 'Monte Carlo (with minimization) ',
38 & 'Energy minimization of multiple conformations',
39 & 'Checking energy gradient',
40 & 'Entropic sampling Monte Carlo (with minimization)',
45 & 'Soft regularization of PDB structure',
46 & 'Mesoscopic molecular dynamics (MD) ',
48 & 'Replica exchange molecular dynamics (REMD)'/
51 c call memmon_print_usage()
55 & write(iout,*)'### LAST MODIFIED 11/03/09 1:19PM by czarek'
56 if (me.eq.king) call cinfo
57 C Read force field parameters and job setup data
61 if (me.eq.king .or. .not. out1file) then
63 & text_mode_calc(modecalc)(:ilen(text_mode_calc(modecalc))),
65 if (minim) write (iout,'(a)')
66 & 'Conformations will be energy-minimized.'
67 write (iout,'(80(1h*)/)')
71 if (fg_rank.gt.0) then
72 C Fine-grain slaves just do energy and gradient components.
73 call ergastulum ! slave workhouse in Latin
76 if (modecalc.eq.0) then
77 call exec_eeval_or_minim
78 else if (modecalc.eq.5) then
81 write (iout,'(a)') 'This calculation type is not supported',
87 if (fg_rank.eq.0) call finish_task
88 c call memmon_print_usage()
90 call print_detailed_timing
92 call MPI_Finalize(ierr)
95 call dajczas(tcpu(),hrtime,mintime,sectime)
96 stop '********** Program terminated normally.'
99 c---------------------------------------------------------------------------
100 subroutine exec_eeval_or_minim
101 implicit real*8 (a-h,o-z)
106 include 'COMMON.SETUP'
107 include 'COMMON.TIME1'
108 include 'COMMON.INTERACT'
109 include 'COMMON.NAMES'
111 include 'COMMON.HEADER'
112 include 'COMMON.CONTROL'
113 include 'COMMON.CONTACTS'
114 include 'COMMON.CHAIN'
116 include 'COMMON.IOUNITS'
117 include 'COMMON.FFIELD'
118 include 'COMMON.SBRIDGE'
120 double precision energy(0:n_ene),varia(maxvar)
121 double precision energy_long(0:n_ene),energy_short(0:n_ene)
122 if (indpdb.eq.0) call chainbuild
129 call etotal(energy(0))
131 time_ene=MPI_Wtime()-time00
135 write (iout,*) "Time for energy evaluation",time_ene
136 print *,"after etotal"
139 call enerprint(energy(0))
140 c call hairpin(.true.,nharp,iharp)
141 c call secondary2(.true.)
146 print *, 'Calling OVERLAP_SC'
147 call overlap_sc(fail)
151 call sc_move(2,nres-1,10,1d10,nft_sc,etot)
152 print *,'SC_move',nft_sc,etot
153 write(iout,*) 'SC_move',nft_sc,etot
157 print *, 'Calling MINIM_DC'
163 call minim_dc(etot,iretcode,nfun)
165 if (indpdb.ne.0) then
169 call geom_to_var(nvar,varia)
170 print *,'Calling MINIMIZE.'
176 call minimize(etot,varia,iretcode,nfun)
178 print *,'SUMSL return code is',iretcode,' eval ',nfun
180 evals=nfun/(MPI_WTIME()-time1)
182 evals=nfun/(tcpu()-time1)
184 print *,'# eval/s',evals
185 print *,'refstr=',refstr
186 c call hairpin(.true.,nharp,iharp)
187 c call secondary2(.true.)
188 call etotal(energy(0))
190 call enerprint(energy(0))
193 call briefout(0,etot)
194 c if (refstr) call rms_nac_nnc(rms,frac,frac_nn,co,.true.)
195 write (iout,'(a,i3)') 'SUMSL return code:',iretcode
196 write (iout,'(a,i20)') '# of energy evaluations:',nfun+1
197 write (iout,'(a,f16.3)')'# of energy evaluations/sec:',evals
199 c print *,'refstr=',refstr
200 c if (refstr) call rms_nac_nnc(rms,frac,frac_nn,co,.true.)
201 c call briefout(0,etot)
203 if (outpdb) call pdbout(etot,titel(:32),ipdb)
204 if (outmol2) call mol2out(etot,titel(:32))
208 subroutine exec_checkgrad
209 implicit real*8 (a-h,o-z)
214 include 'COMMON.SETUP'
215 include 'COMMON.TIME1'
216 include 'COMMON.INTERACT'
217 include 'COMMON.NAMES'
219 include 'COMMON.HEADER'
220 include 'COMMON.CONTROL'
221 include 'COMMON.CONTACTS'
222 include 'COMMON.CHAIN'
224 include 'COMMON.IOUNITS'
225 include 'COMMON.FFIELD'
226 c include 'COMMON.REMD'
228 include 'COMMON.SBRIDGE'
230 double precision energy(0:max_ene)
232 c vbld(i)=vbld(i)+ran_number(-0.1d0,0.1d0)
233 c if (itype(i).ne.10)
234 c & vbld(i+nres)=vbld(i+nres)+ran_number(-0.001d0,0.001d0)
236 if (indpdb.eq.0) call chainbuild
239 c dc(j,i)=dc(j,i)+ran_number(-0.2d0,0.2d0)
243 c if (itype(i).ne.10) then
245 c dc(j,i+nres)=dc(j,i+nres)+ran_number(-0.2d0,0.2d0)
250 c dc(j,0)=ran_number(-0.2d0,0.2d0)
255 c call read_fragments
260 call etotal(energy(0))
262 call enerprint(energy(0))
263 write (iout,*) "Uconst",Uconst," Uconst_back",uconst_back
264 print *,'icheckgrad=',icheckgrad
265 goto (10,20,30) icheckgrad
266 10 call check_ecartint
268 20 call check_cartgrad