MercuryDPM
Beta
|
A AxisymmetricIntersectionOfWalls is a axisymmetric wall, defined by rotating a twodimensional IntersectionOfWalls around a symmetry axis. More...
#include <AxisymmetricIntersectionOfWalls.h>
Public Member Functions | |
AxisymmetricIntersectionOfWalls () | |
Default constructor. More... | |
AxisymmetricIntersectionOfWalls (const AxisymmetricIntersectionOfWalls &p) | |
Copy constructor. More... | |
~AxisymmetricIntersectionOfWalls () | |
Destructor. More... | |
AxisymmetricIntersectionOfWalls & | operator= (const AxisymmetricIntersectionOfWalls &other) |
Copy assignment operator. More... | |
AxisymmetricIntersectionOfWalls * | copy () const final |
Wall copy method. It calls the copy constructor of this Wall, useful for polymorphism. More... | |
bool | getDistanceAndNormal (const BaseParticle &P, Mdouble &distance, Vec3D &normal_return) const final |
Computes the distance from the wall for a given BaseParticle and returns true if there is a collision. If there is a collision, also return the normal vector. More... | |
void | read (std::istream &is) final |
reads wall More... | |
void | write (std::ostream &os) const final |
outputs wall More... | |
std::string | getName () const final |
Returns the name of the object. More... | |
BaseInteraction * | getInteractionWith (BaseParticle *P, Mdouble timeStamp, InteractionHandler *interactionHandler) final |
Get the interaction between this AxisymmetricIntersectionOfWalls and a given BaseParticle at a given time. More... | |
Public Member Functions inherited from IntersectionOfWalls | |
IntersectionOfWalls () | |
Default constructor. More... | |
IntersectionOfWalls (const IntersectionOfWalls &other) | |
Copy constructor. More... | |
virtual | ~IntersectionOfWalls () |
Destructor. More... | |
IntersectionOfWalls & | operator= (const IntersectionOfWalls &other) |
IntersectionOfWalls * | copy () const override |
Wall copy method. It calls the copy constructor of this Wall, useful for polymorphism. More... | |
MERCURY_DEPRECATED void | clear () |
Removes all parts of the walls. More... | |
void | addObject (Vec3D normal, Vec3D point) |
Adds a wall to the set of infinite walls, given an outward normal vector s.t. normal*x=normal*point. More... | |
MERCURY_DEPRECATED void | addObject (Vec3D normal, Mdouble position) |
Adds a wall to the set of finite walls, given an outward normal vector s. t. normal*x=position. More... | |
void | createOpenPrism (std::vector< Vec3D > points, Vec3D prismAxis) |
Creates an open prism which is a polygon between the points, except the first and last point, and extends infinitely in the PrismAxis direction. More... | |
void | createPrism (std::vector< Vec3D > points, Vec3D prismAxis) |
Creates an open prism which is a polygon between the points and extends infinitely in the PrismAxis direction. More... | |
void | createOpenPrism (std::vector< Vec3D > points) |
Creates an open prism which is a polygon between the points, except the first and last point, and extends infinitely in the direction perpendicular to the first and second wall. More... | |
void | createPrism (std::vector< Vec3D > points) |
Creates an open prism which is a polygon between the points and extends infinitely in the direction perpendicular to the first and second wall. 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... | |
bool | getDistanceAndNormal (const Vec3D &postition, Mdouble wallInteractionRadius, Mdouble &distance, Vec3D &normal_return) const |
Compute the distance from the wall for a given BaseParticle and return if there is an interaction. If there is an interaction, also return the normal vector. More... | |
void | move (const Vec3D &move) |
Move the IntersectionOfWalls to a new position, which is a Vec3D from the old position. More... | |
void | read (std::istream &is) |
Reads an IntersectionOfWalls from an input stream, for example a restart file. More... | |
void | write (std::ostream &os) const |
Writes an IntersectionOfWalls to an output stream, for example a restart file. More... | |
std::string | getName () const override |
Returns the name of the object, here the string "IntersectionOfWalls". More... | |
BaseInteraction * | getInteractionWith (BaseParticle *p, Mdouble timeStamp, InteractionHandler *interactionHandler) |
Get the interaction between this IntersectionOfWalls and given BaseParticle at a given time. 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... | |
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... | |
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... | |
A AxisymmetricIntersectionOfWalls is a axisymmetric wall, defined by rotating a twodimensional IntersectionOfWalls around a symmetry axis.
A AxisymmetricIntersectionOfWalls can be defined by first defining a twodimensional IntersectionOfWalls in the XZ plane. Then, the object is rotated around the x-axis, creating an three-dimensional axisymmetric wall. Finally, the object is translated by the vector position_ and rotated such that the axis of rotation is the orientation_.
Definition at line 42 of file AxisymmetricIntersectionOfWalls.h.
AxisymmetricIntersectionOfWalls::AxisymmetricIntersectionOfWalls | ( | ) |
Default constructor.
Definition at line 29 of file AxisymmetricIntersectionOfWalls.cc.
Referenced by copy().
AxisymmetricIntersectionOfWalls::AxisymmetricIntersectionOfWalls | ( | const AxisymmetricIntersectionOfWalls & | other | ) |
Copy constructor.
[in] | other | The AxisymmetricIntersectionOfWalls that must be copied. |
Definition at line 37 of file AxisymmetricIntersectionOfWalls.cc.
AxisymmetricIntersectionOfWalls::~AxisymmetricIntersectionOfWalls | ( | ) |
Destructor.
Definition at line 43 of file AxisymmetricIntersectionOfWalls.cc.
|
finalvirtual |
Wall copy method. It calls the copy constructor of this Wall, useful for polymorphism.
Implements BaseWall.
Definition at line 66 of file AxisymmetricIntersectionOfWalls.cc.
References AxisymmetricIntersectionOfWalls().
Referenced by operator=().
|
finalvirtual |
Computes the distance from the wall for a given BaseParticle and returns true if there is a collision. If there is a collision, also return the normal vector.
First, the particle is translated by the vector position_, then the distance normal and tangential to the orientation is computed. This normal and tangential direction is interpreted as the x and z coordinate. With the particle shifted into the XZ plane, the distance and normal is computed, as if the AxisymmetricIntersectionOfWalls would be a simple IntersectionOfWalls. Finally, the object and the normal is rotated back to the original position.
See also AxisymmetricIntersectionOfWalls for details.
Implements BaseWall.
Definition at line 81 of file AxisymmetricIntersectionOfWalls.cc.
References Vec3D::dot(), IntersectionOfWalls::getDistanceAndNormal(), BaseObject::getIndex(), Vec3D::getLength(), BaseInteractable::getOrientation(), BaseInteractable::getPosition(), BaseParticle::getWallInteractionRadius(), logger, WARN, Vec3D::X, and Vec3D::Z.
Referenced by getInteractionWith().
|
finalvirtual |
Get the interaction between this AxisymmetricIntersectionOfWalls and a given BaseParticle at a given time.
[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 146 of file AxisymmetricIntersectionOfWalls.cc.
References getDistanceAndNormal(), InteractionHandler::getInteraction(), BaseInteraction::getNormal(), BaseInteraction::getOverlap(), BaseInteractable::getPosition(), BaseParticle::getRadius(), BaseInteraction::setContactPoint(), BaseInteraction::setDistance(), BaseInteraction::setNormal(), and BaseInteraction::setOverlap().
|
finalvirtual |
Returns the name of the object.
Implements BaseObject.
Definition at line 132 of file AxisymmetricIntersectionOfWalls.cc.
AxisymmetricIntersectionOfWalls & AxisymmetricIntersectionOfWalls::operator= | ( | const AxisymmetricIntersectionOfWalls & | other | ) |
Copy assignment operator.
[in] | other | The AxisymmetricIntersectionOfWalls that must be copied. |
Definition at line 51 of file AxisymmetricIntersectionOfWalls.cc.
References copy().
|
finalvirtual |
reads wall
[in] | is | The input stream from which the AxisymmetricIntersectionOfWalls is read, usually a restart file. |
Implements BaseInteractable.
Definition at line 115 of file AxisymmetricIntersectionOfWalls.cc.
References IntersectionOfWalls::read().
|
finalvirtual |
outputs wall
[in] | os | The output stream where the AxisymmetricIntersectionOfWalls must be written to, usually a restart file. |
Implements BaseInteractable.
Definition at line 124 of file AxisymmetricIntersectionOfWalls.cc.
References IntersectionOfWalls::write().