chrono::collision::ChCollisionSystemParallel Class Reference

Description

Class for collision engine based on the spatial subdivision method.

Contains both the broadphase and the narrow phase methods.

#include <ChCollisionSystemParallel.h>

Inheritance diagram for chrono::collision::ChCollisionSystemParallel:
Collaboration diagram for chrono::collision::ChCollisionSystemParallel:

Public Member Functions

 ChCollisionSystemParallel (ChParallelDataManager *dc)
 
virtual void Clear (void) override
 Clears all data instanced by this algorithm if any (like persistent contact manifolds).
 
virtual void Add (ChCollisionModel *model) override
 Adds a collision model to the collision engine (custom data may be allocated).
 
virtual void Remove (ChCollisionModel *model) override
 Removes a collision model from the collision engine (custom data may be deallocated).
 
virtual void Run () override
 Removes all collision models from the collision engine (custom data may be deallocated). More...
 
virtual double GetTimerCollisionBroad () const override
 Return the time (in seconds) for broadphase collision detection.
 
virtual double GetTimerCollisionNarrow () const override
 Return the time (in seconds) for narrowphase collision detection.
 
virtual void ReportContacts (ChContactContainer *mcontactcontainer) override
 After the Run() has completed, you can call this function to fill a 'contact container', that is an object inherited from class ChContactContainer. More...
 
virtual void ReportProximities (ChProximityContainer *mproximitycontainer) override
 After the Run() has completed, you can call this function to fill a 'proximity container' (container of narrow phase pairs), that is an object inherited from class ChProximityContainer. More...
 
virtual bool RayHit (const ChVector<> &from, const ChVector<> &to, ChRayhitResult &mresult) const override
 Perform a ray-hit test with all collision models. More...
 
virtual bool RayHit (const ChVector<> &from, const ChVector<> &to, ChCollisionModel *model, ChRayhitResult &mresult) const override
 Perform a ray-hit test with the specified collision model. More...
 
void SetAABB (real3 aabbmin, real3 aabbmax)
 Set and enable "active" box. More...
 
bool GetAABB (real3 &aabbmin, real3 &aabbmax)
 Get the dimensions of the "active" box. More...
 
virtual void GetOverlappingAABB (custom_vector< char > &active_id, real3 Amin, real3 Amax)
 Mark bodies whose AABB is contained within the specified box.
 
virtual std::vector< vec2 > GetOverlappingPairs ()
 Return the pairs of IDs for overlapping contact shapes.
 
- Public Member Functions inherited from chrono::collision::ChCollisionSystem
 ChCollisionSystem (unsigned int max_objects=16000, double scene_size=500)
 
virtual void ResetTimers ()
 Reset any timers associated with collision detection.
 
void RegisterBroadphaseCallback (BroadphaseCallback *callback)
 Specify a callback object to be used each time a pair of 'near enough' collision shapes is found by the broad-phase collision step. More...
 
void RegisterNarrowphaseCallback (NarrowphaseCallback *callback)
 Specify a callback object to be used each time a collision pair is found during the narrow-phase collision detection step. More...
 
virtual void ArchiveOUT (ChArchiveOut &marchive)
 Method to allow serialization of transient data to archives.
 
virtual void ArchiveIN (ChArchiveIn &marchive)
 Method to allow de-serialization of transient data from archives.
 

Friends

class ChSystemParallel
 

Additional Inherited Members

- Protected Attributes inherited from chrono::collision::ChCollisionSystem
BroadphaseCallbackbroad_callback
 user callback for each near-enough pair of shapes
 
NarrowphaseCallbacknarrow_callback
 user callback for each collision pair
 

Member Function Documentation

◆ GetAABB()

bool chrono::collision::ChCollisionSystemParallel::GetAABB ( real3 aabbmin,
real3 aabbmax 
)

Get the dimensions of the "active" box.

The return value indicates whether or not the active box feature is enabled.

◆ RayHit() [1/2]

virtual bool chrono::collision::ChCollisionSystemParallel::RayHit ( const ChVector<> &  from,
const ChVector<> &  to,
ChCollisionModel model,
ChRayhitResult mresult 
) const
inlineoverridevirtual

Perform a ray-hit test with the specified collision model.

Currently not implemented.

Implements chrono::collision::ChCollisionSystem.

◆ RayHit() [2/2]

virtual bool chrono::collision::ChCollisionSystemParallel::RayHit ( const ChVector<> &  from,
const ChVector<> &  to,
ChRayhitResult mresult 
) const
inlineoverridevirtual

Perform a ray-hit test with all collision models.

Currently not implemented.

Implements chrono::collision::ChCollisionSystem.

◆ ReportContacts()

virtual void chrono::collision::ChCollisionSystemParallel::ReportContacts ( ChContactContainer mcontactcontainer)
inlineoverridevirtual

After the Run() has completed, you can call this function to fill a 'contact container', that is an object inherited from class ChContactContainer.

For instance ChSystem, after each Run() collision detection, calls this method multiple times for all contact containers in the system, The basic behavior of the implementation is the following: collision system will call in sequence the functions BeginAddContact(), AddContact() (x n times), EndAddContact() of the contact container. But if a special container (say, GPU enabled) is passed, a more rapid buffer copy might be performed).

Implements chrono::collision::ChCollisionSystem.

◆ ReportProximities()

virtual void chrono::collision::ChCollisionSystemParallel::ReportProximities ( ChProximityContainer mproximitycontainer)
inlineoverridevirtual

After the Run() has completed, you can call this function to fill a 'proximity container' (container of narrow phase pairs), that is an object inherited from class ChProximityContainer.

For instance ChSystem, after each Run() collision detection, calls this method multiple times for all proximity containers in the system, The basic behavior of the implementation is the following: collision system will call in sequence the functions BeginAddProximities(), AddProximity() (x n times), EndAddProximities() of the proximity container. But if a special container (say, GPU enabled) is passed, a more rapid buffer copy might be performed).

Implements chrono::collision::ChCollisionSystem.

◆ Run()

void chrono::collision::ChCollisionSystemParallel::Run ( )
overridevirtual

Removes all collision models from the collision engine (custom data may be deallocated).

Run the algorithm and finds all the contacts. (Contacts will be managed by the Bullet persistent contact cache).

Implements chrono::collision::ChCollisionSystem.

◆ SetAABB()

void chrono::collision::ChCollisionSystemParallel::SetAABB ( real3  aabbmin,
real3  aabbmax 
)

Set and enable "active" box.

Bodies outside this AABB are deactivated.


The documentation for this class was generated from the following files:
  • /builds/uwsbel/chrono/src/chrono_parallel/collision/ChCollisionSystemParallel.h
  • /builds/uwsbel/chrono/src/chrono_parallel/collision/ChCollisionSystemParallel.cpp