The volume changing step size is specified in terms of an absolute delta volume because you can't use a fractional change like vol *= (1 + rv) where rv is a random variable in a symmetric interval around 0, because a 5% compression isn't reversed by a 5% expansion. However, this is already essentially solved in the stretch step, which does vec *= exp(rv) with rv a random variable in an interval symmetric about 0. This is reversible, because a * exp(rv) * exp(-rv) = a, unlike a * (1 + rv) * (1 - rv) != a.
It might be cleaner to replace the current code with one that uses a fractional volume change step size, with an exp(rv) factir to ensure reversibility.
The volume changing step size is specified in terms of an absolute delta volume because you can't use a fractional change like
vol *= (1 + rv)wherervis a random variable in a symmetric interval around 0, because a 5% compression isn't reversed by a 5% expansion. However, this is already essentially solved in the stretch step, which doesvec *= exp(rv)withrva random variable in an interval symmetric about 0. This is reversible, becausea * exp(rv) * exp(-rv) = a, unlikea * (1 + rv) * (1 - rv) != a.It might be cleaner to replace the current code with one that uses a fractional volume change step size, with an
exp(rv)factir to ensure reversibility.