diff --git a/applications/test/parallel/Test-parallel.C b/applications/test/parallel/Test-parallel.C index f679fefc13..09449c2435 100644 --- a/applications/test/parallel/Test-parallel.C +++ b/applications/test/parallel/Test-parallel.C @@ -56,7 +56,7 @@ int main(int argc, char *argv[]) if (true) { - randomGenerator rndGen(43544*Pstream::myProcNo()); + randomGenerator rndGen(43544); // Generate random data. List>> complexData(100); diff --git a/applications/test/syncTools/Test-syncTools.C b/applications/test/syncTools/Test-syncTools.C index f7051cd29f..df898a803b 100644 --- a/applications/test/syncTools/Test-syncTools.C +++ b/applications/test/syncTools/Test-syncTools.C @@ -593,7 +593,7 @@ int main(int argc, char *argv[]) #include "createPolyMesh.H" - randomGenerator rndGen(5341*(Pstream::myProcNo()+1)); + randomGenerator rndGen(5341); // Face sync diff --git a/src/OpenFOAM/primitives/randomGenerator/randomGenerator.C b/src/OpenFOAM/primitives/randomGenerator/randomGenerator.C index e37d8f9c08..608bd0bb31 100644 --- a/src/OpenFOAM/primitives/randomGenerator/randomGenerator.C +++ b/src/OpenFOAM/primitives/randomGenerator/randomGenerator.C @@ -28,17 +28,75 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::randomGenerator::randomGenerator(Istream& is) +Foam::randomGenerator::randomGenerator(Istream& is, const bool global) : + global_(global), x_(pTraits(is)) +{ + checkSync(); +} + + +Foam::randomGenerator::randomGenerator +( + const word& name, + const dictionary& dict, + randomGenerator&& defaultRndGen +) +: + global_(defaultRndGen.global_), + x_ + ( + dict.found(name) + ? dict.lookup(name) + : dict.found(name + "Seed") + ? seed(dict.lookup