17 #include "./base/base_uses.f90"
23 LOGICAL,
PARAMETER :: debug_this_module = .false.
25 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'csvr_system_utils'
81 REAL(kind=
dp),
INTENT(IN) :: kk, sigma
82 INTEGER,
INTENT(IN) :: ndeg
83 REAL(kind=
dp),
INTENT(IN) :: taut
84 TYPE(rng_stream_type),
INTENT(INOUT) :: rng_stream
85 REAL(kind=
dp) :: my_res
87 REAL(kind=
dp) :: factor, resample, reverse, rr
91 IF (taut > 0.1_dp)
THEN
92 factor = exp(-1.0_dp/taut)
96 rr = rng_stream%next()
100 IF ((rr*rr*sigma*(1.0_dp - factor)) > (ndeg*kk*factor) .AND. rr <= 0.0_dp) reverse = -1.0_dp
104 IF (ndeg /= 1) reverse = 1.0_dp
105 resample = kk + (1.0_dp - factor)*(sigma*(sumnoises(ndeg - 1, rng_stream) + rr**2)/real(ndeg, kind=
dp) - kk) &
106 + 2.0_dp*rr*sqrt(kk*sigma/ndeg*(1.0_dp - factor)*factor)
108 resample = max(0.0_dp, resample)
109 my_res = reverse*sqrt(resample/kk)
122 FUNCTION sumnoises(nn, rng_stream)
RESULT(sum_gauss)
123 INTEGER,
INTENT(IN) :: nn
124 TYPE(rng_stream_type),
INTENT(INOUT) :: rng_stream
125 REAL(kind=
dp) :: sum_gauss
131 sum_gauss = sum_gauss + rng_stream%next()**2
134 END FUNCTION sumnoises
real(kind=dp) function, public rescaling_factor(kk, sigma, ndeg, taut, rng_stream)
Stochastic velocity rescale, as described in Bussi, Donadio and Parrinello, J. Chem....
Defines the basic variable types.
integer, parameter, public dp
Parallel (pseudo)random number generator (RNG) for multiple streams and substreams of random numbers.