|
Used for measuring flow rates through a given plane; acts like a pair of scales Inherits from BaseBoundary. Can measure forward, backward and net fluxes. More...
#include <FluxBoundary.h>
Public Member Functions | |
FluxBoundary () | |
default constructor More... | |
~FluxBoundary () override | |
destructor More... | |
FluxBoundary * | copy () const override |
Copy method; creates copy on the heap and returns a pointer to it. More... | |
void | set (const Vec3D &normal, Mdouble distance) |
Sets boundary position based on a normal and distance. More... | |
void | reset () |
Resets the counts to zero. More... | |
void | move (Mdouble position) |
Sets the boundary's distance property to the given one. More... | |
Mdouble | getDistance (const Vec3D &position) const |
Returns the shortest distance between the boundary and given position. More... | |
void | checkBoundaryAfterParticlesMove (ParticleHandler &pH) override |
Runs at the end of each time step. More... | |
bool | checkBoundaryAfterParticleMoved (BaseParticle *p, ParticleHandler &pH) |
Checks if particle has crossed the boundary and updates the scales if so. More... | |
unsigned int | getNumberOfParticlesCrossedForw () const |
Gets the number of particles that have crossed the boundary. More... | |
unsigned int | getNumberOfParticlesCrossedBack () const |
unsigned int | getNumberOfParticlesCrossedNet () const |
double | getMassOfParticlesCrossedForw () const |
double | getMassOfParticlesCrossedBack () const |
double | getMassOfParticlesCrossedNet () const |
double | getVolumeOfParticlesCrossedForw () const |
double | getVolumeOfParticlesCrossedBack () const |
double | getVolumeOfParticlesCrossedNet () const |
void | read (std::istream &is) override |
Reads some boundary properties from an std::istream. More... | |
MERCURYDPM_DEPRECATED void | oldRead (std::istream &is) |
Deprecated read method. use FluxBoundary::read() instead. More... | |
void | write (std::ostream &os) const override |
Writes the boundary properties to an std::ostream. More... | |
std::string | getName () const override |
Returns the name of the object. 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 | checkBoundaryBeforeTimeStep (DPMBase *md) |
Virtual function that does things before each time step. 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... | |
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 |
Private Attributes | |
Vec3D | normal_ |
outward unit normal vector More... | |
Mdouble | scaleFactor_ |
This is the factor to rescale the given normal vector to a unit vectors. More... | |
Mdouble | distance_ |
The boundary's distance from the origin. More... | |
unsigned int | numberOfParticlesCrossedForw_ |
Number of particles that have been deleted by this boundary. More... | |
unsigned int | numberOfParticlesCrossedBack_ |
double | massCrossedForw_ |
double | massCrossedBack_ |
double | volumeCrossedForw_ |
double | volumeCrossedBack_ |
Used for measuring flow rates through a given plane; acts like a pair of scales Inherits from BaseBoundary. Can measure forward, backward and net fluxes.
FluxBoundary::FluxBoundary | ( | ) |
default constructor
Default constructor (calls the parent-constructor of BaseBoundary as well)
References distance_, massCrossedBack_, massCrossedForw_, numberOfParticlesCrossedBack_, numberOfParticlesCrossedForw_, scaleFactor_, volumeCrossedBack_, and volumeCrossedForw_.
Referenced by copy().
|
override |
bool FluxBoundary::checkBoundaryAfterParticleMoved | ( | BaseParticle * | p, |
ParticleHandler & | pH | ||
) |
Checks if particle has crossed the boundary and updates the scales if so.
Checks if particle has passed the boundary, and if so, counts it.
[in] | p | pointer to the particle which is to be checked |
[out] | pH | the particle's ParticleHandler |
References BaseParticle::getDisplacement(), getDistance(), BaseParticle::getMass(), BaseInteractable::getPosition(), BaseParticle::getVolume(), massCrossedBack_, massCrossedForw_, numberOfParticlesCrossedBack_, numberOfParticlesCrossedForw_, volumeCrossedBack_, and volumeCrossedForw_.
Referenced by checkBoundaryAfterParticlesMove().
|
overridevirtual |
Runs at the end of each time step.
Reimplemented from BaseBoundary.
References BaseHandler< T >::begin(), checkBoundaryAfterParticleMoved(), and BaseHandler< T >::end().
|
overridevirtual |
Copy method; creates copy on the heap and returns a pointer to it.
Copy function, which creates a copy and returns a pointer to that copy (on the heap)
Implements BaseBoundary.
References FluxBoundary().
Returns the shortest distance between the boundary and given position.
Calculates the shortest distance between the wall and given position.
[in] | position | the position of which the distance should be calculated. |
References distance_, Vec3D::dot(), and normal_.
Referenced by checkBoundaryAfterParticleMoved().
double FluxBoundary::getMassOfParticlesCrossedBack | ( | ) | const |
References massCrossedBack_.
Referenced by FluxAndPeriodicBoundarySelfTest::actionsAfterTimeStep(), and FluxBoundarySelfTest::actionsAfterTimeStep().
double FluxBoundary::getMassOfParticlesCrossedForw | ( | ) | const |
References massCrossedForw_.
Referenced by FluxAndPeriodicBoundarySelfTest::actionsAfterTimeStep(), and FluxBoundarySelfTest::actionsAfterTimeStep().
double FluxBoundary::getMassOfParticlesCrossedNet | ( | ) | const |
References massCrossedBack_, and massCrossedForw_.
Referenced by BoundariesSelfTest::actionsAfterTimeStep().
|
overridevirtual |
Returns the name of the object.
Returns the object's class name (i.e. 'FluxBoundary').
Implements BaseObject.
unsigned int FluxBoundary::getNumberOfParticlesCrossedBack | ( | ) | const |
References numberOfParticlesCrossedBack_.
Referenced by FluxAndPeriodicBoundarySelfTest::actionsAfterTimeStep(), and FluxBoundarySelfTest::actionsAfterTimeStep().
unsigned int FluxBoundary::getNumberOfParticlesCrossedForw | ( | ) | const |
Gets the number of particles that have crossed the boundary.
Returns the number of particles that have crossed in either direction. All of these quantities have to be divided by two, because DPMBase.cc calls DPMBase::checkInteractionWithBoundaries() TWICE in each time step. (The intention is that the first round resolves InsertionBoundaries and the second resolves DeletionBoundaries, but this means FluxBoundaries are updated twice.)
References numberOfParticlesCrossedForw_.
Referenced by FluxAndPeriodicBoundarySelfTest::actionsAfterTimeStep(), and FluxBoundarySelfTest::actionsAfterTimeStep().
unsigned int FluxBoundary::getNumberOfParticlesCrossedNet | ( | ) | const |
References numberOfParticlesCrossedBack_, and numberOfParticlesCrossedForw_.
Referenced by BoundariesSelfTest::actionsAfterTimeStep().
double FluxBoundary::getVolumeOfParticlesCrossedBack | ( | ) | const |
References volumeCrossedBack_.
Referenced by FluxAndPeriodicBoundarySelfTest::actionsAfterTimeStep(), and FluxBoundarySelfTest::actionsAfterTimeStep().
double FluxBoundary::getVolumeOfParticlesCrossedForw | ( | ) | const |
References volumeCrossedForw_.
Referenced by FluxAndPeriodicBoundarySelfTest::actionsAfterTimeStep(), and FluxBoundarySelfTest::actionsAfterTimeStep().
double FluxBoundary::getVolumeOfParticlesCrossedNet | ( | ) | const |
References volumeCrossedBack_, and volumeCrossedForw_.
Referenced by BoundariesSelfTest::actionsAfterTimeStep().
void FluxBoundary::move | ( | Mdouble | distance | ) |
Sets the boundary's distance property to the given one.
Resets the boundary's 'distance' from the origin to be the one given.
[in] | distance | the new 'distance' between boundary and origin. see also comments of FluxBoundary::set(). |
References distance_, and scaleFactor_.
void FluxBoundary::oldRead | ( | std::istream & | is | ) |
Deprecated read method. use FluxBoundary::read() instead.
the deprecated version of the read-method. Should not be used by new users!
References distance_, normal_, and scaleFactor_.
|
overridevirtual |
Reads some boundary properties from an std::istream.
Reads a number of boundary properties from the given std::istream.
[in,out] | is | the istream |
Implements BaseBoundary.
References distance_, normal_, BaseBoundary::read(), and scaleFactor_.
void FluxBoundary::reset | ( | ) |
Resets the counts to zero.
Resets the various counts to zero.
References massCrossedBack_, massCrossedForw_, numberOfParticlesCrossedBack_, numberOfParticlesCrossedForw_, volumeCrossedBack_, and volumeCrossedForw_.
Sets boundary position based on a normal and distance.
Defines the placing of the (2D) boundary based on the given normal and distance.
[in] | normal | boundary normal vector |
[in] | distance | 'distance' between the origin and the boundary, such that the following relation is satisfied: \[ \mathbf{r} \cdot \mathbf{\hat{n}} = d \] in which \( \mathbf{\hat{n}} \) and \( d \) are the given normal vector and distance, respectively. NB: If the distance is the ACTUAL distance from the origin, the normal vector must be of UNIT LENGTH for the placing of the boundary to be done correctly. |
References distance_, Vec3D::dot(), normal_, and scaleFactor_.
Referenced by BoundariesSelfTest::BoundariesSelfTest(), FluxAndPeriodicBoundarySelfTest::FluxAndPeriodicBoundarySelfTest(), and FluxBoundarySelfTest::FluxBoundarySelfTest().
|
overridevirtual |
Writes the boundary properties to an std::ostream.
Writes the boundary properties to an std::ostream.
[out] | os | the ostream the properties are to be written to. |
Implements BaseBoundary.
References distance_, normal_, scaleFactor_, and BaseBoundary::write().
|
private |
The boundary's distance from the origin.
Referenced by FluxBoundary(), getDistance(), move(), oldRead(), read(), set(), and write().
|
private |
|
private |
|
private |
outward unit normal vector
Referenced by getDistance(), oldRead(), read(), set(), and write().
|
private |
|
private |
Number of particles that have been deleted by this boundary.
Referenced by checkBoundaryAfterParticleMoved(), FluxBoundary(), getNumberOfParticlesCrossedForw(), getNumberOfParticlesCrossedNet(), and reset().
|
private |
This is the factor to rescale the given normal vector to a unit vectors.
NB: Not only the normal vector is rescaled by this factor, also the 'distance' from the origin of the boundary is scaled by this factor! Also, once the boundary position is set with FluxBoundary::set(), the arguments of any reset of the distance_ property (i.e. usage of FluxBoundary::move()) will be rescaled by the same factor!
Referenced by FluxBoundary(), move(), oldRead(), read(), set(), and write().
|
private |
|
private |