seed_random_stream Subroutine

public subroutine seed_random_stream(seed_values)

乱数列の seed を設定する。複数の値は順に混ぜて 1 つの seed にする。

Arguments

Type IntentOptional Attributes Name
integer(kind=i32), intent(in) :: seed_values(:)

Calls

proc~~seed_random_stream~~CallsGraph proc~seed_random_stream seed_random_stream proc~counter_key counter_key proc~seed_random_stream->proc~counter_key

Called by

proc~~seed_random_stream~~CalledByGraph proc~seed_random_stream seed_random_stream proc~seed_rng seed_rng proc~seed_rng->proc~seed_random_stream proc~seed_particles_from_config seed_particles_from_config proc~seed_particles_from_config->proc~seed_rng proc~load_or_init_run_state load_or_init_run_state proc~load_or_init_run_state->proc~seed_particles_from_config program~main main program~main->proc~load_or_init_run_state

Source Code

  subroutine seed_random_stream(seed_values)
    integer(i32), intent(in) :: seed_values(:)
    integer(i64) :: state_seed, stream

    if (size(seed_values) == 0) error stop 'seed_random_stream requires at least one seed value.'
    call counter_key(seed_values(1), int(seed_values, i64), state_seed, stream)
    !$omp critical (beach_random_stream_seed)
    stream_seed_value = ieor(state_seed, stream)
    stream_generation = stream_generation + 1_i64
    !$omp end critical (beach_random_stream_seed)
  end subroutine seed_random_stream