← Back to Documentation Home
CCPP SciDoc v8.0.0  v8.0.0
Common Community Physics Package Developed at DTC
 
Loading...
Searching...
No Matches
mersenne_twister Module Reference

This module calculates random numbers using the Mersenne twister. More...

Data Types

interface  random_gauss
 
interface  random_index
 
interface  random_number
 
interface  random_setseed
 
type  random_stat
 Generator state. More...
 

Functions/Subroutines

subroutine, public random_seed (size, put, get, stat)
 This subroutine sets and gets state; overloads Fortran 90 standard.
 
real(kind_dbl_prec) function, public random_number_f ()
 This function generates random numbers in functional mode.
 
real(kind_dbl_prec) function, public random_gauss_f ()
 This subrouitne generates Gaussian random numbers in functional mode.
 
integer function, public random_index_f (imax)
 This subroutine generates random indices in functional mode.
 

Variables

type(random_stat), save sstat
 

Detailed Description

This module calculates random numbers using the Mersenne twister.

(It has been adapted to a Fortran 90 module from open source software. The comments from the original software are given below in the remarks.) The Mersenne twister (aka MT19937) is a state-of-the-art random number generator based on Mersenne primes and originally developed in 1997 by Matsumoto and Nishimura. It has a period before repeating of 2^19937-1, which certainly should be good enough for geophysical purposes. :-) Considering the algorithm's robustness, it runs fairly speedily. (Some timing statistics are given below in the remarks.) This adaptation uses the standard Fortran 90 random number interface, which can generate an arbitrary number of random numbers at one time. The random numbers generated are uniformly distributed between 0 and 1. The module also can generate random numbers from a Gaussian distribution with mean 0 and standard deviation 1, using a Numerical Recipes algorithm. The module also can generate uniformly random integer indices. There are also thread-safe versions of the generators in this adaptation, necessitating the passing of generator states which must be kept private.

Function/Subroutine Documentation

◆ random_gauss_f()

real(kind_dbl_prec) function, public mersenne_twister::random_gauss_f

This subrouitne generates Gaussian random numbers in functional mode.

Definition at line 375 of file mersenne_twister.f.

◆ random_index_f()

integer function, public mersenne_twister::random_index_f ( integer, intent(in)  imax)

This subroutine generates random indices in functional mode.

Definition at line 458 of file mersenne_twister.f.

◆ random_number_f()

real(kind_dbl_prec) function, public mersenne_twister::random_number_f

This function generates random numbers in functional mode.

Definition at line 302 of file mersenne_twister.f.

◆ random_seed()

subroutine, public mersenne_twister::random_seed ( integer, intent(out), optional  size,
integer, dimension(nrest), intent(in), optional  put,
integer, dimension(nrest), intent(out), optional  get,
type(random_stat), intent(inout), optional  stat 
)

This subroutine sets and gets state; overloads Fortran 90 standard.

Definition at line 220 of file mersenne_twister.f.

Variable Documentation

◆ sstat

type(random_stat), save mersenne_twister::sstat

Definition at line 195 of file mersenne_twister.f.