+ double precision function HNose(ek,s,e,pi,Q,t_bath,dimenl)
+ implicit none
+ double precision ek,s,e,pi,Q,t_bath,Rb
+ integer dimenl
+ Rb=0.001986d0
+ HNose=ek+e+pi**2/(2*Q)+dimenl*Rb*t_bath*log(s)
+c print '(6f15.5,i5,a2,2f15.5)',ek,s,e,pi,Q,t_bath,dimenl,"--",
+c & pi**2/(2*Q),dimenl*Rb*t_bath*log(s)
+ return
+ end
+c-----------------------------------------------------------------
+ double precision function HNose_nh(eki,e)
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+ include 'COMMON.MD'
+ HNose_nh=eki+e+dimen3*Rb*t_bath*xlogs(1)+qmass(1)*vlogs(1)**2/2
+ do i=2,nnos
+ HNose_nh=HNose_nh+qmass(i)*vlogs(i)**2/2+Rb*t_bath*xlogs(i)
+ enddo
+c write(4,'(5e15.5)')
+c & vlogs(1),xlogs(1),HNose,eki,e
+ return
+ end
+c-----------------------------------------------------------------
+ SUBROUTINE NHCINT(akin,scale,wdti,wdti2,wdti4,wdti8)
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+ include 'COMMON.MD'
+ double precision akin,gnkt,dt,aa,gkt,scale
+ double precision wdti(maxyosh),wdti2(maxyosh),
+ & wdti4(maxyosh),wdti8(maxyosh)
+ integer i,iresn,iyosh,inos,nnos1
+
+ dt=d_time
+ nnos1=nnos+1
+ GKT = Rb*t_bath
+ GNKT = dimen3*GKT
+ akin=akin*2
+
+
+C THIS ROUTINE DOES THE NOSE-HOOVER PART OF THE
+C INTEGRATION FROM t=0 TO t=DT/2
+C GET THE TOTAL KINETIC ENERGY
+ SCALE = 1.D0
+c CALL GETKINP(MASS,VX,VY,VZ,AKIN)
+C UPDATE THE FORCES
+ GLOGS(1) = (AKIN - GNKT)/QMASS(1)
+C START THE MULTIPLE TIME STEP PROCEDURE
+ DO IRESN = 1,NRESN
+ DO IYOSH = 1,NYOSH
+C UPDATE THE THERMOSTAT VELOCITIES
+ VLOGS(NNOS) = VLOGS(NNOS) + GLOGS(NNOS)*WDTI4(IYOSH)
+ DO INOS = 1,NNOS-1
+ AA = EXP(-WDTI8(IYOSH)*VLOGS(NNOS1-INOS) )
+ VLOGS(NNOS-INOS) = VLOGS(NNOS-INOS)*AA*AA
+ & + WDTI4(IYOSH)*GLOGS(NNOS-INOS)*AA
+ ENDDO
+C UPDATE THE PARTICLE VELOCITIES
+ AA = EXP(-WDTI2(IYOSH)*VLOGS(1) )
+ SCALE = SCALE*AA
+C UPDATE THE FORCES
+ GLOGS(1) = (SCALE*SCALE*AKIN - GNKT)/QMASS(1)
+C UPDATE THE THERMOSTAT POSITIONS
+ DO INOS = 1,NNOS
+ XLOGS(INOS) = XLOGS(INOS) + VLOGS(INOS)*WDTI2(IYOSH)
+ ENDDO
+C UPDATE THE THERMOSTAT VELOCITIES
+ DO INOS = 1,NNOS-1
+ AA = EXP(-WDTI8(IYOSH)*VLOGS(INOS+1) )
+ VLOGS(INOS) = VLOGS(INOS)*AA*AA
+ & + WDTI4(IYOSH)*GLOGS(INOS)*AA
+ GLOGS(INOS+1) = (QMASS(INOS)*VLOGS(INOS)*VLOGS(INOS)
+ & -GKT)/QMASS(INOS+1)
+ ENDDO
+ VLOGS(NNOS) = VLOGS(NNOS) + GLOGS(NNOS)*WDTI4(IYOSH)
+ ENDDO
+ ENDDO
+C UPDATE THE PARTICLE VELOCITIES
+c outside of this subroutine
+c DO I = 1,N
+c VX(I) = VX(I)*SCALE
+c VY(I) = VY(I)*SCALE
+c VZ(I) = VZ(I)*SCALE
+c ENDDO
+ RETURN
+ END
+c-----------------------------------------------------------------
+ subroutine tnp1_respa_i_step1
+c Applying Nose-Poincare algorithm - step 1 to coordinates
+c JPSJ 70 75 (2001) S. Nose
+c
+c d_t is not updated here
+c
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+ include 'COMMON.CONTROL'
+ include 'COMMON.VAR'
+ include 'COMMON.MD'
+ include 'COMMON.CHAIN'
+ include 'COMMON.DERIV'
+ include 'COMMON.GEO'
+ include 'COMMON.LOCAL'
+ include 'COMMON.INTERACT'
+ include 'COMMON.IOUNITS'
+ include 'COMMON.NAMES'
+ double precision adt,adt2,tmp
+
+ tmp=1+pi_np/(2*Q_np)*0.5*d_time
+ s12_np=s_np*tmp**2
+ pistar=pi_np/tmp
+ s12_dt=d_time/s12_np
+ d_time_s12=d_time*0.5*s12_np
+
+ do j=1,3
+ d_t_new(j,0)=d_t_old(j,0)+d_a_old(j,0)*d_time_s12
+ dc(j,0)=dc_old(j,0)+d_t_new(j,0)*s12_dt
+ enddo
+ do i=nnt,nct-1
+ do j=1,3
+ d_t_new(j,i)=d_t_old(j,i)+d_a_old(j,i)*d_time_s12
+ dc(j,i)=dc_old(j,i)+d_t_new(j,i)*s12_dt
+ enddo
+ enddo
+ do i=nnt,nct
+ if (itype(i).ne.10) then
+ inres=i+nres
+ do j=1,3
+ d_t_new(j,inres)=d_t_old(j,inres)+d_a_old(j,inres)*d_time_s12
+ dc(j,inres)=dc_old(j,inres)+d_t_new(j,inres)*s12_dt
+ enddo
+ endif
+ enddo
+ return
+ end
+c---------------------------------------------------------------------
+ subroutine tnp1_respa_i_step2
+c Step 2 of the velocity Verlet algorithm: update velocities
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+ include 'COMMON.CONTROL'
+ include 'COMMON.VAR'
+ include 'COMMON.MD'
+ include 'COMMON.CHAIN'
+ include 'COMMON.DERIV'
+ include 'COMMON.GEO'
+ include 'COMMON.LOCAL'
+ include 'COMMON.INTERACT'
+ include 'COMMON.IOUNITS'
+ include 'COMMON.NAMES'
+
+ double precision d_time_s12
+
+ do i=0,2*nres
+ do j=1,3
+ d_t(j,i)=d_t_new(j,i)
+ enddo
+ enddo
+
+ call kinetic(EK)
+ EK=EK/s12_np**2
+
+ d_time_s12=0.5d0*s12_np*d_time
+
+ do j=1,3
+ d_t(j,0)=d_t_new(j,0)+d_a(j,0)*d_time_s12
+ enddo
+ do i=nnt,nct-1
+ do j=1,3
+ d_t(j,i)=d_t_new(j,i)+d_a(j,i)*d_time_s12
+ enddo
+ enddo
+ do i=nnt,nct
+ if (itype(i).ne.10) then
+ inres=i+nres
+ do j=1,3
+ d_t(j,inres)=d_t_new(j,inres)+d_a(j,inres)*d_time_s12
+ enddo
+ endif
+ enddo
+
+ pistar=pistar+(EK-0.5*(E_old+potE)
+ & -dimen3*Rb*t_bath*log(s12_np)+Csplit-dimen3*Rb*t_bath)*d_time
+ tmp=1+pistar/(2*Q_np)*0.5*d_time
+ s_np=s12_np*tmp**2
+ pi_np=pistar/tmp
+
+ return
+ end
+c-------------------------------------------------------
+
+ subroutine tnp1_step1
+c Applying Nose-Poincare algorithm - step 1 to coordinates
+c JPSJ 70 75 (2001) S. Nose
+c
+c d_t is not updated here
+c
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+ include 'COMMON.CONTROL'
+ include 'COMMON.VAR'
+ include 'COMMON.MD'
+ include 'COMMON.CHAIN'
+ include 'COMMON.DERIV'
+ include 'COMMON.GEO'
+ include 'COMMON.LOCAL'
+ include 'COMMON.INTERACT'
+ include 'COMMON.IOUNITS'
+ include 'COMMON.NAMES'
+ double precision adt,adt2,tmp
+
+ tmp=1+pi_np/(2*Q_np)*0.5*d_time
+ s12_np=s_np*tmp**2
+ pistar=pi_np/tmp
+ s12_dt=d_time/s12_np
+ d_time_s12=d_time*0.5*s12_np
+
+ do j=1,3
+ d_t_new(j,0)=d_t_old(j,0)+d_a_old(j,0)*d_time_s12
+ dc(j,0)=dc_old(j,0)+d_t_new(j,0)*s12_dt
+ enddo
+ do i=nnt,nct-1
+ do j=1,3
+ d_t_new(j,i)=d_t_old(j,i)+d_a_old(j,i)*d_time_s12
+ dc(j,i)=dc_old(j,i)+d_t_new(j,i)*s12_dt
+ enddo
+ enddo
+ do i=nnt,nct
+ if (itype(i).ne.10) then
+ inres=i+nres
+ do j=1,3
+ d_t_new(j,inres)=d_t_old(j,inres)+d_a_old(j,inres)*d_time_s12
+ dc(j,inres)=dc_old(j,inres)+d_t_new(j,inres)*s12_dt
+ enddo
+ endif
+ enddo
+ return
+ end
+c---------------------------------------------------------------------
+ subroutine tnp1_step2
+c Step 2 of the velocity Verlet algorithm: update velocities
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+ include 'COMMON.CONTROL'
+ include 'COMMON.VAR'
+ include 'COMMON.MD'
+ include 'COMMON.CHAIN'
+ include 'COMMON.DERIV'
+ include 'COMMON.GEO'
+ include 'COMMON.LOCAL'
+ include 'COMMON.INTERACT'
+ include 'COMMON.IOUNITS'
+ include 'COMMON.NAMES'
+
+ double precision d_time_s12
+
+ do i=0,2*nres
+ do j=1,3
+ d_t(j,i)=d_t_new(j,i)
+ enddo
+ enddo
+
+ call kinetic(EK)
+ EK=EK/s12_np**2
+
+ d_time_s12=0.5d0*s12_np*d_time
+
+ do j=1,3
+ d_t(j,0)=d_t_new(j,0)+d_a(j,0)*d_time_s12
+ enddo
+ do i=nnt,nct-1
+ do j=1,3
+ d_t(j,i)=d_t_new(j,i)+d_a(j,i)*d_time_s12
+ enddo
+ enddo
+ do i=nnt,nct
+ if (itype(i).ne.10) then
+ inres=i+nres
+ do j=1,3
+ d_t(j,inres)=d_t_new(j,inres)+d_a(j,inres)*d_time_s12
+ enddo
+ endif
+ enddo
+
+cd write(iout,*) 'pistar',pistar,EK,E_old,potE,s12_np
+ pistar=pistar+(EK-0.5*(E_old+potE)
+ & -dimen3*Rb*t_bath*log(s12_np)+H0-dimen3*Rb*t_bath)*d_time
+ tmp=1+pistar/(2*Q_np)*0.5*d_time
+ s_np=s12_np*tmp**2
+ pi_np=pistar/tmp
+
+ return
+ end
+
+c-----------------------------------------------------------------
+ subroutine tnp_respa_i_step1
+c Applying Nose-Poincare algorithm - step 1 to coordinates
+c J.Comput.Phys. 151 114 (1999) S.D.Bond B.J.Leimkuhler B.B.Laird
+c
+c d_t is not updated here, it is destroyed
+c
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+ include 'COMMON.CONTROL'
+ include 'COMMON.VAR'
+ include 'COMMON.MD'
+ include 'COMMON.CHAIN'
+ include 'COMMON.DERIV'
+ include 'COMMON.GEO'
+ include 'COMMON.LOCAL'
+ include 'COMMON.INTERACT'
+ include 'COMMON.IOUNITS'
+ include 'COMMON.NAMES'
+ double precision C_np,d_time_s,tmp,d_time_ss
+
+ d_time_s=d_time*0.5*s_np
+ct2 d_time_s=d_time*0.5*s12_np
+
+ do j=1,3
+ d_t_new(j,0)=d_t_old(j,0)+d_a_old(j,0)*d_time_s
+ enddo
+ do i=nnt,nct-1
+ do j=1,3
+ d_t_new(j,i)=d_t_old(j,i)+d_a_old(j,i)*d_time_s
+ enddo
+ enddo
+ do i=nnt,nct
+ if (itype(i).ne.10) then
+ inres=i+nres
+ do j=1,3
+ d_t_new(j,inres)=d_t_old(j,inres)+d_a_old(j,inres)*d_time_s
+ enddo
+ endif
+ enddo
+
+ do i=0,2*nres
+ do j=1,3
+ d_t(j,i)=d_t_new(j,i)
+ enddo
+ enddo
+
+ call kinetic(EK)
+ EK=EK/s_np**2
+
+ C_np=0.5*d_time*(dimen3*Rb*t_bath*(1.0+log(s_np))-EK+potE-Csplit)
+ & -pi_np
+
+ pistar=-2.0*C_np/(1.0+sqrt(1.0-C_np*d_time/Q_np))
+ tmp=0.5*d_time*pistar/Q_np
+ s12_np=s_np*(1.0+tmp)/(1.0-tmp)
+
+ d_time_ss=0.5*d_time*(1.0/s12_np+1.0/s_np)
+ct2 d_time_ss=d_time/s12_np
+c d_time_ss=0.5*d_time*(1.0/sold_np+1.0/s_np)
+
+ do j=1,3
+ dc(j,0)=dc_old(j,0)+d_t_new(j,0)*d_time_ss
+ enddo
+ do i=nnt,nct-1
+ do j=1,3
+ dc(j,i)=dc_old(j,i)+d_t_new(j,i)*d_time_ss
+ enddo
+ enddo
+ do i=nnt,nct
+ if (itype(i).ne.10) then
+ inres=i+nres
+ do j=1,3
+ dc(j,inres)=dc_old(j,inres)+d_t_new(j,inres)*d_time_ss
+ enddo
+ endif
+ enddo
+
+ return
+ end
+c---------------------------------------------------------------------
+
+ subroutine tnp_respa_i_step2
+c Step 2 of the velocity Verlet algorithm: update velocities
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+ include 'COMMON.CONTROL'
+ include 'COMMON.VAR'
+ include 'COMMON.MD'
+ include 'COMMON.CHAIN'
+ include 'COMMON.DERIV'
+ include 'COMMON.GEO'
+ include 'COMMON.LOCAL'
+ include 'COMMON.INTERACT'
+ include 'COMMON.IOUNITS'
+ include 'COMMON.NAMES'
+
+ double precision d_time_s
+
+ EK=EK*(s_np/s12_np)**2
+ HNose1=Hnose(EK,s12_np,potE,pistar,Q_np,t_bath,dimen3)
+ pi_np=pistar+0.5*d_time*(2*EK-dimen3*Rb*t_bath
+ & -HNose1+Csplit)
+
+cr print '(a,5f)','i_step2',EK,potE,HNose1,pi_np,E_long
+ d_time_s=d_time*0.5*s12_np
+c d_time_s=d_time*0.5*s_np
+
+ do j=1,3
+ d_t(j,0)=d_t_new(j,0)+d_a(j,0)*d_time_s
+ enddo
+ do i=nnt,nct-1
+ do j=1,3
+ d_t(j,i)=d_t_new(j,i)+d_a(j,i)*d_time_s
+ enddo
+ enddo
+ do i=nnt,nct
+ if (itype(i).ne.10) then
+ inres=i+nres
+ do j=1,3
+ d_t(j,inres)=d_t_new(j,inres)+d_a(j,inres)*d_time_s
+ enddo
+ endif
+ enddo
+
+ s_np=s12_np
+
+ return
+ end
+c-----------------------------------------------------------------
+ subroutine tnp_respa_step1
+c Applying Nose-Poincare algorithm - step 1 to vel for RESPA
+c J.Comput.Phys. 151 114 (1999) S.D.Bond B.J.Leimkuhler B.B.Laird
+c
+c d_t is not updated here, it is destroyed
+c
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+ include 'COMMON.CONTROL'
+ include 'COMMON.VAR'
+ include 'COMMON.MD'
+ include 'COMMON.CHAIN'
+ include 'COMMON.DERIV'
+ include 'COMMON.GEO'
+ include 'COMMON.LOCAL'
+ include 'COMMON.INTERACT'
+ include 'COMMON.IOUNITS'
+ include 'COMMON.NAMES'
+ double precision C_np,d_time_s,tmp,d_time_ss
+ double precision energia(0:n_ene)
+
+ d_time_s=d_time*0.5*s_np
+
+ do j=1,3
+ d_t_old(j,0)=d_t_old(j,0)+d_a(j,0)*d_time_s
+ enddo
+ do i=nnt,nct-1
+ do j=1,3
+ d_t_old(j,i)=d_t_old(j,i)+d_a(j,i)*d_time_s
+ enddo
+ enddo
+ do i=nnt,nct
+ if (itype(i).ne.10) then
+ inres=i+nres
+ do j=1,3
+ d_t_old(j,inres)=d_t_old(j,inres)+d_a(j,inres)*d_time_s
+ enddo
+ endif
+ enddo
+
+
+c C_np=0.5*d_time*(dimen3*Rb*t_bath*(1.0+log(s_np))-EK+potE-H0)
+c & -pi_np
+c
+c pistar=-2.0*C_np/(1.0+sqrt(1.0-C_np*d_time/Q_np))
+c tmp=0.5*d_time*pistar/Q_np
+c s12_np=s_np*(1.0+tmp)/(1.0-tmp)
+c write(iout,*) 'tnp_respa_step1',s_np,s12_np,EK,potE,C_np,pistar,tmp
+
+ct1 pi_np=pistar
+c sold_np=s_np
+c s_np=s12_np
+
+c-------------------------------------
+c test of reviewer's comment
+ pi_np=pi_np-0.5*d_time*(E_long+Csplit-H0)
+cr print '(a,3f)','1 pi_np,s_np',pi_np,s_np,E_long
+c-------------------------------------
+
+ return
+ end
+c---------------------------------------------------------------------
+ subroutine tnp_respa_step2
+c Step 2 of the velocity Verlet algorithm: update velocities for RESPA
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+ include 'COMMON.CONTROL'
+ include 'COMMON.VAR'
+ include 'COMMON.MD'
+ include 'COMMON.CHAIN'
+ include 'COMMON.DERIV'
+ include 'COMMON.GEO'
+ include 'COMMON.LOCAL'
+ include 'COMMON.INTERACT'
+ include 'COMMON.IOUNITS'
+ include 'COMMON.NAMES'
+
+ double precision d_time_s
+
+ct1 s12_np=s_np
+ct2 pistar=pi_np
+
+ct call kinetic(EK)
+ct HNose1=Hnose(EK,s12_np,potE,pistar,Q_np,t_bath,dimen3)
+ct pi_np=pistar+0.5*d_time*(2*EK-dimen3*Rb*t_bath)
+ct & -0.5*d_time*(HNose1-H0)
+
+c-------------------------------------
+c test of reviewer's comment
+ pi_np=pi_np-0.5*d_time*(E_long+Csplit-H0)
+cr print '(a,3f)','2 pi_np,s_np',pi_np,s_np,E_long
+c-------------------------------------
+ d_time_s=d_time*0.5*s_np
+
+ do j=1,3
+ d_t_old(j,0)=d_t_old(j,0)+d_a(j,0)*d_time_s
+ enddo
+ do i=nnt,nct-1
+ do j=1,3
+ d_t_old(j,i)=d_t_old(j,i)+d_a(j,i)*d_time_s
+ enddo
+ enddo
+ do i=nnt,nct
+ if (itype(i).ne.10) then
+ inres=i+nres
+ do j=1,3
+ d_t_old(j,inres)=d_t_old(j,inres)+d_a(j,inres)*d_time_s
+ enddo
+ endif
+ enddo
+
+cd s_np=s12_np
+
+ return
+ end
+c---------------------------------------------------------------------
+ subroutine tnp_step1
+c Applying Nose-Poincare algorithm - step 1 to coordinates
+c J.Comput.Phys. 151 114 (1999) S.D.Bond B.J.Leimkuhler B.B.Laird
+c
+c d_t is not updated here, it is destroyed
+c
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+ include 'COMMON.CONTROL'
+ include 'COMMON.VAR'
+ include 'COMMON.MD'
+ include 'COMMON.CHAIN'
+ include 'COMMON.DERIV'
+ include 'COMMON.GEO'
+ include 'COMMON.LOCAL'
+ include 'COMMON.INTERACT'
+ include 'COMMON.IOUNITS'
+ include 'COMMON.NAMES'
+ double precision C_np,d_time_s,tmp,d_time_ss
+
+ d_time_s=d_time*0.5*s_np
+
+ do j=1,3
+ d_t_new(j,0)=d_t_old(j,0)+d_a_old(j,0)*d_time_s
+ enddo
+ do i=nnt,nct-1
+ do j=1,3
+ d_t_new(j,i)=d_t_old(j,i)+d_a_old(j,i)*d_time_s
+ enddo
+ enddo
+ do i=nnt,nct
+ if (itype(i).ne.10) then
+ inres=i+nres
+ do j=1,3
+ d_t_new(j,inres)=d_t_old(j,inres)+d_a_old(j,inres)*d_time_s
+ enddo
+ endif
+ enddo
+
+ do i=0,2*nres
+ do j=1,3
+ d_t(j,i)=d_t_new(j,i)
+ enddo
+ enddo
+
+ call kinetic(EK)
+ EK=EK/s_np**2
+
+ C_np=0.5*d_time*(dimen3*Rb*t_bath*(1.0+log(s_np))-EK+potE-H0)
+ & -pi_np
+
+ pistar=-2.0*C_np/(1.0+sqrt(1.0-C_np*d_time/Q_np))
+ tmp=0.5*d_time*pistar/Q_np
+ s12_np=s_np*(1.0+tmp)/(1.0-tmp)
+c write(iout,*) 'tnp_step1',s_np,s12_np,EK,potE,C_np,pistar,tmp
+
+ d_time_ss=0.5*d_time*(1.0/s12_np+1.0/s_np)
+
+ do j=1,3
+ dc(j,0)=dc_old(j,0)+d_t_new(j,0)*d_time_ss
+ enddo
+ do i=nnt,nct-1
+ do j=1,3
+ dc(j,i)=dc_old(j,i)+d_t_new(j,i)*d_time_ss
+ enddo
+ enddo
+ do i=nnt,nct
+ if (itype(i).ne.10) then
+ inres=i+nres
+ do j=1,3
+ dc(j,inres)=dc_old(j,inres)+d_t_new(j,inres)*d_time_ss
+ enddo
+ endif
+ enddo
+
+ return
+ end
+c-----------------------------------------------------------------
+ subroutine tnp_step2
+c Step 2 of the velocity Verlet algorithm: update velocities
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+ include 'COMMON.CONTROL'
+ include 'COMMON.VAR'
+ include 'COMMON.MD'
+ include 'COMMON.CHAIN'
+ include 'COMMON.DERIV'
+ include 'COMMON.GEO'
+ include 'COMMON.LOCAL'
+ include 'COMMON.INTERACT'
+ include 'COMMON.IOUNITS'
+ include 'COMMON.NAMES'
+
+ double precision d_time_s
+
+ EK=EK*(s_np/s12_np)**2
+ HNose1=Hnose(EK,s12_np,potE,pistar,Q_np,t_bath,dimen3)
+ pi_np=pistar+0.5*d_time*(2*EK-dimen3*Rb*t_bath)
+ & -0.5*d_time*(HNose1-H0)
+
+cd write(iout,'(a,4f)') 'mmm',EK,potE,HNose1,pi_np
+ d_time_s=d_time*0.5*s12_np
+
+ do j=1,3
+ d_t(j,0)=d_t_new(j,0)+d_a(j,0)*d_time_s
+ enddo
+ do i=nnt,nct-1
+ do j=1,3
+ d_t(j,i)=d_t_new(j,i)+d_a(j,i)*d_time_s
+ enddo
+ enddo
+ do i=nnt,nct
+ if (itype(i).ne.10) then
+ inres=i+nres
+ do j=1,3
+ d_t(j,inres)=d_t_new(j,inres)+d_a(j,inres)*d_time_s
+ enddo
+ endif
+ enddo
+
+ s_np=s12_np
+
+ return
+ end
+