Utilities for parallel random number generation and sparse arrays
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(rng_type), | public, | dimension(:), allocatable | :: | rng |
Generate an array of uniformally-distributed random deviates
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(out), | dimension(:) | :: | randomu | Array of uniform random deviates |
Generate an array of uniformally-distributed random deviates
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(rng_type), | intent(inout) | :: | r | Random Number Generator |
||
real(kind=Float64), | intent(out), | dimension(:) | :: | randomu | Array of uniform random deviates |
Generate an array of normally-distributed random deviates
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(out), | dimension(:) | :: | randomn | Array of normal random deviates |
Generate an array of normally-distributed random deviates
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(rng_type), | intent(inout) | :: | r | Random Number Generator |
||
real(kind=Float64), | intent(out), | dimension(:) | :: | randomn | Array of normal random deviates |
Procedure for generating a random array index/subscripts
Generate an array of random indices of an 1D array distributed according to cdf
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(rng_type), | intent(inout) | :: | r | Random Number Generator |
||
real(kind=Float64), | intent(in), | dimension(:) | :: | cdf | 1D array of index weights |
|
integer, | intent(out), | dimension(:) | :: | randomi | Random indices |
Generate an array of random indices of an 1D array distributed according to cdf
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:) | :: | cdf | 1D array of index weights |
|
integer, | intent(out), | dimension(:) | :: | randomi | Random indices |
Procedure for generating a random array index/subscripts
Generate a array of uniformally-distributed random integers in the range [1, n]
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | n | Largest possible value |
||
integer, | intent(out), | dimension(:) | :: | randomi | Array of uniform deviates |
Generate an array of random indices of an 1D array distributed according to w
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:) | :: | w | 1D array of index weights |
|
integer, | intent(out), | dimension(:) | :: | randomi | Random indices |
Generate an array of random subscripts of an 2D array distributed according to w
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:,:) | :: | w | 2D array of subscript weights |
|
integer, | intent(out), | dimension(:,:) | :: | randomi | A 2D (ndim, :) array of random subscripts |
Generate an array of random subscripts of an 3D array distributed according to w
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:,:,:) | :: | w | 3D array of subscript weights |
|
integer, | intent(out), | dimension(:,:) | :: | randomi | A 2D (ndim, :) array of random subscripts |
Generate an array of random subscripts of an 4D array distributed according to w
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:,:,:,:) | :: | w | 4D array of subscript weights |
|
integer, | intent(out), | dimension(:,:) | :: | randomi | A 2D (ndim, :) array of random subscripts |
Generate an array of random subscripts of an 5D array distributed according to w
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:,:,:,:,:) | :: | w | 5D array of subscript weights |
|
integer, | intent(out), | dimension(:,:) | :: | randomi | A 2D (ndim, :) array of random subscripts |
Generate a array of uniformally-distributed random integers in the range [1, n]
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(rng_type), | intent(inout) | :: | r | Random Number Generator |
||
integer, | intent(in) | :: | n | Largest possible value |
||
integer, | intent(out), | dimension(:) | :: | randomi | Array of uniform deviates |
Generate an array of random indices of an 1D array distributed according to w
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(rng_type), | intent(inout) | :: | r | Random Number Generator |
||
real(kind=Float64), | intent(in), | dimension(:) | :: | w | 1D array of index weights |
|
integer, | intent(out), | dimension(:) | :: | randomi | Random indices |
Generate an array of random subscripts of an 2D array distributed according to w
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(rng_type), | intent(inout) | :: | r | Random Number Generator |
||
real(kind=Float64), | intent(in), | dimension(:,:), target | :: | w | 2D array of subscript weights |
|
integer, | intent(out), | dimension(:,:) | :: | randomi | A 2D (ndim, :) array of random subscripts |
Generate an array of random subscripts of an 3D array distributed according to w
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(rng_type), | intent(inout) | :: | r | Random Number Generator |
||
real(kind=Float64), | intent(in), | dimension(:,:,:), target | :: | w | 3D array of subscript weights |
|
integer, | intent(out), | dimension(:,:) | :: | randomi | A 2D (ndim, :) array of random subscripts |
Generate an array of random subscripts of an 4D array distributed according to w
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(rng_type), | intent(inout) | :: | r | Random Number Generator |
||
real(kind=Float64), | intent(in), | dimension(:,:,:,:), target | :: | w | 4D array of subscript weights |
|
integer, | intent(out), | dimension(:,:) | :: | randomi | A 2D (ndim, :) array of random subscripts |
Generate an array of random subscripts of an 5D array distributed according to w
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(rng_type), | intent(inout) | :: | r | Random Number Generator |
||
real(kind=Float64), | intent(in), | dimension(:,:,:,:,:), target | :: | w | 5D array of subscript weights |
|
integer, | intent(out), | dimension(:,:) | :: | randomi | A 2D (ndim, :) array of random subscripts |
Creates a sparse array from a dense array
Routine to create a 1D sparse array from a 1D dense array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:) | :: | A | Dense Array |
|
type(SparseArray), | intent(out) | :: | SA | Sparse Array |
Routine to create a 2D sparse array from a 2D dense array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:,:) | :: | A | Dense Array |
|
type(SparseArray), | intent(out) | :: | SA | Sparse Array |
Routine to create a 3D sparse array from a 3D dense array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:,:,:) | :: | A | Dense Array |
|
type(SparseArray), | intent(out) | :: | SA | Sparse Array |
Routine to create a 4D sparse array from a 4D dense array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:,:,:,:) | :: | A | Dense Array |
|
type(SparseArray), | intent(out) | :: | SA | Sparse Array |
Procedure for finding derivatives from an array
Uses 3 point lagrangian method to calculate the derivative of an array
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:) | :: | x | X Values |
|
real(kind=Float64), | intent(in), | dimension(:) | :: | y | Y Values |
|
real(kind=Float64), | intent(out), | dimension(:) | :: | yp | Derivative of Y w.r.t. X |
Uses 3 point lagrangian method to calculate the partial derivative of an array Z w.r.t X and Y
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:) | :: | x | X Values |
|
real(kind=Float64), | intent(in), | dimension(:) | :: | y | Y Values |
|
real(kind=Float64), | intent(in), | dimension(:,:) | :: | z | Z Values |
|
real(kind=Float64), | intent(out), | dimension(:,:) | :: | zxp | Derivative of Z w.r.t. X |
|
real(kind=Float64), | intent(out), | dimension(:,:) | :: | zyp | Derivative of Z w.r.t. Y |
Uses 3 point lagrangian method to calculate the partial derivative of an array F w.r.t R, Z and Phi
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:) | :: | r | R Values |
|
real(kind=Float64), | intent(in), | dimension(:) | :: | z | Z Values |
|
real(kind=Float64), | intent(in), | dimension(:) | :: | phi | Phi Values |
|
real(kind=Float64), | intent(in), | dimension(:,:,:) | :: | f | F Values |
|
real(kind=Float64), | intent(out), | dimension(:,:,:) | :: | frp | Derivative of F w.r.t. R |
|
real(kind=Float64), | intent(out), | dimension(:,:,:) | :: | fzp | Derivative of F w.r.t. Z |
|
real(kind=Float64), | intent(out), | dimension(:,:,:) | :: | fphip | Derivative of F w.r.t. Phi |
Calculates interpolation coefficients
Linear interpolation coefficients and index for a 1D grid y(x)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in) | :: | xmin | Minimum abscissa value |
||
real(kind=Float64), | intent(in) | :: | dx | Absissa spacing |
||
integer, | intent(in) | :: | nx | Number of abscissa |
||
real(kind=Float64), | intent(in) | :: | xout | Abscissa value to interpolate |
||
type(InterpolCoeffs1D), | intent(out) | :: | c | Interpolation Coefficients |
||
integer, | intent(out), | optional | :: | err | Error code |
Linear interpolation coefficients and index for a 1D grid y(x)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:) | :: | x | Abscissa values |
|
real(kind=Float64), | intent(in) | :: | xout | Abscissa value to interpolate |
||
type(InterpolCoeffs1D), | intent(out) | :: | c | Interpolation Coefficients |
||
integer, | intent(out), | optional | :: | err | Error code |
Bilinear interpolation coefficients and indicies for a 2D grid z(x,y)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in) | :: | xmin | Minimum abscissa |
||
real(kind=Float64), | intent(in) | :: | dx | Abscissa spacing |
||
integer, | intent(in) | :: | nx | Number of abscissa |
||
real(kind=Float64), | intent(in) | :: | ymin | Minimum ordinate |
||
real(kind=Float64), | intent(in) | :: | dy | Ordinate spacing |
||
integer, | intent(in) | :: | ny | Number of ordinates points |
||
real(kind=Float64), | intent(in) | :: | xout | Abscissa value to interpolate |
||
real(kind=Float64), | intent(in) | :: | yout | Ordinate value to interpolate |
||
type(InterpolCoeffs2D), | intent(out) | :: | c | Interpolation Coefficients |
||
integer, | intent(out), | optional | :: | err | Error code |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:) | :: | x | Abscissa values |
|
real(kind=Float64), | intent(in), | dimension(:) | :: | y | Ordinate values |
|
real(kind=Float64), | intent(in) | :: | xout | Abscissa value to interpolate |
||
real(kind=Float64), | intent(in) | :: | yout | Ordinate value to interpolate |
||
type(InterpolCoeffs2D), | intent(out) | :: | c | Interpolation Coefficients |
||
integer, | intent(out), | optional | :: | err | Error code |
Cylindrical interpolation coefficients and indicies for a 3D grid
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in) | :: | rmin | Minimum R |
||
real(kind=Float64), | intent(in) | :: | dr | R spacing |
||
integer, | intent(in) | :: | nr | Number of R points |
||
real(kind=Float64), | intent(in) | :: | zmin | Minimum Z |
||
real(kind=Float64), | intent(in) | :: | dz | Z spacing |
||
integer, | intent(in) | :: | nz | Number of Z points |
||
real(kind=Float64), | intent(in) | :: | phimin | Minimum phi |
||
real(kind=Float64), | intent(in) | :: | dphi | Phi spacing |
||
integer, | intent(in) | :: | nphi | Number of phi points |
||
real(kind=Float64), | intent(in) | :: | rout | R value to interpolate |
||
real(kind=Float64), | intent(in) | :: | zout | Z value to interpolate |
||
real(kind=Float64), | intent(in) | :: | phiout | Phi value to interpolate |
||
type(InterpolCoeffs3D), | intent(out) | :: | c | Interpolation Coefficients |
||
integer, | intent(out), | optional | :: | err | Error code |
Cylindrical interpolation coefficients and indicies for a 3D grid
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:) | :: | r | R values |
|
real(kind=Float64), | intent(in), | dimension(:) | :: | z | Z values |
|
real(kind=Float64), | intent(in), | dimension(:) | :: | phi | Phi values |
|
real(kind=Float64), | intent(in) | :: | rout | R value to interpolate |
||
real(kind=Float64), | intent(in) | :: | zout | Z value to interpolate |
||
real(kind=Float64), | intent(in) | :: | phiout | Phi value to interpolate |
||
type(InterpolCoeffs3D), | intent(out) | :: | c | Interpolation Coefficients |
||
integer, | intent(out), | optional | :: | err | Error code |
Performs linear/bilinear/cylindrical interpolation
Performs linear interpolation on a uniform 1D grid y(x)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:) | :: | x | The abscissa values of |
|
real(kind=Float64), | intent(in), | dimension(:) | :: | y | Values at abscissa values |
|
real(kind=Float64), | intent(in) | :: | xout | Abscissa value to interpolate |
||
real(kind=Float64), | intent(out) | :: | yout | Interpolant: y(xout) |
||
integer, | intent(out), | optional | :: | err | Error code |
|
type(InterpolCoeffs1D), | intent(in), | optional | :: | coeffs | Precomputed Linear Interpolation Coefficients |
Performs bilinear interpolation on a 2D grid z(x,y)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:) | :: | x | The abscissa values of |
|
real(kind=Float64), | intent(in), | dimension(:) | :: | y | The ordinate values of |
|
real(kind=Float64), | intent(in), | dimension(:,:) | :: | z | Values at the abscissa/ordinates: z(x,y) |
|
real(kind=Float64), | intent(in) | :: | xout | The abscissa value to interpolate |
||
real(kind=Float64), | intent(in) | :: | yout | The ordinate value to interpolate |
||
real(kind=Float64), | intent(out) | :: | zout | Interpolant: z(xout,yout) |
||
integer, | intent(out), | optional | :: | err | Error code |
|
type(InterpolCoeffs2D), | intent(in), | optional | :: | coeffs | Precomputed Linear Interpolation Coefficients |
Performs bilinear interpolation on a 2D grid of 2D arrays z(:,:,x,y)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:) | :: | x | The abscissa values of |
|
real(kind=Float64), | intent(in), | dimension(:) | :: | y | The ordinate values of |
|
real(kind=Float64), | intent(in), | dimension(:,:,:,:) | :: | z | Values at the abscissa/ordinates: z(:,:,x,y) |
|
real(kind=Float64), | intent(in) | :: | xout | The abscissa value to interpolate |
||
real(kind=Float64), | intent(in) | :: | yout | The ordinate value to interpolate |
||
real(kind=Float64), | intent(out), | dimension(:,:) | :: | zout | Interpolant: z(:,:,xout,yout) |
|
integer, | intent(out), | optional | :: | err | Error code |
|
type(InterpolCoeffs2D), | intent(in), | optional | :: | coeffs | Precomputed Linear Interpolation Coefficients |
Performs cylindrical interpolation on a 3D grid f(r,z,phi)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:) | :: | r | R values |
|
real(kind=Float64), | intent(in), | dimension(:) | :: | z | Z values |
|
real(kind=Float64), | intent(in), | dimension(:) | :: | phi | Phi values |
|
real(kind=Float64), | intent(in), | dimension(:,:,:) | :: | d | Values at r,z,phi: d(r,z,phi) |
|
real(kind=Float64), | intent(in) | :: | rout | R value to interpolate |
||
real(kind=Float64), | intent(in) | :: | zout | Z value to interpolate |
||
real(kind=Float64), | intent(in) | :: | phiout | Phi value to interpolate |
||
real(kind=Float64), | intent(out) | :: | dout | Interpolant: d(rout,zout,phiout) |
||
integer, | intent(out), | optional | :: | err | Error code |
|
type(InterpolCoeffs3D), | intent(in), | optional | :: | coeffs | Precomputed Interpolation Coefficients |
Performs cylindrical interpolation on a 3D grid of 2D arrays f(:,:,r,z,phi)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:) | :: | r | R values |
|
real(kind=Float64), | intent(in), | dimension(:) | :: | z | Z values |
|
real(kind=Float64), | intent(in), | dimension(:) | :: | phi | Phi values |
|
real(kind=Float64), | intent(in), | dimension(:,:,:,:,:) | :: | f | Values at r,z,phi: f(:,:,r,z,phi) |
|
real(kind=Float64), | intent(in) | :: | rout | R value to interpolate |
||
real(kind=Float64), | intent(in) | :: | zout | Z value to interpolate |
||
real(kind=Float64), | intent(in) | :: | phiout | Phi value to interpolate |
||
real(kind=Float64), | intent(out), | dimension(:,:) | :: | fout | Interpolant: f(:,:,rout,zout,phiout) |
|
integer, | intent(out), | optional | :: | err | Error code |
|
type(InterpolCoeffs3D), | intent(in), | optional | :: | coeffs | Precomputed Interpolation Coefficients |
Random Number Generator Derived Type
Linear Interpolation Coefficients and indices
2D Linear Interpolation Coefficients and indices
3D Cylindrical Interpolation Coefficients and indices
Calculates the linear index of an array with dimensions dims
and
subcripts subs
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in), | dimension(:) | :: | dims | Dimension of Array |
|
integer, | intent(in), | dimension(:) | :: | subs | Subscripts to convert |
Linear index
Generates random 32-bit integer seed from /dev/urandom
Seed value
Generate a uniformally-distributed random number in the range [0,1)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(rng_type), | intent(inout) | :: | self | Random Number Generator |
Uniform random deviate
Generate a normally-distributed random number with mean 0 and standard deviation 1
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(rng_type), | intent(inout) | :: | self | Random Number Generator |
Normal random deviate
Gets value of sparse array SA
at the subscripts subs
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(SparseArray), | intent(in) | :: | SA | Sparse Array |
||
integer, | intent(in), | dimension(:) | :: | subs | Subscripts of Sparse Array |
Value of SA
at subs
Returns time string
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in), | optional | dimension(8) | :: | time_start | Optional start time |
Time string
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | dimension(:) | :: | in |
Calculate the subscripts subs
into an array with dimensions dims
given the corresponding linear index ind
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in), | dimension(:) | :: | dims | Dimensions of array |
|
integer, | intent(in) | :: | ind | Linear index |
||
integer, | intent(out), | dimension(:) | :: | subs | Subscripts corresponding to the linear index |
Procedure to initialize a random number generator with a seed. If seed is negative then random seed is used
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(rng_type), | intent(inout) | :: | self | Random Number Generator |
||
integer(kind=Int32), | intent(in) | :: | seed | Initial Seed Value |
Calculate cumulative sum
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=Float64), | intent(in), | dimension(:) | :: | x | Array to sum |
|
real(kind=Float64), | intent(out), | dimension(:) | :: | cs | Cumulative sum of |