Back

MultiTagAnimationLoop

sofa::component::animationloop::MultiTagAnimationLoop
CollisionAnimationLoop
Doc (from source)

Simple animation loop that given a list of tags, animate the graph one tag after another.

Abstract (AI generated)

The `MultiTagAnimationLoop` manages the simulation loop by sequentially processing nodes tagged in the SOFA scenegraph, coordinating updates and integrations based on these tags.

Metadata
module
Sofa.Component.AnimationLoop
namespace
sofa::component::animationloop
include
sofa/component/animationloop/MultiTagAnimationLoop.h
inherits
  • CollisionAnimationLoop
description

The MultiTagAnimationLoop is an animation loop component in the SOFA framework that does not directly implement or contribute to any specific governing equations, constitutive laws, kinematic laws, or numerical methods used in the FEM simulation. Instead, it provides a mechanism for controlling and coordinating the execution of different parts of the simulation based on tags defined within the scenegraph.

Governing Equations and Operators:

  • Mass Matrix (M): Not directly involved.
  • Stiffness Matrix (K): Not directly involved.
  • Internal Force ( extbf{f}_{int}): Not directly involved.
  • Residual (R): Not directly involved.

Constitutive and Kinematic Laws:

  • The component does not implement any constitutive or kinematic laws directly. It interacts with other components that define these laws.

Role in the FEM Pipeline:

  • The MultiTagAnimationLoop plays a role in controlling the sequence of updates during the simulation loop, particularly focusing on handling tags defined within the scenegraph.
  • Assembly: Not involved directly.
  • Time Integration: Coordinates the time integration by managing the sequence of tag-based operations.
  • Nonlinear Resolution: Invokes nonlinear solvers through other components that it manages in its step method.
  • Linear Resolution: Indirectly invokes linear solvers via the internal mechanisms managed within each tag's processing.

Numerical Methods and Discretization Choices:

  • The component itself does not encode any numerical methods or discretization choices directly. Instead, it coordinates the execution of these methods through other components such as collision detection, constraint handling, and integration steps defined by tags.

Variational / Lagrangian Mechanics Framework:

  • The MultiTagAnimationLoop operates within the broader variational mechanics framework by ensuring that updates and integrations are performed in a controlled sequence for different parts of the simulation. It does not contribute to the formulation or solution of variational principles directly but ensures that these principles are applied consistently across the components it manages.

Summary:

The MultiTagAnimationLoop is primarily an orchestration component responsible for coordinating the execution order and handling of events based on tags within the SOFA scenegraph. It does not contribute to any mathematical or physical formulation directly but plays a crucial role in the overall simulation pipeline by ensuring that specific parts of the simulation are updated in a controlled manner.

Methods
void init () virtual
void clear () virtual
void step (const sofa::core::ExecParams * params, SReal dt) virtual
{
  "name": "MultiTagAnimationLoop",
  "namespace": "sofa::component::animationloop",
  "module": "Sofa.Component.AnimationLoop",
  "include": "sofa/component/animationloop/MultiTagAnimationLoop.h",
  "doc": "Simple animation loop that given a list of tags, animate the graph one tag after another.",
  "inherits": [
    "CollisionAnimationLoop"
  ],
  "templates": [],
  "data_fields": [],
  "links": [],
  "methods": [
    {
      "name": "init",
      "return_type": "void",
      "params": [],
      "is_virtual": true,
      "is_pure_virtual": false,
      "is_static": false,
      "access": "public"
    },
    {
      "name": "clear",
      "return_type": "void",
      "params": [],
      "is_virtual": true,
      "is_pure_virtual": false,
      "is_static": false,
      "access": "public"
    },
    {
      "name": "step",
      "return_type": "void",
      "params": [
        {
          "name": "params",
          "type": "const sofa::core::ExecParams *"
        },
        {
          "name": "dt",
          "type": "SReal"
        }
      ],
      "is_virtual": true,
      "is_pure_virtual": false,
      "is_static": false,
      "access": "public"
    }
  ],
  "description": "The `MultiTagAnimationLoop` is an animation loop component in the SOFA framework that animates the simulation graph based on a list of tags, processing each tag sequentially. This allows for fine-grained control over how different parts of the simulation are updated and animated.\n\n### Role and Purpose:\nThe `MultiTagAnimationLoop` inherits from `CollisionAnimationLoop`, providing specialized functionality to animate nodes or components tagged in the SOFA scenegraph. The loop goes through each tag, applying constraints, collision detection, integration, and other updates sequentially.\n\n### Interactions with Other Components:\n- **Tags**: It utilizes tags defined within the SOFA scenegraph to determine which parts of the simulation should be animated at a given step.\n- **Event Visitors**: The loop uses various event visitors such as `PropagateEventVisitor`, `BehaviorUpdatePositionVisitor`, and others to propagate events and update positions, internal data, mappings, and context throughout the nodes within its scope.\n\n### Practical Usage Guidance:\nThe component must be initialized (`init`), where it retrieves a list of tags. The `step` method is then called with execution parameters and time step to process each tag in sequence, executing collision detection, constraint resets, integration steps, and other necessary updates for the specified tags before advancing the simulation time. Finally, the `clear` method can be used to reset any applied changes.\n\n### Data Fields:\nThe component does not expose public data fields but internally maintains a list of tags (`tagList`).",
  "maths": "The `MultiTagAnimationLoop` is an animation loop component in the SOFA framework that does not directly implement or contribute to any specific governing equations, constitutive laws, kinematic laws, or numerical methods used in the FEM simulation. Instead, it provides a mechanism for controlling and coordinating the execution of different parts of the simulation based on tags defined within the scenegraph.\n\n### Governing Equations and Operators:\n- **Mass Matrix (M)**: Not directly involved.\n- **Stiffness Matrix (K)**: Not directly involved.\n- **Internal Force (\textbf{f}_{int})**: Not directly involved.\n- **Residual (R)**: Not directly involved.\n\n### Constitutive and Kinematic Laws:\n- The component does not implement any constitutive or kinematic laws directly. It interacts with other components that define these laws.\n\n### Role in the FEM Pipeline:\n- The `MultiTagAnimationLoop` plays a role in controlling the sequence of updates during the simulation loop, particularly focusing on handling tags defined within the scenegraph.\n- **Assembly**: Not involved directly.\n- **Time Integration**: Coordinates the time integration by managing the sequence of tag-based operations.\n- **Nonlinear Resolution**: Invokes nonlinear solvers through other components that it manages in its step method.\n- **Linear Resolution**: Indirectly invokes linear solvers via the internal mechanisms managed within each tag's processing.\n\n### Numerical Methods and Discretization Choices:\n- The component itself does not encode any numerical methods or discretization choices directly. Instead, it coordinates the execution of these methods through other components such as collision detection, constraint handling, and integration steps defined by tags.\n\n### Variational / Lagrangian Mechanics Framework:\n- The `MultiTagAnimationLoop` operates within the broader variational mechanics framework by ensuring that updates and integrations are performed in a controlled sequence for different parts of the simulation. It does not contribute to the formulation or solution of variational principles directly but ensures that these principles are applied consistently across the components it manages.\n\n### Summary:\nThe `MultiTagAnimationLoop` is primarily an orchestration component responsible for coordinating the execution order and handling of events based on tags within the SOFA scenegraph. It does not contribute to any mathematical or physical formulation directly but plays a crucial role in the overall simulation pipeline by ensuring that specific parts of the simulation are updated in a controlled manner.",
  "abstract": "The `MultiTagAnimationLoop` manages the simulation loop by sequentially processing nodes tagged in the SOFA scenegraph, coordinating updates and integrations based on these tags.",
  "sheet": "# MultiTagAnimationLoop\n\n## Overview\n\nThe `MultiTagAnimationLoop` is an orchestration component that controls the sequence of updates during a simulation. It processes each tag defined within the SOFA scenegraph sequentially, ensuring that specific parts of the simulation are updated in a controlled manner. This component inherits from `CollisionAnimationLoop`, providing specialized functionality for managing tags and coordinating events such as collision detection, constraint handling, and integration steps.\n\n## Dependencies and Connections\n\nThe `MultiTagAnimationLoop` interacts with nodes or components tagged within the SOFA scenegraph to determine which parts of the simulation should be animated at a given step. It uses various event visitors (e.g., `PropagateEventVisitor`, `BehaviorUpdatePositionVisitor`) to propagate events and update positions, internal data, mappings, and context throughout the nodes within its scope.\n\n## Practical Notes\n\nThe component must be initialized (`init`), where it retrieves a list of tags. The `step` method is then called with execution parameters and time step to process each tag in sequence, executing collision detection, constraint resets, integration steps, and other necessary updates for the specified tags before advancing the simulation time. Finally, the `clear` method can be used to reset any applied changes."
}