init_parallel Subroutine

private subroutine init_parallel(self, n_proc, rng)

Initialize a collection of rng's for parallel use

Type Bound

prng_t

Arguments

Type IntentOptional Attributes Name
class(prng_t), intent(inout) :: self
integer, intent(in) :: n_proc
type(rng_t), intent(inout) :: rng

Calls

proc~~init_parallel~~CallsGraph proc~init_parallel prng_t%init_parallel proc~jump rng_t%jump proc~init_parallel->proc~jump proc~next rng_t%next proc~jump->proc~next proc~rotl rotl proc~next->proc~rotl

Source Code

  subroutine init_parallel(self, n_proc, rng)
    class(prng_t), intent(inout) :: self
    type(rng_t), intent(inout)   :: rng
    integer, intent(in)          :: n_proc
    integer                      :: n

    allocate(self%rngs(n_proc))
    self%rngs(1) = rng

    do n = 2, n_proc
       self%rngs(n) = self%rngs(n-1)
       call self%rngs(n)%jump()
    end do
  end subroutine init_parallel