walberla::mesa_pd Namespace Reference

Namespaces

 collision_detection
 
 data
 
 domain
 
 internal
 
 kernel
 
 mpi
 
 sorting
 
 vtk
 

Classes

class  ContactHistoryNotification
 Transmits the contact history. More...
 
struct  ContainsPointFunctor
 
class  FaceDataSource
 
class  ForceTorqueNotification
 Transmits force and torque information. More...
 
class  HeatFluxNotification
 Transmits force and torque information. More...
 
class  HydrodynamicForceTorqueNotification
 Transmits force and torque information. More...
 
class  MeshParticleVTKOutput
 
class  NewGhostParticleNotification
 This notification is send to the owner of a particle to signal that a new ghost particle exists and the ghost particle list should be updated. More...
 
struct  NotificationTrait
 Returns the notification type of the template parameter. More...
 
struct  NotificationTrait< NewGhostParticleNotification >
 
struct  NotificationTrait< ParticleCopyNotification >
 
struct  NotificationTrait< ParticleGhostCopyNotification >
 
struct  NotificationTrait< ParticleMigrationNotification >
 
struct  NotificationTrait< ParticleRemoteMigrationNotification >
 
struct  NotificationTrait< ParticleRemovalInformationNotification >
 
struct  NotificationTrait< ParticleRemovalNotification >
 
struct  NotificationTrait< ParticleUpdateNotification >
 
class  NumContactNotification
 Transmits force and torque information. More...
 
class  OutputSelectorFaceDataSource
 Generic data source to pick data for a face using a particle selector. More...
 
class  OutputSelectorFaceDataSource< MeshType, Selector, Vector3< Type > >
 Data Source for particle selectors specialized for Vec3. More...
 
class  OutputSelectorVertexDataSource
 
class  OutputSelectorVertexDataSource< MeshType, Selector, Vector3< Type > >
 Data Source specialized for Vec3. More...
 
class  ParseMessage
 
class  ParticleCopyNotification
 A complete particle copy. More...
 
class  ParticleGhostCopyNotification
 A complete particle copy for a new ghost particle. More...
 
class  ParticleMigrationNotification
 Migrate the particle to this process. More...
 
class  ParticleRemoteMigrationNotification
 The ownership for one of the ghost particles has changed. More...
 
class  ParticleRemovalInformationNotification
 The ParticleRemovalInformationNotification class is used to signal other processes that a shadow copy was destroyed. More...
 
class  ParticleRemovalNotification
 The specified particle should be removed from the process. More...
 
class  ParticleUpdateNotification
 Updates a ghost particle. More...
 
struct  RayParticleIntersectionRatioFunctor
 
class  SurfaceVelocityVertexDataSource
 
class  VelocityCorrectionNotification
 Transmits corrections of the linear and angular velocity (dv / dw) that were generated by the impulses acting on the ghost particles during application of the Hard-Contact-Solvers (HCSITS) to the main particle and adds them up. More...
 
class  VelocityUpdateNotification
 Adds up LinearVelocity + Parameters::relaxationParam * velocity_correction in a particle and transmits the result to all its ghost particles. More...
 
class  VertexDataSource
 

Typedefs

using Mat3 = math::Matrix3< real_t >
 
using Mat2 = math::Matrix2< real_t >
 
using Rot3 = math::Rot3< real_t >
 
using Quat = math::Quaternion< real_t >
 
using Vec3 = math::Vector3< real_t >
 
using Vec2 = math::Vector2< real_t >
 
typedef OpenMesh::FPropHandleT< size_tParticleIdxFacePropertyHandle
 
typedef OpenMesh::VPropHandleT< size_tParticleIdxVertexPropertyHandle
 
template<typename MeshType >
using ParticleIdxFacePropertyManager = OpenMesh::PropertyManager< ParticleIdxFacePropertyHandle, MeshType >
 
template<typename MeshType >
using ParticleIdxVertexPropertyManager = typename OpenMesh::PropertyManager< ParticleIdxVertexPropertyHandle, MeshType >
 

Enumerations

enum  NotificationType : uint8_t {
  PARTICLE_DELETION_NOTIFICATION = 1, PARTICLE_REMOVAL_NOTIFICATION, PARTICLE_COPY_NOTIFICATION, PARTICLE_GHOST_COPY_NOTIFICATION,
  PARTICLE_FORCE_NOTIFICATION, PARTICLE_UPDATE_NOTIFICATION, PARTICLE_MIGRATION_NOTIFICATION, PARTICLE_REMOTE_MIGRATION_NOTIFICATION,
  PARTICLE_VELOCITY_UPDATE_NOTIFICATION, PARTICLE_VELOCITY_CORRECTION_NOTIFICATION, NEW_GHOST_PARTICLE_NOTIFICATION, PARTICLE_REMOVAL_INFORMATION_NOTIFICATION
}
 Associate a unique number to notifications for identifying/tagging them. More...
 

Functions

math::AABB getAABBFromInteractionRadius (const Vector3< real_t > &pos, const real_t interactionRadius)
 
template<typename ParticleAccessor_T >
math::AABB getParticleAABB (const size_t particleIdx, const ParticleAccessor_T &ac)
 
bool isPointInsideSphere (const Vec3 &point, const Vec3 &spherePosition, const real_t sphereRadius)
 
bool isPointInsideHalfSpace (const Vec3 &point, const Vec3 &halfSpacePosition, const Vec3 &halfSpaceNormal)
 
bool isPointInsideBoxBF (const Vec3 &pointBF, const Vec3 &edgeLengths)
 
bool isPointInsideEllipsoidBF (const Vec3 &pointBF, const Vec3 &semiAxes)
 
bool isPointInsideCylindricalBoundary (const Vec3 &point, const Vec3 &cylindricalBoundaryPosition, const real_t radius, const Vec3 &axis)
 
template<typename Accessor >
Vec3 getVelocityAtWFPoint (const size_t p_idx, Accessor &ac, const Vec3 &wf_pt)
 Returns the "surface" velocity at a certain point given in world frame coordinates. More...
 
template<typename Accessor >
Vec3 transformPositionFromWFtoBF (const size_t p_idx, Accessor &ac, const Vec3 &positionWF)
 Transformations between world frame (WF) and body frame (BF) coordinates. More...
 
template<typename Accessor >
Vec3 transformVectorFromWFtoBF (const size_t p_idx, Accessor &ac, const Vec3 &vectorWF)
 
template<typename Accessor >
Vec3 transformPositionFromBFtoWF (const size_t p_idx, Accessor &ac, const Vec3 &positionBF)
 
template<typename Accessor >
Vec3 transformVectorFromBFtoWF (const size_t p_idx, Accessor &ac, const Vec3 &vectorBF)
 
template<typename Accessor >
Mat3 getInvInertia (const size_t p_idx, Accessor &ac)
 Transform (inverse) particle's moment of inertia from body frame coordinates (as stored by shape) to world frame. More...
 
template<typename Accessor >
Mat3 getInertia (const size_t p_idx, Accessor &ac)
 
template<typename Accessor >
void addForceAtomic (const size_t p_idx, Accessor &ac, const Vec3 &f)
 Force is applied at the center of mass. More...
 
template<typename Accessor >
void addForceAtWFPosAtomic (const size_t p_idx, Accessor &ac, const Vec3 &f, const Vec3 &wf_pt)
 
template<typename Accessor >
void addTorqueAtomic (const size_t p_idx, Accessor &ac, const Vec3 &t)
 Torque is directly applied on the particle. More...
 
real_t raySphereIntersectionRatio (const Vec3 &rayOrigin, const Vec3 &rayDirection, const Vec3 &spherePosition, const real_t sphereRadius)
 
real_t rayHalfSpaceIntersectionRatio (const Vec3 &rayOrigin, const Vec3 &rayDirection, const Vec3 &halfSpacePosition, const Vec3 &halfSpaceNormal)
 
real_t rayEllipsoidIntersectionRatioBF (const Vec3 &rayOriginBF, const Vec3 &rayDirectionBF, const Vec3 &ellipsoidSemiAxes)
 
template<typename ParticleAccessor_T >
real_t intersectionRatioBisection (const size_t particleIdx, const ParticleAccessor_T &ac, const Vec3 &rayOrigin, const Vec3 &rayDirection, real_t epsilon)
 
real_t sqDistanceLineToPoint (const real_t &pt, const real_t &min, const real_t &max)
 
real_t sqDistancePointToAABB (const Vec3 &pt, const math::AABB &aabb)
 
real_t sqDistancePointToAABBPeriodic (Vec3 pt, const math::AABB &aabb, const math::AABB &domain, const std::array< bool, 3 > &periodic)
 
bool isInsideAABB (const Vec3 &pt, const real_t radius, const math::AABB &aabb)
 
template<>
void reset< ContactHistoryNotification > (data::Particle &p)
 
void reduce (data::Particle &&p, const ContactHistoryNotification::Parameters &objparam)
 
template<>
void reset< ForceTorqueNotification > (data::Particle &p)
 
void reduce (data::Particle &&p, const ForceTorqueNotification::Parameters &objparam)
 
void update (data::Particle &&p, const ForceTorqueNotification::Parameters &objparam)
 
template<>
void reset< HeatFluxNotification > (data::Particle &p)
 
void reduce (data::Particle &&p, const HeatFluxNotification::Parameters &objparam)
 
void update (data::Particle &&p, const HeatFluxNotification::Parameters &objparam)
 
template<>
void reset< HydrodynamicForceTorqueNotification > (data::Particle &p)
 
void reduce (data::Particle &&p, const HydrodynamicForceTorqueNotification::Parameters &objparam)
 
void update (data::Particle &&p, const HydrodynamicForceTorqueNotification::Parameters &objparam)
 
template<>
void reset< NumContactNotification > (data::Particle &p)
 
void reduce (data::Particle &&p, const NumContactNotification::Parameters &objparam)
 
void update (data::Particle &&p, const NumContactNotification::Parameters &objparam)
 
template<class T >
void packNotification (walberla::mpi::SendBuffer &sb, const T &notification)
 
data::ParticleStorage::iterator createNewParticle (data::ParticleStorage &ps, const ParticleCopyNotification::Parameters &data)
 
data::ParticleStorage::iterator createNewParticle (data::ParticleStorage &ps, const ParticleGhostCopyNotification::Parameters &data)
 
template<class Notification >
void reset (data::Particle &)
 
void reduce (data::Particle &&p, const VelocityCorrectionNotification::Parameters &objparam)
 
template<>
void reset< VelocityCorrectionNotification > (data::Particle &p)
 
void update (data::Particle &&p, const VelocityUpdateNotification::Parameters &objparam)
 
template<>
void reset< VelocityUpdateNotification > (data::Particle &p)
 
template<typename MeshType >
void tesselate (const walberla::mesa_pd::data::ConvexPolyhedron &shape, const walberla::mesa_pd::data::ParticleStorage::Particle &particle, shared_ptr< MeshType > mesh, std::vector< typename MeshType::VertexHandle > &newVertices, std::vector< typename MeshType::FaceHandle > &newFaces)
 
data::ParticleStorage::iterator createWall (data::ParticleStorage &ps, data::ShapeStorage &ss, const Vec3 &pos, const Vec3 &normal)
 [CreationHelper] More...
 
data::ParticleStorage::iterator createSphere (data::ParticleStorage &ps, const Vec3 &pos, const real_t &radius, const size_t shapeID)
 
int main (int argc, char **argv)
 [CreationHelper] More...
 

Typedef Documentation

◆ Mat2

◆ Mat3

◆ ParticleIdxFacePropertyHandle

◆ ParticleIdxFacePropertyManager

template<typename MeshType >
using walberla::mesa_pd::ParticleIdxFacePropertyManager = typedef OpenMesh::PropertyManager<ParticleIdxFacePropertyHandle, MeshType>

◆ ParticleIdxVertexPropertyHandle

◆ ParticleIdxVertexPropertyManager

template<typename MeshType >
using walberla::mesa_pd::ParticleIdxVertexPropertyManager = typedef typename OpenMesh::PropertyManager<ParticleIdxVertexPropertyHandle, MeshType>

◆ Quat

◆ Rot3

◆ Vec2

◆ Vec3

Enumeration Type Documentation

◆ NotificationType

Associate a unique number to notifications for identifying/tagging them.

Enumerator
PARTICLE_DELETION_NOTIFICATION 
PARTICLE_REMOVAL_NOTIFICATION 
PARTICLE_COPY_NOTIFICATION 
PARTICLE_GHOST_COPY_NOTIFICATION 
PARTICLE_FORCE_NOTIFICATION 
PARTICLE_UPDATE_NOTIFICATION 
PARTICLE_MIGRATION_NOTIFICATION 
PARTICLE_REMOTE_MIGRATION_NOTIFICATION 
PARTICLE_VELOCITY_UPDATE_NOTIFICATION 
PARTICLE_VELOCITY_CORRECTION_NOTIFICATION 
NEW_GHOST_PARTICLE_NOTIFICATION 
PARTICLE_REMOVAL_INFORMATION_NOTIFICATION 

Function Documentation

◆ addForceAtomic()

template<typename Accessor >
void walberla::mesa_pd::addForceAtomic ( const size_t  p_idx,
Accessor &  ac,
const Vec3 f 
)
inline

Force is applied at the center of mass.

◆ addForceAtWFPosAtomic()

template<typename Accessor >
void walberla::mesa_pd::addForceAtWFPosAtomic ( const size_t  p_idx,
Accessor &  ac,
const Vec3 f,
const Vec3 wf_pt 
)
inline

◆ addTorqueAtomic()

template<typename Accessor >
void walberla::mesa_pd::addTorqueAtomic ( const size_t  p_idx,
Accessor &  ac,
const Vec3 t 
)
inline

Torque is directly applied on the particle.

◆ createNewParticle() [1/2]

data::ParticleStorage::iterator walberla::mesa_pd::createNewParticle ( data::ParticleStorage ps,
const ParticleCopyNotification::Parameters data 
)
inline

◆ createNewParticle() [2/2]

data::ParticleStorage::iterator walberla::mesa_pd::createNewParticle ( data::ParticleStorage ps,
const ParticleGhostCopyNotification::Parameters data 
)
inline

◆ createSphere()

data::ParticleStorage::iterator walberla::mesa_pd::createSphere ( data::ParticleStorage ps,
const Vec3 pos,
const real_t radius,
const size_t  shapeID 
)

◆ createWall()

data::ParticleStorage::iterator walberla::mesa_pd::createWall ( data::ParticleStorage ps,
data::ShapeStorage ss,
const Vec3 pos,
const Vec3 normal 
)

[CreationHelper]

◆ getAABBFromInteractionRadius()

math::AABB walberla::mesa_pd::getAABBFromInteractionRadius ( const Vector3< real_t > &  pos,
const real_t  interactionRadius 
)

◆ getInertia()

template<typename Accessor >
Mat3 walberla::mesa_pd::getInertia ( const size_t  p_idx,
Accessor &  ac 
)
inline

◆ getInvInertia()

template<typename Accessor >
Mat3 walberla::mesa_pd::getInvInertia ( const size_t  p_idx,
Accessor &  ac 
)
inline

Transform (inverse) particle's moment of inertia from body frame coordinates (as stored by shape) to world frame.

◆ getParticleAABB()

template<typename ParticleAccessor_T >
math::AABB walberla::mesa_pd::getParticleAABB ( const size_t  particleIdx,
const ParticleAccessor_T &  ac 
)

◆ getVelocityAtWFPoint()

template<typename Accessor >
Vec3 walberla::mesa_pd::getVelocityAtWFPoint ( const size_t  p_idx,
Accessor &  ac,
const Vec3 wf_pt 
)
inline

Returns the "surface" velocity at a certain point given in world frame coordinates.

◆ intersectionRatioBisection()

template<typename ParticleAccessor_T >
real_t walberla::mesa_pd::intersectionRatioBisection ( const size_t  particleIdx,
const ParticleAccessor_T &  ac,
const Vec3 rayOrigin,
const Vec3 rayDirection,
real_t  epsilon 
)

◆ isInsideAABB()

bool walberla::mesa_pd::isInsideAABB ( const Vec3 pt,
const real_t  radius,
const math::AABB aabb 
)
inline

◆ isPointInsideBoxBF()

bool walberla::mesa_pd::isPointInsideBoxBF ( const Vec3 pointBF,
const Vec3 edgeLengths 
)

◆ isPointInsideCylindricalBoundary()

bool walberla::mesa_pd::isPointInsideCylindricalBoundary ( const Vec3 point,
const Vec3 cylindricalBoundaryPosition,
const real_t  radius,
const Vec3 axis 
)

◆ isPointInsideEllipsoidBF()

bool walberla::mesa_pd::isPointInsideEllipsoidBF ( const Vec3 pointBF,
const Vec3 semiAxes 
)

◆ isPointInsideHalfSpace()

bool walberla::mesa_pd::isPointInsideHalfSpace ( const Vec3 point,
const Vec3 halfSpacePosition,
const Vec3 halfSpaceNormal 
)

◆ isPointInsideSphere()

bool walberla::mesa_pd::isPointInsideSphere ( const Vec3 point,
const Vec3 spherePosition,
const real_t  sphereRadius 
)

◆ main()

int walberla::mesa_pd::main ( int  argc,
char **  argv 
)

[CreationHelper]

[Parameters]

[Parameters]

[BlockForest]

[BlockForest]

[DataStructures]

[DataStructures]

[Walls]

[Walls]

[Spheres]

[Spheres]

[Kernels]

[Kernels]

[Loop]

[Loop]

[PostProcessing]

[PostProcessing]

◆ packNotification()

template<class T >
void walberla::mesa_pd::packNotification ( walberla::mpi::SendBuffer sb,
const T &  notification 
)
inline

◆ rayEllipsoidIntersectionRatioBF()

real_t walberla::mesa_pd::rayEllipsoidIntersectionRatioBF ( const Vec3 rayOriginBF,
const Vec3 rayDirectionBF,
const Vec3 ellipsoidSemiAxes 
)

◆ rayHalfSpaceIntersectionRatio()

real_t walberla::mesa_pd::rayHalfSpaceIntersectionRatio ( const Vec3 rayOrigin,
const Vec3 rayDirection,
const Vec3 halfSpacePosition,
const Vec3 halfSpaceNormal 
)

◆ raySphereIntersectionRatio()

real_t walberla::mesa_pd::raySphereIntersectionRatio ( const Vec3 rayOrigin,
const Vec3 rayDirection,
const Vec3 spherePosition,
const real_t  sphereRadius 
)

◆ reduce() [1/6]

void walberla::mesa_pd::reduce ( data::Particle &&  p,
const ContactHistoryNotification::Parameters objparam 
)

◆ reduce() [2/6]

void walberla::mesa_pd::reduce ( data::Particle &&  p,
const ForceTorqueNotification::Parameters objparam 
)

◆ reduce() [3/6]

void walberla::mesa_pd::reduce ( data::Particle &&  p,
const HeatFluxNotification::Parameters objparam 
)

◆ reduce() [4/6]

void walberla::mesa_pd::reduce ( data::Particle &&  p,
const HydrodynamicForceTorqueNotification::Parameters objparam 
)

◆ reduce() [5/6]

void walberla::mesa_pd::reduce ( data::Particle &&  p,
const NumContactNotification::Parameters objparam 
)

◆ reduce() [6/6]

void walberla::mesa_pd::reduce ( data::Particle &&  p,
const VelocityCorrectionNotification::Parameters objparam 
)

◆ reset()

template<class Notification >
void walberla::mesa_pd::reset ( data::Particle )

◆ reset< ContactHistoryNotification >()

◆ reset< ForceTorqueNotification >()

◆ reset< HeatFluxNotification >()

◆ reset< HydrodynamicForceTorqueNotification >()

◆ reset< NumContactNotification >()

◆ reset< VelocityCorrectionNotification >()

◆ reset< VelocityUpdateNotification >()

◆ sqDistanceLineToPoint()

real_t walberla::mesa_pd::sqDistanceLineToPoint ( const real_t pt,
const real_t min,
const real_t max 
)
inline

◆ sqDistancePointToAABB()

real_t walberla::mesa_pd::sqDistancePointToAABB ( const Vec3 pt,
const math::AABB aabb 
)
inline

◆ sqDistancePointToAABBPeriodic()

real_t walberla::mesa_pd::sqDistancePointToAABBPeriodic ( Vec3  pt,
const math::AABB aabb,
const math::AABB domain,
const std::array< bool, 3 > &  periodic 
)
inline

◆ tesselate()

template<typename MeshType >
void walberla::mesa_pd::tesselate ( const walberla::mesa_pd::data::ConvexPolyhedron shape,
const walberla::mesa_pd::data::ParticleStorage::Particle particle,
shared_ptr< MeshType mesh,
std::vector< typename MeshType::VertexHandle > &  newVertices,
std::vector< typename MeshType::FaceHandle > &  newFaces 
)

◆ transformPositionFromBFtoWF()

template<typename Accessor >
Vec3 walberla::mesa_pd::transformPositionFromBFtoWF ( const size_t  p_idx,
Accessor &  ac,
const Vec3 positionBF 
)
inline

◆ transformPositionFromWFtoBF()

template<typename Accessor >
Vec3 walberla::mesa_pd::transformPositionFromWFtoBF ( const size_t  p_idx,
Accessor &  ac,
const Vec3 positionWF 
)
inline

Transformations between world frame (WF) and body frame (BF) coordinates.

◆ transformVectorFromBFtoWF()

template<typename Accessor >
Vec3 walberla::mesa_pd::transformVectorFromBFtoWF ( const size_t  p_idx,
Accessor &  ac,
const Vec3 vectorBF 
)
inline

◆ transformVectorFromWFtoBF()

template<typename Accessor >
Vec3 walberla::mesa_pd::transformVectorFromWFtoBF ( const size_t  p_idx,
Accessor &  ac,
const Vec3 vectorWF 
)
inline

◆ update() [1/5]

void walberla::mesa_pd::update ( data::Particle &&  p,
const ForceTorqueNotification::Parameters objparam 
)

◆ update() [2/5]

void walberla::mesa_pd::update ( data::Particle &&  p,
const HeatFluxNotification::Parameters objparam 
)

◆ update() [3/5]

void walberla::mesa_pd::update ( data::Particle &&  p,
const HydrodynamicForceTorqueNotification::Parameters objparam 
)

◆ update() [4/5]

void walberla::mesa_pd::update ( data::Particle &&  p,
const NumContactNotification::Parameters objparam 
)

◆ update() [5/5]

void walberla::mesa_pd::update ( data::Particle &&  p,
const VelocityUpdateNotification::Parameters objparam 
)