BaseClusterInsertionBoundary.h
Go to the documentation of this file.
1 // This file is part of the MercuryDPM project (https://www.mercurydpm.org).
2 // Copyright (c), The MercuryDPM Developers Team. All rights reserved.
3 // License: BSD 3-Clause License; see the LICENSE file in the root directory.
4 
5 #ifndef BOUNDARIES_BASECLUSTERINSERTIONBOUNDARY_H
6 #define BOUNDARIES_BASECLUSTERINSERTIONBOUNDARY_H
7 
8 
9 
10 #include "InsertionBoundary.h"
11 #include "BaseCluster.h"
12 #include "Math/Vector.h"
13 #include "Math/PSD.h"
14 
15 class BaseParticle;
16 
17 class RNG;
18 
26 {
27 public:
28 
33 
38 
43 
47  BaseClusterInsertionBoundary* copy() const override;
48 
50  void setRandomised(bool randomised);
51 
53  bool getRandomised();
54 
56  unsigned int getNumberOfClusterInserted();
57 
60 
65  void setGeometry(Vec3D posMin, Vec3D posMax);
66 
70  void setVelocityRange(Vec3D velMin, Vec3D velMax);
71 
78  void setAdditionalClusterProperties(Mdouble collisionTimeOverTimeStep, Mdouble velocityDampingModulus, Mdouble energyRatioTolerance);
79 
92  void setOutputClusterProperties(bool doCdatOutput, bool doOverlOutput, bool doAmatOutput, bool doIntStrucOutput,
93  bool doVtkOutput, bool doRestartOutput, bool doFStatOutput, bool doEneOutput);
94 
98  void placeParticle(BaseParticle* p, RNG& random) override;
99 
103  void checkBoundaryBeforeTimeStep(DPMBase* md) override;
104 
108  void read(std::istream& is) override;
109 
113  void write(std::ostream& os) const override;
114 
115 
116 private:
117 
121  std::string getName() const override;
122 
123  /*
124  * ----------------------------------------------------
125  * VARIABLES
126  * ----------------------------------------------------
127  */
128 
129  // Position in which the cluster will be created and also added in the domain.
131 
132 
133 protected:
134 
135  //number of cluster inserted
136  unsigned int nClusterInserted_;
137 
138  //Radius of the particle composing the cluster
140 
141  //Particles
142  //\brief Total number of particles.
144 
145  //species with which the cluster will be created.
147 
148  // File
149  //\brief bool used to define whether or not cluster data output must be created.
151  //\brief bool used to define whether or not overlap data output must be created.
153  //\brief bool used to define whether or not adjacency matrix output must be created.
155  //\brief bool used to define whether or not cluster internal structure output must be created.
157  //\brief bool used to define whether or not vtk output must be created.
159  //\brief bool used to define whether or not restart output must be created.
161  //\brief bool used to define whether or not fStat output must be created.
163  //\brief bool used to define whether or not eneOutput output must be created.
165 
166 
167  //\brief Size dispersity of particles: must be between 0 and 1
169  //\brief Value of damping modulus for velocity.
171  // \brief Number of points used for creating internal structure's file.
173  // \brief Energy ratio threshold under wich the simulation can be considered static.
175 
176  //\brief Ratio between collision time and time step: should be at least 50.
178 
179  /*
180  * \brief Minimal and maximal positions defining the boundary's boundaries,
181  * and minimum and maximum velocity of the particles to be inserted.
182  */
184 
185  // Bool defining if the user has set the radius of a single particle composing the cluster OR the number of
186  // particles inside the cluster.
188 
189  // Vectors defining cluster radii and position for class FixedClusterInsertionBoundary
190  std::vector<Vec3D> clusterPositions_;
191  std::vector<Mdouble> clusterRadii_;
192 
193  //Variable used to switch the randomise() process
195 };
196 
197 #endif
198 
Matrix2d md
Definition: MatrixBase_cast.cpp:1
float * p
Definition: Tutorial_Map_using.cpp:9
Definition: BaseClusterInsertionBoundary.h:26
bool isIntStrucOutputOn_
Definition: BaseClusterInsertionBoundary.h:156
bool isFStatOutputOn_
Definition: BaseClusterInsertionBoundary.h:162
std::vector< Vec3D > clusterPositions_
Definition: BaseClusterInsertionBoundary.h:190
void read(std::istream &is) override
reads boundary properties from istream
Definition: BaseClusterInsertionBoundary.cc:235
bool isOverlOutputOn_
Definition: BaseClusterInsertionBoundary.h:152
int nInternalStructurePoints_
Definition: BaseClusterInsertionBoundary.h:172
bool isCdatOutputOn_
Definition: BaseClusterInsertionBoundary.h:150
BaseClusterInsertionBoundary * copy() const override
Creates a copy on the heap and returns a pointer.
Definition: BaseClusterInsertionBoundary.cc:150
void setRandomised(bool randomised)
this turns off the randomise(): created for UnitTests.
Definition: BaseClusterInsertionBoundary.cc:159
Vec3D velMin_
Definition: BaseClusterInsertionBoundary.h:183
void setRadiusMicroParticle(Mdouble rMP)
this sets the radius of the micro particle composing the cluster.
Definition: BaseClusterInsertionBoundary.cc:171
Mdouble energyRatioTolerance_
Definition: BaseClusterInsertionBoundary.h:174
void checkBoundaryBeforeTimeStep(DPMBase *md) override
Fills the boundary with clusters.
Definition: BaseClusterInsertionBoundary.cc:227
bool isRestartOutputOn_
Definition: BaseClusterInsertionBoundary.h:160
Vec3D position_
Definition: BaseClusterInsertionBoundary.h:130
bool isAmatOutputOn_
Definition: BaseClusterInsertionBoundary.h:154
Mdouble velocityDampingModulus_
Definition: BaseClusterInsertionBoundary.h:170
std::vector< Mdouble > clusterRadii_
Definition: BaseClusterInsertionBoundary.h:191
unsigned int nClusterInserted_
Definition: BaseClusterInsertionBoundary.h:136
Mdouble collisionTimeOverTimeStep_
Definition: BaseClusterInsertionBoundary.h:177
void setVelocityRange(Vec3D velMin, Vec3D velMax)
Sets the velocity range of the ClusterInsertionBoundary.
Definition: BaseClusterInsertionBoundary.cc:187
LinearPlasticViscoelasticFrictionSpecies * clusterSpecies_
Definition: BaseClusterInsertionBoundary.h:146
bool isVtkOutputOn_
Definition: BaseClusterInsertionBoundary.h:158
void setOutputClusterProperties(bool doCdatOutput, bool doOverlOutput, bool doAmatOutput, bool doIntStrucOutput, bool doVtkOutput, bool doRestartOutput, bool doFStatOutput, bool doEneOutput)
sets cluster whether or not cluster output files will be created, for example:
Definition: BaseClusterInsertionBoundary.cc:201
Mdouble sizeDispersityParticle_
Definition: BaseClusterInsertionBoundary.h:168
Mdouble radiusParticle_
Definition: BaseClusterInsertionBoundary.h:139
std::string getName() const override
Returns the name of the object.
Definition: BaseClusterInsertionBoundary.cc:306
BaseClusterInsertionBoundary()
Constructor; sets everything to 0.
Definition: BaseClusterInsertionBoundary.cc:13
void setAdditionalClusterProperties(Mdouble collisionTimeOverTimeStep, Mdouble velocityDampingModulus, Mdouble energyRatioTolerance)
sets additional cluster properties as:
Definition: BaseClusterInsertionBoundary.cc:193
void write(std::ostream &os) const override
writes boundary properties to ostream
Definition: BaseClusterInsertionBoundary.cc:268
bool isEneOutputOn_
Definition: BaseClusterInsertionBoundary.h:164
~BaseClusterInsertionBoundary() override
Destructor: default destructor.
void placeParticle(BaseParticle *p, RNG &random) override
Generates a random position, velocity for the cluster p.
Definition: BaseClusterInsertionBoundary.cc:216
bool randomised_
Definition: BaseClusterInsertionBoundary.h:194
int nParticles_
Definition: BaseClusterInsertionBoundary.h:143
unsigned int getNumberOfClusterInserted()
this returns the number of cluster inserted.
Definition: BaseClusterInsertionBoundary.cc:167
Vec3D posMax_
Definition: BaseClusterInsertionBoundary.h:183
Vec3D velMax_
Definition: BaseClusterInsertionBoundary.h:183
bool getRandomised()
this returns a bool which indicates if the process is randomised (true) or not (false).
Definition: BaseClusterInsertionBoundary.cc:163
void setGeometry(Vec3D posMin, Vec3D posMax)
Sets the geometry (position and velocity distribution) of the ClusterInsertionBoundary.
Definition: BaseClusterInsertionBoundary.cc:181
Vec3D posMin_
Definition: BaseClusterInsertionBoundary.h:183
bool setRadiusParticleAndNotNumberOfParticles_
Definition: BaseClusterInsertionBoundary.h:187
Definition: BaseParticle.h:33
The DPMBase header includes quite a few header files, defining all the handlers, which are essential....
Definition: DPMBase.h:56
Boundary structure for boundaries used for insertion of particles.
Definition: InsertionBoundary.h:29
This is a class that generates random numbers i.e. named the Random Number Generator (RNG).
Definition: RNG.h:32
Contains material and contact force properties.
Definition: Species.h:14
Definition: Kernel/Math/Vector.h:30
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286