waLBerla 7.3
Loading...
Searching...
No Matches
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)
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)
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_ = 0_r
real_t contactThreshold_ = 0.0_r

Member Function Documentation

◆ collideGJKEPA()

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

◆ operator()() [1/16]

template<typename Accessor>
bool walberla::mesa_pd::collision_detection::AnalyticContactDetection::operator() ( const size_t idx1,
const size_t idx2,
const data::Box & bx,
const data::Sphere & s,
Accessor & ac )
inline

◆ operator()() [2/16]

template<typename Accessor>
bool walberla::mesa_pd::collision_detection::AnalyticContactDetection::operator() ( const size_t idx1,
const size_t idx2,
const data::CylindricalBoundary & cb,
const data::Sphere & s,
Accessor & ac )
inline

◆ operator()() [3/16]

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()() [4/16]

template<typename Accessor>
bool walberla::mesa_pd::collision_detection::AnalyticContactDetection::operator() ( const size_t idx1,
const size_t idx2,
const data::CylindricalBoundary & p0,
const data::CylindricalBoundary & p1,
Accessor & ac )
inline

◆ operator()() [5/16]

template<typename Accessor>
bool walberla::mesa_pd::collision_detection::AnalyticContactDetection::operator() ( const size_t idx1,
const size_t idx2,
const data::CylindricalBoundary & p0,
const data::HalfSpace & p1,
Accessor & ac )
inline

◆ operator()() [6/16]

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()() [7/16]

template<typename Accessor>
bool walberla::mesa_pd::collision_detection::AnalyticContactDetection::operator() ( const size_t idx1,
const size_t idx2,
const data::HalfSpace & p,
const data::Sphere & s,
Accessor & ac )
inline

◆ operator()() [8/16]

template<typename Accessor>
bool walberla::mesa_pd::collision_detection::AnalyticContactDetection::operator() ( const size_t idx1,
const size_t idx2,
const data::HalfSpace & p0,
const data::CylindricalBoundary & p1,
Accessor & ac )
inline

◆ operator()() [9/16]

template<typename Accessor>
bool walberla::mesa_pd::collision_detection::AnalyticContactDetection::operator() ( const size_t idx1,
const size_t idx2,
const data::HalfSpace & p0,
const data::HalfSpace & p1,
Accessor & ac )
inline

◆ operator()() [10/16]

template<typename Accessor>
bool walberla::mesa_pd::collision_detection::AnalyticContactDetection::operator() ( const size_t idx1,
const size_t idx2,
const data::Sphere & geo1,
const data::Sphere & geo2,
Accessor & ac )
inline

◆ operator()() [11/16]

template<typename Accessor>
bool walberla::mesa_pd::collision_detection::AnalyticContactDetection::operator() ( const size_t idx1,
const size_t idx2,
const data::Sphere & s,
const data::Box & bx,
Accessor & ac )
inline

◆ operator()() [12/16]

template<typename Accessor>
bool walberla::mesa_pd::collision_detection::AnalyticContactDetection::operator() ( const size_t idx1,
const size_t idx2,
const data::Sphere & s,
const data::CylindricalBoundary & cb,
Accessor & ac )
inline

◆ operator()() [13/16]

template<typename Accessor>
bool walberla::mesa_pd::collision_detection::AnalyticContactDetection::operator() ( const size_t idx1,
const size_t idx2,
const data::Sphere & s,
const data::HalfSpace & p,
Accessor & ac )
inline

◆ operator()() [14/16]

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()() [15/16]

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()() [16/16]

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: