![]() |
|
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 Mdouble &distanceFromOrigin, const Vec3D &position) const |
Returns the shortest distance between the boundary at a given separation from the origin and given position. More... | |
Mdouble | getDistance (const Vec3D &position) const |
Returns the shortest distance between the boundary and given position. More... | |
Mdouble | getPreviousDistance (const Vec3D &position) const |
Returns the shortest distance between the boundary and given position as it was in the previous timestep. 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... | |
void | setPrescribedDistance (std::function< Mdouble(double)> prescribedDistance) |
Sets the prescribed distance function. 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 | 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... | |
![]() | |
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... | |
Mdouble | previousDistance_ |
The boundary's distance from the origin in the previous timestep). 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_ |
std::function< Mdouble(double)> | prescribedDistance_ |
A function which sets the distance of the boundary from the origin. More... | |
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_, prescribedDistance_, previousDistance_, 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 getDistance(), getPreviousDistance(), massCrossedBack_, massCrossedForw_, numberOfParticlesCrossedBack_, numberOfParticlesCrossedForw_, p, volumeCrossedBack_, and volumeCrossedForw_.
Referenced by checkBoundaryAfterParticlesMove().
|
overridevirtual |
Runs at the end of each time step.
Reimplemented from BaseBoundary.
References BaseHandler< T >::begin(), checkBoundaryAfterParticleMoved(), distance_, BaseHandler< T >::end(), BaseBoundary::getHandler(), p, prescribedDistance_, and previousDistance_.
|
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().
Mdouble FluxBoundary::getDistance | ( | const Mdouble & | distanceFromOrigin, |
const Vec3D & | position | ||
) | const |
Returns the shortest distance between the boundary at a given separation from the origin and given position.
References Vec3D::dot(), and normal_.
Referenced by checkBoundaryAfterParticleMoved(), getDistance(), and getPreviousDistance().
Returns the shortest distance between the boundary and given position.
[in] | position | the position of which the distance should be calculated. |
References distance_, and getDistance().
double FluxBoundary::getMassOfParticlesCrossedBack | ( | ) | const |
References massCrossedBack_.
Referenced by FluxAndPeriodicBoundarySelfTest::actionsAfterTimeStep(), FluxBoundarySelfTest::actionsAfterTimeStep(), and main().
double FluxBoundary::getMassOfParticlesCrossedForw | ( | ) | const |
References massCrossedForw_.
Referenced by FluxAndPeriodicBoundarySelfTest::actionsAfterTimeStep(), FluxBoundarySelfTest::actionsAfterTimeStep(), and main().
double FluxBoundary::getMassOfParticlesCrossedNet | ( | ) | const |
References massCrossedBack_, and massCrossedForw_.
Referenced by BoundariesSelfTest::actionsAfterTimeStep(), and main().
|
overridevirtual |
Returns the name of the object.
Returns the object's class name (i.e. 'FluxBoundary').
Implements BaseObject.
References numberOfParticlesCrossedBack_.
Referenced by FluxAndPeriodicBoundarySelfTest::actionsAfterTimeStep(), FluxBoundarySelfTest::actionsAfterTimeStep(), and main().
Gets the number of particles that have crossed the boundary.
Returns the number of particles that have crossed in either direction.
References numberOfParticlesCrossedForw_.
Referenced by FluxAndPeriodicBoundarySelfTest::actionsAfterTimeStep(), FluxBoundarySelfTest::actionsAfterTimeStep(), and main().
References numberOfParticlesCrossedBack_, and numberOfParticlesCrossedForw_.
Referenced by BoundariesSelfTest::actionsAfterTimeStep(), and main().
Returns the shortest distance between the boundary and given position as it was in the previous timestep.
[in] | position | the position of which the distance should be calculated. |
References getDistance(), and previousDistance_.
Referenced by checkBoundaryAfterParticleMoved().
double FluxBoundary::getVolumeOfParticlesCrossedBack | ( | ) | const |
References volumeCrossedBack_.
Referenced by FluxAndPeriodicBoundarySelfTest::actionsAfterTimeStep(), FluxBoundarySelfTest::actionsAfterTimeStep(), and main().
double FluxBoundary::getVolumeOfParticlesCrossedForw | ( | ) | const |
References volumeCrossedForw_.
Referenced by FluxAndPeriodicBoundarySelfTest::actionsAfterTimeStep(), FluxBoundarySelfTest::actionsAfterTimeStep(), and main().
double FluxBoundary::getVolumeOfParticlesCrossedNet | ( | ) | const |
References volumeCrossedBack_, and volumeCrossedForw_.
Referenced by BoundariesSelfTest::actionsAfterTimeStep(), and main().
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_, scaleFactor_, and oomph::Global_string_for_annotation::string().
|
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_, logger, normal_, previousDistance_, BaseBoundary::read(), scaleFactor_, oomph::Global_string_for_annotation::string(), and WARN.
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(), WallFunction::normal(), normal_, previousDistance_, scaleFactor_, and sqrt().
Referenced by BoundariesSelfTest::BoundariesSelfTest(), FluxAndPeriodicBoundarySelfTest::FluxAndPeriodicBoundarySelfTest(), FluxBoundarySelfTest::FluxBoundarySelfTest(), FluxBoundaryPrescribedDistanceUnitTest::setupInitialConditions(), and FluxBoundaryUnitTest::setupInitialConditions().
Sets the prescribed distance function.
References prescribedDistance_.
Referenced by FluxBoundaryPrescribedDistanceUnitTest::setupInitialConditions().
|
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_, prescribedDistance_, previousDistance_, scaleFactor_, and BaseBoundary::write().
|
private |
The boundary's distance from the origin.
Referenced by checkBoundaryAfterParticlesMove(), FluxBoundary(), getDistance(), move(), oldRead(), read(), set(), and write().
|
private |
|
private |
|
private |
outward unit normal vector
Referenced by getDistance(), oldRead(), read(), set(), and write().
Number of particles that have been deleted by this boundary.
Referenced by checkBoundaryAfterParticleMoved(), FluxBoundary(), getNumberOfParticlesCrossedForw(), getNumberOfParticlesCrossedNet(), and reset().
A function which sets the distance of the boundary from the origin.
Referenced by checkBoundaryAfterParticlesMove(), FluxBoundary(), setPrescribedDistance(), and write().
|
private |
The boundary's distance from the origin in the previous timestep).
This is necessary to catch transitions from particles, if the Boundary is moving
Referenced by checkBoundaryAfterParticlesMove(), FluxBoundary(), getPreviousDistance(), read(), set(), and write().
|
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 |