+++ /dev/null
-c-----------------------------------------------------------
- subroutine sd_verlet_ciccotti_setup
-c Sets up the parameters of stochastic velocity Verlet algorithmi; Ciccotti's
-c version
- implicit real*8 (a-h,o-z)
- include 'DIMENSIONS'
- include 'COMMON.CONTROL'
- include 'COMMON.VAR'
- include 'COMMON.MD'
- include 'COMMON.LANGEVIN'
- include 'COMMON.CHAIN'
- include 'COMMON.DERIV'
- include 'COMMON.GEO'
- include 'COMMON.LOCAL'
- include 'COMMON.INTERACT'
- include 'COMMON.IOUNITS'
- include 'COMMON.NAMES'
- include 'COMMON.TIME1'
- double precision emgdt(MAXRES6),
- & pterm,vterm,rho,rhoc,vsig,
- & pfric_vec(MAXRES6),vfric_vec(MAXRES6),
- & afric_vec(MAXRES6),prand_vec(MAXRES6),
- & vrand_vec1(MAXRES6),vrand_vec2(MAXRES6)
- logical lprn /.false./
- double precision zero /1.0d-8/, gdt_radius /0.05d0/
- double precision ktm
- tt0 = tcpu()
-c
-c AL 8/17/04 Code adapted from tinker
-c
-c Get the frictional and random terms for stochastic dynamics in the
-c eigenspace of mass-scaled UNRES friction matrix
-c
- do i = 1, dimen
- write (iout,*) "i",i," fricgam",fricgam(i)
- gdt = fricgam(i) * d_time
-c
-c Stochastic dynamics reduces to simple MD for zero friction
-c
- if (gdt .le. zero) then
- pfric_vec(i) = 1.0d0
- vfric_vec(i) = d_time
- afric_vec(i) = 0.5d0*d_time*d_time
- prand_vec(i) = afric_vec(i)
- vrand_vec2(i) = vfric_vec(i)
-c
-c Analytical expressions when friction coefficient is large
-c
- else
- egdt = dexp(-gdt)
- pfric_vec(i) = egdt
- vfric_vec(i) = dexp(-0.5d0*gdt)*d_time
- afric_vec(i) = 0.5d0*dexp(-0.25d0*gdt)*d_time*d_time
- prand_vec(i) = afric_vec(i)
- vrand_vec2(i) = vfric_vec(i)
-c
-c Compute the scaling factors of random terms for the nonzero friction case
-c
-c ktm = 0.5d0*d_time/fricgam(i)
-c psig = dsqrt(ktm*pterm) / fricgam(i)
-c vsig = dsqrt(ktm*vterm)
-c prand_vec(i) = psig*afric_vec(i)
-c vrand_vec2(i) = vsig*vfric_vec(i)
- end if
- end do
- if (lprn) then
- write (iout,*)
- & "pfric_vec, vfric_vec, afric_vec, prand_vec, vrand_vec1,",
- & " vrand_vec2"
- do i=1,dimen
- write (iout,'(i5,6e15.5)') i,pfric_vec(i),vfric_vec(i),
- & afric_vec(i),prand_vec(i),vrand_vec1(i),vrand_vec2(i)
- enddo
- endif
-c
-c Transform from the eigenspace of mass-scaled friction matrix to UNRES variables
-c
- call eigtransf(dimen,maxres6,mt3,mt2,pfric_vec,pfric_mat)
- call eigtransf(dimen,maxres6,mt3,mt2,vfric_vec,vfric_mat)
- call eigtransf(dimen,maxres6,mt3,mt2,afric_vec,afric_mat)
- call eigtransf(dimen,maxres6,mt3,mt1,prand_vec,prand_mat)
- call eigtransf(dimen,maxres6,mt3,mt1,vrand_vec2,vrand_mat2)
- t_sdsetup=t_sdsetup+tcpu()-tt0
- return
- end