1 subroutine ave_property(ncon,*)
2 ! construct the conformational ensembles at REMD temperatures
9 integer ierror,errcode,status(MPI_STATUS_SIZE)
11 include "COMMON.IOUNITS"
13 include "COMMON.FFIELD"
14 include "COMMON.INTERACT"
15 include "COMMON.SBRIDGE"
16 include "COMMON.CHAIN"
17 include "COMMON.CLUSTER"
18 include "COMMON.PROPERTY"
19 double precision fT(6),fTprim(6),fTbis(6),quot,quotl1,quotl,kfacl,
20 & eprim,ebis,temper,kfac/2.4d0/,T0/300.0d0/
21 double precision etot,evdw,evdw2,ees,evdw1,ebe,etors,escloc,
22 & ehpb,ecorr,ecorr5,ecorr6,eello_turn4,eello_turn3,
23 & eturn6,eel_loc,edihcnstr,etors_d,estr,evdw2_14,esccor,
25 integer i,ii,ik,iproc,iscor,j,k,l,ib,ncon
26 double precision sumprob,eini,efree,rmsdev
33 double precision energia(0:max_ene)
34 double precision qfree(600),ave_rms_chain(600),ave_assoc(600),
35 & ave_hbond_intra(600),ave_hbond_inter(600),ave_assoc_hbond(600)
37 double precision qfree_part(600),ave_rms_chain_part(600),
38 & ave_assoc_part(600),ave_hbond_intra_part(600),
39 & ave_hbond_inter_part(600),ave_assoc_hbond_part(600)
40 c write (iout,*) me," indstart",indstart(me)," indend",indend(me)
41 call daread_ccoords(indstart(me),indend(me))
52 c(k,j+nres)=allcart(k,j+nres,i)
57 c(k,nres+nres)=c(k,nres)
64 call int_from_cart1(.false.)
68 call etotal(energia(0),fT)
70 call enerprint(energia,ft)
76 call monomer_contact(i)
77 call hbonds_intra_inter(i)
79 write (iout,*) "jcon",i
80 write (iout,*) (rms_intrachain(j,i),j=1,nchain)
81 write (iout,*) (npept_cont_interchain(j,i),j=1,nchain)
82 write (iout,*) (npept_cont_intrachain(j,i),j=1,nchain)
83 write (iout,*) (iassoc(j,i),j=1,nchain)
89 write (iout,*) "jcon",i
90 write (iout,*) (rms_intrachain(j,i),j=1,nchain)
91 write (iout,*) (npept_cont_interchain(j,i),j=1,nchain)
92 write (iout,*) (npept_cont_intrachain(j,i),j=1,nchain)
93 write (iout,*) (iassoc(j,i),j=1,nchain)
98 beta=1.0d0/(1.987d-3*ib)
110 evdw2=enetb(2,i)+evdw2_14
126 eello_turn3=enetb(8,i)
127 eello_turn4=enetb(9,i)
136 edihcnstr=enetb(20,i)
139 write (iout,*) "evdw", wsc, evdw,evdw_t
140 write (iout,*) "evdw2", wscp, evdw2
141 write (iout,*) "welec", ft(1),welec,ees
142 write (iout,*) "evdw1", wvdwpp,evdw1
143 write (iout,*) "ebe" ebe,wang
146 write (iout,*) "fdim calc", i,ii,
147 & totfree(i),entfac(ii),Fdimless(i)
150 if (rescale_mode.eq.1) then
151 quot=1.0d0/(T0*beta*1.987D-3)
158 fT(l)=kfacl/(kfacl-1.0d0+quotl)
161 ft(6)=(320.0d0+80.0d0*dtanh((betaT-320.0d0)/80.0d0))/
163 ftprim(6)=1.0d0/(320.0d0*dcosh((betaT-320.0d0)/80.0d0)**2)
164 ftbis(6)=-2.0d0*dtanh((betaT-320.0d0)/80.0d0)
165 & /(320.0d0*80.0d0*dcosh((betaT-320.0d0)/80.0d0)**3)
175 else if (rescale_mode.eq.2) then
176 quot=1.0d0/(T0*beta*1.987D-3)
180 fT(l)=1.12692801104297249644d0/
181 & dlog(dexp(quotl)+dexp(-quotl))
184 ft(6)=(320.0d0+80.0d0*dtanh((betaT-320.0d0)/80.0d0))/
186 ftprim(6)=1.0d0/(320.0d0*dcosh((betaT-320.0d0)/80.0d0)**2)
187 ftbis(6)=-2.0d0*dtanh((betaT-320.0d0)/80.0d0)
188 & /(320.0d0*80.0d0*dcosh((betaT-320.0d0)/80.0d0)**3)
199 c write (iout,*) "ft",(ft(k),k=1,6)
201 etot=wsc*(evdw+ft(6)*evdw_t)+wscp*evdw2+welec*ft(1)*ees
203 & +wang*ebe+wtor*ft(1)*etors+wscloc*escloc
204 & +wstrain*ehpb+nss*ebr+wcorr*ft(3)*ecorr+wcorr5*ft(4)*ecorr5
205 & +wcorr6*ft(5)*ecorr6+wturn4*ft(3)*eello_turn4
206 & +wturn3*ft(2)*eello_turn3+wturn6*ft(5)*eturn6
207 & +wel_loc*ft(2)*eel_loc+edihcnstr+wtor_d*ft(2)*etors_d
208 & +wbond*estr+wsccor*ft(1)*esccor
210 etot=wsc*(evdw+ft(6)*evdw_t)+wscp*evdw2
211 & +welec*ft(1)*(ees+evdw1)
212 & +wang*ebe+wtor*ft(1)*etors+wscloc*escloc
213 & +wstrain*ehpb+nss*ebr+wcorr*ft(3)*ecorr+wcorr5*ft(4)*ecorr5
214 & +wcorr6*ft(5)*ecorr6+wturn4*ft(3)*eello_turn4
215 & +wturn3*ft(2)*eello_turn3+wturn6*ft(5)*eturn6
216 & +wel_loc*ft(2)*eel_loc+edihcnstr+wtor_d*ft(2)*etors_d
217 & +wbond*estr+wsccor*ft(1)*esccor
220 write (iout,10) (evdw+ft(6)*evdw_t),wsc,evdw2,wscp,ees,
223 & estr,wbond,ebe,wang,escloc,wscloc,etors,wtor*ft(1),
224 & etors_d,wtor_d*ft(2),ehpb,wstrain,
225 & ecorr,wcorr*ft(3),ecorr5,wcorr5*ft(4),ecorr6,wcorr6*ft(5),
226 & eel_loc,wel_loc*ft(2),eello_turn3,wturn3*ft(2),
227 & eello_turn4,wturn4*ft(3),eturn6,wturn6*ft(5),
228 & esccor,wsccor*ft(1),edihcnstr,ebr*nss,etot
229 10 format (/'Virtual-chain energies:'//
230 & 'EVDW= ',1pE16.6,' WEIGHT=',1pD16.6,' (SC-SC)'/
231 & 'EVDW2= ',1pE16.6,' WEIGHT=',1pD16.6,' (SC-p)'/
232 & 'EES= ',1pE16.6,' WEIGHT=',1pD16.6,' (p-p elec)'/
233 & 'EVDWPP=',1pE16.6,' WEIGHT=',1pD16.6,' (p-p VDW)'/
234 & 'ESTR= ',1pE16.6,' WEIGHT=',1pD16.6,' (stretching)'/
235 & 'EBE= ',1pE16.6,' WEIGHT=',1pD16.6,' (bending)'/
236 & 'ESC= ',1pE16.6,' WEIGHT=',1pD16.6,' (SC local)'/
237 & 'ETORS= ',1pE16.6,' WEIGHT=',1pD16.6,' (torsional)'/
238 & 'ETORSD=',1pE16.6,' WEIGHT=',1pD16.6,' (double torsional)'/
239 & 'EHBP= ',1pE16.6,' WEIGHT=',1pD16.6,
240 & ' (SS bridges & dist. cnstr.)'/
241 & 'ECORR4=',1pE16.6,' WEIGHT=',1pD16.6,' (multi-body)'/
242 & 'ECORR5=',1pE16.6,' WEIGHT=',1pD16.6,' (multi-body)'/
243 & 'ECORR6=',1pE16.6,' WEIGHT=',1pD16.6,' (multi-body)'/
244 & 'EELLO= ',1pE16.6,' WEIGHT=',1pD16.6,' (electrostatic-local)'/
245 & 'ETURN3=',1pE16.6,' WEIGHT=',1pD16.6,' (turns, 3rd order)'/
246 & 'ETURN4=',1pE16.6,' WEIGHT=',1pD16.6,' (turns, 4th order)'/
247 & 'ETURN6=',1pE16.6,' WEIGHT=',1pD16.6,' (turns, 6th order)'/
248 & 'ESCCOR=',1pE16.6,' WEIGHT=',1pD16.6,' (backbone-rotamer corr)'/
249 & 'EDIHC= ',1pE16.6,' (dihedral angle constraints)'/
250 & 'ESS= ',1pE16.6,' (disulfide-bridge intrinsic energy)'/
251 & 'ETOT= ',1pE16.6,' (total)')
253 totfree(i)=beta*etot+entfac(ii)
255 write (iout,*) "ib",ib," beta",beta," i",i," ii",ii,
256 & " etot",etot,entfac(ii),totfree(i)
258 if (totfree(i).lt.Fmin) Fmin=totfree(i)
261 call MPI_Allreduce(Fmin,Fmin_all,1,
262 & MPI_DOUBLE_PRECISION,MPI_MIN,MPI_COMM_WORLD,IERROR)
267 ave_rms_chain_part(ib)=0.0d0
268 ave_assoc_part(ib)=0.0d0
269 ave_hbond_intra_part(ib)=0.0d0
270 ave_hbond_inter_part(ib)=0.0d0
271 ave_assoc_hbond_part(ib)=0.0d0
274 w=dexp(-totfree(i)+Fmin_all)
275 c write (iout,*) "i",i," w",w
276 qfree_part(ib)=qfree_part(ib)+w
279 ave_rms_chain_part(ib)=ave_rms_chain_part(ib)
280 & +w*rms_intrachain(j,i)
281 ave_assoc_part(ib)=ave_assoc_part(ib)+w*iassoc(j,i)
282 ave_hbond_intra_part(ib)=ave_hbond_intra_part(ib)
283 & +w*npept_cont_intrachain(j,i)
284 ave_hbond_inter_part(ib)=ave_hbond_inter_part(ib)
285 & +w*npept_cont_interchain(j,i)
286 if (npept_cont_interchain(j,i).gt.0)
287 & ave_assoc_hbond_part(ib)=ave_assoc_hbond_part(ib)+w
293 call MPI_Reduce(qfree_part(1),qfree(1),600,
294 & MPI_DOUBLE_PRECISION,MPI_SUM,Master,MPI_COMM_WORLD,IERROR)
295 call MPI_Reduce(ave_rms_chain_part(1),ave_rms_chain(1),600,
296 & MPI_DOUBLE_PRECISION,MPI_SUM,Master,MPI_COMM_WORLD,IERROR)
297 call MPI_Reduce(ave_assoc_part(1),ave_assoc(1),600,
298 & MPI_DOUBLE_PRECISION,MPI_SUM,Master,MPI_COMM_WORLD,IERROR)
299 call MPI_Reduce(ave_hbond_intra_part(1),ave_hbond_intra(1),600,
300 & MPI_DOUBLE_PRECISION,MPI_SUM,Master,MPI_COMM_WORLD,IERROR)
301 call MPI_Reduce(ave_hbond_inter_part(1),ave_hbond_inter(1),600,
302 & MPI_DOUBLE_PRECISION,MPI_SUM,Master,MPI_COMM_WORLD,IERROR)
303 call MPI_Reduce(ave_assoc_hbond_part(1),ave_assoc_hbond(1),600,
304 & MPI_DOUBLE_PRECISION,MPI_SUM,Master,MPI_COMM_WORLD,IERROR)
307 ave_rms_chain(ib)=0.0d0
309 ave_hbond_intra(ib)=0.0d0
310 ave_hbond_inter(ib)=0.0d0
311 ave_assoc_hbond(ib)=0.0d0
313 w=dexp(-totfree(i)+Fmin_all)
314 qfree(ib)=qfree(ib)+w
317 ave_rms_chain(ib)=ave_rms_chain(ib)+w*rms_intrachain(j,i)
318 ave_assoc(ib)=ave_assoc(ib)+w*iassoc(j,i)
319 ave_hbond_intra(ib)=ave_hbond_intra(ib)
320 & +w*npept_cont_intrachain(j,i)
321 ave_hbond_inter(ib)=ave_hbond_inter(ib)
322 & +w*npept_cont_interchain(j,i)
323 if (npept_cont_interchain(j,i).gt.0)
324 & ave_assoc_hbond(ib)=ave_assoc_hbond(ib)+w
332 if (me.eq.Master) then
335 write (istat,'(i5,5f10.5)') ib,ave_rms_chain(ib)/qfree(ib),
336 & ave_assoc(ib)/qfree(ib),ave_assoc_hbond(ib)/qfree(ib),
337 & ave_hbond_intra(ib)/qfree(ib),ave_hbond_inter(ib)/qfree(ib)
345 !--------------------------------------------------
346 subroutine mysort1(n, x, ipermut)
348 integer i,j,imax,ipm,n
356 if (x(j).lt.xtemp) then
364 ipermut(imax)=ipermut(i)
369 !--------------------------------------------------
370 subroutine rmsd_intra(jcon)
373 include "sizesclu.dat"
374 include "COMMON.CONTROL"
375 include "COMMON.IOUNITS"
376 include "COMMON.FREE"
377 include "COMMON.FFIELD"
378 include "COMMON.INTERACT"
379 include "COMMON.SBRIDGE"
380 include "COMMON.CHAIN"
381 include "COMMON.CLUSTER"
382 include "COMMON.PROPERTY"
384 double precision xx(3,maxres),yy(3,maxres)
388 double precision przes(3),obrot(3,3)
392 do k=ichain(1,i),ichain(2,i)
395 xx(j,ii)=allcart(j,i,jcon)
399 do k=ichain(1,i),ichain(2,i)
400 c if (itype(i).ne.10) then
403 xx(j,ii)=allcart(j,i+nres,jcon)
404 yy(j,ii)=cref(j,i+nres,1)
408 call fitsq(rms,xx(1,1),yy(1,1),ii,przes,obrot,non_conv)
409 rms_intrachain(i,jcon)=dsqrt(rms)
414 xx(j,i)=allcart(j,i,jcon)
418 write (iout,*) "Conformation",jcon
422 write (iout,*) "chain",i
424 do j=1,ichain(2,i)-ichain(1,i)+1
426 write (iout,'(i5,3f10.5,5x,3f10.5)') j,
427 & (xx(k,ichain(1,i)+j-1),k=1,3),
428 & (cref(k,ichain(1,i)+j-1,1),k=1,3)
431 call fitsq(rms,xx(1,ichain(1,i)),cref(1,ichain(1,i),1),
432 & ichain(2,i)-ichain(1,i)+1,przes,obrot,non_conv)
433 rms_intrachain(i,jcon)=dsqrt(rms)
435 write (iout,*) "rms",rms
441 !--------------------------------------------------
442 subroutine hbonds_intra_inter(jcon)
445 include "sizesclu.dat"
446 include "COMMON.IOUNITS"
447 include "COMMON.FREE"
448 include "COMMON.FFIELD"
449 include "COMMON.INTERACT"
450 include "COMMON.SBRIDGE"
451 include "COMMON.CHAIN"
452 include "COMMON.CLUSTER"
453 include "COMMON.PROPERTY"
454 integer ncont,icont(2,maxcont)
455 integer i,j,jcon,nr1,nr2
457 npept_cont_interchain(i,jcon)=0
458 npept_cont_intrachain(i,jcon)=0
462 c(j,i)=allcart(j,i,jcon)
465 call elecont(.false.,ncont,icont,nnt,nct)
467 nr1=nres_chain(icont(1,i))
468 nr2=nres_chain(icont(2,i))
470 npept_cont_intrachain(nr1,jcon)=
471 & npept_cont_intrachain(nr1,jcon)+1
473 npept_cont_interchain(nr1,jcon)=
474 & npept_cont_interchain(nr1,jcon)+1
475 npept_cont_interchain(nr2,jcon)=
476 & npept_cont_interchain(nr2,jcon)+1
481 !--------------------------------------------------
482 subroutine monomer_contact(jcon)
485 include "sizesclu.dat"
486 include "COMMON.IOUNITS"
487 include "COMMON.FREE"
488 include "COMMON.FFIELD"
489 include "COMMON.INTERACT"
490 include "COMMON.SBRIDGE"
491 include "COMMON.CHAIN"
492 include "COMMON.CLUSTER"
493 include "COMMON.PROPERTY"
494 integer ncont,icont(2,maxcont)
495 integer i,j,ic1,ic2,jcon
501 c(j,i)=allcart(j,i,jcon)
504 call contact(.false.,ncont,icont,nnt,nct)
506 ic1=nres_chain(icont(1,i))
507 ic2=nres_chain(icont(2,i))