+C#undef DEBUG
+ 10 return1
+ end
+c------------------------------------------------------------------------
+ subroutine temp_scalfac(betaT,ft,ftprim,ftbis,*)
+ implicit none
+ include "DIMENSIONS"
+ include "DIMENSIONS.FREE"
+ include "COMMON.CONTROL"
+ include "COMMON.FREE"
+ include "COMMON.IOUNITS"
+ double precision fT(6),fTprim(6),fTbis(6),quot,quotl1,quotl,kfacl,
+ & kfac/2.4d0/,T0/300.0d0/,startGridT/200.0d0/,
+ & logfac,tanhT,betaT,denom,eplus,eminus
+ integer l
+ if (rescale_mode.eq.1) then
+ quot=betaT/T0
+ quotl=1.0d0
+ kfacl=1.0d0
+ do l=1,5
+ quotl1=quotl
+ quotl=quotl*quot
+ kfacl=kfacl*kfac
+ denom=kfacl-1.0d0+quotl
+ fT(l)=kfacl/denom
+ ftprim(l)=-l*ft(l)*quotl1/(T0*denom)
+ ftbis(l)=l*kfacl*quotl1*
+ & (2*l*quotl-(l-1)*denom)/(quot*t0*t0*denom**3)
+ enddo
+#if defined(FUNCTH)
+ ft(6)=(320.0d0+80.0d0*dtanh((betaT-320.0d0)/80.0d0))/
+ & 320.0d0
+ ftprim(6)=1.0d0/(320.0d0*dcosh((betaT-320.0d0)/80.0d0)**2)
+ ftbis(6)=-2.0d0*dtanh((betaT-320.0d0)/80.0d0)
+ & /(320.0d0*80.0d0*dcosh((betaT-320.0d0)/80.0d0)**3)
+#elif defined(FUNCT)
+ fT(6)=betaT/T0
+ ftprim(6)=1.0d0/T0
+ ftbis(6)=0.0d0
+#else
+ fT(6)=1.0d0
+ ftprim(6)=0.0d0
+ ftbis(6)=0.0d0
+#endif
+ else if (rescale_mode.eq.2) then
+ quot=betaT/T0
+ quotl=1.0d0
+ do l=1,5
+ quotl1=quotl
+ quotl=quotl*quot
+ eplus=dexp(quotl)
+ eminus=dexp(-quotl)
+ logfac=1.0d0/dlog(eplus+eminus)
+ tanhT=(eplus-eminus)/(eplus+eminus)
+ fT(l)=1.12692801104297249644d0*logfac
+ ftprim(l)=-l*quotl1*ft(l)*tanhT*logfac/T0
+ ftbis(l)=(l-1)*ftprim(l)/(quot*T0)-
+ & 2*l*quotl1/T0*logfac*
+ & (2*l*quotl1*ft(l)/(T0*(eplus+eminus)**2)
+ & +ftprim(l)*tanhT)
+ enddo
+#if defined(FUNCTH)
+ ft(6)=(320.0d0+80.0d0*dtanh((betaT-320.0d0)/80.0d0))/
+ & 320.0d0
+ ftprim(6)=1.0d0/(320.0d0*dcosh((betaT-320.0d0)/80.0d0)**2)
+ ftbis(6)=-2.0d0*dtanh((betaT-320.0d0)/80.0d0)
+ & /(320.0d0*80.0d0*dcosh((betaT-320.0d0)/80.0d0)**3)
+#elif defined(FUNCT)
+ fT(6)=betaT/T0
+ ftprim(6)=1.0d0/T0
+ ftbis(6)=0.0d0
+#else
+ fT(6)=1.0d0
+ ftprim(6)=0.0d0
+ ftbis(6)=0.0d0
+#endif
+ else if (rescale_mode.eq.0) then
+ do l=1,5
+ fT(l)=1.0d0
+ ftprim(l)=0.0d0
+ enddo
+ else
+ write (iout,*) "Error in WHAM_CALC: wrong RESCALE_MODE",
+ & rescale_mode
+ call flush(iout)
+ return1
+ endif
+ return
+ end
+c--------------------------------------------------------------------
+ subroutine sum_ene(t,iparm,ft,etot)
+ implicit none
+ include 'DIMENSIONS'
+ include 'DIMENSIONS.ZSCOPT'
+ include 'DIMENSIONS.FREE'
+ include 'COMMON.CONTROL'
+ include 'COMMON.FFIELD'
+ include "COMMON.SBRIDGE"
+ include "COMMON.ENERGIES"
+ include "COMMON.IOUNITS"
+ integer t,iparm
+ double precision fT(6)
+ double precision etot,evdw,evdw_t,evdw2,ees,evdw1,ebe,etors,
+ & escloc,ehpb,ecorr,ecorr5,ecorr6,eello_turn4,eello_turn3,
+ & eturn6,eel_loc,edihcnstr,etors_d,estr,evdw2_14,esccor,
+ & eliptran
+ evdw=enetb(21,t,iparm)
+ evdw_t=enetb(1,t,iparm)
+#ifdef SCP14
+ evdw2_14=enetb(17,t,iparm)
+ evdw2=enetb(2,t,iparm)+evdw2_14
+#else
+ evdw2=enetb(2,t,iparm)
+ evdw2_14=0.0d0
+#endif
+#ifdef SPLITELE
+ ees=enetb(3,t,iparm)
+ evdw1=enetb(16,t,iparm)
+#else
+ ees=enetb(3,t,iparm)
+ evdw1=0.0d0
+#endif
+ ecorr=enetb(4,t,iparm)
+ ecorr5=enetb(5,t,iparm)
+ ecorr6=enetb(6,t,iparm)
+ eel_loc=enetb(7,t,iparm)
+ eello_turn3=enetb(8,t,iparm)
+ eello_turn4=enetb(9,t,iparm)
+ eturn6=enetb(10,t,iparm)
+ ebe=enetb(11,t,iparm)
+ escloc=enetb(12,t,iparm)
+ etors=enetb(13,t,iparm)
+ etors_d=enetb(14,t,iparm)
+ ehpb=enetb(15,t,iparm)
+ estr=enetb(18,t,iparm)
+ esccor=enetb(19,t,iparm)
+ edihcnstr=enetb(20,t,iparm)
+ edihcnstr=0.0d0
+#ifdef SPLITELE
+ if (shield_mode.gt.0) then
+ etot=ft(1)*wsc*(evdw+ft(6)*evdw_t)+ft(1)*wscp*evdw2
+ & +ft(1)*welec*ees
+ & +ft(1)*wvdwpp*evdw1
+ & +wang*ebe+ft(1)*wtor*etors+wscloc*escloc
+c & +wstrain*ehpb+nss*ebr+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +wstrain*ehpb+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +ft(5)*wcorr6*ecorr6+ft(3)*wturn4*eello_turn4
+ & +ft(2)*wturn3*eello_turn3
+ & +ft(5)*wturn6*eturn6+ft(2)*wel_loc*eel_loc
+ & +edihcnstr+ft(2)*wtor_d*etors_d+ft(1)*wsccor*esccor
+ & +wbond*estr+wliptran*eliptran
+ else
+ etot=wsc*(evdw+ft(6)*evdw_t)+wscp*evdw2+ft(1)*welec*ees
+ & +wvdwpp*evdw1
+ & +wang*ebe+ft(1)*wtor*etors+wscloc*escloc
+c & +wstrain*ehpb+nss*ebr+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +wstrain*ehpb+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +ft(5)*wcorr6*ecorr6+ft(3)*wturn4*eello_turn4
+ & +ft(2)*wturn3*eello_turn3
+ & +ft(5)*wturn6*eturn6+ft(2)*wel_loc*eel_loc
+ & +edihcnstr+ft(2)*wtor_d*etors_d+ft(1)*wsccor*esccor
+ & +wbond*estr+wliptran*eliptran
+ endif
+#else
+ if (shield_mode.gt.0) then
+ etot=ft(1)*wsc*(evdw+ft(6)*evdw_t)+ft(1)*wscp*evdw2
+ & +ft(1)*welec*(ees+evdw1)
+ & +wang*ebe+ft(1)*wtor*etors+wscloc*escloc
+c & +wstrain*ehpb+nss*ebr+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +wstrain*ehpb+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +ft(5)*wcorr6*ecorr6+ft(3)*wturn4*eello_turn4
+ & +ft(2)*wturn3*eello_turn3
+ & +ft(5)*wturn6*eturn6+ft(2)*wel_loc*eel_loc+edihcnstr
+ & +ft(2)*wtor_d*etors_d+ft(1)*wsccor*esccor
+ & +wbond*estr+wliptran*eliptran
+ else
+ etot=wsc*(evdw+ft(6)*evdw_t)+wscp*evdw2
+ & +ft(1)*welec*(ees+evdw1)
+ & +wang*ebe+ft(1)*wtor*etors+wscloc*escloc
+c & +wstrain*ehpb+nss*ebr+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +wstrain*ehpb+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +ft(5)*wcorr6*ecorr6+ft(3)*wturn4*eello_turn4
+ & +ft(2)*wturn3*eello_turn3
+ & +ft(5)*wturn6*eturn6+ft(2)*wel_loc*eel_loc+edihcnstr
+ & +ft(2)*wtor_d*etors_d+ft(1)*wsccor*esccor
+ & +wbond*estr+wliptran*eliptran
+ endif
+#endif
+ return
+ end
+c--------------------------------------------------------------------
+ subroutine sum_ene_deriv(t,iparm,ft,ftprim,ftbis,etot,eprim,ebis)
+ implicit none
+ include 'DIMENSIONS'
+ include 'DIMENSIONS.ZSCOPT'
+ include 'DIMENSIONS.FREE'
+ include 'COMMON.CONTROL'
+ include 'COMMON.FFIELD'
+ include "COMMON.SBRIDGE"
+ include 'COMMON.ENERGIES'
+ include "COMMON.IOUNITS"
+ integer t,iparm
+ double precision fT(6),fTprim(6),fTbis(6),
+ & eprim,ebis,temper
+ double precision etot,evdw,evdw_t,evdw2,ees,evdw1,ebe,etors,
+ & escloc,ehpb,ecorr,ecorr5,ecorr6,eello_turn4,eello_turn3,
+ & eturn6,eel_loc,edihcnstr,etors_d,estr,evdw2_14,esccor,
+ & eliptran
+ evdw=enetb(21,t,iparm)
+ evdw_t=enetb(1,t,iparm)
+#ifdef SCP14
+ evdw2_14=enetb(17,t,iparm)
+ evdw2=enetb(2,t,iparm)+evdw2_14
+#else
+ evdw2=enetb(2,t,iparm)
+ evdw2_14=0.0d0
+#endif
+#ifdef SPLITELE
+ ees=enetb(3,t,iparm)
+ evdw1=enetb(16,t,iparm)
+#else
+ ees=enetb(3,t,iparm)
+ evdw1=0.0d0
+#endif
+ ecorr=enetb(4,t,iparm)
+ ecorr5=enetb(5,t,iparm)
+ ecorr6=enetb(6,t,iparm)
+ eel_loc=enetb(7,t,iparm)
+ eello_turn3=enetb(8,t,iparm)
+ eello_turn4=enetb(9,t,iparm)
+ eturn6=enetb(10,t,iparm)
+ ebe=enetb(11,t,iparm)
+ escloc=enetb(12,t,iparm)
+ etors=enetb(13,t,iparm)
+ etors_d=enetb(14,t,iparm)
+ ehpb=enetb(15,t,iparm)
+ estr=enetb(18,t,iparm)
+ esccor=enetb(19,t,iparm)
+ edihcnstr=enetb(20,t,iparm)
+ edihcnstr=0.0d0
+#ifdef SPLITELE
+ if (shield_mode.gt.0) then
+ etot=ft(1)*wsc*(evdw+ft(6)*evdw_t)+ft(1)*wscp*evdw2
+ & +ft(1)*welec*ees
+ & +ft(1)*wvdwpp*evdw1
+ & +wang*ebe+ft(1)*wtor*etors+wscloc*escloc
+c & +wstrain*ehpb+nss*ebr+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +wstrain*ehpb+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +ft(5)*wcorr6*ecorr6+ft(3)*wturn4*eello_turn4
+ & +ft(2)*wturn3*eello_turn3
+ & +ft(5)*wturn6*eturn6+ft(2)*wel_loc*eel_loc
+ & +edihcnstr+ft(2)*wtor_d*etors_d+ft(1)*wsccor*esccor
+ & +wbond*estr+wliptran*eliptran
+ eprim=ftprim(1)*(ft(6)*evdw_t+evdw)
+C & +ftprim(6)*evdw_t
+ & +ftprim(1)*wscp*evdw2
+ & +ftprim(1)*welec*ees
+ & +ftprim(1)*wvdwpp*evdw1
+ & +ftprim(1)*wtor*etors+
+ & ftprim(3)*wcorr*ecorr+ftprim(4)*wcorr5*ecorr5+
+ & ftprim(5)*wcorr6*ecorr6+ftprim(3)*wturn4*eello_turn4+
+ & ftprim(2)*wturn3*eello_turn3+ftprim(5)*wturn6*eturn6+
+ & ftprim(2)*wel_loc*eel_loc+ftprim(2)*wtor_d*etors_d+
+ & ftprim(1)*wsccor*esccor
+ ebis=ftbis(1)*wsc*(evdw+ft(6)*evdw_t)
+ & +ftbis(1)*wscp*evdw2+
+ & ftbis(1)*welec*ees
+ & +ftbis(1)*wvdwpp*evdw
+ & +ftbis(1)*wtor*etors+
+ & ftbis(3)*wcorr*ecorr+ftbis(4)*wcorr5*ecorr5+
+ & ftbis(5)*wcorr6*ecorr6+ftbis(3)*wturn4*eello_turn4+
+ & ftbis(2)*wturn3*eello_turn3+ftbis(5)*wturn6*eturn6+
+ & ftbis(2)*wel_loc*eel_loc+ftbis(2)*wtor_d*etors_d+
+ & ftbis(1)*wsccor*esccor
+ else
+ etot=wsc*(evdw+ft(6)*evdw_t)+wscp*evdw2+ft(1)*welec*ees
+ & +wvdwpp*evdw1
+ & +wang*ebe+ft(1)*wtor*etors+wscloc*escloc
+c & +wstrain*ehpb+nss*ebr+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +wstrain*ehpb+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +ft(5)*wcorr6*ecorr6+ft(3)*wturn4*eello_turn4
+ & +ft(2)*wturn3*eello_turn3
+ & +ft(5)*wturn6*eturn6+ft(2)*wel_loc*eel_loc
+ & +edihcnstr+ft(2)*wtor_d*etors_d+ft(1)*wsccor*esccor
+ & +wbond*estr+wliptran*eliptran
+ eprim=ftprim(6)*evdw_t+ftprim(1)*welec*ees
+ & +ftprim(1)*wtor*etors+
+ & ftprim(3)*wcorr*ecorr+ftprim(4)*wcorr5*ecorr5+
+ & ftprim(5)*wcorr6*ecorr6+ftprim(3)*wturn4*eello_turn4+
+ & ftprim(2)*wturn3*eello_turn3+ftprim(5)*wturn6*eturn6+
+ & ftprim(2)*wel_loc*eel_loc+ftprim(2)*wtor_d*etors_d+
+ & ftprim(1)*wsccor*esccor
+ ebis=ftbis(1)*welec*ees+ftbis(1)*wtor*etors+
+ & ftbis(3)*wcorr*ecorr+ftbis(4)*wcorr5*ecorr5+
+ & ftbis(5)*wcorr6*ecorr6+ftbis(3)*wturn4*eello_turn4+
+ & ftbis(2)*wturn3*eello_turn3+ftbis(5)*wturn6*eturn6+
+ & ftbis(2)*wel_loc*eel_loc+ftbis(2)*wtor_d*etors_d+
+ & ftbis(1)*wsccor*esccor
+ endif
+#else
+ if (shield_mode.gt.0) then
+ etot=ft(1)*wsc*(evdw+ft(6)*evdw_t)+ft(1)*wscp*evdw2
+ & +ft(1)*welec*(ees+evdw1)
+ & +wang*ebe+ft(1)*wtor*etors+wscloc*escloc
+c & +wstrain*ehpb+nss*ebr+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +wstrain*ehpb+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +ft(5)*wcorr6*ecorr6+ft(3)*wturn4*eello_turn4
+ & +ft(2)*wturn3*eello_turn3
+ & +ft(5)*wturn6*eturn6+ft(2)*wel_loc*eel_loc+edihcnstr
+ & +ft(2)*wtor_d*etors_d+ft(1)*wsccor*esccor
+ & +wbond*estr+wliptran*eliptran
+ eprim=ftprim(1)*(evdw+ft(6)*evdw_t)
+ & +ftprim(1)*welec*(ees+evdw1)
+ & +ftprim(1)*wtor*etors+
+ & ftprim(1)*wscp*evdw2+
+ & ftprim(3)*wcorr*ecorr+ftprim(4)*wcorr5*ecorr5+
+ & ftprim(5)*wcorr6*ecorr6+ftprim(3)*wturn4*eello_turn4+
+ & ftprim(2)*wturn3*eello_turn3+ftprim(5)*wturn6*eturn6+
+ & ftprim(2)*wel_loc*eel_loc+ftprim(2)*wtor_d*etors_d+
+ & ftprim(1)*wsccor*esccor
+ ebis= ftbis(1)*(evdw+ft(6)*evdw_t)
+ & +ftbis(1)*wscp*evdw2
+ & +ftbis(1)*welec*(ees+evdw1)+ftbis(1)*wtor*etors+
+ & ftbis(3)*wcorr*ecorr+ftbis(4)*wcorr5*ecorr5+
+ & ftbis(5)*wcorr6*ecorr6+ftbis(3)*wturn4*eello_turn4+
+ & ftbis(2)*wturn3*eello_turn3+ftbis(5)*wturn6*eturn6+
+ & ftbis(2)*wel_loc*eel_loc+ftbis(2)*wtor_d*etors_d+
+ & ftprim(1)*wsccor*esccor
+ else
+ etot=wsc*(evdw+ft(6)*evdw_t)+wscp*evdw2
+ & +ft(1)*welec*(ees+evdw1)
+ & +wang*ebe+ft(1)*wtor*etors+wscloc*escloc
+c & +wstrain*ehpb+nss*ebr+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +wstrain*ehpb+ft(3)*wcorr*ecorr+ft(4)*wcorr5*ecorr5
+ & +ft(5)*wcorr6*ecorr6+ft(3)*wturn4*eello_turn4
+ & +ft(2)*wturn3*eello_turn3
+ & +ft(5)*wturn6*eturn6+ft(2)*wel_loc*eel_loc+edihcnstr
+ & +ft(2)*wtor_d*etors_d+ft(1)*wsccor*esccor
+ & +wbond*estr+wliptran*eliptran
+ eprim=ftprim(6)*evdw_t+ftprim(1)*welec*(ees+evdw1)
+ & +ftprim(1)*wtor*etors+
+ & ftprim(3)*wcorr*ecorr+ftprim(4)*wcorr5*ecorr5+
+ & ftprim(5)*wcorr6*ecorr6+ftprim(3)*wturn4*eello_turn4+
+ & ftprim(2)*wturn3*eello_turn3+ftprim(5)*wturn6*eturn6+
+ & ftprim(2)*wel_loc*eel_loc+ftprim(2)*wtor_d*etors_d+
+ & ftprim(1)*wsccor*esccor
+ ebis=ftbis(1)*welec*(ees+evdw1)+ftbis(1)*wtor*etors+
+ & ftbis(3)*wcorr*ecorr+ftbis(4)*wcorr5*ecorr5+
+ & ftbis(5)*wcorr6*ecorr6+ftbis(3)*wturn4*eello_turn4+
+ & ftbis(2)*wturn3*eello_turn3+ftbis(5)*wturn6*eturn6+
+ & ftbis(2)*wel_loc*eel_loc+ftbis(2)*wtor_d*etors_d+
+ & ftprim(1)*wsccor*esccor
+ endif
+#endif
+ return