How to make random generator stream state global?

How to make random generator stream state global?

Dear all,

this might be trivial for the f90 wizards soI apologise in advance for my
ignorance.

I want to use the MKL routine VDRNGUNIFORM to obtain vectors
of random numbers. The problem is, how to make the state variable STREAM, which is initialised by calling VSLNEWSTREAM in a separate subroutine global, so that it can be accessed by VDRNGUNIFORM in its own
routine. I cannot extend the argument listsof
the wrapper subroutines in which the MKL routines are called because their
format specification is prescribed by a project specification.

I tried to do this by common blocks in the wrapper routines:

TYPE (VSL_STREAM_STATE),POINTER :: stream
COMMON / randstate / stream

however, that results inthe followingcompiler error message
" If a common-block-object is of a derived type, it must be of a sequence type"

Any idea how to resolve this?

Karl

3 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Oops, a google search for a f90 beginners guide was all needed to resolve
my question. Packing the declaration of stream in a module helped.
Sorry for the trivial post... Time to outgrow from f77 ;-)

So glad we could help :-)

Bruce

Leave a Comment

Please sign in to add a comment. Not a member? Join today