MercuryDPM  Beta
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
BaseWall Class Referenceabstract

Basic class for walls. More...

#include <BaseWall.h>

+ Inheritance diagram for BaseWall:

Public Member Functions

 BaseWall ()
 Default constructor. It makes an empty BaseWall. More...
 
 BaseWall (const BaseWall &w)
 Copy constructor. More...
 
virtual ~BaseWall ()
 Default destructor. More...
 
virtual BaseWallcopy () const =0
 Pure virtual function that copies a BaseWall. More...
 
void read (std::istream &is)
 Function that reads a BaseWall from an input stream, usually a restart file. More...
 
void write (std::ostream &os) const
 Function that writes a BaseWall to an output stream, usually a restart file. More...
 
virtual MERCURY_DEPRECATED void clear ()
 A function that removes all data from this BaseWall, so sets handler_ to nullptr. More...
 
virtual bool getDistanceAndNormal (const BaseParticle &P, Mdouble &distance, Vec3D &normal_return) const =0
 Pure virtual function that computes the distance of a BaseParticle to this wall and returns the normal of this wall if there is a collision. More...
 
void setHandler (WallHandler *handler)
 A function which sets the WallHandler for this BaseWall. More...
 
WallHandlergetHandler () 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 ParticleSpeciesgetSpecies () const
 Returns a pointer to the species of this BaseInteractable. More...
 
void setSpecies (const ParticleSpecies *species)
 Sets the species of this BaseInteractable. More...
 
const Vec3DgetForce () const
 Returns the force on this BaseInteractable. More...
 
const Vec3DgetTorque () 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 Vec3DgetPosition () const
 Returns the position of this BaseInteractable. More...
 
const Vec3DgetOrientation () 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 Vec3DgetVelocity () const
 Returns the velocity of this interactable. More...
 
virtual const Vec3DgetAngularVelocity () 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 BaseInteractiongetInteractionWith (BaseParticle *P, Mdouble timeStamp, InteractionHandler *interactionHandler)=0
 Returns the interaction between this object and a given BaseParticle. 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 std::string getName () const =0
 A purely virtual function. 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

WallHandlerhandler_
 

Detailed Description

Basic class for walls.

Class from which all walls inherit. Please note the getVelocity can for some walls be dependent on which point on the wall is meant.

Definition at line 39 of file BaseWall.h.

Constructor & Destructor Documentation

BaseWall::BaseWall ( )

Default constructor. It makes an empty BaseWall.

Definition at line 31 of file BaseWall.cc.

References DEBUG, handler_, and logger.

32 {
33  handler_ = nullptr;
34  logger(DEBUG, "BaseWall::BaseWall() finished");
35 }
Logger< MERCURY_LOGLEVEL > logger("MercuryKernel")
WallHandler * handler_
Definition: BaseWall.h:117
BaseWall::BaseWall ( const BaseWall w)

Copy constructor.

Parameters
[in]wWall that must be copied.

Definition at line 40 of file BaseWall.cc.

References DEBUG, handler_, and logger.

41  : BaseInteractable(w)
42 {
43  handler_ = w.handler_;
44  logger(DEBUG, "BaseWall::BaseWall(const BaseWall &p) finished");
45 }
Logger< MERCURY_LOGLEVEL > logger("MercuryKernel")
WallHandler * handler_
Definition: BaseWall.h:117
BaseInteractable()
Default BaseInteractable constructor, it simply creates an empty BaseInteractable.
BaseWall::~BaseWall ( )
virtual

Default destructor.

Definition at line 47 of file BaseWall.cc.

References DEBUG, and logger.

48 {
49  logger(DEBUG, "BaseWall::~BaseWall() finished");
50 }
Logger< MERCURY_LOGLEVEL > logger("MercuryKernel")

Member Function Documentation

void BaseWall::clear ( )
virtual

A function that removes all data from this BaseWall, so sets handler_ to nullptr.

Deprecated:
Please don't use any clear() anymore, it will be gone soon.

Reimplemented in IntersectionOfWalls, InfiniteWallWithHole, and CylindricalWall.

Definition at line 52 of file BaseWall.cc.

References logger, and WARN.

53 {
54  logger(WARN, "BaseWall::clear(), this function shouldn't be called");
55 }
Logger< MERCURY_LOGLEVEL > logger("MercuryKernel")
virtual BaseWall* BaseWall::copy ( ) const
pure virtual

Pure virtual function that copies a BaseWall.

Returns
A pointer to the new BaseWall.

Implemented in Coil, IntersectionOfWalls, AxisymmetricIntersectionOfWalls, InfiniteWall, Screw, InfiniteWallWithHole, and CylindricalWall.

virtual bool BaseWall::getDistanceAndNormal ( const BaseParticle P,
Mdouble distance,
Vec3D normal_return 
) const
pure virtual

Pure virtual function that computes the distance of a BaseParticle to this wall and returns the normal of this wall if there is a collision.

Beware, the distance and normal are output parameters, not return values!

Parameters
[in]PReference to the BaseParticle we want to compute the distance to the BaseWall of.
[out]distanceDistance of the BaseParticle to the BaseWall.
[out]normal_returnThe normal of the wall. Is only given if there is a collision.
Returns
A boolean which indicates if there is a collision between the BaseParticle and the wall.

Implemented in IntersectionOfWalls, InfiniteWall, InfiniteWallWithHole, Coil, AxisymmetricIntersectionOfWalls, CylindricalWall, and Screw.

WallHandler * BaseWall::getHandler ( ) const

A function which returns the WallHandler that handles this BaseWall.

Returns
A pointer to the WallHandler that manages this BaseWall.

Definition at line 85 of file BaseWall.cc.

References handler_.

Referenced by setHandler(), setIndSpecies(), and setSpecies().

86 {
87  return handler_;
88 }
WallHandler * handler_
Definition: BaseWall.h:117
void BaseWall::read ( std::istream &  is)
virtual

Function that reads a BaseWall from an input stream, usually a restart file.

Parameters
[in]isInput stream from which the BaseWall is read.

Implements BaseInteractable.

Reimplemented in IntersectionOfWalls, InfiniteWallWithHole, InfiniteWall, Coil, Screw, and CylindricalWall.

Definition at line 60 of file BaseWall.cc.

References BaseInteractable::read().

Referenced by CylindricalWall::read(), Screw::read(), Coil::read(), InfiniteWall::read(), InfiniteWallWithHole::read(), and IntersectionOfWalls::read().

61 {
63 }
virtual void read(std::istream &is)=0
Reads a BaseInteractable from an input stream.
void BaseWall::setHandler ( WallHandler handler)

A function which sets the WallHandler for this BaseWall.

Parameters
[in]handlerA pointer to the BaseHandler that handles this wall.

Definition at line 76 of file BaseWall.cc.

References getHandler(), BaseInteractable::getIndSpecies(), BaseHandler< T >::getObject(), handler_, and setSpecies().

Referenced by WallHandler::addObject(), and setSpecies().

77 {
78  handler_ = handler;
79  setSpecies(getHandler()->getDPMBase()->speciesHandler.getObject(getIndSpecies()));
80 }
WallHandler * handler_
Definition: BaseWall.h:117
WallHandler * getHandler() const
A function which returns the WallHandler that handles this BaseWall.
Definition: BaseWall.cc:85
T * getObject(const unsigned int id)
Gets a pointer to the Object at the specified index in the BaseHandler.
Definition: BaseHandler.h:415
unsigned int getIndSpecies() const
Returns the index of the Species of this BaseInteractable.
void setSpecies(const ParticleSpecies *species)
Define the species of this wall.
Definition: BaseWall.cc:110
void BaseWall::setIndSpecies ( unsigned int  indSpecies)
virtual

Define the species of this wall using the index of the species in the SpeciesHandler in this DPMBase.

Deprecated:
TW: this function should be taken out and replaced by setSpecies
Parameters
[in]indSpeciesThe index of the species of this BaseWall in the SpeciesHandler.

Reimplemented from BaseInteractable.

Definition at line 93 of file BaseWall.cc.

References getHandler(), BaseInteractable::getIndSpecies(), BaseHandler< T >::getObject(), handler_, BaseInteractable::setIndSpecies(), and setSpecies().

94 {
95  if(handler_!=nullptr)
96  {
97  setSpecies(getHandler()->getDPMBase()->speciesHandler.getObject(getIndSpecies()));
98  }
99  else
100  {
102  }
103 }
WallHandler * handler_
Definition: BaseWall.h:117
WallHandler * getHandler() const
A function which returns the WallHandler that handles this BaseWall.
Definition: BaseWall.cc:85
T * getObject(const unsigned int id)
Gets a pointer to the Object at the specified index in the BaseHandler.
Definition: BaseHandler.h:415
virtual void setIndSpecies(unsigned int indSpecies)
Sets the index of the Species of this BaseInteractable.
unsigned int getIndSpecies() const
Returns the index of the Species of this BaseInteractable.
void setSpecies(const ParticleSpecies *species)
Define the species of this wall.
Definition: BaseWall.cc:110
void BaseWall::setSpecies ( const ParticleSpecies species)

Define the species of this wall.

Todo:
TW: this function should also check if the particle is the correct particle for the species type.
Parameters
[in]speciesThe species this BaseWall is made of.

In addition to the functionality of BaseInteractable::setSpecies, this function sets the pointer to the wallHandler, which is needed to retrieve species information.

Definition at line 110 of file BaseWall.cc.

References BaseHandler< T >::getDPMBase(), BaseSpecies::getHandler(), getHandler(), setHandler(), BaseInteractable::setSpecies(), and DPMBase::wallHandler.

Referenced by setHandler(), and setIndSpecies().

111 {
113 
114  //set pointer to the handler, which is needed to retrieve species information
115  if (getHandler() == nullptr)
116  {
117  SpeciesHandler* sH = species->getHandler();
118  if (sH != nullptr)
119  {
120  DPMBase* dB = sH->getDPMBase();
121  if (dB != nullptr)
122  setHandler(&dB->wallHandler);
123  }
124  }
125 }
Container to store all ParticleSpecies.
The DPMBase header includes quite a few header files, defining all the handlers, which are essential...
Definition: DPMBase.h:61
void setHandler(WallHandler *handler)
A function which sets the WallHandler for this BaseWall.
Definition: BaseWall.cc:76
SpeciesHandler * getHandler() const
Returns the pointer to the handler to which this species belongs.
Definition: BaseSpecies.cc:74
WallHandler * getHandler() const
A function which returns the WallHandler that handles this BaseWall.
Definition: BaseWall.cc:85
void setSpecies(const ParticleSpecies *species)
Sets the species of this BaseInteractable.
WallHandler wallHandler
An object of the class WallHandler. Contains pointers to all the walls created.
Definition: DPMBase.h:883
DPMBase * getDPMBase()
Gets the problem that is solved using this handler.
Definition: BaseHandler.h:512
void BaseWall::write ( std::ostream &  os) const
virtual

Function that writes a BaseWall to an output stream, usually a restart file.

Parameters
[in]osOutput stream the BaseWall has to be written to.

Implements BaseInteractable.

Reimplemented in IntersectionOfWalls, InfiniteWallWithHole, InfiniteWall, Coil, Screw, and CylindricalWall.

Definition at line 68 of file BaseWall.cc.

References BaseInteractable::write().

Referenced by CylindricalWall::write(), Screw::write(), Coil::write(), InfiniteWall::write(), InfiniteWallWithHole::write(), and IntersectionOfWalls::write().

69 {
71 }
virtual void write(std::ostream &os) const =0
Write a BaseInteractable to an output stream.

Member Data Documentation

WallHandler* BaseWall::handler_
private

A pointer to the WallHandler that handles this BaseWall.

Definition at line 117 of file BaseWall.h.

Referenced by BaseWall(), getHandler(), setHandler(), and setIndSpecies().


The documentation for this class was generated from the following files: