MercuryDPM  Trunk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CubeInsertionBoundary Class Reference

It's an insertion boundary which has cuboidal shape (yes, 'CuboidalInsertionBoundary' would have been the correct name). More...

#include <CubeInsertionBoundary.h>

+ Inheritance diagram for CubeInsertionBoundary:

Public Member Functions

 CubeInsertionBoundary ()
 Constructor; sets everything to 0. More...
 
 CubeInsertionBoundary (const CubeInsertionBoundary &other)
 Copy constructor with deep copy. More...
 
 ~CubeInsertionBoundary () override
 Destructor: default destructor. More...
 
CubeInsertionBoundarycopy () const override
 Creates a copy on the heap and returns a pointer. More...
 
void set (BaseParticle *particleToCopy, unsigned int maxFailed, Vec3D posMin, Vec3D posMax, Vec3D velMin, Vec3D velMax, double radMin, double radMax)
 Sets the properties of the CubeInsertionBoundary. More...
 
void set (BaseParticle &particleToCopy, unsigned int maxFailed, Vec3D posMin, Vec3D posMax, Vec3D velMin, Vec3D velMax, double radMin, double radMax)
 
void setRadiusRange (Mdouble radMin, Mdouble radMax)
 Sets the range of particle radii that may be generated. More...
 
void setGeometry (Vec3D posMin, Vec3D posMax, Vec3D velMin, Vec3D velMax)
 Sets the geometry (position and velocity distribution) of the CubeInsertionBoundary. More...
 
void placeParticle (BaseParticle *p, RNG &random) override
 Generates a random position, velocity for the particle p. More...
 
void read (std::istream &is) override
 reads boundary properties from istream More...
 
MERCURY_DEPRECATED void oldRead (std::istream &is)
 deprecated version of CubeInsertionBoundary::read(). More...
 
void write (std::ostream &os) const override
 writes boundary properties to ostream More...
 
- Public Member Functions inherited from InsertionBoundary
 InsertionBoundary ()
 Default constructor: set everything to 0/nullptr. More...
 
 InsertionBoundary (const InsertionBoundary &other)
 Copy constructor (with deep copy) More...
 
 ~InsertionBoundary () override
 Destructor: delete the particle that has to be copied at every insertion. More...
 
void set (BaseParticle *particleToCopy, unsigned int maxFailed)
 Sets the particle that will be inserted and the maximum number of times for which insertion may fail. More...
 
virtual BaseParticlegenerateParticle (RNG &random)
 Virtual function that generates the intrinsic properties (species, radius) of one particle. More...
 
void checkBoundaryBeforeTimeStep (DPMBase *md) override
 Fills the boundary with particles. More...
 
void insertParticles (DPMBase *md)
 
unsigned int getNumberOfParticlesInserted () const
 Gets the number of particles inserted by the boundary. More...
 
double getMassOfParticlesInserted () const
 
double getVolumeOfParticlesInserted () const
 
void reset ()
 
void activate ()
 Turns on the InsertionBoundary. More...
 
void deactivate ()
 Turns off the InsertionBoundary. More...
 
bool isActivated ()
 Returns whether the InsertionBoundary is activated. More...
 
void setMaxFailed (unsigned int maxFailed)
 Sets the number of times that the wall may fail to insert a particle. More...
 
unsigned int getMaxFailed () const
 Gets the number of times that the boundary may fail to insert a particle. More...
 
void setParticleToCopy (BaseParticle *particleToCopy)
 Sets the particle that will be inserted through the insertion boundary. More...
 
BaseParticlegetParticleToCopy () const
 Gets the particle that will be inserted through the insertion boundary. More...
 
void read (std::istream &is) override
 Reads the boundary's id_ and maxFailed_. More...
 
void write (std::ostream &os) const override
 Writes the boundary's id_ and maxFailed_. More...
 
Mdouble getVolumeFlowRate () const
 
void setVolumeFlowRate (Mdouble volumeFlowRate_)
 
Mdouble getInitialVolume () const
 
void setInitialVolume (Mdouble initialVolume)
 
void setPSD (PSD psd)
 Sets the range of particle radii that may be generated from a user defined PSD. More...
 
PSD getPSD ()
 
void setDistribution (Distribution distribution)
 Sets the range of particle radii that may be generated to custom distributions. More...
 
Distribution getDistribution ()
 Gets the range of particle radii that may be generated. More...
 
void setVariableVolumeFlowRate (const std::vector< Mdouble > &variableCumulativeVolumeFlowRate, Mdouble samplingInterval)
 
bool insertParticle (Mdouble time)
 
bool getCheckParticleForInteraction () const
 
void setCheckParticleForInteraction (bool checkParticleForInteraction)
 
void setManualInsertion (bool manualInsertion)
 Set the flag for a manual PSD insertion routine. More...
 
- Public Member Functions inherited from BaseBoundary
 BaseBoundary ()
 default constructor. More...
 
 BaseBoundary (const BaseBoundary &b)
 copy constructor More...
 
 ~BaseBoundary () override
 destructor More...
 
virtual void createPeriodicParticle (BaseParticle *p UNUSED, ParticleHandler &pH UNUSED)
 Creates a periodic particle in case of periodic boundaries in serial build. More...
 
virtual void createPeriodicParticles (ParticleHandler &pH UNUSED)
 Creates periodic copies of given particle in case of periodic boundaries. More...
 
virtual void checkBoundaryAfterParticlesMove (ParticleHandler &pH)
 Virtual function that does things to particles, each time step after particles have moved. More...
 
virtual void actionsBeforeTimeLoop ()
 Virtual function that does something after DPMBase::setupInitialConditions but before the first time step. More...
 
virtual void modifyGhostAfterCreation (BaseParticle *particle, int i)
 
virtual void writeVTK (std::fstream &file)
 
void setHandler (BoundaryHandler *handler)
 Sets the boundary's BoundaryHandler. More...
 
BoundaryHandlergetHandler () const
 Returns the boundary's BoundaryHandler. More...
 
- Public Member Functions inherited from BaseObject
 BaseObject ()=default
 Default constructor. More...
 
 BaseObject (const BaseObject &p)=default
 Copy constructor, copies all the objects BaseObject contains. More...
 
virtual ~BaseObject ()=default
 virtual destructor More...
 
virtual void moveInHandler (unsigned int index)
 Except that it is virtual, it does the same thing as setIndex() does. More...
 
void setIndex (unsigned int index)
 Allows one to assign an index to an object in the handler/container. More...
 
void setId (unsigned long id)
 Assigns a unique identifier to each object in the handler (container) which remains constant even after the object is deleted from the container/handler. More...
 
unsigned int getIndex () const
 Returns the index of the object in the handler. More...
 
unsigned int getId () const
 Returns the unique identifier of any particular object. More...
 
void setGroupId (unsigned groupId)
 
unsigned getGroupId () const
 

Protected Attributes

Vec3D posMin_
 Minimal and maximal positions defining the boundary's boundaries, and minimum and maximum velocity of the particles to be inserted. More...
 
Vec3D posMax_
 
Vec3D velMin_
 
Vec3D velMax_
 
- Protected Attributes inherited from InsertionBoundary
BaseParticleparticleToCopy_
 Particle that will be inserted through the insertion boundary. More...
 
unsigned int maxFailed_
 Number of times that the wall may fail to insert a particle. More...
 
unsigned int numberOfParticlesInserted_
 Number of particles that are already inserted. More...
 
Mdouble massInserted_
 Total mass of particles inserted. More...
 
Mdouble volumeInserted_
 Total volume of particles inserted. More...
 
bool isActivated_
 The InsertionBoundary is activated by default. If the InsertionBoundary is deactivated, then it introduces no particles (useful for trying to maintain a certain insertion rate). More...
 
Mdouble volumeFlowRate_
 
Mdouble initialVolume_
 
std::vector< MdoublevariableCumulativeVolumeFlowRate_
 
Mdouble samplingInterval_
 
bool checkParticleForInteraction_
 
PSD particleSizeDistribution_
 Defines a particle size distribution as an object of the PSD class; if particleSizeDistribution_ is empty, distribution_ is used instead. More...
 
Mdouble radMin_
 Minimum and maximum radii of the generated particles. More...
 
Mdouble radMax_
 
Distribution distribution_ = Distribution::Uniform
 defines a custom particle size distribution, which by default is uniform More...
 
bool isManuallyInserting_
 A flag to enable a top-down class-by-class manual insertion of a PSD; default is FALSE. More...
 

Private Member Functions

std::string getName () const override
 Returns the name of the object. More...
 

Additional Inherited Members

- Public Types inherited from InsertionBoundary
enum  Distribution { Distribution::Uniform, Distribution::Normal_1_5 }
 Defines a custom particle size distribution; distribution_ will always be used, unless particleSizeDistribution_ is non-empty. More...
 

Detailed Description

It's an insertion boundary which has cuboidal shape (yes, 'CuboidalInsertionBoundary' would have been the correct name).

Definition at line 42 of file CubeInsertionBoundary.h.

Constructor & Destructor Documentation

CubeInsertionBoundary::CubeInsertionBoundary ( )

Constructor; sets everything to 0.

Default constructor; sets every data member to 0.

Definition at line 34 of file CubeInsertionBoundary.cc.

References posMax_, posMin_, velMax_, and velMin_.

Referenced by copy().

35 {
36  posMin_ = Vec3D(0.0, 0.0, 0.0);
37  posMax_ = Vec3D(0.0, 0.0, 0.0);
38  velMin_ = Vec3D(0.0, 0.0, 0.0);
39  velMax_ = Vec3D(0.0, 0.0, 0.0);
40 }
Vec3D posMin_
Minimal and maximal positions defining the boundary's boundaries, and minimum and maximum velocity of...
InsertionBoundary()
Default constructor: set everything to 0/nullptr.
Definition: Vector.h:49
CubeInsertionBoundary::CubeInsertionBoundary ( const CubeInsertionBoundary other)

Copy constructor with deep copy.

Copy constructor

Definition at line 45 of file CubeInsertionBoundary.cc.

References posMax_, posMin_, velMax_, and velMin_.

46  : InsertionBoundary(other)
47 {
48  posMin_ = other.posMin_;
49  posMax_ = other.posMax_;
50  velMin_ = other.velMin_;
51  velMax_ = other.velMax_;
52 }
Vec3D posMin_
Minimal and maximal positions defining the boundary's boundaries, and minimum and maximum velocity of...
InsertionBoundary()
Default constructor: set everything to 0/nullptr.
CubeInsertionBoundary::~CubeInsertionBoundary ( )
overridedefault

Destructor: default destructor.

Destructor. Since there are no pointers in this class, there is no need for any actions here.

Member Function Documentation

CubeInsertionBoundary * CubeInsertionBoundary::copy ( ) const
overridevirtual

Creates a copy on the heap and returns a pointer.

Copy method; creates a copy on the heap and returns its pointer.

Returns
pointer to the copy on the heap

Implements BaseBoundary.

Definition at line 65 of file CubeInsertionBoundary.cc.

References CubeInsertionBoundary().

66 {
67 #ifdef DEBUG_CONSTRUCTOR
68  std::cout << "CubeInsertionBoundary::copy() const finished" << std::endl;
69 #endif
70  return new CubeInsertionBoundary(*this);
71 }
CubeInsertionBoundary()
Constructor; sets everything to 0.
std::string CubeInsertionBoundary::getName ( ) const
overrideprivatevirtual

Returns the name of the object.

Returns the name of the object class

Returns
the object's class' name, i.e. 'CubeInsertionBoundary'

Implements BaseObject.

Definition at line 207 of file CubeInsertionBoundary.cc.

208 {
209  return "CubeInsertionBoundary";
210 }
void CubeInsertionBoundary::oldRead ( std::istream &  is)

deprecated version of CubeInsertionBoundary::read().

Deprecated version of read().

Deprecated:
Should be gone by Mercury 2.0. Instead, use CubeInsertionBoundary::read().

Definition at line 174 of file CubeInsertionBoundary.cc.

References posMax_, posMin_, InsertionBoundary::radMax_, InsertionBoundary::radMin_, InsertionBoundary::setMaxFailed(), velMax_, and velMin_.

175 {
176  unsigned int maxFailed;
177  std::string dummy;
178  is >> dummy >> maxFailed
179  >> dummy >> posMin_
180  >> dummy >> posMax_
181  >> dummy >> velMin_
182  >> dummy >> velMax_
183  >> dummy >> radMin_
184  >> dummy >> radMax_;
185  setMaxFailed(maxFailed);
186 }
Vec3D posMin_
Minimal and maximal positions defining the boundary's boundaries, and minimum and maximum velocity of...
Mdouble radMin_
Minimum and maximum radii of the generated particles.
void setMaxFailed(unsigned int maxFailed)
Sets the number of times that the wall may fail to insert a particle.
void CubeInsertionBoundary::placeParticle ( BaseParticle p,
RNG random 
)
overridevirtual

Generates a random position, velocity for the particle p.

places a particle with random position (although within the boundary, of course), velocity and radius and returns its pointer.

Parameters
[in]randomRandom number generator

Implements InsertionBoundary.

Definition at line 141 of file CubeInsertionBoundary.cc.

References RNG::getRandomNumber(), posMax_, posMin_, BaseInteractable::setPosition(), BaseInteractable::setVelocity(), velMax_, velMin_, Vec3D::X, Vec3D::Y, and Vec3D::Z.

142 {
143  Vec3D pos, vel;
144  pos.X = random.getRandomNumber(posMin_.X, posMax_.X);
145  pos.Y = random.getRandomNumber(posMin_.Y, posMax_.Y);
146  pos.Z = random.getRandomNumber(posMin_.Z, posMax_.Z);
147  vel.X = random.getRandomNumber(velMin_.X, velMax_.X);
148  vel.Y = random.getRandomNumber(velMin_.Y, velMax_.Y);
149  vel.Z = random.getRandomNumber(velMin_.Z, velMax_.Z);
150  p->setPosition(pos);
151  p->setVelocity(vel);
152 }
Mdouble X
the vector components
Definition: Vector.h:65
Vec3D posMin_
Minimal and maximal positions defining the boundary's boundaries, and minimum and maximum velocity of...
void setVelocity(const Vec3D &velocity)
set the velocity of the BaseInteractable.
Mdouble getRandomNumber()
This is a random generating routine can be used for initial positions.
Definition: RNG.cc:143
Mdouble Y
Definition: Vector.h:65
void setPosition(const Vec3D &position)
Sets the position of this BaseInteractable.
Definition: Vector.h:49
Mdouble Z
Definition: Vector.h:65
void CubeInsertionBoundary::read ( std::istream &  is)
overridevirtual

reads boundary properties from istream

Reads the boundary properties from an istream

Parameters
[in,out]isthe istream

Implements BaseBoundary.

Definition at line 158 of file CubeInsertionBoundary.cc.

References posMax_, posMin_, InsertionBoundary::radMax_, InsertionBoundary::radMin_, InsertionBoundary::read(), velMax_, and velMin_.

Referenced by BidisperseCubeInsertionBoundary::read().

159 {
161  std::string dummy;
162  is >> dummy >> posMin_
163  >> dummy >> posMax_;
164  is >> dummy >> velMin_
165  >> dummy >> velMax_;
166  is >> dummy >> radMin_
167  >> dummy >> radMax_;
168 }
Vec3D posMin_
Minimal and maximal positions defining the boundary's boundaries, and minimum and maximum velocity of...
Mdouble radMin_
Minimum and maximum radii of the generated particles.
void read(std::istream &is) override
Reads the boundary's id_ and maxFailed_.
void CubeInsertionBoundary::set ( BaseParticle particleToCopy,
unsigned int  maxFailed,
Vec3D  posMin,
Vec3D  posMax,
Vec3D  velMin,
Vec3D  velMax,
double  radMin,
double  radMax 
)

Sets the properties of the CubeInsertionBoundary.

Sets all the properties of the cuboidal insertion boundary.

Parameters
[in]particleToCopyPointer to the BaseParticle which is used as a basis for the particles to be inserted
[in]maxFailedThe maximum number of times the insertion of a particle may be tried and failed before the insertion of particles is considered done NB: this property is used in the parent's InsertionBoundary::checkBoundaryBeforeTimeStep().
[in]posMinFirst defining corner of cuboidal insertion boundary
[in]posMaxSecond defining corner of cuboidal insertion boundary
[in]velMinMinimum velocity of inserted particles
[in]velMaxMaximum velocity of inserted particles
[in]radMinMinimum radius of inserted particles
[in]radMaxMaximum radius of inserted particles

Definition at line 89 of file CubeInsertionBoundary.cc.

References setGeometry(), InsertionBoundary::setMaxFailed(), InsertionBoundary::setParticleToCopy(), and setRadiusRange().

Referenced by DPMBase::fillDomainWithParticles(), BidisperseCubeInsertionBoundary::set(), and set().

91 {
92  setParticleToCopy(particleToCopy);
93  setRadiusRange(radMin, radMax);
94 
95  setMaxFailed(maxFailed);
96  setGeometry(posMin, posMax, velMin, velMax);
97 }
void setGeometry(Vec3D posMin, Vec3D posMax, Vec3D velMin, Vec3D velMax)
Sets the geometry (position and velocity distribution) of the CubeInsertionBoundary.
void setMaxFailed(unsigned int maxFailed)
Sets the number of times that the wall may fail to insert a particle.
void setParticleToCopy(BaseParticle *particleToCopy)
Sets the particle that will be inserted through the insertion boundary.
void setRadiusRange(Mdouble radMin, Mdouble radMax)
Sets the range of particle radii that may be generated.
void CubeInsertionBoundary::set ( BaseParticle particleToCopy,
unsigned int  maxFailed,
Vec3D  posMin,
Vec3D  posMax,
Vec3D  velMin,
Vec3D  velMax,
double  radMin,
double  radMax 
)

Definition at line 100 of file CubeInsertionBoundary.cc.

References set().

101  {
102  set(&particleToCopy, maxFailed, posMin, posMax, velMin, velMax, radMin, radMax);
103 }
void set(BaseParticle *particleToCopy, unsigned int maxFailed, Vec3D posMin, Vec3D posMax, Vec3D velMin, Vec3D velMax, double radMin, double radMax)
Sets the properties of the CubeInsertionBoundary.
void CubeInsertionBoundary::setGeometry ( Vec3D  posMin,
Vec3D  posMax,
Vec3D  velMin,
Vec3D  velMax 
)

Sets the geometry (position and velocity distribution) of the CubeInsertionBoundary.

Definition at line 112 of file CubeInsertionBoundary.cc.

References posMax_, posMin_, velMax_, and velMin_.

Referenced by set().

113 {
114  posMin_ = posMin;
115  posMax_ = posMax;
116  velMin_ = velMin;
117  velMax_ = velMax;
118 }
Vec3D posMin_
Minimal and maximal positions defining the boundary's boundaries, and minimum and maximum velocity of...
void CubeInsertionBoundary::setRadiusRange ( Mdouble  radMin,
Mdouble  radMax 
)

Sets the range of particle radii that may be generated.

Definition at line 106 of file CubeInsertionBoundary.cc.

References InsertionBoundary::radMax_, and InsertionBoundary::radMin_.

Referenced by set().

107 {
108  radMin_ = radMin;
109  radMax_ = radMax;
110 }
Mdouble radMin_
Minimum and maximum radii of the generated particles.
void CubeInsertionBoundary::write ( std::ostream &  os) const
overridevirtual

writes boundary properties to ostream

Writes boundary's properties to an ostream

Parameters
[in]osthe ostream

Implements BaseBoundary.

Definition at line 192 of file CubeInsertionBoundary.cc.

References posMax_, posMin_, InsertionBoundary::radMax_, InsertionBoundary::radMin_, velMax_, velMin_, and InsertionBoundary::write().

Referenced by BidisperseCubeInsertionBoundary::write().

193 {
195  os << " posMin " << posMin_
196  << " posMax " << posMax_
197  << " velMin " << velMin_
198  << " velMax " << velMax_
199  << " radMin " << radMin_
200  << " radMax " << radMax_;
201 }
Vec3D posMin_
Minimal and maximal positions defining the boundary's boundaries, and minimum and maximum velocity of...
Mdouble radMin_
Minimum and maximum radii of the generated particles.
void write(std::ostream &os) const override
Writes the boundary's id_ and maxFailed_.

Member Data Documentation

Vec3D CubeInsertionBoundary::posMax_
protected
Vec3D CubeInsertionBoundary::posMin_
protected

Minimal and maximal positions defining the boundary's boundaries, and minimum and maximum velocity of the particles to be inserted.

Definition at line 122 of file CubeInsertionBoundary.h.

Referenced by CubeInsertionBoundary(), BidisperseCubeInsertionBoundary::generateParticle(), oldRead(), placeParticle(), read(), setGeometry(), and write().

Vec3D CubeInsertionBoundary::velMax_
protected
Vec3D CubeInsertionBoundary::velMin_
protected

The documentation for this class was generated from the following files: