Submit Request

Wed Oct 27 13:53:00 US/Eastern 1999

Charles Karney
Princeton University
Plasma Physics Laboratory

Princeton, NJ, 08543

Phone: [609]243-2607


Title: Random Number Generator

Module: RNG

FTP Site:

Abstract: RNG is a portable, parallel random number generator. It's portable because the same sequence of numbers is generated on all platforms and it's parallel because many independent random sequences can be generated in parallel (for example on separate processors in an MPI program). In addition, the generator is fast (comparable in speed to system-supplied generators) and is of high quality (usually better than the system-supplied generators).

Module Standards Form

Standard: Provide source code for each physics module or code.
Standard: Provide test case(s) with driver program(s) with input and output data and their documentation.
Standard: Provide script to compile and link (e.g., makefile). The script should make at least some provision for portabilit to multiple brands of UNIX (at minimum). Provide clear documentation (possibly in the README file) on how to use the script or makefile.
Standard: Provide a README file giving (a) the name of the module andits authors, (b) the location and form of general module documentation, and (c) information (or pointer to more detailed documentation) enabling a user to build binariesfrom the source code.
Standard: Provide documentation about how the module should be used, for example, whether the module needs to be initialized or used sequentially. Important usability issues, such as the existence of state information in COMMON or other static memory, which persists between calls, must be described.
Standard: Eliminate graphics calls embedded in physics modules.
Standard: The source code files (e.g. *.f, *.c, or *.cpp files) should be submitted rather than requiring extraction from another file.
Standard: Authors may upgrade their modules with approval of the current chairperson of the NTCC modules committee. If the upgrade is extensive, the chairperson can require that the upgrade be subject to a full review.
Goal: Offer single and double precision versions or offer user control of precision at compile time
Goal: Provide error checking (but not stops).
Goal: Portability (code should run on multiple platforms and under different operating systems
Goal: Minimize external dependencies that cost money (i.e. avoid using expensive proprietary licenses).
Standard: Supply warnings in the documentation when the above goal has not been met.
Goal: Arrays should be dynamically allocated.
Standard: The characteristics of I/O should be clearly documented(i.e. the implementation of I/O unit numbers, if any).
Goal: Avoid using hard-wired I/O unit numbers. Allow informational output to be switched on or off. Provide a method for rerouting warning or error message output to a user specified file or I/O unit number.
Standard: Provide name of contact person for support.
Standard: Provide date of last revision
Standard: Provide at least comments describing module or code,citations to publications (if any), and range of validity.
Standard: Specify the precision of floating point calculations.
Standard: Provide the index of input-output variables for each module (include type of variable, dimension, units).
Standard: Provide statement of known bugs.
Goal: Index of modules, routines, variables.
Goal: Publication of code or module in journal (such as Computer Physics Communications)
Goal: Online hyper-text reference documentation
Goal: Interactive online help menus
Standard: Provide interface routines to data.
Goal: Use self-describing data files (such as NetCDF).
Goal: Use public domain, portable, available and well-documented data file formats.
Goal: Establish standards for variable names, units, dimensions independent variables and grid descriptions as they appearin the module interfaces.