subroutine etotal_long(energia) implicit real*8 (a-h,o-z) include 'DIMENSIONS' c c Compute the long-range slow-varying contributions to the energy c #ifndef ISNAN external proc_proc #ifdef WINPGI cMS$ATTRIBUTES C :: proc_proc #endif #endif include 'COMMON.IOUNITS' double precision energia(0:n_ene),energia1(0:n_ene+1) include 'COMMON.FFIELD' include 'COMMON.DERIV' include 'COMMON.INTERACT' include 'COMMON.SBRIDGE' include 'COMMON.CHAIN' include 'COMMON.VAR' include 'COMMON.MD' c c Zero out energy components c evdw=0.0d0 evdw2=0.0d0 evdw2_14=0.0d0 ees=0.0d0 evdw1=0.0d0 ecorr=0.0d0 ecorr5=0.0d0 ecorr6=0.0d0 eel_loc=0.0d0 eello_turn3=0.0d0 eello_turn4=0.0d0 eturn6=0.0d0 ebe=0.0d0 escloc=0.0d0 etors=0.0d0 etors_d=0.0d0 ehpb=0.0d0 edihcnstr=0.0d0 estr=0.0d0 esccor=0.0d0 call int_from_cart1(.false.) cd print '(a,i2)','Calling etotal ipot=',ipot cd print *,'nnt=',nnt,' nct=',nct C C Compute the side-chain and electrostatic interaction energy C goto (101,102,103,104,105,106) ipot C Lennard-Jones potential. 101 call elj(evdw) cd print '(a)','Exit ELJ' goto 107 C Lennard-Jones-Kihara potential (shifted). 102 call eljk(evdw) goto 107 C Berne-Pechukas potential (dilated LJ, angular dependence). 103 call ebp(evdw) goto 107 C Gay-Berne potential (shifted LJ, angular dependence). 104 call egb(evdw) goto 107 C Gay-Berne-Vorobjev potential (shifted LJ, angular dependence). 105 call egbv(evdw) goto 107 C Soft-sphere potential 106 call e_softsphere(evdw) C C Calculate electrostatic (H-bonding) energy of the main chain. C 107 continue c print *,"Processor",myrank," computed USCSC" call vec_and_deriv c print *,"Processor",myrank," left VEC_AND_DERIV" if (ipot.lt.6) then #ifdef SPLITELE if (welec.gt.0d0.or.wvdwpp.gt.0d0.or.wel_loc.gt.0d0.or. & wturn3.gt.0d0.or.wturn4.gt.0d0) then #else if (welec.gt.0d0.or.wel_loc.gt.0d0.or. & wturn3.gt.0d0.or.wturn4.gt.0d0) then #endif call eelec(ees,evdw1,eel_loc,eello_turn3,eello_turn4) else ees=0 evdw1=0 eel_loc=0 eello_turn3=0 eello_turn4=0 endif else c write (iout,*) "Soft-spheer ELEC potential" call eelec_soft_sphere(ees,evdw1,eel_loc,eello_turn3, & eello_turn4) endif C C Calculate excluded-volume interaction energy between peptide groups C and side chains. C if (ipot.lt.6) then call escp(evdw2,evdw2_14) else c write (iout,*) "Soft-sphere SCP potential" call escp_soft_sphere(evdw2,evdw2_14) endif C C 12/1/95 Multi-body terms C n_corr=0 n_corr1=0 if ((wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0 .or. wcorr6.gt.0.0d0 & .or. wturn6.gt.0.0d0) .and. ipot.lt.6) then call multibody_eello(ecorr,ecorr5,ecorr6,eturn6,n_corr,n_corr1) c write (2,*) 'n_corr=',n_corr,' n_corr1=',n_corr1, c &" ecorr",ecorr," ecorr5",ecorr5," ecorr6",ecorr6," eturn6",eturn6 else ecorr=0.0d0 ecorr5=0.0d0 ecorr6=0.0d0 eturn6=0.0d0 endif if ((wcorr4.eq.0.0d0 .and. wcorr.gt.0.0d0) .and. ipot.lt.6) then call multibody_hb(ecorr,ecorr5,ecorr6,n_corr,n_corr1) endif #ifndef CRYST_THET C C Calculate the virtual-bond-angle energy. C c call ebend(ebe) #endif C C Calculate the SC local energy. C #ifndef CRYST_SC c call esc(escloc) #endif #ifndef CRYST_TOR C C Calculate the virtual-bond torsional energy. C call etor(etors,edihcnstr) #endif C C 6/23/01 Calculate double-torsional energy C call etor_d(etors_d) C C Sum the energies C if (wsccor.gt.0.0d0) then call eback_sc_corr(esccor) else esccor=0.0d0 endif C C If performing constraint dynamics, call the constraint energy C after the equilibration time if(usampl.and.totT.gt.eq_time) then call EconstrQ call Econstr_back else Uconst=0.0d0 Uconst_back=0.0d0 endif c print *,"Processor",myrank," computed Uconstr" c C Sum the energies C energia(1)=evdw #ifdef SCP14 energia(2)=evdw2-evdw2_14 energia(18)=evdw2_14 #else energia(2)=evdw2 energia(18)=0.0d0 #endif #ifdef SPLITELE energia(3)=ees energia(16)=evdw1 #else energia(3)=ees+evdw1 energia(16)=0.0d0 #endif energia(4)=ecorr energia(5)=ecorr5 energia(6)=ecorr6 energia(7)=eel_loc energia(8)=eello_turn3 energia(9)=eello_turn4 energia(10)=eturn6 energia(11)=ebe energia(12)=escloc energia(13)=etors energia(14)=etors_d energia(15)=ehpb energia(19)=edihcnstr energia(17)=estr energia(20)=Uconst+Uconst_back energia(21)=esccor call sum_energy(energia,.true.) return end c------------------------------------------------------------------------------ subroutine etotal_short(energia) implicit real*8 (a-h,o-z) include 'DIMENSIONS' c c Compute the short-range fast-varying contributions to the energy c #ifndef ISNAN external proc_proc #ifdef WINPGI cMS$ATTRIBUTES C :: proc_proc #endif #endif include 'COMMON.IOUNITS' double precision energia(0:n_ene) include 'COMMON.FFIELD' include 'COMMON.DERIV' include 'COMMON.INTERACT' include 'COMMON.SBRIDGE' include 'COMMON.CHAIN' include 'COMMON.VAR' c c Zero out energy components c evdw=0.0d0 evdw2=0.0d0 evdw2_14=0.0d0 ees=0.0d0 evdw1=0.0d0 ecorr=0.0d0 ecorr5=0.0d0 ecorr6=0.0d0 eel_loc=0.0d0 eello_turn3=0.0d0 eello_turn4=0.0d0 eturn6=0.0d0 ebe=0.0d0 escloc=0.0d0 etors=0.0d0 etors_d=0.0d0 ehpb=0.0d0 edihcnstr=0.0d0 estr=0.0d0 esccor=0.0d0 call int_from_cart1(.false.) c c Calculate the bond-stretching energy c call ebond(estr) C C Calculate the disulfide-bridge and other energy and the contributions C from other distance constraints. call edis(ehpb) c#ifdef CRYST_THET C C Calculate the virtual-bond-angle energy. C call ebend(ebe) c#endif C C Calculate the SC local energy. C c#ifdef CRYST_SC call vec_and_deriv call esc(escloc) c#endif #ifdef CRYST_TOR C C Calculate the virtual-bond torsional energy. C call etor(etors,edihcnstr) #endif c C Sum the energies C energia(1)=evdw #ifdef SCP14 energia(2)=evdw2-evdw2_14 energia(18)=evdw2_14 #else energia(2)=evdw2 energia(18)=0.0d0 #endif #ifdef SPLITELE energia(3)=ees energia(16)=evdw1 #else energia(3)=ees+evdw1 energia(16)=0.0d0 #endif energia(4)=ecorr energia(5)=ecorr5 energia(6)=ecorr6 energia(7)=eel_loc energia(8)=eello_turn3 energia(9)=eello_turn4 energia(10)=eturn6 energia(11)=ebe energia(12)=escloc energia(13)=etors energia(14)=etors_d energia(15)=ehpb energia(19)=edihcnstr energia(17)=estr energia(20)=Uconst+Uconst_back energia(21)=esccor call sum_energy(energia,.true.) return end