diff --git a/CMakeLists.txt b/CMakeLists.txt index 41ca8d8ee..4edc89ebc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -417,7 +417,7 @@ set(LIBOPENMC_FORTRAN_SRC ) set(LIBOPENMC_CXX_SRC src/random_lcg.h - src/random_lcg.C) + src/random_lcg.cpp) add_library(libopenmc SHARED ${LIBOPENMC_FORTRAN_SRC} ${LIBOPENMC_CXX_SRC}) set_target_properties(libopenmc PROPERTIES OUTPUT_NAME openmc) add_executable(${program} src/main.F90) diff --git a/src/random_lcg.C b/src/random_lcg.cpp similarity index 95% rename from src/random_lcg.C rename to src/random_lcg.cpp index ea79be67f..047bda8e5 100644 --- a/src/random_lcg.C +++ b/src/random_lcg.cpp @@ -21,7 +21,7 @@ constexpr uint64_t prn_mod {0x8000000000000000}; // 2^63 constexpr uint64_t prn_mask {0x7fffffffffffffff}; // 2^63 - 1 constexpr uint64_t prn_stride {152917LL}; // stride between // particles -constexpr double prn_norm {pow(2, -63)}; // 2^-63 +constexpr double prn_norm {1.0 / prn_mod}; // 2^-63 // Current PRNG state uint64_t prn_seed[N_STREAMS]; // current seed @@ -135,10 +135,11 @@ openmc_set_seed(int64_t new_seed) { seed = new_seed; #pragma omp parallel - for (int i = 0; i < N_STREAMS; i++) { - prn_seed[i] = seed + i; + { + for (int i = 0; i < N_STREAMS; i++) { + prn_seed[i] = seed + i; + } + prn_set_stream(STREAM_TRACKING); } - prn_set_stream(STREAM_TRACKING); -#pragma end omp parallel return 0; }