![]() |
|
Inserts particles in a sphere with a given radius, polar and azimuthal radius at a specific origin which is 0 by default. More...
#include <SphereInsertionBoundary.h>
Public Member Functions | |
SphereInsertionBoundary () | |
Constructor; sets everything to 0. More... | |
SphereInsertionBoundary (const SphereInsertionBoundary &other) | |
Copy constructor with deep copy. More... | |
~SphereInsertionBoundary () override | |
Destructor: default destructor. More... | |
SphereInsertionBoundary * | copy () const override |
Creates a copy on the heap and returns a pointer. More... | |
void | set (BaseParticle *particleToCopy, unsigned int maxFailed, Mdouble rMin, Mdouble rMax, Mdouble thetaMin=0, Mdouble thetaMax=2.0 *constants::pi, Mdouble phiMin=0, Mdouble phiMax=constants::pi, Vec3D velMin={0, 0, 0}, Vec3D velMax={0, 0, 0}) |
Sets the properties of the InsertionBoundary for mutliple different particle types. More... | |
void | set (BaseParticle &particleToCopy, unsigned int maxFailed, Mdouble rMin, Mdouble rMax, Mdouble thetaMin=0, Mdouble thetaMax=2.0 *constants::pi, Mdouble phiMin=0, Mdouble phiMax=constants::pi, Vec3D velMin={0, 0, 0}, Vec3D velMax={0, 0, 0}) |
void | set (std::vector< BaseParticle * > particleToCopy, unsigned int maxFailed, Mdouble rMin, Mdouble rMax, Mdouble thetaMin=0, Mdouble thetaMax=2.0 *constants::pi, Mdouble phiMin=0, Mdouble phiMax=constants::pi, Vec3D velMin={0, 0, 0}, Vec3D velMax={0, 0, 0}) |
Sets the properties of the InsertionBoundary for a single particle type. More... | |
void | set (BaseParticle *particleToCopy, unsigned int maxFailed, Mdouble radMin, Mdouble radMax, Mdouble thetaMin, Mdouble thetaMax, Mdouble phiMin, Mdouble phiMax, Vec3D velMin, Vec3D velMax, Mdouble particleRMin, Mdouble particleRMax) |
old style set function which assumes a uniform psd. More... | |
void | set (BaseParticle &particleToCopy, unsigned int maxFailed, Mdouble radMin, Mdouble radMax, Mdouble thetaMin, Mdouble thetaMax, Mdouble phiMin, Mdouble phiMax, Vec3D velMin, Vec3D velMax, Mdouble particleRMin, Mdouble particleRMax) |
old style set function which assumes a uniform psd. More... | |
void | setGeometry (Mdouble rMin, Mdouble rMax, Mdouble thetaMin, Mdouble thetaMax, Mdouble phiMin, Mdouble phiMax) |
Sets the geometry (position and orientation) of the SphereInsertionBoundary. More... | |
Vec3D | getOrigin () const |
Returns the origin of the spheres coordinate system. More... | |
void | shiftBoundary (Vec3D shift) override |
shift the origin of the sphere in the cartesian coordinate system 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... | |
void | write (std::ostream &os) const override |
writes boundary properties to ostream More... | |
![]() | |
InsertionBoundary () | |
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... | |
virtual BaseParticle * | generateParticle (RNG &random) |
Sets the properties of the InsertionBoundary for a single particle type / virtual void set(BaseParticle* particleToCopy, unsigned int maxFailed, Vec3D velMin, Vec3D velMax, double radMin, double radMax)=0;. More... | |
virtual void | rotateBoundary (Vec3D angle) |
virtual function that rotates the boundary. More... | |
void | checkBoundaryBeforeTimeStep (DPMBase *md) override |
Fills the boundary with particles. More... | |
void | insertParticles (DPMBase *md) |
Fill a certain domain with particles. More... | |
unsigned int | getNumberOfParticlesInserted () const |
Gets the number of particles inserted by the boundary. More... | |
Mdouble | getMassOfParticlesInserted () const |
Gets the mass of particles inserted by the boundary. More... | |
Mdouble | getVolumeOfParticlesInserted () const |
Gets the volume of particles inserted by the boundary. More... | |
void | reset () |
resets particle property counter variables. More... | |
void | activate () |
Turns on the InsertionBoundary. More... | |
void | deactivate () |
Turns off the InsertionBoundary. More... | |
bool | isActivated () |
Returns whether the InsertionBoundary is activated. More... | |
unsigned int | getMaxFailed () const |
Gets the number of times that the boundary may fail to insert a particle. More... | |
void | setParticleToCopy (std::vector< BaseParticle * > particleToCopy) |
Sets multiple different particles that will be inserted through the insertion boundary. More... | |
void | setParticleToCopy (BaseParticle *particleToCopy) |
Sets the particle that will be inserted through the insertion boundary. More... | |
std::vector< BaseParticle * > | getParticleToCopy () |
Gets the particles that will be inserted through the insertion boundary. More... | |
Mdouble | getVolumeFlowRate () const |
Gets the volume flow rate of the insertion routine. More... | |
void | setVolumeFlowRate (Mdouble volumeFlowRate) |
Sets the volume flow rate of the insertion routine. More... | |
Mdouble | getInitialVolume () const |
Gets the initialVolume() . More... | |
void | setInitialVolume (Mdouble initialVolume) |
Gets the Volume which should be inserted by the insertion routine. More... | |
void | setPSD (const PSD psd) |
Sets the range of particle radii that may be generated from a user defined PSD. More... | |
void | setPSD (std::vector< PSD > psd, std::vector< Mdouble > probability) |
Sets the ranges of particle radii that may be generated from user defined PSDs. More... | |
std::vector< PSD > | getPSD () |
Gets the particle size distributions set by the user. More... | |
void | setVariableVolumeFlowRate (const std::vector< Mdouble > &variableCumulativeVolumeFlowRate, Mdouble samplingInterval) |
Sets a variable volume flow rate. More... | |
bool | insertParticle (Mdouble time) |
Checks the inserted total volume and returns if a particle is still allowed to be inserted. More... | |
bool | getCheckParticleForInteraction () const |
Gets the variable that checks if a particle has an interaction. More... | |
void | setCheckParticleForInteraction (bool checkParticleForInteraction) |
Sets the variable that checks if a particle has an interaction. More... | |
void | setManualInsertion (bool manualInsertion) |
Set the flag for a manual PSD insertion routine. More... | |
![]() | |
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... | |
BoundaryHandler * | getHandler () const |
Returns the boundary's BoundaryHandler. More... | |
![]() | |
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 | |
Mdouble | thetaMin_ |
Minimal and maximal azimuth angle in range [0,2*pi] defining the circle of the sphere in which insertion should happen. More... | |
Mdouble | thetaMax_ |
Mdouble | phiMin_ |
Minimal and maximal polar angle in range [0,pi] defining the circle of the sphere in which insertion should happen. More... | |
Mdouble | phiMax_ |
Mdouble | radMin_ |
Minimal and maximal radius defining the inner and outer circle of the sphere in which insertion should happen. More... | |
Mdouble | radMax_ |
Vec3D | origin_ |
origin of the sphere. More... | |
Private Member Functions | |
std::string | getName () const override |
Returns the name of the object. More... | |
Additional Inherited Members | |
![]() | |
std::vector< BaseParticle * > | particleToCopy_ |
read Distribution class from file. / friend std::istream& operator>>(std::istream& is, InsertionBoundary::Distribution& type); 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< Mdouble > | variableCumulativeVolumeFlowRate_ |
Mdouble | samplingInterval_ |
bool | checkParticleForInteraction_ |
Checks if a particle has an interaction with a wall or other particles. More... | |
std::vector< PSD > | particleSizeDistributionVector_ |
Defines a particle size distribution as an object of the PSD class; if particleSizeDistributionVector_ is empty, distribution_ is used instead. More... | |
Vec3D | velMin_ |
Minimum and maximum velocity of the particles to be inserted. More... | |
Vec3D | velMax_ |
bool | isManuallyInserting_ |
A flag to enable a top-down class-by-class manual insertion of a PSD; default is FALSE. More... | |
std::vector< Mdouble > | probability_ |
vector of probabilities in range [0,1] which determine the mixing ratio of partice size distributions. More... | |
int | chosenSpecies_ |
stores the chosen species for each timestep. More... | |
BaseParticle * | p0 = nullptr |
pointer to the next particle that should be inserted (needs to be stored across time steps). More... | |
Inserts particles in a sphere with a given radius, polar and azimuthal radius at a specific origin which is 0 by default.
SphereInsertionBoundary::SphereInsertionBoundary | ( | ) |
Constructor; sets everything to 0.
Default constructor; sets every data member to 0.
References origin_, phiMax_, phiMin_, radMax_, radMin_, Vec3D::setZero(), thetaMax_, and thetaMin_.
Referenced by copy().
SphereInsertionBoundary::SphereInsertionBoundary | ( | const SphereInsertionBoundary & | other | ) |
|
overridedefault |
Destructor: default destructor.
Destructor. Since there are no pointers in this class, there is no need for any actions here.
|
overridevirtual |
Creates a copy on the heap and returns a pointer.
Copy method; creates a copy on the heap and returns its pointer.
Implements BaseBoundary.
References SphereInsertionBoundary().
|
overrideprivatevirtual |
Returns the name of the object.
Returns the name of the object class
Implements BaseObject.
Vec3D SphereInsertionBoundary::getOrigin | ( | ) | const |
Returns the origin of the spheres coordinate system.
Returns the origin of the spheres coordinate system
References origin_.
Referenced by PSDSelfTest::setupInitialConditions().
|
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.
[in] | random | Random number generator |
Implements InsertionBoundary.
References RNG::getRandomNumber(), Vec3D::getSphericalCoordinates(), origin_, p, phiMax_, phiMin_, radMax_, radMin_, thetaMax_, thetaMin_, InsertionBoundary::velMax_, InsertionBoundary::velMin_, Vec3D::X, Vec3D::Y, and Vec3D::Z.
|
overridevirtual |
reads boundary properties from istream
Reads the boundary properties from an istream
[in,out] | is | the istream |
Reimplemented from InsertionBoundary.
References origin_, phiMax_, phiMin_, radMax_, radMin_, InsertionBoundary::read(), oomph::Global_string_for_annotation::string(), thetaMax_, thetaMin_, InsertionBoundary::velMax_, and InsertionBoundary::velMin_.
void SphereInsertionBoundary::set | ( | BaseParticle & | particleToCopy, |
unsigned int | maxFailed, | ||
Mdouble | radMin, | ||
Mdouble | radMax, | ||
Mdouble | thetaMin, | ||
Mdouble | thetaMax, | ||
Mdouble | phiMin, | ||
Mdouble | phiMax, | ||
Vec3D | velMin, | ||
Vec3D | velMax, | ||
Mdouble | particleRMin, | ||
Mdouble | particleRMax | ||
) |
old style set function which assumes a uniform psd.
References set(), PSD::setDistributionUniform(), and InsertionBoundary::setPSD().
void SphereInsertionBoundary::set | ( | BaseParticle & | particleToCopy, |
unsigned int | maxFailed, | ||
Mdouble | rMin, | ||
Mdouble | rMax, | ||
Mdouble | thetaMin = 0 , |
||
Mdouble | thetaMax = 2.0*constants::pi , |
||
Mdouble | phiMin = 0 , |
||
Mdouble | phiMax = constants::pi , |
||
Vec3D | velMin = {0, 0, 0} , |
||
Vec3D | velMax = {0, 0, 0} |
||
) |
void SphereInsertionBoundary::set | ( | BaseParticle * | particleToCopy, |
unsigned int | maxFailed, | ||
Mdouble | radMin, | ||
Mdouble | radMax, | ||
Mdouble | thetaMin, | ||
Mdouble | thetaMax, | ||
Mdouble | phiMin, | ||
Mdouble | phiMax, | ||
Vec3D | velMin, | ||
Vec3D | velMax, | ||
Mdouble | particleRMin, | ||
Mdouble | particleRMax | ||
) |
old style set function which assumes a uniform psd.
old style set function which also assumes a uniform psd. Note if you want a specific PSD do not use but this is quicker for a uniform in size PSD
References set(), PSD::setDistributionUniform(), and InsertionBoundary::setPSD().
void SphereInsertionBoundary::set | ( | BaseParticle * | particleToCopy, |
unsigned int | maxFailed, | ||
Mdouble | radMin, | ||
Mdouble | radMax, | ||
Mdouble | thetaMin = 0 , |
||
Mdouble | thetaMax = 2.0*constants::pi , |
||
Mdouble | phiMin = 0 , |
||
Mdouble | phiMax = constants::pi , |
||
Vec3D | velMin = {0, 0, 0} , |
||
Vec3D | velMax = {0, 0, 0} |
||
) |
Sets the properties of the InsertionBoundary for mutliple different particle types.
Sets all the properties of the cylindrical insertion boundary.
[in] | particleToCopy | Pointer to the BaseParticle which is used as a basis for the particles to be inserted |
[in] | maxFailed | The 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] | radMin | minimal radius defining of the sphere boundary |
[in] | radMax | maximal radius of the sphere boundary |
[in] | phiMin | Minimal polar angle of the sphere boundary |
[in] | phiMax | maximal polar angle of the sphere boundary |
[in] | thetaMin | minimal azimuth angle of the sphere boundary |
[in] | thetaMax | maximal azimuth angle of the sphere boundary |
[in] | velMin | Minimum velocity of inserted particles |
[in] | velMax | Maximum velocity of inserted particles |
References InsertionBoundary::maxFailed_, setGeometry(), InsertionBoundary::setParticleToCopy(), InsertionBoundary::velMax_, and InsertionBoundary::velMin_.
Referenced by set(), InsertionBoundarySelfTest::setupInitialConditions(), and PSDSelfTest::setupInitialConditions().
void SphereInsertionBoundary::set | ( | std::vector< BaseParticle * > | particleToCopy, |
unsigned int | maxFailed, | ||
Mdouble | radMin, | ||
Mdouble | radMax, | ||
Mdouble | thetaMin = 0 , |
||
Mdouble | thetaMax = 2.0*constants::pi , |
||
Mdouble | phiMin = 0 , |
||
Mdouble | phiMax = constants::pi , |
||
Vec3D | velMin = {0, 0, 0} , |
||
Vec3D | velMax = {0,0,0} |
||
) |
Sets the properties of the InsertionBoundary for a single particle type.
Sets all the properties of the cylindrical insertion boundary.
[in] | particleToCopy | vector of pointers to the BaseParticles which are used as a basis for the particle types (species) to be inserted |
[in] | maxFailed | The 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] | radMin | minimal radius defining of the sphere boundary |
[in] | radMax | maximal radius of the sphere boundary |
[in] | phiMin | Minimal polar angle of the sphere boundary |
[in] | phiMax | maximal polar angle of the sphere boundary |
[in] | thetaMin | minimal azimuth angle of the sphere boundary |
[in] | thetaMax | maximal azimuth angle of the sphere boundary |
[in] | velMin | Minimum velocity of inserted particles |
[in] | velMax | Maximum velocity of inserted particles |
References InsertionBoundary::maxFailed_, setGeometry(), InsertionBoundary::setParticleToCopy(), InsertionBoundary::velMax_, and InsertionBoundary::velMin_.
void SphereInsertionBoundary::setGeometry | ( | Mdouble | rMin, |
Mdouble | rMax, | ||
Mdouble | thetaMin, | ||
Mdouble | thetaMax, | ||
Mdouble | phiMin, | ||
Mdouble | phiMax | ||
) |
Sets the geometry (position and orientation) of the SphereInsertionBoundary.
set the geometry of the Cylindrical insertion boundary by setting the position and orientation.
[in] | radMin | minimal radius defining of the sphere boundary |
[in] | radMax | maximal radius of the sphere boundary |
[in] | phiMin | minimal polar angle of the sphere boundary |
[in] | phiMax | maximal polar angle of the sphere boundary |
[in] | thetaMin | minimal azimuth angle of the sphere boundary |
[in] | thetaMax | maximal azimuth angle of the sphere boundary |
References phiMax_, phiMin_, radMax_, radMin_, thetaMax_, and thetaMin_.
Referenced by set().
|
overridevirtual |
shift the origin of the sphere in the cartesian coordinate system
shifts the sphere by a translation vector in the cartesian coordinate system
[in] | shift | translation vector which shifts the sphere by certain X,Y,Z coordinates |
Reimplemented from InsertionBoundary.
References origin_.
Referenced by PSDSelfTest::setupInitialConditions().
|
overridevirtual |
writes boundary properties to ostream
Writes boundary's properties to an ostream
[in] | os | the ostream |
Reimplemented from InsertionBoundary.
References origin_, phiMax_, phiMin_, radMax_, radMin_, thetaMax_, thetaMin_, InsertionBoundary::velMax_, InsertionBoundary::velMin_, and InsertionBoundary::write().
|
protected |
origin of the sphere.
Referenced by getOrigin(), placeParticle(), read(), shiftBoundary(), SphereInsertionBoundary(), and write().
|
protected |
Referenced by placeParticle(), read(), setGeometry(), SphereInsertionBoundary(), and write().
|
protected |
Minimal and maximal polar angle in range [0,pi] defining the circle of the sphere in which insertion should happen.
Referenced by placeParticle(), read(), setGeometry(), SphereInsertionBoundary(), and write().
|
protected |
Referenced by placeParticle(), read(), setGeometry(), SphereInsertionBoundary(), and write().
|
protected |
Minimal and maximal radius defining the inner and outer circle of the sphere in which insertion should happen.
Referenced by placeParticle(), read(), setGeometry(), SphereInsertionBoundary(), and write().
|
protected |
Referenced by placeParticle(), read(), setGeometry(), SphereInsertionBoundary(), and write().
|
protected |
Minimal and maximal azimuth angle in range [0,2*pi] defining the circle of the sphere in which insertion should happen.
Referenced by placeParticle(), read(), setGeometry(), SphereInsertionBoundary(), and write().