walberla::mesa_pd Namespace Reference

Namespaces

 collision_detection
 
 data
 
 domain
 
 kernel
 
 mpi
 
 sorting
 
 vtk
 

Classes

class  ContactHistoryNotification
 Trasmits the contact history. More...
 
struct  ContainsPointFunctor
 
class  ForceTorqueNotification
 Trasmits force and torque information. More...
 
class  HeatFluxNotification
 Trasmits force and torque information. More...
 
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< ParticleMigrationNotification >
 
struct  NotificationTrait< ParticleRemoteMigrationNotification >
 
struct  NotificationTrait< ParticleRemovalInformationNotification >
 
struct  NotificationTrait< ParticleRemovalNotification >
 
struct  NotificationTrait< ParticleUpdateNotification >
 
class  ParseMessage
 
class  ParticleCopyNotification
 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  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...
 

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 >
 

Enumerations

enum  NotificationType : uint8_t {
  PARTICLE_DELETION_NOTIFICATION = 1, PARTICLE_REMOVAL_NOTIFICATION, PARTICLE_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 Vector3< real_t > &point, const Vector3< real_t > &spherePosition, const real_t sphereRadius)
 
bool isPointInsideHalfSpace (const Vector3< real_t > &point, const Vector3< real_t > &halfSpacePosition, const Vector3< real_t > &halfSpaceNormal, const math::Matrix3< real_t > &halfSpaceRotationMatrix)
 
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 >
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)
 
real_t raySphereIntersectionRatio (const Vector3< real_t > &rayOrigin, const Vector3< real_t > &rayDirection, const Vector3< real_t > &spherePosition, const real_t sphereRadius)
 
real_t rayHalfSpaceIntersectionRatio (const Vector3< real_t > &rayOrigin, const Vector3< real_t > &rayDirection, const Vector3< real_t > &halfSpacePosition, const Vector3< real_t > &halfSpaceNormal, const math::Matrix3< real_t > &halfSpaceRotationMatrix)
 
template<typename ParticleAccessor_T >
real_t intersectionRatioBisection (const size_t particleIdx, const ParticleAccessor_T &ac, const Vector3< real_t > &rayOrigin, const Vector3< real_t > &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<class T >
void packNotification (walberla::mpi::SendBuffer &sb, const T &notification)
 
data::ParticleStorage::iterator createNewParticle (data::ParticleStorage &ps, const ParticleCopyNotification::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)
 
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

Enumeration Type Documentation

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

Enumerator
PARTICLE_DELETION_NOTIFICATION 
PARTICLE_REMOVAL_NOTIFICATION 
PARTICLE_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

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.

template<typename Accessor >
void walberla::mesa_pd::addForceAtWFPosAtomic ( const size_t  p_idx,
Accessor &  ac,
const Vec3 f,
const Vec3 wf_pt 
)
inline
data::ParticleStorage::iterator walberla::mesa_pd::createNewParticle ( data::ParticleStorage ps,
const ParticleCopyNotification::Parameters data 
)
inline
data::ParticleStorage::iterator walberla::mesa_pd::createSphere ( data::ParticleStorage ps,
const Vec3 pos,
const real_t radius,
const size_t  shapeID 
)
data::ParticleStorage::iterator walberla::mesa_pd::createWall ( data::ParticleStorage ps,
data::ShapeStorage ss,
const Vec3 pos,
const Vec3 normal 
)

[CreationHelper]

math::AABB walberla::mesa_pd::getAABBFromInteractionRadius ( const Vector3< real_t > &  pos,
const real_t  interactionRadius 
)
template<typename ParticleAccessor_T >
math::AABB walberla::mesa_pd::getParticleAABB ( const size_t  particleIdx,
const ParticleAccessor_T &  ac 
)
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.

template<typename ParticleAccessor_T >
real_t walberla::mesa_pd::intersectionRatioBisection ( const size_t  particleIdx,
const ParticleAccessor_T &  ac,
const Vector3< real_t > &  rayOrigin,
const Vector3< real_t > &  rayDirection,
real_t  epsilon 
)
bool walberla::mesa_pd::isInsideAABB ( const Vec3 pt,
const real_t  radius,
const math::AABB aabb 
)
inline
bool walberla::mesa_pd::isPointInsideHalfSpace ( const Vector3< real_t > &  point,
const Vector3< real_t > &  halfSpacePosition,
const Vector3< real_t > &  halfSpaceNormal,
const math::Matrix3< real_t > &  halfSpaceRotationMatrix 
)
bool walberla::mesa_pd::isPointInsideSphere ( const Vector3< real_t > &  point,
const Vector3< real_t > &  spherePosition,
const real_t  sphereRadius 
)
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]

template<class T >
void walberla::mesa_pd::packNotification ( walberla::mpi::SendBuffer sb,
const T &  notification 
)
inline
real_t walberla::mesa_pd::rayHalfSpaceIntersectionRatio ( const Vector3< real_t > &  rayOrigin,
const Vector3< real_t > &  rayDirection,
const Vector3< real_t > &  halfSpacePosition,
const Vector3< real_t > &  halfSpaceNormal,
const math::Matrix3< real_t > &  halfSpaceRotationMatrix 
)
real_t walberla::mesa_pd::raySphereIntersectionRatio ( const Vector3< real_t > &  rayOrigin,
const Vector3< real_t > &  rayDirection,
const Vector3< real_t > &  spherePosition,
const real_t  sphereRadius 
)
void walberla::mesa_pd::reduce ( data::Particle &&  p,
const HeatFluxNotification::Parameters objparam 
)
void walberla::mesa_pd::reduce ( data::Particle &&  p,
const VelocityCorrectionNotification::Parameters objparam 
)
void walberla::mesa_pd::reduce ( data::Particle &&  p,
const ForceTorqueNotification::Parameters objparam 
)
void walberla::mesa_pd::reduce ( data::Particle &&  p,
const ContactHistoryNotification::Parameters objparam 
)
template<class Notification >
void walberla::mesa_pd::reset ( data::Particle )
real_t walberla::mesa_pd::sqDistanceLineToPoint ( const real_t pt,
const real_t min,
const real_t max 
)
inline
real_t walberla::mesa_pd::sqDistancePointToAABB ( const Vec3 pt,
const math::AABB aabb 
)
inline
real_t walberla::mesa_pd::sqDistancePointToAABBPeriodic ( Vec3  pt,
const math::AABB aabb,
const math::AABB domain,
const std::array< bool, 3 > &  periodic 
)
inline
void walberla::mesa_pd::update ( data::Particle &&  p,
const VelocityUpdateNotification::Parameters objparam 
)
void walberla::mesa_pd::update ( data::Particle &&  p,
const HeatFluxNotification::Parameters objparam 
)
void walberla::mesa_pd::update ( data::Particle &&  p,
const ForceTorqueNotification::Parameters objparam 
)