& nres0,nstart_seq,chain_length,iprzes,tabperm,nperm,afmend,
& afmbeg
double precision c,dc,dc_old,d_c_work,xloc,xrot,dc_norm,t,r,
- & prod,rt,dc_work,cref,crefjlee,chain_rep,dc_norm2,velAFMconst
+ & prod,rt,dc_work,cref,crefjlee,chain_rep,dc_norm2,velAFMconst,
+ & totTafm
common /chain/ c(3,maxres2+2),dc(3,0:maxres2),dc_old(3,0:maxres2),
& xloc(3,maxres),xrot(3,maxres),dc_norm(3,0:maxres2),
& dc_norm2(3,0:maxres2),
& buflipbot, bufliptop,bordlipbot,bordliptop,lipbufthick,lipthick
common /box/ boxxsize,boxysize,boxzsize,enecut,sscut,sss,sssgrad,
& buflipbot, bufliptop,bordlipbot,bordliptop,lipbufthick,lipthick
- common /afm/ forceAFMconst, distafminit,afmend,afmbeg,velAFMconst
+ common /afm/ forceAFMconst, distafminit,afmend,afmbeg,
+ & velAFMconst,
+ & totTafm
if (ntwe.ne.0) then
if (mod(itime,ntwe).eq.0) then
call statout(itime)
- call enerprint(potEcomp)
+C call enerprint(potEcomp)
C print *,itime,'AFM',Eafmforc,etot
endif
#ifdef VOUT
endif
if (rattle) call rattle2
totT=totT+d_time
+ totTafm=totT
+C print *,totTafm,"TU?"
if (d_time.ne.d_time0) then
d_time=d_time0
#ifndef LANG0
potE=potEcomp(0)-potEcomp(20)
c potE=energia_short(0)+energia_long(0)
totT=totT+d_time
+ totTafm=totT
c Calculate the kinetic and the total energy and the kinetic temperature
call kinetic(EK)
totE=EK+potE
endif
call random_vel
totT=0.0d0
+ totTafm=totT
endif
else
c Generate initial velocities
& write(iout,*) "Initial velocities randomly generated"
call random_vel
totT=0.0d0
+CtotTafm is the variable for AFM time which eclipsed during
+ totTafm=totT
endif
c rest2name = prefix(:ilen(prefix))//'.rst'
if(me.eq.king.or..not.out1file)then
c & " d_t_work_new",d_t_work_new(ii)
enddo
enddo
- if (SELFGUIDE.gt.0) then
- distance=0.0
- do j=1,3
- vec_afm(j)=c(j,afmend)-c(j,afmbeg)
- distance=distance+vec_afm(j)**2
- enddo
- distance=dsqrt(distance)
- do j=1,3
- d_t_work_new(j+(afmbeg-1)*3)=-velAFMconst*vec_afm(j)/distance
- d_t_work_new(j+(afmend-1)*3)=velAFMconst*vec_afm(j)/distance
- write(iout,*) "myvel",d_t_work_new(j+(afmbeg-1)*3),
- & d_t_work_new(j+(afmend-1)*3)
- enddo
+C if (SELFGUIDE.gt.0) then
+C distance=0.0
+C do j=1,3
+C vec_afm(j)=c(j,afmend)-c(j,afmbeg)
+C distance=distance+vec_afm(j)**2
+C enddo
+C distance=dsqrt(distance)
+C do j=1,3
+C d_t_work_new(j+(afmbeg-1)*3)=-velAFMconst*vec_afm(j)/distance
+C d_t_work_new(j+(afmend-1)*3)=velAFMconst*vec_afm(j)/distance
+C write(iout,*) "myvel",d_t_work_new(j+(afmbeg-1)*3),
+C & d_t_work_new(j+(afmend-1)*3)
+C enddo
- endif
+C endif
c diagnostics
c Ek1=0.0d0
potE=potEcomp(0)-potEcomp(20)
call cartgrad
totT=totT+d_time
+ totTafm=totT
c Calculate the kinetic and total energy and the kinetic temperature
call kinetic(EK)
#ifdef MPI
C print *,"za lipidami"
if (AFMlog.gt.0) then
call AFMforce(Eafmforce)
+ else if (selfguide.gt.0) then
+ call AFMvel(Eafmforce)
endif
#ifdef TIMING
time_enecalc=time_enecalc+MPI_Wtime()-time00
C print *,'AFM',Eafmforce
return
end
+C---------------------------------------------------------
+C AFM subroutine with pseudoconstant velocity
+ subroutine AFMvel(Eafmforce)
+ implicit real*8 (a-h,o-z)
+ include 'DIMENSIONS'
+ include 'COMMON.GEO'
+ include 'COMMON.VAR'
+ include 'COMMON.LOCAL'
+ include 'COMMON.CHAIN'
+ include 'COMMON.DERIV'
+ include 'COMMON.NAMES'
+ include 'COMMON.INTERACT'
+ include 'COMMON.IOUNITS'
+ include 'COMMON.CALC'
+ include 'COMMON.CONTROL'
+ include 'COMMON.SPLITELE'
+ include 'COMMON.SBRIDGE'
+ real*8 diffafm(3)
+C Only for check grad COMMENT if not used for checkgrad
+C totT=3.0d0
+C--------------------------------------------------------
+C print *,"wchodze"
+ dist=0.0d0
+ Eafmforce=0.0d0
+ do i=1,3
+ diffafm(i)=c(i,afmend)-c(i,afmbeg)
+ dist=dist+diffafm(i)**2
+ enddo
+ dist=dsqrt(dist)
+ Eafmforce=0.5d0*forceAFMconst
+ & *(distafminit+totTafm*velAFMconst-dist)**2
+C Eafmforce=-forceAFMconst*(dist-distafminit)
+ do i=1,3
+ gradafm(i,afmend-1)=-forceAFMconst*
+ &(distafminit+totTafm*velAFMconst-dist)
+ &*diffafm(i)/dist
+ gradafm(i,afmbeg-1)=forceAFMconst*
+ &(distafminit+totTafm*velAFMconst-dist)
+ &*diffafm(i)/dist
+ enddo
+C print *,'AFM',Eafmforce,totTafm*velAFMconst,dist
+ return
+ end
+
& rms,frac,frac_nn,kinetic_T,t_bath,gyrate(),
& potEcomp(23),me
format1="a133"
- print *,'A CHUJ',potEcomp(23)
+ else
+C print *,'A CHUJ',potEcomp(23)
write (line1,'(i10,f15.2,7f12.3,i5,$)')
& itime,totT,EK,potE,totE,
& kinetic_T,t_bath,gyrate(),
& potEcomp(23),me
format1="a114"
endif
- else if (SELFGUIDE.gt.0) then
+ else if (selfguide.gt.0) then
distance=0.0
do j=1,3
- distance=distance+c(j,afmend)-c(j,afmbeg)
+ distance=distance+(c(j,afmend)-c(j,afmbeg))**2
enddo
distance=dsqrt(distance)
if (refstr) then
call rms_nac_nnc(rms,frac,frac_nn,co,.false.)
- write (line1,'(i10,f15.2,3f12.3,f7.2,2f6.3,4f12.3,i5,$)')
+ write (line1,'(i10,f15.2,3f12.3,f7.2,2f6.3,f12.3,f10.1,2f8.2,
+ & f9.2,i5,$)')
& itime,totT,EK,potE,totE,
& rms,frac,frac_nn,kinetic_T,t_bath,gyrate(),
- & distance,me
+ & distance,potEcomp(23),me
format1="a133"
- print *,'A CHUJ',potEcomp(23)
- write (line1,'(i10,f15.2,7f12.3,i5,$)')
+C print *,"CHUJOWO"
+ else
+C print *,'A CHUJ',potEcomp(23)
+ write (line1,'(i10,f15.2,8f12.3,i5,$)')
& itime,totT,EK,potE,totE,
& kinetic_T,t_bath,gyrate(),
- & distance,me
+ & distance,potEcomp(23),me
format1="a114"
endif
-
+ else
if (refstr) then
call rms_nac_nnc(rms,frac,frac_nn,co,.false.)
write (line1,'(i10,f15.2,3f12.3,f7.2,4f6.3,3f12.3,i5,$)')
enddo
endif
c The side-chain vector derivatives
- if (SELFGUIDE.gt.0) then
- do j=1,3
+C if (SELFGUIDE.gt.0) then
+C do j=1,3
C gcart(j,afmbeg)=gcart(j,afmbeg)+gcart(j,afmend)
- gcart(j,afmbeg)=0.0d0
- gcart(j,afmend)=0.0d0
- enddo
- endif
+C gcart(j,afmbeg)=0.0d0
+C gcart(j,afmend)=0.0d0
+C enddo
+C endif
return
end
include 'COMMON.MD'
open(irest2,file=rest2name,status='unknown')
read(irest2,*) totT,EK,potE,totE,t_bath
+ totTafm=totT
do i=1,2*nres
read(irest2,'(3e15.5)') (d_t(j,i),j=1,3)
enddo