TABLE OF CONTENTS
- 1. /random
- 1.1. random/Seed
- 1.2. random/resetRandom
- 1.3. random/rnExp
- 1.4. random/InitRan
- 1.5. random/initRandom
- 1.6. random/SetRandom
- 1.7. random/rn_openInterval
- 1.8. random/rn
- 1.9. random/rnFlat
- 1.10. random/rnGauss
- 1.11. random/rnCos
- 1.12. random/rnPower
- 1.13. random/rnOmega
- 1.14. random/rnOmega_anis
- 1.15. random/rnOmega_angles
- 1.16. random/rn_trueFalse
- 1.17. random/ranCharge
/random [ Modules ]
NAME
module random
PURPOSE
Contains all information and routines, which are necessary for the random number generation.
NOTES
Formerly we used the random number generator RAN3 from Numerical Recipes. We switched to the generator "PYR" provided by Pythia, which is a rewrite of the RANMAR routine from the Cernlib.
Contrary to the old RAN3 behaviour, the new rn() excludes the endpoints 0 and 1 !
random/Seed [ Global module-variables ]
[ Top ] [ random ] [ Global module-variables ]
PURPOSE
Random Seed (used to initialize the random number generator), accessible through the namelist 'initRandom'. If Seed is zero (default), then it is set via "SYSTEM_CLOCK()".
SOURCE
integer,save :: Seed = 0
random/resetRandom [ Global module-variables ]
[ Top ] [ random ] [ Global module-variables ]
PURPOSE
Reread random generator, used by setRandom, useful for debugging.
SOURCE
logical,save :: resetRandom = .false.
random/rnExp [ Functions ]
[ Top ] [ random ] [ Functions ]
NAME
real function rnExp (A) real function rnExp (A, x1, x2)
PURPOSE
Evaluates a random number x according to an exp(A*x) distribution. If given, x is restricted to lie between x1 and x2 (it doesn't matter which one of the two is larger).
INPUTS
- real :: A -- slope parameter (can be negative)
- real :: x1 -- minimal x-value
- real :: x2 -- maximal x-value
RESULT
random number
random/InitRan [ Functions ]
[ Top ] [ random ] [ Functions ]
NAME
subroutine InitRan
PURPOSE
Reads random seed out of namelist 'initRandom' in jobcard and initializes the random number generator.
random/initRandom [ Namelists ]
[ Top ] [ random ] [ Namelists ]
NAME
NAMELIST /initRandom/
PURPOSE
Includes the input variables:
random/SetRandom [ Subroutines ]
[ Top ] [ random ] [ Subroutines ]
NAME
subroutine SetRandom
PURPOSE
write out/read random number generators
NOTES
This routine provides a shortcut for MC debugging: if an error occurs in run 12345 of 99999 runs/energy after 3 days of CPU time, the idea is to reset the random generators by reading in some files, that already run 1 reproduces this error.
In order to avoid some re-ordering of the random number lists, only in run number 3 the previously written files are read. The code stops in run 4.
random/rn_openInterval [ Functions ]
[ Top ] [ random ] [ Functions ]
NAME
real function rn_openInterval()
PURPOSE
Evaluates a random number in (0,1).
USAGE
(real)=rn_openInterval() Notes Finds random number which is in [1E-8,1-1E-8], which is approximately (0,1).
random/rn [ Functions ]
[ Top ] [ random ] [ Functions ]
NAME
real function rn()
PURPOSE
Evaluates a random number in (0,1).
USAGE
(real)=rn()
NOTES
Checks whether the random generator should be initialised, otherwise it just calls PYR. Endpoints are excluded.
random/rnFlat [ Functions ]
[ Top ] [ random ] [ Functions ]
NAME
real function rnFlat(xMin,xMax)
PURPOSE
Draws a random number from a flat (uniform) distribution on (xMin,xMax).
INPUTS
- real :: xMin,xMax -- minimum and maximum value
random/rnGauss [ Functions ]
[ Top ] [ random ] [ Functions ]
NAME
real function rnGauss(StdDev, Mean)
PURPOSE
evaluates a random number in according a Gauss distribution
INPUTS
- real :: StdDev -- standard deviation
- real :: Mean -- mean value of distribution
RESULT
Random number.
random/rnCos [ Functions ]
[ Top ] [ random ] [ Functions ]
NAME
real function rnCos()
PURPOSE
Evaluates a random number x according to cos(x) distribution. So cos(x) is assumed to be isotropic in [-1,1]
INPUTS
- NONE
RESULT
Random number.
random/rnPower [ Functions ]
[ Top ] [ random ] [ Functions ]
NAME
real function rnPower (n, xMin, xMax)
PURPOSE
Draws a random number according to a power-law distribution ~ x^n.
INPUTS
- real :: n -- exponent in power law (arbitrary real number)
- real :: xMin,xMax -- minimum and maximum value
RESULT
Random number between xMin and xMax.
random/rnOmega [ Functions ]
[ Top ] [ random ] [ Functions ]
NAME
function rnOmega()
PURPOSE
Generates a unit vector with random angle (isotropical distribution).
INPUTS
- NONE
RESULT
real :: rnOmega(3) - random 3-dim. unit-vector
random/rnOmega_anis [ Functions ]
[ Top ] [ random ] [ Functions ]
NAME
function rnOmega_anis (B)
PURPOSE
Generates a unit vector with random angle (anisotropical distribution). cos(theta) is chosen according to a probability distribution ~ 1 + B*cos**2(theta).
INPUTS
- real, intent(in) :: B --- parameter of prob. distr.
RESULT
real :: rnOmega_anis(3) - random 3-dim. unit-vector
random/rnOmega_angles [ Subroutines ]
[ Top ] [ random ] [ Subroutines ]
NAME
subroutine rnOmega(theta,phi)
PURPOSE
Generates random angles theta and phi (istropical distribution) in degree.
INPUTS
- NONE
OUTPUT
- real :: theta, phi
random/rn_trueFalse [ Functions ]
[ Top ] [ random ] [ Functions ]
NAME
function rn_trueFalse
PURPOSE
Gives true or false with same probability.
INPUTS
- NONE
RESULT
Logical.
random/ranCharge [ Subroutines ]
[ Top ] [ random ] [ Subroutines ]
NAME
subroutine ranCharge (izmin, izmax, iztot, izout, flag)
PURPOSE
This subroutine distributes the charges randomly to a given total charge iztot.
INPUTS
- integer, intent(in) :: izmin(:) ! Vector of minimal charges
- integer, intent(in) :: izmax(:) ! Vector of maximal charges
- integer, intent(in) :: iztot ! total charge
OUTPUT
- real, dimension(:) :: izout ! Random charge configuration
- logical, intent(out) :: flag ! =.false. if procedure failed