4
1
mirror of https://github.com/pfloos/quack synced 2024-11-09 15:43:56 +01:00
quack/src/MC/transition_probability.f90

42 lines
907 B
Fortran

subroutine transition_probability(nWalk,dt,D,r,rp,F,Fp,T,Tp)
! Compute transition probability
implicit none
! Input variables
integer,intent(in) :: nWalk
double precision,intent(in) :: dt,D
double precision,intent(in) :: r(nWalk,1:2,1:3), F(nWalk,1:2,1:3)
double precision,intent(in) :: rp(nWalk,1:2,1:3),Fp(nWalk,1:2,1:3)
! Local variables
integer :: iW,iEl,ixyz
! Output variables
double precision,intent(out) :: T(nWalk),Tp(nWalk)
! Initialize
T = 0d0
Tp = 0d0
! Compute
do iW=1,nWalk
do iEl=1,2
do ixyz=1,3
T(iW) = T(iW) + (rp(iW,iEl,ixyz) - r(iW,iEl,ixyz) - D*dt*F(iW,iEl,ixyz))**2
Tp(iW) = Tp(iW) + (r(iW,iEl,ixyz) - rp(iW,iEl,ixyz) - D*dt*Fp(iW,iEl,ixyz))**2
enddo
enddo
enddo
T(:) = exp(-0.25d0*T(:)/(D*dt))
Tp(:) = exp(-0.25d0*Tp(:)/(D*dt))
end subroutine transition_probability