NuTo
Numerics Tool
|
base class for walls More...
#include <CollidableWallBase.h>
Public Member Functions | |
CollidableWallBase (Eigen::VectorXd rPosition, Eigen::VectorXd rDirection, int rIndex) | |
constructor, create CollidableWallBase using the point-and-normal-vector plane definition More... | |
virtual | ~CollidableWallBase () |
destructor, do nothing More... | |
void | SetBoxes (SubBox &rInsideBox, SubBox &rOutsideBox) |
every wall should know its box and the neighbour box More... | |
void | PerformCollision (CollidableBase &rCollidable) override |
collision between CollidableWall and CollidableBase, resolve double dispatch, forward *this More... | |
virtual void | PerformCollision (CollidableParticleSphere &rSphere) override=0 |
collision between CollidableWall and CollidableSphere, pass to child classes More... | |
void | PerformCollision (CollidableWallBase &rWall) override |
collision between CollidableWall and CollidableWall, does nothing More... | |
double | PredictCollision (CollidableBase &rCollidable, int &rType) override |
collision check between CollidableWall and CollidableBase, resolve double dispatch, forward *this More... | |
virtual double | PredictCollision (CollidableParticleSphere &rSphere, int &rType) override=0 |
collision check between CollidableWall and CollidableSphere, pass to child classes More... | |
double | PredictCollision (CollidableWallBase &rWall, int &rType) override |
collision check between CollidableWall and CollidableWall, does nothing More... | |
void | MoveAndGrow (double) override |
walls to neither grow nor move, do nothing More... | |
virtual bool | IsPhysical () const =0 |
ture for physical walls More... | |
virtual void | VisualizationStatic (Visualize::UnstructuredGrid &rVisualizer) const |
visualize all non-moving collidables More... | |
void | GetLocalEventsToDelete (LocalEvents &) const override |
does nothing as all other wall events are still legal More... | |
virtual bool | IsInside (const CollidableParticleSphere &rSphere) const |
returns whether a sphere is on the positive side of this wall More... | |
const Eigen::Vector3d & | GetDirection () const |
getter for the wall direction More... | |
const Eigen::Vector3d & | GetPosition () const |
getter fot the wall position More... | |
Public Member Functions inherited from NuTo::CollidableBase | |
CollidableBase (int rIndex) | |
constructor, initialized with an index More... | |
virtual | ~CollidableBase () |
destructor More... | |
int | GetIndex () const |
getter for collidable index More... | |
void | AddBox (SubBox &rBox) |
adds a SubBox to this collidable More... | |
void | RemoveBox (SubBox &rBox) |
removes a SubBox from this collidable More... | |
void | PrintLocalEvents () const |
prints the local event list More... | |
const std::vector< SubBox * > & | GetSubBoxes () const |
returns all the SubBoxes of this collidable More... | |
Protected Member Functions | |
virtual void | Print (std::ostream &rReturnStream) const override |
prints CollidableWall More... | |
Protected Attributes | |
Eigen::Vector3d | mPosition |
point of the point-and-normal-vector plane definition More... | |
Eigen::Vector3d | mDirection |
normal vector of the point-and-normal-vector plane definition More... | |
SubBox * | mInsideBox |
box on the inner side of the wall More... | |
SubBox * | mOutsideBox |
box on the outer side of the wall More... | |
int | mNonNullAxis |
index of the direction component that is != 0 More... | |
bool | mIsAxisAligned |
true –> calculations without vector calculations More... | |
Protected Attributes inherited from NuTo::CollidableBase | |
int | mIndex |
index, just a name for each collidable, multiple collidables with the same index possible More... | |
std::vector< SubBox * > | mBoxes |
list of SubBoxes in which this collidable is inside if the collidable is passing a virutal sub box wall, multiple mBoxes are possible More... | |
LocalEvents | mLocalEvents |
local event list adding single event: through EventBase::AddLocalEvents() remove single event: through EventBase::~EventBase() clear everything: on collision More... | |
Additional Inherited Members | |
Public Types inherited from NuTo::CollidableBase | |
typedef std::vector< CollidableParticleSphere * > | ParticleContainer |
base class for walls
NuTo::CollidableWallBase::CollidableWallBase | ( | Eigen::VectorXd | rPosition, |
Eigen::VectorXd | rDirection, | ||
int | rIndex | ||
) |
constructor, create CollidableWallBase using the point-and-normal-vector plane definition
rPosition | point on the plane |
rDirection | normal vector pointing inside the domain, gets normalized. |
rIndex | name |
|
virtual |
destructor, do nothing
const Eigen::Vector3d & NuTo::CollidableWallBase::GetDirection | ( | ) | const |
getter for the wall direction
|
inlineoverridevirtual |
does nothing as all other wall events are still legal
Implements NuTo::CollidableBase.
const Eigen::Vector3d & NuTo::CollidableWallBase::GetPosition | ( | ) | const |
getter fot the wall position
|
virtual |
returns whether a sphere is on the positive side of this wall
rSphere | sphere to test |
Reimplemented in NuTo::CollidableWallCylinder.
|
pure virtual |
ture for physical walls
Implemented in NuTo::CollidableWallVirtual, NuTo::CollidableWallCylinder, and NuTo::CollidableWallPhysical.
|
inlineoverridevirtual |
walls to neither grow nor move, do nothing
Implements NuTo::CollidableBase.
|
overridevirtual |
collision between CollidableWall and CollidableBase, resolve double dispatch, forward *this
rCollidable | collision partner |
Implements NuTo::CollidableBase.
|
overridepure virtual |
collision between CollidableWall and CollidableSphere, pass to child classes
rSphere | collision partner |
Implements NuTo::CollidableBase.
Implemented in NuTo::CollidableWallVirtual, NuTo::CollidableWallCylinder, and NuTo::CollidableWallPhysical.
|
overridevirtual |
collision between CollidableWall and CollidableWall, does nothing
rWall | collision partner |
Implements NuTo::CollidableBase.
|
overridevirtual |
collision check between CollidableWall and CollidableBase, resolve double dispatch, forward *this
rCollidable | possible collision partner |
rType | return argument, element of enum CollidableBase::EventType |
Implements NuTo::CollidableBase.
|
overridepure virtual |
collision check between CollidableWall and CollidableSphere, pass to child classes
rSphere | possible collision partner |
rType | return argument, element of enum CollidableBase::EventType |
Implements NuTo::CollidableBase.
Implemented in NuTo::CollidableWallVirtual, NuTo::CollidableWallCylinder, and NuTo::CollidableWallPhysical.
|
overridevirtual |
collision check between CollidableWall and CollidableWall, does nothing
rWall | possible collision partner |
rType | return argument, element of enum CollidableBase::EventType |
Implements NuTo::CollidableBase.
|
overrideprotectedvirtual |
prints CollidableWall
rReturnStream | output stream, that gets modified |
Implements NuTo::CollidableBase.
Reimplemented in NuTo::CollidableWallCylinder.
every wall should know its box and the neighbour box
rInsideBox | box on the inner side of the wall |
rOutsideBox | box on the outer side of the wall |
|
virtual |
visualize all non-moving collidables
rVisualizer | NuTo object for ascii-export |
Reimplemented in NuTo::CollidableWallCylinder.
|
protected |
normal vector of the point-and-normal-vector plane definition
|
protected |
box on the inner side of the wall
|
protected |
true –> calculations without vector calculations
|
protected |
index of the direction component that is != 0
|
protected |
box on the outer side of the wall
|
protected |
point of the point-and-normal-vector plane definition