MercuryDPM
Beta
|
This is a class defining walls. More...
#include <InfiniteWall.h>
Public Member Functions | |
InfiniteWall () | |
Default constructor, the normal is infinitely long. More... | |
InfiniteWall (const InfiniteWall &w) | |
Copy constructor, copy the given wall. More... | |
virtual | ~InfiniteWall () |
Default destructor. More... | |
InfiniteWall * | copy () const override |
Wall copy method. It calls the copy constructor of this Wall, useful for polymorphism. More... | |
void | set (Vec3D normal, Vec3D point) |
Defines a standard wall, given an outward normal vector s.t. normal*x=normal*point for all x of the wall. More... | |
void | setNormal (const Vec3D normal) |
Changes the normal of the InfiniteWall. More... | |
MERCURY_DEPRECATED void | set (Vec3D normal, Mdouble position) |
Defines a standard wall by computing normal*position = point and using the overloaded function set(Vec3D, vec3D). More... | |
MERCURY_DEPRECATED void | move (Mdouble position) |
Move the wall to a new position by giving the new position in the direction of the unit normal vector. More... | |
Mdouble | getDistance (const Vec3D &otherPosition) const |
Returns the distance of the wall to the particle. More... | |
bool | getDistanceAndNormal (const BaseParticle &p, Mdouble &distance, Vec3D &normal_return) const override |
Compute the distance from the wall for a given BaseParticle and return if there is a collision. If there is a collision, also return the normal vector. More... | |
void | read (std::istream &is) |
Reads InfiniteWall from a restart file. More... | |
void | oldRead (std::istream &is) |
Reads InfiniteWall from an old-style restart file. More... | |
void | write (std::ostream &os) const |
Writes the InfiniteWall to an output stream, usually a restart file. More... | |
std::string | getName () const override |
Returns the name of the object, in this case the string "InfiniteWall". More... | |
Vec3D | getNormal () const |
Access function for normal. More... | |
BaseInteraction * | getInteractionWith (BaseParticle *p, Mdouble timeStamp, InteractionHandler *interactionHandler) |
Look up the interaction between this wall and a BaseParticle at a certain timeStamp. More... | |
Public Member Functions inherited from BaseWall | |
BaseWall () | |
Default constructor. It makes an empty BaseWall. More... | |
BaseWall (const BaseWall &w) | |
Copy constructor. More... | |
virtual | ~BaseWall () |
Default destructor. More... | |
virtual MERCURY_DEPRECATED void | clear () |
A function that removes all data from this BaseWall, so sets handler_ to nullptr. More... | |
void | setHandler (WallHandler *handler) |
A function which sets the WallHandler for this BaseWall. More... | |
WallHandler * | getHandler () const |
A function which returns the WallHandler that handles this BaseWall. More... | |
void | setIndSpecies (unsigned int indSpecies) |
Define the species of this wall using the index of the species in the SpeciesHandler in this DPMBase. More... | |
void | setSpecies (const ParticleSpecies *species) |
Define the species of this wall. More... | |
Public Member Functions inherited from BaseInteractable | |
BaseInteractable () | |
Default BaseInteractable constructor, it simply creates an empty BaseInteractable. More... | |
BaseInteractable (const BaseInteractable &p) | |
Copy constructor. It copies the BaseInteractable and all objects it contains. More... | |
virtual | ~BaseInteractable () |
Destructor, it simply destructs the BaseInteractable and all the objects it contains. More... | |
unsigned int | getIndSpecies () const |
Returns the index of the Species of this BaseInteractable. More... | |
const ParticleSpecies * | getSpecies () const |
Returns a pointer to the species of this BaseInteractable. More... | |
void | setSpecies (const ParticleSpecies *species) |
Sets the species of this BaseInteractable. More... | |
const Vec3D & | getForce () const |
Returns the force on this BaseInteractable. More... | |
const Vec3D & | getTorque () const |
Returns the torque on this BaseInteractable. More... | |
void | setForce (Vec3D force) |
Sets the force on this BaseInteractable. More... | |
void | setTorque (Vec3D torque) |
Sets the torque on this BaseInteractable. More... | |
void | addForce (Vec3D addForce) |
Adds an amount to the force on this BaseInteractable. More... | |
void | addTorque (Vec3D addTorque) |
Adds an amount to the torque on this BaseInteractable. More... | |
const Vec3D & | getPosition () const |
Returns the position of this BaseInteractable. More... | |
const Vec3D & | getOrientation () const |
Returns the orientation of this BaseInteractable. More... | |
void | setPosition (const Vec3D &position) |
Sets the position of this BaseInteractable. More... | |
void | setOrientation (const Vec3D &orientation) |
Sets the orientation of this BaseInteractable. More... | |
virtual void | move (const Vec3D &move) |
Moves this BaseInteractable by adding an amount to the position. More... | |
void | rotate (const Vec3D &rotate) |
Rotates this BaseInteractable. More... | |
const std::list < BaseInteraction * > & | getInteractions () const |
Returns a reference to the list of interactions in this BaseInteractable. More... | |
void | addInteraction (BaseInteraction *I) |
Adds an interaction to this BaseInteractable. More... | |
bool | removeInteraction (BaseInteraction *I) |
Removes an interaction from this BaseInteractable. More... | |
void | copyInteractionsForPeriodicParticles (const BaseInteractable &p) |
Copies interactions to this BaseInteractable whenever a periodic copy made. More... | |
void | setVelocity (const Vec3D &velocity) |
set the velocity of the BaseInteractable. More... | |
void | setAngularVelocity (const Vec3D &angularVelocity) |
set the angular velocity of the BaseInteractble. More... | |
void | addVelocity (const Vec3D &velocity) |
adds an increment to the velocity. More... | |
void | addAngularVelocity (const Vec3D &angularVelocity) |
add an increment to the angular velocity. More... | |
virtual const Vec3D & | getVelocity () const |
Returns the velocity of this interactable. More... | |
virtual const Vec3D & | getAngularVelocity () const |
Returns the angular velocity of this interactable. More... | |
void | setPrescribedPosition (std::function< Vec3D(double)> prescribedPosition) |
Allows the position of an infinite mass interactable to be prescribed. More... | |
void | applyPrescribedPosition (double time) |
Computes the position from the user defined prescribed position function. More... | |
void | setPrescribedVelocity (std::function< Vec3D(double)> prescribedVelocity) |
Allows the velocity of an infinite mass interactable to be prescribed. More... | |
void | applyPrescribedVelocity (double time) |
Computes the velocity from the user defined prescribed velocity function. More... | |
void | setPrescribedOrientation (std::function< Vec3D(double)> prescribedOrientation) |
Allows the orientation of the infinite mass interactbale to be prescribed. More... | |
void | applyPrescribedOrientation (double time) |
Computes the orientation from the user defined prescribed orientation function. More... | |
void | setPrescribedAngularVelocity (std::function< Vec3D(double)> prescribedAngularVelocity) |
Allows the angular velocity of the infinite mass interactable to be prescribed. More... | |
void | applyPrescribedAngularVelocity (double time) |
Computes the angular velocity from the user defined prescribed angular velocity. More... | |
virtual const Vec3D | getVelocityAtContact (const Vec3D &contact) const |
Returns the velocity at the contact point, use by many force laws. More... | |
void | integrateBeforeForceComputation (double time, double timeStep) |
This is part of integrate routine for objects with infinite mass. More... | |
void | integrateAfterForceComputation (double time, double timeStep) |
This is part of the integration routine for objects with infinite mass. More... | |
Public Member Functions inherited from BaseObject | |
BaseObject () | |
Default constructor. More... | |
BaseObject (const BaseObject &p) | |
Copy constructor, copies all the objects BaseObject contains. More... | |
virtual | ~BaseObject () |
virtual destructor More... | |
virtual void | moveInHandler (const unsigned int index) |
Except that it is virtual, it does the same thing as setIndex() does. More... | |
void | setIndex (const unsigned int index) |
Allows one to assign an index to an object in the handler/container. More... | |
void | setId (const unsigned int 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... | |
Private Attributes | |
Vec3D | normal_ |
Mdouble | factor_ |
This is a class defining walls.
It defines the interaction of regular walls and periodic walls with particles as defined in Particle Modifications:
A standard wall is a plane defined as {x: normal*x=position}, with normal being the outward unit normal vector of the wall.
Please note that this wall is infinite and straight. A particle touches an infinite wall if position-normal*x<=radius.
Definition at line 43 of file InfiniteWall.h.
InfiniteWall::InfiniteWall | ( | ) |
InfiniteWall::InfiniteWall | ( | const InfiniteWall & | w | ) |
Copy constructor, copy the given wall.
[in] | w | InfiniteWall that has to be copied. |
First copy the attributes of the BaseWall, then copy the ones that are specific for the InfiniteWall.
Definition at line 43 of file InfiniteWall.cc.
References DEBUG, factor_, logger, and normal_.
|
virtual |
Default destructor.
Definition at line 51 of file InfiniteWall.cc.
|
overridevirtual |
Wall copy method. It calls the copy constructor of this Wall, useful for polymorphism.
Wall copy method. It calls the copy constructor of this Wall, useful for polymorphism
Implements BaseWall.
Definition at line 59 of file InfiniteWall.cc.
References InfiniteWall().
Returns the distance of the wall to the particle.
[in] | otherPosition | The position to which the distance must be computed to. |
Definition at line 111 of file InfiniteWall.cc.
References Vec3D::dot(), BaseInteractable::getPosition(), and normal_.
Referenced by getDistanceAndNormal(), and getInteractionWith().
|
overridevirtual |
Compute the distance from the wall for a given BaseParticle and return if there is a collision. If there is a collision, also return the normal vector.
[in] | p | BaseParticle for which the distance to the wall must be computed. |
[out] | distance | Distance between the particle and the wall. |
[out] | normal_return | The normal of this wall, will only be set if there is a collision. |
First the distance is checked. If there is no collision, this function will return false and give the distance. If there is a collision, the function will return true and give the distance and the normal vector of this wall. Since this function should be called before calculating any Particle-Wall interactions, it can also be used to set the normal vector in case of curved walls.
Implements BaseWall.
Definition at line 128 of file InfiniteWall.cc.
References getDistance(), BaseInteractable::getPosition(), BaseParticle::getWallInteractionRadius(), and normal_.
|
virtual |
Look up the interaction between this wall and a BaseParticle at a certain timeStamp.
[in] | p | Pointer to the BaseParticle which we want to check the interaction for. |
[in] | timeStamp | The time at which we want to look at the interaction. |
[in] | interactionHandler | A pointer to the InteractionHandler in which the interaction can be found. |
Implements BaseInteractable.
Definition at line 194 of file InfiniteWall.cc.
References getDistance(), InteractionHandler::getInteraction(), BaseInteraction::getNormal(), BaseInteraction::getOverlap(), BaseInteractable::getPosition(), BaseParticle::getRadius(), normal_, BaseInteraction::setContactPoint(), BaseInteraction::setDistance(), BaseInteraction::setNormal(), and BaseInteraction::setOverlap().
|
overridevirtual |
Returns the name of the object, in this case the string "InfiniteWall".
Implements BaseObject.
Definition at line 174 of file InfiniteWall.cc.
Vec3D InfiniteWall::getNormal | ( | ) | const |
Access function for normal.
Definition at line 182 of file InfiniteWall.cc.
References normal_.
void InfiniteWall::move | ( | Mdouble | positionInNormalDirection | ) |
Move the wall to a new position by giving the new position in the direction of the unit normal vector.
[in] | positionInNormalDirection | The position of the wall in the direction of the normal vector. |
Definition at line 101 of file InfiniteWall.cc.
References factor_, logger, normal_, BaseInteractable::setPosition(), and WARN.
void InfiniteWall::oldRead | ( | std::istream & | is | ) |
Reads InfiniteWall from an old-style restart file.
[in] | is | The input stream from which the InfiniteWall old style is read. |
Definition at line 151 of file InfiniteWall.cc.
References normal_, BaseInteractable::setPosition(), and BaseInteractable::setVelocity().
|
virtual |
Reads InfiniteWall from a restart file.
[in] | is | The input stream from which the InfiniteWall is read. |
Reimplemented from BaseWall.
Definition at line 140 of file InfiniteWall.cc.
References factor_, normal_, and BaseWall::read().
Defines a standard wall, given an outward normal vector s.t. normal*x=normal*point for all x of the wall.
Definition at line 70 of file InfiniteWall.cc.
References setNormal(), and BaseInteractable::setPosition().
Referenced by Chute::createBottom(), WallHandler::readOldObject(), DPMBase::readParAndIniFiles(), set(), ChuteBottom::setupInitialConditions(), and Chute::setupSideWalls().
Defines a standard wall by computing normal*position = point and using the overloaded function set(Vec3D, vec3D).
Defines a standard wall, given an outward normal vector s. t. normal*x=position
[in] | normal | A Vec3D that represents the normal vector to the wall. |
[in] | positionInNormalDirection | The position of the wall in the direction of the normal vector. |
Definition at line 91 of file InfiniteWall.cc.
References logger, set(), and WARN.
void InfiniteWall::setNormal | ( | const Vec3D | normal | ) |
Changes the normal of the InfiniteWall.
[in] | normal | The vector normal to the wall. |
Definition at line 79 of file InfiniteWall.cc.
References factor_, Vec3D::getLength(), and normal_.
Referenced by set().
|
virtual |
Writes the InfiniteWall to an output stream, usually a restart file.
[in] | os | The output stream the InfiniteWall is written to. |
Reimplemented from BaseWall.
Definition at line 164 of file InfiniteWall.cc.
References factor_, normal_, and BaseWall::write().
|
private |
This is the factor used to rescale the normal given by the user to a unit vector. It is only used by the deprecated function move(Mdouble).
Definition at line 145 of file InfiniteWall.h.
Referenced by InfiniteWall(), move(), read(), setNormal(), and write().
|
private |
Outward normal vector. This does not have to be a unit vector.
Definition at line 139 of file InfiniteWall.h.
Referenced by getDistance(), getDistanceAndNormal(), getInteractionWith(), getNormal(), InfiniteWall(), move(), oldRead(), read(), setNormal(), and write().