Used by the animation loop: send the solve signal to the others solvers This visitor is able to run the solvers sequentially or concurrently.
|
| | SolveVisitor (const sofa::core::ExecParams *params, SReal _dt, sofa::core::MultiVecCoordId X=sofa::core::vec_id::write_access::position, sofa::core::MultiVecDerivId V=sofa::core::vec_id::write_access::velocity, bool _parallelSolve=false, bool computeForceIsolatedInteractionForceFields=false) |
| |
| | SolveVisitor (const sofa::core::ExecParams *params, SReal _dt, bool free, bool _parallelSolve=false, bool computeForceIsolatedInteractionForceFields=false) |
| |
| virtual void | processSolver (simulation::Node *node, sofa::core::behavior::OdeSolver *b) |
| |
| void | fwdInteractionForceField (Node *node, core::behavior::BaseInteractionForceField *forceField) |
| |
| Result | processNodeTopDown (simulation::Node *node) override |
| | Callback method called when descending to a new node. Recursion will stop if this method returns RESULT_PRUNE. More...
|
| |
| void | processNodeBottomUp (simulation::Node *) override |
| | Callback method called after child node have been processed and before going back to the parent node. More...
|
| |
| bool | isThreadSafe () const override |
| | Specify whether this action can be parallelized. More...
|
| |
| const char * | getCategoryName () const override |
| |
| const char * | getClassName () const override |
| |
| void | setDt (SReal _dt) |
| |
| SReal | getDt () const |
| |
| | Visitor (const sofa::core::ExecParams *params) |
| |
| virtual | ~Visitor () |
| |
| const sofa::core::ExecParams * | execParams () const |
| |
| virtual bool | childOrderReversed (simulation::Node *) |
| | Return true to reverse the order of traversal of child nodes. More...
|
| |
| virtual bool | treeTraversal (TreeTraversalRepetition &repeat) |
| |
| virtual std::string | getInfos () const |
| |
| bool | testTags (sofa::core::objectmodel::BaseObject *obj) |
| |
| virtual void | execute (sofa::core::objectmodel::BaseContext *node, bool precomputedOrder=false) |
| | Alias for context->executeVisitor(this) More...
|
| |
| virtual ctime_t | begin (simulation::Node *node, sofa::core::objectmodel::BaseObject *obj, const std::string &typeInfo=std::string("type")) |
| |
| virtual void | end (simulation::Node *node, sofa::core::objectmodel::BaseObject *obj, ctime_t t0) |
| |
| virtual ctime_t | begin (simulation::Visitor::VisitorContext *node, sofa::core::objectmodel::BaseObject *obj, const std::string &typeInfo=std::string("type")) |
| |
| virtual void | end (simulation::Visitor::VisitorContext *node, sofa::core::objectmodel::BaseObject *obj, ctime_t t0) |
| |
| Visitor & | setTags (const TagSet &t) |
| |
| Visitor & | addTag (Tag t) |
| |
| Visitor & | removeTag (Tag t) |
| |
| template<class VisitorType , class VContext , class Container , typename PointedType > |
| void | for_each (VisitorType *visitor, VContext *ctx, const Container &list, void(VisitorType::*task)(VContext *, PointedType *), const std::string &typeInfo) |
| |
| template<class VisitorType , class VContext , class Container , typename PointedType > |
| Visitor::Result | for_each (VisitorType *visitor, VContext *ctx, const Container &list, Visitor::Result(VisitorType::*task)(VContext *, PointedType *), const std::string &typeInfo) |
| |
|
| void | sequentialSolve (simulation::Node *node) |
| | Function called if the solvers run sequentially. More...
|
| |
| void | parallelSolve (simulation::Node *node) |
| |
| void | initializeTaskScheduler () |
| | Initialize the task scheduler if it is not done already. More...
|
| |
| void | debug_write_state_before (sofa::core::objectmodel::BaseObject *obj) |
| |
| void | debug_write_state_after (sofa::core::objectmodel::BaseObject *obj) |
| |
| template<class VisitorType , class VContext , class ObjectType > |
| void | runVisitorTask (VisitorType *visitor, VContext *ctx, void(VisitorType::*task)(VContext *, ObjectType *), ObjectType *ptr, const std::string &typeInfo=std::string("type")) |
| |
| template<class VisitorType , class VContext , class ObjectType > |
| Result | runVisitorTask (VisitorType *visitor, VContext *ctx, Result(VisitorType::*task)(VContext *, ObjectType *), ObjectType *ptr, const std::string &typeInfo=std::string("type")) |
| |
| template<class Visit , class VContext , class Container , typename PointedType = typename Container::pointed_type> |
| void | for_each (Visit *visitor, VContext *ctx, const Container &list, void(Visit::*task)(VContext *, PointedType *), const std::string &typeInfo=std::string("type")) |
| |
| template<class Visit , class VContext , class Container , typename PointedType = typename Container::pointed_type> |
| Visitor::Result | for_each (Visit *visitor, VContext *ctx, const Container &list, Visitor::Result(Visit::*task)(VContext *, PointedType *), const std::string &typeInfo=std::string("type")) |
| |