initialize_random Subroutine

public subroutine initialize_random(seed)

Uses

  • proc~~initialize_random~~UsesGraph proc~initialize_random initialize_random omp_lib omp_lib proc~initialize_random->omp_lib

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: seed

Calls

proc~~initialize_random~~CallsGraph proc~initialize_random initialize_random interface~random_construct_u random_construct_U proc~initialize_random->interface~random_construct_u omp_get_thread_num omp_get_thread_num proc~initialize_random->omp_get_thread_num omp_get_max_threads omp_get_max_threads proc~initialize_random->omp_get_max_threads

Contents

Source Code


Source Code

  SUBROUTINE initialize_random(seed)
    USE omp_lib
    IMPLICIT NONE

    INTEGER, INTENT(IN) :: seed
    INTEGER             :: num_threads
    INTEGER             :: thread_num

    num_threads = OMP_GET_MAX_THREADS()
    IF (.NOT. ALLOCATED(states)) THEN
       ALLOCATE(states(0:num_threads - 1))
    END IF

    !$OMP PARALLEL PRIVATE(thread_num)
    thread_num = OMP_GET_THREAD_NUM()
    states(thread_num) = random_construct_U(seed + thread_num)
    !$OMP END PARALLEL
  END SUBROUTINE initialize_random