walberla::mesa_pd::collision_detection::GeneralContactDetection Class Reference

Detailed Description

Collision detection functor which uses recommended collision functions.

Calculates and stores contact information between two particles. If a collision was successfully detected by the operator() contactPoint, contactNormal and penetrationDepth contain the contact information. If no collision was detected the values of these variables is undefined!

#include <GeneralContactDetection.h>

+ Inheritance diagram for walberla::mesa_pd::collision_detection::GeneralContactDetection:

Public Member Functions

template<typename GEO1_T , typename GEO2_T , typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const GEO1_T &geo1, const GEO2_T &geo2, Accessor &ac)
 
template<typename GEO2_T , typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const data::HalfSpace &geo1, const GEO2_T &geo2, Accessor &ac)
 
template<typename GEO1_T , typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const GEO1_T &geo1, const data::HalfSpace &geo2, Accessor &ac)
 
template<typename GEO2_T , typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const data::CylindricalBoundary &geo1, const GEO2_T &geo2, Accessor &ac)
 
template<typename GEO1_T , typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const GEO1_T &geo1, const data::CylindricalBoundary &geo2, Accessor &ac)
 
- Public Member Functions inherited from walberla::mesa_pd::collision_detection::AnalyticContactDetection
virtual ~AnalyticContactDetection ()=default
 
size_tgetIdx1 ()
 
size_tgetIdx2 ()
 
Vec3getContactPoint ()
 
Vec3getContactNormal ()
 
real_tgetPenetrationDepth ()
 
const size_tgetIdx1 () const
 
const size_tgetIdx2 () const
 
const Vec3getContactPoint () const
 
const Vec3getContactNormal () const
 
const real_tgetPenetrationDepth () const
 
real_tgetContactThreshold ()
 
template<typename GEO1_T , typename GEO2_T , typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const GEO1_T &geo1, const GEO2_T &geo2, Accessor &ac)
 
template<typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const data::Sphere &geo1, const data::Sphere &geo2, Accessor &ac)
 
template<typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const data::Sphere &s, const data::Box &bx, Accessor &ac)
 
template<typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const data::Box &bx, const data::Sphere &s, Accessor &ac)
 
template<typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const data::Sphere &s, const data::CylindricalBoundary &cb, Accessor &ac)
 
template<typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const data::CylindricalBoundary &cb, const data::Sphere &s, Accessor &ac)
 
template<typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const data::Sphere &s, const data::HalfSpace &p, Accessor &ac)
 
template<typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const data::HalfSpace &p, const data::Sphere &s, Accessor &ac)
 
template<typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const data::HalfSpace &p0, const data::HalfSpace &p1, Accessor &ac)
 
template<typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const data::CylindricalBoundary &p0, const data::HalfSpace &p1, Accessor &ac)
 
template<typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const data::HalfSpace &p0, const data::CylindricalBoundary &p1, Accessor &ac)
 
template<typename Accessor >
bool operator() (const size_t idx1, const size_t idx2, const data::CylindricalBoundary &p0, const data::CylindricalBoundary &p1, Accessor &ac)
 

Private Member Functions

bool collideGJKEPA (Support &geom0, Support &geom1)
 

Additional Inherited Members

- Protected Attributes inherited from walberla::mesa_pd::collision_detection::AnalyticContactDetection
size_t idx1_ = std::numeric_limits<size_t>::max()
 
size_t idx2_ = std::numeric_limits<size_t>::max()
 
Vec3 contactPoint_ = Vec3()
 
Vec3 contactNormal_ = Vec3()
 
real_t penetrationDepth_ = real_t(0)
 
real_t contactThreshold_ = real_t(0.0)
 

Member Function Documentation

◆ collideGJKEPA()

bool walberla::mesa_pd::collision_detection::GeneralContactDetection::collideGJKEPA ( Support geom0,
Support geom1 
)
private

◆ operator()() [1/5]

template<typename GEO2_T , typename Accessor >
bool walberla::mesa_pd::collision_detection::GeneralContactDetection::operator() ( const size_t  idx1,
const size_t  idx2,
const data::CylindricalBoundary geo1,
const GEO2_T &  geo2,
Accessor &  ac 
)

◆ operator()() [2/5]

template<typename GEO2_T , typename Accessor >
bool walberla::mesa_pd::collision_detection::GeneralContactDetection::operator() ( const size_t  idx1,
const size_t  idx2,
const data::HalfSpace geo1,
const GEO2_T &  geo2,
Accessor &  ac 
)

◆ operator()() [3/5]

template<typename GEO1_T , typename Accessor >
bool walberla::mesa_pd::collision_detection::GeneralContactDetection::operator() ( const size_t  idx1,
const size_t  idx2,
const GEO1_T &  geo1,
const data::CylindricalBoundary geo2,
Accessor &  ac 
)

◆ operator()() [4/5]

template<typename GEO1_T , typename Accessor >
bool walberla::mesa_pd::collision_detection::GeneralContactDetection::operator() ( const size_t  idx1,
const size_t  idx2,
const GEO1_T &  geo1,
const data::HalfSpace geo2,
Accessor &  ac 
)

◆ operator()() [5/5]

template<typename GEO1_T , typename GEO2_T , typename Accessor >
bool walberla::mesa_pd::collision_detection::GeneralContactDetection::operator() ( const size_t  idx1,
const size_t  idx2,
const GEO1_T &  geo1,
const GEO2_T &  geo2,
Accessor &  ac 
)

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