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
82 & 'This calculation type is not supported',
88 if (fg_rank.eq.0) call finish_task
89 c call memmon_print_usage()
91 call print_detailed_timing
93 call MPI_Finalize(ierr)
96 call dajczas(tcpu(),hrtime,mintime,sectime)
97 stop '********** Program terminated normally.'
100 c---------------------------------------------------------------------------
101 subroutine exec_eeval_or_minim
102 implicit real*8 (a-h,o-z)
107 include 'COMMON.SETUP'
108 include 'COMMON.TIME1'
109 include 'COMMON.INTERACT'
110 include 'COMMON.NAMES'
112 include 'COMMON.HEADER'
113 include 'COMMON.CONTROL'
114 include 'COMMON.CONTACTS'
115 include 'COMMON.CHAIN'
117 include 'COMMON.IOUNITS'
118 include 'COMMON.FFIELD'
119 include 'COMMON.SBRIDGE'
121 double precision energy(0:n_ene),varia(maxvar)
122 double precision energy_long(0:n_ene),energy_short(0:n_ene)
123 if (indpdb.eq.0) call chainbuild
130 call etotal(energy(0))
132 time_ene=MPI_Wtime()-time00
136 write (iout,*) "Time for energy evaluation",time_ene
137 print *,"after etotal"
140 call enerprint(energy(0))
141 c call hairpin(.true.,nharp,iharp)
142 c call secondary2(.true.)
147 print *, 'Calling OVERLAP_SC'
148 call overlap_sc(fail)
152 call sc_move(2,nres-1,10,1d10,nft_sc,etot)
153 print *,'SC_move',nft_sc,etot
154 write(iout,*) 'SC_move',nft_sc,etot
158 print *, 'Calling MINIM_DC'
164 call minim_dc(etot,iretcode,nfun)
166 if (indpdb.ne.0) then
170 call geom_to_var(nvar,varia)
171 print *,'Calling MINIMIZE.'
177 call minimize(etot,varia,iretcode,nfun)
179 print *,'SUMSL return code is',iretcode,' eval ',nfun
181 evals=nfun/(MPI_WTIME()-time1)
183 evals=nfun/(tcpu()-time1)
185 print *,'# eval/s',evals
186 print *,'refstr=',refstr
187 c call hairpin(.true.,nharp,iharp)
188 c call secondary2(.true.)
189 call etotal(energy(0))
191 call enerprint(energy(0))
194 call briefout(0,etot)
195 c if (refstr) call rms_nac_nnc(rms,frac,frac_nn,co,.true.)
196 write (iout,'(a,i3)') 'SUMSL return code:',iretcode
197 write (iout,'(a,i20)') '# of energy evaluations:',nfun+1
198 write (iout,'(a,f16.3)')'# of energy evaluations/sec:',evals
200 c print *,'refstr=',refstr
201 c if (refstr) call rms_nac_nnc(rms,frac,frac_nn,co,.true.)
202 c call briefout(0,etot)
204 if (outpdb) call pdbout(etot,titel(:32),ipdb)
205 if (outmol2) call mol2out(etot,titel(:32))
209 subroutine exec_checkgrad
210 implicit real*8 (a-h,o-z)
215 include 'COMMON.SETUP'
216 include 'COMMON.TIME1'
217 include 'COMMON.INTERACT'
218 include 'COMMON.NAMES'
220 include 'COMMON.HEADER'
221 include 'COMMON.CONTROL'
222 include 'COMMON.CONTACTS'
223 include 'COMMON.CHAIN'
225 include 'COMMON.IOUNITS'
226 include 'COMMON.FFIELD'
227 c include 'COMMON.REMD'
229 include 'COMMON.SBRIDGE'
231 double precision energy(0:max_ene)
233 c vbld(i)=vbld(i)+ran_number(-0.1d0,0.1d0)
234 c if (itype(i).ne.10)
235 c & vbld(i+nres)=vbld(i+nres)+ran_number(-0.001d0,0.001d0)
237 if (indpdb.eq.0) call chainbuild
240 c dc(j,i)=dc(j,i)+ran_number(-0.2d0,0.2d0)
244 c if (itype(i).ne.10) then
246 c dc(j,i+nres)=dc(j,i+nres)+ran_number(-0.2d0,0.2d0)
251 c dc(j,0)=ran_number(-0.2d0,0.2d0)
256 c call read_fragments
261 call etotal(energy(0))
263 call enerprint(energy(0))
264 write (iout,*) "Uconst",Uconst," Uconst_back",uconst_back
265 print *,'icheckgrad=',icheckgrad
266 goto (10,20,30) icheckgrad
267 10 call check_ecartint
269 20 call check_cartgrad