mirror of
https://github.com/pfloos/quack
synced 2024-08-15 00:58:34 +02:00
42 lines
907 B
Fortran
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
|