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")) | 
|  |