SOFA plugin: MultiThreading  master
Open source framework for multi-physics simuation
multithreading::component::collision::detection::algorithm::ParallelBVHNarrowPhase Class Reference

#include <ParallelBVHNarrowPhase.h>

Inheritance diagram for multithreading::component::collision::detection::algorithm::ParallelBVHNarrowPhase:

Protected Attributes

std::vector< ParallelBVHNarrowPhasePairTaskm_tasks
 
std::unordered_set< sofa::core::topology::BaseMeshTopology * > m_initializedTopology
 
std::set< std::pair< sofa::core::CollisionModel *, sofa::core::CollisionModel * > > m_initializedPairs
 
- Protected Attributes inherited from sofa::core::collision::NarrowPhaseDetection
bool _zeroCollision
 
std::map< Instance, DetectionOutputMap > m_storedOutputsMap
 
DetectionOutputMap m_outputsMap
 
size_t m_primitiveTestCount
 
- Protected Attributes inherited from sofa::core::collision::Detection
IntersectionintersectionMethod
 
std::map< Instance, Intersection * > storedIntersectionMethod
 
- Protected Attributes inherited from sofa::core::collision::CollisionAlgorithm
Instance instance
 
- Protected Attributes inherited from sofa::core::objectmodel::BaseObject
SingleLink< BaseObject, BaseContext, BaseLink::FLAG_DOUBLELINK > l_context
 
LinkSlaves l_slaves
 
SingleLink< BaseObject, BaseObject, BaseLink::FLAG_DOUBLELINK > l_master
 
- Protected Attributes inherited from sofa::core::objectmodel::Base
std::map< std::string, sofa::core::DataTrackerCallbackm_internalEngine
 
VecData m_vecData
 
MapData m_aliasData
 
VecLink m_vecLink
 
MapLink m_aliasLink
 
- Protected Attributes inherited from multithreading::TaskSchedulerUser
sofa::simulation::TaskSchedulerm_taskScheduler { nullptr }
 

Public Member Functions

 SOFA_CLASS (ParallelBVHNarrowPhase, sofa::component::collision::detection::algorithm::BVHNarrowPhase)
 
void init () override
 
void addCollisionPairs (const sofa::type::vector< std::pair< sofa::core::CollisionModel *, sofa::core::CollisionModel * > > &v) override
 
- Public Member Functions inherited from sofa::component::collision::detection::algorithm::BVHNarrowPhase
 SOFA_CLASS (BVHNarrowPhase, core::collision::NarrowPhaseDetection)
 
void addCollisionPair (const std::pair< core::CollisionModel *, core::CollisionModel * > &cmPair) override
 
- Public Member Functions inherited from sofa::core::collision::NarrowPhaseDetection
 SOFA_ABSTRACT_CLASS (NarrowPhaseDetection, Detection)
 
void draw (const core::visual::VisualParams *vparams) override
 
virtual void beginNarrowPhase ()
 
virtual void addCollisionPair (const std::pair< core::CollisionModel *, core::CollisionModel * > &cmPair)=0
 
virtual void addCollisionPairs (const sofa::type::vector< std::pair< core::CollisionModel *, core::CollisionModel * > > &v)
 
virtual void endNarrowPhase ()
 
size_t getPrimitiveTestCount () const
 
const DetectionOutputMap & getDetectionOutputs () const
 
DetectionOutputVector *& getDetectionOutputs (CollisionModel *cm1, CollisionModel *cm2)
 
bool zeroCollision () const
 
- Public Member Functions inherited from sofa::core::collision::Detection
 SOFA_CLASS (Detection, CollisionAlgorithm)
 
virtual void setIntersectionMethod (Intersection *v)
 
IntersectiongetIntersectionMethod () const
 
virtual bool needsDeepBoundingTree () const
 
- Public Member Functions inherited from sofa::core::collision::CollisionAlgorithm
 SOFA_ABSTRACT_CLASS (CollisionAlgorithm, objectmodel::BaseObject)
 
virtual void setInstance (Instance inst)
 
- Public Member Functions inherited from sofa::core::objectmodel::BaseObject
 SOFA_CLASS (BaseObject, Base)
 
virtual void computeBBox (const core::ExecParams *, bool=false)
 
void setSrc (const std::string &v, std::vector< std::string > *attributeList=nullptr)
 
void setSrc (const std::string &v, const BaseObject *loader, std::vector< std::string > *attributeList=nullptr)
 
BasefindLinkDestClass (const BaseClass *destType, const std::string &path, const BaseLink *link) override
 
virtual std::string getPathName () const override
 
virtual bool insertInNode (BaseNode *)
 
virtual bool removeInNode (BaseNode *)
 
SReal getTime () const
 
const BaseContextgetContext () const
 
BaseContextgetContext ()
 
const BaseObjectgetMaster () const
 
BaseObjectgetMaster ()
 
const VecSlavesgetSlaves () const
 
BaseObjectgetSlave (const std::string &name) const
 
virtual void addSlave (BaseObject::SPtr s)
 
virtual void removeSlave (BaseObject::SPtr s)
 
virtual void handleEvent (Event *)
 
virtual void handleTopologyChange ()
 
virtual void handleTopologyChange (core::topology::Topology *t)
 
void parse (BaseObjectDescription *arg) override
 
virtual void bwdInit ()
 
virtual void reinit ()
 
void updateInternal ()
 
virtual void storeResetState ()
 
virtual void reset ()
 
virtual void cleanup ()
 
SReal getTime () const
 
- Public Member Functions inherited from sofa::core::objectmodel::Base
virtual const BaseClassgetClass () const
 
void addDeprecatedAttribute (lifecycle::DeprecatedData *attribute)
 
void addUpdateCallback (const std::string &name, std::initializer_list< BaseData * > inputs, std::function< sofa::core::objectmodel::ComponentState(const DataTracker &)> function, std::initializer_list< BaseData * > outputs)
 
void addOutputsToCallback (const std::string &name, std::initializer_list< BaseData * > outputs)
 
const std::string & getName () const
 
void setName (const std::string &n)
 
void setName (const std::string &n, int counter)
 
std::string getTypeName () const
 
virtual std::string getClassName () const
 
virtual std::string getTemplateName () const final
 
std::string getNameSpaceName () const
 
void setDefinitionSourceFileName (const std::string &sourceFileName)
 
const std::string & getDefinitionSourceFileName () const
 
void setDefinitionSourceFilePos (const int)
 
int getDefinitionSourceFilePos () const
 
void setInstanciationSourceFileName (const std::string &sourceFileName)
 
const std::string & getInstanciationSourceFileName () const
 
void setInstanciationSourceFilePos (const int)
 
int getInstanciationSourceFilePos () const
 
void addMessage (const sofa::helper::logging::Message &m) const
 
size_t countLoggedMessages (sofa::helper::logging::Message::TypeSet t=sofa::helper::logging::Message::AnyTypes) const
 
const std::deque< sofa::helper::logging::Message > & getLoggedMessages () const
 
const std::string getLoggedMessagesAsString (sofa::helper::logging::Message::TypeSet t=sofa::helper::logging::Message::AnyTypes) const
 
void clearLoggedMessages () const
 
bool notMuted () const
 
const sofa::core::objectmodel::TagSetgetTags () const
 
bool hasTag (Tag t) const
 
void addTag (Tag t)
 
void removeTag (Tag t)
 
ComponentState getComponentState () const
 
bool isComponentStateValid () const
 
bool isComponentStateInvalid () const
 
 SOFA_ATTRIBUTE_DEPRECATED__TOBASECONSTRAINT () virtual const behavior
 
virtual bool parseField (const std::string &attribute, const std::string &value)
 
virtual bool hasField (const std::string &attribute) const
 
void parseFields (const std::list< std::string > &str)
 
virtual void parseFields (const std::map< std::string, std::string * > &str)
 
void writeDatas (std::map< std::string, std::string * > &str)=delete
 
void writeDatas (std::ostream &out, const std::string &separator=" ")
 
BaseDatafindData (const std::string &name) const
 
std::vector< BaseData * > findGlobalField (const std::string &name) const
 
BaseLinkfindLink (const std::string &name) const
 
std::vector< BaseLink * > findLinks (const std::string &name) const
 
virtual void updateLinks (bool logErrors=true)
 
BaseData::BaseInitData initData (::sofa::core::objectmodel::Data< T > *field, const char *name, const char *help, ::sofa::core::objectmodel::BaseData::DataFlags dataflags)
 
BaseData::BaseInitData initData (Data< T > *field, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 
Data< T >::InitData initData (Data< T > *field, const T &value, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 
void addData (BaseData *f, const std::string &name)
 
void addData (BaseData *f)
 
void removeData (BaseData *f)
 
void addAlias (BaseData *field, const char *alias)
 
void addLink (BaseLink *l)
 
void addAlias (BaseLink *link, const char *alias)
 
const VecDatagetDataFields () const
 
const MapDatagetDataAliases () const
 
const VecLinkgetLinks () const
 
const MapLinkgetLinkAliases () const
 
virtual bool findDataLinkDest (BaseData *&ptr, const std::string &path, const BaseLink *link)
 
bool findLinkDest (T *&ptr, const std::string &path, const BaseLink *link)
 
const sofa::core::objectmodel::TagSetgetTags () const
 
bool hasTag (Tag t) const
 
void addTag (Tag t)
 
void removeTag (Tag t)
 
ComponentState getComponentState () const
 
bool isComponentStateValid () const
 
bool isComponentStateInvalid () const
 
 SOFA_ATTRIBUTE_DEPRECATED__TOBASECONSTRAINT () virtual const behavior
 

Protected Member Functions

 ParallelBVHNarrowPhase ()
 
- Protected Member Functions inherited from sofa::component::collision::detection::algorithm::BVHNarrowPhase
 BVHNarrowPhase ()
 
 ~BVHNarrowPhase () override=default
 
void processExternalCell (const TestPair &externalCell, core::CollisionModel *&cm1, core::CollisionModel *&cm2, core::collision::ElementIntersector *coarseIntersector, const FinestCollision &finest, MirrorIntersector *mirror, std::queue< TestPair > &externalCells, sofa::core::collision::DetectionOutputVector *&outputs) const
 
- Protected Member Functions inherited from sofa::core::collision::NarrowPhaseDetection
 ~NarrowPhaseDetection () override
 
void changeInstanceNP (Instance inst) override
 
- Protected Member Functions inherited from sofa::core::collision::Detection
 Detection ()
 
virtual void changeInstanceBP (Instance)
 
void changeInstance (Instance inst) override
 
- Protected Member Functions inherited from sofa::core::collision::CollisionAlgorithm
 CollisionAlgorithm ()
 
- Protected Member Functions inherited from sofa::core::objectmodel::BaseObject
 BaseObject ()
 
 ~BaseObject () override
 
virtual void doUpdateInternal ()
 
void changeContextLink (BaseContext *before, BaseContext *&after)
 
void changeSlavesLink (BaseObject::SPtr ptr, std::size_t, bool add)
 
void trackInternalData (const BaseData &data)
 
void cleanTracker ()
 
bool hasDataChanged (const BaseData &data)
 
- Protected Member Functions inherited from sofa::core::objectmodel::Base
 Base ()
 
virtual ~Base ()
 
void initData0 (BaseData *field, BaseData::BaseInitData &res, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 
void initData0 (BaseData *field, BaseData::BaseInitData &res, const char *name, const char *help, BaseData::DataFlags dataFlags)
 
void initData0 (Data< T > *field, typename Data< T >::InitData &res, const T &value, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 
- Protected Member Functions inherited from sofa::core::IntrusiveObject
virtual ~IntrusiveObject ()=default
 
- Protected Member Functions inherited from multithreading::TaskSchedulerUser
 TaskSchedulerUser ()
 
void initTaskScheduler ()
 
void reinitTaskScheduler ()
 
void stopTaskSchduler ()
 

Additional Inherited Members

- Public Attributes inherited from sofa::core::objectmodel::BaseObject
Data< bool > f_listening
 
- Public Attributes inherited from sofa::core::objectmodel::Base
std::vector< lifecycle::DeprecatedData * > m_oldAttributes
 
Data< int > d_messageLogCount
 
Data< std::string > name
 
Data< bool > f_printLog
 
Data< sofa::core::objectmodel::TagSetf_tags
 
Data< sofa::type::BoundingBoxf_bbox
 
Data< sofa::core::objectmodel::ComponentStated_componentState
 
std::string m_definitionSourceFileName
 
int m_definitionSourceFilePos
 
std::string m_instanciationSourceFileName
 
int m_instanciationSourceFilePos
 
- Public Attributes inherited from multithreading::TaskSchedulerUser
sofa::Data< int > d_nbThreads
 
sofa::Data< std::string > d_taskSchedulerType
 Type of task scheduler to use. More...
 
- Static Public Member Functions inherited from sofa::core::objectmodel::BaseObject
static bool canCreate (T *, BaseContext *, BaseObjectDescription *)
 
static T::SPtr create (T *, BaseContext *context, BaseObjectDescription *arg)
 
- Static Public Member Functions inherited from sofa::core::objectmodel::Base
static const BaseClassGetClass ()
 
static std::string shortName (const T *ptr=nullptr, BaseObjectDescription *=nullptr)
 
- Static Protected Member Functions inherited from sofa::component::collision::detection::algorithm::BVHNarrowPhase
static bool isSelfCollision (core::CollisionModel *cm1, core::CollisionModel *cm2)
 
static void initializeExternalCells (core::CollisionModel *cm1, core::CollisionModel *cm2, std::queue< TestPair > &externalCells)
 
static void processInternalCell (const TestPair &internalCell, core::collision::ElementIntersector *coarseIntersector, const FinestCollision &finest, std::queue< TestPair > &externalCells, std::stack< TestPair > &internalCells, sofa::core::collision::DetectionOutputVector *&outputs, const sofa::core::collision::Intersection *currentIntersection)
 
static void visitCollisionElements (const TestPair &root, core::collision::ElementIntersector *coarseIntersector, const FinestCollision &finest, std::queue< TestPair > &externalCells, std::stack< TestPair > &internalCells, sofa::core::collision::DetectionOutputVector *&outputs, const sofa::core::collision::Intersection *currentIntersection)
 
static void visitExternalChildren (const core::CollisionElementIterator &it1, const core::CollisionElementIterator &it2, core::collision::ElementIntersector *coarseIntersector, const FinestCollision &finest, std::queue< TestPair > &externalCells, sofa::core::collision::DetectionOutputVector *&outputs, const sofa::core::collision::Intersection *currentIntersection)
 
static void finalCollisionPairs (const TestPair &pair, bool selfCollision, core::collision::ElementIntersector *intersector, sofa::core::collision::DetectionOutputVector *&outputs, const sofa::core::collision::Intersection *currentIntersection)
 

Attribute details

◆ m_initializedPairs

std::set< std::pair<sofa::core::CollisionModel*, sofa::core::CollisionModel*> > multithreading::component::collision::detection::algorithm::ParallelBVHNarrowPhase::m_initializedPairs
protected

◆ m_initializedTopology

std::unordered_set< sofa::core::topology::BaseMeshTopology* > multithreading::component::collision::detection::algorithm::ParallelBVHNarrowPhase::m_initializedTopology
protected

◆ m_tasks

std::vector<ParallelBVHNarrowPhasePairTask> multithreading::component::collision::detection::algorithm::ParallelBVHNarrowPhase::m_tasks
protected

Constructor details

◆ ParallelBVHNarrowPhase()

multithreading::component::collision::detection::algorithm::ParallelBVHNarrowPhase::ParallelBVHNarrowPhase ( )
protected

Function details

◆ addCollisionPairs()

void multithreading::component::collision::detection::algorithm::ParallelBVHNarrowPhase::addCollisionPairs ( const sofa::type::vector< std::pair< sofa::core::CollisionModel *, sofa::core::CollisionModel * > > &  v)
override

◆ init()

void multithreading::component::collision::detection::algorithm::ParallelBVHNarrowPhase::init ( void  )
overridevirtual

◆ SOFA_CLASS()

multithreading::component::collision::detection::algorithm::ParallelBVHNarrowPhase::SOFA_CLASS ( ParallelBVHNarrowPhase  ,
sofa::component::collision::detection::algorithm::BVHNarrowPhase   
)