37template <
class Container>
38void fillWithParticles(Container &container,
const std::array<double, 3> &boxMin,
const std::array<double, 3> &boxMax,
42 const std::array<double, 3> &distributionMean = {5., 5., 5.},
43 const std::array<double, 3> &distributionStdDev = {2., 2., 2.}) {
44 std::default_random_engine generator(42);
45 std::array<std::normal_distribution<double>, 3> distributions = {
46 std::normal_distribution<double>{distributionMean[0], distributionStdDev[0]},
47 std::normal_distribution<double>{distributionMean[1], distributionStdDev[1]},
48 std::normal_distribution<double>{distributionMean[2], distributionStdDev[2]}};
50 for (
unsigned long i = defaultParticle.getID(); i < defaultParticle.getID() + numParticles; ++i) {
51 std::array<double, 3> position = {distributions[0](generator), distributions[1](generator),
52 distributions[2](generator)};
57 std::ostringstream errormessage;
58 errormessage <<
"GaussianGenerator::fillWithParticles(): Could not find a valid position for particle " << i
59 <<
"after" <<
_maxAttempts <<
"attempts. Check if your parameters make sense:" << std::endl
64 throw std::runtime_error(errormessage.str());
66 position = {distributions[0](generator), distributions[1](generator), distributions[2](generator)};
68 auto p = defaultParticle;
71 container.addParticle(p);
void to_string(std::ostream &os, const Container &container, const std::string &delimiter, const std::array< std::string, 2 > &surround, Fun elemToString)
Generates a string representation of a container which fulfills the Container requirement (provide cb...
Definition: ArrayUtils.h:54
bool inBox(const std::array< T, 3 > &position, const std::array< T, 3 > &low, const std::array< T, 3 > &high)
Checks if position is inside of a box defined by low and high.
Definition: inBox.h:26
typename Container::ParticleType value
The Particle Type.
Definition: ParticleTypeTrait.h:24