1 subroutine etotal_long(energia)
2 implicit real*8 (a-h,o-z)
5 c Compute the long-range slow-varying contributions to the energy
10 cMS$ATTRIBUTES C :: proc_proc
15 double precision weights_(n_ene)
17 include 'COMMON.SETUP'
18 include 'COMMON.IOUNITS'
19 double precision energia(0:n_ene)
20 include 'COMMON.FFIELD'
21 include 'COMMON.DERIV'
22 include 'COMMON.INTERACT'
23 include 'COMMON.SBRIDGE'
24 include 'COMMON.CHAIN'
26 include 'COMMON.LOCAL'
28 c write(iout,'(a,i2)')'Calling etotal_long ipot=',ipot
29 if (modecalc.eq.12.or.modecalc.eq.14) then
31 c if (fg_rank.eq.0) call int_from_cart1(.false.)
33 call int_from_cart1(.false.)
37 c write(iout,*) "ETOTAL_LONG Processor",fg_rank,
38 c & " absolute rank",myrank," nfgtasks",nfgtasks
40 if (nfgtasks.gt.1) then
42 C FG slaves call the following matching MPI_Bcast in ERGASTULUM
43 if (fg_rank.eq.0) then
44 call MPI_Bcast(3,1,MPI_INTEGER,king,FG_COMM,IERROR)
45 c write (iout,*) "Processor",myrank," BROADCAST iorder"
47 C FG master sets up the WEIGHTS_ array which will be broadcast to the
48 C FG slaves as WEIGHTS array.
68 C FG Master broadcasts the WEIGHTS_ array
69 call MPI_Bcast(weights_(1),n_ene,
70 & MPI_DOUBLE_PRECISION,king,FG_COMM,IERROR)
72 C FG slaves receive the WEIGHTS array
73 call MPI_Bcast(weights(1),n_ene,
74 & MPI_DOUBLE_PRECISION,king,FG_COMM,IERROR)
95 call MPI_Bcast(dc(1,1),6*nres,MPI_DOUBLE_PRECISION,
97 time_Bcast=time_Bcast+MPI_Wtime()-time00
98 time_Bcastw=time_Bcastw+MPI_Wtime()-time00
99 c call chainbuild_cart
100 c call int_from_cart1(.false.)
102 c write (iout,*) 'Processor',myrank,
103 c & ' calling etotal_short ipot=',ipot
105 c print *,'Processor',myrank,' nnt=',nnt,' nct=',nct
107 cd print *,'nnt=',nnt,' nct=',nct
109 C Compute the side-chain and electrostatic interaction energy
111 goto (101,102,103,104,105,106) ipot
112 C Lennard-Jones potential.
113 101 call elj_long(evdw)
114 cd print '(a)','Exit ELJ'
116 C Lennard-Jones-Kihara potential (shifted).
117 102 call eljk_long(evdw)
119 C Berne-Pechukas potential (dilated LJ, angular dependence).
120 103 call ebp_long(evdw)
122 C Gay-Berne potential (shifted LJ, angular dependence).
123 104 call egb_long(evdw,evdw_p,evdw_m)
125 C Gay-Berne-Vorobjev potential (shifted LJ, angular dependence).
126 105 call egbv_long(evdw)
128 C Soft-sphere potential
129 106 call e_softsphere(evdw)
131 C Calculate electrostatic (H-bonding) energy of the main chain.
137 if (welec.gt.0d0.or.wvdwpp.gt.0d0.or.wel_loc.gt.0d0.or.
138 & wturn3.gt.0d0.or.wturn4.gt.0d0 .or. wcorr.gt.0.0d0
139 & .or. wcorr4.gt.0.0d0 .or. wcorr5.gt.0.d0
140 & .or. wcorr6.gt.0.0d0 .or. wturn6.gt.0.0d0 ) then
142 if (welec.gt.0d0.or.wel_loc.gt.0d0.or.
143 & wturn3.gt.0d0.or.wturn4.gt.0d0 .or. wcorr.gt.0.0d0
144 & .or. wcorr4.gt.0.0d0 .or. wcorr5.gt.0.d0
145 & .or. wcorr6.gt.0.0d0 .or. wturn6.gt.0.0d0 ) then
147 call eelec_scale(ees,evdw1,eel_loc,eello_turn3,eello_turn4)
156 c write (iout,*) "Soft-spheer ELEC potential"
157 call eelec_soft_sphere(ees,evdw1,eel_loc,eello_turn3,
161 C Calculate excluded-volume interaction energy between peptide groups
166 call escp_long(evdw2,evdw2_14)
172 call escp_soft_sphere(evdw2,evdw2_14)
175 C 12/1/95 Multi-body terms
179 if ((wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0 .or. wcorr6.gt.0.0d0
180 & .or. wturn6.gt.0.0d0) .and. ipot.lt.6) then
181 call multibody_eello(ecorr,ecorr5,ecorr6,eturn6,n_corr,n_corr1)
182 c write (2,*) 'n_corr=',n_corr,' n_corr1=',n_corr1,
183 c &" ecorr",ecorr," ecorr5",ecorr5," ecorr6",ecorr6," eturn6",eturn6
190 if ((wcorr4.eq.0.0d0 .and. wcorr.gt.0.0d0) .and. ipot.lt.6) then
191 call multibody_hb(ecorr,ecorr5,ecorr6,n_corr,n_corr1)
194 C If performing constraint dynamics, call the constraint energy
195 C after the equilibration time
196 if(usampl.and.totT.gt.eq_time) then
211 energia(2)=evdw2-evdw2_14
228 energia(8)=eello_turn3
229 energia(9)=eello_turn4
231 energia(20)=Uconst+Uconst_back
234 call sum_energy(energia,.true.)
235 c write (iout,*) "Exit ETOTAL_LONG"
239 c------------------------------------------------------------------------------
240 subroutine etotal_short(energia)
241 implicit real*8 (a-h,o-z)
244 c Compute the short-range fast-varying contributions to the energy
249 cMS$ATTRIBUTES C :: proc_proc
254 double precision weights_(n_ene)
256 include 'COMMON.SETUP'
257 include 'COMMON.IOUNITS'
258 double precision energia(0:n_ene)
259 include 'COMMON.FFIELD'
260 include 'COMMON.DERIV'
261 include 'COMMON.INTERACT'
262 include 'COMMON.SBRIDGE'
263 include 'COMMON.CHAIN'
265 include 'COMMON.LOCAL'
266 include 'COMMON.CONTROL'
273 c write(iout,'(a,i2)')'Calling etotal_short ipot=',ipot
275 if (modecalc.eq.12.or.modecalc.eq.14) then
277 if (fg_rank.eq.0) call int_from_cart1(.false.)
279 call int_from_cart1(.false.)
283 c write(iout,*) "ETOTAL_SHORT Processor",fg_rank,
284 c & " absolute rank",myrank," nfgtasks",nfgtasks
286 if (nfgtasks.gt.1) then
288 C FG slaves call the following matching MPI_Bcast in ERGASTULUM
289 if (fg_rank.eq.0) then
290 call MPI_Bcast(2,1,MPI_INTEGER,king,FG_COMM,IERROR)
291 c write (iout,*) "Processor",myrank," BROADCAST iorder"
293 C FG master sets up the WEIGHTS_ array which will be broadcast to the
294 C FG slaves as WEIGHTS array.
314 C FG Master broadcasts the WEIGHTS_ array
315 call MPI_Bcast(weights_(1),n_ene,
316 & MPI_DOUBLE_PRECISION,king,FG_COMM,IERROR)
318 C FG slaves receive the WEIGHTS array
319 call MPI_Bcast(weights(1),n_ene,
320 & MPI_DOUBLE_PRECISION,king,FG_COMM,IERROR)
341 c write (iout,*),"Processor",myrank," BROADCAST weights"
342 call MPI_Bcast(c(1,1),maxres6,MPI_DOUBLE_PRECISION,
344 c write (iout,*) "Processor",myrank," BROADCAST c"
345 call MPI_Bcast(dc(1,1),maxres6,MPI_DOUBLE_PRECISION,
347 c write (iout,*) "Processor",myrank," BROADCAST dc"
348 call MPI_Bcast(dc_norm(1,1),maxres6,MPI_DOUBLE_PRECISION,
350 c write (iout,*) "Processor",myrank," BROADCAST dc_norm"
351 call MPI_Bcast(theta(1),nres,MPI_DOUBLE_PRECISION,
353 c write (iout,*) "Processor",myrank," BROADCAST theta"
354 call MPI_Bcast(phi(1),nres,MPI_DOUBLE_PRECISION,
356 c write (iout,*) "Processor",myrank," BROADCAST phi"
357 call MPI_Bcast(alph(1),nres,MPI_DOUBLE_PRECISION,
359 c write (iout,*) "Processor",myrank," BROADCAST alph"
360 call MPI_Bcast(omeg(1),nres,MPI_DOUBLE_PRECISION,
362 c write (iout,*) "Processor",myrank," BROADCAST omeg"
363 call MPI_Bcast(vbld(1),2*nres,MPI_DOUBLE_PRECISION,
365 c write (iout,*) "Processor",myrank," BROADCAST vbld"
366 call MPI_Bcast(vbld_inv(1),2*nres,MPI_DOUBLE_PRECISION,
368 time_Bcast=time_Bcast+MPI_Wtime()-time00
369 c write (iout,*) "Processor",myrank," BROADCAST vbld_inv"
371 c write (iout,*) 'Processor',myrank,
372 c & ' calling etotal_short ipot=',ipot
374 c print *,'Processor',myrank,' nnt=',nnt,' nct=',nct
376 c call int_from_cart1(.false.)
378 C Compute the side-chain and electrostatic interaction energy
380 goto (101,102,103,104,105,106) ipot
381 C Lennard-Jones potential.
382 101 call elj_short(evdw)
383 cd print '(a)','Exit ELJ'
385 C Lennard-Jones-Kihara potential (shifted).
386 102 call eljk_short(evdw)
388 C Berne-Pechukas potential (dilated LJ, angular dependence).
389 103 call ebp_short(evdw)
391 C Gay-Berne potential (shifted LJ, angular dependence).
392 104 call egb_short(evdw,evdw_p,evdw_m)
394 C Gay-Berne-Vorobjev potential (shifted LJ, angular dependence).
395 105 call egbv_short(evdw)
397 C Soft-sphere potential - already dealt with in the long-range part
399 c 106 call e_softsphere_short(evdw)
401 C Calculate electrostatic (H-bonding) energy of the main chain.
405 C BARTEK for dfa test!
406 if (wdfa_dist.gt.0) then
411 c print*, 'edfad is finished!', edfadis
412 if (wdfa_tor.gt.0) then
417 c print*, 'edfat is finished!', edfator
418 if (wdfa_nei.gt.0) then
423 c print*, 'edfan is finished!', edfanei
424 if (wdfa_beta.gt.0) then
429 c print*, 'edfab is finished!', edfabet
432 c Calculate the short-range part of Evdwpp
434 call evdwpp_short(evdw1)
436 c Calculate the short-range part of ESCp
439 call escp_short(evdw2,evdw2_14)
442 c Calculate the bond-stretching energy
446 C Calculate the disulfide-bridge and other energy and the contributions
447 C from other distance constraints.
450 C Calculate the virtual-bond-angle energy.
454 C Calculate the SC local energy.
459 C Calculate the virtual-bond torsional energy.
461 call etor(etors,edihcnstr)
463 c Homology restraints
465 if (constr_homology.ge.1) then
466 call e_modeller(ehomology_constr)
468 ehomology_constr=0.0d0
471 C 6/23/01 Calculate double-torsional energy
475 C 21/5/07 Calculate local sicdechain correlation energy
477 if (wsccor.gt.0.0d0) then
478 call eback_sc_corr(esccor)
483 C Put energy components into an array
490 energia(2)=evdw2-evdw2_14
507 energia(19)=edihcnstr
511 energia(24)=ehomology_constr
516 c write (iout,*) "ETOTAL_SHORT before SUM_ENERGY"
518 call sum_energy(energia,.true.)
519 c write (iout,*) "Exit ETOTAL_SHORT"