MechanicalProjectJacobianMatrixVisitor
The `MechanicalProjectJacobianMatrixVisitor` updates Jacobian matrices associated with projective constraints in SOFA simulations, ensuring proper constraint handling during the assembly phase.
- module
- Sofa.framework.Simulation.Core
- namespace
- sofa::simulation::mechanicalvisitor
- include
- sofa/simulation/mechanicalvisitor/MechanicalProjectJacobianMatrixVisitor.h
- inherits
-
- MechanicalVisitor
- description
The MechanicalProjectJacobianMatrixVisitor is a visitor class in the SOFA framework that contributes to the assembly phase of the FEM simulation pipeline. Specifically, it operates on mechanical data structures and projects Jacobian matrices associated with constraints onto the system's degrees of freedom.
Governing Equations or Operators Involved:
- Jacobian Matrix: The component is responsible for updating the Jacobian matrix, denoted as $\mathbf{J}$, which represents the linearization of constraint equations. This Jacobian captures how constraints affect the system's dynamics and is crucial in handling constraints within the simulation.
Constitutive or Kinematic Laws Involved:
- Constraint Projection: The method
fwdProjectiveConstraintSetcalls the functionprojectJacobianMatrix, which updates the Jacobian matrix with respect to projective constraints. These constraints are typically represented as linear transformations and can include kinematic constraints such as Dirichlet boundary conditions or more complex constraints involving multiple degrees of freedom.
Role in the Global FEM Pipeline:
- Assembly: The visitor operates during the assembly phase, where it updates the Jacobian matrix for each constraint set. This is essential for ensuring that all constraints are properly accounted for when solving the nonlinear equations governing the system's motion.
Numerical Methods or Discretization Choices Encoded:
- Visitor Pattern: The component uses the visitor pattern to traverse and operate on mechanical data structures within the simulation graph. This ensures that each relevant constraint set is processed systematically, allowing for efficient and organized updates to the Jacobian matrix.
Fit into the Broader Variational / Lagrangian Mechanics Framework:
- Constraint Handling: In a variational or Lagrangian mechanics framework, constraints are often incorporated using Lagrange multipliers. The Jacobian matrix, which this component updates, is critical for enforcing these constraints and ensuring that the system's motion remains consistent with physical laws.
In summary, MechanicalProjectJacobianMatrixVisitor plays a vital role in updating the Jacobian matrices associated with projective constraints during the assembly phase of FEM simulations. This ensures proper handling of constraints within the broader context of variational mechanics and numerical stability.
Methods
Result
fwdMechanicalMapping
(simulation::Node * , sofa::core::BaseMapping * map)
virtual
Result
fwdProjectiveConstraintSet
(simulation::Node * , sofa::core::behavior::BaseProjectiveConstraintSet * c)
virtual
bool
isThreadSafe
()
virtual
{
"name": "MechanicalProjectJacobianMatrixVisitor",
"namespace": "sofa::simulation::mechanicalvisitor",
"module": "Sofa.framework.Simulation.Core",
"include": "sofa/simulation/mechanicalvisitor/MechanicalProjectJacobianMatrixVisitor.h",
"doc": "",
"inherits": [
"MechanicalVisitor"
],
"templates": [],
"data_fields": [],
"links": [],
"methods": [
{
"name": "fwdMechanicalMapping",
"return_type": "Result",
"params": [
{
"name": "",
"type": "simulation::Node *"
},
{
"name": "map",
"type": "sofa::core::BaseMapping *"
}
],
"is_virtual": true,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "fwdProjectiveConstraintSet",
"return_type": "Result",
"params": [
{
"name": "",
"type": "simulation::Node *"
},
{
"name": "c",
"type": "sofa::core::behavior::BaseProjectiveConstraintSet *"
}
],
"is_virtual": true,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "isThreadSafe",
"return_type": "bool",
"params": [],
"is_virtual": true,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
}
],
"description": "<p>The <code>MechanicalProjectJacobianMatrixVisitor</code> is a visitor class in the SOFA framework designed to traverse and operate on mechanical data structures within the simulation. Specifically, it projects Jacobian matrices associated with constraints onto the system's degrees of freedom.</p><p>This component inherits from the <code>MechanicalVisitor</code> base class and primarily interacts with other components through its virtual methods <code>fwdMechanicalMapping</code> and <code>fwdProjectiveConstraintSet</code>. The method <code>fwdProjectiveConstraintSet</code> is responsible for calling the <code>projectJacobianMatrix</code> function on constraint sets, thereby updating the Jacobian matrix with respect to these constraints.</p><p>The component maintains fields such as <code>cId</code>, which represents an identifier for the Jacobian matrix, and a time variable <code>t</code>. These are used during its traversal of mechanical systems. This visitor is thread-safe, allowing it to be used in parallelized simulation contexts.</p>",
"maths": "The `MechanicalProjectJacobianMatrixVisitor` is a visitor class in the SOFA framework that contributes to the assembly phase of the FEM simulation pipeline. Specifically, it operates on mechanical data structures and projects Jacobian matrices associated with constraints onto the system's degrees of freedom.\n\n### Governing Equations or Operators Involved:\n- **Jacobian Matrix**: The component is responsible for updating the Jacobian matrix, denoted as $\\mathbf{J}$, which represents the linearization of constraint equations. This Jacobian captures how constraints affect the system's dynamics and is crucial in handling constraints within the simulation.\n\n### Constitutive or Kinematic Laws Involved:\n- **Constraint Projection**: The method `fwdProjectiveConstraintSet` calls the function `projectJacobianMatrix`, which updates the Jacobian matrix with respect to projective constraints. These constraints are typically represented as linear transformations and can include kinematic constraints such as Dirichlet boundary conditions or more complex constraints involving multiple degrees of freedom.\n\n### Role in the Global FEM Pipeline:\n- **Assembly**: The visitor operates during the assembly phase, where it updates the Jacobian matrix for each constraint set. This is essential for ensuring that all constraints are properly accounted for when solving the nonlinear equations governing the system's motion.\n\n### Numerical Methods or Discretization Choices Encoded:\n- **Visitor Pattern**: The component uses the visitor pattern to traverse and operate on mechanical data structures within the simulation graph. This ensures that each relevant constraint set is processed systematically, allowing for efficient and organized updates to the Jacobian matrix.\n\n### Fit into the Broader Variational / Lagrangian Mechanics Framework:\n- **Constraint Handling**: In a variational or Lagrangian mechanics framework, constraints are often incorporated using Lagrange multipliers. The Jacobian matrix, which this component updates, is critical for enforcing these constraints and ensuring that the system's motion remains consistent with physical laws.\n\nIn summary, `MechanicalProjectJacobianMatrixVisitor` plays a vital role in updating the Jacobian matrices associated with projective constraints during the assembly phase of FEM simulations. This ensures proper handling of constraints within the broader context of variational mechanics and numerical stability.",
"abstract": "The `MechanicalProjectJacobianMatrixVisitor` updates Jacobian matrices associated with projective constraints in SOFA simulations, ensuring proper constraint handling during the assembly phase.",
"sheet": "# MechanicalProjectJacobianMatrixVisitor\n\n## Overview\n\nThe `MechanicalProjectJacobianMatrixVisitor` is a visitor component that inherits from `MechanicalVisitor`. It traverses mechanical data structures to update Jacobian matrices associated with constraints. This ensures that all constraints are properly accounted for during the assembly phase of FEM simulations.\n\n## Mathematical Model\n\nThe component updates the Jacobian matrix, denoted as \\(\\mathbf{J}\\), which represents the linearization of constraint equations. The method `fwdProjectiveConstraintSet` calls the function `projectJacobianMatrix`, updating the Jacobian matrix with respect to projective constraints.\n\n## Dependencies and Connections\n\nThis component typically interacts with other mechanical components through its virtual methods, specifically `fwdMechanicalMapping` and `fwdProjectiveConstraintSet`. These methods ensure that all relevant constraint sets are processed systematically during simulation traversal."
}