walberla::pe::Ellipsoid Class Reference

Detailed Description

Base class for the Ellipsoid geometry.

The Ellipsoid class represents the base class for the Ellipsoid geometry. It provides the basic functionality of a Ellipsoid. An Ellipsoid is obtained from a sphere by deforming it by means of directional scalings. Its three semi-axes corresponding to the x, y, z direction are labeled a, b, c.

#include <Ellipsoid.h>

+ Inheritance diagram for walberla::pe::Ellipsoid:

Public Member Functions

Constructors
 Ellipsoid (id_t sid, id_t uid, const Vec3 &gpos, const Quat &q, const Vec3 &semiAxes, MaterialID material, const bool global, const bool communicating, const bool infiniteMass)
 Constructor for the Ellipsoid class. More...
 
 Ellipsoid (id_t const typeID, id_t sid, id_t uid, const Vec3 &rpos, const Quat &q, const Vec3 &semiAxes, MaterialID material, const bool global, const bool communicating, const bool infiniteMass)
 
Destructor
virtual ~Ellipsoid ()
 Destructor for the Ellipsoid class. More...
 
Output functions
virtual void print (std::ostream &os, const char *tab) const
 Output of the current state of a Ellipsoid. More...
 
- Public Member Functions inherited from walberla::pe::GeomPrimitive
MaterialID getMaterial () const
 Returns the material of the geometric primitive. More...
 
- Public Member Functions inherited from walberla::pe::RigidBody
virtual ~RigidBody ()=0
 Destructor for the RigidBody class. More...
 
void wake ()
 Waking the rigid body and ending the sleep mode. More...
 
void calcMotion ()
 Calculating the current motion of a rigid body. More...
 
bool hasManager () const
 Returns whether the rigid body currently has a supervising rigid body manager. More...
 
ManagerID getManager ()
 Returns the supervising rigid body manager of the rigid body. More...
 
ConstManagerID getManager () const
 
bool hasSuperBody () const
 Returns whether the rigid body is contained in a superordinate body. More...
 
BodyID getSuperBody ()
 Returns the superordinate body in which the rigid body is contained. More...
 
ConstBodyID getSuperBody () const
 
BodyID getTopSuperBody ()
 Returns the top level superordinate body in which the rigid body is contained. More...
 
ConstBodyID getTopSuperBody () const
 
virtual bool hasSubBodies () const
 
bool isFinite () const
 Returns whether the rigid body is finite or not. More...
 
bool isAwake () const
 Returns whether the rigid body is awake or not. More...
 
bool isFixed () const
 Returns whether the rigid body's position is fixed or not. More...
 
bool hasInfiniteMass () const
 Checks if a body is "mobile" e.g. More...
 
bool isVisible () const
 Returns whether the rigid body is visible or not. More...
 
bool isMarkedForDeletion () const
 
id_t getSystemID () const
 Returns the unique system-specific ID of the rigid body. More...
 
id_t getID () const
 Returns the user-specific ID of the rigid body. More...
 
const Vec3 getRelPosition () const
 Returns the relative position of the rigid body within the superordinate body. More...
 
const Vec3 getPosition () const
 Returns the global position of the center of mass of the rigid body. More...
 
const Vec3 getBodyLinearVel () const
 Returns the relative linear velocity of the rigid body. More...
 
const Vec3 getLinearVel () const
 Returns the global linear velocity of the rigid body. More...
 
const Vec3 getBodyAngularVel () const
 Returns the relative angular velocity. More...
 
const Vec3getAngularVel () const
 Returns the global angular velocity. More...
 
const Quat getRelQuaternion () const
 Returns the relative orientation of the rigid body to its superbody. More...
 
const Quat getQuaternion () const
 Returns the orientation of the rigid body. More...
 
const Mat3 getRotation () const
 Returns the rotation of the rigid body. More...
 
real_t getMass () const
 Returns the total mass of the rigid body. More...
 
real_t getInvMass () const
 Returns the inverse total mass of the rigid body. More...
 
const Mat3getBodyInertia () const
 Returns the moment of inertia in reference to the body frame of the rigid body. More...
 
const Mat3 getInertia () const
 Returns the moment of inertia in reference to the global world frame. More...
 
const Mat3getInvBodyInertia () const
 Returns the inverse moment of inertia in reference to the body frame of the rigid body. More...
 
const Mat3 getInvInertia () const
 Returns the inverse moment of inertia in reference to the global world frame. More...
 
const AABB & getAABB () const
 Returns the axis-aligned bounding box of the rigid body. More...
 
real_t getAABBSize () const
 Returns the length of the longest side of the AABB of the rigid body. More...
 
real_t getKineticEnergy () const
 Returns the kinetic energy of the rigid body. More...
 
real_t getRotationalEnergy () const
 Returns the rotational energy of the rigid body. More...
 
real_t getEnergy () const
 Returns the energy of the rigid body. More...
 
const Vec3 vectorFromBFtoWF (real_t vx, real_t vy, real_t vz) const
 Transformation from a relative to a global vector. More...
 
const Vec3 vectorFromBFtoWF (const Vec3 &v) const
 Transformation from a relative to a global vector. More...
 
const Vec3 pointFromBFtoWF (real_t px, real_t py, real_t pz) const
 Transformation from a relative to a global coordinate. More...
 
const Vec3 pointFromBFtoWF (const Vec3 &rpos) const
 Transformation from a relative to a global coordinate. More...
 
virtual Vec3 velFromBF (real_t px, real_t py, real_t pz) const
 Calculation of the global velocity of a relative point. More...
 
virtual Vec3 velFromBF (const Vec3 &rpos) const
 Calculation of the global velocity of a relative point. More...
 
const Vec3 vectorFromWFtoBF (real_t vx, real_t vy, real_t vz) const
 Transformation from a global to a relative vector. More...
 
const Vec3 vectorFromWFtoBF (const Vec3 &v) const
 Transformation from a global to a relative vector. More...
 
const Vec3 pointFromWFtoBF (real_t px, real_t py, real_t pz) const
 Transformation from a global to a relative coordinate. More...
 
const Vec3 pointFromWFtoBF (const Vec3 &gpos) const
 Transformation from a global to a relative coordinate. More...
 
virtual Vec3 velFromWF (real_t px, real_t py, real_t pz) const
 Calculation of the global velocity of a point in global coordinates. More...
 
virtual Vec3 velFromWF (const Vec3 &gpos) const
 Calculation of the global velocity of a point in global coordinates. More...
 
const Vec3 accFromWF (real_t px, real_t py, real_t pz) const
 Calculation of the global acceleration of a point in global coordinates. More...
 
const Vec3 accFromWF (const Vec3 &gpos) const
 Calculation of the global acceleration of a point in global coordinates. More...
 
id_t getTypeID () const
 
void translate (real_t dx, real_t dy, real_t dz)
 Translation of the center of mass of the rigid body by the displacement vector. More...
 
void translate (const Vec3 &dp)
 Translation of the center of mass of the rigid body by the displacement vector dp. More...
 
void rotate (real_t x, real_t y, real_t z, real_t angle)
 Rotation of the rigid body around the global rotation axis (x,y,z) by the rotation angle angle. More...
 
void rotate (const Vec3 &axis, real_t angle)
 Rotation of the rigid body around the specified global rotation axis by the rotation. More...
 
void rotate (real_t xangle, real_t yangle, real_t zangle)
 Rotation of the rigid body by the Euler angles xangle, yangle and zangle. More...
 
void rotate (const Vec3 &euler)
 Rotation of the rigid body by the Euler angles euler. More...
 
void rotate (const Quat &dq)
 Rotation of the rigid body by the quaternion dq. More...
 
void rotateAroundOrigin (real_t x, real_t y, real_t z, real_t angle)
 Rotation of the rigid body around the origin of the global world frame. More...
 
void rotateAroundOrigin (const Vec3 &axis, real_t angle)
 Rotation of the rigid body around the origin of the global world frame. More...
 
void rotateAroundOrigin (real_t xangle, real_t yangle, real_t zangle)
 Rotation of the rigid body around the origin of the global world frame. More...
 
void rotateAroundOrigin (const Vec3 &euler)
 Rotation of the rigid body around the origin of the global world frame. More...
 
void rotateAroundOrigin (const Quat &dq)
 Rotation of the rigid body around the origin of the global world frame. More...
 
void rotateAroundPoint (const Vec3 &point, const Vec3 &axis, real_t angle)
 Rotation of the rigid body around a specific global coordinate. More...
 
void rotateAroundPoint (const Vec3 &point, const Vec3 &euler)
 Rotation of the rigid body around a specific global coordinate. More...
 
bool containsRelPoint (real_t px, real_t py, real_t pz) const
 Checks, whether a point in body relative coordinates lies inside the rigid body. More...
 
bool containsRelPoint (const Vec3 &rpos) const
 Checks, whether a point in body relative coordinates lies inside the rigid body. More...
 
bool containsPoint (real_t px, real_t py, real_t pz) const
 Checks, whether a point in global coordinates lies inside the rigid body. More...
 
bool containsPoint (const Vec3 &gpos) const
 Checks, whether a point in global coordinates lies inside the rigid body. More...
 
bool isSurfaceRelPoint (real_t px, real_t py, real_t pz) const
 Checks, whether a point in relative coordinates lies on the surface of the rigid body. More...
 
bool isSurfaceRelPoint (const Vec3 &rpos) const
 Checks, whether a point in body relative coordinates lies on the surface of the rigid body. More...
 
bool isSurfacePoint (real_t px, real_t py, real_t pz) const
 Checks, whether a point in global coordinates lies on the surface of the rigid body. More...
 
bool isSurfacePoint (const Vec3 &gpos) const
 Checks, whether a point in global coordinates lies on the surface of the rigid body. More...
 
virtual Vec3 supportContactThreshold (const Vec3 &d) const
 Estimates the point which is farthest in direction d. More...
 
bool hasForce () const
 Returns whether the rigid body has non-zero acting forces or torques. More...
 
const Vec3getForce () const
 Returns the current force acting on the body's center of mass. More...
 
const Vec3getTorque () const
 Returns the current torque acting on the body's center of mass. More...
 
void setForce (const Vec3 &f)
 Set the force acting at the body's center of mass. More...
 
void setTorque (const Vec3 &tau)
 Set the torque acting at the body's center of mass. More...
 
void addRelForce (real_t fx, real_t fy, real_t fz)
 Increases the total force acting in the body's center of mass. More...
 
void addRelForce (const Vec3 &f)
 Increases the force acting in the body's center of mass. More...
 
void addForce (real_t fx, real_t fy, real_t fz)
 Increases the force acting in the body's center of mass. More...
 
void addForce (const Vec3 &f)
 Increases the force acting in the body's center of mass. More...
 
void addRelForceAtRelPos (real_t fx, real_t fy, real_t fz, real_t px, real_t py, real_t pz)
 Increases the force acting in the body's center of mass. More...
 
void addRelForceAtRelPos (const Vec3 &f, const Vec3 &rpos)
 Increases the force acting in the body's center of mass. More...
 
void addRelForceAtPos (real_t fx, real_t fy, real_t fz, real_t px, real_t py, real_t pz)
 Increases the force acting in the body's center of mass. More...
 
void addRelForceAtPos (const Vec3 &f, const Vec3 &gpos)
 Increases the force acting in the body's center of mass. More...
 
void addForceAtRelPos (real_t fx, real_t fy, real_t fz, real_t px, real_t py, real_t pz)
 Increases the force acting in the body's center of mass. More...
 
void addForceAtRelPos (const Vec3 &f, const Vec3 &rpos)
 Increases the force acting in the body's center of mass. More...
 
void addForceAtPos (real_t fx, real_t fy, real_t fz, real_t px, real_t py, real_t pz)
 Increases the force acting in the body's center of mass. More...
 
void addForceAtPos (const Vec3 &f, const Vec3 &gpos)
 Increases the force acting in the body's center of mass. More...
 
void addTorque (real_t tx, real_t ty, real_t tz)
 Increasing the torque acting in the body's center of mass. More...
 
void addTorque (const Vec3 &t)
 Increasing the torque acting in the body's center of mass. More...
 
virtual void resetForceAndTorque ()
 Resetting all acting forces and torques from the rigid body. More...
 
void addImpulse (real_t jx, real_t jy, real_t jz)
 Applying an impulse in the body's center of mass. More...
 
void addImpulse (const Vec3 &j)
 Applying an impulse in the body's center of mass. More...
 
void addImpulseAtPos (real_t jx, real_t jy, real_t jz, real_t px, real_t py, real_t pz)
 Applying an impulse at the given global coordinate. More...
 
void addImpulseAtPos (const Vec3 &j, const Vec3 &p)
 Applying an impulse at the given global coordinate. More...
 
bool isRemote () const
 Returns whether the rigid body is remote or not. More...
 
virtual void setRemote (bool remote)
 Setting the remote flag of the rigid body. More...
 
bool isGlobal () const
 Returns whether the rigid body is global or not. More...
 
void setGlobal (const bool global)
 Setting the global flag of the rigid body. More...
 
bool isCommunicating () const
 Returns whether the rigid body is local or not. More...
 
void setCommunicating (const bool communicating)
 Setting the local flag of the rigid body. More...
 
virtual bool checkInvariants ()
 Checks the validity of the state of the rigid body. More...
 
void setSB (BodyID body)
 Sets the super body for the current body. More...
 
void resetSB ()
 Resets the super body for the current body. More...
 
void setFinite (const bool finite)
 
void setVisible (bool visible)
 Setting the rigid body visible/invisible. More...
 
void setPosition (real_t px, real_t py, real_t pz)
 Setting the global position of the rigid body. More...
 
void setPosition (const Vec3 &gpos)
 Setting the global position of the rigid body. More...
 
void setRelPosition (const Vec3 &gpos)
 Setting the global position of the rigid body. More...
 
void setOrientation (real_t r, real_t i, real_t j, real_t k)
 Setting the global orientation of the rigid body. More...
 
void setOrientation (const Quat &q)
 Setting the global orientation of the rigid body. More...
 
void setRelOrientation (const Quat &q)
 Setting the relative position of the rigid body. More...
 
void setMassAndInertiaToInfinity ()
 Setting the mass to infinity. This will also make the inertia tensor infinite. More...
 
void setRelLinearVel (real_t vx, real_t vy, real_t vz)
 Setting the relative linear velocity of the rigid body. More...
 
void setRelLinearVel (const Vec3 &lvel)
 
void setLinearVel (real_t vx, real_t vy, real_t vz)
 Setting the global linear velocity of the rigid body. More...
 
void setLinearVel (const Vec3 &lvel)
 /see setLinearVel( real_t vx, real_t vy, real_t vz ) More...
 
void setRelAngularVel (real_t ax, real_t ay, real_t az)
 Setting the relative angular velocity of the rigid body. More...
 
void setRelAngularVel (const Vec3 &avel)
 /see setRelAngularVel( real_t ax, real_t ay, real_t az ) More...
 
void setAngularVel (real_t ax, real_t ay, real_t az)
 Setting the global angular velocity of the rigid body. More...
 
void setAngularVel (const Vec3 &avel)
 /see setAngularVel( real_t ax, real_t ay, real_t az ) More...
 
void markForDeletion ()
 Marks the rigid body for deletion during the next synchronization. More...
 
- Public Member Functions inherited from walberla::pe::ccd::HashGridsBodyTrait
void * getGrid () const
 Returns the grid the rigid body is currently assigned to. More...
 
size_t getHash () const
 Returns the current hash value of the rigid body. More...
 
size_t getCellId () const
 Returns the current body container index within the cell the body is currently assigned to. More...
 
void setGrid (void *grid)
 Setting the grid the rigid body is associated with. More...
 
void setHash (size_t hash)
 Setting the hash value of the rigid body. More...
 
void setCellId (size_t cell)
 Setting the body container index within the cell the body is currently assigned to. More...
 

Static Public Member Functions

Volume, mass and density functions
static real_t calcVolume (const Vec3 &semiAxes)
 Calculates the volume of a Ellipsoid for a given vector of semi-axes. More...
 
static real_t calcMass (const Vec3 &semiAxes, real_t density)
 Calculates the mass of a Ellipsoid for a given a given vector of semi-axes and density. More...
 
static real_t calcDensity (const Vec3 &semiAxes, real_t mass)
 Calculates the density of a Ellipsoid for a given vector of semi-axes and mass. More...
 
static Mat3 calcInertia (const real_t mass, const Vec3 &semiAxes)
 Calculation of the moment of inertia in reference to the body frame of the Ellipsoid. More...
 

Get functions

const Vec3getSemiAxes () const
 Returns the semi-axes of the Ellipsoid. More...
 
virtual real_t getVolume () const
 Returns the volume of the Ellipsoid. More...
 
static id_t getStaticTypeID ()
 Returns unique type id of this type. More...
 

Utility functions

virtual Vec3 support (const Vec3 &d) const
 Estimates the point which is farthest in direction d. More...
 
virtual bool containsRelPointImpl (real_t px, real_t py, real_t pz) const
 Checks, whether a point in body relative coordinates lies inside the Ellipsoid. More...
 
virtual bool isSurfaceRelPointImpl (real_t px, real_t py, real_t pz) const
 Checks, whether a point in body relative coordinates lies on the surface of the Ellipsoid. More...
 
virtual void calcBoundingBox ()
 Calculation of the bounding box of the Ellipsoid. More...
 

Member variables

Vec3 semiAxes_
 Semi-axes of the Ellipsoid. More...
 
static id_t staticTypeID_ = std::numeric_limits<id_t>::max()
 
template<class T , int N>
struct SetBodyTypeIDs
 needed to be able to set static type ids with setStaticTypeID More...
 
static void setStaticTypeID (id_t typeID)
 

Additional Inherited Members

- Public Attributes inherited from walberla::pe::RigidBody
MPIRigidBodyTrait MPITrait
 
- Public Attributes inherited from walberla::pe::cr::HCSITSBodyTrait
size_t index_
 
- Protected Member Functions inherited from walberla::pe::GeomPrimitive
 GeomPrimitive (id_t const typeID, id_t sid, id_t uid, MaterialID material)
 Constructor for the GeomPrimitive class. More...
 
virtual ~GeomPrimitive ()=0
 Destructor for the Primitive class. More...
 
- Protected Member Functions inherited from walberla::pe::RigidBody
virtual void fix ()
 Setting the global position (the center of mass) of the rigid body fixed. More...
 
void signalModification ()
 Signals an internal modification of a contained subordiante body. More...
 
void signalTranslation ()
 Signals a position change of a contained subordiante body. More...
 
void signalRotation ()
 Signals an orientation change of a contained subordiante body. More...
 
void signalFixation ()
 Signals a fixation change of a contained subordiante body. More...
 
virtual void handleModification ()
 Handling an internal modification of a contained subordinate body. More...
 
virtual void handleTranslation ()
 Handling a position change of a contained subordinate body. More...
 
virtual void handleRotation ()
 Handling an orientation change of a contained subordinate body. More...
 
virtual void handleFixation ()
 Handling a fixation change of a contained subordinate body. More...
 
 RigidBody (id_t const typeID, id_t sid, id_t uid)
 Constructor for the RigidBody class. More...
 
virtual void setPositionImpl (real_t px, real_t py, real_t pz)
 
virtual void setOrientationImpl (real_t r, real_t i, real_t j, real_t k)
 Setting the global orientation of the rigid body. More...
 
virtual void translateImpl (real_t dx, real_t dy, real_t dz)
 Translation of the center of mass of the rigid body by the displacement vector. More...
 
virtual void rotateImpl (const Quat &dq)
 Implements the rotation of a rigid body. More...
 
virtual void rotateAroundOriginImpl (const Quat &dq)
 Implements the rotation of a rigid body. More...
 
virtual void rotateAroundPointImpl (const Vec3 &point, const Quat &dq)
 Rotation of the rigid body around a specific global coordinate. More...
 
void setMassAndInertia (const real_t mass, const Mat3 &inertia)
 Sets mass and inertia of a rigid body. More...
 
- Protected Member Functions inherited from walberla::pe::ccd::HashGridsBodyTrait
 HashGridsBodyTrait ()
 Constructor for the BodyTrait<HashGrids> specialization. More...
 
- Protected Attributes inherited from walberla::pe::GeomPrimitive
MaterialID material_
 The material of the geometric primitive. More...
 
- Protected Attributes inherited from walberla::pe::RigidBody
bool awake_
 Sleep mode flag. More...
 
real_t mass_
 The total mass of the rigid body. More...
 
real_t invMass_
 The inverse total mass of the rigid body. More...
 
real_t motion_
 The current motion of the rigid body. More...
 
Vec3 v_
 The linear velocity of this rigid body. More...
 
Vec3 w_
 Angular velocity of this rigid body. More...
 
Vec3 force_
 Total force (external+contact) acting in the body's center of mass. More...
 
Vec3 torque_
 Total torque (external+contact) acting in the body's center of mass. More...
 
Mat3 I_
 The moment of inertia in reference to the body's own body frame. More...
 
Mat3 Iinv_
 The inverse moment of inertia within the body frame. More...
 
ManagerID manager_
 The rigid body manager responsible for the rigid body. More...
 
BodyID sb_
 The superordinate rigid body. More...
 
bool finite_
 Finiteness flag. More...
 
bool visible_
 Visibility flag. More...
 
bool remote_
 Remote flag. More...
 
bool communicating_
 Communicating flag. More...
 
bool global_
 Global flag. More...
 
bool toBeDeleted_
 This flag marks the body for deletion during the next synchronization (only works on local bodies) More...
 
id_t sid_
 The unique system-specific body ID. More...
 
id_t uid_
 The user-specific body ID. More...
 
AABB aabb_
 Axis-aligned bounding box for the rigid body. More...
 
- Protected Attributes inherited from walberla::pe::ccd::HashGridsBodyTrait
void * grid_
 Pointer to the hash grid this rigid body is currently assigned to. More...
 
size_t hash_
 Current hash value of this rigid body. More...
 
size_t cellId_
 The body's index in the body container of the grid cell this rigid body is currently assigned to. More...
 

Constructor & Destructor Documentation

◆ Ellipsoid() [1/2]

walberla::pe::Ellipsoid::Ellipsoid ( id_t  sid,
id_t  uid,
const Vec3 gpos,
const Quat q,
const Vec3 semiAxes,
MaterialID  material,
const bool  global,
const bool  communicating,
const bool  infiniteMass 
)
explicit

Constructor for the Ellipsoid class.

Parameters
sidUnique system-specific ID for the Ellipsoid.
uidUser-specific ID for the Ellipsoid.
gposGlobal geometric center of the Ellipsoid.
rposThe relative position within the body frame of a superordinate body.
qThe orientation of the Ellipsoid's body frame in the global world frame.
radiusThe radius of the Ellipsoid \( (0..\infty) \).
materialThe material of the Ellipsoid.
globalspecifies if the Ellipsoid should be created in the global storage
communicatingspecifies if the Ellipsoid should take part in synchronization (syncNextNeighbour, syncShadowOwner)
infiniteMassspecifies if the Ellipsoid has infinite mass and will be treated as an obstacle

◆ Ellipsoid() [2/2]

walberla::pe::Ellipsoid::Ellipsoid ( id_t const  typeID,
id_t  sid,
id_t  uid,
const Vec3 rpos,
const Quat q,
const Vec3 semiAxes,
MaterialID  material,
const bool  global,
const bool  communicating,
const bool  infiniteMass 
)
explicit

◆ ~Ellipsoid()

walberla::pe::Ellipsoid::~Ellipsoid ( )
virtual

Destructor for the Ellipsoid class.

Member Function Documentation

◆ calcBoundingBox()

void walberla::pe::Ellipsoid::calcBoundingBox ( )
inlineprotectedvirtual

Calculation of the bounding box of the Ellipsoid.

Returns
void

This function updates the axis-aligned bounding box of the Ellipsoid primitive according to the current position and orientation of the Ellipsoid. Note that the bounding box is increased in all dimensions by pe::contactThreshold to guarantee that rigid bodies in close proximity of the Ellipsoid are also considered during the collision detection process. Algorithm: Use a non-axes-aligned bounding box of the ellipse (box with sides twice the semi-axes long) and calc its AABB.

Implements walberla::pe::RigidBody.

◆ calcDensity()

real_t walberla::pe::Ellipsoid::calcDensity ( const Vec3 semiAxes,
real_t  mass 
)
inlinestatic

Calculates the density of a Ellipsoid for a given vector of semi-axes and mass.

Parameters
semiAxesThe vector of semi-axes of the Ellipsoid.
massThe total mass of the Ellipsoid.
Returns
The density of the Ellipsoid.

◆ calcInertia()

Mat3 walberla::pe::Ellipsoid::calcInertia ( const real_t  mass,
const Vec3 semiAxes 
)
inlinestatic

Calculation of the moment of inertia in reference to the body frame of the Ellipsoid.

Returns
void

◆ calcMass()

real_t walberla::pe::Ellipsoid::calcMass ( const Vec3 semiAxes,
real_t  density 
)
inlinestatic

Calculates the mass of a Ellipsoid for a given a given vector of semi-axes and density.

Parameters
semiAxesThe vector of semi-axes of the Ellipsoid.
densityThe density of the Ellipsoid.
Returns
The total mass of the Ellipsoid.

◆ calcVolume()

real_t walberla::pe::Ellipsoid::calcVolume ( const Vec3 semiAxes)
inlinestatic

Calculates the volume of a Ellipsoid for a given vector of semi-axes.

Parameters
semiAxesThe vector of semi-axes of the Ellipsoid.
Returns
The volume of the Ellipsoid.

◆ containsRelPointImpl()

bool walberla::pe::Ellipsoid::containsRelPointImpl ( real_t  px,
real_t  py,
real_t  pz 
) const
protectedvirtual

Checks, whether a point in body relative coordinates lies inside the Ellipsoid.

Parameters
pxThe x-component of the relative coordinate.
pyThe y-component of the relative coordinate.
pzThe z-component of the relative coordinate.
Returns
true if the point lies inside the Ellipsoid, false if not.

Reimplemented from walberla::pe::RigidBody.

◆ getSemiAxes()

const Vec3 & walberla::pe::Ellipsoid::getSemiAxes ( ) const
inline

Returns the semi-axes of the Ellipsoid.

Returns
The semi-axes of the Ellipsoid.

◆ getStaticTypeID()

id_t walberla::pe::Ellipsoid::getStaticTypeID ( )
inlinestatic

Returns unique type id of this type.

Returns
geometry specific type id

◆ getVolume()

real_t walberla::pe::Ellipsoid::getVolume ( ) const
inlinevirtual

Returns the volume of the Ellipsoid.

Returns
The volume of the Ellipsoid.

Reimplemented from walberla::pe::RigidBody.

◆ isSurfaceRelPointImpl()

bool walberla::pe::Ellipsoid::isSurfaceRelPointImpl ( real_t  px,
real_t  py,
real_t  pz 
) const
protectedvirtual

Checks, whether a point in body relative coordinates lies on the surface of the Ellipsoid.

Parameters
pxThe x-component of the relative coordinate.
pyThe y-component of the relative coordinate.
pzThe z-component of the relative coordinate.
Returns
true if the point lies on the surface of the Ellipsoid, false if not.

The (relative) tolerance level of the check is pe::surfaceThreshold.

Reimplemented from walberla::pe::RigidBody.

◆ print()

void walberla::pe::Ellipsoid::print ( std::ostream &  os,
const char *  tab 
) const
virtual

Output of the current state of a Ellipsoid.

Parameters
osReference to the output stream.
tabIndentation in front of every line of the Ellipsoid output.
Returns
void

Implements walberla::pe::RigidBody.

◆ setStaticTypeID()

static void walberla::pe::Ellipsoid::setStaticTypeID ( id_t  typeID)
inlinestaticprivate

◆ support()

Vec3 walberla::pe::Ellipsoid::support ( const Vec3 d) const
inlinevirtual

Estimates the point which is farthest in direction d.

Parameters
dThe normalized search direction in world-frame coordinates.
Returns
The support point in world-frame coordinates in direction a\ d.

Reimplemented from walberla::pe::RigidBody.

Friends And Related Function Documentation

◆ SetBodyTypeIDs

template<class T , int N>
friend struct SetBodyTypeIDs
friend

needed to be able to set static type ids with setStaticTypeID

Member Data Documentation

◆ semiAxes_

Vec3 walberla::pe::Ellipsoid::semiAxes_
protected

Semi-axes of the Ellipsoid.

The radius is constrained to values larger than 0.0.

◆ staticTypeID_

id_t walberla::pe::Ellipsoid::staticTypeID_ = std::numeric_limits<id_t>::max()
staticprivate

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