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*(dimen*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